/**
 * Per-peer "last acknowledged frame" tracker.
 *
 * The replicator sends actions for frames `[Baseline.last_acked(peer) + 1, current]`
 * to each peer. When the peer's ack arrives (via the {@link Channel}), it
 * advances the baseline.
 *
 * Frame numbers are absolute uint32. At 60 Hz, 2^32 frames = 2.27 years —
 * we can ignore wraparound for practical sessions and use plain `>` comparison.
 *
 * @author Alex Goldring
 * @copyright Company Named Limited (c) 2025
 */
export class Baseline {
    /**
     * Record that `peer_id` has acknowledged through `frame`. Monotonic: out-of-order
     * acks (for an older frame than already recorded) are ignored.
     *
     * @param {number} peer_id
     * @param {number} frame
     */
    set_acked(peer_id: number, frame: number): void;
    /**
     * Returns the most recent acknowledged frame for `peer_id`, or -1 if none.
     *
     * @param {number} peer_id
     * @returns {number}
     */
    last_acked(peer_id: number): number;
    /**
     * Forget tracking for `peer_id` (e.g. on disconnect).
     *
     * @param {number} peer_id
     */
    forget(peer_id: number): void;
    /**
     * Number of tracked peers.
     * @returns {number}
     */
    peer_count(): number;
    /**
     * Iterate (peer_id, last_acked_frame) pairs.
     * @param {function(number, number): void} fn
     */
    for_each(fn: (arg0: number, arg1: number) => void): void;
    #private;
}
//# sourceMappingURL=Baseline.d.ts.map