/** * Load Balancer - Distributes tasks across terminals optimally */ import { EventEmitter } from 'events'; import { TerminalSession } from '../terminal/types'; import { QueuedTask } from '../queue/types'; import { TaskAssignment, LoadBalancerConfig, BalancerStatistics, LoadDistribution, TaskAffinity, RebalancingPlan } from './types'; /** * Load Balancer */ export declare class LoadBalancer extends EventEmitter { private config; private terminalLoads; private terminalPerformance; private assignments; private taskAffinities; private statistics; private rebalanceTimer?; private logger; constructor(config?: Partial); /** * Initialize statistics */ private initializeStatistics; /** * Register terminal */ registerTerminal(terminal: TerminalSession): void; /** * Unregister terminal */ unregisterTerminal(terminalId: string): void; /** * Assign task to optimal terminal */ assignTask(task: QueuedTask, availableTerminals: TerminalSession[]): TaskAssignment | null; /** * Select terminal based on strategy */ private selectTerminal; /** * Round-robin selection */ private selectRoundRobin; /** * Select least loaded terminal */ private selectLeastLoaded; /** * Select by capability match */ private selectByCapability; /** * Select using weighted scoring */ private selectWeighted; /** * Select with sticky sessions */ private selectSticky; /** * Random selection */ private selectRandom; /** * Select by performance */ private selectByPerformance; /** * Hybrid selection combining multiple strategies */ private selectHybrid; /** * Calculate weighted score */ private calculateWeightedScore; /** * Calculate assignment score */ private calculateAssignmentScore; /** * Calculate capability score */ private calculateCapabilityScore; /** * Calculate affinity score */ private calculateAffinityScore; /** * Check if terminal has related tasks */ private hasRelatedTasks; /** * Get terminal assignment count */ private getTerminalAssignmentCount; /** * Get assignment reason */ private getAssignmentReason; /** * Update task status */ updateTaskStatus(taskId: string, status: 'started' | 'completed' | 'failed', details?: any): void; /** * Update terminal performance */ private updatePerformance; /** * Recalculate performance scores */ private recalculatePerformanceScores; /** * Get load distribution */ getLoadDistribution(): LoadDistribution; /** * Get load status */ private getLoadStatus; /** * Calculate balance score */ private calculateBalanceScore; /** * Generate recommendations */ private generateRecommendations; /** * Create rebalancing plan */ createRebalancingPlan(): RebalancingPlan | null; /** * Execute rebalancing plan */ executeRebalancingPlan(plan: RebalancingPlan): void; /** * Set task affinity */ setTaskAffinity(taskId: string, affinity: Omit): void; /** * Start monitoring */ startMonitoring(): void; /** * Stop monitoring */ stopMonitoring(): void; /** * Update statistics */ private updateStatistics; /** * Get statistics */ getStatistics(): BalancerStatistics; /** * Reset statistics */ resetStatistics(): void; } //# sourceMappingURL=load-balancer.d.ts.map