import type { SchemaBuilder } from './builder'; import type { OutputDefinitionBlock } from './definitions/definitionBlocks'; import type { 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;