import { GraphQLResolveInfo, GraphQLSchema, GraphQLTypeResolver, GraphQLIsTypeOfFn } from 'graphql'; import { StitchingInfo } from '@graphql-tools/delegate'; export declare type IMiddlewareFragment = string; export declare type IMiddlewareResolver = (resolve: (source?: TSource, args?: TArgs, context?: TContext, info?: GraphQLResolveInfo & { stitchingInfo?: StitchingInfo; }) => any, parent: TSource, args: TArgs, context: TContext, info: GraphQLResolveInfo) => Promise; export interface IMiddlewareWithOptions { fragment?: IMiddlewareFragment; fragments?: IMiddlewareFragment[]; resolve?: IMiddlewareResolver; } export declare type IMiddlewareFunction = IMiddlewareWithOptions | IMiddlewareResolver; export interface IMiddlewareTypeMap { [key: string]: IMiddlewareFunction | IMiddlewareFieldMap; } export interface IMiddlewareFieldMap { [key: string]: IMiddlewareFunction; } export declare class IMiddlewareGenerator { constructor(generator: IMiddlewareGeneratorConstructor); generate(schema: GraphQLSchema): IMiddleware; } export declare type IMiddlewareGeneratorConstructor = (schema: GraphQLSchema) => IMiddleware; export declare type IMiddleware = IMiddlewareFunction | IMiddlewareTypeMap; export declare type IApplyOptions = { onlyDeclaredResolvers: boolean; }; export declare type GraphQLSchemaWithFragmentReplacements = GraphQLSchema & { schema?: GraphQLSchema; fragmentReplacements?: FragmentReplacement[]; }; export interface FragmentReplacement { field: string; fragment: string; } export interface IResolvers { [key: string]: IResolverObject; } export interface IResolverObject { [key: string]: IFieldResolver | IResolverOptions; } export interface IResolverOptions { fragment?: string; fragments?: string[]; resolve?: IFieldResolver; subscribe?: IFieldResolver; __resolveType?: GraphQLTypeResolver; __isTypeOf?: GraphQLIsTypeOfFn; } export declare type IFieldResolver = (source: TSource, args: { [argument: string]: any; }, context: TContext, info: GraphQLResolveInfo & { stitchingInfo?: StitchingInfo; }) => any;