import { Schema, Model, Document, Types } from 'mongoose'; import type { DatabaseAdapter, QueueJobRecord } from '../interfaces/database.ts'; import type { JobMeta, JobStatus } from '../interfaces/job.ts'; import { DbQueue } from '../drivers/db.ts'; export interface IQueueJobDocument { payload: Buffer; ttr: number; delaySeconds: number; priority: number; pushTime: Date; delayTime: Date | null; reserveTime: Date | null; doneTime: Date | null; expireTime: Date | null; status: 'waiting' | 'reserved' | 'done' | 'failed'; attempt: number; errorMessage?: string; } export interface IQueueJob extends IQueueJobDocument, Document { _id: Types.ObjectId; } export declare const QueueJobSchema: Schema & IQueueJob & Required<{ _id: Types.ObjectId; }> & { __v: number; }, any>, {}, {}, {}, {}, import("mongoose").DefaultSchemaOptions, IQueueJob, Document, {}, import("mongoose").ResolveSchemaOptions> & import("mongoose").FlatRecord & Required<{ _id: Types.ObjectId; }> & { __v: number; }>; export declare class MongooseDatabaseAdapter implements DatabaseAdapter { private model; constructor(model: Model); insertJob(payload: Buffer, meta: JobMeta): Promise; reserveJob(timeout: number): Promise; completeJob(id: string): Promise; releaseJob(id: string): Promise; failJob(id: string, error: string): Promise; getJobStatus(id: string): Promise; } export declare class MongooseQueue> extends DbQueue { mongooseAdapter: MongooseDatabaseAdapter; constructor(config: { model: Model; name: string; }); } export declare function createMongooseQueue>(name: string, model?: Model): MongooseQueue; export declare function createQueueModel(modelName?: string, collectionName?: string): Model; export declare const QueueJob: Model & IQueueJob & Required<{ _id: Types.ObjectId; }> & { __v: number; }, any>; export { DbQueue };