import type { ClusterTopologyRefreshOnReconnectionAttemptStrategy } from './index';
/**
 * Tracks which cluster node clients are currently reconnecting and decides when
 * to trigger a cluster topology refresh based on a configurable strategy.
 *
 * The strategy can be:
 * - `undefined` - uses the default delay (5 seconds)
 * - `false` or `0` - disables topology refresh on reconnection
 * - a positive integer - delay in ms after the first reconnection attempt before refreshing
 * - a function - custom logic receiving the timestamp of the first reconnection attempt,
 *   returning a delay or `false`/`undefined` to skip
 *
 * After the delay elapses, {@link onReconnectionAttempt} returns `true` once to signal
 * that a refresh should be scheduled, then resets the timer.
 */
export default class ClusterReconnectionTracker {
    #private;
    constructor(strategy?: ClusterTopologyRefreshOnReconnectionAttemptStrategy);
    get reconnectingAddresses(): Set<string>;
    get firstReconnectionAt(): number | undefined;
    /**
     * Records a reconnection attempt for the given client and evaluates whether
     * the configured delay has elapsed since the first attempt in this cycle.
     *
     * @returns `true` if a topology refresh should be triggered, `false` otherwise
     * @throws If a user-supplied strategy function returns an invalid value
     */
    onReconnectionAttempt(clientId: string, address: string, now?: number): boolean;
    /** Removes a client from tracking (e.g. when it reconnects successfully or disconnects) */
    removeClient(clientId: string): void;
    /** Resets all tracking state (e.g. on cluster disconnect or destroy) */
    clear(): void;
}
//# sourceMappingURL=cluster-reconnection-tracker.d.ts.map