/**
 * Task scheduler implementation
 */
import { Task, CoordinationConfig } from "../utils/types.js";
import { IEventBus } from "../core/event-bus.js";
import { ILogger } from "../core/logger.js";
export interface ScheduledTask {
    task: Task;
    agentId: string;
    attempts: number;
    lastAttempt?: Date;
    timeout?: NodeJS.Timeout;
}
/**
 * Task scheduler for managing task assignment and execution
 */
export declare class TaskScheduler {
    protected config: CoordinationConfig;
    protected eventBus: IEventBus;
    protected logger: ILogger;
    protected tasks: Map<string, ScheduledTask>;
    protected agentTasks: Map<string, Set<string>>;
    protected taskDependencies: Map<string, Set<string>>;
    protected completedTasks: Set<string>;
    constructor(config: CoordinationConfig, eventBus: IEventBus, logger: ILogger);
    initialize(): Promise<void>;
    shutdown(): Promise<void>;
    assignTask(task: Task, agentId: string): Promise<void>;
    completeTask(taskId: string, result: Record<string, unknown>): Promise<void>;
    failTask(taskId: string, error: Error): Promise<void>;
    cancelTask(taskId: string, reason: string): Promise<void>;
    cancelAgentTasks(agentId: string): Promise<void>;
    rescheduleAgentTasks(agentId: string): Promise<void>;
    getAgentTaskCount(agentId: string): number;
    getHealthStatus(): Promise<{
        healthy: boolean;
        error?: string;
        metrics?: Record<string, number>;
    }>;
    getAgentTasks(agentId: string): Promise<Task[]>;
    performMaintenance(): Promise<void>;
    protected startTask(taskId: string): void;
    protected canStartTask(task: Task): boolean;
    protected cancelDependentTasks(taskId: string, reason: string): Promise<void>;
    protected cleanup(): void;
}
//# sourceMappingURL=scheduler.d.ts.map