///
import { EventEmitter } from "events";
import { NatMap } from "../../cluster/ClusterOptions";
import { ConnectionOptions } from "tls";
import SentinelIterator from "./SentinelIterator";
import { SentinelAddress } from "./types";
import AbstractConnector, { ErrorEmitter } from "../AbstractConnector";
import { NetStream } from "../../types";
interface AddressFromResponse {
port: string;
ip: string;
flags?: string | undefined;
}
declare type PreferredSlaves = ((slaves: AddressFromResponse[]) => AddressFromResponse | null) | Array<{
port: string;
ip: string;
prio?: number | undefined;
}> | {
port: string;
ip: string;
prio?: number | undefined;
};
export { SentinelAddress, SentinelIterator };
export interface SentinelConnectionOptions {
/**
* Master group name of the Sentinel
*/
name?: string | undefined;
/**
* @default "master"
*/
role?: "master" | "slave" | undefined;
tls?: ConnectionOptions | undefined;
sentinelUsername?: string | undefined;
sentinelPassword?: string | undefined;
sentinels?: Array> | undefined;
sentinelRetryStrategy?: ((retryAttempts: number) => number | void | null) | undefined;
sentinelReconnectStrategy?: ((retryAttempts: number) => number | void | null) | undefined;
preferredSlaves?: PreferredSlaves | undefined;
connectTimeout?: number | undefined;
disconnectTimeout?: number | undefined;
sentinelCommandTimeout?: number | undefined;
enableTLSForSentinelMode?: boolean | undefined;
sentinelTLS?: ConnectionOptions | undefined;
natMap?: NatMap | undefined;
updateSentinels?: boolean | undefined;
/**
* @default 10
*/
sentinelMaxConnections?: number | undefined;
failoverDetector?: boolean | undefined;
}
export default class SentinelConnector extends AbstractConnector {
protected options: SentinelConnectionOptions;
emitter: EventEmitter | null;
protected sentinelIterator: SentinelIterator;
private retryAttempts;
private failoverDetector;
constructor(options: SentinelConnectionOptions);
check(info: {
role?: string;
}): boolean;
disconnect(): void;
connect(eventEmitter: ErrorEmitter): Promise;
private updateSentinels;
private resolveMaster;
private resolveSlave;
private sentinelNatResolve;
private connectToSentinel;
private resolve;
private initFailoverDetector;
}