import Observable from 'zen-observable-ts'; import { ExecutionResult, DocumentNode } from 'graphql'; export interface GraphQLRequest { query: DocumentNode; variables?: Record; operationName?: string; context?: Record; extensions?: Record; } export interface Operation { query: DocumentNode; variables: Record; operationName: string; extensions: Record; setContext: (context: Record) => Record; getContext: () => Record; toKey: () => string; } export type FetchResult< C = Record, E = Record > = ExecutionResult & { extensions?: E; context?: C; }; export type NextLink = (operation: Operation) => Observable; export type RequestHandler = ( operation: Operation, forward?: NextLink, ) => Observable | null;