import type { PrivateModelBuilder } from "./models/PrivateModelBuilder.js"; import type { PublicModelBuilder } from "./models/PublicModelBuilder.js"; import type { IModelBuilderPrivateInput, IModelBuilderPublicInput } from "./models/ModelBuilder.js"; /** * Augmentable field builder registry. Provides access to all registered field types. */ export interface IFieldBuilderRegistry { /** * Mark the next field creation as an extension. * When extending, the registry will create a temporary builder marked with _extendMode, * and BaseModelBuilder will merge its operations into the existing field. */ extend(): this; } /** * @internal Do not export this abstraction. We don't want external developers to use it. */ export declare const FieldBuilderRegistry: import("@webiny/di").Abstraction; export declare namespace FieldBuilderRegistry { interface Interface extends IFieldBuilderRegistry { } } /** * Unified Model abstraction * External developers implement this to provide both public and private models */ export interface IModelBuilder { private(input: IModelBuilderPrivateInput): PrivateModelBuilder; public(input: IModelBuilderPublicInput): PublicModelBuilder; } export interface IModelFactory { execute(builder: IModelBuilder): Promise; } /** Provide code-defined content models. */ export declare const ModelFactory: import("@webiny/di").Abstraction; export declare namespace ModelFactory { type Interface = IModelFactory; type Return = Promise; type Builder = IModelBuilder; type FieldBuilder = FieldBuilderRegistry.Interface; }