import type { ITermDictionary } from '../dictionary/ITermDictionary';
import type { IRdfStoreOptions } from '../IRdfStoreOptions';
import type { QuadPatternTerms, QuadTerms, EncodedQuadTerms } from '../PatternTerm';
import type { IRdfStoreIndex } from './IRdfStoreIndex';
/**
 * An RDF store index that is implemented using nested records.
 */
export declare class RdfStoreIndexNestedRecord<E extends number, V> implements IRdfStoreIndex<E, V> {
    protected readonly dictionary: ITermDictionary<E>;
    protected readonly nestedRecords: NestedRecordActual<E>;
    readonly features: {
        quotedTripleFiltering: boolean;
    };
    constructor(options: IRdfStoreOptions<E>);
    set(terms: EncodedQuadTerms<E>, value: V): boolean;
    remove(terms: EncodedQuadTerms<E>): boolean;
    get(key: QuadTerms): V | undefined;
    getEncoded(ids: EncodedQuadTerms<E>): V | undefined;
    find(terms: QuadPatternTerms): IterableIterator<QuadTerms>;
    findEncoded(ids: EncodedQuadTerms<E | undefined>, terms: QuadPatternTerms): IterableIterator<EncodedQuadTerms<E>>;
    protected findTermsInner(depth: number, map: NestedRecordActual<E>, matchTerms: boolean[], partialResult: E[]): IterableIterator<E[]>;
    findTerms(matchTerms: boolean[]): IterableIterator<E[]>;
    count(terms: QuadPatternTerms): number;
    protected countTermsInner(depth: number, map: NestedRecordActual<E>, matchTerms: boolean[]): number;
    countTerms(matchTerms: boolean[]): number;
}
export type NestedRecord<E extends string | number | symbol> = NestedRecordActual<E> | true;
export type NestedRecordActual<E extends string | number | symbol> = Record<E, Record<E, Record<E, Record<E, any>>>>;
