import type { Express, Request as ExpressRequest, Response as ExpressResponse } from 'express'; import type { FastifyInstance, FastifyReply, FastifyRequest } from 'fastify'; import { YogaSchemaDefinition, YogaServerInstance, YogaServerOptions } from 'graphql-yoga'; import { AbstractGraphQLDriver, GqlModuleOptions, SubscriptionConfig } from '@nestjs/graphql'; export type YogaDriverPlatform = 'express' | 'fastify'; export type YogaDriverServerContext = Platform extends 'fastify' ? { req: FastifyRequest; reply: FastifyReply; } : { req: ExpressRequest; res: ExpressResponse; }; export type YogaDriverServerOptions = Omit, never>, 'context' | 'schema' | 'graphqlEndpoint'> & { conditionalSchema?: YogaSchemaDefinition, never> | undefined; }; export type YogaDriverServerInstance = YogaServerInstance, never>; export type YogaDriverConfig = GqlModuleOptions & YogaDriverServerOptions & ({ /** * Subscriptions configuration. Passing `true` will install only `graphql-ws`. */ subscriptions?: boolean | YogaDriverSubscriptionConfig; conditionalSchema?: never; } | { /** * TODO: Support conditional schema with subscriptions */ subscriptions?: never; conditionalSchema?: YogaSchemaDefinition, never> | undefined; }); export type YogaDriverSubscriptionConfig = { 'graphql-ws'?: Omit; 'subscriptions-transport-ws'?: Omit; }; export declare abstract class AbstractYogaDriver extends AbstractGraphQLDriver> { protected yoga: YogaDriverServerInstance; start(options: YogaDriverConfig): Promise; stop(): Promise; protected registerExpress({ conditionalSchema, ...options }: YogaDriverConfig<'express'>, { preStartHook }?: { preStartHook?: (app: Express) => void; }): void; protected registerFastify({ conditionalSchema, ...options }: YogaDriverConfig<'fastify'>, { preStartHook }?: { preStartHook?: (app: FastifyInstance) => void; }): void; private mergeConditionalSchema; subscriptionWithFilter(instanceRef: unknown, filterFn: (payload: TPayload, variables: TVariables, context: TContext) => boolean | Promise, createSubscribeContext: Function): (args_0: TPayload, args_1: TVariables, args_2: TContext) => Promise>; } export declare class YogaDriver extends AbstractYogaDriver { private subscriptionService?; start(options: YogaDriverConfig): Promise; stop(): Promise; }