import type { QueryAnnotation } from "../abstract/QueryAnnotation";
import { QueryBase } from "../abstract/QueryBase";
import type { Schema } from "../abstract/Schema";
import type { InsertInput, Table } from "../types";
import type { PgClient } from "./PgClient";
import { PgRunner } from "./PgRunner";
export declare class PgQueryUpsert<TTable extends Table> extends QueryBase<TTable, InsertInput<TTable>, string, PgClient> {
    /** @ignore */
    readonly RUNNER_CLASS: typeof PgRunnerUpsert;
}
declare class PgRunnerUpsert<TTable extends Table> extends PgRunner<TTable, InsertInput<TTable>, string> {
    static readonly IS_WRITE = true;
    private builder;
    readonly op = "UPSERT";
    readonly maxBatchSize = 100;
    constructor(schema: Schema<TTable>, client: PgClient);
    get default(): string;
    key(inputIn: InsertInput<TTable>): string;
    runSingle(input: InsertInput<TTable>, annotations: QueryAnnotation[]): Promise<string | undefined>;
    runBatch(inputs: Map<string, InsertInput<TTable>>, annotations: QueryAnnotation[]): Promise<Map<string, string>>;
}
export {};
//# sourceMappingURL=PgQueryUpsert.d.ts.map