/** * @module errors/ErrorMapper * @description Maps Telegram API error codes to specific error classes */ import { TelegramApiError, ErrorContext } from './TelegramError.js'; import type { TelegramApiError as TelegramApiErrorResponse } from '../types/http-client.types.js'; /** * Telegram API error code categories * @see https://core.telegram.org/bots/api#making-requests */ export declare enum TelegramErrorCode { TOO_MANY_REQUESTS = 429, UNAUTHORIZED = 401, FORBIDDEN = 403, BAD_REQUEST = 400, NOT_FOUND = 404, CONFLICT = 409, INTERNAL_SERVER_ERROR = 500, BAD_GATEWAY = 502, SERVICE_UNAVAILABLE = 503, GATEWAY_TIMEOUT = 504 } /** * Common Telegram API error descriptions and their meanings */ export declare const TELEGRAM_ERROR_DESCRIPTIONS: { readonly Unauthorized: "Invalid bot token"; readonly 'Not Found': "Bot token not found or method does not exist"; readonly Forbidden: "Bot has no permission to perform this action"; readonly 'Bad Request': "Invalid parameters or malformed request"; readonly 'Bad Request: chat not found': "Chat ID is invalid or bot is not a member"; readonly 'Bad Request: message to delete not found': "Message does not exist or is too old"; readonly 'Bad Request: message is not modified': "Message content is the same"; readonly 'Bad Request: query is too old and response timeout expired or query ID is invalid': "Callback query expired"; readonly 'Bad Request: can\'t parse entities': "Invalid message entities or formatting"; readonly 'Bad Request: wrong file identifier/HTTP URL specified': "Invalid file_id or URL"; readonly 'Bad Request: group chat was upgraded to a supergroup chat': "Chat migrated to supergroup"; readonly 'Too Many Requests': "Rate limit exceeded, retry after specified seconds"; readonly 'Conflict: terminated by other getUpdates request': "Multiple getUpdates requests running"; readonly 'Conflict: can\'t use getUpdates method while webhook is active': "Webhook is active, disable it first"; readonly 'Internal Server Error': "Telegram server error, retry request"; readonly 'Bad Gateway': "Telegram gateway error, retry request"; readonly 'Service Unavailable': "Telegram service temporarily unavailable"; readonly 'Gateway Timeout': "Telegram gateway timeout, retry request"; }; /** * Error mapper class * Maps Telegram API errors to specific error classes */ export declare class ErrorMapper { /** * Map Telegram API error response to specific error class * @param error - Telegram API error response * @param statusCode - HTTP status code * @param context - Error context * @returns Specific TelegramError subclass */ static mapApiError(error: TelegramApiErrorResponse, statusCode: number, context?: ErrorContext): TelegramApiError; /** * Get human-readable error message for error code * @param errorCode - Telegram error code * @param description - Original error description * @returns Human-readable error message */ static getErrorMessage(errorCode: number, description: string): string; /** * Check if error code indicates a retryable error * @param errorCode - Telegram error code * @returns True if error is retryable */ static isRetryableErrorCode(errorCode: number): boolean; /** * Get suggested retry delay for error * @param error - Telegram API error * @returns Retry delay in milliseconds, or undefined if not retryable */ static getRetryDelay(error: TelegramApiErrorResponse): number | undefined; }