import { Repository } from "./Repository.js";
import { AnyBulkWriteOperation, Db, MongoClient } from "mongodb";
import { Lock } from "async-await-mutex-lock";
import { Member } from "@treecg/types";
import { TREEFragment } from "../fragmentHelper.js";
import { DataRecord } from "../index.js";
import { Bucket, Record, Relation } from "../extractor.js";
export declare class MongoDBRepository implements Repository {
    protected url: string;
    protected metadata: string;
    protected data: string;
    protected index: string;
    protected client: MongoClient;
    protected db: Db;
    protected logger: import("winston").Logger;
    protected lock: Lock<unknown>;
    constructor(url: string, metadata: string, data: string, index: string);
    open(): Promise<void>;
    close(): Promise<void>;
    ingestMetadata(type: string, id: string, value: string): Promise<void>;
    findMetadataFragmentations(): Promise<Member[]>;
    createIndices(): Promise<void>;
    prepareDataBulk(): AnyBulkWriteOperation<DataRecord>[];
    ingestDataBulk(bulk: AnyBulkWriteOperation<DataRecord>[]): Promise<void>;
    handleRecord(record: Record, data: string, bulk: AnyBulkWriteOperation<DataRecord>[]): Promise<void>;
    prepareIndexBulk(): AnyBulkWriteOperation<TREEFragment>[];
    ingestIndexBulk(bulk: AnyBulkWriteOperation<TREEFragment>[]): Promise<void>;
    handleMember(record: Record, bucket: string, bulk: AnyBulkWriteOperation<TREEFragment>[]): Promise<void>;
    handleBucket(bucket: Bucket, bulk: AnyBulkWriteOperation<TREEFragment>[]): Promise<void>;
    handleRelation(relation: Relation, path: string | undefined, value: string | undefined, bulk: AnyBulkWriteOperation<TREEFragment>[]): Promise<void>;
    removeRelation(relation: Relation, path: string | undefined, value: string | undefined, bulk: AnyBulkWriteOperation<TREEFragment>[]): Promise<void>;
}
