import { ArgumentsMapper, ClassType, OutputTypeFn } from "./graphq-compose-typescript"; import { ComposeOutputType, Resolver, ResolverWrapCb, SchemaComposer } from "graphql-compose"; import { StringKey } from "./utils"; import { ArgumentsBuilder, ParamsNamesKeeper } from "./arguments-builder"; import { QueueSolver } from "./type-composer-creation/queue-solver"; import { PropertyTypeConvertor } from "./argument-type-convertor"; import { SourceArgSpecKeeper } from "./resolver/source-arg-spec-keeper"; import { ContextSpecKeeper } from "./context/context-spec-keeper"; export declare const RESOLVER_SPECS: unique symbol; export interface ResolverSpec { method: string; typeFn: OutputTypeFn; } export interface ClassWithResolversSpecs extends ClassType { [RESOLVER_SPECS]?: Map, ResolverSpec>; } export declare class ResolverSpecStorage { addResolverSpec(constructor: ClassWithResolversSpecs, method: StringKey, typeFn: OutputTypeFn): void; getResolverSpec(constructor: ClassWithResolversSpecs, method: StringKey): ResolverSpec; } export declare const WRAP_RESOLVER_SPEC: unique symbol; export interface WrapResolverSpec { method: StringKey; wrapper: ResolverWrapCb; } export interface ClassWithWrapSpecs extends ClassType { [WRAP_RESOLVER_SPEC]?: Map, WrapResolverSpec[]>; } export declare class WrapResolverSpecStorage { addSpec(constructor: ClassWithWrapSpecs, method: StringKey, wrapper: ResolverWrapCb): void; getSpecs(constructor: ClassWithWrapSpecs, method: StringKey): WrapResolverSpec[]; } export declare class ResolverBuilder { protected propertyTypeConvertor: PropertyTypeConvertor>; protected argumentsBuilder: ArgumentsBuilder; protected argumentsMapper: ArgumentsMapper; protected queueSolver: QueueSolver; protected storage: ResolverSpecStorage; protected paramsNamesKeeper: ParamsNamesKeeper; protected sourceArgSpecKeeper: SourceArgSpecKeeper; protected contextSpecKeeper: ContextSpecKeeper; protected schemaComposer: SchemaComposer; protected wrapStorage: WrapResolverSpecStorage; constructor(propertyTypeConvertor: PropertyTypeConvertor>, argumentsBuilder: ArgumentsBuilder, argumentsMapper: ArgumentsMapper, queueSolver: QueueSolver, storage: ResolverSpecStorage, paramsNamesKeeper: ParamsNamesKeeper, sourceArgSpecKeeper: SourceArgSpecKeeper, contextSpecKeeper: ContextSpecKeeper, schemaComposer: SchemaComposer, wrapStorage: WrapResolverSpecStorage); createResolver(instance: T, method: StringKey): Resolver; }