import { GraphQLResolveInfo } from 'graphql' import { ArgsValue, GetGen, MaybePromise, MaybePromiseDeep, ResultValue } from '../typegenTypeHelpers' import { IsEqual } from '../typeHelpersInternal' import { CommonOutputFieldConfig } from './definitionBlocks' import { objectType } from './objectType' import { AllNexusOutputTypeDefs } from './wrapping' export interface SubscriptionTypeConfigBase { resolve( root: Event, args: ArgsValue<'Subscription', FieldName>, context: GetGen<'context'>, info: GraphQLResolveInfo ): | MaybePromise> | MaybePromiseDeep> subscribe( root: object, args: ArgsValue<'Subscription', FieldName>, ctx: GetGen<'context'>, info: GraphQLResolveInfo ): MaybePromise> | MaybePromiseDeep> } // prettier-ignore export type SubscriptionScalarConfig = CommonOutputFieldConfig<'Subscription', FieldName> & SubscriptionTypeConfigBase // prettier-ignore export interface SubscriptionTypeConfig extends SubscriptionScalarConfig { type: GetGen<'allOutputTypes'> | AllNexusOutputTypeDefs } // prettier-ignore export interface SubscriptionBuilder { list: SubscriptionBuilder nonNull: Omit nullable: Omit string(fieldName: FieldName, config: SubscriptionScalarConfig): void int(fieldName: FieldName, config: SubscriptionScalarConfig): void boolean(fieldName: FieldName, opts: SubscriptionScalarConfig): void id(fieldName: FieldName, config: SubscriptionScalarConfig): void float(fieldName: FieldName, config: SubscriptionScalarConfig): void field(name: FieldName, fieldConfig: SubscriptionTypeConfig): void } export type SubscriptionTypeParams = { definition(t: SubscriptionBuilder): void } export function subscriptionType(config: SubscriptionTypeParams) { return objectType({ name: 'Subscription', ...config } as any) } export type IsSubscriptionType = IsEqual