///
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;
}