/**
 * @module gateway/server-channels
 *
 * Manages the lifecycle of channel plugin runtimes (Telegram, WhatsApp,
 * Discord, etc.) within the gateway. Handles startup, shutdown, and
 * per-account multi-instance management. Tracks runtime state snapshots
 * for health/status reporting.
 */
import type { ChannelAccountSnapshot } from "../channels/plugins/types.js";
import type { SKYKOIConfig } from "../config/config.js";
import type { createSubsystemLogger } from "../logging/subsystem.js";
import type { RuntimeEnv } from "../runtime.js";
import { type ChannelId } from "../channels/plugins/index.js";
export type ChannelRuntimeSnapshot = {
    channels: Partial<Record<ChannelId, ChannelAccountSnapshot>>;
    channelAccounts: Partial<Record<ChannelId, Record<string, ChannelAccountSnapshot>>>;
};
type SubsystemLogger = ReturnType<typeof createSubsystemLogger>;
type ChannelManagerOptions = {
    loadConfig: () => SKYKOIConfig;
    channelLogs: Record<ChannelId, SubsystemLogger>;
    channelRuntimeEnvs: Record<ChannelId, RuntimeEnv>;
};
export type ChannelManager = {
    getRuntimeSnapshot: () => ChannelRuntimeSnapshot;
    startChannels: () => Promise<void>;
    startChannel: (channel: ChannelId, accountId?: string) => Promise<void>;
    stopChannel: (channel: ChannelId, accountId?: string) => Promise<void>;
    markChannelLoggedOut: (channelId: ChannelId, cleared: boolean, accountId?: string) => void;
};
export declare function createChannelManager(opts: ChannelManagerOptions): ChannelManager;
export {};
