export interface PoolLinkJtiStoreDeps {
    /** Absolute path to the persistence file. */
    filePath: string;
    now: () => number;
    /**
     * How long a recorded jti is retained for replay rejection (ms). MUST be ≥ the
     * assertion TTL so a captured assertion can never outlive its retention. Default 1h.
     */
    retentionMs?: number;
    /**
     * Hard ceiling on the number of recorded jtis. A registered-but-misbehaving
     * peer could otherwise mint many distinct-jti assertions and grow this store
     * unboundedly (memory + disk DoS). At the cap, the oldest-expiry records are
     * evicted to make room (they are the closest to GC anyway) and a loss counter
     * is bumped. Default 100_000. (P19 — bounded by construction.)
     */
    maxEntries?: number;
    logger?: (line: string) => void;
}
export declare class PoolLinkJtiStore {
    private readonly d;
    private jtis;
    private loaded;
    /** Count of records evicted to stay under maxEntries — observability. */
    private droppedForCap;
    constructor(d: PoolLinkJtiStoreDeps);
    private retention;
    private maxEntries;
    private ensureLoaded;
    /** Has this jti already been seen (replay)? Read-only; does not record. */
    seen(jti: string): boolean;
    /**
     * Record a jti as consumed, bound to the assertion's expiry. Idempotent: a
     * second record of the same jti is a no-op (the first already blocks replay).
     * Persists BEFORE returning so a crash mid-record cannot yield a second accept.
     */
    record(jti: string, assertionExpMs: number): void;
    /** Evict oldest-expiry records until below the cap (leaving room for one insert). */
    private enforceCap;
    /** Count of currently-recorded jtis — tests/observability. */
    size(): number;
    /** Count of records evicted to stay under the size cap — tests/observability. */
    droppedForCapCount(): number;
    /** Drop records whose expiry is older than the retention window. */
    private gc;
    private persist;
}
//# sourceMappingURL=PoolLinkJtiStore.d.ts.map