import { RNG } from "../utils";
export interface GarbageQueueInitializeParams {
    cap: {
        value: number;
        marginTime: number;
        increase: number;
        absolute: number;
        max: number;
    };
    messiness: {
        change: number;
        within: number;
        nosame: boolean;
        timeout: number;
        center: boolean;
    };
    garbage: {
        speed: number;
        holeSize: number;
    };
    multiplier: {
        value: number;
        increase: number;
        marginTime: number;
    };
    bombs: boolean;
    seed: number;
    boardWidth: number;
    rounding: "down" | "rng";
    openerPhase: number;
    specialBonus: boolean;
}
export interface Garbage {
    frame: number;
    amount: number;
    size: number;
}
export interface IncomingGarbage extends Garbage {
    cid: number;
    gameid: number;
    confirmed: boolean;
}
export interface OutgoingGarbage extends Garbage {
    id: number;
    column: number;
}
export interface GarbageQueueSnapshot {
    seed: number;
    lastTankTime: number;
    lastColumn: number | null;
    sent: number;
    hasChangedColumn: boolean;
    lastReceivedCount: number;
    queue: IncomingGarbage[];
}
export declare class GarbageQueue {
    #private;
    options: GarbageQueueInitializeParams;
    queue: IncomingGarbage[];
    lastTankTime: number;
    lastColumn: number | null;
    hasChangedColumn: boolean;
    lastReceivedCount: number;
    rng: RNG;
    sent: number;
    constructor(options: GarbageQueueInitializeParams);
    snapshot(): GarbageQueueSnapshot;
    fromSnapshot(snapshot: GarbageQueueSnapshot): void;
    rngex(): number;
    get size(): number;
    resetReceivedCount(): void;
    receive(...args: IncomingGarbage[]): void;
    confirm(cid: number, gameid: number, frame: number): boolean;
    cancel(amount: number, pieceCount: number, legacy?: {
        openerPhase?: boolean;
    }): readonly [number, IncomingGarbage[]];
    tank(frame: number, cap: number, hard: boolean): OutgoingGarbage[];
    round(amount: number): number;
}
export * from "./legacy";
