import { type RabbitmqExchange } from './rabbitmq-exchange'; export type RabbitmqQueueArguments = { /** Per-Queue Message TTL https://www.rabbitmq.com/ttl.html#per-queue-message-ttl */ 'x-message-ttl'?: number; /** Queue Expiry https://www.rabbitmq.com/ttl.html#queue-ttl */ 'x-expires'?: number; /** https://www.rabbitmq.com/maxlength.html */ 'x-max-length'?: number; /** https://www.rabbitmq.com/maxlength.html */ 'x-overflow'?: 'drop-head' | 'reject-publish' | 'reject-publish-dlx'; /** https://www.rabbitmq.com/priority.html */ 'x-max-priority'?: number; /** https://www.rabbitmq.com/quorum-queues.html * https://www.rabbitmq.com/streams.html */ 'x-queue-type'?: 'quorum' | 'classic' | 'stream'; [k: string]: any; }; export type RabbitmqQueueBinding = { exchange: RabbitmqExchange; routingKeys?: string[]; }; export type RabbitmqQueueDeclaration = { name: string; deadLetterExchange?: RabbitmqExchange | null; deadLetterRoutingKey?: string | null; arguments?: RabbitmqQueueArguments; durable?: boolean; autoDelete?: boolean; exclusive?: boolean; bindings?: RabbitmqQueueBinding[]; }; export declare class RabbitmqQueue { readonly _$type: 'queue'; readonly name: string; readonly arguments: RabbitmqQueueArguments; readonly durable: boolean; readonly autoDelete: boolean; readonly exclusive: boolean; /** https://www.rabbitmq.com/dlx.html */ readonly deadLetterExchange: RabbitmqExchange | null; /** https://www.rabbitmq.com/dlx.html */ readonly deadLetterRoutingKey: string | null; private readonly _bindings; get bindings(): Required[]; /** * @param {RabbitmqQueueDeclaration} declaration */ constructor(declaration: RabbitmqQueueDeclaration); }