/**
 * ORM Client - Runtime GraphQL executor
 * @generated by @constructive-io/graphql-codegen
 * DO NOT EDIT - changes will be overwritten
 */
import type { GraphQLAdapter, GraphQLError, QueryResult } from '@constructive-io/graphql-types';
export type { GraphQLAdapter, GraphQLError, QueryResult } from '@constructive-io/graphql-types';
/**
 * Default adapter that uses fetch for HTTP requests.
 * This is used when no custom adapter is provided.
 */
export declare class FetchAdapter implements GraphQLAdapter {
    private endpoint;
    private headers;
    constructor(endpoint: string, headers?: Record<string, string>);
    execute<T>(document: string, variables?: Record<string, unknown>): Promise<QueryResult<T>>;
    setHeaders(headers: Record<string, string>): void;
    getEndpoint(): string;
}
/**
 * Configuration for creating an ORM client.
 * Either provide endpoint (and optional headers) for HTTP requests,
 * or provide a custom adapter for alternative execution strategies.
 */
export interface OrmClientConfig {
    /** GraphQL endpoint URL (required if adapter not provided) */
    endpoint?: string;
    /** Default headers for HTTP requests (only used with endpoint) */
    headers?: Record<string, string>;
    /** Custom adapter for GraphQL execution (overrides endpoint/headers) */
    adapter?: GraphQLAdapter;
}
/**
 * Error thrown when GraphQL request fails
 */
export declare class GraphQLRequestError extends Error {
    readonly errors: GraphQLError[];
    readonly data: unknown;
    constructor(errors: GraphQLError[], data?: unknown);
}
export declare class OrmClient {
    private adapter;
    constructor(config: OrmClientConfig);
    execute<T>(document: string, variables?: Record<string, unknown>): Promise<QueryResult<T>>;
    /**
     * Set headers for requests.
     * Only works if the adapter supports headers.
     */
    setHeaders(headers: Record<string, string>): void;
    /**
     * Get the endpoint URL.
     * Returns empty string if the adapter doesn't have an endpoint.
     */
    getEndpoint(): string;
}
