import { type StoreIteratorOptions, type StorePutOptions, type StoreRemoveOptions, RocksDatabase } from '@harperfast/rocksdb-js';
import { Id } from './ResourceInterface.ts';
declare module '@harperfast/rocksdb-js' {
    interface DBI<T> {
        getValuesCount(indexedValue: any): number;
    }
}
/**
 * A specialized RocksDB-based index store that maintains indexed references to primary keys.
 * This store uses composite keys consisting of indexed values and primary keys, enabling
 * efficient range queries over indexed data. The actual data values are stored as null since
 * this is purely an index structure pointing to primary records elsewhere. This extends
 * RocksDatabase rather than a store because it actually alters the interface
 */
export declare class RocksIndexStore extends RocksDatabase {
    /**
     * Get all entries matching the range
     * @param options
     */
    getRange(options: StoreIteratorOptions): Iterable<any>;
    /**
     * Translate a put with indexed value and primary key to an underlying put
     * @param indexedValue - ignored, only used by LMDB
     * @param primaryKey
     * @param txnId
     */
    put(indexedValue: any, primaryKey: Id, options: StorePutOptions): void;
    putSync(indexedValue: any, primaryKey: Id, options: StorePutOptions): void;
    remove(indexedValue: any, primaryKey: Id, options?: StoreRemoveOptions): void;
    removeSync(indexedValue: any, primaryKey: Id, options?: StoreRemoveOptions): void;
}
