export type QueryMatcher = (doc: T) => boolean; import type { Query, QueryOptions, Update } from '../model'; import type { AggregationPipeline } from '../aggregation'; export type SchemaRecord = { modelName: string; version: string; definition: Record; indexes: Array<{ fields: string[]; unique: boolean; }>; options: Record; createdAt: Date; updatedAt: Date; }; export interface StorageStrategy> { initialize(): Promise; getAll(): Promise; add(doc: T): Promise; addMany(docs: T[]): Promise; update(oldDoc: T, newDoc: T): Promise; remove(doc: T): Promise; removeMany(docs: T[]): Promise; clear(): Promise; drop?(): Promise; createIndex(fields: keyof T | Array, options?: { unique?: boolean; }): Promise; rebuildIndexes(): Promise; updateIndexForDocument(oldDoc: T | null, newDoc: T | null): void; checkUniqueConstraints(doc: Partial, excludeDoc?: T): void; findDocuments(matcher: QueryMatcher, indexHint?: { fields: Array; values: Record; }): Promise; queryNative?(query: Query, options?: QueryOptions): Promise; updateNative?(query: Query, update: Update): Promise<{ modifiedCount: number; }>; deleteNative?(query: Query): Promise<{ deletedCount: number; }>; countNative?(query: Query): Promise; aggregateNative?>(pipeline: AggregationPipeline): Promise; recordSchema?(schemaData: Omit): Promise; getSchema?(modelName: string): Promise; flush?(): Promise; close?(): void; } //# sourceMappingURL=storage-strategy.d.ts.map