/** * Refactored Bot class using manager pattern * 다중 WebSocket 연결 및 메시지 큐 지원 */ import { BaseController } from '@/controllers/BaseController'; import { IrisAPI } from '@/services/core/IrisAPI'; import { Logger } from '@/utils/logger'; import { MessageQueueOptions } from './AsyncMessageQueue'; import { ConnectionConfig, MultiConnectionManagerOptions } from './MultiConnectionManager'; export type EventHandler = (context: any) => void | Promise; export type ErrorHandler = (context: any) => void | Promise; export interface BotOptions { maxWorkers?: number; saveChatLogs?: boolean; autoRegisterControllers?: boolean; httpMode?: boolean; webhookPort?: number; webhookPath?: string; logLevel?: 'error' | 'warn' | 'info' | 'debug'; multiConnection?: boolean; connections?: ConnectionConfig[]; connectionOptions?: MultiConnectionManagerOptions; useMessageQueue?: boolean; messageQueueOptions?: MessageQueueOptions; parallelEventHandling?: boolean; eventTimeout?: number; } export declare class Bot { private static instance; private static globalLogLevel; private logger; private bootstrapLogger; api: IrisAPI; name: string; private irisUrl; private connectionManager; private multiConnectionManager?; private webhookManager; private eventManager; private controllerManager; private messageProcessor; private batchScheduler; private messageQueue?; private httpMode; private multiConnectionMode; private useMessageQueue; private emitter; /** * Get global log level for debugging */ static getGlobalLogLevel(): 'error' | 'warn' | 'info' | 'debug'; /** * Create a logger with the global log level */ static createLogger(name: string): Logger; constructor(name: string, irisUrl: string, options?: BotOptions); /** * Initialize all manager instances */ private initializeManagers; /** * Setup API resolver for multi-connection support * This allows MessageProcessor to route responses to the correct connection */ private setupApiResolver; /** * Setup message handlers for managers */ private setupMessageHandlers; /** * Get the current Bot instance */ static getInstance(): Bot | null; /** * Get the current Bot instance (throws if not initialized) */ static requireInstance(): Bot; /** * Register an event handler */ onEvent(name: string): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => void; /** * Register event handlers manually */ on(event: 'chat', handler: EventHandler): void; on(event: 'message', handler: EventHandler): void; on(event: 'new_member', handler: EventHandler): void; on(event: 'del_member', handler: EventHandler): void; on(event: 'feed', handler: EventHandler): void; on(event: 'unknown', handler: EventHandler): void; on(event: 'error', handler: ErrorHandler): void; /** * Remove event handler */ off(event: string, handler: EventHandler | ErrorHandler): void; /** * Register a controller with the bot */ addController(controller: BaseController): void; /** * Register multiple controllers */ addControllers(...controllers: BaseController[]): void; /** * Register controllers from constructor classes */ registerControllers(controllerClasses: Array any>): void; /** * Start the bot and connect to Iris server */ run(): Promise; /** * 연결 상태 주기적 로깅 */ private logConnectionStats; /** * 추가 Iris 서버 연결 추가 (런타임) */ addConnection(config: ConnectionConfig): void; /** * 연결 통계 가져오기 */ getConnectionStats(): { total: number; connected: number; disconnected: number; error: number; totalMessages: number; } | null; /** * 메시지 큐 통계 가져오기 */ getQueueStats(): { queued: number; processing: number; completed: number; failed: number; dropped: number; avgProcessingTime: number; } | null; /** * Stop the bot */ stop(): void; } //# sourceMappingURL=Bot.d.ts.map