import type { ILoggerAware } from './logger.types.js'; export type TokensDictionary = Map; /** * Method priority configuration for queue-based transport */ export interface MethodPriorities { /** Priority for highest-priority methods - callback queries (default: 8) */ high?: number; /** Priority for medium-priority methods - all except getUpdates and callbacks (default: 5) */ medium?: number; /** Priority for lowest-priority methods - getUpdates (default: 2) */ low?: number; /** Custom priority mapping for specific methods */ custom?: Record; } export interface TokensData { addToken(tokenId: string, token: string): boolean; removeToken(tokenId: string, defaultId?: string): boolean; getToken(tokenId: string): string | undefined; setDefaultToken(tokenId: string): boolean; getDefaultToken(): string | undefined; } export interface BaseTransport { tokens: TokensData; sendRequest(data: Record, tokenId?: string, options?: Record): Promise; } /** * Transport request options */ export interface TransportRequestOptions { /** API method name (e.g., 'sendMessage', 'getUpdates') */ method: string; /** Method parameters */ params: Record; /** Optional routing identifier for token selection */ routeId?: string; /** Content type for request */ contentType?: string; } /** * Transport interface for Telegram API communication * Supports both direct HTTP and queue-based modes * Extends ILoggerAware for LoggerBinder compatibility */ export interface ITransport extends ILoggerAware { /** * Execute a transport request * @param options - Request options * @returns Promise with API response */ request(options: TransportRequestOptions): Promise; /** * Close transport and cleanup resources */ close(): Promise; }