/// <reference types="node" />
/// <reference types="node" />
import { Transform, TransformCallback } from 'stream';
export declare class ThrottlingLog {
    ms: number;
    bytes: number;
}
export declare class Throttle {
    flushIntervalMs: number;
    limitBytes: number;
    currentBytes: number;
    interval?: ReturnType<typeof setInterval>;
    logs: ThrottlingLog[];
    constructor(limitBytes: number, flushIntervalMs?: number);
    static fromMbps(mbps: number, flushIntervalMs?: number): Throttle;
    computeCapacity(): {
        consumed: number;
        carryover: number;
    };
    start(): void;
    stop(): void;
    checkAndStack(bytes: number): boolean;
    simpleReport(unitMs?: number): {
        maxBytesPerUnit: number;
        avgBytesPerUnit: number;
    };
}
export declare class ThrottlingTransform extends Transform {
    throttle: Throttle;
    retryIntervalMs: number;
    constructor(throttle: Throttle, retryIntervalMs: number);
    _transform(chunk: string | Buffer, _: string, done: TransformCallback): void;
}
