import type { IntegrationPackage, PluginPackage } from '@botpress/sdk';
import { RegisteredIntegration, RegisteredInterface, RegisteredPlugin, StatusVerdict } from '../types';
/**
 * Configuration for the agent registry
 */
export interface AgentRegistryConfig {
    integrations: RegisteredIntegration[];
    interfaces: RegisteredInterface[];
    interfacesMapping: Record<string, unknown>;
    plugins: RegisteredPlugin[];
}
/**
 * Singleton class for managing agent configuration and primitives
 * Provides a single source of truth for all runtime components
 */
declare class AgentRegistry {
    private _data;
    /**
     * Initialize the registry with configuration
     * This should be called once during bot startup
     */
    initialize(data: AgentRegistryConfig): void;
    get integrations(): RegisteredIntegration[];
    get interfaces(): RegisteredInterface[];
    get plugins(): RegisteredPlugin[];
    get interfacesMapping(): Record<string, unknown>;
    private ensureInitialized;
}
/** Per-alias carrier verdicts baked by codegen into the generated bootstrap. */
type CarrierStatuses = Record<string, StatusVerdict>;
/**
 * Build the status-bearing integration carrier consumed by the action proxy, and
 * register the installed ones with the ADK API. Extracted from the generated
 * `setupAdkRuntime` so the fault-isolation logic is unit-testable:
 *
 * - A `not_installed` entry is a MODE B stub (no real module) — skipped, never registered.
 * - A `registerIntegration` fault is isolated to the offending integration (demoted to
 *   `errored`) instead of aborting bootstrap for every other dependency.
 * - A missing carrier entry fails closed to `not_installed` (inert), never `available`.
 */
export declare function buildIntegrationRegistry(definitions: Record<string, IntegrationPackage>, statuses: CarrierStatuses, registerIntegration: (props: {
    alias: string;
    definition: IntegrationPackage['definition'];
}) => void): RegisteredIntegration[];
/** Build the status-bearing plugin carrier (parallel to {@link buildIntegrationRegistry}). */
export declare function buildPluginRegistry(definitions: Record<string, PluginPackage>, statuses: CarrierStatuses): RegisteredPlugin[];
/**
 * Export singleton instance
 * We need this because the import of this file can happen from different entrypoints and we want
 * to share the same instance across them.
 */
export declare const agentRegistry: AgentRegistry;
export {};
//# sourceMappingURL=agent-registry.d.ts.map