/**
 * 작업 큐 관리 모듈
 * 배치 작업의 큐 관리, 우선순위 정렬, 중복 방지 기능 제공
 */
export interface QueuedJob {
    name: string;
    job: () => Promise<void>;
    priority: number;
    retryCount?: number;
}
export interface JobQueueConfig {
    maxSize?: number;
}
/**
 * 작업 큐 관리자
 *
 * 역할:
 * - 작업 추가/제거
 * - 우선순위 기반 정렬
 * - 중복 작업 방지
 * - 큐 크기 관리
 */
export declare class JobQueue {
    private queue;
    private runningJobs;
    private config;
    constructor(config?: JobQueueConfig);
    /**
     * 큐에 작업 추가 (중복 방지 포함)
     *
     * Race condition 방지를 위해 double-check pattern 적용
     * - 실행 중인 작업이면 큐에 추가하기 전에 다시 한 번 확인
     * - 큐에 추가 후 즉시 중복 체크하여 중복이면 제거
     *
     * @param name 작업 이름
     * @param job 실행할 작업 함수
     * @param priority 우선순위 (낮을수록 높은 우선순위)
     * @param retryCount 재시도 횟수
     * @returns 추가 성공 여부
     */
    add(name: string, job: () => Promise<void>, priority: number, retryCount?: number): boolean;
    /**
     * 다음 작업 가져오기 (우선순위 순으로 정렬)
     *
     * @returns 다음 작업 또는 undefined
     */
    getNext(): QueuedJob | undefined;
    /**
     * 다음 작업 미리보기 (큐에서 제거하지 않음)
     *
     * @returns 다음 작업 또는 undefined
     */
    peekNext(): QueuedJob | undefined;
    /**
     * 실행 중인 작업으로 표시
     *
     * @param name 작업 이름
     */
    markRunning(name: string): void;
    /**
     * 실행 완료된 작업 표시 제거
     *
     * @param name 작업 이름
     */
    markCompleted(name: string): void;
    /**
     * 큐 크기
     */
    get size(): number;
    /**
     * 실행 중인 작업 수
     */
    get runningCount(): number;
    /**
     * 큐가 비어있는지 확인
     */
    get isEmpty(): boolean;
    /**
     * 큐 비우기
     */
    clear(): void;
    /**
     * 특정 작업이 실행 중인지 확인
     *
     * @param name 작업 이름
     */
    isRunning(name: string): boolean;
    /**
     * 특정 작업이 큐에 있는지 확인
     *
     * @param name 작업 이름
     */
    isQueued(name: string): boolean;
}
//# sourceMappingURL=job-queue.d.ts.map