import { Result } from "@webiny/feature/api"; import { CreateModelRepository as RepositoryAbstraction } from "./abstractions.js"; import { ModelCache, PluginModelsProvider } from "../../../features/contentModel/shared/abstractions.js"; import { ListModelsUseCase } from "../../../features/contentModel/ListModels/index.js"; import { CmsContext, StorageOperations } from "../../../features/shared/abstractions.js"; import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js"; import type { CmsModel } from "../../../types/index.js"; import { ModelFieldCompression } from "../../../features/contentModel/ModelFieldCompression/index.js"; /** * CreateModelRepository - Validates domain rules and persists a new model. * * Responsibilities: * - Generate modelId from input * - Validate modelId is allowed (not in disallowed list) * - Validate API name endings * - Validate modelId uniqueness (database + plugins) * - Validate API name uniqueness (database + plugins) * - Validate plugin conflicts * - Validate model fields * - Persist to storage * - Clear ModelCache after successful create */ declare class CreateModelRepositoryImpl implements RepositoryAbstraction.Interface { private readonly modelCache; private readonly pluginModelsProvider; private readonly listModelsUseCase; private readonly storageOperations; private readonly tenantContext; private readonly cmsContext; private readonly modelFieldCompression; constructor(modelCache: ModelCache.Interface, pluginModelsProvider: PluginModelsProvider.Interface, listModelsUseCase: ListModelsUseCase.Interface, storageOperations: StorageOperations.Interface, tenantContext: TenantContext.Interface, cmsContext: CmsContext.Interface, modelFieldCompression: ModelFieldCompression.Interface); execute(model: CmsModel): Promise>; } export declare const CreateModelRepository: typeof CreateModelRepositoryImpl & { __abstraction: import("@webiny/di").Abstraction; }; export {};