import { BaseEngine, IMetadataProvider, UserInfo } from "@memberjunction/core";
import { MJComponentEntityExtended } from "../custom/MJComponentEntityExtended.js";
import { MJComponentLibraryEntity, MJComponentLibraryLinkEntity, MJComponentRegistryEntity, MJComponentDependencyEntity } from "../generated/entity_subclasses.js";
/**
 * Caching of metadata for component libraries, registries, and dependencies.
 *
 * NOTE: The `MJ: Components` entity is intentionally NOT loaded by this engine.
 * Component records contain large nvarchar(MAX) columns (Specification, vectors,
 * prose fields) totaling ~150+ MB on production databases. Loading them via the
 * engine forced all that data into the browser on every page refresh (~20s cold
 * load) and poisoned the server-side LocalCacheManager by exceeding its memory
 * budget and evicting all other cached entries. Callers that need component data
 * should use RunView with targeted filters instead of bulk-loading all components.
 */
export declare class ComponentMetadataEngine extends BaseEngine<ComponentMetadataEngine> {
    /**
     * Returns the global instance of the class. This is a singleton class, so there is only one instance of it in the application. Do not directly create new instances of it, always use this method to get the instance.
     */
    static get Instance(): ComponentMetadataEngine;
    private _componentLibraries;
    private _componentLibraryLinks;
    private _componentRegistries;
    private _componentDependencies;
    Config(forceRefresh?: boolean, contextUser?: UserInfo, provider?: IMetadataProvider): Promise<void>;
    get ComponentLibraries(): MJComponentLibraryEntity[];
    get ComponentLibraryLinks(): MJComponentLibraryLinkEntity[];
    get ComponentRegistries(): MJComponentRegistryEntity[];
    get ComponentDependencies(): MJComponentDependencyEntity[];
    /**
     * Finds a component by its primary key ID.
     * Performs a targeted RunView query instead of searching a bulk-loaded cache.
     */
    FindComponentByID(id: string, contextUser?: UserInfo, provider?: IMetadataProvider): Promise<MJComponentEntityExtended | undefined>;
    /**
     * Finds a component by name (case-insensitive), optionally filtered by namespace and registry.
     * Performs a targeted RunView query instead of searching a bulk-loaded cache.
     */
    FindComponent(name: string, namespace?: string, registry?: string, contextUser?: UserInfo): Promise<MJComponentEntityExtended | undefined>;
}
//# sourceMappingURL=component-metadata.d.ts.map