interface CustomRequestInit { method?: string; headers?: HeadersInit; body?: string; signal?: AbortSignal; keepalive?: boolean; } type CustomFetchApi = (url: string, init?: CustomRequestInit) => Promise; type OperationVariables$1 = Record; type DataChunk = Buffer | Uint8Array; type HeadersObject = Record; interface ResponseErrors { networkStatusCode?: number; message?: string; graphQLErrors?: any[]; response?: Response; } type GQLExtensions = Record; interface FetchResponseBody { data?: TData; extensions?: GQLExtensions; headers?: Headers; } interface ClientResponse extends FetchResponseBody { errors?: ResponseErrors; } interface ClientStreamResponse extends ClientResponse { hasNext: boolean; } interface ClientStreamIterator { [Symbol.asyncIterator](): AsyncIterator>; } interface LogContent { type: string; content: any; } interface HTTPResponseLog extends LogContent { type: 'HTTP-Response'; content: { requestParams: Parameters; response: Response; }; } interface HTTPResponseGraphQLDeprecationNotice extends LogContent { type: 'HTTP-Response-GraphQL-Deprecation-Notice'; content: { requestParams: Parameters; deprecationNotice: string; }; } interface HTTPRetryLog extends LogContent { type: 'HTTP-Retry'; content: { requestParams: Parameters; lastResponse?: Response; retryAttempt: number; maxRetries: number; }; } type LogContentTypes = HTTPResponseLog | HTTPRetryLog | HTTPResponseGraphQLDeprecationNotice; type Logger = (logContent: TLogContentTypes) => void; interface ClientOptions { headers: HeadersObject; url: string; customFetchApi?: CustomFetchApi; retries?: number; logger?: Logger; } interface ClientConfig { readonly headers: ClientOptions['headers']; readonly url: ClientOptions['url']; readonly retries: Required['retries']; } interface RequestOptions { variables?: OperationVariables$1; url?: string; headers?: HeadersObject; retries?: number; keepalive?: boolean; signal?: AbortSignal; } type RequestParams = [operation: string, options?: RequestOptions]; interface GraphQLClient { readonly config: ClientConfig; fetch: (...props: RequestParams) => Promise; request: (...props: RequestParams) => Promise>; requestStream: (...props: RequestParams) => Promise>; } declare function createGraphQLClient({ headers, url, customFetchApi, retries, logger, }: ClientOptions): GraphQLClient; declare function getErrorMessage(error: any): string; declare function validateRetries({ client, retries, }: { client: string; retries?: number; }): void; type InputMaybe<_R = never> = never; interface AllOperations { [key: string]: { variables: any; return: any; }; [key: number | symbol]: never; } type UnpackedInput = 'input' extends keyof InputType ? InputType['input'] : InputType; type UnpackedInputMaybe = InputType extends InputMaybe ? InputMaybe> : UnpackedInput; type OperationVariables = Operations[Operation]['variables'] extends Record ? Record : { variables?: { [k in keyof Operations[Operation]['variables']]: UnpackedInputMaybe; }; }; type ResponseWithType = Omit & { json: () => Promise; }; type ReturnData = Operation extends keyof Operations ? Operations[Operation]['return'] : any; interface UnsupportedApiVersionLog extends LogContent { type: 'Unsupported_Api_Version'; content: { apiVersion: string; supportedApiVersions: string[]; }; } type ApiClientLogContentTypes = LogContentTypes | UnsupportedApiVersionLog; type ApiClientLogger = Logger; interface ApiClientConfig { storeDomain: string; apiVersion: string; headers: HeadersObject; apiUrl: string; retries?: number; } type ApiClientRequestOptions = { apiVersion?: string; headers?: HeadersObject; retries?: number; signal?: AbortSignal; } & (Operation extends keyof Operations ? OperationVariables : { variables?: Record; }); type ApiClientRequestParams = [ operation: Operation, options?: ApiClientRequestOptions ]; type ApiClientFetch = (...params: ApiClientRequestParams) => Promise>>>; type ApiClientRequest = (...params: ApiClientRequestParams) => Promise : TData>>; type ApiClientRequestStream = (...params: ApiClientRequestParams) => Promise : TData>>; interface ApiClient { readonly config: Readonly; getHeaders: (headers?: HeadersObject) => HeadersObject; getApiUrl: (apiVersion?: string) => string; fetch: ApiClientFetch; request: ApiClientRequest; } declare function validateDomainAndGetStoreUrl({ client, storeDomain, }: { client: string; storeDomain: string | undefined; }): string; declare function validateApiVersion({ client, currentSupportedApiVersions, apiVersion, logger, }: { client: string; currentSupportedApiVersions: string[]; apiVersion: string; logger?: ApiClientLogger; }): void; declare function getCurrentApiVersion(): { year: number; quarter: number; version: string; }; declare function getCurrentSupportedApiVersions(): string[]; interface GenerateHttpFetchOptions { clientLogger: Logger; customFetchApi?: CustomFetchApi; client?: string; defaultRetryWaitTime?: number; retriableCodes?: number[]; } declare function generateHttpFetch({ clientLogger, customFetchApi, client, defaultRetryWaitTime, retriableCodes, }: GenerateHttpFetchOptions): (requestParams: Parameters, count: number, maxRetries: number) => ReturnType; declare function generateGetHeaders(config: ApiClientConfig): ApiClient['getHeaders']; declare function generateGetGQLClientParams({ getHeaders, getApiUrl }: Pick): (operation: Operation, options?: ApiClientRequestOptions) => RequestParams; export { createGraphQLClient, generateGetGQLClientParams, generateGetHeaders, generateHttpFetch, getCurrentApiVersion, getCurrentSupportedApiVersions, getErrorMessage, validateApiVersion, validateDomainAndGetStoreUrl, validateRetries }; export type { AllOperations, ApiClient, ApiClientConfig, ApiClientFetch, ApiClientLogContentTypes, ApiClientLogger, ApiClientRequest, ApiClientRequestOptions, ApiClientRequestParams, ApiClientRequestStream, ClientConfig, ClientOptions, ClientResponse, ClientStreamIterator, ClientStreamResponse, CustomFetchApi, DataChunk, FetchResponseBody, GQLExtensions, GraphQLClient, HTTPResponseGraphQLDeprecationNotice, HTTPResponseLog, HTTPRetryLog, HeadersObject as Headers, InputMaybe, LogContent, LogContentTypes, Logger, OperationVariables, RequestOptions, RequestParams, ResponseErrors, ResponseWithType, ReturnData, UnsupportedApiVersionLog };