import { BaseIndex, IndexComparisonOptions, IndexOperation } from "./base-index.cjs";
export type BTreeIndexOptions = IndexComparisonOptions;
export interface RangeQueryOptions {
    from?: any;
    to?: any;
    fromInclusive?: boolean;
    toInclusive?: boolean;
}
export declare class BTreeIndex<TKey extends string | number = string | number> extends BaseIndex<TKey> {
    private orderedEntries;
    private valueMap;
    private indexedKeys;
    add(key: TKey, item: any): void;
    private addToBucket;
    remove(key: TKey, item: any): void;
    private removeFromBucket;
    update(key: TKey, oldItem: any, newItem: any): void;
    build(entries: Iterable<[
        TKey,
        any
    ]>): void;
    clear(): void;
    lookup(operation: IndexOperation, value: any): Set<TKey>;
    get keyCount(): number;
    equalityLookup(value: any): Set<TKey>;
    protected exactBucketKeys(value: any): Iterable<TKey> | undefined;
    rangeQuery(options?: RangeQueryOptions): Set<TKey>;
    private takeInternal;
    take(n: number, from: any, filterFn?: (key: TKey) => boolean): Array<TKey>;
    takeFromStart(n: number, filterFn?: (key: TKey) => boolean): Array<TKey>;
    takeReversed(n: number, from: any, filterFn?: (key: TKey) => boolean): Array<TKey>;
    takeReversedFromEnd(n: number, filterFn?: (key: TKey) => boolean): Array<TKey>;
}
