/** * Types for Telegram Long Polling Agent * * @module agents/types/agent.types */ import type { TelegramBotClient } from '../../client/TelegramBotClient.js'; import type { AgentOptions as BaseAgentOptions } from '@vvlad1973/base-agent'; import type { WebhookInfo } from '../../api/types/index.js'; /** * Options for TelegramLongPollingAgent */ export interface TelegramLongPollingAgentOptions extends Omit { /** Telegram bot client instance */ client: TelegramBotClient; /** Timeout for getUpdates long polling in seconds (default: 30) */ getUpdatesTimeout?: number; /** Number of updates to request per getUpdates call (default: 100) */ limit?: number; /** List of update types to receive. Empty for all types */ allowedUpdates?: string[]; /** Restore webhook settings on agent stop (default: true) */ restoreWebhook?: boolean; /** Drop pending updates on start (default: false) */ dropPendingUpdates?: boolean; /** Max restart attempts for worker (default: unlimited) */ maxRestartAttempts?: number | null; } /** * Saved webhook state for restoration */ export interface WebhookState { /** Original webhook info */ info: WebhookInfo; /** Whether webhook was active */ wasActive: boolean; /** Timestamp when saved */ savedAt: number; } /** * Worker data passed to long polling worker */ export interface LongPollingWorkerData { /** Bot token for API calls */ token: string; /** Route ID for multi-token support */ routeId?: string; /** Timeout for getUpdates in seconds */ timeout: number; /** Limit of updates per request */ limit: number; /** Allowed update types */ allowedUpdates?: string[]; /** Current offset for getUpdates */ offset: number; } /** * Message types for worker communication */ export interface WorkerUpdateMessage { type: 'update'; update: any; } export interface WorkerOffsetMessage { type: 'offset'; offset: number; } export interface WorkerErrorMessage { type: 'error'; message: string; stack?: string; } export type WorkerMessage = WorkerUpdateMessage | WorkerOffsetMessage | WorkerErrorMessage;