import { EventEmitter } from 'events'; import { Logger } from '../utils/logger.js'; export interface ChannelMessage { id: string; content: string; sender: string; timestamp: Date; metadata?: Record; attachments?: { type: 'image' | 'document' | 'video' | 'audio'; url: string; name?: string; }[]; } export interface ChannelResponse { content: string; metadata?: Record; attachments?: { type: 'image' | 'document'; url?: string; data?: Buffer; name?: string; }[]; formatting?: { markdown?: boolean; code?: boolean; mentions?: string[]; }; } export interface ChannelAdapter { name: string; connect(): Promise; disconnect(): Promise; onMessage(handler: (message: ChannelMessage) => Promise): void; sendMessage(message: ChannelResponse): Promise; isConnected(): boolean; } export declare class ChannelManager extends EventEmitter { private adapters; private activeChannels; private logger; constructor(); registerAdapter(type: string, adapter: ChannelAdapter): void; startChannel(type: string, config?: Record): Promise; stopChannel(type: string): Promise; sendMessage(type: string, message: ChannelResponse): Promise; onChannelMessage(type: string, handler: (message: ChannelMessage) => Promise): void; getActiveChannels(): string[]; getRegisteredAdapters(): string[]; isChannelActive(type: string): boolean; getAdapter(type: string): ChannelAdapter | undefined; } export declare abstract class BaseChannelAdapter implements ChannelAdapter { abstract name: string; protected logger: Logger; protected messageHandler?: (message: ChannelMessage) => Promise; protected connected: boolean; constructor(); abstract connect(): Promise; abstract disconnect(): Promise; abstract sendMessage(message: ChannelResponse): Promise; onMessage(handler: (message: ChannelMessage) => Promise): void; isConnected(): boolean; protected handleMessage(message: ChannelMessage): Promise; protected generateMessageId(): string; } //# sourceMappingURL=index.d.ts.map