/// import { INatMap } from "../../cluster/ClusterOptions"; import { SecureContextOptions } from "tls"; import { ITcpConnectionOptions } from "../StandaloneConnector"; import SentinelIterator from "./SentinelIterator"; import { ISentinelAddress } from "./types"; import AbstractConnector, { ErrorEmitter } from "../AbstractConnector"; import { NetStream } from "../../types"; interface IAddressFromResponse { port: string; ip: string; flags?: string; } declare type PreferredSlaves = ((slaves: IAddressFromResponse[]) => IAddressFromResponse | null) | Array<{ port: string; ip: string; prio?: number; }> | { port: string; ip: string; prio?: number; }; export { ISentinelAddress, SentinelIterator }; export interface ISentinelConnectionOptions extends ITcpConnectionOptions { role: "master" | "slave"; name: string; sentinelUsername?: string; sentinelPassword?: string; sentinels: Array>; sentinelRetryStrategy?: (retryAttempts: number) => number | void | null; preferredSlaves?: PreferredSlaves; connectTimeout?: number; enableTLSForSentinelMode?: boolean; sentinelTLS?: SecureContextOptions; natMap?: INatMap; updateSentinels?: boolean; } export default class SentinelConnector extends AbstractConnector { protected options: ISentinelConnectionOptions; private retryAttempts; protected sentinelIterator: SentinelIterator; constructor(options: ISentinelConnectionOptions); check(info: { role?: string; }): boolean; connect(eventEmitter: ErrorEmitter): Promise; private updateSentinels; private resolveMaster; private resolveSlave; sentinelNatResolve(item: ISentinelAddress): { host: string; port: number; }; private resolve; }