import type { MessengerAdapter, AgentAdapter } from './types.js';
import type { ACPAgentConfig } from '../plugins/agents/acp/types.js';
/**
 * Global registry for all adapters
 */
declare class PluginRegistry {
    private messengers;
    private agents;
    private agentAliases;
    registerMessenger(adapter: MessengerAdapter): void;
    registerAgent(adapter: AgentAdapter): void;
    getMessenger(name: string): MessengerAdapter | undefined;
    getAgent(name: string): AgentAdapter | undefined;
    findAgent(nameOrAlias: string): AgentAdapter | undefined;
    listMessengers(): string[];
    listAgents(): string[];
    /** Visible-for-test escape hatch: list every registered agent regardless
     *  of the enabled-list filter. Used by the SPA's "agent status" probe
     *  that needs to render rows for ALL installed agents (the SPA itself
     *  decides which are enabled visually). */
    listAllAgents(): string[];
    /**
     * Load ACP (remote) agents from config. Uses Promise.allSettled
     * for parallel loading so one slow endpoint doesn't block startup.
     *
     * Compliance gate: IMHUB_ENABLE_REMOTE_AGENT must be '1' or the entire
     * call is a no-op. Logged at info level so an operator who flipped
     * config-on-disk without the env flag can see why nothing loaded.
     */
    loadACPAgents(acpConfigs: ACPAgentConfig[]): Promise<void>;
    /**
     * Discover ACP agents via `.well-known/acp` on each base URL, then
     * load every advertised agent through loadACPAgents(). Failures on
     * individual URLs are logged but don't fail the batch.
     *
     * Compliance gate: same IMHUB_ENABLE_REMOTE_AGENT switch — skip the
     * discovery fetch entirely so disabled deployments don't even emit
     * `.well-known/acp` requests on the network.
     */
    loadDiscoveredACPAgents(baseUrls: string[]): Promise<number>;
    loadBuiltInPlugins(): Promise<void>;
}
export declare const registry: PluginRegistry;
/** Parse IMHUB_PLATFORM_BLACKLIST → normalized Set with alias
 *  expansion. Lowercase + trim each entry. Empty list (or unset env)
 *  returns an empty Set. */
export declare function parsePlatformBlacklist(raw: string | undefined): Set<string>;
/** True iff `platform` is on the IMHUB_PLATFORM_BLACKLIST env list.
 *  Re-parses env on every call so a hot env-file update (PUT /api/env)
 *  takes effect on the next adapter init without restart. */
export declare function isPlatformBlacklisted(platform: string): boolean;
/** Return the current blacklist as an array for diagnostics / UI. */
export declare function getPlatformBlacklist(): string[];
export {};
//# sourceMappingURL=registry.d.ts.map