import { EventBase } from "./event-base"; import { BackoffOptions } from "./types"; import { ConsumerMetrics, ConsumerOptions, GracefulShutdownOptions, SeekTarget } from "./consumer"; export interface EventBus { connect(...args: unknown[]): Promise; disconnect(): Promise; checkHealth(): Promise; publish(event: EventIdType, eventData: EventBase, ...args: unknown[]): Promise; subscribe(event: EventIdType, handler: (data: EventBase) => void): Promise; unsubscribe(subscriptionId: string): Promise; acknowledge?(messageId: string): Promise; reject?(messageId: string, requeue?: boolean): Promise; setRetryPolicy?(retries: number, delay: number, backoff?: BackoffOptions): void; subscribeToPattern?(pattern: string, handler: (eventId: EventIdType, event: EventBase) => void): Promise; subscribeBatch?(event: EventIdType, handler: (events: EventBase[]) => void): Promise; consume?(event: EventIdType, options: ConsumerOptions): Promise; seek?(target: SeekTarget, event?: EventIdType): Promise; pause?(events?: EventIdType[]): void; resume?(events?: EventIdType[]): void; getMetrics?(): Promise; gracefulShutdown?(options?: GracefulShutdownOptions): Promise; }