import type BigNumber from "bignumber.js";
import type { StopQueue } from "./stopqueue";
import { type IStopOrder, Side, type StopOrder } from "./types";
export declare class StopBook {
    private readonly bids;
    private readonly asks;
    constructor();
    add: (order: StopOrder) => void;
    remove: (side: Side, id: string, stopPrice: BigNumber) => StopOrder | undefined;
    removePriceLevel: (side: Side, priceLevel: BigNumber) => void;
    getConditionalOrders: (side: Side, priceBefore: BigNumber, marketPrice: BigNumber) => StopQueue[];
    /**
     * Stop-Limit Order:
     *    Buy: marketPrice < stopPrice <= price
     *    Sell: marketPrice > stopPrice >= price
     * Stop-Market Order:
     *    Buy: marketPrice < stopPrice
     *    Sell: marketPrice > stopPrice
     */
    validConditionalOrder: (marketPrice: BigNumber, order: StopOrder) => boolean;
    snapshot: () => {
        bids: {
            price: BigNumber;
            orders: IStopOrder[];
        }[];
        asks: {
            price: BigNumber;
            orders: IStopOrder[];
        }[];
    };
}
