import { Result } from "@webiny/feature/api"; import type { CmsModel, CmsModelCreateInput } from "../../../types/index.js"; import { ModelAlreadyExistsError, ModelNotAuthorizedError, type ModelPersistenceError, type ModelSlugTakenError, type ModelValidationError } from "../../../domain/contentModel/errors.js"; import { type GroupNotAuthorizedError, type GroupNotFoundError } from "../../../domain/contentModelGroup/errors.js"; /** * CreateModel Use Case */ export interface ICreateModelUseCase { execute(input: CmsModelCreateInput): Promise>; } export interface ICreateModelUseCaseErrors { notAuthorized: ModelNotAuthorizedError; validation: ModelValidationError; slugTaken: ModelSlugTakenError; alreadyExists: ModelAlreadyExistsError; persistence: ModelPersistenceError; groupNotFound: GroupNotFoundError; groupNotAccessible: GroupNotAuthorizedError; } type UseCaseError = ICreateModelUseCaseErrors[keyof ICreateModelUseCaseErrors]; /** Create a new content model. */ export declare const CreateModelUseCase: import("@webiny/di").Abstraction; export declare namespace CreateModelUseCase { type Interface = ICreateModelUseCase; type Input = CmsModelCreateInput; type Error = UseCaseError; type Return = Promise>; } /** * CreateModelRepository - Validates domain rules and persists a new model to storage. */ export interface ICreateModelRepository { execute(model: CmsModel): Promise>; } export interface ICreateModelRepositoryErrors { alreadyExists: ModelAlreadyExistsError; validation: ModelValidationError; persistence: ModelPersistenceError; } type RepositoryError = ICreateModelRepositoryErrors[keyof ICreateModelRepositoryErrors]; export declare const CreateModelRepository: import("@webiny/di").Abstraction; export declare namespace CreateModelRepository { type Interface = ICreateModelRepository; type Error = RepositoryError; } export {};