/// <reference types="node" />
import { EventEmitter } from 'events';
import Pool, { type PoolOptions } from './pool';
declare const HashRing: any;
export type HashPoolOptions = {
    retry: (retries: number) => number;
    pingInterval: number;
} & PoolOptions;
type PoolNode = {
    pool: Pool;
    reconnecting: boolean;
};
export default class HashPool extends EventEmitter {
    hashring: typeof HashRing;
    nodes: Map<string, PoolNode>;
    isReady: boolean;
    retries: number;
    opts: HashPoolOptions;
    constructor(nodes: Array<string>, opts?: any);
    connect(node: string): void;
    reconnect(node: string): void;
    disconnect(node: string, reconnect?: boolean): void;
    ready(): Promise<true | void>;
    getHost(key: string): Promise<Pool>;
    flush(): Promise<void>;
    set(key: string, value: string | number, ttl?: number): Promise<boolean>;
    add(key: string, value: string | number, ttl?: number): Promise<boolean>;
    get(key: string): Promise<string | false>;
    del(key: string): Promise<boolean>;
    incr(key: string, value?: number): Promise<number | false>;
    decr(key: string, value?: number): Promise<number | false>;
    ping(): Promise<boolean>;
    end(): Promise<void>;
}
export {};
