import type { DocumentNode } from 'graphql';
import type { Observable } from 'rxjs';
import type { OperationVariables, TypedDocumentNode } from '@apollo/client';
import { Apollo } from './apollo';
import type { EmptyObject } from './types';
import * as i0 from "@angular/core";
export declare namespace Mutation {
    type MutateOptions<TData = unknown, TVariables extends OperationVariables = EmptyObject> = Omit<Apollo.MutateOptions<TData, TVariables>, 'mutation'>;
}
export declare abstract class Mutation<TData = unknown, TVariables extends OperationVariables = EmptyObject> {
    protected readonly apollo: Apollo;
    abstract readonly document: DocumentNode | TypedDocumentNode<TData, TVariables>;
    client: string;
    constructor(apollo: Apollo);
    mutate(...[options]: {} extends TVariables ? [options?: Mutation.MutateOptions<TData, TVariables>] : [options: Mutation.MutateOptions<TData, TVariables>]): Observable<Apollo.MutateResult<TData>>;
    static ɵfac: i0.ɵɵFactoryDeclaration<Mutation<any, any>, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<Mutation<any, any>>;
}
