import { Result } from "@webiny/feature/api"; import type { CmsModel } from "../../../types/index.js"; import type { CmsModelUpdateInput } from "../../../types/index.js"; import { type ModelSlugTakenError, ModelNotAuthorizedError, type ModelNotFoundError, type ModelValidationError, type ModelPersistenceError, ModelCannotUpdateCodeModelError } from "../../../domain/contentModel/errors.js"; import { type GroupNotFoundError, type GroupNotAuthorizedError } from "../../../domain/contentModelGroup/errors.js"; /** * UpdateModel Use Case */ export interface IUpdateModelUseCase { execute(modelId: string, input: CmsModelUpdateInput): Promise>; } export interface IUpdateModelUseCaseErrors { notFound: ModelNotFoundError; notAuthorized: ModelNotAuthorizedError; validation: ModelValidationError; alreadyExists: ModelSlugTakenError; persistence: ModelPersistenceError; updateCodeModel: ModelCannotUpdateCodeModelError; groupNotFound: GroupNotFoundError; groupNotAccessible: GroupNotAuthorizedError; } type UseCaseError = IUpdateModelUseCaseErrors[keyof IUpdateModelUseCaseErrors]; /** Update a content model. */ export declare const UpdateModelUseCase: import("@webiny/di").Abstraction; export declare namespace UpdateModelUseCase { type Interface = IUpdateModelUseCase; type Input = CmsModelUpdateInput; type Error = UseCaseError; type Return = Promise>; } /** * UpdateModelRepository - Validates domain rules and persists model updates. */ export interface IUpdateModelRepository { execute(model: CmsModel, original: CmsModel): Promise>; } export interface IUpdateModelRepositoryErrors { alreadyExists: ModelSlugTakenError; validation: ModelValidationError; persistence: ModelPersistenceError; updateCodeModel: ModelCannotUpdateCodeModelError; } type RepositoryError = IUpdateModelRepositoryErrors[keyof IUpdateModelRepositoryErrors]; export declare const UpdateModelRepository: import("@webiny/di").Abstraction; export declare namespace UpdateModelRepository { type Interface = IUpdateModelRepository; type Error = RepositoryError; } export {};