/// import { Queue } from "bullmq"; import { Logger } from "winston"; import { ClusterNode, ClusterOptions, RedisOptions } from "ioredis"; import { Registry } from "prom-client"; import { onJobHandler, RelayJob, Storage } from "./storage.js"; import Koa from "koa"; export interface RedisConnectionOpts { redisClusterEndpoints?: ClusterNode[]; redisCluster?: ClusterOptions; redis?: RedisOptions; namespace?: string; } export interface ExponentialBackoffOpts { baseDelayMs: number; maxDelayMs: number; backOffFn?: (attemptsMade: number) => number; } export interface StorageOptions extends RedisConnectionOpts { queueName: string; attempts: number; concurrency?: number; exponentialBackoff?: ExponentialBackoffOpts; maxCompletedQueueSize?: number; maxFailedQueueSize?: number; } export type JobData = { parsedVaa: any; vaaBytes: string; }; export declare class RedisStorage implements Storage { logger?: Logger; vaaQueue: Queue; registry: Registry; workerId?: string; private worker?; private readonly prefix; private readonly redis; private metrics; private opts; constructor(opts: StorageOptions); getPrefix(): string; addVaaToQueue(vaaBytes: Buffer): Promise; startWorker(handleJob: onJobHandler): void; stopWorker(): Promise; spawnGaugeUpdateWorker(ms?: number): Promise; storageKoaUI(path: string): Koa.Middleware; private vaaId; private updateGauges; }