/**
 * BackgroundManager - Fire-and-forget 패턴 기반 백그라운드 에이전트 매니저
 */
import { BackgroundAgentArgs, BackgroundAgentHandle, AgentResult } from './types.js';
import { ToolResult } from '../types/tool.js';
/** 큐 용량 초과 에러 */
export declare class QueueOverflowError extends Error {
    constructor(queueSize: number, maxSize: number);
}
/** 개별 태스크 타임아웃 에러 */
export declare class TaskTimeoutError extends Error {
    constructor(taskId: string, timeout: number);
}
/** 전체 파이프라인 타임아웃 에러 */
export declare class PipelineTimeoutError extends Error {
    constructor(timeout: number);
}
/** Agent 실행 실패 에러 */
export declare class AgentExecutionError extends Error {
    constructor(agentName: string, reason: string);
}
/** 작업 상태 (SPEC Job Lifecycle) */
export type TaskStatus = 'pending' | 'running' | 'stale_canceling' | 'completed' | 'failed' | 'cancelled';
/** 작업 정보 */
export interface TaskInfo {
    id: string;
    args: BackgroundAgentArgs;
    status: TaskStatus;
    handle?: BackgroundAgentHandle;
    result?: AgentResult;
    error?: string;
    createdAt: number;
    startedAt?: number;
    completedAt?: number;
    model: string;
    provider: string;
    retryCount: number;
    /** 마지막 의미 있는 활동 타임스탬프 */
    lastActivity: number;
    /** Stale 감지 여부 */
    stale: boolean;
}
/** 큐 통계 */
export interface QueueStats {
    total: number;
    pending: number;
    running: number;
    stale_canceling: number;
    completed: number;
    failed: number;
    cancelled: number;
    queueSize: number;
    maxQueueSize: number;
}
declare class BackgroundManagerImpl {
    private readonly concurrency;
    private readonly taskQueue;
    private readonly tasks;
    private processing;
    private cleanupTimer;
    private registry;
    private staleCheckTimer;
    constructor();
    /**
     * 레지스트리 초기화 (프로젝트 경로가 있을 때만)
     */
    initRegistry(projectPath: string): void;
    private startCleanupTimer;
    /**
     * Stale 감지 타이머 — running 태스크의 무활동 감지
     */
    private startStaleDetection;
    /**
     * Running 태스크의 stale 감지 — CAS 패턴 (running → stale_canceling)
     */
    private checkStaleRunningTasks;
    /**
     * Fire-and-forget 방식으로 백그라운드 에이전트 시작
     * 즉시 handle 반환 (< 100ms)
     */
    launch(args: BackgroundAgentArgs): ToolResult & {
        taskId: string;
        handle?: BackgroundAgentHandle;
    };
    /**
     * 결과 폴링 (비동기)
     */
    poll(taskId: string): Promise<ToolResult & {
        task?: TaskInfo;
        result?: AgentResult;
    }>;
    /**
     * 태스크 취소
     */
    cancel(taskId: string): ToolResult;
    /**
     * 통계 조회
     */
    getStats(): ToolResult & {
        stats: QueueStats;
    };
    /**
     * 큐 처리 (내부)
     */
    private processQueue;
    /**
     * 태스크 실행 (내부) — 실패 시 자동 재시도 (MAX_RETRIES)
     */
    private executeTask;
    private extractProvider;
    private getQueuePosition;
    private formatDuration;
    private sleep;
}
export declare const backgroundManager: BackgroundManagerImpl;
export declare function launch(args: BackgroundAgentArgs): ToolResult & {
    taskId: string;
};
export declare function poll(taskId: string): Promise<ToolResult & {
    task?: TaskInfo;
    result?: AgentResult;
}>;
export declare function cancel(taskId: string): ToolResult;
export declare function getStats(): ToolResult & {
    stats: QueueStats;
};
export {};
//# sourceMappingURL=BackgroundManager.d.ts.map