import { DBConfig } from "../index.js";
import { Member } from "@treecg/types";
import { AnyBulkWriteOperation } from "mongodb";
import { TREEFragment } from "../fragmentHelper.js";
import { Bucket, Record, Relation } from "../extractor.js";
export type DataRecord = {
    id: string;
    data: string;
};
export type DataBulkOperations = AnyBulkWriteOperation<DataRecord>[] | Promise<string | null>[];
export type IndexBulkOperations = AnyBulkWriteOperation<TREEFragment>[] | Promise<string | number | null>[];
export interface Repository {
    open(): Promise<void>;
    close(): Promise<void>;
    ingestMetadata(type: string, id: string, value: string): Promise<void>;
    findMetadataFragmentations(): Promise<Member[]>;
    createIndices(): Promise<void>;
    prepareDataBulk(): DataBulkOperations;
    ingestDataBulk(bulk: DataBulkOperations): Promise<void>;
    handleRecord(record: Record, data: string, bulk: DataBulkOperations): Promise<void>;
    prepareIndexBulk(): IndexBulkOperations;
    ingestIndexBulk(bulk: IndexBulkOperations): Promise<void>;
    handleMember(record: Record, bucket: string, bulk: IndexBulkOperations): Promise<void>;
    handleBucket(bucket: Bucket, bulk: IndexBulkOperations): Promise<void>;
    handleRelation(relation: Relation, path: string | undefined, value: string | undefined, bulk: IndexBulkOperations): Promise<void>;
    removeRelation(relation: Relation, path: string | undefined, value: string | undefined, bulk: IndexBulkOperations): Promise<void>;
    getStoreType(): string;
}
export declare function getRepository(dbConfig: DBConfig): Repository;
