import { SchemaBuilder } from './builder'; import { OutputDefinitionBlock } from './definitions/definitionBlocks'; import { BaseExtensionConfig } from './dynamicMethod'; export declare type OutputPropertyFactoryConfig = { stage: 'walk' | 'build'; builder: SchemaBuilder; typeDef: OutputDefinitionBlock; /** * The name of the type this field is being declared on */ typeName: string; }; export interface DynamicOutputPropertyConfig extends BaseExtensionConfig { /** * Invoked when the property is accessed (as a getter) */ factory(config: OutputPropertyFactoryConfig): any; } export declare class DynamicOutputPropertyDef { readonly name: Name; protected config: DynamicOutputPropertyConfig; constructor(name: Name, config: DynamicOutputPropertyConfig); get value(): DynamicOutputPropertyConfig; } /** * Defines a new property on the object definition block * for an output type, making it possible to build custom DSL's * on top of Nexus, e.g. in nexus-prisma * * t.model.posts() */ export declare function dynamicOutputProperty(config: DynamicOutputPropertyConfig): DynamicOutputPropertyDef;