import type { Filter } from '../types/message-types.js';
import { createLevelDatabase, LevelWrapper } from './level-wrapper.js';
export interface IndexLevelOptions {
    signal?: AbortSignal;
}
/**
 * A LevelDB implementation for indexing the messages stored in the DWN.
 */
export declare class IndexLevel {
    config: IndexLevelConfig;
    db: LevelWrapper<string>;
    constructor(config: IndexLevelConfig);
    open(): Promise<void>;
    close(): Promise<void>;
    /**
     * Adds indexes for a specific data/object/content.
     * @param dataId ID of the data/object/content being indexed.
     */
    put(dataId: string, indexes: {
        [property: string]: unknown;
    }, options?: IndexLevelOptions): Promise<void>;
    query(filter: Filter, options?: IndexLevelOptions): Promise<Array<string>>;
    delete(dataId: string, options?: IndexLevelOptions): Promise<void>;
    clear(): Promise<void>;
    /**
     * @returns IDs of data that matches the exact property and value.
     */
    private findExactMatches;
    /**
     * @returns IDs of data that matches the range filter.
     */
    private findRangeMatches;
    private encodeValue;
    /**
     * Joins the given values using the `\x00` (\u0000) character.
     */
    private join;
    dump(): Promise<void>;
}
type IndexLevelConfig = {
    location: string;
    createLevelDatabase?: typeof createLevelDatabase;
};
export {};
//# sourceMappingURL=index-level.d.ts.map