/** * 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[]; }