import { DatabaseAdapter } from '../adapters/database.adapter';
import { BasicAttributesModel } from '../model/basic-attributes.model';
import { ContextBlock } from '../model/rules.model';
import { QueryModel } from '../model/query-model';
import { UpdateRuleRequestModel } from '../model/update-rule-request.model';
import { DeleteModel } from '../model/delete-model';
import { BFastDatabaseOptions } from '../bfast-database.option';
import { ChangesModel } from "../model/changes.model";
export declare class DatabaseFactory implements DatabaseAdapter {
    private readonly ipfsFactory;
    constructor();
    private whenWantToSaveADataNodeToATree;
    private nodeSearchResult;
    private handleQueryObjectTree;
    private static nodeTable;
    private static pruneNode;
    private static pruneNodeWithStringValue;
    private handleDeleteObjectTree;
    writeMany<T extends BasicAttributesModel>(domain: string, data: T[], context: ContextBlock, options: BFastDatabaseOptions): Promise<any[]>;
    writeOne<T extends BasicAttributesModel>(domain: string, data: T, context: ContextBlock, options: BFastDatabaseOptions): Promise<any>;
    init(options: BFastDatabaseOptions): Promise<any>;
    findOne<T extends BasicAttributesModel>(domain: string, queryModel: QueryModel<T>, context: ContextBlock, options: BFastDatabaseOptions): Promise<any>;
    findMany<T extends BasicAttributesModel>(domain: string, queryModel: QueryModel<T>, context: ContextBlock, options: BFastDatabaseOptions): Promise<any>;
    updateOne<T extends BasicAttributesModel, V>(domain: string, updateModel: UpdateRuleRequestModel, context: ContextBlock, options: BFastDatabaseOptions): Promise<any>;
    updateMany<T extends BasicAttributesModel>(domain: string, updateModel: UpdateRuleRequestModel, context: ContextBlock, options: BFastDatabaseOptions): Promise<any[]>;
    delete<T extends BasicAttributesModel>(domain: string, deleteModel: DeleteModel<T>, context: ContextBlock, options: BFastDatabaseOptions): Promise<{
        _id: string;
    }[]>;
    bulk<V>(operations: (session: any) => Promise<any>): Promise<any>;
    changes(domain: string, pipeline: any[], listener: (doc: ChangesModel) => void, resumeToken?: any): Promise<{
        close: () => void;
    }>;
    private incrementFields;
    getAllContentsFromTreeTable(domain: string, queryModel: QueryModel<any>, options: BFastDatabaseOptions): Promise<any[] | number>;
    processTreeSearchResultToCidList(mapOfNodesToQuery: any, nodesPathList: any, domain: string, options: BFastDatabaseOptions): Promise<string[]>;
}
