/**
 * Represents the outcome of a job:
 * - `fulfilled` with a `value` if it succeeded
 * - `rejected` with a `reason` if it threw.
 */
export type JobResult<T, P> = {
    status: 'fulfilled';
    value: T;
    properties: P;
} | {
    status: 'rejected';
    reason: any;
    properties: P;
};
export interface JobContext {
    workerId: number;
}
/**
 * Represents a job that can be executed
 */
export interface Job<T = void, P = Record<string, unknown>> {
    /**
     * Execute the job with the given context.
     *
     * @param context - The context for the job execution, see @link JobContext
     * @returns A promise that is resolved by the job's worker
     */
    execute: (props: JobContext & {
        properties: P;
    }) => Promise<T>;
    /**
     * Properties associated with the job, useful for logging or tracking.
     */
    properties: P;
}
/**
 * Runs the given jobs with up to `concurrency` tasks in flight at once.
 * Resolves with an array of results in the same order as the jobs.
 */
export declare function runJobs<T = void, P = Record<string, unknown>>(jobs: Job<T, P>[], concurrency: number): Promise<JobResult<T, P>[]>;
//# sourceMappingURL=jobQueue.d.ts.map