import { queue, queueAsPromised } from "fastq";
import { IncomingQueueAdapter, IncomingQueueMessageListener, OutgoingQueueAdapter, QueueMessage } from "@mqueue/queue";

//#region src/FastqIncomingQueue.d.ts
declare class FastqIncomingQueue implements IncomingQueueAdapter {
  type: string;
  queue: queueAsPromised<QueueMessage, unknown>;
  protected _consumer?: (task: QueueMessage) => Promise<void>;
  constructor(concurrency?: number);
  healthcheck(): Promise<void>;
  close(): Promise<void>;
  consume(callback: IncomingQueueMessageListener): Promise<void>;
}
//#endregion
//#region src/FastqOutgoingQueue.d.ts
declare class FastqOutgoingQueue implements OutgoingQueueAdapter {
  queue: queueAsPromised<QueueMessage> | queue<QueueMessage>;
  type: string;
  constructor(queue: queueAsPromised<QueueMessage> | queue<QueueMessage>);
  healthcheck(): Promise<void>;
  close(): Promise<void>;
  sendMessage(message: QueueMessage): Promise<void>;
}
//#endregion
//#region src/FastqQueue.d.ts
declare class FastqQueue {
  private constructor();
  static Outgoing: typeof FastqOutgoingQueue;
  static Incoming: typeof FastqIncomingQueue;
}
//#endregion
export { FastqIncomingQueue, FastqOutgoingQueue, FastqQueue };
//# sourceMappingURL=index.d.ts.map