//
// Copyright 2025 The Project Oak Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#![feature(negative_impls)]

mod database_with_cache;
pub mod encryption;
pub mod icing;
mod memory_cache;

pub use crate::{
    database_with_cache::DatabaseWithCache,
    icing::{IcingMetaDatabase, PageToken},
};

// The unique id for a memory, responding to `struct Memory`.
// It doesn't have a 1:1 mapping to BlobId, as a single memory
// might result in multiple blobs. For example, the raw content
// of a memory becomes a blob, while the meta data becomes another.
// The memory id is generated by the server and returned to clients
// at `add_memory` requests. Clients then can use this id to get the
// memory.
pub type MemoryId = String;
