export interface ChannelConfig {
    [key: string]: any;
}
export interface TelegramConfig extends ChannelConfig {
    botToken: string;
    webhookUrl?: string;
    allowedUpdates?: string[];
}
export interface WhatsAppConfig extends ChannelConfig {
    accessToken: string;
    phoneNumberId: string;
    webhookVerifyToken: string;
}
export interface FacebookConfig extends ChannelConfig {
    pageAccessToken: string;
    pageId: string;
    webhookVerifyToken: string;
}
export type ChannelType = 'telegram' | 'whatsapp' | 'facebook' | 'instagram' | 'email' | 'sms';
export type ChannelStatus = 'pending_setup' | 'active' | 'inactive' | 'error' | 'maintenance';
export declare class Channel {
    id: string;
    organizationId: string;
    type: ChannelType;
    config: ChannelConfig;
    status: ChannelStatus;
    createdAt: Date;
    updatedAt: Date;
    constructor(id: string, organizationId: string, type: ChannelType, config: ChannelConfig, status: ChannelStatus, createdAt: Date, updatedAt: Date);
    /**
     * Valida que la configuración del canal sea correcta según su tipo
     */
    private validate;
    /**
     * Valida la configuración específica según el tipo de canal
     */
    private validateConfig;
    private validateTelegramConfig;
    private validateWhatsAppConfig;
    private validateFacebookConfig;
    /**
     * Activa el canal
     */
    activate(): void;
    /**
     * Desactiva el canal
     */
    deactivate(): void;
    /**
     * Marca el canal como en error
     */
    markAsError(): void;
    /**
     * Marca el canal como en mantenimiento
     */
    setMaintenance(): void;
    /**
     * Verifica si el canal está activo
     */
    isActive(): boolean;
    /**
     * Verifica si el canal está configurado correctamente
     */
    isConfigured(): boolean;
    /**
     * Actualiza la configuración del canal
     */
    updateConfig(newConfig: ChannelConfig): void;
    /**
     * Obtiene la configuración específica según el tipo
     */
    getTelegramConfig(): TelegramConfig;
    getWhatsAppConfig(): WhatsAppConfig;
    getFacebookConfig(): FacebookConfig;
    /**
     * Verifica si el canal puede enviar mensajes
     */
    canSendMessages(): boolean;
    /**
     * Verifica si el canal puede recibir mensajes
     */
    canReceiveMessages(): boolean;
    /**
     * Crea una nueva instancia de Channel desde datos primitivos
     */
    static create(id: string, organizationId: string, type: ChannelType, config: ChannelConfig, status?: ChannelStatus): Channel;
    /**
     * Reconstruye una instancia de Channel desde datos de la base de datos
     */
    static fromData(data: {
        id: string;
        organizationId: string;
        type: string;
        config: any;
        status: string;
        createdAt: Date;
        updatedAt: Date;
    }): Channel;
}
//# sourceMappingURL=Channel.d.ts.map