///
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;
}