/** How a simulator chooses which units fall inside a burst. */
export declare enum BurstMode {
    None = "none",
    Random = "random",
    Fixed = "fixed"
}
/** Shared config shape for both impairments (drop and hold). */
export interface BurstConfig {
    mode: BurstMode | string;
    interval: number;
    burst: number;
}
export declare function burstConfigIsActive(cfg: BurstConfig | null | undefined): boolean;
/** Config alias kept for readability at drop call sites. */
export type WireDropConfig = BurstConfig;
export declare const wireDropConfigIsActive: typeof burstConfigIsActive;
export { BurstMode as WireDropMode };
export declare class WireDropSimulator {
    private readonly scheduler;
    constructor(cfg: WireDropConfig);
    shouldDrop(): boolean;
}
/** Config alias kept for readability at hold call sites. */
export type WireHoldConfig = BurstConfig;
export declare const wireHoldConfigIsActive: typeof burstConfigIsActive;
/**
 * Simulates network slowness by HOLDING bursts of consecutive units in a buffer
 * and releasing them together once the buffer is full, producing a
 * stall-then-clump pattern that stresses A/V sync and the receiver jitter
 * buffer. Units outside a burst pass straight through (the buffer is empty
 * between bursts by construction). Generic over the unit type so it stays media-
 * and transport-agnostic.
 */
export declare class WireHoldSimulator<T> {
    private readonly scheduler;
    private buffer;
    constructor(cfg: WireHoldConfig);
    offer(item: T): T[];
    flush(): T[];
}
//# sourceMappingURL=network_simulator.d.ts.map