///
import EventEmitter from "events";
import { ChunkId } from "../interface";
import { Row } from "../row";
import { Chunk } from "../chunk/chunk";
export interface LoadContract {
loadedRows: Row[];
}
export interface SaveContract {
chunkRef: Chunk;
insertRows: Row[];
}
export interface DataWatcherOptions {
chunkSize: number;
}
export declare abstract class DataWatcher {
#private;
readonly $emitter: EventEmitter;
readonly $options: OP;
constructor(options: OP);
$setWriteable(state: boolean): void;
$isWriteable(): boolean;
$toBeUnblocked(): Promise;
abstract save(storeContract: SC): Promise;
abstract load(chunkId: ChunkId): Promise;
abstract backupRuntimeCache(): void;
abstract restore(): Promise;
abstract cleanup(chunkId: ChunkId): Promise;
abstract countRows(chunkId: ChunkId): number;
}