import BigNumber from 'bignumber.js';
export declare type address = string;
export declare type BigNumberable = BigNumber | number | string;
export declare enum OrderType {
    Test = "TEST",
    ZeroExV2 = "ZERO_EX_V2",
    ZeroExV2MultiOrder = "ZERO_EX_V2_MULTI_ORDER",
    OasisV1 = "OASIS_V1",
    OasisV2 = "OASIS_V2",
    OasisV3 = "OASIS_V3",
    OasisV3Market = "OASIS_V3_MARKET",
    OpenDirectly = "OPEN_DIRECTLY",
    SaiDai = "SAI_DAI",
    Curve = "CURVE"
}
export interface Order {
    type: OrderType;
    exchangeWrapperAddress?: string;
}
export interface TestOrder extends Order {
    originator: string;
    makerToken: string;
    takerToken: string;
    makerAmount: BigNumber;
    takerAmount: BigNumber;
    allegedTakerAmount: BigNumber;
    desiredMakerAmount: BigNumber;
}
interface ZeroExV2OrderBase {
    exchangeAddress: string;
    expirationTimeSeconds: BigNumber;
    feeRecipientAddress: string;
    makerAddress: string;
    makerAssetAmount: BigNumber;
    makerAssetData: string;
    makerFee: BigNumber;
    salt: BigNumber;
    senderAddress: string;
    signature: string;
    takerAddress: string;
    takerAssetAmount: BigNumber;
    takerAssetData: string;
    takerFee: BigNumber;
}
export interface ZeroExV2Order extends Order, ZeroExV2OrderBase {
}
export interface ZeroExV2MultiOrder extends Order {
    maxPrice?: string | BigNumber;
    orders: ZeroExV2OrderBase[];
}
export interface OasisV1Order extends Order {
    id: string | BigNumber;
}
export interface OasisV2Order extends Order {
    id: string | BigNumber;
}
export interface OasisV3Order extends Order {
    id: string | BigNumber;
}
export interface OasisV3MarketOrder extends Order {
    maxPrice?: string | BigNumber;
}
export interface OpenDirectlyOrder extends Order {
}
export interface SaiDaiOrder extends Order {
}
export interface CurveOrder extends Order {
    minToAmount: BigNumberable;
    trades: {
        curveAddress: address;
        fromId: BigNumberable;
        toId: BigNumberable;
        fromAmount: BigNumberable;
        exchangeUnderlying: boolean;
    }[];
}
export {};
