import { GraphQLExtResolveInfo , } from '../execution/GraphQLExtResolveInfo' ; import { ExecutionContext , } from '../execution/ExecutionContext' ; export interface Middleware < MiddlewareValue , FieldValue , Ctx > { /**
     * Runs immediately before a query is executed. Returns a MiddlewareValue that serves as
     * context for this specific middleware function.
     */ beforeQuery ( context ) : MiddlewareValue ; /**
     * Runs immediately after a query is executed. mVal contains the middleware value
     * accumulated by this middleware.
     */ afterQuery ? ( mVal , mctx ) : void ; return beforeField ? ( mVal , eCtx , mCtx ) : FieldValue ; /**
     * Run for each field directly after field resolution.
     *
     * Returning a value from this method will change the output for the resolution
     */ afterField ? ( mVal , fVal , value , eCtx , mCtx ) : mixed ; } export interface ResolverContext < Ctx > { source : mixed ; args : mixed ; context : Ctx ; info : GraphQLExtResolveInfo ; }