/**
 * Telegram Channel Client
 *
 * Telegram bot implementation using the Telegram Bot API.
 * Supports both polling and webhook modes.
 */
import type { TelegramConfig, TelegramUpdate } from './types.js';
import type { OutboundMessage, DeliveryResult, MessageButton } from '../index.js';
import { BaseChannel } from '../index.js';
/**
 * Telegram channel implementation
 */
export declare class TelegramChannel extends BaseChannel {
    private pollingActive;
    private pollingTimeout;
    private lastUpdateId;
    private botInfo;
    private reconnectionManager;
    private consecutiveErrors;
    constructor(config: TelegramConfig);
    private get telegramConfig();
    private get apiUrl();
    /**
     * Make API request to Telegram
     */
    private apiRequest;
    /**
     * Connect to Telegram
     */
    connect(): Promise<void>;
    /**
     * Disconnect from Telegram
     */
    disconnect(): Promise<void>;
    /**
     * Send a message
     */
    send(message: OutboundMessage): Promise<DeliveryResult>;
    /**
     * Send message with attachments
     */
    private sendWithAttachments;
    /**
     * Set webhook
     */
    private setWebhook;
    /**
     * Set bot commands
     */
    private setCommands;
    /**
     * Start polling for updates
     */
    private startPolling;
    /**
     * Poll for updates with reconnection support
     */
    private poll;
    /**
     * Handle webhook update
     */
    handleWebhook(update: TelegramUpdate, secret?: string): Promise<boolean>;
    /**
     * Handle an update
     */
    private handleUpdate;
    /**
     * Handle incoming message
     */
    private handleMessage;
    /**
     * Handle callback query (button press)
     */
    private handleCallbackQuery;
    /**
     * Convert Telegram message to InboundMessage
     */
    private convertMessage;
    /**
     * Convert Telegram chat to ChannelInfo
     */
    private convertChat;
    /**
     * Convert Telegram user to ChannelUser
     */
    private convertUser;
    /**
     * Extract attachments from message
     */
    private extractAttachments;
    /**
     * Determine content type from message
     */
    private determineContentType;
    /**
     * Get Telegram parse mode
     */
    private getParseMode;
    /**
     * Build inline keyboard from buttons
     */
    private buildKeyboard;
    /**
     * Get file download URL
     */
    getFileUrl(fileId: string): Promise<string>;
    /**
     * Answer callback query
     */
    answerCallback(callbackId: string, options?: {
        text?: string;
        showAlert?: boolean;
    }): Promise<void>;
    /**
     * Edit message text
     */
    editMessage(chatId: string, messageId: string, text: string, options?: {
        parseMode?: 'markdown' | 'html' | 'plain';
        buttons?: MessageButton[];
    }): Promise<void>;
    /**
     * Delete message
     */
    deleteMessage(chatId: string, messageId: string): Promise<void>;
    /**
     * Send typing indicator
     */
    sendTyping(chatId: string): Promise<void>;
}
export default TelegramChannel;
