import type { BaseBuilder } from './builders/index.js'; import type { Logger } from './logger.js'; import type { BuildNotifier } from './notifier.js'; import type { PriorityEngine } from './priority-engine.js'; import type { BuildRequest, BuildSchedulingConfig, BuildStatus, Target } from './types.js'; interface QueuedBuild extends BuildRequest { builder: BaseBuilder; startTime?: number; retryCount: number; } export declare class IntelligentBuildQueue { private config; private logger; private priorityEngine; private notifier?; private onBuildComplete?; private pendingQueue; private runningBuilds; private pendingRebuilds; private pendingChangeFiles; private targetBuilders; private targets; private queueStats; constructor(config: BuildSchedulingConfig, logger: Logger, priorityEngine: PriorityEngine, notifier?: BuildNotifier, onBuildComplete?: (result: BuildStatus, request: QueuedBuild) => Promise | void); /** * Register a target with its builder */ registerTarget(target: Target, builder: BaseBuilder): void; /** * Handles file change events and schedules builds for affected targets. * Uses priority engine to record changes and calculate build priorities. * Ensures deduplication - multiple changes to same target merge into single build. */ onFileChanged(files: string[], targets: Target[]): Promise; /** * Queue a build without running change-detection (used for initial builds). */ queueTargetBuild(target: Target, reason?: string): Promise; /** * Schedule a build for a specific target */ private scheduleTargetBuild; /** * Processes build queue respecting parallelization limits. * Queue is maintained in priority order (highest first). * Starts builds until hitting max concurrent limit or queue empty. */ private processQueue; /** * Start building a queued request */ private startBuild; /** * Execute the actual build */ private executeBuild; /** * Handle build completion */ private handleBuildCompletion; /** * Get current queue status */ getQueueStatus(): { pending: { target: string; priority: number; timestamp: number; }[]; running: { target: string; startTime: number; duration: number; }[]; stats: { totalBuilds: number; successfulBuilds: number; failedBuilds: number; avgWaitTime: number; avgBuildTime: number; }; }; /** * Get priority information for debugging */ getPriorityInfo(): { focus: { target: string; percentage: number; multiplier: number; }[]; queue: { target: string; priority: number; timestamp: number; }[]; }; /** * Cancel all pending builds for a target */ cancelPendingBuilds(targetName: string): number; /** * Clear all queued builds */ clearQueue(): void; private sortQueue; private generateRequestId; private findTargetByName; private updateStats; private tryScheduleRetry; } export {}; //# sourceMappingURL=build-queue.d.ts.map