///
import type { IncomingMessage } from 'http';
import { ClientOptions, GQtyClient, QueryFetcher, ScalarsEnumsHash, Schema as GQtySchema } from 'gqty';
export * from './schema.generated.js';
export interface GqlClientSchema {
query: any;
mutation: any;
subscription: any;
}
export interface RequestContext {
url: string;
init: RequestInit;
}
export declare function createQueryFetcher(applyRequestContext?: ClientConfig['applyRequestContext']): QueryFetcher;
export declare function createAuthQueryFetcher(context?: IncomingMessage, applyRequestContext?: ClientConfig['applyRequestContext']): QueryFetcher;
export interface ClientConfig extends Omit, 'schema' | 'scalarsEnumsHash' | 'queryFetcher'> {
schema?: Readonly;
scalarsEnumsHash?: ScalarsEnumsHash;
queryFetcher?: QueryFetcher;
authQueryFetcher?: QueryFetcher;
context?: WithClient;
/**
* Called before every request, use this to apply any headers you might
* need to for your requests or adjust the request to suite your needs.
*
* @param {string} url
* @param {RequestInit} init
* @returns {RequestContext}
* @memberof ClientConfig
*/
applyRequestContext?(url: string, init: RequestInit): Promise | RequestContext;
}
export interface ApiClient extends GQtyClient {
auth: GQtyClient;
}
export type WithClient = Type & {
apiClient?: ApiClient;
};
export declare function contextHasClient(context?: IncomingMessage): context is WithClient & Required, 'apiClient'>>;
export declare function getClient(clientConfig: ClientConfig): ApiClient;