/**
 * `ExtensionRegistryImpl` — extracted from `loader.ts` so `api.ts` can use it
 * without going through `loader.ts` (which imports back from `api.ts`,
 * forming a circular cycle).
 *
 * `loader.ts` still re-exports the class for backward-compat; this file is a
 * leaf and only depends on the type definitions in `./types/index.js`.
 */
import type { AgentTool } from '@earendil-works/pi-agent-core';
import type { ChannelPlugin } from '../channels/plugin-types.js';
import type { ExtensionCliRegistration, ExtensionCommand, ExtensionHookEvent, ExtensionHookHandler, ExtensionRecord, ExtensionRegistry, ExtensionReloadRegistration, ExtensionService, GatewayMethodHandler, HttpRequestHandler, TuiExtensionRegistrar, TuiExtensionRegistration } from './types/index.js';
export declare class ExtensionRegistryImpl implements ExtensionRegistry {
    extensions: Map<string, ExtensionRecord>;
    hooks: Map<ExtensionHookEvent, ExtensionHookHandler[]>;
    httpRoutes: Map<string, HttpRequestHandler>;
    commands: Map<string, ExtensionCommand>;
    services: Map<string, ExtensionService>;
    gatewayMethods: Map<string, GatewayMethodHandler>;
    tools: Map<string, AgentTool<any, any>>;
    channelPlugins: ChannelPlugin[];
    private cliRegistrations;
    private reloadRegistrations;
    private tuiRegistrations;
    addExtension(record: ExtensionRecord): void;
    getExtension(id: string): ExtensionRecord | undefined;
    getEnabledExtensions(): ExtensionRecord[];
    addHook(event: ExtensionHookEvent, handler: ExtensionHookHandler, _extensionId: string, _priority?: number): void;
    getHooks(event: ExtensionHookEvent): ExtensionHookHandler[];
    addChannelPlugin(plugin: ChannelPlugin): void;
    addHttpRoute(path: string, handler: HttpRequestHandler): void;
    getHttpRoute(path: string): HttpRequestHandler | undefined;
    addCommand(command: ExtensionCommand): void;
    getCommand(name: string): ExtensionCommand | undefined;
    addService(service: ExtensionService): void;
    getService(id: string): ExtensionService | undefined;
    addGatewayMethod(method: string, handler: GatewayMethodHandler): void;
    getGatewayMethod(method: string): GatewayMethodHandler | undefined;
    addTool(tool: any): void;
    removeTool(name: string): void;
    getTools(): Map<string, any>;
    getTool(name: string): any | undefined;
    getAllTools(): any[];
    addCliRegistration(reg: ExtensionCliRegistration): void;
    getCliRegistrations(): readonly ExtensionCliRegistration[];
    addTuiRegistration(extensionId: string, register: TuiExtensionRegistrar): void;
    getTuiRegistrations(): readonly TuiExtensionRegistration[];
    addReloadRegistration(reg: ExtensionReloadRegistration): void;
    removeReloadRegistration(extensionId: string): void;
    getReloadRegistrations(): readonly ExtensionReloadRegistration[];
    getMatchingReloadRegistrations(changedPaths: string[]): ExtensionReloadRegistration[];
}
