import type { MutableArray } from "../util/array.js"; import type { Database, DataKey } from "../util/data.js"; import type { Identifier } from "../util/item.js"; import type { ItemQuery } from "../util/query.js"; import type { Updates } from "../util/update.js"; import type { DatabaseChange, DatabaseChanges } from "./Change.js"; import { AsyncThroughProvider, ThroughProvider } from "./ThroughProvider.js"; /** Synchronous provider that keeps a log of any written changes to its `.changes` property. */ export declare class ChangesProvider extends ThroughProvider { get changes(): DatabaseChanges; readonly _changes: MutableArray>; addItem>(collection: K, data: T[K]): I; setItem>(collection: K, id: I, data: T[K]): void; updateItem>(collection: K, id: I, updates: Updates): void; deleteItem>(collection: K, id: I): void; setQuery>(collection: K, query: ItemQuery, data: T[K]): void; updateQuery>(collection: K, query: ItemQuery, updates: Updates): void; deleteQuery>(collection: K, query: ItemQuery): void; } /** Asynchronous provider that keeps a log of any written changes to its `.written` property. */ export declare class AsyncLoggedProvider extends AsyncThroughProvider { get written(): DatabaseChanges; readonly _written: MutableArray>; 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; setQuery>(collection: K, query: ItemQuery, data: T[K]): Promise; updateQuery>(collection: K, query: ItemQuery, updates: Updates): Promise; deleteQuery>(collection: K, query: ItemQuery): Promise; }