/** * @module errors/TelegramError * @description Base error classes for Telegram Bot API */ /** * Error context interface */ export interface ErrorContext { /** API method name */ method?: string; /** Request parameters (sanitized) */ params?: Record; /** Bot token ID (not the actual token) */ routeId?: string; /** Attempt number */ attempt?: number; /** Maximum retry attempts */ maxRetries?: number; /** Additional context data */ [key: string]: unknown; } /** * Base error class for all Telegram-related errors */ export declare class TelegramError extends Error { /** Error context */ readonly context?: ErrorContext; /** Timestamp when error occurred */ readonly timestamp: Date; constructor(message: string, context?: ErrorContext); /** * Get formatted error message with context */ toJSON(): Record; } /** * API error returned by Telegram Bot API */ export declare class TelegramApiError extends TelegramError { /** HTTP status code */ readonly statusCode?: number; /** Telegram error code */ readonly errorCode: number; /** Retry after seconds (for rate limiting) */ readonly retryAfter?: number; /** Chat ID to migrate to (for group migrations) */ readonly migrateToChatId?: number; constructor(message: string, errorCode: number, statusCode?: number, context?: ErrorContext, retryAfter?: number, migrateToChatId?: number); /** * Check if error is retryable */ isRetryable(): boolean; toJSON(): Record; } /** * Network-related errors (timeout, connection, etc.) */ export declare class TelegramNetworkError extends TelegramError { /** Original error that caused network failure */ readonly cause?: Error; constructor(message: string, context?: ErrorContext, cause?: Error); /** * Network errors are generally retryable */ isRetryable(): boolean; toJSON(): Record; } /** * Configuration-related errors (invalid options, missing required config) */ export declare class TelegramConfigurationError extends TelegramError { constructor(message: string, context?: ErrorContext); /** * Configuration errors are not retryable */ isRetryable(): boolean; } /** * Validation errors (invalid parameters, schema validation failures) */ export declare class TelegramValidationError extends TelegramError { /** Validation error details */ readonly validationErrors?: unknown[]; constructor(message: string, context?: ErrorContext, validationErrors?: unknown[]); /** * Validation errors are not retryable */ isRetryable(): boolean; toJSON(): Record; } /** * Timeout errors */ export declare class TelegramTimeoutError extends TelegramNetworkError { /** Timeout duration in milliseconds */ readonly timeout: number; constructor(timeout: number, context?: ErrorContext); toJSON(): Record; } /** * Rate limiting error (429 Too Many Requests) */ export declare class TelegramRateLimitError extends TelegramApiError { constructor(message: string, retryAfter: number, statusCode: number, context?: ErrorContext); /** * Get delay before next retry in milliseconds */ getRetryDelay(): number; } /** * Authentication/authorization errors (401, 403) */ export declare class TelegramAuthError extends TelegramApiError { constructor(message: string, errorCode: number, statusCode: number, context?: ErrorContext); /** * Auth errors are not retryable */ isRetryable(): boolean; } /** * Bad request errors (400) */ export declare class TelegramBadRequestError extends TelegramApiError { constructor(message: string, errorCode: number, statusCode: number, context?: ErrorContext); /** * Bad request errors are not retryable */ isRetryable(): boolean; } /** * Not found errors (404) */ export declare class TelegramNotFoundError extends TelegramApiError { constructor(message: string, errorCode: number, statusCode: number, context?: ErrorContext); /** * Not found errors are not retryable */ isRetryable(): boolean; } /** * Conflict errors (409) - typically chat migration */ export declare class TelegramConflictError extends TelegramApiError { constructor(message: string, errorCode: number, statusCode: number, context?: ErrorContext, migrateToChatId?: number); /** * Conflict errors might be retryable if it's a migration */ isRetryable(): boolean; } /** * Server errors (500, 502, 503, etc.) */ export declare class TelegramServerError extends TelegramApiError { constructor(message: string, errorCode: number, statusCode: number, context?: ErrorContext); /** * Server errors are retryable */ isRetryable(): boolean; }