import { IGenQLClient } from '../../collections/graphql/graphql-queryable';
export declare class GraphQLMutationBuilder<TModel, TCreateInput, TUpdateInput, TWhereUniqueInput, TWhereInput> {
    private genqlClient;
    private operationNames;
    constructor(genqlClient: IGenQLClient, operationNames: {
        create: string;
        createMany?: string;
        update: string;
        updateMany?: string;
        upsert?: string;
        delete: string;
        deleteMany?: string;
    });
    static create<TModel, TCreateInput, TUpdateInput, TWhereUniqueInput, TWhereInput>(genqlClient: IGenQLClient, operationNames: {
        create: string;
        createMany?: string;
        update: string;
        updateMany?: string;
        upsert?: string;
        delete: string;
        deleteMany?: string;
    }): GraphQLMutationBuilder<TModel, TCreateInput, TUpdateInput, TWhereUniqueInput, TWhereInput>;
    static createFrom<TModel, TCreateInput, TUpdateInput, TWhereUniqueInput, TWhereInput>(builder: GraphQLMutationBuilder<any, any, any, any, any>, genqlClient: IGenQLClient, operationNames: {
        create: string;
        createMany?: string;
        update: string;
        updateMany?: string;
        upsert?: string;
        delete: string;
        deleteMany?: string;
    }): GraphQLMutationBuilder<TModel, TCreateInput, TUpdateInput, TWhereUniqueInput, TWhereInput>;
    Create(data: TCreateInput, select?: any): Promise<TModel>;
    CreateMany(data: TCreateInput[], returnCount?: boolean): Promise<{
        count: number;
    } | TModel[]>;
    Update(where: TWhereUniqueInput, data: TUpdateInput, select?: any): Promise<TModel>;
    UpdateMany(where: TWhereInput, data: TUpdateInput): Promise<{
        count: number;
    }>;
    Upsert(where: TWhereUniqueInput, create: TCreateInput, update: TUpdateInput, select?: any): Promise<TModel>;
    Delete(where: TWhereUniqueInput, select?: any): Promise<TModel>;
    DeleteMany(where: TWhereInput): Promise<{
        count: number;
    }>;
    BulkUpsert(records: Array<{
        where: TWhereUniqueInput;
        create: TCreateInput;
        update: TUpdateInput;
    }>): Promise<TModel[]>;
    ExecuteCustomMutation(operationName: string, args: any, selection?: any): Promise<any>;
    ExecuteBatch(mutations: Array<{
        operationName: string;
        args: any;
        selection?: any;
    }>): Promise<any[]>;
}
