import type { AURItoFieldAlgebra, AURItoInputAlgebra, ExtendObjectTypeBuilder, FieldAURIS, GQLSubscriptionAlgebra, InputAURIS, InputObjectTypeBuilder, InterfaceTypeBuilder, MutationTypeBuilder, ObjectTypeBuilder, QueryTypeBuilder, ScalarTypeBuilder, ScalarTypeFromModelBuilder, SchemaGenerator, SchemaParts, SubscriptionTypeBuilder, UnionTypeBuilder } from '../schema'; import type { Has } from '@principia/base/Has'; import type { HttpConnection } from '@principia/http/HttpConnection'; import type { Config } from 'apollo-server-core'; import type { IResolvers } from 'graphql-tools'; import type { DefaultState } from 'koa'; import type { ConnectionContext } from 'subscriptions-transport-ws'; import type WebSocket from 'ws'; import * as I from '@principia/base/IO'; import * as L from '@principia/base/Layer'; import * as Koa from '@principia/koa'; import { ApolloServer } from 'apollo-server-koa'; export declare type GraphQlConfig = Omit & { subscriptions?: Partial<{ keepAlive?: number; onConnect?: (connectionParams: unknown, websocket: WebSocket, context: ConnectionContext) => I.IO; onDisconnect?: (websocket: WebSocket, context: ConnectionContext) => I.IO; path: string; }>; }; export declare type SubscriptionsEnv = C extends { subscriptions?: Partial<{ keepAlive?: number; onConnect?: (connectionParams: unknown, websocket: WebSocket, context: ConnectionContext) => I.IO; onDisconnect?: (websocket: WebSocket, context: ConnectionContext) => I.IO; path: string; }>; } ? (R extends never ? unknown : R) & (R1 extends never ? unknown : R1) : unknown; export interface GraphQlInstanceConfig { readonly additionalResolvers?: IResolvers; readonly schemaParts: SchemaParts; } export interface GraphQlDriver { readonly askContext: I.URIO, HttpConnection>; readonly extend: ExtendObjectTypeBuilder>; readonly generateSchema: SchemaGenerator>; readonly input: InputObjectTypeBuilder; readonly object: () => ObjectTypeBuilder>; readonly scalar: ScalarTypeBuilder; readonly scalarFromModel: ScalarTypeFromModelBuilder; readonly subscription: SubscriptionTypeBuilder>; readonly query: QueryTypeBuilder>; readonly mutation: MutationTypeBuilder>; readonly union: UnionTypeBuilder>; readonly interface: InterfaceTypeBuilder>; readonly live: (config: GraphQlInstanceConfig, R>) => L.Layer & RE & Has, never, Has>; } export interface GraphQlInstance { readonly server: ApolloServer; } export declare const GraphQlInstance: import("@principia/base/Has").Tag; declare type KoaContextFn = (_: { connection?: Conf['subscriptions'] extends { onConnect: (...args: any[]) => I.IO; } ? Omit & { context: A; } : Koa.Context['connection']; ctx: Koa.Context; }) => I.IO>; export declare function makeGraphQl(interpreters: AURItoFieldAlgebra[FieldPURI] & AURItoInputAlgebra[InputPURI] & GQLSubscriptionAlgebra): (config: C, context: KoaContextFn) => GraphQlDriver; export {}; //# sourceMappingURL=koa.d.ts.map