import { Result } from "@webiny/feature/api"; import { ModelCache, ModelsFetcher as FetcherAbstraction } from "../../../features/contentModel/shared/abstractions.js"; import { PluginModelsProvider } from "../../../features/contentModel/shared/abstractions.js"; import { 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"; /** * ModelsFetcherImpl - Implementation with multi-level caching. * * Caching strategy: * 1. Plugin models are cached per tenant (with access control applied by PluginModelsProvider) * 2. Database models are cached per tenant (raw from DB) * 3. Filtered database models are cached per tenant + identity (with access control applied) * 4. Final merged list is cached per tenant + identity */ declare class ModelsFetcherImpl implements FetcherAbstraction.Interface { private readonly modelCache; private readonly pluginModelsProvider; private readonly storageOperations; private readonly tenantContext; private readonly modelFieldCompression; constructor(modelCache: ModelCache.Interface, pluginModelsProvider: PluginModelsProvider.Interface, storageOperations: StorageOperations.Interface, tenantContext: TenantContext.Interface, modelFieldCompression: ModelFieldCompression.Interface); fetchAll(): Promise>; fetchById(modelId: string): Promise>; private fetchAndMergeModels; } export declare const ModelsFetcher: typeof ModelsFetcherImpl & { __abstraction: import("@webiny/di").Abstraction; }; export {};