import type { Logger } from './log.ts'; export declare const META_KEY = "__meta"; export type ObjectMeta = { createdAt: number; updatedAt: number; size: number; }; export type Meta = { objects: Record; }; export type StoreInterfaceStoreName = 'kv' | 'querySubs' | 'syncSubs'; export declare abstract class StoreInterface { constructor(appId: string, storeName: StoreInterfaceStoreName); abstract getItem(key: string): Promise; abstract removeItem(key: string): Promise; abstract multiSet(keyValuePairs: Array<[string, any]>): Promise; abstract getAllKeys(): Promise; } export type StoreInterfaceClass = new (appId: string, storeName: StoreInterfaceStoreName) => StoreInterface; export type GCOpts = { maxSize: number; maxAgeMs: number; maxEntries: number; }; export type Opts = { persister: StoreInterface; /** * Merges data from storage with in-memory value on load. * The value returned from merge will become the current value. */ merge: (key: K, fromStorage: T | null | undefined, inMemoryValue: T | null | undefined) => T; serialize: (key: K, input: T) => SerializedT; parse: (key: K, value: SerializedT) => T; objectSize: (x: SerializedT) => number; logger: Logger; gc: GCOpts | null | undefined; saveThrottleMs?: number | null | undefined; idleCallbackMaxWaitMs?: number | null | undefined; preloadEntryCount?: number | null | undefined; }; export declare class PersistedObject { currentValue: Record; private _subs; private _persister; private _merge; private serialize; private parse; private _saveThrottleMs; private _idleCallbackMaxWaitMs; private _nextSave; private _nextGc; private _pendingSaveKeys; private _loadedKeys; private _loadingKeys; private _objectSize; private _log; onKeyLoaded: (key: string) => void | null | undefined; private _version; private _meta; private _gcOpts; constructor(opts: Opts); private _initMeta; private _getMeta; private _refreshMeta; private _preloadEntries; private _getFromStorage; waitForKeyToLoad(k: K): Promise[K]>; waitForMetaToLoad(): Promise | null>; unloadKey(k: K): void; private _loadKey; private _writeToStorage; flush(): Promise; private _gc; gc(): void; private _enqueuePersist; version(): number; updateInPlace(f: (prev: Record) => void): Record; subscribe(cb: (value: Record) => void): () => void; clearUnloadedKeys(): Promise; } //# sourceMappingURL=PersistedObject.d.ts.map