import { GraphQLSchema, GraphQLField, ExecutionResult, GraphQLType, GraphQLFieldResolver, GraphQLResolveInfo, GraphQLIsTypeOfFn, GraphQLTypeResolver, GraphQLScalarType, DocumentNode } from 'graphql'; import { SchemaDirectiveVisitor } from './schemaVisitor'; export declare type UnitOrList = Type | Array; export interface IResolverValidationOptions { requireResolversForArgs?: boolean; requireResolversForNonScalar?: boolean; requireResolversForAllFields?: boolean; allowResolversNotInSchema?: boolean; } export interface IResolverOptions { resolve?: IFieldResolver; subscribe?: IFieldResolver; __resolveType?: GraphQLTypeResolver; __isTypeOf?: GraphQLIsTypeOfFn; } export declare type MergeInfo = { delegate: (type: 'query' | 'mutation' | 'subscription', fieldName: string, args: { [key: string]: any; }, context: { [key: string]: any; }, info: GraphQLResolveInfo) => any; }; export declare type IFieldResolver = (source: TSource, args: { [argument: string]: any; }, context: TContext, info: GraphQLResolveInfo & { mergeInfo: MergeInfo; }) => any; export declare type ITypedef = (() => ITypedef[]) | string | DocumentNode; export declare type ITypeDefinitions = ITypedef | ITypedef[]; export declare type IResolverObject = { [key: string]: IFieldResolver | IResolverOptions; }; export declare type IEnumResolver = { [key: string]: string | number; }; export interface IResolvers { [key: string]: (() => any) | IResolverObject | GraphQLScalarType | IEnumResolver; } export interface ILogger { log: (message: string | Error) => void; } export interface IConnectorCls { new (context?: TContext): any; } export declare type IConnectorFn = (context?: TContext) => any; export declare type IConnector = IConnectorCls | IConnectorFn; export declare type IConnectors = { [key: string]: IConnector; }; export interface IExecutableSchemaDefinition { typeDefs: ITypeDefinitions; resolvers?: IResolvers | Array>; connectors?: IConnectors; logger?: ILogger; allowUndefinedInResolve?: boolean; resolverValidationOptions?: IResolverValidationOptions; directiveResolvers?: IDirectiveResolvers; schemaDirectives?: { [name: string]: typeof SchemaDirectiveVisitor; }; parseOptions?: GraphQLParseOptions; } export declare type IFieldIteratorFn = (fieldDef: GraphQLField, typeName: string, fieldName: string) => void; export declare type NextResolverFn = () => Promise; export declare type DirectiveResolverFn = (next: NextResolverFn, source: TSource, args: { [argName: string]: any; }, context: TContext, info: GraphQLResolveInfo) => any; export interface IDirectiveResolvers { [directiveName: string]: DirectiveResolverFn; } export declare type IMockFn = GraphQLFieldResolver; export declare type IMocks = { [key: string]: IMockFn; }; export declare type IMockTypeFn = (type: GraphQLType, typeName?: string, fieldName?: string) => GraphQLFieldResolver; export interface IMockOptions { schema: GraphQLSchema; mocks?: IMocks; preserveResolvers?: boolean; } export interface IMockServer { query: (query: string, vars?: { [key: string]: any; }) => Promise; } export declare type ResolveType = (type: T) => T; export declare type GraphQLParseOptions = { noLocation?: boolean; allowLegacySDLEmptyFields?: boolean; allowLegacySDLImplementsInterfaces?: boolean; experimentalFragmentVariables?: boolean; };