declare class MessagingService {
    private readonly api;
    private readonly client?;
    constructor(api: any, client?: any | undefined);
    /**
     * Verifica se o cliente pode executar operações
     * @param throwError Se true, lança um erro caso as credenciais não sejam válidas (padrão: true)
     * @private Método interno para verificar credenciais
     */
    checkCredentials(throwError?: boolean): void;
    /**
     * Formatos aceitos pela Meta (Messenger Platform / Instagram).
     * Ref: https://developers.facebook.com/docs/messenger-platform/instagram/features/send-message
     */
    private static readonly META_AUDIO_FORMATS;
    private static readonly META_VIDEO_FORMATS;
    private static readonly META_IMAGE_FORMATS;
    /**
     * Determines the file type based on the URL extension
     * @param url URL of the file to analyze
     * @returns The file type as "video", "audio", "image" or "file"
     */
    private getFileTypeFromUrl;
    /**
     * Extrai extensão da URL, ignorando query string e fragment.
     */
    private getExtensionFromUrl;
    /**
     * Valida se o anexo é aceito pela Meta (Messenger/Instagram).
     * Retorna `null` se válido ou um objeto de erro estruturado se inválido.
     */
    private validateMetaAttachment;
    /**
     * Envia uma mensagem de texto para o Facebook
     * @param channelToken Token do canal
     * @param recipientId ID do destinatário
     * @param message Texto da mensagem
     */
    sendTextToFacebook(channelToken: string, recipientId: string, message: string): Promise<any>;
    /**
     * Envia um arquivo para o Facebook
     * O tamanho máximo de arquivo é 8 MB para imagens e 25 MB para outros tipos de arquivo (após codificação). Estabelecemos o tempo-limite de 75 segundos para vídeos e 10 segundos para outros tipos de arquivo.
     * @param channelToken Token do canal
     * @param recipientId ID do destinatário
     * @param attachmentUrl Url do anexo
     */
    sendFileToFacebook(channelToken: string, recipientId: string, attachmentUrl: string): Promise<any>;
    /**
     * Envia uma mensagem para o Instagram
     * @param channelToken Token do canal
     * @param recipientId ID do destinatário
     * @param message Texto da mensagem
     */
    sendTextToInstagram(channelToken: string, recipientId: string, text: string): Promise<any>;
    /**
     * Envia um arquivo para o Instagram
     * O tamanho máximo de arquivo é 8 MB para imagens e 25 MB para outros tipos de arquivo (após codificação). Estabelecemos o tempo-limite de 75 segundos para vídeos e 10 segundos para outros tipos de arquivo.
     * @param channelToken Token do canal
     * @param recipientId ID do destinatário
     * @param attachmentUrl Url do anexo
     */
    sendFileToInstagram(channelToken: string, recipientId: string, attachmentUrl: string): Promise<any>;
    /**
     * Envia um email
     * @param channelToken Token do canal
     * @param to Endereço de email do destinatário
     * @param subject Assunto do email
     * @param body Corpo do email
     * @param attachments Anexos (opcional)
     */
    sendEmail(channelToken: string, subject: string, body: string, to: string, attachments?: any[]): Promise<any>;
    getProfileFacebook(channelToken: string, recipientId: string): Promise<any>;
    getProfileInstagram(channelToken: string, recipientId: string): Promise<any>;
    /**
     * Envia uma mensagem de texto via WhatsApp Cloud API.
     * Só funciona dentro da janela de 24h após contato do destinatário.
     * Para iniciar conversa ou fora de janela, use sendTemplateToWhatsapp.
     * @param channelToken Token do canal
     * @param to Número do destinatário em E.164 sem '+' (ex.: "5511999999999")
     * @param text Texto da mensagem
     */
    sendTextToWhatsapp(channelToken: string, to: string, text: string): Promise<any>;
    /**
     * Envia um arquivo (imagem, áudio, vídeo ou documento) via WhatsApp.
     * Limites Cloud API: imagem 5MB; áudio 16MB; vídeo 16MB; documento 100MB.
     * Só funciona dentro da janela de 24h.
     * @param channelToken Token do canal
     * @param to Número do destinatário em E.164 sem '+'
     * @param attachmentUrl URL pública do arquivo
     * @param type "image" | "audio" | "video" | "document"
     * @param options.caption legenda (image, video, document)
     * @param options.filename nome do arquivo (document)
     */
    sendFileToWhatsapp(channelToken: string, to: string, attachmentUrl: string, type: "image" | "audio" | "video" | "document", options?: {
        caption?: string;
        filename?: string;
    }): Promise<any>;
    /**
     * Envia uma mensagem template (HSM) via WhatsApp. Necessária para iniciar
     * conversa ou enviar fora da janela de 24h. O template precisa estar
     * aprovado na Meta.
     * @param channelToken Token do canal
     * @param to Número do destinatário em E.164 sem '+'
     * @param name Nome do template aprovado (ex.: "hello_world")
     * @param language Código do idioma (ex.: "pt_BR", "en_US")
     * @param components Componentes do template (header/body/buttons params)
     */
    sendTemplateToWhatsapp(channelToken: string, to: string, name: string, language: string, components?: unknown[]): Promise<any>;
    /**
     * Marca uma mensagem WhatsApp como lida (azul duplo).
     * @param channelToken Token do canal
     * @param messageId mid da mensagem recebida (campo `message.mid` no webhook)
     */
    markWhatsappMessageAsRead(channelToken: string, messageId: string): Promise<any>;
    /**
     * Envia mensagem pós-venda em uma conversa do Mercado Livre.
     * Usa a Messaging API do ML (`/messages/packs/{packId}/sellers/{sellerId}`).
     * @param channelToken Token do canal
     * @param packId ID da conversa (`pack_id`) — vem no webhook de `messages`
     * @param buyerId ID do comprador (`user_id` destinatário) — vem no payload da mensagem recebida
     * @param text Texto da mensagem
     * @param sellerId (opcional) ID do vendedor; se omitido, o backend usa o `pageId` do canal
     */
    sendMercadoLivreMessage(channelToken: string, packId: string | number, buyerId: string | number, text: string, sellerId?: string | number): Promise<any>;
    /**
     * Responde a uma pergunta de produto no Mercado Livre.
     * Usa o endpoint `/answers` da API do ML.
     * @param channelToken Token do canal
     * @param questionId ID da pergunta (vem no webhook de `questions`)
     * @param text Texto da resposta
     */
    answerMercadoLivreQuestion(channelToken: string, questionId: string | number, text: string): Promise<any>;
    /**
     * Envia uma mensagem de texto via Telegram Bot API.
     * @param channelToken Token do canal
     * @param chatId ID do chat de destino (numérico do Telegram, aceita string ou number)
     * @param text Texto da mensagem
     */
    sendTextToTelegram(channelToken: string, chatId: string | number, text: string): Promise<any>;
    /**
     * Envia um arquivo via Telegram (foto, vídeo ou documento).
     * @param channelToken Token do canal
     * @param chatId ID do chat de destino
     * @param attachmentUrl URL pública do arquivo
     * @param options.type "photo" | "video" | "document". Se omitido, o backend infere pela extensão da URL.
     * @param options.caption Legenda (photo/video/document)
     * @param options.filename Nome do arquivo (document)
     */
    sendFileToTelegram(channelToken: string, chatId: string | number, attachmentUrl: string, options?: {
        type?: "photo" | "video" | "document";
        caption?: string;
        filename?: string;
    }): Promise<any>;
}
