import type { Database, DataKey } from "../util/data.js"; import type { Identifier, Items, OptionalItem } from "../util/item.js"; import type { ItemQuery } from "../util/query.js"; import type { Sourceable } from "../util/source.js"; import type { Updates } from "../util/update.js"; import { MemoryProvider } from "./MemoryProvider.js"; import { AsyncProvider } from "./Provider.js"; /** Keep a copy of asynchronous remote data in a local synchronous cache. */ export declare class CacheProvider extends AsyncProvider implements Sourceable> { readonly source: AsyncProvider; readonly memory: MemoryProvider; constructor(source: AsyncProvider, cache?: MemoryProvider); getItem>(collection: K, id: I): Promise>; getItemSequence>(collection: K, id: I): AsyncIterable>; addItem>(collection: K, data: T[K]): Promise; setItem>(collection: K, id: I, data: T[K]): Promise; updateItem>(collection: K, id: I, updates: Updates): Promise; deleteItem>(collection: K, id: I): Promise; countQuery>(collection: K, query?: ItemQuery): Promise; getQuery>(collection: K, query?: ItemQuery): Promise>; getQuerySequence>(collection: K, query?: ItemQuery): AsyncIterable>; setQuery>(collection: K, query: ItemQuery, data: T[K]): Promise; updateQuery>(collection: K, query: ItemQuery, updates: Updates): Promise; deleteQuery>(collection: K, query: ItemQuery): Promise; }