import { Processor } from "@rdfc/js-runner";
import { Agent } from "undici";
import { RdfStore } from "rdf-stores";
import { Logger } from "winston";
import type { Quad, Term } from "@rdfjs/types";
import type { Reader, Writer } from "@rdfc/js-runner";
export type ChangeSemantics = {
    changeTypePath: string;
    createValue: string;
    updateValue: string;
    deleteValue: string;
};
export type TransactionConfig = {
    transactionIdPath: string;
    transactionEndPath: string;
};
export type PerformanceConfig = {
    name: string;
    outputPath: string;
    queryTimeout?: number;
    failureIsFatal?: boolean;
};
export declare enum OperationMode {
    REPLICATION = "Replication",
    SYNC = "Sync"
}
export type IngestConfig = {
    operationMode?: OperationMode;
    memberBatchSize?: number;
    memberShape?: string;
    changeSemantics?: ChangeSemantics;
    targetNamedGraph?: string;
    transactionConfig?: TransactionConfig;
    graphStoreUrl?: string;
    forVirtuoso?: boolean;
    accessToken?: string;
    measurePerformance?: PerformanceConfig;
};
type TransactionMember = {
    memberId: string;
    transactionId: string;
    store: RdfStore;
};
type SPARQLIngestArgs = {
    memberStream: Reader;
    config: IngestConfig;
    sparqlWriter?: Writer;
};
export declare class SPARQLIngest extends Processor<SPARQLIngestArgs> {
    protected globalDispatcher: Agent;
    protected transactionMembers: TransactionMember[];
    protected memberBatch: Quad[];
    protected requestsPerformance: number[];
    protected batchCount: number;
    protected createTransactionQueriesLogger: Logger;
    protected doSPARQLRequestLogger: Logger;
    init(this: SPARQLIngestArgs & this): Promise<void>;
    transform(this: SPARQLIngestArgs & this): Promise<void>;
    produce(this: SPARQLIngestArgs & this): Promise<void>;
    verifyTransaction(stores: RdfStore[], transactionIdPath: string, transactionId: Term): void;
    createTransactionQueries(transactionMembers: TransactionMember[], config: IngestConfig): string;
}
export {};
