import type { DocumentNode, ExecutableDefinitionNode } from '../language/ast'; /** * Wrapper type that contains DocumentNode and types that can be deduced from it. */ export interface TypedQueryDocumentNode< TResponseData = { [key: string]: any; }, TRequestVariables = { [key: string]: any; }, > extends DocumentNode { readonly definitions: ReadonlyArray; /** * This type is used to ensure that the variables you pass in to the query are assignable to Variables * and that the Result is assignable to whatever you pass your result to. The method is never actually * implemented, but the type is valid because we list it as optional */ __ensureTypesOfVariablesAndResultMatching?: ( variables: TRequestVariables, ) => TResponseData; }