import { TransactionLog, RocksDatabase } from '@harperfast/rocksdb-js';
import { AuditRecord } from './auditStore.ts';
import { EventEmitter } from 'node:events';
/**
 * Represents a transaction log store backed by RocksDB.
 * This class provides methods that conform to a standard store interface
 * to manage and interact with transaction logs, including querying logs,
 * adding entries, and loading logs for multiple nodes or purposes.
 */
export declare class RocksTransactionLogStore extends EventEmitter {
    log: TransactionLog;
    nodeLogs?: TransactionLog[];
    logByName: Map<string, TransactionLog>;
    updates: number;
    rootStore: RocksDatabase;
    reusableIterable: boolean;
    constructor(rootDatabase: RocksDatabase);
    /**
     * Translate a put to an addEntry
     * @param suggestedKey - ignored, only used by LMDB
     * @param auditRecord - Audit record to save
     * @param options - Options for save
     */
    put(suggestedKey: any, auditRecord: AuditRecord | Uint8Array, options: any): void;
    logById(nodeId: number): TransactionLog;
    putSync(suggestedKey: any, value: any, options: any): void;
    get(key: any, tableId: number, recordId: any, nodeId: number): any;
    getSync(key: any, tableId: number, recordId: any, nodeId: number): any;
    getBinary(key: any): Buffer<ArrayBufferLike>;
    getEntry(): void;
    addLogToMaps(logName: string, log: TransactionLog): number;
    loadLogs(): TransactionLog[];
    ensureLogExists(logName: string): number;
    /**
     * Get all entries matching the range, from all the transaction logs, sorted by timestamp
     * @param options
     */
    getRange(options: {
        start?: number;
        exactStart?: boolean;
        end?: number;
        log?: string | number;
        excludeLogs?: string[];
        onlyKeys?: boolean;
        startByLog?: Map<string, number>;
        startFromLastFlushed?: boolean;
        readUncommitted?: boolean;
    }): Iterable<AuditRecord>;
    getKeys(_options?: any): any[];
    getStats(): {
        logs: any[];
        totalSize: number;
    };
    getUserSharedBuffer(key: string | symbol, defaultBuffer: ArrayBuffer, options?: {
        callback?: () => void;
    }): ArrayBuffer & {
        cancel: () => void;
        notify: () => void;
    };
    on(eventName: string, listener: any): RocksDatabase | this;
    tryLock(key: any, onUnlocked?: () => void): boolean;
    unlock(key: any): void;
    get path(): string;
    remove(): Promise<void>;
}
