import {
  Job as BullJob,
  Worker as BullWorker,
  Queue as BullQueue,
} from "bullmq";
import { IntegrationAPI } from "./instances/integration";
import { Mainframe } from "./instances/mainframe";
import Jobs from "./jobs";
import { Queues } from "./queues";
import { Workers } from "./workers";

/**
 *
 */
class JobQueue {
  constructor(encryption_key: string, environment = "development") {
    process.env.JOB_QUEUE_ENCRYPTION_KEY = encryption_key;
    process.env.JOB_QUEUE_ENVIRONMENT = environment;
  }
  Queues = Queues;
  Workers = Workers;
  Jobs = Jobs;
  Mainframe = Mainframe;
  IntegrationAPI = IntegrationAPI;
}

// types
export type Job = BullJob;
export type Queue = BullQueue;
export type Worker = BullWorker;

export default JobQueue;
