import { Collection, OptionalUnlessRequiredId } from 'mongodb'; import { BatchPublisher, BatchPublisherEvents, BatchPublisherOptions } from './BatchPublisher'; import { Consumer, ConsumerCallback, ConsumerEvents, ConsumerOptions } from './Consumer'; import { Publisher, PublisherOptions } from './Publisher'; import { Subscriber, SubscriberEvents, SubscriberOptions } from './Subscriber'; import { SubscriptionCallback, SubscriptionOptions } from './Subscription'; import { TypedEventEmitter } from './TypedEventEmitter'; import { WithOptionalObjectId } from './WithOptionalObjectId'; export interface MessageQueueOptions extends PublisherOptions, BatchPublisherOptions, SubscriberOptions, ConsumerOptions { } export interface MessageQueueEvents extends BatchPublisherEvents, SubscriberEvents, ConsumerEvents { } export declare class MessageQueue extends TypedEventEmitter> { readonly collection: Collection; protected options: MessageQueueOptions; protected publisher: Publisher; protected batchPublisher: BatchPublisher; protected subscriber: Subscriber; protected consumers: Consumer[]; constructor(collection: Collection, options?: MessageQueueOptions); publish(message: OptionalUnlessRequiredId): Promise | null>; publishBatched(message: OptionalUnlessRequiredId): void; subscribe(callback: SubscriptionCallback, options?: SubscriptionOptions): import("./Subscription").Subscription; consume(callback: ConsumerCallback, options?: ConsumerOptions): Consumer; drain(timeoutMs?: number): Promise; close(): Promise; }