import { type DataSchema, type DataSchemas } from "../schema/DataSchema.js"; import type { Schema } from "../schema/Schema.js"; 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 type { AsyncProvider, Provider } from "./Provider.js"; import { AsyncThroughProvider, ThroughProvider } from "./ThroughProvider.js"; /** Validate a synchronous source provider (source can have any type because validation guarantees the type). */ export declare class ValidationProvider extends ThroughProvider implements Provider, Sourceable> { readonly identifier: Schema; readonly schemas: DataSchemas; constructor(id: Schema, schemas: DataSchemas, source: Provider); /** Get a named schema. */ getSchema>(collection: K): DataSchema; getItem>(collection: K, id: I): OptionalItem; getItemSequence>(collection: K, id: I): AsyncIterable>; 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; countQuery>(collection: K, query?: ItemQuery): number; getQuery>(collection: K, query?: ItemQuery): Items; setQuery>(collection: K, query: ItemQuery, data: T[K]): void; updateQuery>(collection: K, query: ItemQuery, updates: Updates): void; deleteQuery>(collection: K, query: ItemQuery): void; getQuerySequence>(collection: K, query?: ItemQuery): AsyncIterable>; } /** Validate an asynchronous source provider (source can have any type because validation guarantees the type). */ export declare class AsyncValidationProvider extends AsyncThroughProvider implements AsyncProvider, Sourceable> { readonly identifier: Schema; readonly schemas: DataSchemas; constructor(id: Schema, schemas: DataSchemas, source: AsyncProvider); /** Get a named data schema for this database. */ getSchema>(collection: K): DataSchema; 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; }