import { IResolvers, Transform } from '@graphql-tools/utils'; import { GraphQLSchema, GraphQLResolveInfo, DocumentNode } from 'graphql'; import * as YamlConfig from './config'; import { KeyValueCache, KeyValueCacheSetOptions } from 'fetchache'; import { Executor, Subscriber } from '@graphql-tools/delegate'; export { YamlConfig }; export declare function getJsonSchema(): any; export declare type MeshSource = { schema: GraphQLSchema; executor?: Executor; subscriber?: Subscriber; contextVariables?: (keyof InitialContext)[]; contextBuilder?: (initialContextValue: InitialContext) => Promise; batch?: boolean; }; export declare type GetMeshSourceOptions = { name: string; pubsub: MeshPubSub; config: THandlerConfig; cache: KeyValueCache; }; export interface MeshHandler { getMeshSource: () => Promise>; } export interface MeshHandlerLibrary { new (options: GetMeshSourceOptions): MeshHandler; } export declare type ResolverData = { root?: TParent; args?: TArgs; context?: TContext; info?: GraphQLResolveInfo; }; export declare type AllHooks = { destroy: void; resolverCalled: { resolverData: ResolverData; }; resolverDone: { resolverData: ResolverData; result: any; }; resolverError: { resolverData: ResolverData; error: Error; }; [key: string]: any; }; export declare type HookName = keyof AllHooks & string; export interface MeshPubSub { publish(triggerName: THook, payload: AllHooks[THook]): Promise; subscribe(triggerName: THook, onMessage: (data: AllHooks[THook]) => void, options?: any): Promise; unsubscribe(subId: number): void; asyncIterator(triggers: THook): AsyncIterator; } export interface MeshTransformOptions { config: Config; cache: KeyValueCache; pubsub: MeshPubSub; apiName?: string; } export interface MeshTransformLibrary { new (options: MeshTransformOptions): MeshTransform; } export interface MeshTransform extends Transform { noWrap?: boolean; } export declare type Maybe = null | undefined | T; export { KeyValueCache, KeyValueCacheSetOptions }; export declare type MergerFn = (options: { rawSources: RawSourceOutput[]; cache: KeyValueCache; pubsub: MeshPubSub; typeDefs?: DocumentNode[]; resolvers?: IResolvers; transforms?: Transform[]; executor?: Executor; }) => Promise | GraphQLSchema; export declare type RawSourceOutput = { name: string; contextBuilder: null | ((initialContextValue?: any) => Promise); schema: GraphQLSchema; executor?: Executor; subscriber?: Subscriber; transforms: MeshTransform[]; contextVariables: (keyof any)[]; handler: MeshHandler; batch: boolean; }; export declare type GraphQLOperation = DocumentNode | string; export declare type ImportFn = (moduleId: string) => Promise;