import { Client } from "urql";
import type { ClientConfig, ClientPlugin } from "./types.js";
import type { DocumentNode } from "graphql";
import type { Logger } from "@incubrain/logger";
interface Operation {
    key: string;
    document: DocumentNode;
}
export declare class BaseClient {
    protected client: Client;
    protected plugins: ClientPlugin[];
    protected logger?: Logger;
    constructor(config: ClientConfig);
    private initializeDefaultPlugins;
    private initializePlugins;
    protected executeQuery<T>(operation: Operation, variables?: Record<string, any>): Promise<T>;
    query<TData = any, TVariables = any>(query: string | DocumentNode, variables?: TVariables): Promise<TData>;
    mutation<TData = any, TVariables = any>(mutation: string | DocumentNode, variables?: TVariables): Promise<TData>;
}
export {};
