/**
 * @file Consistent Hashing Tool
 * @desc 用于节点选择时注意保持不同端逻辑的一致
 */
export type Hasher = (key: string) => number;
export type MemberWithReplicas = {
    /** 标识 */
    key: string;
    /** 虚拟节点数 */
    replicas: number;
};
export default class ConsistentHash {
    /** Calculate hash for given key */
    private hasher;
    /** Map: hash -> member */
    private circle;
    /** All member (key)s */
    private members;
    /** Map: member (key) -> replicas */
    private membersReplicas;
    /** Sorted hashes, small to big */
    private sortedHashes;
    constructor(
    /** Calculate hash for given key */
    hasher?: Hasher);
    private updateSortedHashes;
    private _add;
    private _remove;
    /** Search in sortedHashes for the nearest hash of given hash value, returns its index */
    private search;
    /** Get a member for given key. Returns null if no member exists. */
    get(key: string): string | null;
    /** Get N members for given key. Notice: availableMembers must be a subset of members; there may not be enough members. */
    getN(key: string, n: number, availableMembers?: Set<string>): string[];
    /**
     * Add a member.
     * - return `true` if added
     * - return `false` if already exists
     */
    add(key: string, replicas: number): boolean;
    /**
     * Remove given member.
     * - return `true` if removed
     * - return `false` if not exist
     */
    remove(key: string): boolean;
    /** Sets all members */
    set(members: MemberWithReplicas[]): void;
}
/** Murmur3Hash 32bit */
export declare function murmur3Hash32(key: string): number;
