import { Result } from "@webiny/feature/api"; import { UpdateModelUseCase as UseCaseAbstraction } from "./abstractions.js"; import { UpdateModelRepository } 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 type { CmsModel } from "../../../types/index.js"; import type { CmsModelUpdateInput } from "../../../types/index.js"; import { GetModelUseCase } from "../../../features/contentModel/GetModel/index.js"; /** * UpdateModelUseCase - Core model update orchestration. * * Responsibilities: * - Validate input (Zod) * - Fetch original model * - Create updated domain model object * - Handle group changes * - Handle field ID changes (title, description, image) * - Access control checks * - Publish before event * - Delegate to repository for validation and persistence * - Publish after event or error event * * Note: Repository handles domain validations (API name uniqueness, field validation, etc.) */ declare class UpdateModelUseCaseImpl implements UseCaseAbstraction.Interface { private getModelUseCase; private eventPublisher; private repository; private accessControl; private tenantContext; constructor(getModelUseCase: GetModelUseCase.Interface, eventPublisher: EventPublisher.Interface, repository: UpdateModelRepository.Interface, accessControl: AccessControl.Interface, tenantContext: TenantContext.Interface); execute(modelId: string, input: CmsModelUpdateInput): Promise>; } export declare const UpdateModelUseCase: typeof UpdateModelUseCaseImpl & { __abstraction: import("@webiny/di").Abstraction; }; export {};