import { StorageStrategy, QueryMatcher, SchemaRecord } from './storage-strategy'; export interface FileStorageOptions { dataPath: string; modelName: string; persistMode?: 'immediate' | 'debounced'; debounceMs?: number; compaction?: { operationThreshold?: number; intervalMs?: number; sizeThresholdBytes?: number; walDataRatio?: number; emergencyOperations?: number; emergencySizeBytes?: number; emergencyRatio?: number; debounceMs?: number; useWorkerThread?: boolean; workerThreshold?: number; }; compactionThreshold?: number; } export declare class FileStorageStrategy implements StorageStrategy { private _data; private _dataPath; private _modelName; private _persistMode; private _debounceMs; private _dataFilePath; private _walFilePath; private _indexFilePath; private _debounceTimer?; private _writeQueue; private _pendingWrite; private _index; private _walOperationCount; private _walOffset; private _getDocId; private _queryIndexes; private _compactionDebounceMs; private _compactionTimer?; private _compacting; private _initialized; private _initPromise?; private _dropped; constructor(options: FileStorageOptions); initialize(): Promise; private _ensureInitialized; private _loadDataIndex; private _rebuildDataFileIndex; private _rebuildWalIndex; private _rebuildDataArray; private _readDocumentAtOffset; getAll(): Promise; private _waitForCompaction; 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; private _appendToWal; private _schedulePersist; private _persist; private _scheduleCompaction; private _compact; flush(): Promise; createIndex(fields: keyof T | Array, options?: { unique?: boolean; }): Promise; rebuildIndexes(): Promise; updateIndexForDocument(oldDoc: T | null, newDoc: T | null): void; private _updateQueryIndexes; checkUniqueConstraints(doc: Partial, excludeDoc?: T): void; findDocuments(matcher: QueryMatcher, indexHint?: { fields: Array; values: Record; }): Promise; /** * Record schema information in a JSON file * This is called automatically when a model is initialized */ recordSchema(schemaData: { modelName: string; version: string; definition: Record; indexes: Array<{ fields: string[]; unique: boolean; }>; options: Record; }): Promise; /** * Retrieve schema information for a model */ getSchema(modelName: string): Promise; } //# sourceMappingURL=file-strategy.d.ts.map