/// <reference types="node" />
import { IActivatable, IDeactivatable, IPersistenceLoadOptions, IPersistenceLoadResult, IPersistenceQueryOptions, IPersistenceQueryResult, IPersistenceStoreBatchOptions, IPersistenceStoreOptions } from '@darlean/base';
import { BufferOf, IDeSer, Mutex } from '@darlean/utils';
import { ModuleThread } from 'threads';
import { WorkerDef } from './worker';
interface IConnection {
    worker: ModuleThread<WorkerDef>;
    mutex: Mutex<void>;
    busy: boolean;
}
export declare class FsPersistenceActor implements IActivatable, IDeactivatable {
    private nrReaders;
    private deser;
    private connections;
    private basePath;
    private lastConnIdx;
    constructor(basePath: string, nrReaders: number, deser: IDeSer);
    activate(): Promise<void>;
    deactivate(): Promise<void>;
    touch(): Promise<void>;
    store(options: IPersistenceStoreOptions<Buffer>): Promise<void>;
    storeBatchBuffer(options: BufferOf<IPersistenceStoreBatchOptions<Buffer>>): Promise<void>;
    load(options: IPersistenceLoadOptions): Promise<IPersistenceLoadResult<Buffer>>;
    queryBuffer(options: IPersistenceQueryOptions): Promise<BufferOf<IPersistenceQueryResult<Buffer>>>;
    protected storeBatchImpl(options: IPersistenceStoreBatchOptions<Buffer>): Promise<void>;
    protected openDatabase(mode: 'writable' | 'readonly'): Promise<IConnection>;
    protected closeDatabase(): Promise<void>;
    protected getConnection(mode: 'writable' | 'readonly'): IConnection;
}
export {};
