import type { Has } from '@principia/base/Has'; import type * as I from '@principia/base/IO'; import type { Stream } from '@principia/base/Stream'; import type * as U from '@principia/base/util/types'; import type * as Q from '@principia/query/Query'; import type { GraphQLResolveInfo } from 'graphql'; import type { ConnectionContext } from 'subscriptions-transport-ws'; export interface ResolverParameters { readonly args: Args; readonly ctx: Ctx; readonly root: Root; readonly info: GraphQLResolveInfo; } export interface SubscriptionResolverParameters { readonly ctx: Ctx; readonly result: Root; } export declare type Effect = (_: ResolverParameters) => I.IO, E, A>; export declare type Query = (_: ResolverParameters) => Q.Query, E, A>; export interface Subscription { readonly subscribe: (_: ResolverParameters) => Stream; readonly resolve: (_: SubscriptionResolverParameters) => I.IO; } export declare type Resolver = Effect | Query; export declare type AnyResolver = Effect | Query; export declare type TypeResolver = (_: { obj: A; ctx: Ctx; info: GraphQLResolveInfo; }) => string | null; export declare type FieldResolvers = Record | Subscription>; export declare type SchemaResolvers = Record>; export declare type SchemaResolversEnv = Res extends SchemaResolvers ? FieldResolversEnv, Ctx> : never; export declare type FieldResolversEnv = Res extends FieldResolvers ? U.UnionToIntersection<{ [k in keyof Res]: Res[k] extends Resolver ? unknown extends R ? never : R : Res[k] extends Subscription ? unknown extends RS ? unknown extends RR ? never : RR : unknown extends RR ? RS : RS & RR : never; }[keyof Res]> : never; export declare type TypeOf = Res extends Resolver ? A : never; export declare type ErrorOf = Res extends Resolver ? E : never; export declare type EnvOf = Res extends Resolver ? R : never; //# sourceMappingURL=Resolver.d.ts.map