import type { FasedAgentConfig } from "../config/config.js";
import { type PluginCandidate } from "./discovery.js";
import { type PluginManifest, type PluginManifestChannelConfig, type PluginManifestContracts, type PluginManifestModelSupport } from "./manifest.js";
import type { PluginConfigUiHint, PluginDiagnostic, PluginKind, PluginOrigin } from "./types.js";
export type PluginManifestRecord = {
    id: string;
    name?: string;
    description?: string;
    version?: string;
    enabledByDefault?: boolean;
    autoEnableWhenConfiguredProviders?: string[];
    legacyPluginIds?: string[];
    kind?: PluginKind;
    format?: string;
    channels: string[];
    providers: string[];
    hooks?: string[];
    modelSupport?: PluginManifestModelSupport;
    providerAuthEnvVars?: Record<string, string[]>;
    providerAuthAliases?: Record<string, string>;
    providerAuthChoices?: PluginManifest["providerAuthChoices"];
    skills: string[];
    origin: PluginOrigin;
    workspaceDir?: string;
    rootDir: string;
    source: string;
    manifestPath: string;
    schemaCacheKey?: string;
    configSchema?: Record<string, unknown>;
    configUiHints?: Record<string, PluginConfigUiHint>;
    contracts?: PluginManifestContracts;
    channelConfigs?: Record<string, PluginManifestChannelConfig>;
    channelCatalogMeta?: {
        id: string;
        label?: string;
        blurb?: string;
        preferOver?: readonly string[];
    };
    startupDeferConfiguredChannelFullLoadUntilAfterListen?: boolean;
};
export type PluginManifestRegistry = {
    plugins: PluginManifestRecord[];
    diagnostics: PluginDiagnostic[];
};
export declare function clearPluginManifestRegistryCache(): void;
export declare function loadPluginManifestRegistry(params: {
    config?: FasedAgentConfig;
    workspaceDir?: string;
    cache?: boolean;
    env?: NodeJS.ProcessEnv;
    candidates?: PluginCandidate[];
    diagnostics?: PluginDiagnostic[];
}): PluginManifestRegistry;
