import { LoadedIndex } from "./LoadedIndex"; import { WriteOverlay } from "./WriteOverlay"; import type { ReactiveDeps } from "./BulkDatabaseBase"; declare function nullJoin(a: string, b: string): string; export type ReaderConfig = { name: string; deps: ReactiveDeps; maxTriggerThrottleMs?: number; }; export declare class BulkDatabaseReader { private readonly cfg; constructor(cfg: ReaderConfig); index: LoadedIndex | undefined; readonly overlay: WriteOverlay; private dataGen; private columnCache; private pendingSignals; private triggerTimer; private currentTriggerDelay; private lastTriggerTime; get name(): string; get deps(): ReactiveDeps; get dataGeneration(): number; setIndex(newIndex: LoadedIndex, options?: { dropStaleFallback?: boolean; }): void; applyWrite(key: string, row: Record, time: number): void; applyDelete(key: string, time: number): void; isKeyWatched(key: string): boolean; isLiveNow(key: string): boolean; localTime(key: string): number; private compactingCount; beginCompaction(): void; endCompaction(): void; isCompactingSync(): boolean; private notifyOverlayMutation; getKeys(): Promise; getColumn(column: C): Promise<{ key: string; value: T[C]; time: number; }[]>; getSingleField(key: string, column: C): Promise; getSingleFieldObj(key: string, column: C): Promise<{ key: string; value: T[C]; time: number; } | undefined>; getSingleFieldSync(key: string, column: C): T[C] | undefined; getSingleFieldObjSync(key: string, column: C): { key: string; value: T[C]; time: number; } | undefined; getColumnSync(column: C): { key: string; value: T[C]; time: number; }[] | undefined; isFieldLoadedSync(key: string, column: C): boolean; isColumnLoadedSync(column: C): boolean; setEnsureIndex(fn: () => Promise>): void; private ensureIndexFn; private requireIndex; private formatInfo; private invalidateSignal; private flushSignals; } export declare const READER_SIGNALS: { LOAD: string; OVERLAY: string; }; export { nullJoin };