/** * Task Scheduler with Multiple Strategies */ import { EventEmitter } from 'events'; import { TerminalRegistry } from '../terminal/registry'; import { TerminalMatcher } from '../terminal/matcher'; import { QueuedTask, ExecutionOptions, QueueConfig } from './types'; /** * Task Scheduler */ export declare class TaskScheduler extends EventEmitter { private queue; private executingTasks; private terminalTasks; private registry; private matcher; private logger; private config; private isRunning; private schedulingTimer; private roundRobinIndex; constructor(registry: TerminalRegistry, matcher: TerminalMatcher, config: QueueConfig); /** * Start the scheduler */ start(): void; /** * Stop the scheduler */ stop(): void; /** * Add task to queue */ addTask(task: QueuedTask, options?: ExecutionOptions): Promise; /** * Cancel task */ cancelTask(taskId: string, reason: string): boolean; /** * Get task status */ getTask(taskId: string): QueuedTask | undefined; /** * Schedule next task */ private scheduleNext; /** * Process scheduling based on strategy */ private processScheduling; /** * FIFO scheduling */ private scheduleFIFO; /** * Priority-based scheduling */ private schedulePriority; /** * Deadline-based scheduling */ private scheduleDeadline; /** * Round-robin scheduling */ private scheduleRoundRobin; /** * Weighted round-robin scheduling */ private scheduleWeightedRoundRobin; /** * Least loaded scheduling */ private scheduleLeastLoaded; /** * Capability-based scheduling */ private scheduleCapabilityBased; /** * Check if task can be assigned to terminal */ private canAssignToTerminal; /** * Calculate terminal weight for weighted scheduling */ private calculateTerminalWeight; /** * Assign task to terminal */ private assignTask; /** * Handle task started */ taskStarted(taskId: string): void; /** * Handle task completed */ taskCompleted(taskId: string, result: any): void; /** * Handle task failed */ taskFailed(taskId: string, error: string): void; /** * Check if task should be retried */ private shouldRetry; /** * Schedule task retry */ private scheduleRetry; /** * Calculate retry delay with exponential backoff */ private calculateRetryDelay; /** * Get queue statistics */ getStatistics(): any; /** * Get metrics (alias for getStatistics with structured format) */ getMetrics(): { queuedTasks: number; runningTasks: number; completedTasks: number; failedTasks: number; averageDuration: number; }; } //# sourceMappingURL=scheduler.d.ts.map