export interface ChannelMessage {
    id: string;
    channel: string;
    from: string;
    to: string;
    content: string;
    mediaType?: 'text' | 'image' | 'audio' | 'video' | 'document';
    mediaUrl?: string;
    metadata?: Record<string, any>;
    receivedAt: string;
}
export interface ChannelPlugin {
    name: string;
    enabled: boolean;
    startWebhook?: (webhookUrl: string) => Promise<void>;
    handleMessage?: (message: ChannelMessage) => Promise<void>;
    sendMessage: (to: string, content: string, options?: SendOptions) => Promise<SendResult>;
    sendMedia?: (to: string, mediaUrl: string, caption?: string) => Promise<SendResult>;
    connect?: () => Promise<void>;
    disconnect?: () => Promise<void>;
    getStatus?: () => Promise<ChannelStatus>;
}
export interface SendOptions {
    template?: string;
    components?: any[];
    metadata?: Record<string, any>;
}
export interface SendResult {
    success: boolean;
    messageId?: string;
    error?: string;
}
export interface ChannelStatus {
    connected: boolean;
    lastError?: string;
    messageCount: number;
    lastMessageAt?: string;
}
export declare function registerChannel(plugin: ChannelPlugin): void;
export declare function getChannel(name: string): ChannelPlugin | undefined;
export declare function getAllChannels(): ChannelPlugin[];
export declare function sendMessageToChannel(channelName: string, to: string, content: string, options?: SendOptions): Promise<SendResult>;
//# sourceMappingURL=types.d.ts.map