import { Result } from "@webiny/feature/api"; import type { CmsModel, CmsModelCreateFromInput } from "../../../types/index.js"; import { ModelAlreadyExistsError, ModelNotAuthorizedError, type ModelNotFoundError, type ModelPersistenceError, type ModelValidationError } from "../../../domain/contentModel/errors.js"; import { type GroupNotAuthorizedError, type GroupNotFoundError } from "../../../domain/contentModelGroup/errors.js"; /** * CreateModelFrom Use Case (Clone/Copy Model) */ export interface ICreateModelFromUseCase { execute(modelId: string, input: CmsModelCreateFromInput): Promise>; } export interface ICreateModelFromUseCaseErrors { notFound: ModelNotFoundError; notAuthorized: ModelNotAuthorizedError; validation: ModelValidationError; alreadyExists: ModelAlreadyExistsError; persistence: ModelPersistenceError; groupNotFound: GroupNotFoundError; groupNotAccessible: GroupNotAuthorizedError; } type UseCaseError = ICreateModelFromUseCaseErrors[keyof ICreateModelFromUseCaseErrors]; /** Create a content model by cloning an existing one. */ export declare const CreateModelFromUseCase: import("@webiny/di").Abstraction; export declare namespace CreateModelFromUseCase { type Interface = ICreateModelFromUseCase; type Input = CmsModelCreateFromInput; type Error = UseCaseError; type Return = Promise>; } /** * CreateModelFromRepository - Validates domain rules and persists cloned model. */ export interface ICreateModelFromRepository { execute(model: CmsModel): Promise>; } export interface ICreateModelFromRepositoryErrors { alreadyExists: ModelAlreadyExistsError; validation: ModelValidationError; persistence: ModelPersistenceError; } type RepositoryError = ICreateModelFromRepositoryErrors[keyof ICreateModelFromRepositoryErrors]; export declare const CreateModelFromRepository: import("@webiny/di").Abstraction; export declare namespace CreateModelFromRepository { type Interface = ICreateModelFromRepository; type Error = RepositoryError; } export {};