import { type CallbackWithPromise } from '../apis/callbacks.ts'; import { TypedEventEmitter, type TypedEvents } from '../events.ts'; import { Connection, type Broker, type ConnectionOptions } from './connection.ts'; export interface ConnectionPoolEventPayload { broker: Broker; connection: Connection; } export interface ConnectionPoolEvents extends TypedEvents { connecting: (payload: ConnectionPoolEventPayload) => void; failed: (payload: ConnectionPoolEventPayload) => void; connect: (payload: ConnectionPoolEventPayload) => void; 'sasl:handshake': (payload: ConnectionPoolEventPayload & { mechanisms: string[]; }) => void; 'sasl:authentication': (payload: ConnectionPoolEventPayload & { authentication?: Buffer; }) => void; 'sasl:authentication:extended': (payload: ConnectionPoolEventPayload & { authentication?: Buffer; }) => void; disconnect: (payload: ConnectionPoolEventPayload) => void; drain: (payload: ConnectionPoolEventPayload) => void; } export declare class ConnectionPool extends TypedEventEmitter { #private; constructor(clientId: string, connectionOptions?: ConnectionOptions); get instanceId(): number; get ownerId(): number | undefined; get context(): unknown; get(broker: Broker, callback: CallbackWithPromise): void; get(broker: Broker): Promise; getFirstAvailable(brokers: Broker[], callback: CallbackWithPromise): void; getFirstAvailable(brokers: Broker[]): Promise; close(callback: CallbackWithPromise): void; close(): Promise; isActive(): boolean; isConnected(): boolean; }