import { Options, Plugin, Context, Build } from "@dwwoelfel/graphile-build"; import { GraphQLFieldResolver, GraphQLResolveInfo, GraphQLFieldConfig, GraphQLObjectType } from "graphql"; declare type ResolverWrapperFn = (resolve: GraphQLFieldResolver, source: TSource, args: TArgs, context: TContext, resolveInfo: GraphQLResolveInfo) => any; interface ResolverWrapperRequirements { childColumns?: Array<{ column: string; alias: string; }>; siblingColumns?: Array<{ column: string; alias: string; }>; } interface ResolverWrapperRule { requires?: ResolverWrapperRequirements; resolve?: ResolverWrapperFn; } interface ResolverWrapperRules { [typeName: string]: { [fieldName: string]: ResolverWrapperRule | ResolverWrapperFn; }; } declare type ResolverWrapperRulesGenerator = (options: Options) => ResolverWrapperRules; declare type ResolverWrapperFilter = (context: Context, build: Build, field: GraphQLFieldConfig, options: Options) => T | null; declare type ResolverWrapperFilterRule = (match: T) => ResolverWrapperRule | ResolverWrapperFn; export default function makeWrapResolversPlugin(rulesOrGenerator: ResolverWrapperRules | ResolverWrapperRulesGenerator): Plugin; export default function makeWrapResolversPlugin(filter: ResolverWrapperFilter, rule: ResolverWrapperFilterRule): Plugin; export {};