import { Result } from "@webiny/feature/api"; import { CreateModelUseCase as UseCaseAbstraction } from "./abstractions.js"; import { CreateModelRepository } from "./abstractions.js"; import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js"; import { AccessControl } from "../../../features/shared/abstractions.js"; import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js"; import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js"; import type { CmsModel } from "../../../types/index.js"; import type { CmsModelCreateInput } from "../../../types/index.js"; /** * CreateModelUseCase - Core model creation orchestration. * * Responsibilities: * - Validate input (Zod) * - Create domain model object * - Assign default fields if requested * - Access control checks * - Publish before event * - Delegate to repository * - Publish after event or error event * * Note: This use case is decorated by CreateModelValidator which handles: * - ModelId generation * - ModelId allowed validation * - API name ending validation * - Field validation and plugin conflict checks */ declare class CreateModelUseCaseImpl implements UseCaseAbstraction.Interface { private eventPublisher; private repository; private accessControl; private tenantContext; private identityContext; constructor(eventPublisher: EventPublisher.Interface, repository: CreateModelRepository.Interface, accessControl: AccessControl.Interface, tenantContext: TenantContext.Interface, identityContext: IdentityContext.Interface); execute(input: CmsModelCreateInput): Promise>; } export declare const CreateModelUseCase: typeof CreateModelUseCaseImpl & { __abstraction: import("@webiny/di").Abstraction; }; export {};