import { Result } from "@webiny/feature/api"; import type { CmsGroup, CmsGroupCreateInput } from "../../../types/index.js"; import type { GroupPersistenceError, GroupValidationError } from "../../../domain/contentModelGroup/errors.js"; import { GroupNotAuthorizedError, type GroupSlugTakenError } from "../../../domain/contentModelGroup/errors.js"; /** * CreateGroup Use Case */ export interface ICreateGroupUseCase { execute(input: CmsGroupCreateInput): Promise>; } export interface ICreateGroupUseCaseErrors { notAuthorized: GroupNotAuthorizedError; validation: GroupValidationError; repository: RepositoryError; } type UseCaseError = ICreateGroupUseCaseErrors[keyof ICreateGroupUseCaseErrors]; /** Create a new content model group. */ export declare const CreateGroupUseCase: import("@webiny/di").Abstraction; export declare namespace CreateGroupUseCase { type Interface = ICreateGroupUseCase; type Input = CmsGroupCreateInput; type Error = UseCaseError; type Return = Promise>; } /** * CreateGroupRepository - Persists a new group to storage. */ export interface ICreateGroupRepository { execute(group: CmsGroup): Promise>; } export interface ICreateGroupRepositoryErrors { alreadyExists: GroupSlugTakenError; storage: GroupPersistenceError; } type RepositoryError = ICreateGroupRepositoryErrors[keyof ICreateGroupRepositoryErrors]; export declare const CreateGroupRepository: import("@webiny/di").Abstraction; export declare namespace CreateGroupRepository { type Interface = ICreateGroupRepository; type Error = RepositoryError; } export {};