/** * Telegram Long Polling Agent * Manages long polling updates from Telegram Bot API using worker threads * * @module agents/TelegramLongPollingAgent */ import { BotappBaseAgent } from '@vvlad1973/base-agent'; import type { TelegramLongPollingAgentOptions, WebhookState, WorkerMessage } from './types/agent.types.js'; /** * Agent for handling Telegram updates via long polling * * Features: * - Automatic webhook management (disable on start, restore on stop) * - Long polling with configurable timeout * - Automatic crash recovery * - Integration with TelegramBotClient * - Hierarchical logging via logger-tree * * @example * ```typescript * const transport = new TelegramHttpTransport({ tokens: { default: 'BOT_TOKEN' } }); * const bot = new MyBot(transport); * * const agent = new TelegramLongPollingAgent({ * client: bot, * loggerPath: 'telegram.polling', * interval: 1, * getUpdatesTimeout: 30, * restoreWebhook: true * }); * * await agent.start(); * ``` */ export declare class TelegramLongPollingAgent extends BotappBaseAgent { private readonly client; private readonly restoreWebhook; private readonly dropPendingUpdates; private webhookState?; private currentOffset; private routeId?; /** * Path to worker module for fetching updates */ protected fetchObjectsPath: string; /** * Path to worker module for processing updates */ protected executeTasksPath: string; /** * Create a new Telegram Long Polling Agent * * @param options - Agent configuration options */ constructor(options: TelegramLongPollingAgentOptions); /** * Get route ID for API calls */ private getRouteId; /** * Lifecycle hook: Called before agent starts * Saves webhook state and disables webhook */ protected onBeforeStart(): Promise; /** * Lifecycle hook: Called after agent stops * Restores webhook settings if needed */ protected onAfterStop(): Promise; /** * Handle data from worker * Processes updates and offset updates */ protected onWorkerData(data: WorkerMessage): void; /** * Get current offset for getUpdates */ getCurrentOffset(): number; /** * Set current offset for getUpdates */ setCurrentOffset(offset: number): void; /** * Get saved webhook state */ getWebhookState(): WebhookState | undefined; } export default TelegramLongPollingAgent;