import { GetGen, AbstractTypeResolver } from '../typegenTypeHelpers'; import { AbstractTypes, RootTypingDef } from './_types'; import { NexusObjectTypeDef } from './objectType'; export interface UnionDefinitionBuilder { typeName: string; addUnionMembers(members: UnionMembers): void; setLegacyResolveType(fn: AbstractTypeResolver): void; } export declare type UnionMembers = Array | NexusObjectTypeDef>; export declare class UnionDefinitionBlock { protected typeBuilder: UnionDefinitionBuilder; constructor(typeBuilder: UnionDefinitionBuilder); /** * All ObjectType names that should be part of the union, either * as string names or as references to the `objectType()` return value */ members(...unionMembers: UnionMembers): void; protected resolveType(fn: AbstractTypeResolver): void; } export declare type NexusUnionTypeConfig = { /** * The name of the union type */ name: TypeName; /** * Builds the definition for the union */ definition(t: UnionDefinitionBlock): void; /** * The description to annotate the GraphQL SDL */ description?: string | null; /** * Info about a field deprecation. Formatted as a string and provided with the * deprecated directive on field/enum types and as a comment on input fields. */ deprecation?: string; /** * Root type information for this type */ rootTyping?: RootTypingDef; } & AbstractTypes.MaybeTypeDefConfigFieldResolveType; export declare class NexusUnionTypeDef { readonly name: TypeName; protected config: NexusUnionTypeConfig; constructor(name: TypeName, config: NexusUnionTypeConfig); get value(): NexusUnionTypeConfig; } /** * Defines a new `GraphQLUnionType` * @param config */ export declare function unionType(config: NexusUnionTypeConfig): NexusUnionTypeDef;