import type { APIGroupConfig, AuthProvider, AuthConfig } from '@mondaydotcomorg/atp-protocol';
/**
 * Dynamic header provider for GraphQL requests.
 *
 * @param params - The GraphQL query parameters
 * @param context - Optional context from contextProvider (e.g., auth tokens)
 */
export type GraphQLAuthProvider = (params?: Record<string, any>, context?: Record<string, any>) => Promise<Record<string, string>> | Record<string, string>;
export interface LoadGraphQLOptions {
    name?: string;
    url?: string;
    /** Static headers for authentication (simple use case) */
    headers?: Record<string, string>;
    /** Auth provider for dynamic credential resolution */
    authProvider?: AuthProvider;
    /** Dynamic header provider function - called before each request */
    headerProvider?: GraphQLAuthProvider;
    /** Context provider - called before each request to get current context (e.g., auth tokens).
     * Receives execution context which may contain requestContext from execute() call. */
    contextProvider?: (executionContext?: Record<string, any>) => Record<string, any> | Promise<Record<string, any>>;
    /** Auth configuration for automatic credential injection */
    auth?: AuthConfig;
    depthLimit?: number;
    queryDepthLimit?: number;
}
/**
 * Load GraphQL specification and convert to ATP API group
 */
export declare function loadGraphQL(source: string, options?: LoadGraphQLOptions): Promise<APIGroupConfig>;
//# sourceMappingURL=graphql-loader.d.ts.map