import { DocumentNode, execute, GraphQLSchema } from 'graphql'; import { IOClients } from '../../../../clients/IOClients'; import { ParamsContext, RecorderState, ServiceContext } from '../typings'; export interface Query { variables?: Record; operationName?: string; document: DocumentNode; } type TypeFromPromise = T extends Promise ? U : T; export type GraphQLResponse = TypeFromPromise>; export interface GraphQLCacheControl { maxAge: number; scope: 'private' | 'public' | 'segment'; noCache: boolean; noStore: boolean; } export interface GraphQLContext extends ParamsContext { graphql: { query?: Query; graphqlResponse?: GraphQLResponse; status: 'success' | 'error'; cacheControl: GraphQLCacheControl; }; } export type GraphQLServiceContext = ServiceContext; export interface ExecutableSchema { schema: GraphQLSchema; hasProvider: boolean; provider?: string; } export {};