import { Config } from "..";
import { Logger } from "koishi";
import { JmTaskPayload } from "../processors/jmProcessor";
/**
 * 任务可能的状态
 * pending: 等待处理
 * processing: 正在处理
 * completed: 处理完成
 * failed: 处理失败
 */
type TaskStatus = "pending" | "processing" | "completed" | "failed";
interface Task {
    id: string;
    payload: JmTaskPayload;
    status: TaskStatus;
    createdAt: string;
    processedAt?: string;
    error?: string;
}
type TaskProcessor = (payload: JmTaskPayload) => Promise<void>;
interface QueueOptions {
    concurrency?: number;
}
interface AddTaskResult {
    task: Task;
    pendingAhead: number;
    queuePosition: number;
}
export declare class Queue {
    private tasks;
    private processor;
    private readonly concurrency;
    private activeTasks;
    /**
     * koishi 配置项
     */
    private config;
    /**
     * koishi 日志
     */
    private logger;
    constructor(processor: TaskProcessor, options: QueueOptions, config: Config, logger: Logger);
    /**
     * 向队列添加一个新任务
     */
    add(payload: JmTaskPayload): AddTaskResult;
    /**
     * 获取任务状态
     */
    getTask(id: string): Task | undefined;
    /**
     * 获取所有任务的只读列表
     */
    getAllTasks(): Readonly<Task[]>;
    /**
     * 获取指定任务在队列中的位置信息
     * @param taskId 任务ID
     * @returns {pendingAhead: number, queuePosition: number}
     * pendingAhead: 在此任务之前有多少个待处理任务
     * queuePosition: 此任务在所有待处理任务中的位置（从1开始）
     */
    getTaskQueuePosition(taskId: string): {
        pendingAhead: number;
        queuePosition: number;
    };
    /**
     * 检查并处理队列中的任务
     */
    private _processQueue;
    /**
     * 执行单个任务
     */
    private _runTask;
}
export {};
