/**
 * ChannelPluginRegistry — owns the in-memory plugin map and provides typed
 * lookup helpers.
 *
 * Previously this lived as one of the eight responsibilities on the 707-line
 * `ChannelManager`. Splitting it out lets the lifecycle / heartbeat / outbound
 * coordinators depend only on the lookup surface they need (registry +
 * `getPlugin`), not on the full manager.
 */
import type { Config } from '../config/schema.js';
import type { ChannelPlugin } from './plugin-types.js';
export declare class ChannelPluginRegistry {
    private readonly plugins;
    register(plugin: ChannelPlugin): void;
    get(id: string): ChannelPlugin | undefined;
    has(id: string): boolean;
    all(): ChannelPlugin[];
    ids(): string[];
    entries(): IterableIterator<[string, ChannelPlugin]>;
    /** Plugin ids whose runtime currently reports connected (e.g. Telegram polling active). */
    runningChannelIds(cfg: Config, isInitialized: (id: string) => boolean): string[];
}
