import { InterfaceFieldsFor } from '../typegenTypeHelpers'; import { AbstractTypes, NonNullConfig, Omit, RootTypingDef } from './_types'; import { OutputDefinitionBlock, OutputDefinitionBuilder } from './definitionBlocks'; import { Implemented, FieldModificationDef, FieldModification } from './interfaceType'; export interface ObjectDefinitionBuilder extends OutputDefinitionBuilder { addInterfaces(toAdd: Implemented[]): void; addModification(toAdd: FieldModificationDef): void; } export declare class ObjectDefinitionBlock extends OutputDefinitionBlock { protected typeBuilder: ObjectDefinitionBuilder; constructor(typeBuilder: ObjectDefinitionBuilder); /** * @param interfaceName */ implements(...interfaceName: Array): void; /** * Modifies a field added via an interface */ modify, string>>(field: FieldName, modifications: FieldModification): void; } export declare type NexusObjectTypeConfig = { name: TypeName; definition(t: ObjectDefinitionBlock): void; /** * Configures the nullability for the type, check the * documentation's "Getting Started" section to learn * more about GraphQL Nexus's assumptions and configuration * on nullability. */ nonNullDefaults?: NonNullConfig; /** * The description to annotate the GraphQL SDL */ description?: string | null; /** * Root type information for this type */ rootTyping?: RootTypingDef; } & AbstractTypes.MaybeTypeDefConfigFieldIsTypeOf & NexusGenPluginTypeConfig; export declare class NexusObjectTypeDef { readonly name: TypeName; protected config: NexusObjectTypeConfig; constructor(name: TypeName, config: NexusObjectTypeConfig); get value(): NexusObjectTypeConfig; } export declare function objectType(config: NexusObjectTypeConfig): NexusObjectTypeDef; export declare function queryType(config: Omit, 'name'>): NexusObjectTypeDef<"Query">; export declare function mutationType(config: Omit, 'name'>): NexusObjectTypeDef<"Mutation">;