{"version":3,"sources":["../src/modules/restful/convert/types.ts","../src/modules/restful/dualInvestment/types.ts","../src/modules/restful/margin/types.ts","../src/modules/restful/market/types.ts","../src/modules/restful/portfolioMargin/types.ts","../src/modules/restful/simpleEarn/types.ts","../src/modules/restful/stream/types.ts","../src/modules/restful/subAccount/types.ts","../src/modules/restful/trade/types.ts","../src/modules/restful/wallet/types.ts","../src/modules/websocket/websocketAPI/account/types.ts","../src/modules/websocket/websocketAPI/market/types.ts","../src/modules/websocket/websocketAPI/trade/types.ts","../src/modules/websocket/websocketAPI/userData/methods.ts","../src/modules/websocket/websocketStream/methods.ts","../src/helpers/utils.ts","../package.json","../src/helpers/constants.ts","../src/setters/mixinBase.ts","../src/modules/restful/convert/convert.ts","../src/modules/restful/dualInvestment/dualInvestment.ts","../src/modules/restful/margin/margin.ts","../src/modules/restful/market/market.ts","../src/modules/restful/portfolioMargin/portfolioMargin.ts","../src/modules/restful/simpleEarn/simpleEarn.ts","../src/modules/restful/stream/stream.ts","../src/modules/restful/subAccount/subAccount.ts","../src/modules/restful/trade/trade.ts","../src/modules/restful/wallet/wallet.ts","../src/modules/websocket/websocketAPI/account/account.ts","../src/modules/websocket/websocketAPI/market/market.ts","../src/modules/websocket/websocketAPI/trade/trade.ts","../src/modules/websocket/websocketAPI/userData/userData.ts","../src/modules/websocket/websocketBase/websocketBase.ts","../src/modules/websocket/websocketStream/stream.ts","../src/modules/enum.ts","../src/helpers/logger.ts","../src/spot.ts","../src/websocketAPI.ts","../src/websocketStream.ts"],"sourcesContent":["import { ConvertOrderStatus, ValidTime, WalletType } from '../../enum';\n\nexport interface listAllConvertPairsOptions {\n    fromAsset?: string;\n    toAsset?: string;\n    recvWindow?: number;\n}\n\nexport interface listAllConvertPairsResponse {\n    fromAsset: string;\n    toAsset: string;\n    fromAssetMinAmount: string;\n    fromAssetMaxAmount: string;\n    toAssetMinAmount: string;\n    toAssetMaxAmount: string;\n}\n\nexport interface getOrderQuantityPrecisionPerAssetOptions {\n    recvWindow?: number;\n}\n\nexport interface getOrderQuantityPrecisionPerAssetResponse {\n    asset: string;\n    fraction: number;\n}\n\nexport interface sendQuoteRequestOptions {\n    fromAmount?: number;\n    toAmount?: number;\n    walletType?: WalletType;\n    validTime?: ValidTime;\n    recvWindow?: number;\n}\n\nexport interface sendQuoteRequestResponse {\n    quoteId: string;\n    ratio: string;\n    inverseRatio: string;\n    validTimestamp: number;\n    toAmount: string;\n    fromAmount: string;\n}\n\nexport interface acceptQuoteOptions {\n    recvWindow?: number;\n}\n\nexport interface acceptQuoteResponse {\n    orderId: string;\n    createTime: number;\n    orderStatus: ConvertOrderStatus;\n}\n\nexport interface orderStatusOptions {\n    orderId?: string;\n    quoteId?: string;\n    recvWindow?: number;\n}\n\nexport interface orderStatusResponse {\n    orderId: bigint;\n    orderStatus: ConvertOrderStatus;\n    fromAsset: string;\n    fromAmount: string;\n    toAsset: string;\n    toAmount: string;\n    ratio: string;\n    inverseRatio: string;\n    createTime: number;\n}\n\nexport interface getConvertTradeHistoryOptions {\n    limit?: number;\n    recvWindow?: number;\n}\n\nexport interface getConvertTradeHistoryResponse {\n    list: getConvertTradeHistoryList[];\n    startTime: number;\n    endTime: number;\n    limit: number;\n    moreData: boolean;\n}\n\nexport interface getConvertTradeHistoryList {\n    quoteId: string;\n    orderId: bigint;\n    orderStatus: string;\n    fromAsset: string;\n    fromAmount: string;\n    toAsset: string;\n    toAmount: string;\n    ratio: string;\n    inverseRatio: string;\n    createTime: number;\n}\n\nexport interface queryLimitOpenOrdersOptions {\n    recvWindow?: number;\n}\n\nexport interface queryLimitOpenOrdersResponse {\n    list: queryLimitOpenOrdersList[];\n}\n\nexport interface queryLimitOpenOrdersList {\n    quoteId: string;\n    orderId: number;\n    orderStatus: ConvertOrderStatus;\n    fromAsset: string;\n    fromAmount: string;\n    toAsset: string;\n    toAmount: string;\n    ratio: string;\n    inverseRatio: string;\n    createTime: number;\n    expiredTimestamp: number;\n}\n\nexport interface placeLimitOrderOptions {\n    baseAmount?: number;\n    quoteAmount?: number;\n    walletType?: WalletType;\n    recvWindow?: number;\n}\n\nexport interface placeLimitOrderResponse {\n    orderId: number;\n    status: string;\n}\n\nexport interface cancelLimitOrderOptions {\n    recvWindow?: number;\n}\n\nexport interface cancelLimitOrderResponse {\n    orderId: number;\n    status: string;\n}\n","import { OptionType, AutoCompoundPlan, DualInvestmentPurchaseStatus } from '../../enum';\nexport interface DualInvestmentMethods {\n    getDualInvestmentProductList(optionType: OptionType, exercisedCoin: string, investCoin: string, options?: getDualInvestmentProductListOptions): Promise<getDualInvestmentProductListResponse>;\n    subscribeDualInvestmentProducts(id: string, orderId: string, depositAmount: number, autoCompoundPlan: AutoCompoundPlan, options?: subscribeDualInvestmentProductsOptions): Promise<subscribeDualInvestmentProductsResponse>;\n    getDualInvestmentPositions(options?: getDualInvestmentPositionsOptions): Promise<getDualInvestmentPositionsResponse>;\n    checkDualInvestmentAccounts(options?: checkDualInvestmentAccountsOptions): Promise<checkDualInvestmentAccountsResponse>;\n    changeAutoCompoundStatus(positionId: number, autoCompoundPlan: AutoCompoundPlan, options?: changeAutoCompoundStatusOptions): Promise<changeAutoCompoundStatusResponse>;\n}\n\nexport interface getDualInvestmentProductListOptions {\n    pageSize?: number;\n    pageIndex?: number;\n    recvWindow?: number;\n}\n\nexport interface getDualInvestmentProductListResponse {\n    total: number;\n    list: getDualInvestmentProductListList[];\n}\n\ninterface getDualInvestmentProductListList {\n    id: string;\n    investCoin: string;\n    exercisedCoin: string;\n    strikePrice: string;\n    duration: number;\n    settleDate: number;\n    purchaseDecimal: number;\n    purchaseEndTime: number;\n    canPurchase: boolean;\n    apr: string;\n    orderId: number;\n    minAmount: string;\n    maxAmount: string;\n    createTimestamp: number;\n    optionType: OptionType;\n    isAutoCompoundEnable: boolean;\n    autoCompoundPlanList: AutoCompoundPlan[];\n}\n\nexport interface subscribeDualInvestmentProductsOptions {\n    recvWindow?: number;\n}\n\nexport interface subscribeDualInvestmentProductsResponse {\n    positionId: number;\n    investCoin: string;\n    exercisedCoin: string;\n    subscriptionAmount: string;\n    duration: number;\n    autoCompoundPlan: AutoCompoundPlan;\n    strikePrice: string;\n    settleDate: number;\n    purchaseStatus: DualInvestmentPurchaseStatus;\n    apr: string;\n    orderId: number;\n    purchaseTime: number;\n    optionType: OptionType;\n}\n\nexport interface getDualInvestmentPositionsOptions {\n    status?: DualInvestmentPurchaseStatus;\n    pageSize?: number;\n    pageIndex?: number;\n    recvWindow?: number;\n}\n\nexport interface getDualInvestmentPositionsResponse {\n    total: number;\n    list: getDualInvestmentPositionsList[];\n}\n\ninterface getDualInvestmentPositionsList {\n    id: string;\n    investCoin: string;\n    exercisedCoin: string;\n    subscriptionAmount: string;\n    strikePrice: string;\n    duration: number;\n    settleDate: number;\n    purchaseStatus: DualInvestmentPurchaseStatus;\n    apr: string;\n    orderId: number;\n    purchaseEndTime: number;\n    optionType: OptionType;\n    autoCompoundPlan: AutoCompoundPlan;\n}\n\nexport interface checkDualInvestmentAccountsOptions {\n    recvWindow?: number;\n}\n\nexport interface checkDualInvestmentAccountsResponse {\n    totalAmountInBTC: string;\n    totalAmountInUSDT: string;\n}\n\nexport interface changeAutoCompoundStatusOptions {\n    recvWindow?: number;\n}\n\nexport interface changeAutoCompoundStatusResponse {\n    positionId: string;\n    autoCompoundPlan: AutoCompoundPlan;\n}\n","import {\n    OrderType,\n    OrderStatus,\n    OrderListOrderStatus,\n    MarginArchive,\n    OrderListStatusType,\n    IsIsolatedMargin,\n    Side,\n    NewOrderRespType,\n    SideEffectType,\n    TimeInForce,\n    StopLimitTimeInForce,\n    SpotBNBBurn,\n    InterestBNBBurn,\n    GetCrossMargingTransferHistoryType,\n    SelfTradePreventionMode,\n    MarginStatus,\n    MarginInterestHistory,\n    MarginLevelStatus,\n    CrossMarginAccountType,\n    CrossMarginTrans,\n    OrderListAboveBelowType\n} from '../../enum';\n\nexport interface getAllMarginAssetsOptions {\n    asset?: string;\n}\n\nexport interface getAllMarginAssetsResponse {\n    assetFullName: string;\n    assetName: string;\n    isBorrowable: boolean;\n    isMortgageable: boolean;\n    userMinBorrow: string;\n    userMinRepay: string;\n    delistTime: number;\n}\n\nexport interface getAllCrossMarginPairsOptions {\n    symbol?: string;\n}\n\nexport interface getAllCrossMarginPairsResponse {\n    base: string;\n    id: bigint;\n    isBuyAllowed: boolean;\n    isMarginTrade: boolean;\n    isSellAllowed: boolean;\n    quote: string;\n    symbol: string;\n    delistTime?: number;\n}\n\nexport interface getMarginPriceIndexResponse {\n    calcTime: number;\n    price: string;\n    symbol: string;\n}\n\nexport interface marginAccountNewOrderOptions {\n    isIsolated?: IsIsolatedMargin;\n    quantity?: number;\n    quoteOrderQty?: number;\n    price?: number;\n    stopPrice?: number;\n    newClientOrderId?: string;\n    icebergQty?: number;\n    newOrderRespType?: NewOrderRespType;\n    sideEffectType?: SideEffectType;\n    timeInForce?: TimeInForce;\n    selfTradePreventionMode?: SelfTradePreventionMode;\n    autoRepayAtCancel?: boolean;\n    recvWindow?: number;\n}\n\nexport interface marginAccountNewOrderResponse {\n    symbol: string;\n    orderId: number;\n    clientOrderId: string;\n    isIsolated: boolean;\n    transactTime: number;\n    price?: string;\n    origQty?: string;\n    executedQty?: string;\n    cummulativeQuoteQty?: string;\n    status?: OrderStatus;\n    timeInForce?: TimeInForce;\n    type?: OrderType;\n    side?: Side;\n    selfTradePreventionMode?: SelfTradePreventionMode;\n    fills?: marginAccountNewOrderFills[];\n}\n\nexport interface marginAccountNewOrderFills {\n    price: string;\n    qty: string;\n    commission: string;\n    commissionAsset: string;\n}\n\nexport interface marginAccountCancelOrderOptions {\n    isIsolated?: IsIsolatedMargin;\n    orderId?: number;\n    origClientOrderId?: string;\n    newClientOrderId?: string;\n    recvWindow?: number;\n}\n\nexport interface marginAccountCancelOrderResponse {\n    symbol: string;\n    isIsolated: boolean;\n    orderId: number;\n    origClientOrderId: string;\n    clientOrderId: string;\n    price: string;\n    origQty: string;\n    executedQty: string;\n    cummulativeQuoteQty: string;\n    status: OrderStatus;\n    timeInForce: TimeInForce;\n    type: OrderType;\n    side: Side;\n}\n\nexport interface marginAccountCancelAllOpenOrdersOnASymbolOptions {\n    isIsolated?: IsIsolatedMargin;\n    recvWindow?: number;\n}\n\nexport interface marginAccountCancelAllOpenOrdersOnASymbolResponse {\n    symbol: string;\n    isIsolated: boolean;\n    origClientOrderId: string;\n    orderId: number;\n    orderListId: number;\n    clientOrderId: string;\n    price: string;\n    origQty: string;\n    executedQty: string;\n    cummulativeQuoteQty: string;\n    status: OrderStatus;\n    timeInForce: TimeInForce;\n    type: OrderType;\n    side: Side;\n    selfTradePreventionMode: SelfTradePreventionMode;\n}\n\nexport interface adjustCrossMarginMaxLeverageResponse {\n    success: boolean;\n}\n\nexport interface getCrossMarginTransferHistoryOptions {\n    asset?: string;\n    type?: GetCrossMargingTransferHistoryType;\n    startTime?: number;\n    endTime?: number;\n    current?: number;\n    size?: number;\n    isolatedSymbol?: string;\n    archived?: MarginArchive;\n    recvWindow?: number;\n}\n\nexport interface getCrossMarginTransferHistoryResponse {\n    rows: getCrossMarginTransferHistoryRows[];\n    total: number;\n}\n\nexport interface getCrossMarginTransferHistoryRows {\n    amount: string;\n    asset: string;\n    status: MarginStatus;\n    timestamp: number;\n    txId: number;\n    type: GetCrossMargingTransferHistoryType;\n    transFrom?: CrossMarginTrans;\n    transTo?: CrossMarginTrans;\n    fromSymbol?: string;\n    toSymbol?: string;\n}\n\n\nexport interface getInterestHistoryOptions {\n    asset?: string;\n    isolatedSymbol?: string;\n    startTime?: number;\n    endTime?: number;\n    current?: number;\n    size?: number;\n    archived?: MarginArchive;\n    recvWindow?: number;\n}\n\nexport interface getInterestHistoryResponse {\n    rows: getInterestHistoryRows[];\n    total: number;\n}\n\nexport interface getInterestHistoryRows {\n    txId: bigint;\n    interestAccuredTime: number;\n    asset: string;\n    rawAsset: string;\n    principal: string;\n    interest: string;\n    interestRate: string;\n    type: MarginInterestHistory,\n    isolatedSymbol: string;\n}\n\nexport interface getForceLiquidationRecordOptions {\n    startTime?: number;\n    endTime?: number;\n    isolatedSymbol?: string;\n    current?: number;\n    size?: number;\n    recvWindow?: number;\n}\n\nexport interface getForceLiquidationRecordResponse {\n    rows: getForceLiquidationRecordRows[];\n    total: number;\n}\n\nexport interface getForceLiquidationRecordRows {\n    avgPrice: string;\n    executedQty: string;\n    orderId: number;\n    price: string;\n    qty: string;\n    side: Side;\n    symbol: string;\n    timeInForce: TimeInForce;\n    isIsolated: boolean;\n    updatedTime: number;\n}\n\nexport interface getCrossMarginAccountDetailsOptions {\n    recvWindow?: number;\n}\n\nexport interface getCrossMarginAccountDetailsResponse {\n    created: boolean;\n    borrowEnabled: boolean;\n    marginLevel: string;\n    collateralMarginLevel: string;\n    totalAssetOfBtc: string;\n    totalLiabilityOfBtc: string;\n    totalNetAssetOfBtc: string;\n    TotalCollateralValueInUSDT: string;\n    tradeEnabled: boolean;\n    transferInEnabled: boolean;\n    transferOutEnabled: boolean;\n    accountType: CrossMarginAccountType;\n    userAssets: getCrossMarginAccountDetailsUserassets[];\n}\n\nexport interface getCrossMarginAccountDetailsUserassets {\n    asset: string;\n    borrowed: string;\n    free: string;\n    interest: string;\n    locked: string;\n    netAsset: string;\n}\n\nexport interface getMarginAccountOrderOptions {\n    isIsolated?: IsIsolatedMargin;\n    orderId?: number;\n    origClientOrderId?: string;\n    recvWindow?: number;\n}\n\nexport interface getMarginAccountOrderResponse {\n    clientOrderId: string;\n    cummulativeQuoteQty: string;\n    executedQty: string;\n    icebergQty: string;\n    isWorking: boolean;\n    orderId: number;\n    origQty: string;\n    price: string;\n    side: Side;\n    status: OrderStatus;\n    stopPrice: string;\n    symbol: string;\n    isIsolated: boolean;\n    time: number;\n    timeInForce: TimeInForce;\n    type: OrderType;\n    selfTradePreventionMode: SelfTradePreventionMode;\n    updateTime: number;\n}\n\nexport interface getMarginAccountOpenOrdersOptions {\n    symbol?: string;\n    isIsolated?: IsIsolatedMargin;\n    recvWindow?: number;\n}\n\nexport interface getMarginAccountOpenOrdersResponse {\n    clientOrderId: string;\n    cummulativeQuoteQty: string;\n    executedQty: string;\n    icebergQty: string;\n    isWorking: boolean;\n    orderId: number;\n    origQty: string;\n    price: string;\n    side: Side;\n    status: OrderStatus;\n    stopPrice: string;\n    symbol: string;\n    isIsolated: boolean;\n    time: number;\n    timeInForce: TimeInForce;\n    type: OrderType;\n    selfTradePreventionMode: SelfTradePreventionMode;\n    updateTime: number;\n}\n\nexport interface getMarginAccountAllOrdersOptions {\n    isIsolated?: IsIsolatedMargin;\n    orderId?: number;\n    startTime?: number;\n    endTime?: number;\n    limit?: number;\n    recvWindow?: number;\n}\n\nexport interface getMarginAccountAllOrdersResponse {\n    clientOrderId: string;\n    cummulativeQuoteQty: string;\n    executedQty: string;\n    icebergQty: string;\n    isWorking: boolean;\n    orderId: number;\n    origQty: string;\n    price: string;\n    side: Side;\n    status: OrderStatus;\n    stopPrice: string;\n    symbol: string;\n    isIsolated: boolean;\n    time: number;\n    timeInForce: TimeInForce;\n    type: OrderType;\n    selfTradePreventionMode: SelfTradePreventionMode;\n    updateTime: number;\n}\n\nexport interface marginAccountNewOcoOptions {\n    isIsolated?: IsIsolatedMargin;\n    listClientOrderId?: string;\n    limitClientOrderId?: string;\n    limitIcebergQty?: number;\n    stopClientOrderId?: string;\n    stopLimitPrice?: number;\n    stopIcebergQty?: number;\n    stopLimitTimeInForce?: StopLimitTimeInForce;\n    newOrderRespType?: NewOrderRespType;\n    sideEffectType?: SideEffectType;\n    selfTradePreventionMode?: SelfTradePreventionMode;\n    autoRepayAtCancel?: boolean;\n    recvWindow?: number;\n}\n\nexport interface marginAccountNewOcoResponse {\n    orderListId: number;\n    contingencyType: string;\n    listStatusType: string;\n    listOrderStatus: string;\n    listClientOrderId: string;\n    transactionTime: number;\n    symbol: string;\n    marginBuyBorrowAmount: string;\n    marginBuyBorrowAsset: string;\n    isIsolated: boolean;\n    orders: marginAccountNewOcoOrders[];\n    orderReports: marginAccountNewOcoOrderreports[];\n}\n\nexport interface marginAccountNewOcoOrders {\n    symbol: string;\n    orderId: number;\n    clientOrderId: string;\n}\n\nexport interface marginAccountNewOcoOrderreports {\n    symbol: string;\n    orderId: number;\n    orderListId: number;\n    clientOrderId: string;\n    transactTime: number;\n    price: string;\n    origQty: string;\n    executedQty: string;\n    cummulativeQuoteQty: string;\n    status: OrderStatus;\n    timeInForce: TimeInForce;\n    type: OrderType;\n    side: Side;\n    stopPrice: string;\n    selfTradePreventionMode: SelfTradePreventionMode;\n}\n\nexport interface marginAccountCancelOcoOptions {\n    isIsolated?: IsIsolatedMargin;\n    orderListId?: number;\n    listClientOrderId?: string;\n    newClientOrderId?: string;\n    recvWindow?: number;\n}\n\nexport interface marginAccountCancelOcoResponse {\n    orderListId: number;\n    contingencyType: string;\n    listStatusType: OrderListStatusType;\n    listOrderStatus: OrderListOrderStatus;\n    listClientOrderId: string;\n    transactionTime: number;\n    symbol: string;\n    isIsolated: boolean;\n    orders: marginAccountCancelOcoOrders[];\n    orderReports: marginAccountCancelOcoOrderReports[];\n}\n\nexport interface marginAccountCancelOcoOrders {\n    symbol: string;\n    orderId: number;\n    clientOrderId: string;\n}\n\nexport interface marginAccountCancelOcoOrderReports {\n    symbol: string;\n    origClientOrderId: string;\n    orderId: number;\n    orderListId: number;\n    clientOrderId: string;\n    price: string;\n    origQty: string;\n    executedQty: string;\n    cummulativeQuoteQty: string;\n    status: OrderStatus;\n    timeInForce: TimeInForce;\n    type: OrderType;\n    side: Side;\n    stopPrice: string;\n    selfTradePreventionMode: SelfTradePreventionMode;\n}\n\nexport interface getMarginAccountOcoOptions {\n    isIsolated?: IsIsolatedMargin;\n    symbol?: string;\n    orderListId?: number;\n    origClientOrderId?: string;\n    recvWindow?: number;\n}\n\nexport interface getMarginAccountOcoResponse {\n    orderListId: number;\n    contingencyType: string;\n    listStatusType: OrderListStatusType;\n    listOrderStatus: OrderListOrderStatus;\n    listClientOrderId: string;\n    transactionTime: number;\n    symbol: string;\n    isIsolated: boolean;\n    orders: getMarginAccountOcoOrders[];\n}\n\nexport interface getMarginAccountOcoOrders {\n    symbol: string;\n    orderId: number;\n    clientOrderId: string;\n}\n\nexport interface getMarginAccountAllOcoOptions {\n    isIsolated?: IsIsolatedMargin;\n    symbol?: string;\n    fromId?: string;\n    startTime?: number;\n    endTime?: number;\n    limit?: number;\n    recvWindow?: number;\n}\n\nexport interface getMarginAccountAllOcoResponse {\n    orderListId: number;\n    contingencyType: string;\n    listStatusType: OrderListStatusType;\n    listOrderStatus: OrderListOrderStatus;\n    listClientOrderId: string;\n    transactionTime: number;\n    symbol: string;\n    isIsolated: boolean;\n    orders: getMarginAccountAllOcoOrders[];\n}\n\nexport interface getMarginAccountAllOcoOrders {\n    symbol: string;\n    orderId: number;\n    clientOrderId: string;\n}\n\nexport interface getMarginAccountOpenOcoOptions {\n    isIsolated?: IsIsolatedMargin;\n    symbol?: string;\n    recvWindow?: number;\n}\n\nexport interface getMarginAccountOpenOcoResponse {\n    orderListId: number;\n    contingencyType: string;\n    listStatusType: OrderListStatusType;\n    listOrderStatus: OrderListOrderStatus;\n    listClientOrderId: string;\n    transactionTime: number;\n    symbol: string;\n    isIsolated: boolean;\n    orders: getMarginAccountOpenOcoOrders[];\n}\n\n\nexport interface getMarginAccountOpenOcoOrders {\n    symbol: string;\n    orderId: number;\n    clientOrderId: string;\n}\n\nexport interface getMarginAccountTradeListOptions {\n    isIsolated?: IsIsolatedMargin;\n    orderId?: number;\n    startTime?: number;\n    endTime?: number;\n    fromId?: number;\n    limit?: number;\n    recvWindow?: number;\n}\n\nexport interface getMarginAccountTradeListResponse {\n    commission: string;\n    commissionAsset: string;\n    id: number;\n    isBestMatch: boolean;\n    isBuyer: boolean;\n    isMaker: boolean;\n    orderId: number;\n    price: string;\n    qty: string;\n    symbol: string;\n    isIsolated: boolean;\n    time: number;\n}\n\nexport interface getMaxBorrowOptions {\n    isolatedSymbol?: string;\n    recvWindow?: number;\n}\n\nexport interface getMaxBorrowResponse {\n    amount: string;\n    borrowLimit: string;\n}\n\nexport interface getMaxTransferoutAmountOptions {\n    isolatedSymbol?: string;\n    recvWindow?: number;\n}\n\nexport interface getMaxTransferoutAmountResponse {\n    amount: string;\n}\n\nexport interface getSummaryOfMarginAccountOptions {\n    recvWindow?: number;\n}\n\nexport interface getSummaryOfMarginAccountResponse {\n    normalBar: string;\n    marginCallBar: string;\n    forceLiquidationBar: string;\n}\n\nexport interface getIsolatedMarginAccountInfoOptions {\n    symbols?: string;\n    recvWindow?: number;\n}\n\nexport interface getIsolatedMarginAccountInfoResponse {\n    assets: getIsolatedMarginAccountInfoAssets[];\n    totalAssetOfBtc?: string;\n    totalLiabilityOfBtc?: string;\n    totalNetAssetOfBtc?: string;\n}\n\nexport interface getIsolatedMarginAccountInfoBaseasset {\n    asset: string\n    borrowEnabled: boolean\n    borrowed: string\n    free: string\n    interest: string\n    locked: string\n    netAsset: string\n    netAssetOfBtc: string\n    repayEnabled: boolean\n    totalAsset: string\n}\n\nexport interface getIsolatedMarginAccountInfoQuoteasset {\n    asset: string\n    borrowEnabled: boolean\n    borrowed: string\n    free: string\n    interest: string\n    locked: string\n    netAsset: string\n    netAssetOfBtc: string\n    repayEnabled: boolean\n    totalAsset: string\n}\n\nexport interface getIsolatedMarginAccountInfoAssets {\n    baseAsset: getIsolatedMarginAccountInfoBaseasset;\n    quoteAsset: getIsolatedMarginAccountInfoQuoteasset;\n    symbol: string;\n    isolatedCreated: boolean;\n    enabled: boolean;\n    marginLevel: string;\n    marginLevelStatus: MarginLevelStatus;\n    marginRatio: string;\n    indexPrice: string;\n    liquidatePrice: string;\n    liquidateRate: string;\n    tradeEnabled: boolean;\n}\n\nexport interface disableIsolatedMarginAccountOptions {\n    recvWindow?: number;\n}\n\nexport interface disableIsolatedMarginAccountResponse {\n    success: boolean;\n    symbol: string;\n}\n\nexport interface enableIsolatedMarginAccountOptions {\n    recvWindow?: number;\n}\n\nexport interface enableIsolatedMarginAccountResponse {\n    success: boolean;\n    symbol: string;\n}\n\nexport interface getEnabledIsolatedMarginAccountLimitOptions {\n    recvWindow?: number;\n}\n\nexport interface getEnabledIsolatedMarginAccountLimitResponse {\n    enabledAccount: number;\n    maxAccount: number;\n}\n\nexport interface getAllIsolatedMarginSymbolOptions {\n    symbol?: string;\n    recvWindow?: number;\n}\n\nexport interface getAllIsolatedMarginSymbolResponse {\n    symbol: string;\n    base: string;\n    quote: string;\n    isMarginTrade: boolean;\n    isBuyAllowed: boolean;\n    isSellAllowed: boolean;\n}\n\nexport interface toggleBnbBurnOnSpotTradeAndMarginInterestOptions {\n    spotBNBBurn?: SpotBNBBurn;\n    interestBNBBurn?: InterestBNBBurn;\n    recvWindow?: number;\n}\n\nexport interface toggleBnbBurnOnSpotTradeAndMarginInterestResponse {\n    spotBNBBurn: boolean;\n    interestBNBBurn: boolean;\n}\n\nexport interface getBnbBurnStatusOptions {\n    recvWindow?: number;\n}\n\nexport interface getBnbBurnStatusResponse {\n    spotBNBBurn: boolean;\n    interestBNBBurn: boolean;\n}\n\nexport interface marginInterestRateHistoryOptions {\n    vipLevel?: number;\n    startTime?: number;\n    endTime?: number;\n    recvWindow?: number;\n}\n\nexport interface marginInterestRateHistoryResponse {\n    asset: string;\n    dailyInterestRate: string;\n    timestamp: number;\n    vipLevel: number;\n}\n\nexport interface getCrossMarginFeeDataOptions {\n    vipLevel?: number;\n    coin?: string;\n    recvWindow?: number;\n}\n\nexport interface getCrossMarginFeeDataResponse {\n    vipLevel: number;\n    coin: string;\n    transferIn: boolean;\n    borrowable: boolean;\n    dailyInterest: string;\n    yearlyInterest: string;\n    borrowLimit: string;\n    marginablePairs: string[];\n}\n\nexport interface getIsolatedMarginFeeDataOptions {\n    vipLevel?: number;\n    symbol?: string;\n    recvWindow?: number;\n}\n\nexport interface getIsolatedMarginFeeDataResponse {\n    vipLevel: number;\n    symbol: string;\n    leverage: string;\n    data: getIsolatedMarginFeeDataData[];\n}\n\nexport interface getIsolatedMarginFeeDataData {\n    coin: string;\n    dailyInterest: string;\n    borrowLimit: string;\n}\n\nexport interface getIsolatedMarginTierDataOptions {\n    tier?: number;\n    recvWindow?: number;\n}\n\nexport interface getIsolatedMarginTierDataResponse {\n    symbol: string;\n    tier: number;\n    effectiveMultiple: string;\n    initialRiskRatio: string;\n    liquidationRiskRatio: string;\n    baseAssetMaxBorrowable: string;\n    quoteAssetMaxBorrowable: string;\n}\n\nexport interface getCurrentMarginOrderCountUsageOptions {\n    isIsolated?: IsIsolatedMargin;\n    symbol?: string;\n    recvWindow?: number;\n}\n\nexport interface getCurrentMarginOrderCountUsageResponse {\n    rateLimitType: string;\n    interval: string;\n    intervalNum: number;\n    limit: number;\n    count: number;\n}\n\nexport interface crossMarginCollateralRatioResponse {\n    collaterals: crossMarginCollateralRatioCollaterals[];\n    assetNames: string[];\n}\n\nexport interface crossMarginCollateralRatioCollaterals {\n    minUsdValue: string;\n    maxUsdValue?: string;\n    discountRate: string;\n}\n\nexport interface getSmallLiabilityExchangeCoinListOptions {\n    recvWindow?: number;\n}\n\nexport interface getSmallLiabilityExchangeCoinListResponse {\n    asset: string;\n    interest: string;\n    principal: string;\n    liabilityAsset: string;\n    liabilityQty: string;\n}\n\nexport interface smallLiabilityExchangeOptions {\n    assetNames?: string;\n}\n\nexport interface smallLiabilityExchangeResponse {\n    asset: string;\n    interest: string;\n    principal: string;\n    liabilityAsset: string;\n    liabilityQty: string;\n}\n\n\nexport interface getSmallLiabilityExchangeHistoryOptions {\n    startTime?: number;\n    endTime?: number;\n    recvWindow?: number;\n}\n\nexport interface getSmallLiabilityExchangeHistoryResponse {\n    total: number;\n    rows: getSmallLiabilityExchangeHistoryRows[];\n}\n\nexport interface getSmallLiabilityExchangeHistoryRows {\n    asset: string;\n    amount: string;\n    targetAsset: string;\n    targetAmount: string;\n    bizType: string;\n    timestamp: number;\n}\n\nexport interface getFutureHoulyInterestRateResponse {\n    asset: string;\n    nextHourlyInterestRate: string;\n}\n\nexport interface getTokensOrSymbolsDelistScheduleForCrossMarginAndIsolatedMarginOptions {\n    recvWindow?: number;\n}\n\nexport interface getTokensOrSymbolsDelistScheduleForCrossMarginAndIsolatedMarginResponse {\n    delistTime: number;\n    crossMarginAssets: string[];\n    isolatedMarginSymbols: string[];\n}\n\nexport interface getMarginAvailableInventoryOptions {\n    recvWindow?: number;\n}\n\nexport interface getMarginAvailableInventoryResponse {\n    assets: { [key: string]: string };\n    updateTime: number;\n}\n\nexport interface marginManualLiquidationOptions {\n    symbol?: string;\n    recvWindow?: number;\n}\n\nexport interface marginManualLiquidationResponse {\n    asset: string;\n    interest: string;\n    principal: string;\n    liabilityAsset: string;\n    liabilityQty: number;\n}\n\nexport interface marginAccountNewOtoOptions {\n    isIsolated?: string;\n    listClientOrderId?: string;\n    newOrderRespType?: NewOrderRespType;\n    sideEffectType?: SideEffectType;\n    selfTradePreventionMode?: string;\n    autoRepayAtCancel?: boolean;\n    workingClientOrderId?: string;\n    workingIcebergQty?: number;\n    workingTimeInForce?: TimeInForce;\n    pendingClientOrderId?: string;\n    pendingPrice?: number;\n    pendingStopPrice?: number;\n    pendingTrailingDelta?: number;\n    pendingIcebergQty?: number;\n    pendingTimeInForce?: TimeInForce;\n    recvWindow?: number;\n}\n\nexport interface marginAccountNewOtoResponse {\n    orderListId: number;\n    contingencyType: string;\n    listStatusType: OrderListStatusType;\n    listOrderStatus: OrderListOrderStatus;\n    listClientOrderId: string;\n    transactionTime: number;\n    symbol: string;\n    isIsolated: boolean;\n    orders: marginAccountOrders[];\n    orderReports: marginAccountOrderReports[];\n}\n\nexport interface marginAccountOrders {\n    symbol: string;\n    orderId: number;\n    clientOrderId: string;\n}\n\nexport interface marginAccountOrderReports {\n    symbol: string;\n    orderId: number;\n    orderListId: number;\n    clientOrderId: string;\n    transactTime: number;\n    price: string;\n    origQty: string;\n    executedQty: string;\n    cummulativeQuoteQty: string;\n    status: OrderStatus;\n    timeInForce: TimeInForce;\n    type: OrderType;\n    side: Side;\n    stopPrice?: string;\n    selfTradePreventionMode: SelfTradePreventionMode;\n}\n\nexport interface marginAccountNewOtocoOptions {\n    isIsolated?: string;\n    sideEffectType?: SideEffectType;\n    autoRepayAtCancel?: boolean;\n    listClientOrderId?: string;\n    newOrderRespType?: NewOrderRespType;\n    selfTradePreventionMode?: string;\n    workingClientOrderId?: string;\n    workingIcebergQty?: number;\n    workingTimeInForce?: TimeInForce;\n    pendingAboveClientOrderId?: string;\n    pendingAbovePrice?: number;\n    pendingAboveStopPrice?: number;\n    pendingAboveTrailingDelta?: number;\n    pendingAboveIcebergQty?: number;\n    pendingAboveTimeInForce?: TimeInForce;\n    pendingBelowType?: OrderListAboveBelowType;\n    pendingBelowClientOrderId?: string;\n    pendingBelowPrice?: number;\n    pendingBelowStopPrice?: number;\n    pendingBelowTrailingDelta?: number;\n    pendingBelowIcebergQty?: number;\n    pendingBelowTimeInForce?: TimeInForce;\n    recvWindow?: number;\n}\n\nexport interface marginAccountNewOtocoResponse {\n    orderListId: number;\n    contingencyType: string;\n    listStatusType: OrderListStatusType;\n    listOrderStatus: OrderListOrderStatus;\n    listClientOrderId: string;\n    transactionTime: number;\n    symbol: string;\n    isIsolated: boolean;\n    orders: marginAccountOrders[];\n    orderReports: marginAccountOrderReports[];\n}\n\nexport interface getLeverageBracketResponse {\n    assetNames: string[];\n    rank: number;\n    brackets: leverageBracket[];\n}\n\nexport interface leverageBracket {\n    leverage: number;\n    maxDebt: number;\n    maintenanceMarginRate: number;\n    initialMarginRate: number;\n    fastNum: number;\n}\n\nexport interface marginAccountBorrowRepayOptions {\n    recvWindow?: number;\n}\n\nexport interface marginAccountBorrowRepayResponse {\n    tranId: number;\n}\n\nexport interface getBorrowRepayRecordsOptions {\n    asset?: string;\n    isolatedSymbol?: string;\n    txId?: number;\n    startTime?: number;\n    endTime?: number;\n    current?: number;\n    size?: number;\n    recvWindow?: number;\n}\n\nexport interface getBorrowRepayRecordsResponse {\n    rows: BorrowRepayRecordsRow[];\n    total: number;\n}\n\nexport interface BorrowRepayRecordsRow {\n    isolatedSymbol: string;\n    amount: string;\n    asset: string;\n    interest: string;\n    principal: string;\n    status: MarginStatus;\n    timestamp: number;\n    txId: number;\n}","import { SymbolStatus } from '../../enum';\n\nexport interface checkServerTimeResponse {\n    serverTime: number;\n}\n\nexport interface exchangeInformationOptions {\n    symbol?: string;\n    symbols?: string[];\n    permissions?: string[];\n    showPermissionSets?: boolean;\n    symbolStatus?: SymbolStatus;\n}\n\nexport interface exchangeInformationResponse {\n    timezone: string;\n    serverTime: number;\n    rateLimits: exchangeInformationRatelimits[];\n    exchangeFilters: exchangefilters[] | [Record<string, never>];\n    symbols: exchangeInformationSymbols[];\n}\n\nexport interface exchangeInformationRatelimits {\n    rateLimitType: 'REQUEST_WEIGHT' | 'ORDERS' | 'RAW_REQUESTS';\n    interval: 'SECOND' | 'MINUTE' | 'DAY';\n    intervalNum: number;\n    limit: number;\n}\n\nexport interface exchangefilters {\n    filterType: string;\n    maxNumOrders: number;\n}\n\nexport interface exchangeInformationSymbols {\n    symbol: string;\n    status: string;\n    baseAsset: string;\n    baseAssetPrecision: number;\n    quoteAsset: string;\n    quoteAssetPrecision: number;\n    baseCommissionPrecision: number;\n    quoteCommissionPrecision: number;\n    orderTypes: string[];\n    icebergAllowed: boolean;\n    ocoAllowed: boolean;\n    otoAllowed: boolean;\n    quoteOrderQtyMarketAllowed: boolean;\n    allowTrailingStop: boolean;\n    cancelReplaceAllowed: boolean;\n    isSpotTradingAllowed: boolean;\n    isMarginTradingAllowed: boolean;\n    filters: filters[];\n    permissions: string[];\n    permissionSets: string[][];\n    defaultSelfTradePreventionMode: string;\n    allowedSelfTradePreventionModes: string[];\n}\n\nexport interface orderBookOptions {\n    limit?: number;\n}\n\nexport interface orderBookResponse {\n    lastUpdateId: number;\n    bids: string[][];\n    asks: string[][];\n}\n\nexport interface recentTradesListOptions {\n    limit?: number;\n}\n\nexport interface recentTradesListResponse {\n    id: number;\n    price: string;\n    qty: string;\n    quoteQty: string;\n    time: number;\n    isBuyerMaker: boolean;\n    isBestMatch: boolean;\n}\n\nexport interface oldTradeLookupOptions {\n    limit?: number;\n    fromId?: number;\n}\n\nexport interface oldTradeLookupResponse {\n    id: number;\n    price: string;\n    qty: string;\n    quoteQty: string;\n    time: number;\n    isBuyerMaker: boolean;\n    isBestMatch: boolean;\n}\n\nexport interface compressedAggregateTradesListOptions {\n    fromId?: number;\n    startTime?: number;\n    endTime?: number;\n    limit?: number;\n}\n\nexport interface compressedAggregateTradesListResponse {\n    a: number;\n    p: string;\n    q: string;\n    f: number;\n    l: number;\n    T: number;\n    m: boolean;\n    M: boolean;\n}\n\nexport interface klineCandlestickDataOptions {\n    startTime?: number;\n    endTime?: number;\n    timeZone?: string;\n    limit?: number;\n}\n\nexport type klineCandlestickDataResponse = (string | number)[]\n\nexport interface uiklinesOptions {\n    startTime?: number;\n    endTime?: number;\n    timeZone?: string;\n    limit?: number;\n}\n\nexport type uiklinesResponse = (number | string)[]\n\nexport interface currentAveragePriceResponse {\n    mins: number;\n    price: string;\n    closeTime: number;\n}\n\nexport interface ticker24hrOptions {\n    symbol?: string;\n    symbols?: string[];\n    type?: 'FULL' | 'MINI';\n}\n\nexport interface ticker24hrResponse {\n    symbol: string;\n    priceChange: string;\n    priceChangePercent: string;\n    prevClosePrice: string;\n    lastPrice: string;\n    bidPrice: string;\n    bidQty: string;\n    askPrice: string;\n    askQty: string;\n    openPrice: string;\n    highPrice: string;\n    lowPrice: string;\n    volume: string;\n    quoteVolume: string;\n    openTime: number;\n    closeTime: number;\n    firstId: number;\n    lastId: number;\n    count: number;\n}\n\nexport interface symbolPriceTickerOptions {\n    symbol?: string;\n    symbols?: string[];\n}\n\nexport interface symbolPriceTickerResponse {\n    symbol: string;\n    price: string;\n}\n\nexport interface symbolOrderBookTickerOptions {\n    symbol?: string;\n    symbols?: string[];\n}\n\nexport interface symbolOrderBookTickerResponse {\n    symbol: string;\n    bidPrice: string;\n    bidQty: string;\n    askPrice: string;\n    askQty: string;\n}\n\nexport interface rollingWindowPriceChangeStatisticsOptions {\n    symbol?: string;\n    symbols?: string[];\n    windowSize?: string;\n    type?: 'FULL' | 'MINI';\n}\n\nexport interface rollingWindowPriceChangeStatisticsResponse {\n    symbol: string;\n    priceChange: string;\n    priceChangePercent: string;\n    weightedAvgPrice: string;\n    openPrice: string;\n    highPrice: string;\n    lowPrice: string;\n    lastPrice: string;\n    volume: string;\n    quoteVolume: string;\n    openTime: number;\n    closeTime: number;\n    firstId: number;\n    lastId: number;\n    count: number;\n}\n\ntype filters = priceFilter | percentPrice | percentPriceBySide | lotSize | minNotional | notional | iceBergParts | marketLotSize | maxNumOrders | maxNumAlgoOrders | maxNumIcebergOrders | maxPosition | trailingDelta | exchangeMaxNumOrders | exchangeMaxNumAlgoOrders | exchangeMaxNumIcebergOrders;\n\nexport interface exchangeMaxNumOrders {\n    filterType: 'EXCHANGE_MAX_NUM_ORDERS';\n    maxNumOrders: number;\n}\n\nexport interface exchangeMaxNumAlgoOrders {\n    filterType: 'EXCHANGE_MAX_NUM_ALGO_ORDERS';\n    maxNumAlgoOrders: number;\n}\n\nexport interface exchangeMaxNumIcebergOrders {\n    filterType: 'EXCHANGE_MAX_NUM_ICEBERG_ORDERS';\n    maxNumIcebergOrders: number;\n}\n\nexport interface lotSize {\n    filterType: 'LOT_SIZE';\n    minQty: string;\n    maxQty: string;\n    stepSize: string;\n}\n\nexport interface marketLotSize {\n    filterType: 'MARKET_LOT_SIZE';\n    minQty: string;\n    maxQty: string;\n    stepSize: string;\n}\n\nexport interface maxNumAlgoOrders {\n    filterType: 'MAX_NUM_ALGO_ORDERS';\n    maxNumAlgoOrders: number;\n}\n\nexport interface maxNumOrders {\n    filterType: 'MAX_NUM_ORDERS';\n    maxNumOrders: number;\n}\n\nexport interface maxNumIcebergOrders {\n    filterType: 'MAX_NUM_ICEBERG_ORDERS';\n    maxNumIcebergOrders: number;\n}\n\nexport interface maxPosition {\n    filterType: 'MAX_POSITION';\n    maxPosition: string;\n}\n\nexport interface minNotional {\n    filterType: 'MIN_NOTIONAL';\n    minNotional: string;\n    applyToMarket: boolean;\n    avgPriceMins: number;\n}\n\nexport interface notional {\n    filterType: 'NOTIONAL';\n    minNotional: string;\n    applyMinToMarket: boolean;\n    maxNotional: string;\n    applyMaxToMarket: boolean;\n    avgPriceMins: number;\n}\n\nexport interface percentPrice {\n    filterType: 'PERCENT_PRICE';\n    multiplierUp: string;\n    multiplierDown: string;\n    avgPriceMins: number;\n}\n\nexport interface percentPriceBySide {\n    filterType: 'PERCENT_PRICE_BY_SIDE';\n    bidMultiplierUp: string;\n    bidMultiplierDown: string;\n    askMultiplierUp: string;\n    askMultiplierDown: string;\n    avgPriceMins: number;\n}\n\nexport interface priceFilter {\n    filterType: 'PRICE_FILTER';\n    minPrice: string;\n    maxPrice: string;\n    tickSize: string;\n}\n\nexport interface iceBergParts {\n    filterType: 'ICEBERG_PARTS';\n    limit: number;\n}\n\nexport interface trailingDelta {\n    filterType: 'TRAILING_DELTA';\n    minTrailingAboveDelta: number;\n    maxTrailingAboveDelta: number;\n    minTrailingBelowDelta: number;\n    maxTrailingBelowDelta: number;\n}\n\nexport interface tradingDayTickerOptions {\n    symbol?: string;\n    symbols?: string[];\n    timeZone?: string;\n    type?: 'FULL' | 'MINI';\n}\n\nexport interface tradingDayTickerResponse {\n    symbol: string;\n    priceChange: string;\n    priceChangePercent: string;\n    weightedAvgPrice: string;\n    openPrice: string;\n    highPrice: string;\n    lowPrice: string;\n    lastPrice: string;\n    volume: string;\n    quoteVolume: string;\n    openTime: number;\n    closeTime: number;\n    firstId: number;\n    lastId: number;\n    count: number;\n}","import { PortfolioAccountStatus, PortfolioAccountType, PortfolioMarginFrom } from '../../enum';\n\nexport interface portfolioMarginAccountOptions {\n    recvWindow?: number;\n}\n\nexport interface portfolioMarginAccountResponse {\n    uniMMR: string;\n    accountEquity: string;\n    actualEquity: string;\n    accountMaintMargin: string;\n    accountStatus: PortfolioAccountStatus;\n    accountType: PortfolioAccountType;\n}\n\nexport interface portfolioMarginCollateralRateResponse {\n    asset: string;\n    collateralRate: string;\n}\n\nexport interface getTieredCollateralRateOptions {\n    recvWindow?: number;\n}\n\nexport interface getTieredCollateralRateResponse {\n    asset: string;\n    collateralInfo: collateralInfo[];\n}\n\nexport interface collateralInfo {\n    tierFloor: string;\n    tierCap: string;\n    collateralRate: string;\n    cum: string;\n}\n\nexport interface portfolioMarginBankruptcyLoanAmountOptions {\n    recvWindow?: number;\n}\n\nexport interface portfolioMarginBankruptcyLoanAmountResponse {\n    asset: string;\n    amount: string;\n}\n\nexport interface portfolioMarginBankruptcyLoanRepayOptions {\n    from?: PortfolioMarginFrom;\n    recvWindow?: number;\n}\n\nexport interface portfolioMarginBankruptcyLoanRepayResponse {\n    tranId: number;\n}\n\nexport interface getClassicPortfolioMarginNegativeBalanceInterestHistoryOptions {\n    asset?: string;\n    startTime?: number;\n    endTime?: number;\n    size?: number;\n    recvWindow?: number;\n}\n\nexport interface getClassicPortfolioMarginNegativeBalanceInterestHistoryResponse {\n    asset: string;\n    interest: string;\n    interestAccruedTime: number;\n    interestRate: string;\n    principal: string;\n}\n\nexport interface getSpanAccountInfoOptions {\n    recvWindow?: number;\n}\n\nexport interface getSpanAccountInfoResponse {\n    uniMMR: string;\n    accountEquity: string;\n    actualEquity: string;\n    accountMaintMargin: string;\n    riskUnitMMList: riskUnitMMList[];\n    marginMM: string;\n    otherMM: string;\n    accountStatus: string;\n    accountType: string;\n}\n\nexport interface riskUnitMMList{\n    asset: string;\n    uniMaintainUsd: string;\n}\n\nexport interface getAccountBalanceOptions {\n    asset?: string;\n    recvWindow?: number;\n}\n\nexport interface getAccountBalanceResponse {\n    asset: string;\n    totalWalletBalance: string;\n    crossMarginAsset: string;\n    crossMarginBorrowed: string;\n    crossMarginFree: string;\n    crossMarginInterest: string;\n    crossMarginLocked: string;\n    umWalletBalance: string;\n    umUnrealizedPNL: string;\n    cmWalletBalance: string;\n    cmUnrealizedPNL: string;\n    updateTime: number;\n    negativeBalance: string;\n    optionWalletBalance: string;\n    optionEquity: string;\n}\n\nexport interface getPortfolioMarginAssetIndexPriceOptions{\n    asset: string;\n}\n\nexport interface getPortfolioMarginAssetIndexPriceResponse {\n    asset: string;\n    assetIndexPrice: string;\n    time: number;\n}\n\nexport interface fundAutocollectionOptions {\n    recvWindow?: number;\n}\n\nexport interface fundAutocollectionResponse {\n    msg: string;\n}\n\nexport interface fundCollectionByAssetOptions {\n    recvWindow?: number;\n}\n\nexport interface fundCollectionByAssetResponse {\n    msg: string;\n}\n\nexport interface bnbTransferOptions {\n    recvWindow?: number;\n}\n\nexport interface bnbTransferResponse {\n    tranId: number;\n}\n\nexport interface changeAutorepayfuturesStatusOptions {\n    recvWindow?: number;\n}\n\nexport interface changeAutorepayfuturesStatusResponse {\n    msg: string;\n}\n\nexport interface getAutorepayfuturesStatusOptions {\n    recvWindow?: number;\n}\n\nexport interface getAutorepayfuturesStatusResponse {\n    autoRepay: boolean;\n}\n\nexport interface repayFuturesNegativeBalanceOptions {\n    recvWindow?: number;\n}\n\nexport interface repayFuturesNegativeBalanceResponse {\n    msg: string;\n}\n\nexport interface getPortfolioMarginAssetLeverageResponse {\n    asset: string;\n    leverage: number;\n}\n","import {\n    RedeemDestAccount,\n    SimpleEarnDestAccount,\n    SimpleEarnFlexibleRewards,\n    SimpleEarnLockedRedemption,\n    SimpleEarnSourceAccount,\n    SimpleEarnStatus,\n    SimpleEarnType,\n    SubscribeSourceAccount\n} from '../../enum';\n\nexport interface getSimpleEarnFlexibleProductListOptions {\n    asset?: string;\n    current?: number;\n    size?: number;\n    recvWindow?: number;\n}\n\nexport interface getSimpleEarnFlexibleProductListResponse {\n    rows: getSimpleEarnFlexibleProductListRows[];\n    total: number;\n}\n\nexport interface getSimpleEarnFlexibleProductListRows {\n    asset: string;\n    latestAnnualPercentageRate: string;\n    tierAnnualPercentageRate: tierAnnualPercentageRate;\n    airDropPercentageRate: string;\n    canPurchase: boolean;\n    canRedeem: boolean;\n    isSoldOut: boolean;\n    hot: boolean;\n    minPurchaseAmount: string;\n    productId: string;\n    subscriptionStartTime: string;\n    status: SimpleEarnStatus;\n}\n\nexport interface getSimpleEarnLockedProductListOptions {\n    asset?: string;\n    current?: number;\n    size?: number;\n    recvWindow?: number;\n}\n\nexport interface getSimpleEarnLockedProductListResponse {\n    rows: getSimpleEarnLockedProductListRows[];\n    total: number;\n}\n\nexport interface getSimpleEarnLockedProductListRows {\n    projectId: string;\n    detail: lockedProductDetails;\n    quota: lockedProductQuota;\n}\n\nexport interface lockedProductDetails {\n    asset: string;\n    rewardAsset: string;\n    duration: number;\n    renewable: boolean;\n    isSoldOut: boolean;\n    apr: string;\n    status: string;\n    subscriptionStartTime: string;\n    extraRewardAsset: string;\n    extraRewardAPR: string;\n}\n\nexport interface lockedProductQuota {\n    totalPersonalQuota: string;\n    minimum: string;\n}\n\nexport interface subscribeFlexibleProductOptions {\n    autoSubscribe?: boolean;\n    sourceAccount?: SubscribeSourceAccount;\n    recvWindow?: number;\n}\n\nexport interface subscribeFlexibleProductResponse {\n    purchaseId: number;\n    success: boolean;\n}\n\nexport interface subscribeLockedProductOptions {\n    autoSubscribe?: boolean;\n    sourceAccount?: SubscribeSourceAccount;\n    recvWindow?: number;\n}\n\nexport interface subscribeLockedProductResponse {\n    purchaseId: number;\n    positionId: string;\n    success: boolean;\n}\n\nexport interface redeemFlexibleProductOptions {\n    redeemAll?: boolean;\n    amount?: number;\n    destAccount?: RedeemDestAccount;\n    recvWindow?: number;\n}\n\nexport interface redeemFlexibleProductResponse {\n    redeemId: number;\n    success: boolean;\n}\n\nexport interface redeemLockedProductOptions {\n    recvWindow?: number;\n}\n\nexport interface redeemLockedProductResponse {\n    redeemId: number;\n    success: boolean;\n}\n\nexport interface getFlexibleProductPositionOptions {\n    asset?: string;\n    productId?: string;\n    current?: number;\n    size?: number;\n    recvWindow?: number;\n}\n\nexport interface getFlexibleProductPositionResponse {\n    rows: getFlexibleProductPositionRows[];\n    total: number;\n}\n\nexport interface getFlexibleProductPositionRows {\n    totalAmount: string;\n    tierAnnualPercentageRate: tierAnnualPercentageRate;\n    latestAnnualPercentageRate: string;\n    yesterdayAirdropPercentageRate: string;\n    asset: string;\n    airDropAsset: string;\n    canRedeem: boolean;\n    collateralAmount: string;\n    productId: string;\n    yesterdayRealTimeRewards: string;\n    cumulativeBonusRewards: string;\n    cumulativeRealTimeRewards: string;\n    cumulativeTotalRewards: string;\n    autoSubscribe: boolean;\n}\n\nexport interface tierAnnualPercentageRate {\n    '0-5BTC': number;\n    '5-10BTC': number;\n}\n\nexport interface getLockedProductPositionOptions {\n    asset?: string;\n    positionId?: string;\n    projectId?: string;\n    current?: number;\n    size?: number;\n    recvWindow?: number;\n}\n\nexport interface getLockedProductPositionResponse {\n    rows: getLockedProductPositionRows[];\n    total: number;\n}\n\nexport interface getLockedProductPositionRows {\n    positionId: number;\n    parentPositionId: 123122,\n    projectId: string;\n    asset: string;\n    amount: string;\n    purchaseTime: string;\n    duration: string;\n    accrualDays: string;\n    rewardAsset: string;\n    APY: string;\n    rewardAmt: string;\n    extraRewardAsset: string;\n    extraRewardAPR: string;\n    estExtraRewardAmt: string;\n    nextPay: string;\n    nextPayDate: string;\n    payPeriod: string;\n    redeemAmountEarly: string;\n    rewardsEndDate: string;\n    deliverDate: string;\n    redeemPeriod: string;\n    redeemingAmt: string;\n    redeemTo: string;\n    partialAmtDeliverDate: string;\n    canRedeemEarly: boolean;\n    canFastRedemption: boolean;\n    autoSubscribe: boolean;\n    type: string;\n    status: string;\n    canReStake: boolean;\n}\n\nexport interface simpleAccountOptions {\n    recvWindow?: number;\n}\n\nexport interface simpleAccountResponse {\n    totalAmountInBTC: string;\n    totalAmountInUSDT: string;\n    totalFlexibleAmountInBTC: string;\n    totalFlexibleAmountInUSDT: string;\n    totalLockedInBTC: string;\n    totalLockedInUSDT: string;\n}\n\nexport interface getFlexibleSubscriptionRecordOptions {\n    productId?: string;\n    purchaseId?: string;\n    asset?: string;\n    startTime?: number;\n    endTime?: number;\n    current?: number;\n    size?: number;\n    recvWindow?: number;\n}\n\nexport interface getFlexibleSubscriptionRecordResponse {\n    rows: getFlexibleSubscriptionRecordRows[];\n    total: number;\n}\n\nexport interface getFlexibleSubscriptionRecordRows {\n    amount: string;\n    asset: string;\n    time: number;\n    purchaseId: number;\n    productId: string;\n    type: SimpleEarnType;\n    sourceAccount: SimpleEarnSourceAccount;\n    amtFromSpot: string;\n    amtFromFunding: string;\n    status: SimpleEarnStatus;\n}\n\nexport interface getLockedSubscriptionRecordOptions {\n    purchaseId?: string;\n    asset?: string;\n    startTime?: number;\n    endTime?: number;\n    current?: number;\n    size?: number;\n    recvWindow?: number;\n}\n\nexport interface getLockedSubscriptionRecordResponse {\n    rows: getLockedSubscriptionRecordRows[];\n    total: number;\n}\n\nexport interface getLockedSubscriptionRecordRows {\n    positionId: string;\n    purchaseId: number;\n    projectId: string;\n    time: number;\n    asset: string;\n    amount: string;\n    lockPeriod: string;\n    type: SimpleEarnType;\n    sourceAccount: SimpleEarnSourceAccount;\n    amtFromSpot: string;\n    amtFromFunding: string;\n    status: SimpleEarnStatus;\n}\n\nexport interface getFlexibleRedemptionRecordOptions {\n    productId?: string;\n    redeemId?: string;\n    asset?: string;\n    startTime?: number;\n    endTime?: number;\n    current?: number;\n    size?: number;\n}\n\nexport interface getFlexibleRedemptionRecordResponse {\n    rows: getFlexibleRedemptionRecordRows[];\n    total: number;\n}\n\nexport interface getFlexibleRedemptionRecordRows {\n    amount: string;\n    asset: string;\n    time: number;\n    projectId: string;\n    redeemId: number;\n    destAccount: SimpleEarnDestAccount;\n    status: string;\n}\n\nexport interface getLockedRedemptionRecordOptions {\n    positionId?: string;\n    redeemId?: string;\n    asset?: string;\n    startTime?: number;\n    endTime?: number;\n    current?: number;\n    size?: number;\n    recvWindow?: number;\n}\n\nexport interface getLockedRedemptionRecordResponse {\n    rows: getLockedRedemptionRecordRows[];\n    total: number;\n}\n\nexport interface getLockedRedemptionRecordRows {\n    positionId: number;\n    redeemId: number;\n    time: number;\n    asset: string;\n    lockPeriod: string;\n    amount: string;\n    originalAmount: string;\n    type: SimpleEarnLockedRedemption;\n    deliverDate: string;\n    lossAmount: string;\n    isComplete: boolean;\n    rewardAsset: string;\n    rewardAmt: string;\n    extraRewardAsset: string;\n    estExtraRewardAmt: string;\n    status: string;\n}\n\nexport interface getFlexibleRewardsHistoryOptions {\n    productId?: string;\n    asset?: string;\n    startTime?: number;\n    endTime?: number;\n}\n\nexport interface getFlexibleRewardsHistoryResponse {\n    rows: getFlexibleRewardsHistoryRows[];\n    total: number;\n}\n\nexport interface getFlexibleRewardsHistoryRows {\n    asset: string;\n    rewards: string;\n    projectId: string;\n    type: SimpleEarnFlexibleRewards;\n    time: number;\n}\n\nexport interface getLockedRewardsHistoryOptions {\n    positionId?: string;\n    asset?: string;\n    startTime?: number;\n    endTime?: number;\n    size?: number;\n    recvWindow?: number;\n}\n\nexport interface getLockedRewardsHistoryResponse {\n    rows: getLockedRewardsHistoryRows[];\n    total: number;\n}\n\nexport interface getLockedRewardsHistoryRows {\n    positionId: string;\n    time: number;\n    asset: string;\n    lockPeriod: string;\n    amount: string;\n}\n\nexport interface setFlexibleAutoSubscribeOptions {\n    recvWindow?: number;\n}\n\nexport interface setFlexibleAutoSubscribeResponse {\n    success: boolean;\n}\n\nexport interface setLockedAutoSubscribeOptions {\n    recvWindow?: number;\n}\n\nexport interface setLockedAutoSubscribeResponse {\n    success: boolean;\n}\n\nexport interface getFlexiblePersonalLeftQuotaOptions {\n    recvWindow?: number;\n}\n\nexport interface getFlexiblePersonalLeftQuotaResponse {\n    leftPersonalQuota: string;\n}\n\nexport interface getLockedPersonalLeftQuotaOptions {\n    recvWindow?: number;\n}\n\nexport interface getLockedPersonalLeftQuotaResponse {\n    leftPersonalQuota: string;\n}\n\nexport interface getFlexibleSubscriptionPreviewOptions {\n    recvWindow?: number;\n}\n\nexport interface getFlexibleSubscriptionPreviewResponse {\n    totalAmount: string;\n    rewardAsset: string;\n    airDropAsset: string;\n    estDailyBonusRewards: string;\n    estDailyRealTimeRewards: string;\n    estDailyAirdropRewards: string;\n}\n\nexport interface getLockedSubscriptionPreviewOptions {\n    autoSubscribe?: boolean;\n    recvWindow?: number;\n}\n\nexport interface getLockedSubscriptionPreviewResponse {\n    rewardAsset: string;\n    totalRewardAmt: string;\n    extraRewardAsset: string;\n    estTotalExtraRewardAmt: string;\n    nextPay: string;\n    nextPayDate: string;\n    valueDate: string;\n    rewardsEndDate: string;\n    deliverDate: string;\n    nextSubscriptionDate: string;\n}\n\nexport interface setLockedRedeemOptionOptions {\n    recvWindow?: number;\n}\n\nexport interface setLockedRedeemOptionResponse {\n    success: boolean;\n}\n\nexport interface getRateHistoryOptions {\n    startTime?: number;\n    endTime?: number;\n    current?: number;\n    size?: number;\n    recvWindow?: number;\n}\n\nexport interface getRateHistoryResponse {\n    rows: getRateHistoryRows[];\n    total: number;\n}\n\nexport interface getRateHistoryRows {\n    productId: string;\n    asset: string;\n    annualPercentageRate: string;\n    time: number;\n}\n\nexport interface getCollateralRecordOptions {\n    productId?: string;\n    startTime?: number;\n    endTime?: number;\n    current?: number;\n    size?: number;\n    recvWindow?: number;\n}\n\nexport interface getCollateralRecordResponse {\n    rows: getCollateralRecordRows[];\n    total: number;\n}\n\nexport interface getCollateralRecordRows {\n    amount: string;\n    productId: string;\n    asset: string;\n    createTime: number;\n    type: string;\n    productName: string;\n    orderId: number;\n}\n","export interface listenkeyResponse {\n    listenKey: string;\n}","import { IsFreeze, FromAccountType, ToAccountType, SubAccountStatus, SubAccountTransferLog } from '../../enum';\n\nexport interface createAVirtualSubAccountOptions {\n    recvWindow?: number;\n}\n\nexport interface createAVirtualSubAccountResponse {\n    email: string;\n}\n\nexport interface getSubAccountListOptions {\n    email?: string;\n    isFreeze?: IsFreeze;\n    page?: number;\n    limit?: number;\n    recvWindow?: number;\n}\n\nexport interface getSubAccountListResponse {\n    subAccounts: getSubAccountListSubAccounts[];\n}\n\nexport interface getSubAccountListSubAccounts {\n    email: string;\n    isFreeze: boolean;\n    createTime: number;\n    isManagedSubAccount: boolean;\n    isAssetManagementSubAccount: boolean;\n}\n\nexport interface getSubAccountSpotAssetTransferHistoryOptions {\n    fromEmail?: string;\n    toEmail?: string;\n    startTime?: number;\n    endTime?: number;\n    page?: number;\n    limit?: number;\n    recvWindow?: number;\n}\n\nexport interface getSubAccountSpotAssetTransferHistoryResponse {\n    from: string;\n    to: string;\n    asset: string;\n    qty: number;\n    status: SubAccountStatus;\n    tranId: number;\n    time: number;\n}\n\nexport interface getSubAccountFuturesAssetTransferHistoryOptions {\n    startTime?: number;\n    endTime?: number;\n    page?: number;\n    limit?: number;\n    recvWindow?: number;\n}\n\nexport interface getSubAccountFuturesAssetTransferHistoryResponse {\n    success: boolean;\n    futuresType: number;\n    transfers: getSubAccountFuturesAssetTransferHistoryTransfers[];\n}\n\nexport interface getSubAccountFuturesAssetTransferHistoryTransfers {\n    from: string;\n    to: string;\n    asset: string;\n    qty: string;\n    tranId: number;\n    time: number;\n}\n\n\nexport interface subAccountFuturesAssetTransferOptions {\n    recvWindow?: number;\n}\n\nexport interface subAccountFuturesAssetTransferResponse {\n    success: boolean;\n    txnId: string;\n}\n\nexport interface getSubAccountAssetsOptions {\n    recvWindow?: number;\n}\n\nexport interface getSubAccountAssetsResponse {\n    balances: getSubAccountAssetsBalances[];\n}\n\nexport interface getSubAccountAssetsBalances {\n    freeze: number;\n    withdrawing: number;\n    asset: string;\n    free: number;\n    locked: number;\n}\n\nexport interface getSubAccountSpotAssetsSummaryOptions {\n    email?: string;\n    page?: number;\n    size?: number;\n    recvWindow?: number;\n}\n\nexport interface getSubAccountSpotAssetsSummaryResponse {\n    totalCount: number;\n    masterAccountTotalAsset: string;\n    spotSubUserAssetBtcVoList: getSubAccountSpotAssetsSummarySpotSubUserAssetBtcVoList[];\n}\n\nexport interface getSubAccountSpotAssetsSummarySpotSubUserAssetBtcVoList {\n    email: string;\n    totalAsset: string;\n}\n\nexport interface getSubAccountDepositAddressOptions {\n    network?: string;\n    amount?: number;\n    recvWindow?: number;\n}\n\nexport interface getSubAccountDepositAddressResponse {\n    address: string;\n    coin: string;\n    tag: string;\n    url: string;\n}\n\nexport interface subAccountDepositHistoryOptions {\n    coin?: string;\n    status?: number;\n    startTime?: number;\n    endTime?: number;\n    limit?: number;\n    offset?: number;\n    recvWindow?: number;\n    txId?: string;\n}\n\nexport interface subAccountDepositHistoryResponse {\n    id: string;\n    amount: string;\n    coin: string;\n    network: string;\n    status: number;\n    address: string;\n    addressTag: string;\n    txId: string;\n    insertTime: number;\n    transferType: number;\n    confirmTimes: string;\n    unlockConfirm: number;\n    walletType: number;\n}\n\nexport interface subAccountStatusOnMarginFuturesOptions {\n    email?: string;\n    recvWindow?: number;\n}\n\nexport interface subAccountStatusOnMarginFuturesResponse {\n    email: string;\n    isSubUserEnabled: boolean;\n    isUserActive: boolean;\n    insertTime: number;\n    isMarginEnabled: boolean;\n    isFutureEnabled: boolean;\n    mobile: number;\n}\n\nexport interface enableMarginForSubAccountOptions {\n    recvWindow?: number;\n}\n\nexport interface enableMarginForSubAccountResponse {\n    email: string;\n    isMarginEnabled: boolean;\n}\n\nexport interface detailOnSubAccountMarginAccountOptions {\n    recvWindow?: number;\n}\n\nexport interface detailOnSubAccountMarginAccountResponse {\n    email: string;\n    marginLevel: string;\n    totalAssetOfBtc: string;\n    totalLiabilityOfBtc: string;\n    totalNetAssetOfBtc: string;\n    marginTradeCoeffVo: marginTradeCoeffVo;\n    marginUserAssetVoList: marginUserAssetVoList[];\n}\n\nexport interface marginTradeCoeffVo {\n    forceLiquidationBar: string\n    marginCallBar: string\n    normalBar: string\n}\n\nexport interface marginUserAssetVoList {\n    asset: string;\n    borrowed: string;\n    free: string;\n    interest: string;\n    locked: string;\n    netAsset: string;\n}\n\nexport interface summaryOfSubAccountMarginAccountOptions {\n    recvWindow?: number;\n}\n\nexport interface summaryOfSubAccountMarginAccountResponse {\n    totalAssetOfBtc: string;\n    totalLiabilityOfBtc: string;\n    totalNetAssetOfBtc: string;\n    subAccountList: summaryOfSubAccountMarginAccountSubAccountlist[];\n}\n\nexport interface summaryOfSubAccountMarginAccountSubAccountlist {\n    email: string;\n    totalAssetOfBtc: string;\n    totalLiabilityOfBtc: string;\n    totalNetAssetOfBtc: string;\n}\n\nexport interface enableFuturesForSubAccountOptions {\n    recvWindow?: number;\n}\n\nexport interface enableFuturesForSubAccountResponse {\n    email: string;\n    isFuturesEnabled: boolean;\n}\n\nexport interface detailOnSubAccountFuturesAccountOptions {\n    recvWindow?: number;\n}\n\nexport interface detailOnSubAccountFuturesAccountResponse {\n    email: string;\n    asset: string;\n    assets: detailOnSubAccountFuturesAccountAssets[];\n    canDeposit: boolean;\n    canTrade: boolean;\n    canWithdraw: boolean;\n    feeTier: number;\n    maxWithdrawAmount: string;\n    totalInitialMargin: string;\n    totalMaintenanceMargin: string;\n    totalMarginBalance: string;\n    totalOpenOrderInitialMargin: string;\n    totalPositionInitialMargin: string;\n    totalUnrealizedProfit: string;\n    totalWalletBalance: string;\n    updateTime: number;\n}\n\nexport interface detailOnSubAccountFuturesAccountAssets {\n    asset: string;\n    initialMargin: string;\n    maintenanceMargin: string;\n    marginBalance: string;\n    maxWithdrawAmount: string;\n    openOrderInitialMargin: string;\n    positionInitialMargin: string;\n    unrealizedProfit: string;\n    walletBalance: string;\n}\n\nexport interface summaryOfSubAccountFuturesAccountOptions {\n    recvWindow?: number;\n}\n\nexport interface summaryOfSubAccountFuturesAccountResponse {\n    totalInitialMargin: string;\n    totalMaintenanceMargin: string;\n    totalMarginBalance: string;\n    totalOpenOrderInitialMargin: string;\n    totalPositionInitialMargin: string;\n    totalUnrealizedProfit: string;\n    totalWalletBalance: string;\n    asset: string;\n    subAccountList: summaryOfSubAccountFuturesAccountSubAccountlist[];\n}\n\nexport interface summaryOfSubAccountFuturesAccountSubAccountlist {\n    email: string;\n    totalInitialMargin: string;\n    totalMaintenanceMargin: string;\n    totalMarginBalance: string;\n    totalOpenOrderInitialMargin: string;\n    totalPositionInitialMargin: string;\n    totalUnrealizedProfit: string;\n    totalWalletBalance: string;\n    asset: string;\n}\n\nexport interface futuresPositionriskOfSubAccountOptions {\n    recvWindow?: number;\n}\n\nexport interface futuresPositionriskOfSubAccountResponse {\n    entryPrice: string;\n    leverage: string;\n    maxNotional: string;\n    liquidationPrice: string;\n    markPrice: string;\n    positionAmount: string;\n    symbol: string;\n    unrealizedProfit: string;\n}\n\nexport interface transferForSubAccountOptions {\n    recvWindow?: number;\n}\n\nexport interface transferForSubAccountResponse {\n    txnId: string;\n}\n\nexport interface marginTransferForSubAccountOptions {\n    recvWindow?: number;\n}\n\nexport interface marginTransferForSubAccountResponse {\n    txnId: string;\n}\n\nexport interface transferToSubAccountOfSameMasterOptions {\n    recvWindow?: number;\n}\n\nexport interface transferToSubAccountOfSameMasterResponse {\n    txnId: string;\n}\n\nexport interface transferToMasterOptions {\n    recvWindow?: number;\n}\n\nexport interface transferToMasterResponse {\n    txnId: string;\n}\n\nexport interface subAccountTransferHistoryOptions {\n    asset?: string;\n    type?: number;\n    startTime?: number;\n    endTime?: number;\n    limit?: number;\n    recvWindow?: number;\n}\n\nexport interface subAccountTransferHistoryResponse {\n    counterParty: string;\n    email: string;\n    type: number;\n    asset: string;\n    qty: string;\n    fromAccountType: FromAccountType;\n    toAccountType: ToAccountType;\n    status: SubAccountStatus;\n    tranId: number;\n    time: number;\n}\n\nexport interface universalTransferOptions {\n    fromEmail?: string;\n    toEmail?: string;\n    clientTranId?: string;\n    symbol?: string;\n    recvWindow?: number;\n}\n\nexport interface universalTransferResponse {\n    tranId: number;\n    clientTranId: string;\n}\n\nexport interface getUniversalTransferHistoryOptions {\n    fromEmail?: string;\n    toEmail?: string;\n    clientTranId?: string;\n    startTime?: number;\n    endTime?: number;\n    page?: number;\n    limit?: number;\n    recvWindow?: number;\n}\n\nexport interface getUniversalTransferHistoryResponse {\n    result: resultUniversalTransferHistoryResult[];\n    totalCount: number;\n}\n\nexport interface resultUniversalTransferHistoryResult {\n    tranId: number;\n    fromEmail: string;\n    toEmail: string;\n    asset: string;\n    amount: string;\n    createTimeStamp: number;\n    fromAccountType: FromAccountType;\n    toAccountType: ToAccountType;\n    status: SubAccountStatus;\n    clientTranId: string;\n}\n\nexport interface getDetailOnSubAccountFuturesAccountV2Options {\n    recvWindow?: number;\n}\n\nexport interface getDetailOnSubAccountFuturesAccountV2Response {\n    futureAccountResp: detailOnSubAccountFuturesAccountV2Futureaccountresp;\n}\n\nexport interface detailOnSubAccountFuturesAccountV2Futureaccountresp {\n    email: string;\n    assets: detailOnSubAccountFuturesAccountV2Assets[];\n    canDeposit: boolean;\n    canTrade: boolean;\n    canWithdraw: boolean;\n    feeTier: number;\n    maxWithdrawAmount?: string;\n    totalInitialMargin?: string;\n    totalMaintenanceMargin?: string;\n    totalMarginBalance?: string;\n    totalOpenOrderInitialMargin?: string;\n    totalPositionInitialMargin?: string;\n    totalUnrealizedProfit?: string;\n    totalWalletBalance?: string;\n    updateTime: number;\n}\n\nexport interface detailOnSubAccountFuturesAccountV2Assets {\n    asset: string;\n    initialMargin: string;\n    maintenanceMargin: string;\n    marginBalance: string;\n    maxWithdrawAmount: string;\n    openOrderInitialMargin: string;\n    positionInitialMargin: string;\n    unrealizedProfit: string;\n    walletBalance: string;\n}\n\nexport interface summaryOfSubAccountFuturesAccountV2Options {\n    page?: number;\n    limit?: number;\n    recvWindow?: number;\n}\n\nexport interface summaryOfSubAccountFuturesAccountV2Response {\n    futureAccountSummaryResp: summaryOfSubAccountFuturesAccountV2Futureaccountsummaryresp;\n}\n\nexport interface summaryOfSubAccountFuturesAccountV2Futureaccountsummaryresp {\n    totalInitialMargin: string\n    totalMaintenanceMargin: string\n    totalMarginBalance: string\n    totalOpenOrderInitialMargin: string\n    totalPositionInitialMargin: string\n    totalUnrealizedProfit: string\n    totalWalletBalance: string\n    asset: string\n    subAccountList: summaryOfSubAccountFuturesAccountV2Subaccountlist[]\n}\n\nexport interface summaryOfSubAccountFuturesAccountV2Subaccountlist {\n    email: string\n    totalInitialMargin: string\n    totalMaintenanceMargin: string\n    totalMarginBalance: string\n    totalOpenOrderInitialMargin: string\n    totalPositionInitialMargin: string\n    totalUnrealizedProfit: string\n    totalWalletBalance: string\n    asset: string\n}\n\nexport interface futuresPositionriskOfSubAccountV2Options {\n    recvWindow?: number;\n}\n\nexport interface futuresPositionriskOfSubAccountV2Response {\n    futurePositionRiskVos: futurePositionRiskVos[];\n}\n\nexport interface futurePositionRiskVos {\n    entryPrice: string;\n    leverage: string;\n    maxNotional: string;\n    liquidationPrice: string;\n    markPrice: string;\n    positionAmount: string;\n    symbol: string;\n    unrealizedProfit: string;\n}\n\nexport interface enableLeverageTokenForSubAccountOptions {\n    recvWindow?: number;\n}\n\nexport interface enableLeverageTokenForSubAccountResponse {\n    email: string;\n    enableBlvt: boolean;\n}\n\nexport interface getIpRestrictionForASubAccountApiKeyOptions {\n    recvWindow?: number;\n}\n\nexport interface getIpRestrictionForASubAccountApiKeyResponse {\n    ipRestrict: string;\n    ipList: string[];\n    updateTime: number;\n    apiKey: string;\n}\n\nexport interface deleteIpListForASubAccountApiKeyOptions {\n    ipAddress?: string;\n    thirdPartyName?: string;\n    recvWindow?: number;\n}\n\nexport interface deleteIpListForASubAccountApiKeyResponse {\n    ipRestrict: string;\n    ipList: string[];\n    updateTime: number;\n    apiKey: string;\n}\n\nexport interface addIpRestrictionForSubAccountApiKeyOptions {\n    ipAddress?: string;\n    recvWindow?: number;\n}\n\nexport interface addIpRestrictionForSubAccountApiKeyResponse {\n    status: string;\n    ipList: string[];\n    updateTime: number;\n    apiKey: string;\n}\n\nexport interface depositAssetsIntoTheManagedSubAccountOptions {\n    recvWindow?: number;\n}\n\nexport interface depositAssetsIntoTheManagedSubAccountResponse {\n    tranId: number;\n}\n\nexport interface getManagedSubAccountAssetDetailsOptions {\n    recvWindow?: number;\n}\n\nexport interface getManagedSubAccountAssetDetailsResponse {\n    coin: string;\n    name: string;\n    totalBalance: string;\n    availableBalance: string;\n    inOrder: string;\n    btcValue: string;\n}\n\nexport interface withdrawlAssetsFromTheManagedSubAccountOptions {\n    transferDate?: number;\n    recvWindow?: number;\n}\n\nexport interface withdrawlAssetsFromTheManagedSubAccountResponse {\n    tranId: number;\n}\n\nexport interface getManagedSubAccountSnapshotOptions {\n    startTime?: number;\n    endTime?: number;\n    limit?: number;\n    recvWindow?: number;\n}\n\nexport interface getManagedSubAccountSnapshotResponse {\n    code: number;\n    msg: string;\n    snapshotVos: snapshotVos[];\n}\n\nexport interface snapshotVos {\n    data: managedSubAccountSnapshotData;\n    type: string;\n    updateTime: number;\n}\n\nexport interface managedSubAccountSnapshotData {\n    balances: object\n    totalAssetOfBtc: string\n}\n\nexport interface getManagedSubAccountTransferLogOptions {\n    transfers?: string;\n    transferFunctionAccountType?: SubAccountTransferLog;\n}\n\nexport interface getManagedSubAccountTransferLogResponse {\n    managerSubTransferHistoryVos: managerSubTransferHistoryVos[];\n    count: number;\n}\n\nexport interface managerSubTransferHistoryVos {\n    fromEmail: string;\n    fromAccountType: FromAccountType;\n    toEmail: string;\n    toAccountType: ToAccountType;\n    asset: string;\n    amount: string;\n    scheduledData: number;\n    createTime: number;\n    status: SubAccountStatus;\n    tranId: number;\n}\n\nexport interface getManagedSubAccountTransferLogForTradeParentOptions {\n    transfers?: string;\n    transferFunctionAccountType?: SubAccountTransferLog;\n}\n\nexport interface getManagedSubAccountTransferLogForTradeParentResponse {\n    managerSubTransferHistoryVos: managerSubTransferHistoryVos[];\n    count: number;\n}\n\nexport interface getManagedSubAccountFuturesAssetDetailsResponse {\n    code: string;\n    message: string;\n    snapshotVos: futuresAssetDetailsSnapshotVos[];\n}\n\nexport interface futuresAssetDetailsSnapshotVos {\n    data: futuresAssetDetailsSnapshotData;\n    type: string;\n    updateTime: number;\n}\n\nexport interface futuresAssetDetailsSnapshotData {\n    assets: futuresAssetDetailsSnapshotDataAssets[];\n    position: futuresAssetDetailsSnapshotDataPosition[];\n}\n\nexport interface futuresAssetDetailsSnapshotDataAssets {\n    asset: string;\n    marginBalance: number;\n    walletBalance: number;\n}\n\nexport interface futuresAssetDetailsSnapshotDataPosition {\n    symbol: string;\n    entryPrice: number;\n    markPrice: number;\n    positionAmt: number;\n}\n\nexport interface getManagedSubAccountMarginAssetDetailsResponse {\n    margin: string;\n    totalAssetOfBtc: string;\n    totalLiabilityOfBtc: string;\n    totalNetAssetOfBtc: string;\n    userAssets: userAssets[];\n}\n\nexport interface userAssets {\n    asset: string;\n    borrowed: string;\n    free: string;\n    interest: string;\n    locked: string;\n    netAsset: string;\n}\n\nexport interface getSubAccountAssetsForMasterAccountOptions {\n    recvWindow?: number;\n}\n\nexport interface getSubAccountAssetsForMasterAccountResponse {\n    balances: getSubAccountAssetsForMasterAccountBalances[];\n}\n\nexport interface getSubAccountAssetsForMasterAccountBalances {\n    freeze: string;\n    withdrawing: string;\n    asset: string;\n    free: string;\n    locked: string;\n}\n\nexport interface getManagedSubAccountListOptions {\n    email?: string;\n    page?: number;\n    limit?: number;\n    recvWindow?: number;\n}\n\nexport interface getManagedSubAccountListResponse {\n    total: number;\n    managerSubUserInfoVoList: managerSubUserInfoVoList[];\n}\n\nexport interface managerSubUserInfoVoList {\n    rootUserId: number;\n    managersubUserId: number;\n    bindParentUserId: number;\n    email: string;\n    insertTimeStamp: number;\n    bindParentEmail: string;\n    isSubUserEnabled: boolean;\n    isUserActive: boolean;\n    isMarginEnabled: boolean;\n    isFutureEnabled: boolean;\n    isSignedLVTRiskAgreement: boolean;\n}\n\nexport interface getSubAccountTransactionStatisticsForMasterAccountOptions {\n    recvWindow?: number;\n}\n\nexport interface getSubAccountTransactionStatisticsForMasterAccountResponse {\n    recent30BtcTotal: string;\n    recent30BtcFuturesTotal: string;\n    recent30BtcMarginTotal: string;\n    recent30BusdTotal: string;\n    recent30BusdFuturesTotal: string;\n    recent30BusdMarginTotal: string;\n    tradeInfoVos: tradeInfoVos[];\n}\n\nexport interface tradeInfoVos {\n    userId: number;\n    btc: number;\n    btcFutures: number;\n    btcMargin: number;\n    busd: number;\n    busdFutures: number;\n    busdMargin: number;\n    date: number;\n}\n\nexport interface getManagedSubAccountDepositAddressOptions {\n    network?: number;\n    recvWindow?: number;\n}\n\nexport interface getManagedSubAccountDepositAddressResponse {\n    coin: string;\n    address: string;\n    tag: string;\n    url: string;\n}\n\nexport interface enableOptionsForSubAccountOptions {\n    recvWindow?: number;\n}\n\nexport interface enableOptionsForSubAccountResponse {\n    email: string;\n    isEOptionsEnabled: boolean;\n}\n\nexport interface getManagedSubAccountTransferLogForTradeSubOptions {\n    transfers?: string;\n    transferFunctionAccountType?: SubAccountTransferLog;\n    recvWindow?: number;\n}\n\nexport interface getManagedSubAccountTransferLogForTradeSubResponse {\n    managerSubTransferHistoryVos: managerSubTransferHistoryVos[];\n    count: number;\n}","import {\n    AccountSnapshotType,\n    CancelResult,\n    NewOrderRespType,\n    NewOrderResult,\n    OrderListStatusType,\n    OrderListOrderStatus,\n    OrderListAboveBelowType,\n    OrderStatus,\n    OrderType,\n    Permissions,\n    SelfTradePreventionMode,\n    Side,\n    StopLimitTimeInForce,\n    TimeInForce,\n    WorkingFloor\n} from '../../enum';\n\nexport interface testNewOrderOptions {\n    timeInForce?: TimeInForce;\n    quantity?: number;\n    quoteOrderQty?: number;\n    price?: number;\n    newClientOrderId?: string;\n    strategyId?: number;\n    strategyType?: number;\n    stopPrice?: number;\n    trailingDelta?: number;\n    icebergQty?: number;\n    newOrderRespType?: NewOrderRespType;\n    selfTradePreventionMode?: SelfTradePreventionMode;\n    recvWindow?: number;\n    computeCommissionRates?: boolean;\n}\n\nexport interface testNewOrderResponse {\n    standardCommissionForOrder: commissionParams;\n    taxCommissionForOrder: commissionParams;\n    discount: discount;\n}\n\nexport interface commissionParams {\n    maker: string;\n    taker: string;\n}\n\nexport interface discount {\n    enabledForAccount: boolean;\n    enabledForSymbol: boolean;\n    discountAsset: string;\n    discount: string;\n}\n\nexport interface getOrderOptions {\n    orderId?: number;\n    origClientOrderId?: string;\n    recvWindow?: number;\n}\n\nexport interface getOrderResponse {\n    symbol: string;\n    orderId: number;\n    orderListId: number;\n    clientOrderId: string;\n    price: string;\n    origQty: string;\n    executedQty: string;\n    cummulativeQuoteQty: string;\n    status: OrderStatus | '';\n    timeInForce: TimeInForce | '';\n    type: OrderType | '';\n    side: Side | '';\n    stopPrice: string;\n    icebergQty: string;\n    time: number;\n    updateTime: number;\n    isWorking: boolean;\n    workingTime: number;\n    origQuoteOrderQty: string;\n    selfTradePreventionMode: SelfTradePreventionMode | '';\n}\n\nexport interface newOrderOptions {\n    timeInForce?: TimeInForce;\n    quantity?: number;\n    quoteOrderQty?: number;\n    price?: number;\n    newClientOrderId?: string;\n    strategyId?: number;\n    strategyType?: number;\n    stopPrice?: number;\n    trailingDelta?: number;\n    icebergQty?: number;\n    newOrderRespType?: NewOrderRespType;\n    selfTradePreventionMode?: SelfTradePreventionMode;\n    recvWindow?: number;\n}\n\nexport interface newOrderResponse {\n    symbol: string;\n    orderId: number;\n    orderListId: number;\n    clientOrderId: string;\n    transactTime: number;\n    price?: string;\n    origQty?: string;\n    executedQty?: string;\n    cummulativeQuoteQty?: string;\n    status?: OrderStatus;\n    timeInForce?: TimeInForce;\n    type?: OrderType;\n    side?: Side;\n    workingTime?: number;\n    selfTradePreventionMode?: SelfTradePreventionMode;\n    fills?: fill[] | [];\n}\n\nexport interface fill {\n    price: string;\n    qty: string;\n    commission: string;\n    commissionAsset: string;\n    tradeId: number;\n}\n\nexport interface cancelOrderOptions {\n    orderId?: number;\n    origClientOrderId?: string;\n    newClientOrderId?: string;\n    cancelRestrictions?: 'ONLY_NEW' | 'ONLY_PARTIALLY_FILLED';\n    recvWindow?: number;\n}\n\nexport interface cancelOrderResponse {\n    symbol: string;\n    origClientOrderId: string;\n    orderId: number;\n    orderListId: number;\n    clientOrderId: string;\n    transactTime: number;\n    price: string;\n    origQty: string;\n    executedQty: string;\n    cummulativeQuoteQty: string;\n    status: OrderStatus | '';\n    timeInForce: TimeInForce | '';\n    type: OrderType | '';\n    side: Side | '';\n    selfTradePreventionMode: SelfTradePreventionMode | '';\n}\n\nexport interface cancelAnExistingOrderAndSendANewOrderOptions {\n    timeInForce?: TimeInForce;\n    quantity?: number;\n    quoteOrderQty?: number;\n    price?: number;\n    cancelNewClientOrderId?: string;\n    cancelOrigClientOrderId?: string;\n    cancelOrderId?: number;\n    newClientOrderId?: string;\n    strategyId?: number;\n    strategyType?: number;\n    stopPrice?: number;\n    trailingDelta?: number;\n    icebergQty?: number;\n    newOrderRespType?: NewOrderRespType;\n    recvWindow?: number;\n}\n\nexport interface cancelAnExistingOrderAndSendANewOrderResponse {\n    cancelResult: CancelResult;\n    newOrderResult: NewOrderResult;\n    cancelResponse: cancelAnExistingOrderAndSendANewOrderCancelresponse;\n    newOrderResponse: newOrderResponse;\n}\n\nexport interface cancelAnExistingOrderAndSendANewOrderCancelresponse {\n    symbol: string;\n    origClientOrderId: string;\n    orderId: number;\n    orderListId: number;\n    clientOrderId: string;\n    transactTime: number;\n    price: string;\n    origQty: string;\n    executedQty: string;\n    cummulativeQuoteQty: string;\n    status: OrderStatus | '';\n    timeInForce: TimeInForce | '';\n    type: OrderType | '';\n    side: Side | '';\n    selfTradePreventionMode: SelfTradePreventionMode | '';\n}\n\nexport interface currentOpenOrdersOptions {\n    symbol?: string;\n    recvWindow?: number;\n}\n\nexport interface currentOpenOrdersResponse {\n    symbol: string;\n    orderId: number;\n    orderListId: number;\n    clientOrderId: string;\n    price: string;\n    origQty: string;\n    executedQty: string;\n    cummulativeQuoteQty: string;\n    status: OrderStatus | '';\n    timeInForce: TimeInForce | '';\n    type: OrderType | '';\n    side: Side | '';\n    stopPrice: string;\n    icebergQty: string;\n    time: number;\n    updateTime: number;\n    isWorking: boolean;\n    workingTime: number;\n    origQuoteOrderQty: string;\n    selfTradePreventionMode: SelfTradePreventionMode | '';\n}\n\nexport interface cancelAllOpenOrdersOnASymbolOptions {\n    recvWindow?: number;\n}\n\nexport interface cancelAllOpenOrdersOnASymbolResponse {\n    symbol: string;\n    origClientOrderId: string;\n    orderId: number;\n    orderListId: number;\n    clientOrderId: string;\n    transactTime: number;\n    price: string;\n    origQty: string;\n    executedQty: string;\n    cummulativeQuoteQty: string;\n    status: OrderStatus | '';\n    timeInForce: TimeInForce | '';\n    type: OrderType | '';\n    side: Side | '';\n    selfTradePreventionMode: SelfTradePreventionMode | '';\n}\n\nexport interface allOrdersOptions {\n    orderId?: number;\n    startTime?: number;\n    endTime?: number;\n    limit?: number;\n    recvWindow?: number;\n}\n\nexport interface allOrdersResponse {\n    symbol: string;\n    orderId: number;\n    orderListId: number;\n    clientOrderId: string;\n    price: string;\n    origQty: string;\n    executedQty: string;\n    cummulativeQuoteQty: string;\n    status: OrderStatus | '';\n    timeInForce: TimeInForce | '';\n    type: OrderType | '';\n    side: Side | '';\n    stopPrice: string;\n    icebergQty: string;\n    time: number;\n    updateTime: number;\n    isWorking: boolean;\n    workingTime: number;\n    origQuoteOrderQty: string;\n    selfTradePreventionMode: SelfTradePreventionMode | '';\n}\n\nexport interface newOcoOptions {\n    listClientOrderId?: string;\n    aboveClientOrderId?: string;\n    aboveIcebergQty?: number;\n    abovePrice?: number;\n    aboveStopPrice?: number;\n    aboveTrailingDelta?: number;\n    aboveTimeInForce?: StopLimitTimeInForce;\n    aboveStrategyId?: number;\n    aboveStrategyType?: number;\n    belowClientOrderId?: string;\n    belowIcebergQty?: number;\n    belowPrice?: number;\n    belowStopPrice?: number;\n    belowTrailingDelta?: number;\n    belowTimeInForce?: StopLimitTimeInForce;\n    belowStrategyId?: number;\n    belowStrategyType?: number;\n    newOrderRespType?: NewOrderRespType;\n    selfTradePreventionMode?: SelfTradePreventionMode;\n    recvWindow?: number;\n}\n\nexport interface newOcoResponse {\n    orderListId: number;\n    contingencyType: string;\n    listStatusType: OrderListStatusType;\n    listOrderStatus: OrderListOrderStatus;\n    listClientOrderId: string;\n    transactionTime: number;\n    symbol: string;\n    orders: newOrderListOrders[];\n    orderReports: newOrderListOrderReports[];\n}\n\nexport interface newOrderListOrders {\n    symbol: string;\n    orderId: number;\n    clientOrderId: string;\n}\n\nexport interface newOrderListOrderReports {\n    symbol: string;\n    orderId: number;\n    orderListId: number;\n    clientOrderId: string;\n    transactTime: number;\n    price: string;\n    origQty: string;\n    executedQty: string;\n    cummulativeQuoteQty: string;\n    status: OrderStatus | '';\n    timeInForce: TimeInForce | '';\n    type: OrderType | '';\n    side: Side | '';\n    stopPrice?: string;\n    workingTime: string | number;\n    icebergQty?: string;\n    selfTradePreventionMode: SelfTradePreventionMode | '';\n}\n\nexport interface newOtoOptions {\n    listClientOrderId?: string;\n    workingIcebergQty?: number;\n    newOrderRespType?: NewOrderRespType;\n    selfTradePreventionMode?: string;\n    workingClientOrderId?: string;\n    workingTimeInForce?: TimeInForce;\n    workingStrategyId?: number;\n    workingStrategyType?: number;\n    pendingClientOrderId?: string;\n    pendingPrice?: number;\n    pendingStopPrice?: number;\n    pendingTrailingDelta?: number;\n    pendingIcebergQty?: number;\n    pendingTimeInForce?: TimeInForce;\n    pendingStrategyId?: number;\n    pendingStrategyType?: number;\n    recvWindow?: number;\n}\n\nexport interface newOtoResponse {\n    orderListId: number;\n    contingencyType: string;\n    listStatusType: OrderListStatusType;\n    listOrderStatus: OrderListOrderStatus;\n    listClientOrderId: string;\n    transactionTime: number;\n    symbol: string;\n    orders: newOrderListOrders[];\n    orderReports: newOrderListOrderReports[];\n}\n\nexport interface newOtocoOptions {\n    listClientOrderId?: string;\n    newOrderRespType?: NewOrderRespType;\n    selfTradePreventionMode?: string;\n    workingClientOrderId?: string;\n    workingIcebergQty?: number;\n    workingTimeInForce?: TimeInForce;\n    workingStrategyId?: number;\n    workingStrategyType?: number;\n    pendingAboveClientOrderId?: string;\n    pendingAbovePrice?: number;\n    pendingAboveStopPrice?: number;\n    pendingAboveTrailingDelta?: number;\n    pendingAboveIcebergQty?: number;\n    pendingAboveTimeInForce?: TimeInForce;\n    pendingAboveStrategyId?: number;\n    pendingAboveStrategyType?: number;\n    pendingBelowType?: OrderListAboveBelowType;\n    pendingBelowClientOrderId?: string;\n    pendingBelowPrice?: number;\n    pendingBelowStopPrice?: number;\n    pendingBelowTrailingDelta?: number;\n    pendingBelowIcebergQty?: number;\n    pendingBelowTimeInForce?: TimeInForce;\n    pendingBelowStrategyId?: number;\n    pendingBelowStrategyType?: number;\n    recvWindow?: number;\n}\n\nexport interface newOtocoResponse {\n    orderListId: number;\n    contingencyType: string;\n    listStatusType: OrderListStatusType;\n    listOrderStatus: OrderListOrderStatus;\n    listClientOrderId: string;\n    transactionTime: number;\n    symbol: string;\n    orders: newOrderListOrders[];\n    orderReports: newOrderListOrderReports[];\n}\n\nexport interface getOcoOptions {\n    orderListId?: number;\n    origClientOrderId?: string;\n    recvWindow?: number;\n}\n\nexport interface getOcoResponse {\n    orderListId: number;\n    contingencyType: string;\n    listStatusType: OrderListStatusType;\n    listOrderStatus: OrderListOrderStatus;\n    listClientOrderId: string;\n    transactionTime: number;\n    symbol: string;\n    orders: getOcoOrders[];\n}\n\nexport interface getOcoOrders {\n    symbol: string;\n    orderId: number;\n    clientOrderId: string;\n}\n\nexport interface cancelOcoOptions {\n    orderListId?: number;\n    listClientOrderId?: string;\n    newClientOrderId?: string;\n    recvWindow?: number;\n}\n\nexport interface cancelOcoResponse {\n    orderListId: number;\n    contingencyType: string;\n    listStatusType: OrderListStatusType;\n    listOrderStatus: OrderListOrderStatus;\n    listClientOrderId: string;\n    transactionTime: number;\n    symbol: string;\n    orders: cancelOcoOrders[];\n    orderReports: cancelOcoOrderReports[];\n}\n\nexport interface cancelOcoOrders {\n    symbol: string;\n    orderId: number;\n    clientOrderId: string;\n}\n\nexport interface cancelOcoOrderReports {\n    symbol: string;\n    origClientOrderId: string;\n    orderId: number;\n    orderListId: number;\n    clientOrderId: string;\n    transactTime: number;\n    price: string;\n    origQty: string;\n    executedQty: string;\n    cummulativeQuoteQty: string;\n    status: OrderStatus | '';\n    timeInForce: TimeInForce | '';\n    type: OrderType | '';\n    side: Side | '';\n    stopPrice: string;\n    selfTradePreventionMode: SelfTradePreventionMode | '';\n}\n\nexport interface getAllOcoOptions {\n    fromId?: number;\n    startTime?: number;\n    endTime?: number;\n    limit?: number;\n    recvWindow?: number;\n}\n\nexport interface getAllOcoResponse {\n    orderListId: number;\n    contingencyType: string;\n    listStatusType: OrderListStatusType;\n    listOrderStatus: OrderListOrderStatus;\n    listClientOrderId: string;\n    transactionTime: number;\n    symbol: string;\n    isIsolated: boolean;\n    orders: getAllOcoOrders[];\n}\n\n\nexport interface getAllOcoOrders {\n    symbol: string;\n    orderId: number;\n    clientOrderId: string;\n}\n\n\nexport interface getOpenOcoOptions {\n    recvWindow?: number;\n}\n\nexport interface getOpenOcoResponse {\n    orderListId: number;\n    contingencyType: string;\n    listStatusType: OrderListStatusType;\n    listOrderStatus: OrderListOrderStatus;\n    listClientOrderId: string;\n    transactionTime: number;\n    symbol: string;\n    orders: getOpenOcoOrders[];\n}\n\nexport interface getOpenOcoOrders {\n    symbol: string;\n    orderId: number;\n    clientOrderId: string;\n}\n\nexport interface accountInformationOptions {\n    omitZeroBalances?: boolean;\n    recvWindow?: number;\n}\n\nexport interface accountInformationResponse {\n    makerCommission: number;\n    takerCommission: number;\n    buyerCommission: number;\n    sellerCommission: number;\n    commissionRates: accountInformationCommissionrates;\n    canTrade: boolean;\n    canWithdraw: boolean;\n    canDeposit: boolean;\n    brokered: boolean;\n    requireSelfTradePrevention: boolean;\n    preventSor: boolean;\n    updateTime: number;\n    accountType: AccountSnapshotType;\n    balances: accountInformationBalances[];\n    permissions: Permissions[];\n    uid: number;\n}\n\nexport interface accountInformationCommissionrates {\n    maker: string;\n    taker: string;\n    buyer: string;\n    seller: string;\n}\n\nexport interface accountInformationBalances {\n    asset: string;\n    free: string;\n    locked: string;\n}\n\nexport interface accountTradeListOptions extends getAllOcoOptions {\n    orderId?: number;\n}\n\nexport interface accountTradeListResponse {\n    symbol: string;\n    id: number;\n    orderId: number;\n    orderListId: number;\n    price: string;\n    qty: string;\n    quoteQty: string;\n    commission: string;\n    commissionAsset: string;\n    time: number;\n    isBuyer: boolean;\n    isMaker: boolean;\n    isBestMatch: boolean;\n}\n\nexport interface getCurrentOrderCountUsageOptions {\n    recvWindow?: number;\n}\n\nexport interface getCurrentOrderCountUsageResponse {\n    rateLimitType: string;\n    interval: string;\n    intervalNum: number;\n    limit: number;\n    count: number;\n}\n\nexport interface testNewOrderSOROptions {\n    timeInForce?: TimeInForce;\n    price?: number;\n    newClientOrderId?: string;\n    strategyId?: number;\n    strategyType?: number;\n    icebergQty?: number;\n    newOrderRespType?: NewOrderRespType;\n    selfTradePreventionMode?: SelfTradePreventionMode;\n    recvWindow?: number;\n    computeCommissionRates?: boolean;\n}\n\nexport interface newOrderSOROptions {\n    timeInForce?: TimeInForce;\n    price?: number;\n    newClientOrderId?: string;\n    strategyId?: number;\n    strategyType?: number;\n    icebergQty?: number;\n    newOrderRespType?: NewOrderRespType;\n    selfTradePreventionMode?: SelfTradePreventionMode;\n    recvWindow?: number;\n}\n\nexport interface newOrderSORResponse {\n    symbol: string;\n    orderId: number;\n    orderListId: number;\n    clientOrderId: string;\n    transactTime: number;\n    price: string;\n    origQty: string;\n    executedQty: string;\n    cummulativeQuoteQty: string;\n    status: OrderStatus;\n    timeInForce: TimeInForce;\n    type: OrderType;\n    side: Side;\n    workingTime: number;\n    fills: fill[] | [];\n    workingFloor: WorkingFloor;\n    selfTradePreventionMode: SelfTradePreventionMode;\n    usedSor: boolean;\n}\n\nexport interface getPreventedMatchesOptions {\n    preventedMatchId?: number;\n    orderId?: number;\n    fromPreventedMatchId?: number;\n    limit?: number;\n    recvWindow?: number;\n}\n\nexport interface getPreventedMatchesResponse {\n    symbol: string;\n    preventedMatchId: number;\n    takerOrderId: number;\n    makerOrderId: number;\n    tradeGroupId: number;\n    selfTradePreventionMode: SelfTradePreventionMode;\n    price: string;\n    makerPreventedQuantity: string;\n    transactTime: number;\n}\n\nexport interface getAllocationsOptions {\n    startTime?: number;\n    endTime?: number;\n    fromAllocationId?: number;\n    limit?: number;\n    orderId?: number;\n    recvWindow?: number;\n}\n\nexport interface getAllocationsResponse {\n    symbol: string;\n    allocationId: number;\n    allocationType: string;\n    orderId: number;\n    orderListId: number;\n    price: string;\n    qty: string;\n    quoteQty: string;\n    commission: string;\n    commissionAsset: string;\n    time: number;\n    isBuyer: boolean;\n    isMaker: boolean;\n    isAllocator: boolean;\n}\n\nexport interface getCommissionRatesResponse {\n    symbol: string;\n    standardCommission: accountInformationCommissionrates;\n    taxCommission: accountInformationCommissionrates;\n    discount: discount;\n}","import { DustAccountType, UnivTransferType, NeedBtcValuation, UnivStatus } from '../../enum';\n\nexport interface systemStatusResponse {\n    status: number;\n    msg: string;\n}\n\nexport interface getSymbolsDelistScheduleOptions {\n    recvWindow?: number;\n}\n\nexport interface getSymbolsDelistScheduleResponse {\n    delistTime: number;\n    symbols: string[];\n}\n\nexport interface allCoinsInformationOptions {\n    recvWindow?: number;\n}\n\nexport interface allCoinsInformationResponse {\n    coin: string;\n    depositAllEnable: boolean;\n    free: string;\n    freeze: string;\n    ipoable: string;\n    ipoing: string;\n    isLegalMoney: boolean;\n    locked: string;\n    name: string;\n    networkList: allCoinsInformationNetworklist[];\n    storage: string;\n    trading: boolean;\n    withdrawAllEnable: boolean;\n    withdrawing: string;\n}\n\nexport interface allCoinsInformationNetworklist {\n    addressRegex: string;\n    coin: string;\n    depositDesc?: string;\n    depositEnable: boolean;\n    isDefault: boolean;\n    memoRegex: string;\n    minConfirm: number;\n    name: string;\n    network: string;\n    resetAddressStatus: boolean;\n    specialTips: string;\n    unLockConfirm: number;\n    withdrawDesc?: string;\n    withdrawEnable: boolean;\n    withdrawFee: string;\n    withdrawIntegerMultiple: string;\n    withdrawMax: string;\n    withdrawMin: string;\n    sameAddress: boolean;\n    estimatedArrivalTime: number;\n    busy: boolean;\n}\n\nexport interface dailyAccountSnapshotOptions {\n    startTime?: number;\n    endTime?: number;\n    limit?: number;\n    recvWindow?: number;\n}\n\nexport interface dailyAccountSnapshotResponse {\n    code: number;\n    msg: string;\n    snapshotVos: dailyAccountSnapshotSnapshotvos[];\n}\n\nexport interface dailyAccountSnapshotSnapshotvos {\n    data: dailyAccountSnapshotData;\n    type: string;\n    updateTime: number;\n}\n\nexport interface dailyAccountSnapshotData {\n    balances: dailyAccountSnapshotBalances[];\n    totalAssetOfBtc: string;\n}\n\nexport interface dailyAccountSnapshotBalances {\n    asset: string;\n    free: string;\n    locked: string;\n}\n\nexport interface disableFastWithdrawSwitchOptions {\n    recvWindow?: number;\n}\n\nexport interface disableFastWithdrawSwitchResponse { }\n\n\nexport interface enableFastWithdrawSwitchOptions {\n    recvWindow?: number;\n}\n\nexport interface enableFastWithdrawSwitchResponse { }\n\nexport interface withdrawOptions {\n    withdrawOrderId?: string;\n    network?: string;\n    addressTag?: string;\n    transactionFeeFlag?: boolean;\n    name?: string;\n    walletType?: number;\n    recvWindow?: number;\n}\n\nexport interface withdrawResponse {\n    id: string;\n}\n\nexport interface depositHistoryOptions {\n    coin?: string;\n    status?: number;\n    startTime?: number;\n    endTime?: number;\n    offset?: number;\n    limit?: number;\n    recvWindow?: number;\n    txId?: string;\n}\n\nexport interface depositHistoryResponse {\n    id: string;\n    amount: string;\n    coin: string;\n    network: string;\n    status: number;\n    address: string;\n    addressTag: string;\n    txId: string;\n    insertTime: number;\n    transferType: number;\n    unlockConfirm: number;\n    confirmTimes: string;\n    walletType: number;\n}\n\nexport interface withdrawHistoryOptions {\n    coin?: string;\n    withdrawOrderId?: string;\n    status?: number;\n    startTime?: number;\n    endTime?: number;\n    offset?: number;\n    limit?: number;\n    recvWindow?: number;\n}\n\nexport interface withdrawHistoryResponse {\n    id: string;\n    address: string;\n    amount: string;\n    applyTime: string;\n    coin: string;\n    withdrawOrderId?: string;\n    network: string;\n    transferType: number;\n    status: number;\n    transactionFee: string;\n    confirmNo: number;\n    info: string;\n    txId: string;\n    walletType: number;\n    txKey: string;\n    completeTime: string;\n}\n\nexport interface depositAddressOptions {\n    network?: string;\n    amount?: number;\n    recvWindow?: number;\n}\n\nexport interface depositAddressResponse {\n    address: string;\n    coin: string;\n    tag: string;\n    url: string;\n}\n\nexport interface depositAddressListOptions {\n    network?: string;\n}\n\nexport interface depositAddressListResponse {\n    coin: string;\n    address: string;\n    tag: string;\n    isDefault: number;\n}\n\nexport interface accountStatusOptions {\n    recvWindow?: number;\n}\n\nexport interface accountStatusResponse {\n    data: string;\n}\n\nexport interface accountApiTradingStatusOptions {\n    recvWindow?: number;\n}\n\nexport interface accountApiTradingStatusResponse {\n    data: accountApiTradingStatusData;\n}\n\nexport interface accountApiTradingStatusData {\n    isLocked: boolean;\n    plannedRecoverTime: number;\n    triggerCondition: accountApiTradingStatusTriggercondition;\n    updateTime: number;\n}\n\nexport interface accountApiTradingStatusTriggercondition {\n    GCR: number;\n    IFER: number;\n    UFR: number;\n}\n\nexport interface dustlogOptions {\n    accountType?: DustAccountType;\n    startTime?: number;\n    endTime?: number;\n    recvWindow?: number;\n}\n\nexport interface dustlogResponse {\n    total: number;\n    userAssetDribblets: dustlogUserassetdribblets[];\n}\n\nexport interface dustlogUserassetdribblets {\n    operateTime: number;\n    totalTransferedAmount: string;\n    totalServiceChargeAmount: string;\n    transId: number;\n    userAssetDribbletDetails: dustlogUserassetdribbletdetails[];\n}\n\nexport interface dustlogUserassetdribbletdetails {\n    transId: number;\n    serviceChargeAmount: string;\n    amount: string;\n    operateTime: number;\n    transferedAmount: string;\n    fromAsset: string;\n}\n\nexport interface getAssetsThatCanBeConvertedIntoBnbOptions {\n    accountType?: DustAccountType;\n    recvWindow?: number;\n}\n\nexport interface getAssetsThatCanBeConvertedIntoBnbResponse {\n    details: getAssetsThatCanBeConvertedIntoBnbDetails[];\n    totalTransferBtc: string;\n    totalTransferBNB: string;\n    dribbletPercentage: string;\n}\n\nexport interface getAssetsThatCanBeConvertedIntoBnbDetails {\n    asset: string;\n    assetFullName: string;\n    amountFree: string;\n    toBTC: string;\n    toBNB: string;\n    toBNBOffExchange: string;\n    exchange: string;\n}\n\n\nexport interface dustTransferOptions {\n    accountType?: DustAccountType;\n    recvWindow?: number;\n}\n\nexport interface dustTransferResponse {\n    totalServiceCharge: string;\n    totalTransfered: string;\n    transferResult: dustTransferTransferResult[];\n}\n\nexport interface dustTransferTransferResult {\n    amount: string;\n    fromAsset: string;\n    operateTime: number;\n    serviceChargeAmount: string;\n    tranId: number;\n    transferedAmount: string;\n}\n\nexport interface assetDividendRecordOptions {\n    asset?: string;\n    startTime?: number;\n    endTime?: number;\n    limit?: number;\n    recvWindow?: number;\n}\n\nexport interface assetDividendRecordResponse {\n    rows: assetDividendRecordRows[];\n    total: number;\n}\n\nexport interface assetDividendRecordRows {\n    id: number;\n    amount: string;\n    asset: string;\n    divTime: number;\n    enInfo: string;\n    tranId: number;\n}\n\nexport interface assetDetailOptions {\n    asset?: string;\n    recvWindow?: number;\n}\n\nexport interface assetDetailResponse {\n    CTR?: assetDetail;\n    SKY?: assetDetail;\n}\n\nexport interface queryUserWalletBalanceOptions {\n    recvWindow?: number;\n}\n\nexport interface queryUserWalletBalanceResponse {\n    activate: boolean;\n    balance: string;\n    walletName: string;\n}\n\nexport interface assetDetail {\n    minWithdrawAmount: string\n    depositStatus: boolean\n    withdrawFee: number\n    withdrawStatus: boolean\n    depositTip?: string\n}\n\nexport interface tradeFeeOptions {\n    symbol?: string;\n    recvWindow?: number;\n}\n\nexport interface tradeFeeResponse {\n    symbol: string;\n    makerCommission: string;\n    takerCommission: string;\n}\n\nexport interface getUserUniversalTransferHistoryOptions {\n    startTime?: number;\n    endTime?: number;\n    current?: number;\n    size?: number;\n    fromSymbol?: string;\n    toSymbol?: string;\n    recvWindow?: number;\n}\n\nexport interface getUserUniversalTransferHistoryResponse {\n    total: number;\n    rows: getUserUniversalTransferHistoryRows[];\n}\n\nexport interface getUserUniversalTransferHistoryRows {\n    asset: string;\n    amount: string;\n    type: UnivTransferType;\n    status: UnivStatus;\n    tranId: number;\n    timestamp: number;\n}\n\nexport interface userUniversalTransferOptions {\n    fromSymbol?: string;\n    toSymbol?: string;\n    recvWindow?: number;\n}\n\nexport interface userUniversalTransferResponse {\n    tranId: number;\n}\n\nexport interface fundingWalletOptions {\n    asset?: string;\n    needBtcValuation?: NeedBtcValuation;\n    recvWindow?: number;\n}\n\nexport interface fundingWalletResponse {\n    asset: string;\n    free: string;\n    locked: string;\n    freeze: string;\n    withdrawing: string;\n    btcValuation: string;\n}\n\nexport interface userAssetOptions {\n    asset?: string;\n    needBtcValuation?: boolean;\n    recvWindow?: number;\n}\n\nexport interface userAssetResponse {\n    asset: string;\n    free: string;\n    locked: string;\n    freeze: string;\n    withdrawing: string;\n    ipoable: string;\n    btcValuation: string;\n}\n\nexport interface getCloudminingPaymentAndRefundHistoryOptions {\n    tranId?: number;\n    clientTranId?: string;\n    asset?: string;\n    current?: number;\n    size?: number;\n}\n\nexport interface getCloudminingPaymentAndRefundHistoryResponse {\n    total: number;\n    rows: getCloudminingPaymentAndRefundHistoryRows[];\n}\n\nexport interface queryUserDelegationHistoryOptions {\n    type?: string;\n    asset?: string;\n    current?: number;\n    size?: number;\n    recvWindow?: number;\n}\n\nexport interface queryUserDelegationHistoryResponse {\n    total: number;\n    rows: queryUserDelegationHistoryRows[];\n}\n\nexport interface queryUserDelegationHistoryRows {\n    clientTranId: string;\n    transferType: string;\n    asset: string;\n    amount: string;\n    time: number;\n}\n\nexport interface accountInfoOptions {\n    recvWindow?: number;\n}\n\nexport interface accountInfoResponse {\n    vipLevel: number;\n    isMarginEnabled: boolean;\n    isFutureEnabled: boolean;\n    isOptionsEnabled: boolean;\n    isPortfolioMarginRetailEnabled: boolean;\n}\n\nexport interface getCloudminingPaymentAndRefundHistoryRows {\n    createTime: number;\n    tranId: number;\n    type: number;\n    asset: string;\n    amount: string;\n    status: string;\n}\n\nexport interface getApiKeyPermissionOptions {\n    recvWindow?: number;\n}\n\nexport interface getApiKeyPermissionResponse {\n    ipRestrict: boolean;\n    createTime: number;\n    enableWithdrawals: boolean;\n    enableInternalTransfer: boolean;\n    permitsUniversalTransfer: boolean;\n    enableVanillaOptions: boolean;\n    enableReading: boolean;\n    enableFutures: boolean;\n    enableMargin: boolean;\n    enableSpotAndMarginTrading: boolean;\n    enablePortfolioMarginTrading: boolean;\n}\n\nexport interface oneClickArrivalDepositApplyOptions {\n    depositId: string;\n    txId: string;\n    subAccountId?: number;\n    subUserId?: number;\n}\n\nexport interface oneClickArrivalDepositApplyResponse {\n    code: string;\n    message: string;\n    data: boolean;\n    success: boolean;\n}","import { SelfTradePreventionMode } from '../../../enum';\nimport { RestTradeTypes } from '../../../../index';\nimport { sendMessageOptions } from '../../../../setters/types';\n\nexport interface accountOptions extends sendMessageOptions {\n    recvWindow?: number;\n}\n\nexport interface orderLimitOptions extends sendMessageOptions {\n    recvWindow: number;\n}\n\nexport interface orderHistoryOptions extends sendMessageOptions {\n    orderId?: number;\n    startTime?: number;\n    endTime?: number;\n    limit?: number;\n    recvWindow?: number;\n}\n\nexport interface ocoOrderHistoryOptions extends sendMessageOptions {\n    fromId?: number;\n    startTime?: number;\n    endTime?: number;\n    limit?: number;\n    recvWindow?: number;\n}\n\nexport interface myTradesOptions extends sendMessageOptions {\n    orderId?: number;\n    startTime?: number;\n    endTime?: number;\n    fromId?: number;\n    limit?: number;\n    recvWindow?: number;\n}\n\nexport interface preventedMatchesOptions extends sendMessageOptions {\n    preventedMatchId?: number;\n    orderId?: number;\n    fromPreventedMatchId?: number;\n    limit?: number;\n    recvWindow?: number;\n}\n\nexport interface accountAllocationOptions extends sendMessageOptions {\n    startTime?: number;\n    endTime?: number;\n    fromAllocationId?: number;\n    limit?: number;\n    orderId?: number;\n    recvWindow?: number;\n}\n\nexport interface accountAllocationResponse extends sendMessageOptions {\n    symbol: string,\n    allocationId: number,\n    allocationType: string,\n    orderId: number,\n    orderListId: number,\n    price: string,\n    qty: string,\n    quoteQty: string,\n    commission: string,\n    commissionAsset: string,\n    time: number,\n    isBuyer: boolean,\n    isMaker: boolean,\n    isAllocator: boolean\n}\n\nexport interface orderHistoryResponse extends RestTradeTypes.getOrderResponse, sendMessageOptions {\n    preventedMatchId: number,\n    preventedQuantity: string\n}\n\nexport interface preventedMatchesResponse extends sendMessageOptions {\n    symbol: string,\n    preventedMatchId: number,\n    takerOrderId: number,\n    makerOrderId: number,\n    tradeGroupId: number,\n    selfTradePreventionMode: SelfTradePreventionMode,\n    price: string,\n    makerPreventedQuantity: string,\n    transactTime: number\n}\n","import { sendMessageOptions } from '../../../../setters/types';\nimport { ticker24hrResponse } from '../../../restful/market/types';\n\nexport interface pingOptions {\n    id?: number;\n}\n\nexport interface exchangeInfoOptions extends sendMessageOptions {\n    symbol?: string;\n    symbols?: string[];\n    permissions?: string[];\n}\n\nexport interface orderbookOptions extends sendMessageOptions {\n    limit?: number;\n}\n\nexport interface tradesOptions extends sendMessageOptions {\n    limit?: number;\n}\n\nexport interface historicalTradesOptions extends sendMessageOptions {\n    limit?: number;\n    fromId?: number;\n}\n\nexport interface aggTradesOptions extends sendMessageOptions {\n    limit?: number;\n    fromId?: number;\n    startTime?: number;\n    endTime?: number;\n}\n\nexport interface klinesOptions extends sendMessageOptions {\n    startTime?: number;\n    endTime?: number;\n    limit?: number;\n}\n\nexport interface uiKlinesOptions extends sendMessageOptions {\n    startTime?: number;\n    endTime?: number;\n    limit?: number;\n}\n\nexport interface ticker24hrOptions extends sendMessageOptions {\n    symbol?: string;\n    symbols?: string[];\n    type?: string;\n}\n\nexport interface tickerOptions extends sendMessageOptions {\n    symbol?: string;\n    symbols?: string[];\n    type?: string;\n}\n\nexport interface tickerPriceOptions extends sendMessageOptions {\n    symbol?: string;\n    symbols?: string[];\n}\n\nexport interface tickerBookOptions extends sendMessageOptions {\n    symbol?: string;\n    symbols?: string[];\n}\n\nexport interface Ticket24hr extends ticker24hrResponse, sendMessageOptions {\n    weightedAvgPrice: string;\n    lastQty: string;\n}\n","import { sendMessageOptions } from '../../../../setters/types';\nimport { CancelRestrictions, NewOrderRespType, SelfTradePreventionMode, StopLimitTimeInForce, TimeInForce } from '../../../enum';\nimport {\n    cancelOcoResponse,\n    cancelOcoOrderReports,\n    cancelOrderResponse,\n    cancelAnExistingOrderAndSendANewOrderResponse,\n    cancelAnExistingOrderAndSendANewOrderCancelresponse,\n    newOcoResponse\n} from '../../../restful/trade/types';\n\nexport interface newOrderOptions extends sendMessageOptions {\n    timeInForce?: TimeInForce | '';\n    price?: number;\n    quantity?: number;\n    quoteOrderQty?: number;\n    newClientOrderId?: string;\n    newOrderRespType?: NewOrderRespType;\n    stopPrice?: number;\n    trailingDelta?: number;\n    icebergQty?: number;\n    strategyId?: number;\n    strategyType?: number;\n    selfTradePreventionMode?: SelfTradePreventionMode;\n    recvWindow?: number;\n}\n\nexport interface testNewOrderOptions extends sendMessageOptions{\n    timeInForce?: TimeInForce | '';\n    price?: number;\n    quantity?: number;\n    quoteOrderQty?: number;\n    newClientOrderId?: string;\n    newOrderRespType?: NewOrderRespType;\n    stopPrice?: number;\n    trailingDelta?: number;\n    icebergQty?: number;\n    strategyId?: number;\n    strategyType?: number;\n    selfTradePreventionMode?: SelfTradePreventionMode;\n    recvWindow?: number;\n}\n\nexport interface getOrderOptions extends sendMessageOptions {\n    origClientOrderId?: string;\n    recvWindow?: number;\n}\n\nexport interface cancelOrderOptions extends sendMessageOptions {\n    origClientOrderId?: string;\n    newClientOrderId?: string;\n    cancelRestrictions?: CancelRestrictions;\n    recvWindow?: number;\n}\n\nexport interface cancelReplaceOrderOptions extends sendMessageOptions {\n    cancelOrigClientOrderId?: string;\n    cancelNewClientOrderId?: string;\n    timeInForce?: TimeInForce | '';\n    price?: number;\n    quantity?: number;\n    quoteOrderQty?: number;\n    newClientOrderId?: string;\n    newOrderRespType?: NewOrderRespType;\n    stopPrice?: number;\n    trailingDelta?: number;\n    icebergQty?: number;\n    strategyId?: number;\n    strategyType?: number;\n    selfTradePreventionMode?: SelfTradePreventionMode;\n    cancelRestrictions?: CancelRestrictions;\n    recvWindow?: number;\n}\n\nexport interface openOrdersOptions extends sendMessageOptions {\n    symbol?: string;\n    recvWindow?: number;\n}\n\nexport interface cancelOpenOrdersOptions extends sendMessageOptions {\n    recvWindow?: number;\n}\n\nexport interface newOCOOrderOptions extends sendMessageOptions {\n    listClientOrderId?: string;\n    aboveClientOrderId?: string;\n    aboveIcebergQty?: number;\n    abovePrice?: number;\n    aboveStopPrice?: number;\n    aboveTrailingDelta?: number;\n    aboveTimeInForce?: StopLimitTimeInForce;\n    aboveStrategyId?: number;\n    aboveStrategyType?: number;\n    belowClientOrderId?: string;\n    belowIcebergQty?: number;\n    belowPrice?: number;\n    belowStopPrice?: number;\n    belowTrailingDelta?: number;\n    belowTimeInForce?: StopLimitTimeInForce;\n    belowStrategyId?: number;\n    belowStrategyType?: number;\n    newOrderRespType?: NewOrderRespType;\n    selfTradePreventionMode?: SelfTradePreventionMode;\n    recvWindow?: number;\n}\n\nexport interface getOCOOrderOptions extends sendMessageOptions {\n    orderListId?: number;\n    recvWindow?: number;\n}\n\nexport interface cancelOCOOrderOptions extends sendMessageOptions {\n    listClientOrderId?: string;\n    newClientOrderId?: string;\n    recvWindow?: number;\n}\n\nexport interface getOCOOpenOrdersOptions extends sendMessageOptions {\n    recvWindow?: number;\n}\n\nexport interface newOrderSOROptions extends sendMessageOptions {\n    timeInForce?: TimeInForce | '';\n    price?: number;\n    newClientOrderId?: string;\n    newOrderRespType?: NewOrderRespType;\n    icebergQty?: number;\n    strategyId?: number;\n    strategyType?: number;\n    selfTradePreventionMode?: SelfTradePreventionMode;\n    recvWindow?: number;\n}\n\nexport interface cancelOCOOrder extends Omit<cancelOcoResponse, 'orderReports'>, sendMessageOptions {\n    orderReports: cancelOcoOrder[];\n}\n\nexport interface cancelOcoOrder extends Omit<cancelOcoOrderReports, 'origClientOrderId' | 'stopPrice' | 'transactTime'>, sendMessageOptions {\n    transactTime?: number;\n    stopPrice?: string;\n}\n\nexport interface cancelOpenOrder extends cancelOrderResponse, sendMessageOptions {\n    transactTime: number;\n    stopPrice: string;\n    icebergQty: string;\n    strategyId: number;\n    strategyType: number;\n}\n\nexport interface cancelOpenOCOOrder extends Omit<cancelOcoResponse, 'orderReports'>, sendMessageOptions {\n    orderReports: orderReport[];\n}\n\nexport interface orderReport extends Omit<cancelOcoOrderReports, 'stopPrice' | 'transactTime'>, sendMessageOptions {\n    transactTime?: number;\n    stopPrice?: string;\n}\n\nexport interface cancelOrder extends cancelOrderResponse, sendMessageOptions {\n    transactTime: number;\n}\n\nexport interface CancelReplaceOrder extends Omit<cancelAnExistingOrderAndSendANewOrderResponse, 'cancelResponse'>, sendMessageOptions {\n    cancelResponse: cancelResponse;\n}\n\nexport interface cancelResponse extends cancelAnExistingOrderAndSendANewOrderCancelresponse, sendMessageOptions {\n    transactTime: number;\n}\n\nexport interface newOCOOrder extends newOcoResponse, sendMessageOptions { }\n","export interface TradeMethods {\n    startUserDataStream(): void;\n    pingUserDataStream(listenKey: string): void;\n    stopUserDataStream(listenKey: string): void;\n}\n","import { Interval } from '../../enum';\n\nexport interface StreamMethods {\n    aggTrade(symbol: string): void;\n    trade(symbol: string): void;\n    kline(symbol: string, interval: Interval): void;\n    miniTicker(symbol: string): void;\n    ticker(symbol: string): void;\n    rollingWindowTicker(windowSize: string, symbol: string): void;\n    bookTicker(symbol: string): void;\n    partialBookDepth(symbol: string, levels: string, speed: string): void;\n    diffBookDepth(symbol: string, speed: string): void;\n    userData(listenKey: string): void;\n    unsubscribe(stream: string): void;\n}","import axios, { AxiosProxyConfig } from 'axios';\nimport { appName, appVersion } from './constants';\nimport * as crypto from 'crypto';\n\ninterface HttpRequestConfig {\n    baseURL: string;\n    apiKey: string;\n    method: string;\n    url: string;\n    timeout?: number;\n    proxy?: AxiosProxyConfig | false;\n    httpsAgent?: boolean;\n}\n\nexport async function httpRequest(config: HttpRequestConfig) {\n    try {\n        const { baseURL, apiKey, method, url, timeout, proxy, httpsAgent } = config;\n        const options = {\n            baseURL,\n            timeout,\n            proxy,\n            httpsAgent,\n            method,\n            url,\n            headers: {\n                'Content-Type': 'application/json',\n                'X-MBX-APIKEY': apiKey,\n                'User-Agent': `${appName}/${appVersion}`\n            }\n        };\n        const { data } = await axios.request(options);\n        return data;\n    } catch (error) {\n        if (axios.isAxiosError(error) && error.response) {\n            throw error.response.data.msg;\n        } else {\n            throw new Error('Http request error');\n        }\n    }\n}\n\nexport function removeEmptyValue(obj: object): object {\n    if (!(obj instanceof Object)) return {};\n    return Object.fromEntries(\n        Object.entries(obj).filter(([, value]) => value !== null && value !== undefined && value !== '')\n    );\n}\n\nexport function buildQueryString(params: object): string {\n    if (!params) return '';\n    return Object.entries(params)\n        .map(stringifyKeyValuePair)\n        .join('&');\n}\n\nfunction stringifyKeyValuePair([key, value]: [string, string]) {\n    const valueString = Array.isArray(value) ? `[\"${value.join('\",\"')}\"]` : value;\n    return `${key}=${encodeURIComponent(valueString)}`;\n}\n\ninterface paramObject {\n    [key: string]: string | number | boolean | object\n}\n\nexport function validateRequiredParameters(paramObject: paramObject) {\n    if (!paramObject || isEmptyValue(paramObject)) { throw new Error('Missing Parameters'); }\n    const emptyParams: string[] = [];\n    Object.keys(paramObject).forEach((param: string) => {\n        if (isEmptyValue(paramObject[param])) {\n            emptyParams.push(param);\n        }\n    });\n    if (emptyParams.length) { throw new Error('Missing Parameters'); }\n}\n\nexport function isEmptyValue(input: string | boolean | number | object): boolean {\n    /**\n     * Scope of empty value: falsy value (except for false and 0),\n     * string with white space characters only, empty object, empty array\n     */\n    return (!input && input !== false && input !== 0) ||\n        ((typeof input === 'string') && /^\\s+$/.test(input)) ||\n        (input instanceof Object && !Object.keys(input).length) ||\n        (Array.isArray(input) && !input.length);\n}\n\nexport function randomString() {\n    return crypto.randomBytes(16).toString('hex');\n}\n\nexport interface ObjectType {\n    [key: string]: string | number | boolean | object;\n}\n\nexport function sortObject(obj: ObjectType) {\n    return Object.keys(obj).sort().reduce((res: ObjectType, key: string) => {\n        res[key] = obj[key] as string | number | boolean | object;\n        return res;\n    }, {});\n}\n","{\n    \"name\": \"@binance/connector-typescript\",\n    \"version\": \"0.3.16\",\n    \"description\": \"This is a lightweight library that works as a connector to the Binance public API.\",\n    \"main\": \"./dist/index.js\",\n    \"module\": \"./dist/index.mjs\",\n    \"types\": \"./dist/index.d.ts\",\n    \"scripts\": {\n        \"test\": \"npx jest --runInBand\",\n        \"build\": \"tsup\",\n        \"dev\": \"ts-node ./examples/restful/market.ts\",\n        \"lint\": \"eslint --config .eslintrc.json --ext ts . --fix\"\n    },\n    \"keywords\": [\n        \"Binance\",\n        \"API\"\n    ],\n    \"author\": \"Binance\",\n    \"license\": \"MIT\",\n    \"files\": [\n        \"dist\"\n    ],\n    \"devDependencies\": {\n        \"@types/jest\": \"^29.5.4\",\n        \"@types/node\": \"22.9.0\",\n        \"@types/ws\": \"^8.5.5\",\n        \"@typescript-eslint/eslint-plugin\": \"7.17.0\",\n        \"@typescript-eslint/parser\": \"7.17.0\",\n        \"dotenv\": \"^16.3.1\",\n        \"eslint\": \"8.57.0\",\n        \"jest\": \"^29.6.4\",\n        \"ts-jest\": \"^29.1.1\",\n        \"ts-node\": \"^10.9.1\",\n        \"tsup\": \"^7.2.0\",\n        \"typescript\": \"^5.7.2\"\n    },\n    \"dependencies\": {\n        \"axios\": \"^1.7.4\",\n        \"ws\": \"^8.17.1\"\n    }\n}\n","import packageJson from '../../package.json';\n\nconst appName = packageJson.name;\nconst appVersion = packageJson.version;\n\nexport {\n    appName,\n    appVersion\n};\n","import { AxiosProxyConfig } from 'axios';\nimport { httpRequest, buildQueryString, removeEmptyValue } from '../helpers/utils';\nimport * as crypto from 'crypto';\nimport {\n    mixinConvert,\n    mixinDualInvestment,\n    mixinMargin,\n    mixinMarket,\n    mixinPortfolioMargin,\n    mixinSimpleEarn,\n    mixinStream,\n    mixinSubAccount,\n    mixinTrade,\n    mixinWallet,\n} from '../modules/restful/index';\nimport { mixinWsAccount, mixinWsMarket, mixinWsTrade, mixinWsUserData, WebsocketBase } from '../modules/websocket/websocketAPI';\nimport { mixinWsStream } from '../modules/websocket/websocketStream/stream';\nimport { WebsocketCallbacks, WebsocketStreamCallbacks, WebsocketConnection } from '../modules/websocket/websocketBase/types';\nimport { SpotOptions, WebsocketAPIOptions, WebsocketStreamAPIOptions } from './types';\nimport { Logger } from '../helpers/logger';\n\n\nexport const SpotBase = mixinConvert(mixinDualInvestment(mixinMargin(mixinMarket(mixinPortfolioMargin(mixinSimpleEarn(mixinStream(mixinSubAccount(mixinTrade(mixinWallet(class {\n    apiKey: string;\n    apiSecret: string;\n    baseURL: string;\n    timeout: number;\n    proxy: AxiosProxyConfig | false;\n    httpsAgent: boolean;\n    privateKey: Buffer;\n    privateKeyPassphrase: string;\n    privateKeyAlgo: 'RSA' | 'ED25519';\n    logger: Logger = Logger.getInstance();\n\n    constructor(apiKey: string, apiSecret: string, options: SpotOptions = {}) {\n        this.apiKey = apiKey;\n        this.apiSecret = apiSecret;\n        this.baseURL = options.baseURL || 'https://api.binance.com';\n        this.timeout = options.timeout || 0;\n        this.proxy = options.proxy || false;\n        this.httpsAgent = options.httpsAgent || false;\n        this.privateKey = options.privateKey || Buffer.from('');\n        this.privateKeyPassphrase = options.privateKeyPassphrase || '';\n        this.privateKeyAlgo = options.privateKeyAlgo || 'RSA';\n    }\n\n    async makeRequest(method: string, url: string) {\n        return await httpRequest({\n            method,\n            baseURL: this.baseURL,\n            url,\n            apiKey: this.apiKey,\n            timeout: this.timeout,\n            proxy: this.proxy,\n            httpsAgent: this.httpsAgent\n        });\n    }\n\n    preparePath(path: string, options?: object): string {\n        if (!options) return path;\n        options = removeEmptyValue(options);\n        const params = buildQueryString(options);\n        return `${path}?${params}`;\n    }\n\n    prepareSignedPath(path: string, options?: object): string {\n        const timeStamp = Date.now();\n        const newOptions = { ...options, timestamp: timeStamp };\n        options = removeEmptyValue(newOptions);\n        const params = buildQueryString(options);\n        let signature = '';\n        if (this.apiSecret) {\n            signature = crypto\n                .createHmac('sha256', this.apiSecret)\n                .update(params)\n                .digest('hex');\n\n        } else if (this.privateKeyAlgo === 'RSA') {\n            signature = crypto.sign('RSA-SHA256', Buffer.from(params), {\n                key: this.privateKey,\n                passphrase: this.privateKeyPassphrase\n            }).toString('base64');\n        } else if (this.privateKeyAlgo === 'ED25519') {\n            signature = crypto.sign(null, Buffer.from(params), {\n                key: this.privateKey,\n                padding: crypto.constants.RSA_PKCS1_PSS_PADDING,\n                saltLength: crypto.constants.RSA_PSS_SALTLEN_DIGEST\n            }).toString('base64');\n        } else {\n            throw new Error('privateKeyAlgo must be either \\'RSA\\' or \\'ED25519\\'');\n        }\n        return `${path}?${params}&signature=${signature}`;\n    }\n}))))))))));\n\nexport const WebsocketFeaturesBase = mixinWsAccount(mixinWsMarket(mixinWsTrade(mixinWsUserData(WebsocketBase(class {\n    apiKey: string;\n    apiSecret: string;\n    wsURL: string;\n    callbacks: WebsocketCallbacks;\n    reconnectDelay: number;\n    wsConnection: WebsocketConnection;\n    logger: Logger = Logger.getInstance();\n\n    constructor(apiKey: string, apiSecret: string, options?: WebsocketAPIOptions) {\n        this.apiKey = apiKey;\n        this.apiSecret = apiSecret;\n        this.wsURL = options && options.wsURL ? options.wsURL : 'wss://ws-api.binance.com:443/ws-api/v3';\n        this.callbacks = options && options.callbacks ? options.callbacks : {};\n        this.reconnectDelay = options && options.reconnectDelay ? options.reconnectDelay : 5000;\n        this.wsConnection = {};\n    }\n})))));\n\nexport const WebsocketStreamFeaturesBase = mixinWsStream(WebsocketBase(class {\n    wsURL: string;\n    callbacks: WebsocketStreamCallbacks;\n    reconnectDelay: number;\n    wsConnection: WebsocketConnection;\n    logger: Logger = Logger.getInstance();\n\n    constructor(options: WebsocketStreamAPIOptions = {}) {\n        this.wsURL = options.wsURL || 'wss://ws-api.binance.com:443/ws-api/v3';\n        this.callbacks = options.callbacks || {};\n        this.reconnectDelay = options.reconnectDelay || 5000;\n        this.wsConnection = {};\n    }\n}));\n","import { Constructor } from '../../../setters/types';\nimport { validateRequiredParameters } from '../../../helpers/utils';\nimport {\n    acceptQuoteOptions,\n    acceptQuoteResponse,\n    cancelLimitOrderOptions,\n    cancelLimitOrderResponse,\n    getConvertTradeHistoryOptions,\n    getConvertTradeHistoryResponse,\n    getOrderQuantityPrecisionPerAssetOptions,\n    getOrderQuantityPrecisionPerAssetResponse,\n    listAllConvertPairsOptions,\n    listAllConvertPairsResponse,\n    orderStatusOptions,\n    orderStatusResponse,\n    placeLimitOrderOptions,\n    placeLimitOrderResponse,\n    queryLimitOpenOrdersOptions,\n    queryLimitOpenOrdersResponse,\n    sendQuoteRequestOptions,\n    sendQuoteRequestResponse,\n} from './types';\nimport { ConvertMethods } from './methods';\nimport { ConvertExpiredType, ConvertSide } from '../../enum';\n\nexport function mixinConvert<T extends Constructor>(base: T): Constructor<ConvertMethods> & T {\n    return class extends base { \n        /**\n        * List All Convert Pairs (USER_DATA) {@link https://developers.binance.com/docs/convert/market-data/List-all-convert-pairs}\n        *\n        * @param {object} [options]\n        * @param {string} [options.fromAsset] - User spends coin\n        * @param {string} [options.toAsset] - User receives coin\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async listAllConvertPairs(options?: listAllConvertPairsOptions): Promise<listAllConvertPairsResponse[]> {\n            const url = this.prepareSignedPath('/sapi/v1/convert/exchangeInfo',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n  \n        /**\n        * Query order quantity precision per asset (USER_DATA) {@link https://developers.binance.com/docs/convert/market-data/Query-order-quantity-precision-per-asset}\n        *\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getOrderQuantityPrecisionPerAsset(options?: getOrderQuantityPrecisionPerAssetOptions): Promise<getOrderQuantityPrecisionPerAssetResponse[]> {\n            const url = this.prepareSignedPath('/sapi/v1/convert/assetInfo',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n  \n        /**\n        * Send quote request (USER_DATA) {@link https://developers.binance.com/docs/convert/trade/Send-quote-request}\n        *\n        * @param {string} fromAsset\n        * @param {string} toAsset\n        * @param {object} [options]\n        * @param {number} [options.fromAmount] - When specified, it is the amount you will be debited after the conversion\n        * @param {number} [options.toAmount] - When specified, it is the amount you will be debited after the conversion\n        * @param {WalletType} [options.walletType] - SPOT or FUNDING. Default is SPOT\n        * @param {ValidTime} [options.validTime] - 10s, 30s, 1m, 2m, default 10s\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async sendQuoteRequest(fromAsset: string, toAsset: string, options?: sendQuoteRequestOptions): Promise<sendQuoteRequestResponse> {\n            validateRequiredParameters({ fromAsset, toAsset });\n            const url = this.prepareSignedPath('/sapi/v1/convert/getQuote',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        fromAsset: fromAsset,\n                        toAsset: toAsset\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n  \n        /**\n        * Accept Quote (TRADE) {@link https://developers.binance.com/docs/convert/trade/Accept-Quote}\n        *\n        * @param {string} quoteId\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async acceptQuote(quoteId: string, options?: acceptQuoteOptions): Promise<acceptQuoteResponse> {\n            validateRequiredParameters({ quoteId });\n            const url = this.prepareSignedPath('/sapi/v1/convert/acceptQuote',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        quoteId: quoteId\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n  \n        /**\n        * Order status (USER_DATA) {@link https://developers.binance.com/docs/convert/trade/Order-Status}\n        *\n        * @param {object} [options]\n        * @param {string} [options.orderId] - Either orderId or quoteId is required\n        * @param {string} [options.quoteId] - Either orderId or quoteId is required\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async orderStatus(options?: orderStatusOptions): Promise<orderStatusResponse> {\n            const url = this.prepareSignedPath('/sapi/v1/convert/orderStatus',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n         * Place limit order (USER_DATA) {@link https://developers.binance.com/docs/convert/trade/Place-Order}\n         * \n         * @param {string} baseAsset - base asset (use the response fromIsBase from GET /sapi/v1/convert/exchangeInfo api to check which one is baseAsset)\n         * @param {string} quoteAsset - quote asset\n         * @param {number} limitPrice - Symbol limit price (from baseAsset to quoteAsset)\n         * @param {ConvertSide} side - BUY or SELL\n         * @param {ConvertExpiredType} expiredType - 1_D, 3_D, 7_D, 30_D (D means day)\n         * @param {object} [options]\n         * @param {number} [options.baseAmount] - Base asset amount. (One of baseAmount or quoteAmount is required)\n         * @param {number} [options.quoteAmount] - Quote asset amount. (One of baseAmount or quoteAmount is required)\n         * @param {WalletType} [options.walletType] - SPOT or FUNDING or SPOT_FUNDING. It is to use which type of assets. Default is SPOT.\n         * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n         */\n        async placeLimitOrder(baseAsset: string, quoteAsset: string, limitPrice: number, side: ConvertSide, expiredType: ConvertExpiredType, options?: placeLimitOrderOptions): Promise<placeLimitOrderResponse> {\n            validateRequiredParameters({ baseAsset, quoteAsset, limitPrice, side, expiredType });\n            const url = this.prepareSignedPath('/sapi/v1/convert/limit/placeOrder',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        baseAsset: baseAsset,\n                        quoteAsset: quoteAsset,\n                        limitPrice: limitPrice,\n                        side: side,\n                        expiredType: expiredType\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n         * Cancel limit order (USER_DATA) {@link https://developers.binance.com/docs/convert/trade/Cancel-Order}\n         * \n         * @param {number} orderId - The orderId from placeOrder api\n         * @param {object} [options]\n         * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n         */\n        async cancelLimitOrder(orderId: number, options?: cancelLimitOrderOptions): Promise<cancelLimitOrderResponse> {\n            validateRequiredParameters({ orderId });\n            const url = this.prepareSignedPath('/sapi/v1/convert/limit/cancelOrder',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        orderId: orderId\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n        /**\n         * Query limit open orders (USER_DATA) {@link https://developers.binance.com/docs/convert/trade/Query-Order}\n         * \n         * @param {object} [options]\n         * @param {number} [options.recvWindow] - default 100, max 1000\n         */\n        async queryLimitOpenOrders(options?: queryLimitOpenOrdersOptions): Promise<queryLimitOpenOrdersResponse> {\n            const url = this.prepareSignedPath('/sapi/v1/convert/limit/queryOpenOrders',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n  \n        /**\n        * Get Convert Trade History (USER_DATA) {@link https://developers.binance.com/docs/convert/trade/Get-Convert-Trade-History}\n        *\n        * @param {number} startTime - UTC timestamp in ms\n        * @param {number} endTime - UTC timestamp in ms\n        * @param {object} [options]\n        * @param {number} [options.limit] - default 100, max 1000\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getConvertTradeHistory(startTime: number, endTime: number, options?: getConvertTradeHistoryOptions): Promise<getConvertTradeHistoryResponse> {\n            validateRequiredParameters({ startTime, endTime });\n            const url = this.prepareSignedPath('/sapi/v1/convert/tradeFlow',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        startTime: startTime,\n                        endTime: endTime\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n    };\n}\n","import { Constructor } from '../../../setters/types';\nimport { validateRequiredParameters } from '../../../helpers/utils';\nimport {\n    getDualInvestmentProductListOptions,\n    getDualInvestmentProductListResponse,\n    subscribeDualInvestmentProductsOptions,\n    subscribeDualInvestmentProductsResponse,\n    getDualInvestmentPositionsOptions,\n    getDualInvestmentPositionsResponse,\n    checkDualInvestmentAccountsOptions,\n    checkDualInvestmentAccountsResponse,\n    changeAutoCompoundStatusOptions,\n    changeAutoCompoundStatusResponse,\n\n} from './types';\nimport { OptionType, AutoCompoundPlan } from '../../enum';\nimport { DualInvestmentMethods } from './methods';\n\nexport function mixinDualInvestment<T extends Constructor>(base: T): Constructor<DualInvestmentMethods> & T {\n    return class extends base {\n        \n        /**\n        * Get Dual Investment product list {@link https://developers.binance.com/docs/dual_investment/market-data}\n        *\n        * @param {OptionType} optionType - Input CALL or PUT\n        * @param {string} exercisedCoin - Target exercised asset, e.g.: If you subscribe to a high sell product (call option), you should input: optionType: CALL, exercisedCoin: USDT, investCoin: BNB; If you subscribe to a low buy product (put option), you should input: optionType: PUT, exercisedCoin: BNB, investCoin: USDT;\n        * @param {string} investCoin - Asset used for subscribing, e.g.: If you subscribe to a high sell product (call option), you should input: optionType: CALL, exercisedCoin: USDT, investCoin: BNB; If you subscribe to a low buy product (put option), you should input: optionType: PUT, exercisedCoin: BNB, investCoin: USDT;\n        * @param {object} [options]\n        * @param {number} [options.pageSize] - MIN 1, MAX 100; Default 100\n        * @param {number} [options.pageIndex] - Page number, default is first page, start form 1\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getDualInvestmentProductList(optionType: OptionType, exercisedCoin: string, investCoin: string, options?: getDualInvestmentProductListOptions): Promise<getDualInvestmentProductListResponse> {\n            validateRequiredParameters({ optionType, exercisedCoin, investCoin });\n            const url = this.prepareSignedPath('/sapi/v1/dci/product/list',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        optionType: optionType,\n                        exercisedCoin: exercisedCoin.toUpperCase(),\n                        investCoin: investCoin.toUpperCase()\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n  \n        /**\n        * Subscribe Dual Investment products (USER_DATA) {@link https://developers.binance.com/docs/dual_investment/trade}\n        *\n        * @param {string} id - get id from /sapi/v1/dci/product/list\n        * @param {string} orderId - get orderId from /sapi/v1/dci/product/list\n        * @param {number} depositAmount\n        * @param {AutoCompoundPlan} autoCompoundPlan - NONE: switch off the plan, STANDARD: standard plan, ADVANCED: advanced plan;\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async subscribeDualInvestmentProducts(id: string, orderId: string, depositAmount: number, autoCompoundPlan: AutoCompoundPlan, options?: subscribeDualInvestmentProductsOptions): Promise<subscribeDualInvestmentProductsResponse> {\n            validateRequiredParameters({ id, orderId, depositAmount, autoCompoundPlan });\n            const url = this.prepareSignedPath('/sapi/v1/dci/product/subscribe',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        id: id,\n                        orderId: orderId,\n                        depositAmount: depositAmount,\n                        autoCompoundPlan: autoCompoundPlan\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n  \n        /**\n        * Get Dual Investment positions (USER_DATA) {@link https://developers.binance.com/docs/dual_investment/trade/Get-Dual-Investment-positions}\n        *\n        * @param {object} [options]\n        * @param {Status} [options.status] - - PENDING: Products are purchasing, will give results later;, - PURCHASE_SUCCESS: purchase successfully;, - SETTLED: Products are finish settling;, - PURCHASE_FAIL: fail to purchase;, - REFUNDING: refund ongoing;, - REFUND_SUCCESS: refund to spot account successfully;, - SETTLING: Products are settling. , If don't fill this field, will response all the position status.\n        * @param {number} [options.pageSize] - MIN 1, MAX 100; Default 100\n        * @param {number} [options.pageIndex] - Page number, default is first page, start form 1\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getDualInvestmentPositions(options?: getDualInvestmentPositionsOptions): Promise<getDualInvestmentPositionsResponse> {\n            const url = this.prepareSignedPath('/sapi/v1/dci/product/positions',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n  \n        /**\n        * Check Dual Investment accounts (USER_DATA) {@link https://developers.binance.com/docs/dual_investment/trade/Check-Dual-Investment-accounts}\n        *\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async checkDualInvestmentAccounts(options?: checkDualInvestmentAccountsOptions): Promise<checkDualInvestmentAccountsResponse> {\n            const url = this.prepareSignedPath('/sapi/v1/dci/product/accounts',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n  \n        /**\n        * Change Auto-Compound status (USER_DATA) {@link https://developers.binance.com/docs/dual_investment/trade/Change-Auto-Compound-status}\n        *\n        * @param {string} positionId - Get positionId from /sapi/v1/dci/product/positions\n        * @param {AutoCompoundPlan} autoCompoundPlan - NONE: switch off the plan, STANDARD: standard plan, ADVANCED: advanced plan;\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async changeAutoCompoundStatus(positionId: string, autoCompoundPlan: AutoCompoundPlan, options?: changeAutoCompoundStatusOptions): Promise<changeAutoCompoundStatusResponse> {\n            validateRequiredParameters({ positionId, autoCompoundPlan });\n            const url = this.prepareSignedPath('/sapi/v1/dci/product/auto_compound/edit-status',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        positionId: positionId,\n                        autoCompoundPlan: autoCompoundPlan\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n    };\n}\n","import { Constructor } from '../../../setters/types';\nimport { validateRequiredParameters } from '../../../helpers/utils';\nimport {\n    adjustCrossMarginMaxLeverageResponse,\n    getAllCrossMarginPairsOptions,\n    getAllCrossMarginPairsResponse,\n    getAllMarginAssetsOptions,\n    getAllMarginAssetsResponse,\n    getCrossMarginAccountDetailsOptions,\n    getCrossMarginAccountDetailsResponse,\n    getCrossMarginTransferHistoryOptions,\n    getCrossMarginTransferHistoryResponse,\n    getForceLiquidationRecordOptions,\n    getForceLiquidationRecordResponse,\n    getInterestHistoryOptions,\n    getInterestHistoryResponse,\n    getMarginPriceIndexResponse,\n    getMarginAccountAllOrdersOptions,\n    getMarginAccountAllOrdersResponse,\n    getMarginAccountOpenOrdersOptions,\n    getMarginAccountOpenOrdersResponse,\n    getMarginAccountOrderOptions,\n    getMarginAccountOrderResponse,\n    marginAccountCancelAllOpenOrdersOnASymbolOptions,\n    marginAccountCancelAllOpenOrdersOnASymbolResponse,\n    marginAccountCancelOrderOptions,\n    marginAccountCancelOrderResponse,\n    marginAccountNewOrderOptions,\n    marginAccountNewOrderResponse,\n    marginAccountNewOcoOptions,\n    marginAccountNewOcoResponse,\n    getMarginAccountOcoOptions,\n    getMarginAccountOcoResponse,\n    marginAccountCancelOcoOptions,\n    marginAccountCancelOcoResponse,\n    getMarginAccountAllOcoOptions,\n    getMarginAccountAllOcoResponse,\n    getMarginAccountOpenOcoOptions,\n    getMarginAccountOpenOcoResponse,\n    getMarginAccountTradeListOptions,\n    getMarginAccountTradeListResponse,\n    getMaxBorrowOptions,\n    getMaxBorrowResponse,\n    getMaxTransferoutAmountOptions,\n    getMaxTransferoutAmountResponse,\n    getSummaryOfMarginAccountOptions,\n    getSummaryOfMarginAccountResponse,\n    getIsolatedMarginAccountInfoOptions,\n    getIsolatedMarginAccountInfoResponse,\n    disableIsolatedMarginAccountOptions,\n    disableIsolatedMarginAccountResponse,\n    enableIsolatedMarginAccountOptions,\n    enableIsolatedMarginAccountResponse,\n    getEnabledIsolatedMarginAccountLimitOptions,\n    getEnabledIsolatedMarginAccountLimitResponse,\n    getAllIsolatedMarginSymbolOptions,\n    getAllIsolatedMarginSymbolResponse,\n    toggleBnbBurnOnSpotTradeAndMarginInterestOptions,\n    toggleBnbBurnOnSpotTradeAndMarginInterestResponse,\n    getBnbBurnStatusOptions,\n    getBnbBurnStatusResponse,\n    marginInterestRateHistoryOptions,\n    marginInterestRateHistoryResponse,\n    getCrossMarginFeeDataOptions,\n    getCrossMarginFeeDataResponse,\n    getIsolatedMarginFeeDataOptions,\n    getIsolatedMarginFeeDataResponse,\n    getIsolatedMarginTierDataOptions,\n    getIsolatedMarginTierDataResponse,\n    getCurrentMarginOrderCountUsageOptions,\n    getCurrentMarginOrderCountUsageResponse,\n    crossMarginCollateralRatioResponse,\n    getSmallLiabilityExchangeCoinListOptions,\n    getSmallLiabilityExchangeCoinListResponse,\n    smallLiabilityExchangeOptions,\n    smallLiabilityExchangeResponse,\n    getSmallLiabilityExchangeHistoryOptions,\n    getSmallLiabilityExchangeHistoryResponse,\n    getFutureHoulyInterestRateResponse,\n    getTokensOrSymbolsDelistScheduleForCrossMarginAndIsolatedMarginOptions,\n    getTokensOrSymbolsDelistScheduleForCrossMarginAndIsolatedMarginResponse,\n    getMarginAvailableInventoryOptions,\n    getMarginAvailableInventoryResponse,\n    marginManualLiquidationOptions,\n    marginManualLiquidationResponse,\n    marginAccountNewOtoOptions,\n    marginAccountNewOtoResponse,\n    marginAccountNewOtocoOptions,\n    marginAccountNewOtocoResponse,\n    getLeverageBracketResponse,\n    marginAccountBorrowRepayOptions,\n    marginAccountBorrowRepayResponse,\n    getBorrowRepayRecordsOptions,\n    getBorrowRepayRecordsResponse\n} from './types';\nimport { MarginMethods } from './methods';\nimport { Side, OrderType, IsIsolatedMargin, MarginBorrowRepayType, OrderListAboveBelowType, OtoPendingType, OrderListWorkingType } from '../../enum';\n\nexport function mixinMargin<T extends Constructor>(base: T): Constructor<MarginMethods> & T {\n    return class extends base {\n        /**\n        * Get All Margin Assets (MARKET_DATA) {@link https://developers.binance.com/docs/margin_trading/market-data/Get-All-Margin-Assets}\n        * \n        * @param {object} [options]\n        * @param {string} [options.asset]\n        */\n        async getAllMarginAssets(options?: getAllMarginAssetsOptions): Promise<getAllMarginAssetsResponse[]> {\n            const url = this.prepareSignedPath('/sapi/v1/margin/allAssets',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Get All Cross Margin Pairs (MARKET_DATA) {@link https://developers.binance.com/docs/margin_trading/market-data/Get-All-Cross-Margin-Pairs}\n        * \n        * @param {object} [options]\n        * @param {string} [options.symbol]\n        */\n        async getAllCrossMarginPairs(options?: getAllCrossMarginPairsOptions): Promise<getAllCrossMarginPairsResponse[]> {\n            const url = this.prepareSignedPath('/sapi/v1/margin/allPairs',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Query Margin PriceIndex (MARKET_DATA) {@link https://developers.binance.com/docs/margin_trading/market-data/Query-Margin-PriceIndex}\n        *\n        * @param {string} symbol - Trading symbol, e.g. BNBUSDT\n        */\n        async getMarginPriceIndex(symbol: string): Promise<getMarginPriceIndexResponse> {\n            validateRequiredParameters({ symbol });\n            const url = this.preparePath('/sapi/v1/margin/priceIndex',\n                {\n                    symbol: symbol.toUpperCase()\n                });\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Margin Account New Order (TRADE) {@link https://developers.binance.com/docs/margin_trading/trade/Margin-Account-New-Order}\n        *\n        * @param {string} symbol - Trading symbol, e.g. BNBUSDT\n        * @param {Side} side\n        * @param {OrderType} type - Order type\n        * @param {object} [options]\n        * @param {IsIsolatedMargin} [options.isIsolated] - * `TRUE` - For isolated margin, * `FALSE` - Default, not for isolated margin\n        * @param {number} [options.quantity]\n        * @param {number} [options.quoteOrderQty] - Quote quantity\n        * @param {number} [options.price] - Order price\n        * @param {number} [options.stopPrice] - Used with STOP_LOSS, STOP_LOSS_LIMIT, TAKE_PROFIT, and TAKE_PROFIT_LIMIT orders.\n        * @param {string} [options.newClientOrderId] - Used to uniquely identify this cancel. Automatically generated by default\n        * @param {number} [options.icebergQty] - Used with LIMIT, STOP_LOSS_LIMIT, and TAKE_PROFIT_LIMIT to create an iceberg order.\n        * @param {NewOrderRespType} [options.newOrderRespType] - Set the response JSON.\n        * @param {SideEffectType} [options.sideEffectType] - Default `NO_SIDE_EFFECT`\n        * @param {TimeInForce} [options.timeInForce] - Order time in force\n        * @param {SelfTradePreventionMode} [options.selfTradePreventionMode] - The allowed enums is dependent on what is configured on the symbol. The possible supported values are EXPIRE_TAKER, EXPIRE_MAKER, EXPIRE_BOTH, NONE\n        * @param {Boolean} [options.autoRepayAtCancel] - Only when MARGIN_BUY or AUTO_BORROW_REPAY order takes effect, true means that the debt generated by the order needs to be repay after the order is cancelled. The default is true\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async marginAccountNewOrder(symbol: string, side: Side, type: OrderType, options?: marginAccountNewOrderOptions): Promise<marginAccountNewOrderResponse> {\n            validateRequiredParameters({ symbol, side, type });\n            const url = this.prepareSignedPath('/sapi/v1/margin/order',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        symbol: symbol.toUpperCase(),\n                        side: side,\n                        type: type\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n        * Margin Account Cancel Order (TRADE) {@link https://developers.binance.com/docs/margin_trading/trade/Margin-Account-Cancel-Order}\n        *\n        * @param {string} symbol - Trading symbol, e.g. BNBUSDT\n        * @param {object} [options]\n        * @param {IsIsolatedMargin} [options.isIsolated] - * `TRUE` - For isolated margin, * `FALSE` - Default, not for isolated margin\n        * @param {number} [options.orderId] - Order id\n        * @param {string} [options.origClientOrderId] - Order id from client\n        * @param {string} [options.newClientOrderId] - Used to uniquely identify this cancel. Automatically generated by default\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async marginAccountCancelOrder(symbol: string, options?: marginAccountCancelOrderOptions): Promise<marginAccountCancelOrderResponse> {\n            validateRequiredParameters({ symbol });\n            const url = this.prepareSignedPath('/sapi/v1/margin/order',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        symbol: symbol.toUpperCase()\n                    }\n                )\n            );\n            return await this.makeRequest('DELETE', url);\n        }\n\n\n        /**\n        * Margin Account Cancel all Open Orders on a Symbol (TRADE) {@link https://developers.binance.com/docs/margin_trading/trade/Margin-Account-Cancel-All-Open-Orders}\n        *\n        * @param {string} symbol - Trading symbol, e.g. BNBUSDT\n        * @param {object} [options]\n        * @param {IsIsolatedMargin} [options.isIsolated] - * `TRUE` - For isolated margin, * `FALSE` - Default, not for isolated margin\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async marginAccountCancelAllOpenOrdersOnASymbol(symbol: string, options?: marginAccountCancelAllOpenOrdersOnASymbolOptions): Promise<marginAccountCancelAllOpenOrdersOnASymbolResponse[]> {\n            validateRequiredParameters({ symbol });\n            const url = this.prepareSignedPath('/sapi/v1/margin/openOrders',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        symbol: symbol.toUpperCase()\n                    }\n                )\n            );\n            return await this.makeRequest('DELETE', url);\n        }\n\n\n        /**\n         * Adjust cross margin max leverage (USER_DATA) {@link https://developers.binance.com/docs/margin_trading/account/Adjust-Cross-Margin-Max-Leverage}\n         * \n         * @param {number} maxLeverage - Can only adjust 3 , 5 or 10，Example: maxLeverage=10 for Cross Margin Pro ，maxLeverage = 5 or 3 for Cross Margin Classic\n         */\n        async adjustCrossMarginMaxLeverage(maxLeverage: number): Promise<adjustCrossMarginMaxLeverageResponse> {\n            validateRequiredParameters({ maxLeverage });\n            const url = this.prepareSignedPath('/sapi/v1/margin/max-leverage',\n                {\n                    maxLeverage: maxLeverage\n                }\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n        * Get Cross Margin Transfer History (USER_DATA) {@link https://developers.binance.com/docs/margin_trading/transfer/Get-Cross-Margin-Transfer-History}\n        *\n        * @param {object} [options]\n        * @param {string} [options.asset]\n        * @param {GetCrossMargingTransferHistoryType} [options.type] - Transfer Type\n        * @param {number} [options.startTime] - UTC timestamp in ms\n        * @param {number} [options.endTime] - UTC timestamp in ms\n        * @param {number} [options.current] - Current querying page. Start from 1. Default:1\n        * @param {number} [options.size] - Default:10 Max:100\n        * @param {string} [options.isolatedSymbol] - Symbol in Isolated Margin\n        * @param {string} [options.archived] - Default: false. Set to true for archived data from 6 months ago\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getCrossMarginTransferHistory(options?: getCrossMarginTransferHistoryOptions): Promise<getCrossMarginTransferHistoryResponse> {\n            const url = this.prepareSignedPath('/sapi/v1/margin/transfer',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Get Interest History (USER_DATA) {@link https://developers.binance.com/docs/margin_trading/borrow-and-repay/Get-Interest-History}\n        *\n        * @param {object} [options]\n        * @param {string} [options.asset]\n        * @param {string} [options.isolatedSymbol] - Isolated symbol\n        * @param {number} [options.startTime] - UTC timestamp in ms\n        * @param {number} [options.endTime] - UTC timestamp in ms\n        * @param {number} [options.current] - Current querying page. Start from 1. Default:1\n        * @param {number} [options.size] - Default:10 Max:100\n        * @param {string} [options.archived] - Default: false. Set to true for archived data from 6 months ago\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getInterestHistory(options?: getInterestHistoryOptions): Promise<getInterestHistoryResponse> {\n            const url = this.prepareSignedPath('/sapi/v1/margin/interestHistory',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Get Force Liquidation Record (USER_DATA) {@link https://developers.binance.com/docs/margin_trading/trade/Get-Force-Liquidation-Record}\n        *\n        * @param {object} [options]\n        * @param {number} [options.startTime] - UTC timestamp in ms\n        * @param {number} [options.endTime] - UTC timestamp in ms\n        * @param {string} [options.isolatedSymbol] - Isolated symbol\n        * @param {number} [options.current] - Current querying page. Start from 1. Default:1\n        * @param {number} [options.size] - Default:10 Max:100\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getForceLiquidationRecord(options?: getForceLiquidationRecordOptions): Promise<getForceLiquidationRecordResponse> {\n\n            const url = this.prepareSignedPath('/sapi/v1/margin/forceLiquidationRec',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Query Cross Margin Account Details (USER_DATA) {@link https://developers.binance.com/docs/margin_trading/account/Query-Cross-Margin-Account-Details}\n        *\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getCrossMarginAccountDetails(options?: getCrossMarginAccountDetailsOptions): Promise<getCrossMarginAccountDetailsResponse> {\n            const url = this.prepareSignedPath('/sapi/v1/margin/account',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Query Margin Account's Order (USER_DATA) {@link https://developers.binance.com/docs/margin_trading/trade/Query-Margin-Account-Order}\n        *\n        * @param {string} symbol - Trading symbol, e.g. BNBUSDT\n        * @param {object} [options]\n        * @param {IsIsolatedMargin} [options.isIsolated] - * `TRUE` - For isolated margin, * `FALSE` - Default, not for isolated margin\n        * @param {number} [options.orderId] - Order id\n        * @param {string} [options.origClientOrderId] - Order id from client\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getMarginAccountOrder(symbol: string, options?: getMarginAccountOrderOptions): Promise<getMarginAccountOrderResponse> {\n            validateRequiredParameters({ symbol });\n            const url = this.prepareSignedPath('/sapi/v1/margin/order',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        symbol: symbol.toUpperCase()\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Query Margin Account's Open Orders (USER_DATA) {@link https://developers.binance.com/docs/margin_trading/trade/Query-Margin-Account-Open-Orders}\n        *\n        * @param {object} [options]\n        * @param {string} [options.symbol] - Trading symbol, e.g. BNBUSDT\n        * @param {IsIsolatedMargin} [options.isIsolated] - * `TRUE` - For isolated margin, * `FALSE` - Default, not for isolated margin\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getMarginAccountOpenOrders(options?: getMarginAccountOpenOrdersOptions): Promise<getMarginAccountOpenOrdersResponse[]> {\n            const url = this.prepareSignedPath('/sapi/v1/margin/openOrders',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Query Margin Account's All Orders (USER_DATA) {@link https://developers.binance.com/docs/margin_trading/trade/Query-Margin-Account-All-Orders}\n        *\n        * @param {string} symbol - Trading symbol, e.g. BNBUSDT\n        * @param {object} [options]\n        * @param {IsIsolatedMargin} [options.isIsolated] - * `TRUE` - For isolated margin, * `FALSE` - Default, not for isolated margin\n        * @param {number} [options.orderId] - Order id\n        * @param {number} [options.startTime] - UTC timestamp in ms\n        * @param {number} [options.endTime] - UTC timestamp in ms\n        * @param {number} [options.limit] - Default 500; max 1000.\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getMarginAccountAllOrders(symbol: string, options?: getMarginAccountAllOrdersOptions): Promise<getMarginAccountAllOrdersResponse[]> {\n            validateRequiredParameters({ symbol });\n            const url = this.prepareSignedPath('/sapi/v1/margin/allOrders',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        symbol: symbol.toUpperCase()\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Margin Account New OCO (TRADE) {@link https://developers.binance.com/docs/margin_trading/trade/Margin-Account-New-OCO}\n        *\n        * @param {string} symbol - Trading symbol, e.g. BNBUSDT\n        * @param {Side} side\n        * @param {number} quantity\n        * @param {number} price - Order price\n        * @param {number} stopPrice\n        * @param {object} [options]\n        * @param {IsIsolatedMargin} [options.isIsolated] - * `TRUE` - For isolated margin, * `FALSE` - Default, not for isolated margin\n        * @param {string} [options.listClientOrderId] - A unique Id for the entire orderList\n        * @param {string} [options.limitClientOrderId] - A unique Id for the limit order\n        * @param {number} [options.limitIcebergQty]\n        * @param {string} [options.stopClientOrderId] - A unique Id for the stop loss/stop loss limit leg\n        * @param {number} [options.stopLimitPrice] - If provided, stopLimitTimeInForce is required.\n        * @param {number} [options.stopIcebergQty]\n        * @param {StopLimitTimeInForce} [options.stopLimitTimeInForce]\n        * @param {NewOrderRespType} [options.newOrderRespType] - Set the response JSON.\n        * @param {SideEffectType} [options.sideEffectType] - Default `NO_SIDE_EFFECT`\n        * @param {SelfTradePreventionMode} [options.selfTradePreventionMode] - The allowed enums is dependent on what is configured on the symbol. The possible supported values are EXPIRE_TAKER, EXPIRE_MAKER, EXPIRE_BOTH, NONE\n        * @param {Boolean} [options.autoRepayAtCancel] - Only when MARGIN_BUY or AUTO_BORROW_REPAY order takes effect, true means that the debt generated by the order needs to be repay after the order is cancelled. The default is true\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async marginAccountNewOco(symbol: string, side: Side, quantity: number, price: number, stopPrice: number, options?: marginAccountNewOcoOptions): Promise<marginAccountNewOcoResponse> {\n            validateRequiredParameters({ symbol, side, quantity, price, stopPrice });\n            const url = this.prepareSignedPath('/sapi/v1/margin/order/oco',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        symbol: symbol.toUpperCase(),\n                        side: side,\n                        quantity: quantity,\n                        price: price,\n                        stopPrice: stopPrice\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n        * Margin Account Cancel OCO (TRADE) {@link https://developers.binance.com/docs/margin_trading/trade/Margin-Account-Cancel-OCO}\n        *\n        * @param {string} symbol - Trading symbol, e.g. BNBUSDT\n        * @param {object} [options]\n        * @param {IsIsolatedMargin} [options.isIsolated] - * `TRUE` - For isolated margin, * `FALSE` - Default, not for isolated margin\n        * @param {number} [options.orderListId] - Order list id\n        * @param {string} [options.listClientOrderId] - A unique Id for the entire orderList\n        * @param {string} [options.newClientOrderId] - Used to uniquely identify this cancel. Automatically generated by default\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async marginAccountCancelOco(symbol: string, options?: marginAccountCancelOcoOptions): Promise<marginAccountCancelOcoResponse> {\n            validateRequiredParameters({ symbol });\n            const url = this.prepareSignedPath('/sapi/v1/margin/orderList',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        symbol: symbol.toUpperCase()\n                    }\n                )\n            );\n            return await this.makeRequest('DELETE', url);\n        }\n\n\n        /**\n        * Query Margin Account's OCO (USER_DATA) {@link https://developers.binance.com/docs/margin_trading/trade/Query-Margin-Account-OCO}\n        *\n        * @param {object} [options]\n        * @param {IsIsolatedMargin} [options.isIsolated] - * `TRUE` - For isolated margin, * `FALSE` - Default, not for isolated margin\n        * @param {string} [options.symbol] - Mandatory for isolated margin, not supported for cross margin\n        * @param {number} [options.orderListId] - Order list id\n        * @param {string} [options.origClientOrderId] - Order id from client\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getMarginAccountOco(options?: getMarginAccountOcoOptions): Promise<getMarginAccountOcoResponse> {\n\n            const url = this.prepareSignedPath('/sapi/v1/margin/orderList',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Query Margin Account's all OCO (USER_DATA) {@link https://developers.binance.com/docs/margin_trading/trade/Query-Margin-Account-All-OCO}\n        *\n        * @param {object} [options]\n        * @param {IsIsolatedMargin} [options.isIsolated] - * `TRUE` - For isolated margin, * `FALSE` - Default, not for isolated margin\n        * @param {string} [options.symbol] - Mandatory for isolated margin, not supported for cross margin\n        * @param {string} [options.fromId] - If supplied, neither `startTime` or `endTime` can be provided\n        * @param {number} [options.startTime] - UTC timestamp in ms\n        * @param {number} [options.endTime] - UTC timestamp in ms\n        * @param {number} [options.limit] - Default Value: 500; Max Value: 1000\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getMarginAccountAllOco(options?: getMarginAccountAllOcoOptions): Promise<getMarginAccountAllOcoResponse[]> {\n            const url = this.prepareSignedPath('/sapi/v1/margin/allOrderList',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Query Margin Account's Open OCO (USER_DATA) {@link https://developers.binance.com/docs/margin_trading/trade/Query-Margin-Account-Open-OCO}\n        *\n        * @param {object} [options]\n        * @param {IsIsolatedMargin} [options.isIsolated] - * `TRUE` - For isolated margin, * `FALSE` - Default, not for isolated margin\n        * @param {string} [options.symbol] - Mandatory for isolated margin, not supported for cross margin\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getMarginAccountOpenOco(options?: getMarginAccountOpenOcoOptions): Promise<getMarginAccountOpenOcoResponse[]> {\n            const url = this.prepareSignedPath('/sapi/v1/margin/openOrderList',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Query Margin Account's Trade List (USER_DATA) {@link https://developers.binance.com/docs/margin_trading/trade/Query-Margin-Account-Trade-List}\n        *\n        * @param {string} symbol - Trading symbol, e.g. BNBUSDT\n        * @param {object} [options]\n        * @param {IsIsolatedMargin} [options.isIsolated] - * `TRUE` - For isolated margin, * `FALSE` - Default, not for isolated margin\n        * @param {number} [options.orderId]\n        * @param {number} [options.startTime] - UTC timestamp in ms\n        * @param {number} [options.endTime] - UTC timestamp in ms\n        * @param {number} [options.fromId] - Trade id to fetch from. Default gets most recent trades.\n        * @param {number} [options.limit] - Default 500; max 1000.\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getMarginAccountTradeList(symbol: string, options?: getMarginAccountTradeListOptions): Promise<getMarginAccountTradeListResponse[]> {\n            validateRequiredParameters({ symbol });\n            const url = this.prepareSignedPath('/sapi/v1/margin/myTrades',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        symbol: symbol.toUpperCase()\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Query Max Borrow (USER_DATA) {@link https://developers.binance.com/docs/margin_trading/borrow-and-repay/Query-Max-Borrow}\n        *\n        * @param {string} asset\n        * @param {object} [options]\n        * @param {string} [options.isolatedSymbol] - Isolated symbol\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getMaxBorrow(asset: string, options?: getMaxBorrowOptions): Promise<getMaxBorrowResponse> {\n            validateRequiredParameters({ asset });\n            const url = this.prepareSignedPath('/sapi/v1/margin/maxBorrowable',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        asset: asset.toUpperCase()\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Query Max Transfer-Out Amount (USER_DATA) {@link https://developers.binance.com/docs/margin_trading/transfer/Query-Max-Transfer-Out-Amount}\n        *\n        * @param {string} asset\n        * @param {object} [options]\n        * @param {string} [options.isolatedSymbol] - Isolated symbol\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getMaxTransferoutAmount(asset: string, options?: getMaxTransferoutAmountOptions): Promise<getMaxTransferoutAmountResponse> {\n            validateRequiredParameters({ asset });\n            const url = this.prepareSignedPath('/sapi/v1/margin/maxTransferable',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        asset: asset.toUpperCase()\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Get Summary of Margin account (USER_DATA) {@link https://developers.binance.com/docs/margin_trading/account/Get-Summary-Of-Margin-Account}\n        *\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getSummaryOfMarginAccount(options?: getSummaryOfMarginAccountOptions): Promise<getSummaryOfMarginAccountResponse> {\n            const url = this.prepareSignedPath('/sapi/v1/margin/tradeCoeff',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Query Isolated Margin Account Info (USER_DATA) {@link https://developers.binance.com/docs/margin_trading/account/Query-Isolated-Margin-Account-Info}\n        *\n        * @param {object} [options]\n        * @param {string} [options.symbols] - Max 5 symbols can be sent; separated by ','\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getIsolatedMarginAccountInfo(options?: getIsolatedMarginAccountInfoOptions): Promise<getIsolatedMarginAccountInfoResponse> {\n            const url = this.prepareSignedPath('/sapi/v1/margin/isolated/account',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Disable Isolated Margin Account (TRADE) {@link https://developers.binance.com/docs/margin_trading/account/Disable-Isolated-Margin-Account}\n        *\n        * @param {string} symbol - Trading symbol, e.g. BNBUSDT\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async disableIsolatedMarginAccount(symbol: string, options?: disableIsolatedMarginAccountOptions): Promise<disableIsolatedMarginAccountResponse> {\n            validateRequiredParameters({ symbol });\n            const url = this.prepareSignedPath('/sapi/v1/margin/isolated/account',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        symbol: symbol.toUpperCase()\n                    }\n                )\n            );\n            return await this.makeRequest('DELETE', url);\n        }\n\n\n        /**\n        * Enable Isolated Margin Account (TRADE) {@link https://developers.binance.com/docs/margin_trading/account/Enable-Isolated-Margin-Account}\n        *\n        * @param {string} symbol - Trading symbol, e.g. BNBUSDT\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async enableIsolatedMarginAccount(symbol: string, options?: enableIsolatedMarginAccountOptions): Promise<enableIsolatedMarginAccountResponse> {\n            validateRequiredParameters({ symbol });\n            const url = this.prepareSignedPath('/sapi/v1/margin/isolated/account',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        symbol: symbol.toUpperCase()\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n        * Query Enabled Isolated Margin Account Limit (USER_DATA) {@link https://developers.binance.com/docs/margin_trading/account/Query-Enabled-Isolated-Margin-Account-Limit}\n        *\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getEnabledIsolatedMarginAccountLimit(options?: getEnabledIsolatedMarginAccountLimitOptions): Promise<getEnabledIsolatedMarginAccountLimitResponse> {\n            const url = this.prepareSignedPath('/sapi/v1/margin/isolated/accountLimit',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Get All Isolated Margin Symbol (MARKET_DATA) {@link https://developers.binance.com/docs/margin_trading/market-data/Get-All-Isolated-Margin-Symbol}\n        *\n        * @param {object} [options]\n        * @param {string} [options.symbol]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getAllIsolatedMarginSymbol(options?: getAllIsolatedMarginSymbolOptions): Promise<getAllIsolatedMarginSymbolResponse[]> {\n            const url = this.prepareSignedPath('/sapi/v1/margin/isolated/allPairs',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Toggle BNB Burn On Spot Trade And Margin Interest (USER_DATA) {@link https://developers.binance.com/docs/margin_trading/account/Toggle-BNB-Burn-On-Spot-Trade-And-Margin-Interest}\n        *\n        * @param {object} [options]\n        * @param {SpotBNBBurn} [options.spotBNBBurn] - Determines whether to use BNB to pay for trading fees on SPOT\n        * @param {InterestBNBBurn} [options.interestBNBBurn] - Determines whether to use BNB to pay for margin loan interest\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async toggleBnbBurnOnSpotTradeAndMarginInterest(options?: toggleBnbBurnOnSpotTradeAndMarginInterestOptions): Promise<toggleBnbBurnOnSpotTradeAndMarginInterestResponse> {\n            const url = this.prepareSignedPath('/sapi/v1/bnbBurn',\n                options ? options : {}\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n        * Get BNB Burn Status (USER_DATA) {@link https://developers.binance.com/docs/margin_trading/account/Get-BNB-Burn-Status}\n        *\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getBnbBurnStatus(options?: getBnbBurnStatusOptions): Promise<getBnbBurnStatusResponse> {\n            const url = this.prepareSignedPath('/sapi/v1/bnbBurn',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Query Margin Interest Rate History (USER_DATA) {@link https://developers.binance.com/docs/margin_trading/borrow-and-repay/Query-Margin-Interest-Rate-History}\n        *\n        * @param {string} asset\n        * @param {object} [options]\n        * @param {number} [options.vipLevel] - Defaults to user vip level\n        * @param {number} [options.startTime] - UTC timestamp in ms\n        * @param {number} [options.endTime] - UTC timestamp in ms\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async marginInterestRateHistory(asset: string, options?: marginInterestRateHistoryOptions): Promise<marginInterestRateHistoryResponse[]> {\n            validateRequiredParameters({ asset });\n            const url = this.prepareSignedPath('/sapi/v1/margin/interestRateHistory',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        asset: asset.toUpperCase()\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Query Cross Margin Fee Data (USER_DATA) {@link https://developers.binance.com/docs/margin_trading/account/Query-Cross-Margin-Fee-Data}\n        *\n        * @param {object} [options]\n        * @param {number} [options.vipLevel] - Defaults to user vip level\n        * @param {string} [options.coin] - Coin name\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getCrossMarginFeeData(options?: getCrossMarginFeeDataOptions): Promise<getCrossMarginFeeDataResponse[]> {\n            const url = this.prepareSignedPath('/sapi/v1/margin/crossMarginData',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Query Isolated Margin Fee Data (USER_DATA) {@link https://developers.binance.com/docs/margin_trading/account/Query-Isolated-Margin-Fee-Data}\n        *\n        * @param {object} [options]\n        * @param {number} [options.vipLevel] - Defaults to user vip level\n        * @param {string} [options.symbol] - Trading symbol, e.g. BNBUSDT\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getIsolatedMarginFeeData(options?: getIsolatedMarginFeeDataOptions): Promise<getIsolatedMarginFeeDataResponse[]> {\n            const url = this.prepareSignedPath('/sapi/v1/margin/isolatedMarginData',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Query Isolated Margin Tier Data (USER_DATA) {@link https://developers.binance.com/docs/margin_trading/market-data/Query-Isolated-Margin-Tier-Data}\n        *\n        * @param {string} symbol - Trading symbol, e.g. BNBUSDT\n        * @param {object} [options]\n        * @param {string} [options.tier] - All margin tier data will be returned if tier is omitted\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getIsolatedMarginTierData(symbol: string, options?: getIsolatedMarginTierDataOptions): Promise<getIsolatedMarginTierDataResponse[]> {\n            validateRequiredParameters({ symbol });\n            const url = this.prepareSignedPath('/sapi/v1/margin/isolatedMarginTier',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        symbol: symbol.toUpperCase()\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Query Current Margin Order Count Usage (TRADE) {@link https://developers.binance.com/docs/margin_trading/trade/Query-Current-Margin-Order-Count-Usage}\n        *\n        * @param {object} [options]\n        * @param {string} [options.isIsolated] - * `TRUE` - For isolated margin, * `FALSE` - Default, not for isolated margin\n        * @param {string} [options.symbol] - isolated symbol, mandatory for isolated margin\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getCurrentMarginOrderCountUsage(options?: getCurrentMarginOrderCountUsageOptions): Promise<getCurrentMarginOrderCountUsageResponse[]> {\n\n            const url = this.prepareSignedPath('/sapi/v1/margin/rateLimit/order',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Cross margin collateral ratio (MARKET_DATA) {@link https://developers.binance.com/docs/margin_trading/market-data/Cross-margin-collateral-ratio}\n        *\n        */\n        async crossMarginCollateralRatio(): Promise<crossMarginCollateralRatioResponse[]> {\n            return await this.makeRequest('GET', '/sapi/v1/margin/crossMarginCollateralRatio');\n        }\n\n\n        /**\n        * Get Small Liability Exchange Coin List (USER_DATA) {@link https://developers.binance.com/docs/margin_trading/trade/Get-Small-Liability-Exchange-Coin-List}\n        *\n        * @param {object} [options]\n        * @param {number} [options.startTime] - UTC timestamp in ms\n        * @param {number} [options.endTime] - UTC timestamp in ms\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getSmallLiabilityExchangeCoinList(options?: getSmallLiabilityExchangeCoinListOptions): Promise<getSmallLiabilityExchangeCoinListResponse[]> {\n            const url = this.prepareSignedPath('/sapi/v1/margin/exchange-small-liability',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Small Liability Exchange (MARGIN) {@link https://developers.binance.com/docs/margin_trading/trade/Small-Liability-Exchange}\n        *\n        * @param {string[]} assetNames - The assets list of small liability exchange, Example: assetNames = BTC,ETH\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async smallLiabilityExchange(assetNames: string[], options?: smallLiabilityExchangeOptions): Promise<smallLiabilityExchangeResponse> {\n            validateRequiredParameters({ assetNames });\n            const url = this.prepareSignedPath('/sapi/v1/margin/exchange-small-liability ',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        assetNames: assetNames,\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n        * Get Small Liability Exchange History (USER_DATA) {@link https://developers.binance.com/docs/margin_trading/trade/Get-Small-Liability-Exchange-History}\n        *\n        * @param {object} [options]\n        * @param {number} [options.startTime] - UTC timestamp in ms\n        * @param {number} [options.endTime] - UTC timestamp in ms\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getSmallLiabilityExchangeHistory(current: number, size: number, options?: getSmallLiabilityExchangeHistoryOptions): Promise<getSmallLiabilityExchangeHistoryResponse> {\n            validateRequiredParameters({ current, size });\n            const url = this.prepareSignedPath('/sapi/v1/margin/exchange-small-liability-history',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        current: current,\n                        size: size,\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n        /**\n        * Get a future hourly interest rate (USER_DATA) {@link https://developers.binance.com/docs/margin_trading/borrow-and-repay/Get-a-future-hourly-interest-rate}\n        *\n        * @param {string} assets - List of assets, separated by commas, up to 20\n        * @param {IsIsolatedMargin} isIsolated - * `TRUE` - For isolated margin, * `FALSE` - Default, not for isolated margin\n        */\n        async getFutureHoulyInterestRate(assets: string, isIsolated: IsIsolatedMargin): Promise<getFutureHoulyInterestRateResponse> {\n            validateRequiredParameters({ assets, isIsolated });\n            const url = this.prepareSignedPath('/sapi/v1/margin/next-hourly-interest-rate',\n                {\n                    assets: assets,\n                    isIsolated: isIsolated\n                }\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Get tokens or symbols delist schedule for cross margin and isolated margin (MARKET_DATA) {@link https://developers.binance.com/docs/margin_trading/market-data/Get-Delist-Schedule}\n        * \n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getTokensOrSymbolsDelistScheduleForCrossMarginAndIsolatedMargin(options?: getTokensOrSymbolsDelistScheduleForCrossMarginAndIsolatedMarginOptions): Promise<getTokensOrSymbolsDelistScheduleForCrossMarginAndIsolatedMarginResponse[]> {\n            const url = this.prepareSignedPath('/sapi/v1/margin/delist-schedule',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n        /**\n         * Get the available margin inventory (USER_DATA) {@link https://developers.binance.com/docs/margin_trading/market-data/Query-margin-avaliable-inventory}\n         * \n         * @param {string} type - MARGIN, ISOLATED\n         * @param {object} [options]\n         * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n         */\n        async getMarginAvailableInventory(type: string, options?: getMarginAvailableInventoryOptions): Promise<getMarginAvailableInventoryResponse> {\n            validateRequiredParameters({ type });\n            const url = this.prepareSignedPath('/sapi/v1/margin/available-inventory',\n                Object.assign(\n                    options ? options : {},\n                    { \n                        type: type \n                    }\n                ) \n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n         * Margin manual liquidation (MARGIN) {@link https://developers.binance.com/docs/margin_trading/trade/Margin-Manual-Liquidation}\n         * \n         * @param {string} type - MARGIN, ISOLATED\n         * @param {object} [options]\n         * @param {string} [options.symbol] - When type selects ISOLATED, symbol must be filled in\n         * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n         */\n        async marginManualLiquidation(type: string, options?: marginManualLiquidationOptions): Promise<marginManualLiquidationResponse[]> {\n            validateRequiredParameters({ type });\n            const url = this.prepareSignedPath('/sapi/v1/margin/manual-liquidation',\n                Object.assign(\n                    options ? options : {},\n                    { \n                        type: type \n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n         * Margin Account New OTO (TRADE) {@link https://developers.binance.com/docs/margin_trading/trade/Margin-Account-New-OTO}\n         * \n         * @param {string} symbol\n         * @param {OrderListWorkingType} workingType - Supported values: `LIMIT`, `LIMIT_MAKER`\n         * @param {Side} workingSide - Supported values: `BUY`, `SELL`\n         * @param {number} workingPrice\n         * @param {number} workingQuantity - Sets the quantity for the working order.\n         * @param {OtoPendingType} pendingType - Note that `MARKET` orders using `quoteOrderQty` are not supported.\n         * @param {Side} pendingSide - Supported values: `BUY`, `SELL`\n         * @param {number} pendingQuantity - \tSets the quantity for the pending order.\n         * @param {object} [options]\n         * @param {string} [options.isIsolated] - for isolated margin or not: TRUE, FALSE. Default: FALSE\n         * @param {string} [options.listClientOrderId] - Arbitrary unique ID among open order lists. Automatically generated if not sent. A new order list with the same listClientOrderId is accepted only when the previous one is filled or completely expired. `listClientOrderId` is distinct from the `workingClientOrderId` and the `pendingClientOrderId`.\n         * @param {NewOrderRespType} [options.newOrderRespType] - Format of the JSON response. Supported values: `ACK`, `FULL`, `RESULT`\n         * @param {SideEffectType} [options.sideEffectType] - Default `NO_SIDE_EFFECT`\n         * @param {string} [options.selfTradePreventionMode] - The allowed values are dependent on what is configured on the symbol.\n         * @param {boolean} [options.autoRepayAtCancel] - Only when MARGIN_BUY order takes effect, true means that the debt generated by the order needs to be repay after the order is cancelled. The default is true\n         * @param {string} [options.workingClientOrderId] - Arbitrary unique ID among open orders for the working order. Automatically generated if not sent.\n         * @param {number} [options.workingIcebergQty] - This can only be used if workingTimeInForce is `GTC` or if workingType is `LIMIT_MAKER`\n         * @param {TimeInForce} [options.workingTimeInForce] - Supported values: `FOK`, `IOC`, `GTC`\n         * @param {string} [options.pendingClientOrderId] - Arbitrary unique ID among open orders for the pending order. Automatically generated if not sent.\n         * @param {number} [options.pendingPrice]\n         * @param {number} [options.pendingStopPrice]\n         * @param {number} [options.pendingTrailingDelta]\n         * @param {number} [options.pendingIcebergQty] - This can only be used if pendingTimeInForce is GTC or if pendingType is LIMIT_MAKER\n         * @param {TimeInForce} [options.pendingTimeInForce] - Supported values: `GTC`, `FOK`, `IOC`\n         * @param {number} [options.recvWindow] - The value cannot be greater than 60000.\n         */\n        async marginAccountNewOto(symbol: string, workingType: OrderListWorkingType, workingSide: Side, workingPrice: number, workingQuantity: number, pendingType: OtoPendingType, pendingSide: Side, pendingQuantity: number, options?: marginAccountNewOtoOptions): Promise<marginAccountNewOtoResponse> {\n            validateRequiredParameters({ symbol, workingType, workingSide, workingPrice, workingQuantity, pendingType, pendingSide, pendingQuantity });\n            const url = this.prepareSignedPath('/sapi/v1/margin/order/oto',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        symbol: symbol.toUpperCase(),\n                        workingType: workingType,\n                        workingSide: workingSide,\n                        workingPrice: workingPrice,\n                        workingQuantity: workingQuantity,\n                        pendingType: pendingType,\n                        pendingSide: pendingSide,\n                        pendingQuantity: pendingQuantity\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n         * New Order List - OTOCO (TRADE) {@link https://developers.binance.com/docs/margin_trading/trade/Margin-Account-New-OTOCO}\n         * \n         * @param {string} symbol\n         * @param {OrderListWorkingType} workingType - Supported values: `LIMIT`, `LIMIT_MAKER`\n         * @param {Side} workingSide - Supported values: `BUY`, `SELL`\n         * @param {number} workingPrice\n         * @param {number} workingQuantity\n         * @param {Side} pendingSide - Supported values: `BUY`, `SELL`\n         * @param {number} pendingQuantity - Sets the quantity for the pending order.\n         * @param {OrderListAboveBelowType} pendingAboveType - Supported values: LIMIT_MAKER, STOP_LOSS, and STOP_LOSS_LIMIT\n         * @param {object} [options]\n         * @param {string} [options.isIsolated] - for isolated margin or not: TRUE, FALSE. Default: FALSE\n         * @param {SideEffectType} [options.sideEffectType] - Default `NO_SIDE_EFFECT`\n         * @param {boolean} [options.autoRepayAtCancel] - Only when MARGIN_BUY order takes effect, true means that the debt generated by the order needs to be repay after the order is cancelled. The default is true\n         * @param {string} [options.listClientOrderId] - Arbitrary unique ID among open order lists. Automatically generated if not sent. A new order list with the same listClientOrderId is accepted only when the previous one is filled or completely expired. `listClientOrderId` is distinct from the `workingClientOrderId` and the `pendingClientOrderId`.\n         * @param {NewOrderRespType} [options.newOrderRespType] - Format of the JSON response. Supported values: `ACK`, `FULL`, `RESULT`\n         * @param {string} [options.selfTradePreventionMode] - The allowed values are dependent on what is configured on the symbol\n         * @param {string} [options.workingClientOrderId] - Arbitrary unique ID among open orders for the working order. Automatically generated if not sent.\n         * @param {number} [options.workingIcebergQty] - This can only be used if workingTimeInForce is `GTC` or if workingType is `LIMIT_MAKER`\n         * @param {TimeInForce} [options.workingTimeInForce] - Supported values: `FOK`, `IOC`, `GTC`\n         * @param {string} [options.pendingAboveClientOrderId] - Arbitrary unique ID among open orders for the pending above order. Automatically generated if not sent.\n         * @param {number} [options.pendingAbovePrice]\n         * @param {number} [options.pendingAboveStopPrice]\n         * @param {number} [options.pendingAboveTrailingDelta]\n         * @param {number} [options.pendingAboveIcebergQty] - This can only be used if pendingAboveTimeInForce is GTC or if pendingAboveType is LIMIT_MAKER.\n         * @param {TimeInForce} [options.pendingAboveTimeInForce]\n         * @param {OrderListAboveBelowType} [options.pendingBelowType] - Supported values: LIMIT_MAKER, STOP_LOSS, and STOP_LOSS_LIMIT\n         * @param {string} [options.pendingBelowClientOrderId] - Arbitrary unique ID among open orders for the pending below order. Automatically generated if not sent.\n         * @param {number} [options.pendingBelowPrice]\n         * @param {number} [options.pendingBelowStopPrice]\n         * @param {number} [options.pendingBelowTrailingDelta]\n         * @param {number} [options.pendingBelowIcebergQty] - This can only be used if pendingBelowTimeInForce is GTC or if pendingBelowType is LIMIT_MAKER.\n         * @param {TimeInForce} [options.pendingBelowTimeInForce]\n         * @param {number} [options.recvWindow] - The value cannot be greater than 60000.\n         */\n        async marginAccountNewOtoco(symbol: string, workingType: OrderListWorkingType, workingSide: Side, workingPrice: number, workingQuantity: number, pendingSide: Side, pendingQuantity: number, pendingAboveType: OrderListAboveBelowType, options?: marginAccountNewOtocoOptions): Promise<marginAccountNewOtocoResponse> {\n            validateRequiredParameters({ symbol, workingType, workingSide, workingPrice, workingQuantity, pendingSide, pendingQuantity, pendingAboveType });\n            const url = this.prepareSignedPath('/sapi/v1/margin/order/otoco',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        symbol: symbol.toUpperCase(),\n                        workingType: workingType,\n                        workingSide: workingSide,\n                        workingPrice: workingPrice,\n                        workingQuantity: workingQuantity,\n                        pendingSide: pendingSide,\n                        pendingQuantity: pendingQuantity,\n                        pendingAboveType: pendingAboveType\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n         * Get the liability assets leverage bracket in Cross Margin Pro Mode (MARKET_DATA) {@link https://developers.binance.com/docs/margin_trading/market-data/Query-Liability-Coin-Leverage-Bracket-in-Cross-Margin-Pro-Mode}\n         */\n        async getLeverageBracket(): Promise<getLeverageBracketResponse[]> {\n            const url = this.prepareSignedPath('/sapi/v1/margin/leverageBracket');\n            return await this.makeRequest('GET', url);\n        }\n\n        /**\n         * Margin account borrow/repay(MARGIN) {@link https://developers.binance.com/docs/margin_trading/borrow-and-repay/Margin-Account-Borrow-Repay}\n         * \n         * @param {string} asset\n         * @param {string} isIsolated - TRUE for Isolated Margin, FALSE for Cross Margin, Default FALSE\n         * @param {string} symbol - Only for Isolated margin\n         * @param {string} amount\n         * @param {MarginBorrowRepayType} type - BORROW or REPAY\n         * @param {object} [options]\n         * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n         */\n        async marginAccountBorrowRepay(asset: string, isIsolated: string, symbol: string, amount: string, type: MarginBorrowRepayType, options?: marginAccountBorrowRepayOptions): Promise<marginAccountBorrowRepayResponse> {\n            validateRequiredParameters({ asset, isIsolated, symbol, amount, type });\n            const url = this.prepareSignedPath('/sapi/v1/margin/borrow-repay',\n                Object.assign(\n                    options ? options : {},\n                    { \n                        asset: asset,\n                        isIsolated: isIsolated,\n                        symbol: symbol,\n                        amount: amount,\n                        type: type\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n        /**\n         * Query borrow/repay records in Margin account(USER_DATA) {@link https://developers.binance.com/docs/margin_trading/borrow-and-repay/Query-Borrow-Repay}\n         * \n         * @param {MarginBorrowRepayType} type - BORROW or REPAY\n         * @param {object} [options]\n         * @param {string} [options.asset]\n         * @param {string} [options.isolatedSymbol] - Symbol in Isolated Margin\n         * @param {number} [options.txId]\n         * @param {number} [options.startTime]\t\n         * @param {number} [options.endTime]\n         * @param {number} [options.current] - Current querying page. Start from 1. Default:1\n         * @param {number} [options.size] - Default:10 Max:100\n         * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n         */\n        async getBorrowRepayRecords(type: MarginBorrowRepayType, options?: getBorrowRepayRecordsOptions): Promise<getBorrowRepayRecordsResponse> {\n            validateRequiredParameters({ type });\n            const url = this.prepareSignedPath('/sapi/v1/margin/borrow-repay',\n                Object.assign(\n                    options ? options : {},\n                    { \n                        type: type\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n    };\n}\n","import { Constructor } from '../../../setters/types';\nimport { validateRequiredParameters } from '../../../helpers/utils';\nimport {\n    checkServerTimeResponse,\n    compressedAggregateTradesListOptions,\n    compressedAggregateTradesListResponse,\n    currentAveragePriceResponse,\n    exchangeInformationOptions,\n    exchangeInformationResponse,\n    klineCandlestickDataOptions,\n    klineCandlestickDataResponse,\n    oldTradeLookupOptions,\n    oldTradeLookupResponse,\n    orderBookOptions,\n    orderBookResponse,\n    recentTradesListOptions,\n    recentTradesListResponse,\n    rollingWindowPriceChangeStatisticsOptions,\n    rollingWindowPriceChangeStatisticsResponse,\n    symbolOrderBookTickerOptions,\n    symbolOrderBookTickerResponse,\n    symbolPriceTickerOptions,\n    symbolPriceTickerResponse,\n    ticker24hrOptions,\n    ticker24hrResponse,\n    tradingDayTickerOptions,\n    tradingDayTickerResponse,\n    uiklinesOptions,\n    uiklinesResponse\n} from './types';\nimport { MarketMethods } from './methods';\nimport { Interval } from '../../enum';\n\nexport function mixinMarket<T extends Constructor>(base: T): Constructor<MarketMethods> & T {\n    return class extends base {\n        /**\n        * Test Connectivity {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/general-endpoints#test-connectivity}\n        */\n        async testConnectivity(): Promise<Record<string, never>> {\n            return await this.makeRequest('GET', '/api/v3/ping');\n        }\n\n\n        /**\n        * Check Server Time {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/general-endpoints#check-server-time}\n        */\n        async checkServerTime(): Promise<checkServerTimeResponse> {\n            return await this.makeRequest('GET', '/api/v3/time');\n        }\n\n\n        /**\n        * Exchange Information {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/general-endpoints#exchange-information}\n        *\n        * @param {object} [options]\n        * @param {string} [options.symbol] - Trading symbol, e.g. BNBUSDT\n        * @param {string[]} [options.symbols]\n        * @param {string[]} [options.permissions]\n        * @param {boolean} [options.showPermissionSets] - Controls whether the content of the permissionSets field is populated or not. Defaults to true\n        * @param {SymbolStatus} [options.symbolStatus] - Filters symbols that have this tradingStatus. Valid values: TRADING, HALT, BREAK. Cannot be used in combination with symbols or symbol.\n        */\n        async exchangeInformation(options?: exchangeInformationOptions): Promise<exchangeInformationResponse> {\n            const url = this.preparePath('/api/v3/exchangeInfo',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Order Book {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#order-book}\n        *\n        * @param {string} symbol - Trading symbol, e.g. BNBUSDT\n        * @param {object} [options]\n        * @param {number} [options.limit] - If limit > 5000, then the response will truncate to 5000\n        */\n        async orderBook(symbol: string, options?: orderBookOptions): Promise<orderBookResponse> {\n            validateRequiredParameters({ symbol });\n            const url = this.preparePath('/api/v3/depth',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        symbol: symbol.toUpperCase()\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Recent Trades List {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#recent-trades-list}\n        *\n        * @param {string} symbol - Trading symbol, e.g. BNBUSDT\n        * @param {object} [options]\n        * @param {number} [options.limit] - Default 500; max 1000.\n        */\n        async recentTradesList(symbol: string, options?: recentTradesListOptions): Promise<recentTradesListResponse[]> {\n            validateRequiredParameters({ symbol });\n            const url = this.preparePath('/api/v3/trades',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        symbol: symbol.toUpperCase()\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Old Trade Lookup {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#old-trade-lookup}\n        *\n        * @param {string} symbol - Trading symbol, e.g. BNBUSDT\n        * @param {object} [options]\n        * @param {number} [options.limit] - Default 500; max 1000.\n        * @param {number} [options.fromId] - Trade id to fetch from. Default gets most recent trades.\n        */\n        async oldTradeLookup(symbol: string, options?: oldTradeLookupOptions): Promise<oldTradeLookupResponse[]> {\n            validateRequiredParameters({ symbol });\n            const url = this.preparePath('/api/v3/historicalTrades',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        symbol: symbol.toUpperCase()\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Compressed/Aggregate Trades List {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#compressedaggregate-trades-list}\n        *\n        * @param {string} symbol - Trading symbol, e.g. BNBUSDT\n        * @param {object} [options]\n        * @param {number} [options.fromId] - Trade id to fetch from. Default gets most recent trades.\n        * @param {number} [options.startTime] - UTC timestamp in ms\n        * @param {number} [options.endTime] - UTC timestamp in ms\n        * @param {number} [options.limit] - Default 500; max 1000.\n        */\n        async compressedAggregateTradesList(symbol: string, options?: compressedAggregateTradesListOptions): Promise<compressedAggregateTradesListResponse[]> {\n            validateRequiredParameters({ symbol });\n            const url = this.preparePath('/api/v3/aggTrades',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        symbol: symbol.toUpperCase()\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Kline/Candlestick Data {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#klinecandlestick-data}\n        *\n        * @param {string} symbol - Trading symbol, e.g. BNBUSDT\n        * @param {Interval} interval - kline intervals\n        * @param {object} [options]\n        * @param {number} [options.startTime] - UTC timestamp in ms\n        * @param {number} [options.endTime] - UTC timestamp in ms\n        * @param {number} [options.timeZone] - Default: 0 (UTC)\n        * @param {number} [options.limit] - Default 500; max 1000.\n        */\n        async klineCandlestickData(symbol: string, interval: Interval, options?: klineCandlestickDataOptions): Promise<klineCandlestickDataResponse[]> {\n            validateRequiredParameters({ symbol, interval });\n            const url = this.preparePath('/api/v3/klines',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        symbol: symbol.toUpperCase(),\n                        interval: interval\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * UIKlines {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#uiklines}\n        *\n        * @param {string} symbol - Trading symbol, e.g. BNBUSDT\n        * @param {Interval} interval - kline intervals\n        * @param {object} [options]\n        * @param {number} [options.startTime] - UTC timestamp in ms\n        * @param {number} [options.endTime] - UTC timestamp in ms\n        * @param {number} [options.timeZone] - Default: 0 (UTC)\n        * @param {number} [options.limit] - Default 500; max 1000.\n        */\n        async uiklines(symbol: string, interval: Interval, options?: uiklinesOptions): Promise<uiklinesResponse[]> {\n            validateRequiredParameters({ symbol, interval });\n            const url = this.preparePath('/api/v3/uiKlines',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        symbol: symbol.toUpperCase(),\n                        interval: interval\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Current Average Price {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#current-average-price}\n        *\n        * @param {string} symbol - Trading symbol, e.g. BNBUSDT\n        */\n        async currentAveragePrice(symbol: string): Promise<currentAveragePriceResponse> {\n            validateRequiredParameters({ symbol });\n            const url = this.preparePath('/api/v3/avgPrice',\n                {\n                    symbol: symbol.toUpperCase()\n                });\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * 24hr Ticker Price Change Statistics {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#24hr-ticker-price-change-statistics}\n        *\n        * @param {object} [options]\n        * @param {string} [options.symbol] - Trading symbol, e.g. BNBUSDT\n        * @param {string[]} [options.symbols]\n        * @param {string} [options.type] - Supported values: FULL or MINI., If none provided, the default is FULL\n        */\n        async ticker24hr(options?: ticker24hrOptions): Promise<ticker24hrResponse | ticker24hrResponse[]> {\n            const url = this.preparePath('/api/v3/ticker/24hr',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Symbol Price Ticker {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#symbol-price-ticker}\n        *\n        * @param {object} [options]\n        * @param {string} [options.symbol] - Trading symbol, e.g. BNBUSDT\n        * @param {string[]} [options.symbols]\n        */\n        async symbolPriceTicker(options?: symbolPriceTickerOptions): Promise<symbolPriceTickerResponse | symbolPriceTickerResponse[]> {\n            const url = this.preparePath('/api/v3/ticker/price',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Symbol Order Book Ticker {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#symbol-order-book-ticker}\n        *\n        * @param {object} [options]\n        * @param {string} [options.symbol] - Trading symbol, e.g. BNBUSDT\n        * @param {string[]} [options.symbols]\n        */\n        async symbolOrderBookTicker(options?: symbolOrderBookTickerOptions): Promise<symbolOrderBookTickerResponse | symbolOrderBookTickerResponse[]> {\n            const url = this.preparePath('/api/v3/ticker/bookTicker',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Rolling window price change statistics {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#rolling-window-price-change-statistics}\n        *\n        * @param {object} [options]\n        * @param {string} [options.symbol] - Trading symbol, e.g. BNBUSDT\n        * @param {string[]} [options.symbols]\n        * @param {string} [options.windowSize] - Defaults to 1d if no parameter provided., Supported windowSize values:, 1m,2m....59m for minutes, 1h, 2h....23h - for hours, 1d...7d - for days., , Units cannot be combined (e.g. 1d2h is not allowed)\n        * @param {string} [options.type] - Supported values: FULL or MINI., If none provided, the default is FULL\n        */\n        async rollingWindowPriceChangeStatistics(options?: rollingWindowPriceChangeStatisticsOptions): Promise<rollingWindowPriceChangeStatisticsResponse | rollingWindowPriceChangeStatisticsResponse[]> {\n            const url = this.preparePath('/api/v3/ticker',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n         * Trading Day Ticker {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#trading-day-ticker}\n         * \n         * @param {object} [options]\n         * @param {string} [options.symbol] - Trading symbol, e.g. BNBUSDT\n         * @param {string[]} [options.symbols] - The maximum number of symbols allowed in a request is 100.\n         * @param {string} [options.timeZone] - Default: 0 (UTC)\n         * @param {string} [options.type] - Supported values: FULL or MINI., If none provided, the default is FULL\n         */\n        async tradingDayTicker(options: tradingDayTickerOptions): Promise<tradingDayTickerResponse | tradingDayTickerResponse[]> {\n            if (options.symbol && options.symbols) throw new Error('Symbol and Symbols cannot be sent together.');\n            if (options && options.symbol && Object.prototype.hasOwnProperty.call(options, 'symbol')) {\n                options.symbol = options.symbol.toUpperCase();\n            }\n            if (options && options.symbols && Object.prototype.hasOwnProperty.call(options, 'symbols')) {\n                options.symbols = options.symbols.map(symbol => symbol.toUpperCase());\n            }\n            const url = this.preparePath('/api/v3/ticker/tradingDay',\n                Object.assign(\n                    options ? options : {},\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n    };\n}\n","import { Constructor } from '../../../setters/types';\nimport { validateRequiredParameters } from '../../../helpers/utils';\nimport {\n    bnbTransferOptions,\n    bnbTransferResponse,\n    changeAutorepayfuturesStatusOptions,\n    changeAutorepayfuturesStatusResponse,\n    fundAutocollectionOptions,\n    fundAutocollectionResponse,\n    fundCollectionByAssetOptions,\n    fundCollectionByAssetResponse,\n    getAccountBalanceOptions,\n    getAccountBalanceResponse,\n    getAutorepayfuturesStatusOptions,\n    getAutorepayfuturesStatusResponse,\n    getClassicPortfolioMarginNegativeBalanceInterestHistoryOptions,\n    getClassicPortfolioMarginNegativeBalanceInterestHistoryResponse,\n    getPortfolioMarginAssetIndexPriceOptions,\n    getPortfolioMarginAssetIndexPriceResponse,\n    getPortfolioMarginAssetLeverageResponse,\n    getSpanAccountInfoOptions,\n    getSpanAccountInfoResponse,\n    getTieredCollateralRateOptions,\n    getTieredCollateralRateResponse,\n    portfolioMarginAccountOptions,\n    portfolioMarginAccountResponse,\n    portfolioMarginBankruptcyLoanAmountOptions,\n    portfolioMarginBankruptcyLoanAmountResponse,\n    portfolioMarginBankruptcyLoanRepayOptions,\n    portfolioMarginBankruptcyLoanRepayResponse,\n    portfolioMarginCollateralRateResponse,\n    repayFuturesNegativeBalanceOptions,\n    repayFuturesNegativeBalanceResponse\n} from './types';\nimport { TransferSide } from '../../enum';\nimport { PortfolioMarginMethods } from './methods';\n\nexport function mixinPortfolioMargin<T extends Constructor>(base: T): Constructor<PortfolioMarginMethods> & T {\n    return class extends base {\n        /**\n        * Get Portfolio Margin Pro Account Info (USER_DATA) {@link https://developers.binance.com/docs/derivatives/portfolio-margin-pro/account/Get-Classic-Portfolio-Margin-Account-Info}\n        *\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async portfolioMarginAccount(options?: portfolioMarginAccountOptions): Promise<portfolioMarginAccountResponse> {\n            const url = this.prepareSignedPath('/sapi/v1/portfolio/account',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Portfolio Margin Pro Collateral Rate (MARKET_DATA) {@link https://developers.binance.com/docs/derivatives/portfolio-margin-pro/market-data/Classic-Portfolio-Margin-Collateral-Rate}\n        */\n        async portfolioMarginCollateralRate(): Promise<portfolioMarginCollateralRateResponse[]> {\n            return await this.makeRequest('GET', '/sapi/v1/portfolio/collateralRate');\n        }\n\n\n        /**\n         * Portfolio Margin Pro Tiered Collateral Rate (USER_DATA) {@link https://developers.binance.com/docs/derivatives/portfolio-margin-pro/market-data/Portfolio-Margin-Pro-Tiered-Collateral-Rate}\n         * \n         * @param {object} [options]\n         * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n         */\n        async getTieredCollateralRate(options?: getTieredCollateralRateOptions): Promise<getTieredCollateralRateResponse[]> {\n            const url = this.prepareSignedPath('/sapi/v2/portfolio/collateralRate',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Query Portfolio Margin Pro Bankruptcy Loan Amount (USER_DATA) {@link https://developers.binance.com/docs/derivatives/portfolio-margin-pro/account/Query-Classic-Portfolio-Margin-Bankruptcy-Loan-Amount}\n        *\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async portfolioMarginBankruptcyLoanAmount(options?: portfolioMarginBankruptcyLoanAmountOptions): Promise<portfolioMarginBankruptcyLoanAmountResponse> {\n            const url = this.prepareSignedPath('/sapi/v1/portfolio/pmLoan',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Portfolio Margin Bankruptcy Loan Repay (USER_DATA) {@link https://developers.binance.com/docs/derivatives/portfolio-margin-pro/account/Classic-Portfolio-Margin-Bankruptcy-Loan-Repay}\n        *\n        * @param {object} [options]\n        * @param {PortfolioMarginFrom} [options.from] - SPOT or MARGIN，default SPOT\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async portfolioMarginBankruptcyLoanRepay(options?: portfolioMarginBankruptcyLoanRepayOptions): Promise<portfolioMarginBankruptcyLoanRepayResponse> {\n            const url = this.prepareSignedPath('/sapi/v1/portfolio/repay',\n                options ? options : {}\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n        * Query Portfolio Margin Pro Negative Balance Interest History (USER_DATA) {@link https://developers.binance.com/docs/derivatives/portfolio-margin-pro/account/Query-Classic-Portfolio-Margin-Negative-Balance-Interest-History}\n        *\n        * @param {object} [options]\n        * @param {string} [options.asset]\n        * @param {number} [options.startTime] - UTC timestamp in ms\n        * @param {number} [options.endTime] - UTC timestamp in ms\n        * @param {number} [options.size] - Default:10 Max:100\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getClassicPortfolioMarginNegativeBalanceInterestHistory(options?: getClassicPortfolioMarginNegativeBalanceInterestHistoryOptions): Promise<getClassicPortfolioMarginNegativeBalanceInterestHistoryResponse[]> {\n            const url = this.prepareSignedPath('/sapi/v1/portfolio/interest-history',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n         * Get Portfolio Margin Pro SPAN Account Info (USER_DATA) {@link https://developers.binance.com/docs/derivatives/portfolio-margin-pro/account/Get-Classic-Portfolio-Margin-Account-Info-V2}\n         * \n         * @param {object} [options]\n         * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n         */\n        async getSpanAccountInfo(options?: getSpanAccountInfoOptions): Promise<getSpanAccountInfoResponse> {\n            const url = this.prepareSignedPath('/sapi/v2/portfolio/account',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n         * Get Portfolio Margin Pro Account Balance(USER_DATA) {@link https://developers.binance.com/docs/derivatives/portfolio-margin-pro/account/Get-Classic-Portfolio-Margin-Balance-Info}\n         * \n         * @param {object} [options]\n         * @param {string} [options.asset]\n         * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n         */\n        async getAccountBalance(options?: getAccountBalanceOptions): Promise<getAccountBalanceResponse[]> {\n            const url = this.prepareSignedPath('/sapi/v1/portfolio/balance',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Query Portfolio Margin Asset Index Price (MARKET_DATA) {@link https://developers.binance.com/docs/derivatives/coin-margined-futures/market-data/Index-Price-and-Mark-Price}\n        *\n        * @param {object} [options]\n        * @param {string} [options.asset]\n        */\n        async getPortfolioMarginAssetIndexPrice(options?: getPortfolioMarginAssetIndexPriceOptions): Promise<getPortfolioMarginAssetIndexPriceResponse[]> {\n            const url = this.preparePath('/sapi/v1/portfolio/asset-index-price',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Fund Auto-collection (USER_DATA) {@link https://developers.binance.com/docs/derivatives/portfolio-margin-pro/account/Fund-Auto-collection}\n        *\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async fundAutocollection(options?: fundAutocollectionOptions): Promise<fundAutocollectionResponse> {\n            const url = this.prepareSignedPath('/sapi/v1/portfolio/auto-collection',\n                options ? options : {}\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n        * Fund Collection by Asset (USER_DATA) {@link https://developers.binance.com/docs/derivatives/portfolio-margin-pro/account/Fund-Collection-by-Asset}\n        *\n        * @param {string} asset\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async fundCollectionByAsset(asset: string, options?: fundCollectionByAssetOptions): Promise<fundCollectionByAssetResponse> {\n            validateRequiredParameters({ asset });\n            const url = this.prepareSignedPath('/sapi/v1/portfolio/asset-collection',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        asset: asset.toUpperCase()\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n        * BNB transfer (USER_DATA) {@link https://developers.binance.com/docs/derivatives/portfolio-margin-pro/account/BNB-transfer}\n        *\n        * @param {number} amount\n        * @param {TransferSide} transferSide\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async bnbTransfer(amount: number, transferSide: TransferSide, options?: bnbTransferOptions): Promise<bnbTransferResponse> {\n            validateRequiredParameters({ transferSide, amount });\n            const url = this.prepareSignedPath('/sapi/v1/portfolio/bnb-transfer',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        transferSide: transferSide,\n                        amount: amount\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n        * Change Auto-repay-futures Status (TRADE) {@link https://developers.binance.com/docs/derivatives/portfolio-margin-pro/account/Change-Auto-repay-futures-Status}\n        *\n        * @param {boolean} autoRepay\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async changeAutorepayfuturesStatus(autoRepay: boolean, options?: changeAutorepayfuturesStatusOptions): Promise<changeAutorepayfuturesStatusResponse> {\n            validateRequiredParameters({ autoRepay });\n            const url = this.prepareSignedPath('/sapi/v1/portfolio/repay-futures-switch',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        autoRepay: autoRepay\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n        * Get Auto-repay-futures Status (USER_DATA) {@link https://developers.binance.com/docs/derivatives/portfolio-margin-pro/account/Get-Auto-repay-futures-Status}\n        *\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getAutorepayfuturesStatus(options?: getAutorepayfuturesStatusOptions): Promise<getAutorepayfuturesStatusResponse> {\n            const url = this.prepareSignedPath('/sapi/v1/portfolio/repay-futures-switch',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Repay futures Negative Balance (USER_DATA) {@link https://developers.binance.com/docs/derivatives/portfolio-margin-pro/account/Repay-futures-Negative-Balance#http-request}\n        *\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async repayFuturesNegativeBalance(options?: repayFuturesNegativeBalanceOptions): Promise<repayFuturesNegativeBalanceResponse> {\n            const url = this.prepareSignedPath('/sapi/v1/portfolio/repay-futures-negative-balance',\n                options ? options : {}\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n        /**\n         * Get Portfolio Margin Asset Leverage (USER_DATA) {@link https://developers.binance.com/docs/derivatives/portfolio-margin-pro/market-data/Get-Portfolio-Margin-Asset-Leverage}\n         */\n        async getPortfolioMarginAssetLeverage(): Promise<getPortfolioMarginAssetLeverageResponse[]> {\n            return await this.makeRequest('GET', '/sapi/v1/portfolio/margin-asset-leverage');\n        }\n    };\n}\n","import { Constructor } from '../../../setters/types';\nimport { validateRequiredParameters } from '../../../helpers/utils';\nimport {\n    getSimpleEarnFlexibleProductListOptions,\n    getSimpleEarnFlexibleProductListResponse,\n    getSimpleEarnLockedProductListOptions,\n    getSimpleEarnLockedProductListResponse,\n    subscribeFlexibleProductOptions,\n    subscribeFlexibleProductResponse,\n    subscribeLockedProductOptions,\n    subscribeLockedProductResponse,\n    redeemFlexibleProductOptions,\n    redeemFlexibleProductResponse,\n    redeemLockedProductOptions,\n    redeemLockedProductResponse,\n    getFlexibleProductPositionOptions,\n    getFlexibleProductPositionResponse,\n    getLockedProductPositionOptions,\n    getLockedProductPositionResponse,\n    simpleAccountOptions,\n    simpleAccountResponse,\n    getFlexibleSubscriptionRecordOptions,\n    getFlexibleSubscriptionRecordResponse,\n    getLockedSubscriptionRecordOptions,\n    getLockedSubscriptionRecordResponse,\n    getFlexibleRedemptionRecordOptions,\n    getFlexibleRedemptionRecordResponse,\n    getLockedRedemptionRecordOptions,\n    getLockedRedemptionRecordResponse,\n    getFlexibleRewardsHistoryOptions,\n    getFlexibleRewardsHistoryResponse,\n    getLockedRewardsHistoryOptions,\n    getLockedRewardsHistoryResponse,\n    setFlexibleAutoSubscribeOptions,\n    setFlexibleAutoSubscribeResponse,\n    setLockedAutoSubscribeOptions,\n    setLockedAutoSubscribeResponse,\n    getFlexiblePersonalLeftQuotaOptions,\n    getFlexiblePersonalLeftQuotaResponse,\n    getLockedPersonalLeftQuotaOptions,\n    getLockedPersonalLeftQuotaResponse,\n    getFlexibleSubscriptionPreviewOptions,\n    getFlexibleSubscriptionPreviewResponse,\n    getLockedSubscriptionPreviewOptions,\n    getLockedSubscriptionPreviewResponse,\n    setLockedRedeemOptionOptions,\n    setLockedRedeemOptionResponse,\n    getRateHistoryOptions,\n    getRateHistoryResponse,\n    getCollateralRecordOptions,\n    getCollateralRecordResponse\n} from './types';\nimport { RedeemOption } from '../../enum';\nimport { SimpleEarnMethods } from './methods';\n\nexport function mixinSimpleEarn<T extends Constructor>(base: T): Constructor<SimpleEarnMethods> & T {\n    return class extends base {\n        /**\n        * Get Simple Earn Flexible Product List (USER_DATA) {@link https://developers.binance.com/docs/simple_earn/account/Get-Simple-Earn-Flexible-Product-List}\n        *\n        * @param {object} [options]\n        * @param {string} [options.asset]\n        * @param {number} [options.current] - Current querying page. Start from 1. Default:1\n        * @param {number} [options.size] - Default:10 Max:100\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getSimpleEarnFlexibleProductList(options?: getSimpleEarnFlexibleProductListOptions): Promise<getSimpleEarnFlexibleProductListResponse> {\n            const url = this.prepareSignedPath('/sapi/v1/simple-earn/flexible/list',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Get Simple Earn Locked Product List (USER_DATA) {@link https://developers.binance.com/docs/simple_earn/account/Get-Simple-Earn-Locked-Product-List}\n        *\n        * @param {object} [options]\n        * @param {string} [options.asset]\n        * @param {number} [options.current] - Current querying page. Start from 1. Default:1\n        * @param {number} [options.size] - Default:10 Max:100\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getSimpleEarnLockedProductList(options?: getSimpleEarnLockedProductListOptions): Promise<getSimpleEarnLockedProductListResponse> {\n            const url = this.prepareSignedPath('/sapi/v1/simple-earn/locked/list',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Subscribe Flexible Product (TRADE) {@link https://developers.binance.com/docs/simple_earn/earn/Subscribe-Flexible-Product}\n        *\n        * @param {string} productId\n        * @param {number} amount\n        * @param {object} [options]\n        * @param {boolean} [options.autoSubscribe] - true or false, default true.\n        * @param {string} [options.sourceAccount] - SPOT,FUND,ALL, default SPOT\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async subscribeFlexibleProduct(productId: string, amount: number, options?: subscribeFlexibleProductOptions): Promise<subscribeFlexibleProductResponse> {\n            validateRequiredParameters({ productId, amount });\n            const url = this.prepareSignedPath('/sapi/v1/simple-earn/flexible/subscribe',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        productId: productId,\n                        amount: amount\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n        * Subscribe Locked Product (TRADE) {@link https://developers.binance.com/docs/simple_earn/earn/Subscribe-Locked-Product}\n        *\n        * @param {string} projectId\n        * @param {number} amount\n        * @param {object} [options]\n        * @param {boolean} [options.autoSubscribe] - true or false, default true.\n        * @param {string} [options.sourceAccount] - SPOT,FUND,ALL, default SPOT\n        * @param {RedeemOption} [options.redeemTo] - \"SPOT\", \"FLEXIBLE\", default SPOT\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async subscribeLockedProduct(projectId: string, amount: number, options?: subscribeLockedProductOptions): Promise<subscribeLockedProductResponse> {\n            validateRequiredParameters({ projectId, amount });\n            const url = this.prepareSignedPath('/sapi/v1/simple-earn/locked/subscribe',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        projectId: projectId,\n                        amount: amount\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n        * Redeem Flexible Product (TRADE) {@link https://developers.binance.com/docs/simple_earn/earn/Redeem-Flexible-Product}\n        *\n        * @param {string} productId\n        * @param {object} [options]\n        * @param {boolean} [options.redeemAll] - true or false, default to false\n        * @param {number} [options.amount] - if redeemAll is false, amount is mandatory\n        * @param {string} [options.destAccount] - SPOT,FUND,ALL, default SPOT\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async redeemFlexibleProduct(productId: string, options?: redeemFlexibleProductOptions): Promise<redeemFlexibleProductResponse> {\n            validateRequiredParameters({ productId });\n            const url = this.prepareSignedPath('/sapi/v1/simple-earn/flexible/redeem',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        productId: productId\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n        * Redeem Locked Product (TRADE) {@link https://developers.binance.com/docs/simple_earn/earn/Redeem-Locked-Product}\n        *\n        * @param {string} positionId - 1234\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async redeemLockedProduct(positionId: string, options?: redeemLockedProductOptions): Promise<redeemLockedProductResponse> {\n            validateRequiredParameters({ positionId });\n            const url = this.prepareSignedPath('/sapi/v1/simple-earn/locked/redeem',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        positionId: positionId\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n        * Get Flexible Product Position (USER_DATA) {@link https://developers.binance.com/docs/simple_earn/account/Get-Flexible-Product-Position}\n        *\n        * @param {object} [options]\n        * @param {string} [options.asset]\n        * @param {string} [options.productId]\n        * @param {number} [options.current] - Current querying page. Start from 1. Default:1\n        * @param {number} [options.size] - Default:10 Max:100\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getFlexibleProductPosition(options?: getFlexibleProductPositionOptions): Promise<getFlexibleProductPositionResponse> {\n            const url = this.prepareSignedPath('/sapi/v1/simple-earn/flexible/position',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Get Locked Product Position (USER_DATA) {@link https://developers.binance.com/docs/simple_earn/account/Get-Locked-Product-Position}\n        *\n        * @param {object} [options]\n        * @param {string} [options.asset]\n        * @param {string} [options.positionId]\n        * @param {string} [options.projectId]\n        * @param {number} [options.current] - Current querying page. Start from 1. Default:1\n        * @param {number} [options.size] - Default:10 Max:100\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getLockedProductPosition(options?: getLockedProductPositionOptions): Promise<getLockedProductPositionResponse> {\n            const url = this.prepareSignedPath('/sapi/v1/simple-earn/locked/position',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Simple Account (USER_DATA) {@link https://developers.binance.com/docs/simple_earn/account/Simple-Account}\n        *\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async simpleAccount(options?: simpleAccountOptions): Promise<simpleAccountResponse> {\n            const url = this.prepareSignedPath('/sapi/v1/simple-earn/account',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Get Flexible Subscription Record (USER_DATA) {@link https://developers.binance.com/docs/simple_earn/history/Get-Flexible-Subscription-Record}\n        *\n        * @param {object} [options]\n        * @param {string} [options.productId]\n        * @param {string} [options.purchaseId]\n        * @param {string} [options.asset]\n        * @param {number} [options.startTime] - UTC timestamp in ms\n        * @param {number} [options.endTime] - UTC timestamp in ms\n        * @param {number} [options.current] - Current querying page. Start from 1. Default:1\n        * @param {number} [options.size] - Default:10 Max:100\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getFlexibleSubscriptionRecord(options?: getFlexibleSubscriptionRecordOptions): Promise<getFlexibleSubscriptionRecordResponse> {\n            const url = this.prepareSignedPath('/sapi/v1/simple-earn/flexible/history/subscriptionRecord',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Get Locked Subscription Record (USER_DATA) {@link https://developers.binance.com/docs/simple_earn/history/Get-Locked-Subscription-Record}\n        *\n        * @param {object} [options]\n        * @param {string} [options.purchaseId]\n        * @param {string} [options.asset]\n        * @param {number} [options.startTime] - UTC timestamp in ms\n        * @param {number} [options.endTime] - UTC timestamp in ms\n        * @param {number} [options.current] - Current querying page. Start from 1. Default:1\n        * @param {number} [options.size] - Default:10 Max:100\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getLockedSubscriptionRecord(options?: getLockedSubscriptionRecordOptions): Promise<getLockedSubscriptionRecordResponse> {\n            const url = this.prepareSignedPath('/sapi/v1/simple-earn/locked/history/subscriptionRecord',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Get Flexible Redemption Record (USER_DATA) {@link https://developers.binance.com/docs/simple_earn/history/Get-Flexible-Redemption-Record}\n        *\n        * @param {object} [options]\n        * @param {string} [options.productId]\n        * @param {string} [options.redeemId]\n        * @param {string} [options.asset]\n        * @param {number} [options.startTime] - UTC timestamp in ms\n        * @param {number} [options.endTime] - UTC timestamp in ms\n        * @param {number} [options.current] - Current querying page. Start from 1. Default:1\n        * @param {number} [options.size] - Default:10 Max:100\n        */\n        async getFlexibleRedemptionRecord(options?: getFlexibleRedemptionRecordOptions): Promise<getFlexibleRedemptionRecordResponse> {\n            const url = this.prepareSignedPath('/sapi/v1/simple-earn/flexible/history/redemptionRecord',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Get Locked Redemption Record (USER_DATA) {@link https://developers.binance.com/docs/simple_earn/history/Get-Locked-Redemption-Record}\n        *\n        * @param {object} [options]\n        * @param {string} [options.positionId]\n        * @param {string} [options.redeemId]\n        * @param {string} [options.asset]\n        * @param {number} [options.startTime] - UTC timestamp in ms\n        * @param {number} [options.endTime] - UTC timestamp in ms\n        * @param {number} [options.current] - Current querying page. Start from 1. Default:1\n        * @param {number} [options.size] - Default:10 Max:100\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getLockedRedemptionRecord(options?: getLockedRedemptionRecordOptions): Promise<getLockedRedemptionRecordResponse> {\n            const url = this.prepareSignedPath('/sapi/v1/simple-earn/locked/history/redemptionRecord',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Get Flexible Rewards History (USER_DATA) {@link https://developers.binance.com/docs/simple_earn/history/Get-Flexible-Rewards-History}\n        *\n        * @param {string} type - \"BONUS\", \"REALTIME\", \"REWARDS\"\n        * @param {object} [options]\n        * @param {string} [options.productId]\n        * @param {string} [options.asset]\n        * @param {number} [options.startTime] - UTC timestamp in ms\n        * @param {number} [options.endTime] - UTC timestamp in ms\n        */\n        async getFlexibleRewardsHistory(type: string, options?: getFlexibleRewardsHistoryOptions): Promise<getFlexibleRewardsHistoryResponse> {\n            validateRequiredParameters({ type });\n            const url = this.prepareSignedPath('/sapi/v1/simple-earn/flexible/history/rewardsRecord',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        type: type\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Get Locked Rewards History (USER_DATA) {@link https://developers.binance.com/docs/simple_earn/history/Get-Locked-Rewards-History}\n        *\n        * @param {object} [options]\n        * @param {string} [options.positionId]\n        * @param {string} [options.asset]\n        * @param {number} [options.startTime] - UTC timestamp in ms\n        * @param {number} [options.endTime] - UTC timestamp in ms\n        * @param {number} [options.size] - Default:10 Max:100\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getLockedRewardsHistory(options?: getLockedRewardsHistoryOptions): Promise<getLockedRewardsHistoryResponse> {\n            const url = this.prepareSignedPath('/sapi/v1/simple-earn/locked/history/rewardsRecord',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Set Flexible Auto Subscribe (USER_DATA) {@link https://developers.binance.com/docs/simple_earn/earn/Set-Flexible-Auto-Subscribe}\n        *\n        * @param {string} productId\n        * @param {boolean} autoSubscribe - true or false\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async setFlexibleAutoSubscribe(productId: string, autoSubscribe: boolean, options?: setFlexibleAutoSubscribeOptions): Promise<setFlexibleAutoSubscribeResponse> {\n            validateRequiredParameters({ productId, autoSubscribe });\n            const url = this.prepareSignedPath('/sapi/v1/simple-earn/flexible/setAutoSubscribe',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        productId: productId,\n                        autoSubscribe: autoSubscribe\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n        * Set Locked Auto Subscribe (USER_DATA) {@link https://developers.binance.com/docs/simple_earn/earn/Set-Locked-Auto-Subscribe}\n        *\n        * @param {string} positionId\n        * @param {boolean} autoSubscribe - true or false\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async setLockedAutoSubscribe(positionId: string, autoSubscribe: boolean, options?: setLockedAutoSubscribeOptions): Promise<setLockedAutoSubscribeResponse> {\n            validateRequiredParameters({ positionId, autoSubscribe });\n            const url = this.prepareSignedPath('/sapi/v1/simple-earn/locked/setAutoSubscribe',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        positionId: positionId,\n                        autoSubscribe: autoSubscribe\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n        * Get Flexible Personal Left Quota (USER_DATA) {@link https://developers.binance.com/docs/simple_earn/account/Get-Flexible-Personal-Left-Quota}\n        *\n        * @param {string} productId\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getFlexiblePersonalLeftQuota(productId: string, options?: getFlexiblePersonalLeftQuotaOptions): Promise<getFlexiblePersonalLeftQuotaResponse> {\n            validateRequiredParameters({ productId });\n            const url = this.prepareSignedPath('/sapi/v1/simple-earn/flexible/personalLeftQuota',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        productId: productId\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Get Locked Personal Left Quota (USER_DATA) {@link https://developers.binance.com/docs/simple_earn/account/Get-Locked-Personal-Left-Quota}\n        *\n        * @param {string} projectId\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getLockedPersonalLeftQuota(projectId: string, options?: getLockedPersonalLeftQuotaOptions): Promise<getLockedPersonalLeftQuotaResponse> {\n            validateRequiredParameters({ projectId });\n            const url = this.prepareSignedPath('/sapi/v1/simple-earn/locked/personalLeftQuota',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        projectId: projectId\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Get Flexible Subscription Preview (USER_DATA) {@link https://developers.binance.com/docs/simple_earn/earn/Get-Flexible-Subscription-Preview}\n        *\n        * @param {string} productId\n        * @param {number} amount\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getFlexibleSubscriptionPreview(productId: string, amount: number, options?: getFlexibleSubscriptionPreviewOptions): Promise<getFlexibleSubscriptionPreviewResponse> {\n            validateRequiredParameters({ productId, amount });\n            const url = this.prepareSignedPath('/sapi/v1/simple-earn/flexible/subscriptionPreview',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        productId: productId,\n                        amount: amount\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Get Locked Subscription Preview (USER_DATA) {@link https://developers.binance.com/docs/simple_earn/earn/Get-Locked-Subscription-Preview}\n        *\n        * @param {string} projectId\n        * @param {number} amount\n        * @param {object} [options]\n        * @param {boolean} [options.autoSubscribe] - true or false, default true.\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getLockedSubscriptionPreview(projectId: string, amount: number, options?: getLockedSubscriptionPreviewOptions): Promise<getLockedSubscriptionPreviewResponse[]> {\n            validateRequiredParameters({ projectId, amount });\n            const url = this.prepareSignedPath('/sapi/v1/simple-earn/locked/subscriptionPreview',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        projectId: projectId,\n                        amount: amount\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n         * Set Locked Product Redeem Option (USER_DATA) {@link https://developers.binance.com/docs/simple_earn/earn/Set-Locked-Redeem-Option}\n         * \n         * @param {string} positionId\n         * @param {RedeemOption} redeemOption - \"SPOT\", \"FLEXIBLE\"\n         * @param {object} [options]\n         * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n         */\n        async setLockedRedeemOption(positionId: string, redeemOption: RedeemOption, options?: setLockedRedeemOptionOptions): Promise<setLockedRedeemOptionResponse> {\n            validateRequiredParameters({ positionId, redeemOption });\n            const url = this.prepareSignedPath('/sapi/v1/simple-earn/locked/setRedeemOption',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        positionId: positionId,\n                        redeemOption: redeemOption\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n        /**\n        * Get Rate History (USER_DATA) {@link https://developers.binance.com/docs/simple_earn/history/Get-Rate-History}\n        *\n        * @param {string} productId\n        * @param {object} [options]\n        * @param {number} [options.startTime] - UTC timestamp in ms\n        * @param {number} [options.endTime] - UTC timestamp in ms\n        * @param {number} [options.current] - Current querying page. Start from 1. Default:1\n        * @param {number} [options.size] - Default:10 Max:100\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getRateHistory(productId: string, options?: getRateHistoryOptions): Promise<getRateHistoryResponse> {\n            validateRequiredParameters({ productId });\n            const url = this.prepareSignedPath('/sapi/v1/simple-earn/flexible/history/rateHistory',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        productId: productId\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Get Collateral Record (USER_DATA) {@link https://developers.binance.com/docs/simple_earn/history/Get-Collateral-Record}\n        *\n        * @param {string} productId\n        * @param {object} [options]\n        * @param {number} [options.startTime] - UTC timestamp in ms\n        * @param {number} [options.endTime] - UTC timestamp in ms\n        * @param {number} [options.current] - Current querying page. Start from 1. Default:1\n        * @param {number} [options.size] - Default:10 Max:100\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getCollateralRecord(options?: getCollateralRecordOptions): Promise<getCollateralRecordResponse> {\n            const url = this.prepareSignedPath('/sapi/v1/simple-earn/flexible/history/collateralRecord',\n                Object.assign(\n                    options ? options : {}\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n    };\n}\n","import { Constructor } from '../../../setters/types';\nimport { validateRequiredParameters } from '../../../helpers/utils';\nimport { listenkeyResponse } from './types';\nimport { StreamMethods } from './methods';\n\nexport function mixinStream<T extends Constructor>(base: T): Constructor<StreamMethods> & T {\n    return class extends base {\n        /**\n        * Create a ListenKey (USER_STREAM) {@link https://developers.binance.com/docs/binance-spot-api-docs/user-data-stream#create-a-listenkey-user_stream}\n        */\n        async createListenKey(): Promise<listenkeyResponse> {\n            return await this.makeRequest('POST', '/api/v3/userDataStream');\n        }\n\n\n        /**\n        * Ping/Keep-alive a ListenKey (USER_STREAM) {@link https://developers.binance.com/docs/binance-spot-api-docs/user-data-stream#ping-keep-alive-a-listenkey-user_stream}\n        *\n        * @param {string} listenKey\n        */\n        async renewListenKey(listenKey: string): Promise<Record<string, never>> {\n            validateRequiredParameters({ listenKey });\n            const url = this.preparePath('/api/v3/userDataStream', { listenKey: listenKey });\n            return await this.makeRequest('PUT', url);\n        }\n\n\n        /**\n        * Close a ListenKey (USER_STREAM) {@link https://developers.binance.com/docs/binance-spot-api-docs/user-data-stream#close-a-listenkey-user_stream}\n        *\n        * @param {string} listenKey\n        */\n        async closeListenKey(listenKey: string): Promise<Record<string, never>> {\n            validateRequiredParameters({ listenKey });\n            const url = this.preparePath('/api/v3/userDataStream', { listenKey: listenKey });\n            return await this.makeRequest('DELETE', url);\n        }\n\n\n        /**\n        * Create a ListenKey (USER_STREAM) {@link https://developers.binance.com/docs/margin_trading/trade-data-stream/Start-Margin-User-Data-Stream}\n        */\n        async createMarginListenKey(): Promise<listenkeyResponse> {\n            return await this.makeRequest('POST', '/sapi/v1/userDataStream');\n        }\n\n\n        /**\n        * Ping/Keep-alive a ListenKey (USER_STREAM) {@link https://developers.binance.com/docs/margin_trading/trade-data-stream/Keepalive-Margin-User-Data-Stream}\n        *\n        * @param {string} listenKey\n        */\n        async renewMarginListenKey(listenKey: string): Promise<Record<string, never>> {\n            validateRequiredParameters({ listenKey });\n            const url = this.preparePath('/sapi/v1/userDataStream', { listenKey: listenKey });\n            return await this.makeRequest('PUT', url);\n        }\n\n\n        /**\n        * Close a ListenKey (USER_STREAM) {@link https://developers.binance.com/docs/margin_trading/trade-data-stream/Close-Margin-User-Data-Stream}\n        *\n        * @param {string} listenKey\n        */\n        async closeMarginListenKey(listenKey: string): Promise<Record<string, never>> {\n            validateRequiredParameters({ listenKey });\n            const url = this.preparePath('/sapi/v1/userDataStream', { listenKey: listenKey });\n            return await this.makeRequest('DELETE', url);\n        }\n\n\n        /**\n        * Generate a ListenKey (USER_STREAM) {@link https://developers.binance.com/docs/margin_trading/trade-data-stream/Start-Isolated-Margin-User-Data-Stream}\n        * \n        * @param {string} symbol\n        */\n        async createIsolatedMarginListenKey(symbol: string): Promise<listenkeyResponse> {\n            validateRequiredParameters({ symbol });\n            const url = this.preparePath('/sapi/v1/userDataStream/isolated', { symbol: symbol });\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n        * Ping/Keep-alive a ListenKey (USER_STREAM) {@link https://developers.binance.com/docs/margin_trading/trade-data-stream/Keepalive-Isolated-Margin-User-Data-Stream}\n        *\n        * @param {string} symbol\n        * @param {string} listenKey\n        */\n        async renewIsolatedMarginListenKey(symbol: string, listenKey: string): Promise<Record<string, never>> {\n            validateRequiredParameters({ symbol, listenKey });\n            const url = this.preparePath('/sapi/v1/userDataStream/isolated', { listenKey: listenKey, symbol: symbol });\n            return await this.makeRequest('PUT', url);\n        }\n\n\n        /**\n        * Close a ListenKey (USER_STREAM) {@link https://developers.binance.com/docs/margin_trading/trade-data-stream/Close-Isolated-Margin-User-Data-Stream}\n        *\n        * @param {string} symbol\n        * @param {string} listenKey\n        */\n        async closeIsolatedMarginListenKey(symbol: string, listenKey: string): Promise<Record<string, never>> {\n            const url = this.preparePath('/sapi/v1/userDataStream/isolated', { listenKey: listenKey, symbol: symbol });\n            return await this.makeRequest('DELETE', url);\n        }\n    };\n}\n","import { Constructor } from '../../../setters/types';\nimport { validateRequiredParameters } from '../../../helpers/utils';\nimport {\n    createAVirtualSubAccountOptions,\n    createAVirtualSubAccountResponse,\n    getSubAccountListOptions,\n    getSubAccountListResponse,\n    getSubAccountSpotAssetTransferHistoryOptions,\n    getSubAccountSpotAssetTransferHistoryResponse,\n    getSubAccountFuturesAssetTransferHistoryOptions,\n    getSubAccountFuturesAssetTransferHistoryResponse,\n    subAccountFuturesAssetTransferOptions,\n    subAccountFuturesAssetTransferResponse,\n    getSubAccountAssetsOptions,\n    getSubAccountAssetsResponse,\n    getSubAccountSpotAssetsSummaryOptions,\n    getSubAccountSpotAssetsSummaryResponse,\n    getSubAccountDepositAddressOptions,\n    getSubAccountDepositAddressResponse,\n    subAccountDepositHistoryOptions,\n    subAccountDepositHistoryResponse,\n    subAccountStatusOnMarginFuturesOptions,\n    subAccountStatusOnMarginFuturesResponse,\n    enableMarginForSubAccountOptions,\n    enableMarginForSubAccountResponse,\n    detailOnSubAccountMarginAccountOptions,\n    detailOnSubAccountMarginAccountResponse,\n    summaryOfSubAccountMarginAccountOptions,\n    summaryOfSubAccountMarginAccountResponse,\n    enableFuturesForSubAccountOptions,\n    enableFuturesForSubAccountResponse,\n    detailOnSubAccountFuturesAccountOptions,\n    detailOnSubAccountFuturesAccountResponse,\n    summaryOfSubAccountFuturesAccountOptions,\n    summaryOfSubAccountFuturesAccountResponse,\n    futuresPositionriskOfSubAccountOptions,\n    futuresPositionriskOfSubAccountResponse,\n    transferForSubAccountOptions,\n    transferForSubAccountResponse,\n    marginTransferForSubAccountOptions,\n    marginTransferForSubAccountResponse,\n    transferToSubAccountOfSameMasterOptions,\n    transferToSubAccountOfSameMasterResponse,\n    transferToMasterOptions,\n    transferToMasterResponse,\n    subAccountTransferHistoryOptions,\n    subAccountTransferHistoryResponse,\n    getUniversalTransferHistoryOptions,\n    getUniversalTransferHistoryResponse,\n    universalTransferOptions,\n    universalTransferResponse,\n    getDetailOnSubAccountFuturesAccountV2Options,\n    getDetailOnSubAccountFuturesAccountV2Response,\n    summaryOfSubAccountFuturesAccountV2Options,\n    summaryOfSubAccountFuturesAccountV2Response,\n    futuresPositionriskOfSubAccountV2Options,\n    futuresPositionriskOfSubAccountV2Response,\n    enableLeverageTokenForSubAccountOptions,\n    enableLeverageTokenForSubAccountResponse,\n    depositAssetsIntoTheManagedSubAccountOptions,\n    depositAssetsIntoTheManagedSubAccountResponse,\n    getManagedSubAccountAssetDetailsOptions,\n    getManagedSubAccountAssetDetailsResponse,\n    withdrawlAssetsFromTheManagedSubAccountOptions,\n    withdrawlAssetsFromTheManagedSubAccountResponse,\n    getManagedSubAccountSnapshotOptions,\n    getManagedSubAccountSnapshotResponse,\n    getIpRestrictionForASubAccountApiKeyOptions,\n    getIpRestrictionForASubAccountApiKeyResponse,\n    deleteIpListForASubAccountApiKeyOptions,\n    deleteIpListForASubAccountApiKeyResponse,\n    addIpRestrictionForSubAccountApiKeyOptions,\n    addIpRestrictionForSubAccountApiKeyResponse,\n    getManagedSubAccountTransferLogOptions,\n    getManagedSubAccountTransferLogResponse,\n    getManagedSubAccountTransferLogForTradeParentOptions,\n    getManagedSubAccountTransferLogForTradeParentResponse,\n    getManagedSubAccountFuturesAssetDetailsResponse,\n    getManagedSubAccountMarginAssetDetailsResponse,\n    getSubAccountAssetsForMasterAccountOptions,\n    getSubAccountAssetsForMasterAccountResponse,\n    getManagedSubAccountListOptions,\n    getManagedSubAccountListResponse,\n    getSubAccountTransactionStatisticsForMasterAccountOptions,\n    getSubAccountTransactionStatisticsForMasterAccountResponse,\n    getManagedSubAccountDepositAddressOptions,\n    getManagedSubAccountDepositAddressResponse,\n    enableOptionsForSubAccountOptions,\n    enableOptionsForSubAccountResponse,\n    getManagedSubAccountTransferLogForTradeSubOptions,\n    getManagedSubAccountTransferLogForTradeSubResponse,\n} from './types';\nimport { SubAccountMethods } from './methods';\nimport { FromAccountType, ToAccountType, AccountSnapshotType } from '../../enum';\n\nexport function mixinSubAccount<T extends Constructor>(base: T): Constructor<SubAccountMethods> & T {\n    return class extends base {\n        /**\n        * Create a Virtual Sub-account (For Master Account) {@link https://developers.binance.com/docs/sub_account/account-management/Create-a-Virtual-Sub-account}\n        *\n        * @param {string} subAccountString - Please input a string. We will create a virtual email using that string for you to register\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async createAVirtualSubAccount(subAccountString: string, options?: createAVirtualSubAccountOptions): Promise<createAVirtualSubAccountResponse> {\n            validateRequiredParameters({ subAccountString });\n            const url = this.prepareSignedPath('/sapi/v1/sub-account/virtualSubAccount',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        subAccountString: subAccountString\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n        * Query Sub-account List (For Master Account) {@link https://developers.binance.com/docs/sub_account/account-management/Query-Sub-account-List}\n        *\n        * @param {object} [options]\n        * @param {string} [options.email] - Sub-account email\n        * @param {IsFreeze} [options.isFreeze]\n        * @param {number} [options.page] - Default 1\n        * @param {number} [options.limit] - Default 1; max 200\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getSubAccountList(options?: getSubAccountListOptions): Promise<getSubAccountListResponse> {\n            const url = this.prepareSignedPath('/sapi/v1/sub-account/list',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Query Sub-account Spot Asset Transfer History (For Master Account) {@link https://developers.binance.com/docs/sub_account/asset-management/Query-Sub-account-Spot-Asset-Transfer-History}\n        *\n        * @param {object} [options]\n        * @param {string} [options.fromEmail] - Sub-account email\n        * @param {string} [options.toEmail] - Sub-account email\n        * @param {number} [options.startTime] - UTC timestamp in ms\n        * @param {number} [options.endTime] - UTC timestamp in ms\n        * @param {number} [options.page] - Default 1\n        * @param {number} [options.limit] - Default 1\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getSubAccountSpotAssetTransferHistory(options?: getSubAccountSpotAssetTransferHistoryOptions): Promise<getSubAccountSpotAssetTransferHistoryResponse[]> {\n            const url = this.prepareSignedPath('/sapi/v1/sub-account/sub/transfer/history',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Query Sub-account Futures Asset Transfer History (For Master Account) {@link https://developers.binance.com/docs/sub_account/asset-management/Query-Sub-account-Futures-Asset-Transfer-History}\n        *\n        * @param {string} email - Sub-account email\n        * @param {number} futuresType - 1:USDT-margined Futures, 2: Coin-margined Futures\n        * @param {object} [options]\n        * @param {number} [options.startTime] - UTC timestamp in ms\n        * @param {number} [options.endTime] - UTC timestamp in ms\n        * @param {number} [options.page] - Default 1\n        * @param {number} [options.limit] - Default value: 50, Max value: 500\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getSubAccountFuturesAssetTransferHistory(email: string, futuresType: number, options?: getSubAccountFuturesAssetTransferHistoryOptions): Promise<getSubAccountFuturesAssetTransferHistoryResponse> {\n            validateRequiredParameters({ email, futuresType });\n            const url = this.prepareSignedPath('/sapi/v1/sub-account/futures/internalTransfer',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        email: email,\n                        futuresType: futuresType\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Sub-account Futures Asset Transfer (For Master Account) {@link https://developers.binance.com/docs/sub_account/asset-management/Sub-account-Futures-Asset-Transfer}\n        *\n        * @param {string} fromEmail - Sender email\n        * @param {string} toEmail - Recipient email\n        * @param {number} futuresType - 1:USDT-margined Futures,2: Coin-margined Futures\n        * @param {string} asset\n        * @param {number} amount\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async subAccountFuturesAssetTransfer(fromEmail: string, toEmail: string, futuresType: number, asset: string, amount: number, options?: subAccountFuturesAssetTransferOptions): Promise<subAccountFuturesAssetTransferResponse> {\n            validateRequiredParameters({ fromEmail, toEmail, futuresType, asset, amount });\n            const url = this.prepareSignedPath('/sapi/v1/sub-account/futures/internalTransfer',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        fromEmail: fromEmail,\n                        toEmail: toEmail,\n                        futuresType: futuresType,\n                        asset: asset.toUpperCase(),\n                        amount: amount\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n        * Query Sub-account Assets (For Master Account) {@link https://developers.binance.com/docs/sub_account/asset-management/Query-Sub-account-Assets-V3}\n        *\n        * @param {string} email - Sub-account email\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getSubAccountAssets(email: string, options?: getSubAccountAssetsOptions): Promise<getSubAccountAssetsResponse> {\n            validateRequiredParameters({ email });\n            const url = this.prepareSignedPath('/sapi/v3/sub-account/assets',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        email: email\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Query Sub-account Spot Assets Summary (For Master Account) {@link https://developers.binance.com/docs/sub_account/asset-management/Query-Sub-account-Spot-Assets-Summary}\n        *\n        * @param {object} [options]\n        * @param {string} [options.email] - Sub-account email\n        * @param {number} [options.page] - Default 1\n        * @param {number} [options.size] - Default:10 Max:20\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getSubAccountSpotAssetsSummary(options?: getSubAccountSpotAssetsSummaryOptions): Promise<getSubAccountSpotAssetsSummaryResponse> {\n            const url = this.prepareSignedPath('/sapi/v1/sub-account/spotSummary',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Get Sub-account Deposit Address (For Master Account) {@link https://developers.binance.com/docs/sub_account/asset-management/Get-Sub-account-Deposit-Address}\n        *\n        * @param {string} email - Sub-account email\n        * @param {string} coin - Coin name\n        * @param {object} [options]\n        * @param {string} [options.network]\n        * @param {number} [options.amount]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getSubAccountDepositAddress(email: string, coin: string, options?: getSubAccountDepositAddressOptions): Promise<getSubAccountDepositAddressResponse> {\n            validateRequiredParameters({ email, coin });\n            const url = this.prepareSignedPath('/sapi/v1/capital/deposit/subAddress',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        email: email,\n                        coin: coin\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Get Sub-account Deposit History (For Master Account) {@link https://developers.binance.com/docs/sub_account/asset-management/Get-Sub-account-Deposit-History}\n        *\n        * @param {string} email - Sub-account email\n        * @param {object} [options]\n        * @param {string} [options.coin] - Coin name\n        * @param {number} [options.status] - 0(0:pending,6: credited but cannot withdraw, 1:success)\n        * @param {number} [options.startTime] - UTC timestamp in ms\n        * @param {number} [options.endTime] - UTC timestamp in ms\n        * @param {number} [options.limit]\n        * @param {number} [options.offset]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        * @param {string} [options.txId]\n        */\n        async subAccountDepositHistory(email: string, options?: subAccountDepositHistoryOptions): Promise<subAccountDepositHistoryResponse[]> {\n            validateRequiredParameters({ email });\n            const url = this.prepareSignedPath('/sapi/v1/capital/deposit/subHisrec',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        email: email\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Get Sub-account's Status on Margin/Futures (For Master Account) {@link https://developers.binance.com/docs/sub_account/account-management/Get-Sub-accounts-Status-on-Margin-Or-Futures}\n        *\n        * @param {object} [options]\n        * @param {string} [options.email] - Sub-account email\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async subAccountStatusOnMarginFutures(options?: subAccountStatusOnMarginFuturesOptions): Promise<subAccountStatusOnMarginFuturesResponse[]> {\n            const url = this.prepareSignedPath('/sapi/v1/sub-account/status',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Enable Margin for Sub-account (For Master Account) {@link https://developers.binance.com/docs/sub_account/account-management/Enable-Margin-for-Sub-account}\n        *\n        * @param {string} email - Sub-account email\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async enableMarginForSubAccount(email: string, options?: enableMarginForSubAccountOptions): Promise<enableMarginForSubAccountResponse> {\n            validateRequiredParameters({ email });\n            const url = this.prepareSignedPath('/sapi/v1/sub-account/margin/enable',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        email: email\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n        * Get Detail on Sub-account's Margin Account (For Master Account) {@link https://developers.binance.com/docs/sub_account/asset-management/Get-Detail-on-Sub-accounts-Margin-Account}\n        *\n        * @param {string} email - Sub-account email\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async detailOnSubAccountMarginAccount(email: string, options?: detailOnSubAccountMarginAccountOptions): Promise<detailOnSubAccountMarginAccountResponse> {\n            validateRequiredParameters({ email });\n            const url = this.prepareSignedPath('/sapi/v1/sub-account/margin/account',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        email: email\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Get Summary of Sub-account's Margin Account (For Master Account) {@link https://developers.binance.com/docs/sub_account/asset-management/Get-Summary-of-Sub-accounts-Margin-Account}\n        *\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async summaryOfSubAccountMarginAccount(options?: summaryOfSubAccountMarginAccountOptions): Promise<summaryOfSubAccountMarginAccountResponse> {\n            const url = this.prepareSignedPath('/sapi/v1/sub-account/margin/accountSummary',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Enable Futures for Sub-account (For Master Account) {@link https://developers.binance.com/docs/sub_account/account-management/Enable-Futures-for-Sub-account}\n        *\n        * @param {string} email - Sub-account email\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async enableFuturesForSubAccount(email: string, options?: enableFuturesForSubAccountOptions): Promise<enableFuturesForSubAccountResponse> {\n            validateRequiredParameters({ email });\n            const url = this.prepareSignedPath('/sapi/v1/sub-account/futures/enable',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        email: email\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n        * Get Detail on Sub-account's Futures Account (For Master Account) {@link https://developers.binance.com/docs/sub_account/asset-management/Get-Detail-on-Sub-accounts-Futures-Account}\n        *\n        * @param {string} email - Sub-account email\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async detailOnSubAccountFuturesAccount(email: string, options?: detailOnSubAccountFuturesAccountOptions): Promise<detailOnSubAccountFuturesAccountResponse> {\n            validateRequiredParameters({ email });\n            const url = this.prepareSignedPath('/sapi/v1/sub-account/futures/account',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        email: email\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Get Summary of Sub-account's Futures Account (For Master Account) {@link https://developers.binance.com/docs/sub_account/asset-management/Get-Summary-of-Sub-accounts-Futures-Account}\n        *\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async summaryOfSubAccountFuturesAccount(options?: summaryOfSubAccountFuturesAccountOptions): Promise<summaryOfSubAccountFuturesAccountResponse> {\n            const url = this.prepareSignedPath('/sapi/v1/sub-account/futures/accountSummary',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Get Futures Position-Risk of Sub-account (For Master Account) {@link https://developers.binance.com/docs/sub_account/account-management/Get-Futures-Position-Risk-of-Sub-account}\n        *\n        * @param {string} email - Sub-account email\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async futuresPositionriskOfSubAccount(email: string, options?: futuresPositionriskOfSubAccountOptions): Promise<futuresPositionriskOfSubAccountResponse[]> {\n            validateRequiredParameters({ email });\n            const url = this.prepareSignedPath('/sapi/v1/sub-account/futures/positionRisk',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        email: email\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Futures Transfer for Sub-account (For Master Account) {@link https://developers.binance.com/docs/sub_account/asset-management/Futures-Transfer-for-Sub-account}\n        *\n        * @param {string} email - Sub-account email\n        * @param {string} asset\n        * @param {number} amount\n        * @param {number} type - * `1` - transfer from subAccount spot account to its USDT-margined futures account, * `2` - transfer from subAccount USDT-margined futures account to its spot account, * `3` - transfer from subAccount spot account to its COIN-margined futures account, * `4` - transfer from subAccount COIN-margined futures account to its spot account\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async transferForSubAccount(email: string, asset: string, amount: number, type: number, options?: transferForSubAccountOptions): Promise<transferForSubAccountResponse> {\n            validateRequiredParameters({ email, asset, amount, type });\n            const url = this.prepareSignedPath('/sapi/v1/sub-account/futures/transfer',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        email: email,\n                        asset: asset.toUpperCase(),\n                        amount: amount,\n                        type: type\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n        * Margin Transfer for Sub-account (For Master Account) {@link https://developers.binance.com/docs/sub_account/asset-management/Margin-Transfer-for-Sub-account}\n        *\n        * @param {string} email - Sub-account email\n        * @param {string} asset\n        * @param {number} amount\n        * @param {number} type - * `1` - transfer from subAccount spot account to margin account, * `2` - transfer from subAccount margin account to its spot account\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async marginTransferForSubAccount(email: string, asset: string, amount: number, type: number, options?: marginTransferForSubAccountOptions): Promise<marginTransferForSubAccountResponse> {\n            validateRequiredParameters({ email, asset, amount, type });\n            const url = this.prepareSignedPath('/sapi/v1/sub-account/margin/transfer',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        email: email,\n                        asset: asset.toUpperCase(),\n                        amount: amount,\n                        type: type\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n        * Transfer to Sub-account of Same Master (For Sub-account) {@link https://developers.binance.com/docs/sub_account/asset-management/Transfer-to-Sub-account-of-Same-Master}\n        *\n        * @param {string} toEmail - Recipient email\n        * @param {string} asset\n        * @param {number} amount\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async transferToSubAccountOfSameMaster(toEmail: string, asset: string, amount: number, options?: transferToSubAccountOfSameMasterOptions): Promise<transferToSubAccountOfSameMasterResponse> {\n            validateRequiredParameters({ toEmail, asset, amount });\n            const url = this.prepareSignedPath('/sapi/v1/sub-account/transfer/subToSub',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        toEmail: toEmail,\n                        asset: asset.toUpperCase(),\n                        amount: amount\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n        * Transfer to Master (For Sub-account) {@link https://developers.binance.com/docs/sub_account/asset-management/Transfer-to-Master}\n        *\n        * @param {string} asset\n        * @param {number} amount\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async transferToMaster(asset: string, amount: number, options?: transferToMasterOptions): Promise<transferToMasterResponse> {\n            validateRequiredParameters({ asset, amount });\n            const url = this.prepareSignedPath('/sapi/v1/sub-account/transfer/subToMaster',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        asset: asset.toUpperCase(),\n                        amount: amount\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n        * Sub-account Transfer History (For Sub-account) {@link https://developers.binance.com/docs/sub_account/asset-management/Sub-account-Transfer-History}\n        *\n        * @param {object} [options]\n        * @param {string} [options.asset]\n        * @param {number} [options.type] - * `1` - transfer in, * `2` - transfer out\n        * @param {number} [options.startTime] - UTC timestamp in ms\n        * @param {number} [options.endTime] - UTC timestamp in ms\n        * @param {number} [options.limit] - Default 500; max 1000.\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async subAccountTransferHistory(options?: subAccountTransferHistoryOptions): Promise<subAccountTransferHistoryResponse[]> {\n            const url = this.prepareSignedPath('/sapi/v1/sub-account/transfer/subUserHistory',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Universal Transfer (For Master Account) {@link https://developers.binance.com/docs/sub_account/asset-management/Universal-Transfer}\n        *\n        * @param {FromAccountType} fromAccountType\n        * @param {ToAccountType} toAccountType\n        * @param {string} asset\n        * @param {number} amount\n        * @param {object} [options]\n        * @param {string} [options.fromEmail] - Sub-account email\n        * @param {string} [options.toEmail] - Sub-account email\n        * @param {string} [options.clientTranId]\n        * @param {string} [options.symbol] - Only supported under ISOLATED_MARGIN type\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async universalTransfer(fromAccountType: FromAccountType, toAccountType: ToAccountType, asset: string, amount: number, options?: universalTransferOptions): Promise<universalTransferResponse> {\n            validateRequiredParameters({ fromAccountType, toAccountType, asset, amount });\n            const url = this.prepareSignedPath('/sapi/v1/sub-account/universalTransfer',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        fromAccountType: fromAccountType,\n                        toAccountType: toAccountType,\n                        asset: asset.toUpperCase(),\n                        amount: amount\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n        * Query Universal Transfer History (For Master Account) {@link https://developers.binance.com/docs/sub_account/asset-management/Query-Universal-Transfer-History}\n        *\n        * @param {object} [options]\n        * @param {string} [options.fromEmail] - Sub-account email\n        * @param {string} [options.toEmail] - Sub-account email\n        * @param {string} [options.clientTranId]\n        * @param {number} [options.startTime] - UTC timestamp in ms\n        * @param {number} [options.endTime] - UTC timestamp in ms\n        * @param {number} [options.page] - Default 1\n        * @param {number} [options.limit] - Default 500, Max 500\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getUniversalTransferHistory(options?: getUniversalTransferHistoryOptions): Promise<getUniversalTransferHistoryResponse> {\n            const url = this.prepareSignedPath('/sapi/v1/sub-account/universalTransfer',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Get Detail on Sub-account's Futures Account V2 (For Master Account) {@link https://developers.binance.com/docs/sub_account/asset-management/Get-Detail-on-Sub-accounts-Futures-Account-V2}\n        *\n        * @param {string} email - Sub-account email\n        * @param {number} futuresType - * `1` - USDT Margined Futures, * `2` - COIN Margined Futures\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getDetailOnSubAccountFuturesAccountV2(email: string, futuresType: number, options?: getDetailOnSubAccountFuturesAccountV2Options): Promise<getDetailOnSubAccountFuturesAccountV2Response> {\n            validateRequiredParameters({ email, futuresType });\n            const url = this.prepareSignedPath('/sapi/v2/sub-account/futures/account',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        email: email,\n                        futuresType: futuresType\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Get Summary of Sub-account's Futures Account V2 (For Master Account) {@link https://developers.binance.com/docs/sub_account/asset-management/Get-Summary-of-Sub-accounts-Futures-Account-V2}\n        *\n        * @param {number} futuresType - * `1` - USDT Margined Futures, * `2` - COIN Margined Futures\n        * @param {object} [options]\n        * @param {number} [options.page] - Default 1\n        * @param {number} [options.limit] - Default 10, Max 20\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async summaryOfSubAccountFuturesAccountV2(futuresType: number, options?: summaryOfSubAccountFuturesAccountV2Options): Promise<summaryOfSubAccountFuturesAccountV2Response> {\n            validateRequiredParameters({ futuresType });\n            const url = this.prepareSignedPath('/sapi/v2/sub-account/futures/accountSummary',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        futuresType: futuresType\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Get Futures Position-Risk of Sub-account V2 (For Master Account) {@link https://developers.binance.com/docs/sub_account/account-management/Get-Futures-Position-Risk-of-Sub-account-V2}\n        *\n        * @param {string} email - Sub-account email\n        * @param {number} futuresType - * `1` - USDT Margined Futures, * `2` - COIN Margined Futures\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async futuresPositionriskOfSubAccountV2(email: string, futuresType: number, options?: futuresPositionriskOfSubAccountV2Options): Promise<futuresPositionriskOfSubAccountV2Response> {\n            validateRequiredParameters({ email, futuresType });\n            const url = this.prepareSignedPath('/sapi/v2/sub-account/futures/positionRisk',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        email: email,\n                        futuresType: futuresType\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Enable Leverage Token for Sub-account (For Master Account) {@link https://developers.binance.com/docs/sub_account/account-management/Enable-Leverage-Token-for-Sub-account}\n        *\n        * @param {string} email - Sub-account email\n        * @param {boolean} enableBlvt - Only true for now\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async enableLeverageTokenForSubAccount(email: string, enableBlvt: boolean, options?: enableLeverageTokenForSubAccountOptions): Promise<enableLeverageTokenForSubAccountResponse> {\n            validateRequiredParameters({ email, enableBlvt });\n            const url = this.prepareSignedPath('/sapi/v1/sub-account/blvt/enable',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        email: email,\n                        enableBlvt: enableBlvt\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n        * Get IP Restriction for a Sub-account API Key (For Master Account) {@link https://developers.binance.com/docs/sub_account/api-management/Get-IP-Restriction-for-a-Sub-account-API-Key}\n        *\n        * @param {string} email - Sub-account email\n        * @param {string} subAccountApiKey\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getIpRestrictionForASubAccountApiKey(email: string, subAccountApiKey: string, options?: getIpRestrictionForASubAccountApiKeyOptions): Promise<getIpRestrictionForASubAccountApiKeyResponse> {\n            validateRequiredParameters({ email, subAccountApiKey });\n            const url = this.prepareSignedPath('/sapi/v1/sub-account/subAccountApi/ipRestriction',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        email: email,\n                        subAccountApiKey: subAccountApiKey\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Delete IP List for a Sub-account API Key (For Master Account) {@link https://developers.binance.com/docs/sub_account/api-management/Delete-IP-List-For-a-Sub-account-API-Key}\n        *\n        * @param {string} email - Sub-account email\n        * @param {string} subAccountApiKey\n        * @param {object} [options]\n        * @param {string} [options.ipAddress] - Can be added in batches, separated by commas\n        * @param {string} [options.thirdPartyName] - third party IP list name\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async deleteIpListForASubAccountApiKey(email: string, subAccountApiKey: string, options?: deleteIpListForASubAccountApiKeyOptions): Promise<deleteIpListForASubAccountApiKeyResponse> {\n            validateRequiredParameters({ email, subAccountApiKey });\n            const url = this.prepareSignedPath('/sapi/v1/sub-account/subAccountApi/ipRestriction/ipList',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        email: email,\n                        subAccountApiKey: subAccountApiKey\n                    }\n                )\n            );\n            return await this.makeRequest('DELETE', url);\n        }\n\n\n        /**\n        * Add IP Restriction for Sub-Account API key (For Master Account) {@link https://developers.binance.com/docs/sub_account/api-management/Add-IP-Restriction-for-Sub-Account-API-key}\n        *\n        * @param {string} email - Sub-account email\n        * @param {string} subAccountApiKey\n        * @param {string} status - IP Restriction status. 1 = IP Unrestricted. 2 = Restrict access to trusted IPs only. 3 = Restrict access to users' trusted third party IPs only\n        * @param {object} [options]\n        * @param {string} [options.thirdPartyName] - third party IP list name\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async addIpRestrictionForSubAccountApiKey(email: string, subAccountApiKey: string, status: string, options?: addIpRestrictionForSubAccountApiKeyOptions): Promise<addIpRestrictionForSubAccountApiKeyResponse> {\n            validateRequiredParameters({ email, subAccountApiKey, status });\n            const url = this.prepareSignedPath('/sapi/v2/sub-account/subAccountApi/ipRestriction',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        email: email,\n                        subAccountApiKey: subAccountApiKey,\n                        status: status\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n        * Deposit assets into the managed sub-account (For Investor Master Account) {@link https://developers.binance.com/docs/sub_account/managed-sub-account/Deposit-Assets-Into-The-Managed-Sub-account}\n        *\n        * @param {string} toEmail - Recipient email\n        * @param {string} asset\n        * @param {number} amount\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async depositAssetsIntoTheManagedSubAccount(toEmail: string, asset: string, amount: number, options?: depositAssetsIntoTheManagedSubAccountOptions): Promise<depositAssetsIntoTheManagedSubAccountResponse> {\n            validateRequiredParameters({ toEmail, asset, amount });\n            const url = this.prepareSignedPath('/sapi/v1/managed-subaccount/deposit',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        toEmail: toEmail,\n                        asset: asset.toUpperCase(),\n                        amount: amount\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n        * Query Managed Sub-account Asset Details (For Investor Master Account) {@link https://developers.binance.com/docs/sub_account/managed-sub-account/Query-Managed-Sub-account-Asset-Details}\n        *\n        * @param {string} email - Sub-account email\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getManagedSubAccountAssetDetails(email: string, options?: getManagedSubAccountAssetDetailsOptions): Promise<getManagedSubAccountAssetDetailsResponse[]> {\n            validateRequiredParameters({ email });\n            const url = this.prepareSignedPath('/sapi/v1/managed-subaccount/asset',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        email: email\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Withdrawl assets from the managed sub-account (For Investor Master Account) {@link https://developers.binance.com/docs/sub_account/managed-sub-account/Withdrawl-Assets-From-The-Managed-Sub-account}\n        *\n        * @param {string} fromEmail - Sender email\n        * @param {string} asset\n        * @param {number} amount\n        * @param {object} [options]\n        * @param {number} [options.transferDate] - Withdrawals is automatically occur on the transfer date(UTC0). If a date is not selected, the withdrawal occurs right now\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async withdrawlAssetsFromTheManagedSubAccount(fromEmail: string, asset: string, amount: number, options?: withdrawlAssetsFromTheManagedSubAccountOptions): Promise<withdrawlAssetsFromTheManagedSubAccountResponse> {\n            validateRequiredParameters({ fromEmail, asset, amount });\n            const url = this.prepareSignedPath('/sapi/v1/managed-subaccount/withdraw',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        fromEmail: fromEmail,\n                        asset: asset.toUpperCase(),\n                        amount: amount\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n        * Query Managed Sub-account Snapshot (For Investor Master Account) {@link https://developers.binance.com/docs/sub_account/managed-sub-account/Query-Managed-Sub-account-Snapshot}\n        *\n        * @param {string} email - Sub-account email\n        * @param {AccountSnapshotType} type - 'SPOT', 'MARGIN'(cross), 'FUTURES'(UM)\n        * @param {object} [options]\n        * @param {number} [options.startTime] - UTC timestamp in ms\n        * @param {number} [options.endTime] - UTC timestamp in ms\n        * @param {number} [options.limit] - min 7, max 30, default 7\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getManagedSubAccountSnapshot(email: string, type: AccountSnapshotType, options?: getManagedSubAccountSnapshotOptions): Promise<getManagedSubAccountSnapshotResponse> {\n            validateRequiredParameters({ email, type });\n            const url = this.prepareSignedPath('/sapi/v1/managed-subaccount/accountSnapshot',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        email: email,\n                        type: type\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n         * Query Managed Sub Account Transfer Log (For Investor Master Account) (USER_DATA) {@link https://developers.binance.com/docs/sub_account/managed-sub-account/Query-Managed-Sub-Account-Transfer-Log-Investor}\n         * \n         * @param {string} email - Managed Sub Account Email\n         * @param {number} startTime - Start Time\n         * @param {number} endTime - End Time (The start time and end time interval cannot exceed half a year)\n         * @param {number} page - Page\n         * @param {number} limit - Limit (Max: 500)\n         * @param {object} [options]\n         * @param {string} [options.transfers] - Transfer Direction (FROM/TO)\n         * @param {SubAccountTransferLog} [options.transferFunctionAccountType] - Transfer function account type (SPOT/MARGIN/ISOLATED_MARGIN/USDT_FUTURE/COIN_FUTURE)\n         */\n        async getManagedSubAccountTransferLog(email: string, startTime: number, endTime: number, page: number, limit: number, options?: getManagedSubAccountTransferLogOptions): Promise<getManagedSubAccountTransferLogResponse> {\n            validateRequiredParameters({ email, startTime, endTime, page, limit });\n            const url = this.preparePath('/sapi/v1/managed-subaccount/queryTransLogForInvestor',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        email: email,\n                        startTime: startTime,\n                        endTime: endTime,\n                        page: page,\n                        limit: limit\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n         * Query Managed Sub Account Transfer Log (For Trading Team Master Account) (USER_DATA) {@link https://developers.binance.com/docs/sub_account/managed-sub-account/Query-Managed-Sub-Account-Transfer-Log-Trading-Team-Master}\n         * \n         * @param {string} email - Managed Sub Account Email\n         * @param {number} startTime - Start Time\n         * @param {number} endTime - End Time (The start time and end time interval cannot exceed half a year)\n         * @param {number} page - Page\n         * @param {number} limit - Limit (Max: 500)\n         * @param {object} [options]\n         * @param {string} [options.transfers] - Transfer Direction (FROM/TO)\n         * @param {SubAccountTransferLog} [options.transferFunctionAccountType] - Transfer function account type (SPOT/MARGIN/ISOLATED_MARGIN/USDT_FUTURE/COIN_FUTURE)\n         */\n        async getManagedSubAccountTransferLogForTradeParent(email: string, startTime: number, endTime: number, page: number, limit: number, options?: getManagedSubAccountTransferLogForTradeParentOptions): Promise<getManagedSubAccountTransferLogForTradeParentResponse> {\n            validateRequiredParameters({ email, startTime, endTime, page, limit });\n            const url = this.preparePath('/sapi/v1/managed-subaccount/queryTransLogForTradeParent',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        email: email,\n                        startTime: startTime,\n                        endTime: endTime,\n                        page: page,\n                        limit: limit\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n\n        /**\n         * Query Managed Sub-account Futures Asset Details（For Investor Master Account）(USER_DATA) {@link https://developers.binance.com/docs/sub_account/managed-sub-account/Query-Managed-Sub-account-Futures-Asset-Details}\n         * \n         * @param {string} email - Managed Sub Account Email\n         */\n        async getManagedSubAccountFuturesAssetDetails(email: string): Promise<getManagedSubAccountFuturesAssetDetailsResponse> {\n            validateRequiredParameters({ email });\n            const url = this.preparePath('/sapi/v1/managed-subaccount/fetch-future-asset',\n                {\n                    email: email\n                }\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n         * Query Managed Sub-account Margin Asset Details (For Investor Master Account) (USER_DATA) {@link https://developers.binance.com/docs/sub_account/managed-sub-account/Query-Managed-Sub-account-Margin-Asset-Details}\n         * \n         * @param {string} email - Managed Sub Account Email\n         */\n        async getManagedSubAccountMarginAssetDetails(email: string): Promise<getManagedSubAccountMarginAssetDetailsResponse> {\n            validateRequiredParameters({ email });\n            const url = this.preparePath('/sapi/v1/managed-subaccount/marginAsset',\n                {\n                    email: email\n                }\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n         * Query Sub-account Assets (For Master Account)(USER_DATA) {@link https://developers.binance.com/docs/sub_account/asset-management/Query-Sub-account-Assets-V4}\n         * \n         * @param {string} email - Managed Sub Account Email\n         * @param {option} [options]\n         * @param {number} [options.recvWindow]\n         */\n        async getSubAccountAssetsForMasterAccount(email: string, options?: getSubAccountAssetsForMasterAccountOptions): Promise<getSubAccountAssetsForMasterAccountResponse> {\n            validateRequiredParameters({ email });\n            const url = this.prepareSignedPath('/sapi/v4/sub-account/assets',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        email: email\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n         * Query Managed Sub-account List {@link https://developers.binance.com/docs/sub_account/managed-sub-account/Query-Managed-Sub-account-List}\n         * \n         * @param {string} email - Managed Sub Account Email\n         * @param {option} [options]\n         * @param {number} [options.page] - Default value: 1\n         * @param {number} [options.limit] - Default value: 20, Max value: 20\n         * @param {number} [options.recvWindow]\n         */\n        async getManagedSubAccountList(email: string, options?: getManagedSubAccountListOptions): Promise<getManagedSubAccountListResponse> {\n            validateRequiredParameters({ email });\n            const url = this.prepareSignedPath('/sapi/v1/managed-subaccount/info',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        email: email\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n         * Query Sub-account Transaction Statistics (For Master Account) (USER_DATA) {@link https://developers.binance.com/docs/sub_account/account-management/Query-Sub-account-Transaction-Statistics}\n         * \n         * @param {string} email - Managed Sub Account Email\n         * @param {option} [options]\n         * @param {number} [options.recvWindow]\n         */\n        async getSubAccountTransactionStatisticsForMasterAccount(email: string, options?: getSubAccountTransactionStatisticsForMasterAccountOptions): Promise<getSubAccountTransactionStatisticsForMasterAccountResponse> {\n            validateRequiredParameters({ email });\n            const url = this.prepareSignedPath('/sapi/v1/sub-account/transaction-statistics',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        email: email\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n         * Get Managed Sub-account Deposit Address (For Investor Master Account) (USER_DATA) {@link https://developers.binance.com/docs/sub_account/managed-sub-account/Get-Managed-Sub-account-Deposit-Address}\n         * \n         * @param {string} email - Sub user email\n         * @param {string} coin\n         * @param {option} [options]\n         * @param {string} [options.network] - networks can be found in GET /sapi/v1/capital/deposit/address\n         * @param {number} [options.recvWindow]\n         */\n        async getManagedSubAccountDepositAddress(email: string, coin: string, options?: getManagedSubAccountDepositAddressOptions): Promise<getManagedSubAccountDepositAddressResponse> {\n            validateRequiredParameters({ email, coin });\n            const url = this.prepareSignedPath('/sapi/v1/managed-subaccount/deposit/address',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        email: email,\n                        coin: coin.toUpperCase()\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n         * Enable Options for Sub-account (For Master Account)(USER_DATA) {@link https://developers.binance.com/docs/sub_account/account-management/Enable-Options-for-Sub-account}\n         * \n         * @param {string} email - Managed Sub Account Email\n         * @param {option} [options]\n         * @param {number} [options.recvWindow]\n         */\n        async enableOptionsForSubAccount(email: string, options?: enableOptionsForSubAccountOptions): Promise<enableOptionsForSubAccountResponse> {\n            validateRequiredParameters({ email });\n            const url = this.prepareSignedPath('/sapi/v1/sub-account/eoptions/enable',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        email: email\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n         * Query Managed Sub Account Transfer Log (For Trading Team Sub Account)(USER_DATA) {@link https://developers.binance.com/docs/sub_account/managed-sub-account/Query-Managed-Sub-Account-Transfer-Log-Trading-Team-Sub}\n         * \n         * @param {number} startTime - Start Time\n         * @param {number} endTime - End Time (The start time and end time interval cannot exceed half a year)\n         * @param {number} page - Page\n         * @param {number} limit - Limit (Max: 500)\n         * @param {object} [options]\n         * @param {string} [options.transfers] - Transfer Direction (FROM/TO)\n         * @param {SubAccountTransferLog} [options.transferFunctionAccountType] - Transfer function account type (SPOT/MARGIN/ISOLATED_MARGIN/USDT_FUTURE/COIN_FUTURE)\n         * @param {number} [options.recvWindow]\n         */\n        async getManagedSubAccountTransferLogForTradeSub(startTime: number, endTime: number, page: number, limit: number, options?: getManagedSubAccountTransferLogForTradeSubOptions): Promise<getManagedSubAccountTransferLogForTradeSubResponse> {\n            validateRequiredParameters({ startTime, endTime, page, limit });\n            const url = this.prepareSignedPath('/sapi/v1/managed-subaccount/transfer',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        startTime: startTime,\n                        endTime: endTime,\n                        page: page,\n                        limit: limit\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n    };\n}\n","import { Constructor } from '../../../setters/types';\nimport { validateRequiredParameters } from '../../../helpers/utils';\nimport {\n    accountInformationOptions,\n    accountInformationResponse,\n    accountTradeListOptions,\n    accountTradeListResponse,\n    allOrdersOptions,\n    allOrdersResponse,\n    cancelAllOpenOrdersOnASymbolOptions,\n    cancelAllOpenOrdersOnASymbolResponse,\n    cancelAnExistingOrderAndSendANewOrderOptions,\n    cancelAnExistingOrderAndSendANewOrderResponse,\n    cancelOcoOptions,\n    cancelOcoResponse,\n    cancelOrderOptions,\n    cancelOrderResponse,\n    currentOpenOrdersOptions,\n    currentOpenOrdersResponse,\n    getAllocationsOptions,\n    getAllocationsResponse,\n    getAllOcoOptions,\n    getAllOcoResponse,\n    getCommissionRatesResponse,\n    getCurrentOrderCountUsageOptions,\n    getCurrentOrderCountUsageResponse,\n    getOcoOptions,\n    getOcoResponse,\n    getOpenOcoOptions,\n    getOpenOcoResponse,\n    getOrderOptions,\n    getOrderResponse,\n    getPreventedMatchesOptions,\n    getPreventedMatchesResponse,\n    newOcoOptions,\n    newOcoResponse,\n    newOtoOptions,\n    newOtoResponse,\n    newOtocoOptions,\n    newOtocoResponse,\n    newOrderOptions,\n    newOrderResponse,\n    newOrderSOROptions,\n    newOrderSORResponse,\n    testNewOrderOptions,\n    testNewOrderResponse,\n    testNewOrderSOROptions\n} from './types';\nimport { TradeMethods } from './methods';\nimport { OrderListAboveBelowType, OrderType, OtoPendingType, OrderListWorkingType, Side, CancelReplaceMode } from '../../enum';\n\nexport function mixinTrade<T extends Constructor>(base: T): Constructor<TradeMethods> & T {\n    return class extends base {\n        /**\n        * Test New Order (TRADE) {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#test-new-order-trade}\n        *\n        * @param {string} symbol - Trading symbol, e.g. BNBUSDT\n        * @param {Side} side\n        * @param {OrderType} type - Order type\n        * @param {object} [options]\n        * @param {TimeInForce} [options.timeInForce] - Order time in force\n        * @param {number} [options.quantity] - Order quantity\n        * @param {number} [options.quoteOrderQty] - Quote quantity\n        * @param {number} [options.price] - Order price\n        * @param {string} [options.newClientOrderId] - Used to uniquely identify this cancel. Automatically generated by default\n        * @param {number} [options.strategyId]\n        * @param {number} [options.strategyType] - The value cannot be less than 1000000.\n        * @param {number} [options.stopPrice] - Used with STOP_LOSS, STOP_LOSS_LIMIT, TAKE_PROFIT, and TAKE_PROFIT_LIMIT orders.\n        * @param {number} [options.trailingDelta] - Used with STOP_LOSS, STOP_LOSS_LIMIT, TAKE_PROFIT, and TAKE_PROFIT_LIMIT orders.\n        * @param {number} [options.icebergQty] - Used with LIMIT, STOP_LOSS_LIMIT, and TAKE_PROFIT_LIMIT to create an iceberg order.\n        * @param {NewOrderRespType} [options.newOrderRespType] - Set the response JSON. MARKET and LIMIT order types default to FULL, all other orders default to ACK.\n        * @param {SelfTradePreventionMode} [options.selfTradePreventionMode] - The allowed enums is dependent on what is configured on the symbol. The possible supported values are EXPIRE_TAKER, EXPIRE_MAKER, EXPIRE_BOTH, NONE.\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        * @param {boolean} [options.computeCommissionRates]\n        */\n        async testNewOrder(symbol: string, side: Side, type: OrderType, options?: testNewOrderOptions): Promise<Record<string, never> | testNewOrderResponse> {\n            validateRequiredParameters({ symbol, side, type });\n            const url = this.prepareSignedPath('/api/v3/order/test',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        symbol: symbol.toUpperCase(),\n                        side: side,\n                        type: type\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n        * Query Order (USER_DATA) {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#query-order-user_data}\n        *\n        * @param {string} symbol - Trading symbol, e.g. BNBUSDT\n        * @param {object} [options]\n        * @param {number} [options.orderId] - Order id\n        * @param {string} [options.origClientOrderId] - Order id from client\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getOrder(symbol: string, options?: getOrderOptions): Promise<getOrderResponse> {\n            validateRequiredParameters({ symbol });\n            const url = this.prepareSignedPath('/api/v3/order',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        symbol: symbol.toUpperCase()\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * New Order (TRADE) {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#new-order-trade}\n        *\n        * @param {string} symbol - Trading symbol, e.g. BNBUSDT\n        * @param {Side} side\n        * @param {OrderType} type - Order type\n        * @param {object} [options]\n        * @param {TimeInForce} [options.timeInForce] - Order time in force\n        * @param {number} [options.quantity] - Order quantity\n        * @param {number} [options.quoteOrderQty] - Quote quantity\n        * @param {number} [options.price] - Order price\n        * @param {string} [options.newClientOrderId] - Used to uniquely identify this cancel. Automatically generated by default\n        * @param {number} [options.strategyId]\n        * @param {number} [options.strategyType] - The value cannot be less than 1000000.\n        * @param {number} [options.stopPrice] - Used with STOP_LOSS, STOP_LOSS_LIMIT, TAKE_PROFIT, and TAKE_PROFIT_LIMIT orders.\n        * @param {number} [options.trailingDelta] - Used with STOP_LOSS, STOP_LOSS_LIMIT, TAKE_PROFIT, and TAKE_PROFIT_LIMIT orders.\n        * @param {number} [options.icebergQty] - Used with LIMIT, STOP_LOSS_LIMIT, and TAKE_PROFIT_LIMIT to create an iceberg order.\n        * @param {NewOrderRespType} [options.newOrderRespType] - Set the response JSON. MARKET and LIMIT order types default to FULL, all other orders default to ACK.\n        * @param {SelfTradePreventionMode} [options.selfTradePreventionMode] - The allowed enums is dependent on what is configured on the symbol. The possible supported values are EXPIRE_TAKER, EXPIRE_MAKER, EXPIRE_BOTH, NONE.\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async newOrder(symbol: string, side: Side, type: OrderType, options?: newOrderOptions): Promise<newOrderResponse> {\n            validateRequiredParameters({ symbol, side, type });\n            const url = this.prepareSignedPath('/api/v3/order',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        symbol: symbol.toUpperCase(),\n                        side: side,\n                        type: type\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n        * Cancel Order (TRADE) {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#cancel-order-trade}\n        *\n        * @param {string} symbol - Trading symbol, e.g. BNBUSDT\n        * @param {object} [options]\n        * @param {number} [options.orderId] - Order id\n        * @param {string} [options.origClientOrderId] - Order id from client\n        * @param {string} [options.newClientOrderId] - Used to uniquely identify this cancel. Automatically generated by default\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async cancelOrder(symbol: string, options?: cancelOrderOptions): Promise<cancelOrderResponse> {\n            validateRequiredParameters({ symbol });\n            const url = this.prepareSignedPath('/api/v3/order',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        symbol: symbol.toUpperCase()\n                    }\n                )\n            );\n            return await this.makeRequest('DELETE', url);\n        }\n\n\n        /**\n        * Cancel an Existing Order and Send a New Order (Trade) {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#cancel-an-existing-order-and-send-a-new-order-trade}\n        *\n        * @param {string} symbol - Trading symbol, e.g. BNBUSDT\n        * @param {Side} side\n        * @param {OrderType} type - Order type\n        * @param {string} cancelReplaceMode - - `STOP_ON_FAILURE` If the cancel request fails, the new order placement will not be attempted., - `ALLOW_FAILURES` If new order placement will be attempted even if cancel request fails.\n        * @param {object} [options]\n        * @param {TimeInForce} [options.timeInForce] - Order time in force\n        * @param {number} [options.quantity] - Order quantity\n        * @param {number} [options.quoteOrderQty] - Quote quantity\n        * @param {number} [options.price] - Order price\n        * @param {string} [options.cancelNewClientOrderId] - Used to uniquely identify this cancel. Automatically generated by default\n        * @param {string} [options.cancelOrigClientOrderId] - Either the cancelOrigClientOrderId or cancelOrderId must be provided. If both are provided, cancelOrderId takes precedence.\n        * @param {number} [options.cancelOrderId] - Either the cancelOrigClientOrderId or cancelOrderId must be provided. If both are provided, cancelOrderId takes precedence.\n        * @param {string} [options.newClientOrderId] - Used to uniquely identify this cancel. Automatically generated by default\n        * @param {number} [options.strategyId]\n        * @param {number} [options.strategyType] - The value cannot be less than 1000000.\n        * @param {number} [options.stopPrice] - Used with STOP_LOSS, STOP_LOSS_LIMIT, TAKE_PROFIT, and TAKE_PROFIT_LIMIT orders.\n        * @param {number} [options.trailingDelta] - Used with STOP_LOSS, STOP_LOSS_LIMIT, TAKE_PROFIT, and TAKE_PROFIT_LIMIT orders.\n        * @param {number} [options.icebergQty] - Used with LIMIT, STOP_LOSS_LIMIT, and TAKE_PROFIT_LIMIT to create an iceberg order.\n        * @param {NewOrderRespType} [options.newOrderRespType] - Set the response JSON. MARKET and LIMIT order types default to FULL, all other orders default to ACK.\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async cancelAnExistingOrderAndSendANewOrder(symbol: string, side: Side, type: OrderType, cancelReplaceMode: CancelReplaceMode, options?: cancelAnExistingOrderAndSendANewOrderOptions): Promise<cancelAnExistingOrderAndSendANewOrderResponse> {\n            validateRequiredParameters({ symbol, side, type, cancelReplaceMode });\n            const url = this.prepareSignedPath('/api/v3/order/cancelReplace',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        symbol: symbol.toUpperCase(),\n                        side: side,\n                        type: type,\n                        cancelReplaceMode: cancelReplaceMode\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n        * Current Open Orders (USER_DATA) {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#current-open-orders-user_data}\n        *\n        * @param {object} [options]\n        * @param {string} [options.symbol] - Trading symbol, e.g. BNBUSDT\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async currentOpenOrders(options?: currentOpenOrdersOptions): Promise<currentOpenOrdersResponse[]> {\n\n            const url = this.prepareSignedPath('/api/v3/openOrders',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Cancel all Open Orders on a Symbol (TRADE) {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#cancel-all-open-orders-on-a-symbol-trade}\n        *\n        * @param {string} symbol - Trading symbol, e.g. BNBUSDT\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async cancelAllOpenOrdersOnASymbol(symbol: string, options?: cancelAllOpenOrdersOnASymbolOptions): Promise<cancelAllOpenOrdersOnASymbolResponse[]> {\n            validateRequiredParameters({ symbol });\n            const url = this.prepareSignedPath('/api/v3/openOrders',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        symbol: symbol.toUpperCase()\n                    }\n                )\n            );\n            return await this.makeRequest('DELETE', url);\n        }\n\n\n        /**\n        * All Orders (USER_DATA) {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#all-orders-user_data}\n        *\n        * @param {string} symbol - Trading symbol, e.g. BNBUSDT\n        * @param {object} [options]\n        * @param {number} [options.orderId] - Order id\n        * @param {number} [options.startTime] - UTC timestamp in ms\n        * @param {number} [options.endTime] - UTC timestamp in ms\n        * @param {number} [options.limit] - Default 500; max 1000.\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async allOrders(symbol: string, options?: allOrdersOptions): Promise<allOrdersResponse[]> {\n            validateRequiredParameters({ symbol });\n            const url = this.prepareSignedPath('/api/v3/allOrders',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        symbol: symbol.toUpperCase()\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * New Order List - OCO (TRADE) {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#new-order-list---oco-trade}\n        *\n        * @param {string} symbol - Trading symbol, e.g. BNBUSDT\n        * @param {Side} side - BUY or SELL\n        * @param {number} quantity - Quantity for both legs of the order list.\n        * @param {OrderListAboveBelowType} aboveType - Supported values: STOP_LOSS_LIMIT, STOP_LOSS, LIMIT_MAKER\n        * @param {OrderListAboveBelowType} belowType - Supported values: STOP_LOSS_LIMIT, STOP_LOSS, LIMIT_MAKER\n        * @param {object} [options]\n        * @param {string} [options.listClientOrderId] - Arbitrary unique ID among open order lists. Automatically generated if not sent. A new order list with the same `listClientOrderId` is accepted only when the previous one is filled or completely expired. `listClientOrderId` is distinct from the `aboveClientOrderId` and the `belowCLientOrderId`\n        * @param {string} [options.aboveClientOrderId] - Arbitrary unique ID among open orders for the above leg order. Automatically generated if not sent\n        * @param {number} [options.aboveIcebergQty] - Note that this can only be used if aboveTimeInForce is GTC.\n        * @param {number} [options.abovePrice]\n        * @param {number} [options.aboveStopPrice] - Can be used if aboveType is STOP_LOSS or STOP_LOSS_LIMIT. Either aboveStopPrice or aboveTrailingDelta or both, must be specified.\n        * @param {number} [options.aboveTrailingDelta]\n        * @param {number} [options.aboveTimeInForce] - Required if the aboveType is STOP_LOSS_LIMIT.\n        * @param {number} [options.aboveStrategyId] - Arbitrary numeric value identifying the above leg order within an order strategy.\n        * @param {number} [options.aboveStrategyType] - Arbitrary numeric value identifying the above leg order strategy. Values smaller than 1000000 are reserved and cannot be used.\n        * @param {string} [options.belowClientOrderId] - Arbitrary unique ID among open orders for the below leg order. Automatically generated if not sent\n        * @param {number} [options.belowIcebergQty] - Note that this can only be used if belowTimeInForce is GTC.\n        * @param {number} [options.belowPrice]\n        * @param {number} [options.belowStopPrice] - Can be used if belowType is STOP_LOSS or STOP_LOSS_LIMIT. Either belowStopPrice or belowTrailingDelta or both, must be specified.\n        * @param {number} [options.belowTrailingDelta]\n        * @param {number} [options.belowTimeInForce] - Required if the belowType is STOP_LOSS_LIMIT.\n        * @param {number} [options.belowStrategyId] - Arbitrary numeric value identifying the below leg order within an order strategy.\n        * @param {number} [options.belowStrategyType] - Arbitrary numeric value identifying the below leg order strategy.Values smaller than 1000000 are reserved and cannot be used.\n        * @param {NewOrderRespType} [options.newOrderRespType] - Set the response JSON.\n        * @param {SelfTradePreventionMode} [options.selfTradePreventionMode] - The allowed enums is dependent on what is configured on the symbol. The possible supported values are EXPIRE_TAKER, EXPIRE_MAKER, EXPIRE_BOTH, NONE.\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async newOco(symbol: string, side: Side, quantity: number, aboveType: OrderListAboveBelowType, belowType: OrderListAboveBelowType, options?: newOcoOptions): Promise<newOcoResponse> {\n            validateRequiredParameters({ symbol, side, quantity, aboveType, belowType });\n            const url = this.prepareSignedPath('/api/v3/orderList/oco',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        symbol: symbol.toUpperCase(),\n                        side: side,\n                        quantity: quantity,\n                        aboveType: aboveType,\n                        belowType: belowType\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n         * New Order List - OTO (TRADE) {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#new-order-list---oto-trade}\n         * \n         * @param {string} symbol\n         * @param {OrderListWorkingType} workingType - Supported values: `LIMIT`, `LIMIT_MAKER`\n         * @param {Side} workingSide - Supported values: `BUY`, `SELL`\n         * @param {number} workingPrice\n         * @param {number} workingQuantity - Sets the quantity for the working order.\n         * @param {OtoPendingType} pendingType - Note that `MARKET` orders using `quoteOrderQty` are not supported.\n         * @param {Side} pendingSide - Supported values: `BUY`, `SELL`\n         * @param {number} pendingQuantity - Sets the quantity for the pending order.\n         * @param {object} [options]\n         * @param {string} [options.listClientOrderId] - Arbitrary unique ID among open order lists. Automatically generated if not sent. A new order list with the same listClientOrderId is accepted only when the previous one is filled or completely expired. `listClientOrderId` is distinct from the `workingClientOrderId` and the `pendingClientOrderId`.\n         * @param {number} [options.workingIcebergQty] - This can only be used if workingTimeInForce is `GTC` or if workingType is `LIMIT_MAKER`\n         * @param {NewOrderRespType} [options.newOrderRespType] - Format of the JSON response. Supported values: `ACK`, `FULL`, `RESULT`\n         * @param {string} [options.selfTradePreventionMode] - The allowed values are dependent on what is configured on the symbol.\n         * @param {string} [options.workingClientOrderId] - Arbitrary unique ID among open orders for the working order. Automatically generated if not sent.\n         * @param {TimeInForce} [options.workingTimeInForce] - Supported values: `FOK`, `IOC`, `GTC`\n         * @param {number} [options.workingStrategyId] - Arbitrary numeric value identifying the working order within an order strategy.\n         * @param {number} [options.workingStrategyType] - Arbitrary numeric value identifying the working order strategy. Values smaller than 1000000 are reserved and cannot be used.\n         * @param {string} [options.pendingClientOrderId] - Arbitrary unique ID among open orders for the pending order. Automatically generated if not sent.\n         * @param {number} [options.pendingPrice]\n         * @param {number} [options.pendingStopPrice]\n         * @param {number} [options.pendingTrailingDelta]\n         * @param {number} [options.pendingIcebergQty] - This can only be used if pendingTimeInForce is GTC or if pendingType is LIMIT_MAKER\n         * @param {TimeInForce} [options.pendingTimeInForce] - Supported values: `GTC`, `FOK`, `IOC`\n         * @param {number} [options.pendingStrategyId] - Arbitrary numeric value identifying the pending order within an order strategy.\n         * @param {number} [options.pendingStrategyType] - Arbitrary numeric value identifying the pending order strategy. Values smaller than 1000000 are reserved and cannot be used.\n         * @param {number} [options.recvWindow] - The value cannot be greater than 60000.\n         */\n        async newOto(symbol: string, workingType: OrderListWorkingType, workingSide: Side, workingPrice: number, workingQuantity: number, pendingType: OtoPendingType, pendingSide: Side, pendingQuantity: number, options?: newOtoOptions): Promise<newOtoResponse> {\n            validateRequiredParameters({ symbol, workingType, workingSide, workingPrice, workingQuantity, pendingType, pendingSide, pendingQuantity});\n            const url = this.prepareSignedPath('/api/v3/orderList/oto',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        symbol: symbol.toUpperCase(),\n                        workingType: workingType,\n                        workingSide: workingSide,\n                        workingPrice: workingPrice,\n                        workingQuantity: workingQuantity,\n                        pendingType: pendingType,\n                        pendingSide: pendingSide,\n                        pendingQuantity: pendingQuantity\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n         * New Order List - OTOCO (TRADE) {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#new-order-list---otoco-trade}\n         * \n         * @param {string} symbol\n         * @param {OrderListWorkingType} workingType - Supported values: `LIMIT`, `LIMIT_MAKER`\n         * @param {Side} workingSide - Supported values: `BUY`, `SELL`\n         * @param {number} workingPrice\n         * @param {number} workingQuantity\n         * @param {Side} pendingSide - Supported values: `BUY`, `SELL`\n         * @param {number} pendingQuantity - Sets the quantity for the pending order.\n         * @param {OrderListAboveBelowType} pendingAboveType - Supported values: LIMIT_MAKER, STOP_LOSS, and STOP_LOSS_LIMIT\n         * @param {object} [options]\n         * @param {string} [options.listClientOrderId] - Arbitrary unique ID among open order lists. Automatically generated if not sent. A new order list with the same listClientOrderId is accepted only when the previous one is filled or completely expired. `listClientOrderId` is distinct from the `workingClientOrderId` and the `pendingClientOrderId`.\n         * @param {NewOrderRespType} [options.newOrderRespType] - Format of the JSON response. Supported values: `ACK`, `FULL`, `RESULT`\n         * @param {string} [options.selfTradePreventionMode] - The allowed values are dependent on what is configured on the symbol\n         * @param {string} [options.workingClientOrderId] - Arbitrary unique ID among open orders for the working order. Automatically generated if not sent.\n         * @param {number} [options.workingIcebergQty] - This can only be used if workingTimeInForce is `GTC` or if workingType is `LIMIT_MAKER`\n         * @param {TimeInForce} [options.workingTimeInForce] - Supported values: `FOK`, `IOC`, `GTC`\n         * @param {number} [options.workingStrategyId] - Arbitrary numeric value identifying the working order within an order strategy.\n         * @param {number} [options.workingStrategyType] - Arbitrary numeric value identifying the working order strategy. Values smaller than 1000000 are reserved and cannot be used.\n         * @param {string} [options.pendingAboveClientOrderId] - Arbitrary unique ID among open orders for the pending above order. Automatically generated if not sent.\n         * @param {number} [options.pendingAbovePrice]\n         * @param {number} [options.pendingAboveStopPrice]\n         * @param {number} [options.pendingAboveTrailingDelta]\n         * @param {number} [options.pendingAboveIcebergQty] - This can only be used if pendingAboveTimeInForce is GTC or if pendingAboveType is LIMIT_MAKER.\n         * @param {TimeInForce} [options.pendingAboveTimeInForce]\n         * @param {number} [options.pendingAboveStrategyId] - Arbitrary numeric value identifying the pending above order within an order strategy.\n         * @param {number} [options.pendingAboveStrategyType] - Arbitrary numeric value identifying the pending above order strategy. Values smaller than 1000000 are reserved and cannot be used.\n         * @param {OrderListAboveBelowType} [options.pendingBelowType] - Supported values: LIMIT_MAKER, STOP_LOSS, and STOP_LOSS_LIMIT\n         * @param {string} [options.pendingBelowClientOrderId] - Arbitrary unique ID among open orders for the pending below order. Automatically generated if not sent.\n         * @param {number} [options.pendingBelowPrice]\n         * @param {number} [options.pendingBelowStopPrice]\n         * @param {number} [options.pendingBelowTrailingDelta]\n         * @param {number} [options.pendingBelowIcebergQty] - This can only be used if pendingBelowTimeInForce is GTC or if pendingBelowType is LIMIT_MAKER.\n         * @param {TimeInForce} [options.pendingBelowTimeInForce]\n         * @param {number} [options.pendingBelowStrategyId] - Arbitrary numeric value identifying the pending below order within an order strategy.\n         * @param {number} [options.pendingBelowStrategyType] - Arbitrary numeric value identifying the pending below order strategy. Values smaller than 1000000 are reserved and cannot be used.\n         * @param {number} [options.recvWindow] - The value cannot be greater than 60000.\n         */\n        async newOtoco(symbol: string, workingType: OrderListWorkingType, workingSide: Side, workingPrice: number, workingQuantity: number, pendingSide: Side, pendingQuantity: number, pendingAboveType: OrderListAboveBelowType, options?: newOtocoOptions): Promise<newOtocoResponse> {\n            validateRequiredParameters({ symbol, workingType, workingSide, workingPrice, workingQuantity, pendingSide, pendingQuantity, pendingAboveType });\n            const url = this.prepareSignedPath('/api/v3/orderList/otoco',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        symbol: symbol.toUpperCase(),\n                        workingType: workingType,\n                        workingSide: workingSide,\n                        workingPrice: workingPrice,\n                        workingQuantity: workingQuantity,\n                        pendingSide: pendingSide,\n                        pendingQuantity: pendingQuantity,\n                        pendingAboveType: pendingAboveType\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n        * Query Order list (USER_DATA) {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#query-order-list-user_data}\n        *\n        * @param {object} [options]\n        * @param {number} [options.orderListId] - Order list id\n        * @param {string} [options.origClientOrderId] - Order id from client\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getOco(options?: getOcoOptions): Promise<getOcoResponse> {\n            const url = this.prepareSignedPath('/api/v3/orderList',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Cancel Order lists (TRADE) {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#cancel-order-list-trade}\n        *\n        * @param {string} symbol - Trading symbol, e.g. BNBUSDT\n        * @param {object} [options]\n        * @param {number} [options.orderListId] - Order list id\n        * @param {string} [options.listClientOrderId] - A unique Id for the entire orderList\n        * @param {string} [options.newClientOrderId] - Used to uniquely identify this cancel. Automatically generated by default\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async cancelOco(symbol: string, options?: cancelOcoOptions): Promise<cancelOcoResponse> {\n            validateRequiredParameters({ symbol });\n            const url = this.prepareSignedPath('/api/v3/orderList',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        symbol: symbol.toUpperCase()\n                    }\n                )\n            );\n            return await this.makeRequest('DELETE', url);\n        }\n\n\n        /**\n        * Query all Order lists (USER_DATA) {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#query-all-order-lists-user_data}\n        *\n        * @param {object} [options]\n        * @param {number} [options.fromId] - Trade id to fetch from. Default gets most recent trades.\n        * @param {number} [options.startTime] - UTC timestamp in ms\n        * @param {number} [options.endTime] - UTC timestamp in ms\n        * @param {number} [options.limit] - Default 500; max 1000.\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getAllOco(options?: getAllOcoOptions): Promise<getAllOcoResponse[]> {\n\n            const url = this.prepareSignedPath('/api/v3/allOrderList',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Query Open Order lists (USER_DATA) {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#query-open-order-lists-user_data}\n        *\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getOpenOco(options?: getOpenOcoOptions): Promise<getOpenOcoResponse[]> {\n            const url = this.prepareSignedPath('/api/v3/openOrderList',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Account Information (USER_DATA) {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/account-endpoints#account-information-user_data}\n        *\n        * @param {object} [options]\n        * @param {number} [options.omitZeroBalances] - When set to true, emits only the non-zero balances of an account. Default value: false\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async accountInformation(options?: accountInformationOptions): Promise<accountInformationResponse> {\n            const url = this.prepareSignedPath('/api/v3/account',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Account Trade List (USER_DATA) {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/account-endpoints#account-trade-list-user_data}\n        *\n        * @param {string} symbol - Trading symbol, e.g. BNBUSDT\n        * @param {object} [options]\n        * @param {number} [options.orderId] - This can only be used in combination with symbol.\n        * @param {number} [options.startTime] - UTC timestamp in ms\n        * @param {number} [options.endTime] - UTC timestamp in ms\n        * @param {number} [options.fromId] - Trade id to fetch from. Default gets most recent trades.\n        * @param {number} [options.limit] - Default 500; max 1000.\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async accountTradeList(symbol: string, options?: accountTradeListOptions): Promise<accountTradeListResponse[]> {\n            validateRequiredParameters({ symbol });\n            const url = this.prepareSignedPath('/api/v3/myTrades',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        symbol: symbol.toUpperCase()\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Query Unfilled Order Count (USER_DATA) {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/account-endpoints#query-unfilled-order-count-user_data}\n        *\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getCurrentOrderCountUsage(options?: getCurrentOrderCountUsageOptions): Promise<getCurrentOrderCountUsageResponse[]> {\n\n            const url = this.prepareSignedPath('/api/v3/rateLimit/order',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n        /**\n         * Test New Order Using SOR (TRADE) {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#test-new-order-using-sor-trade}\n         * \n         * @param {string} symbol - Trading symbol, e.g. BNBUSDT\n         * @param {Side} side\n         * @param {OrderType} type - Order type\n         * @param {number} [quantity] - Order quantity\n         * @param {object} [options]\n         * @param {TimeInForce} [options.timeInForce] - Order time in force\n         * @param {number} [options.price] - Order price\n         * @param {string} [options.newClientOrderId] - Used to uniquely identify this cancel. Automatically generated by default\n         * @param {number} [options.strategyId]\n         * @param {number} [options.strategyType] - The value cannot be less than 1000000.\n         * @param {number} [options.icebergQty] - Used with LIMIT, STOP_LOSS_LIMIT, and TAKE_PROFIT_LIMIT to create an iceberg order.\n         * @param {NewOrderRespType} [options.newOrderRespType] - Set the response JSON. MARKET and LIMIT order types default to FULL, all other orders default to ACK.\n         * @param {SelfTradePreventionMode} [options.selfTradePreventionMode] - The allowed enums is dependent on what is configured on the symbol. The possible supported values are EXPIRE_TAKER, EXPIRE_MAKER, EXPIRE_BOTH, NONE.\n         * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n         * @param {boolean} [options.computeCommissionRates]\n         */\n        async testNewOrderSOR(symbol: string, side: Side, type: OrderType, quantity: number, options?: testNewOrderSOROptions): Promise<Record<string, never> | testNewOrderResponse> {\n            validateRequiredParameters({ symbol, side, type, quantity });\n            const url = this.prepareSignedPath('/api/v3/sor/order/test',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        symbol: symbol.toUpperCase(),\n                        side: side,\n                        type: type,\n                        quantity: quantity\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n         * New Order Using SOR (TRADE) {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#new-order-using-sor-trade}\n         * \n         * @param {string} symbol - Trading symbol, e.g. BNBUSDT\n         * @param {Side} side\n         * @param {OrderType} type - Order type\n         * @param {number} [quantity] - Order quantity\n         * @param {object} [options]\n         * @param {TimeInForce} [options.timeInForce] - Order time in force\n         * @param {number} [options.price] - Order price\n         * @param {string} [options.newClientOrderId] - Used to uniquely identify this cancel. Automatically generated by default\n         * @param {number} [options.strategyId]\n         * @param {number} [options.strategyType] - The value cannot be less than 1000000.\n         * @param {number} [options.icebergQty] - Used with LIMIT, STOP_LOSS_LIMIT, and TAKE_PROFIT_LIMIT to create an iceberg order.\n         * @param {NewOrderRespType} [options.newOrderRespType] - Set the response JSON. MARKET and LIMIT order types default to FULL, all other orders default to ACK.\n         * @param {SelfTradePreventionMode} [options.selfTradePreventionMode] - The allowed enums is dependent on what is configured on the symbol. The possible supported values are EXPIRE_TAKER, EXPIRE_MAKER, EXPIRE_BOTH, NONE.\n         * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n         */\n        async newOrderSOR(symbol: string, side: Side, type: OrderType, quantity: number, options?: newOrderSOROptions): Promise<newOrderSORResponse> {\n            validateRequiredParameters({ symbol, side, type, quantity });\n            const url = this.prepareSignedPath('/api/v3/sor/order',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        symbol: symbol.toUpperCase(),\n                        side: side,\n                        type: type,\n                        quantity: quantity\n                    }\n                )\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n        /**\n         * Query Prevented Matches (USER_DATA) {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/account-endpoints#query-prevented-matches-user_data}\n         * \n         * @param {string} symbol - Trading symbol, e.g. BNBUSDT\n         * @param {object} [options]\n         * @param {number} [options.preventedMatchId]\n         * @param {number} [options.orderId]\n         * @param {number} [options.fromPreventedMatchId]\n         * @param {number} [options.limit] - Default: 500; Max: 1000\n         * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n         */\n        async getPreventedMatches(symbol: string, options?: getPreventedMatchesOptions): Promise<getPreventedMatchesResponse[]> {\n            validateRequiredParameters({ symbol });\n            const url = this.prepareSignedPath('/api/v3/myPreventedMatches',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        symbol: symbol.toUpperCase()\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n        /**\n         * Query Allocations (USER_DATA) {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/account-endpoints#query-allocations-user_data}\n         * \n         * @param {string} symbol - Trading symbol, e.g. BNBUSDT\n         * @param {object} [options]\n         * @param {number} [options.startTime]\n         * @param {number} [options.endTime]\n         * @param {number} [options.fromAllocationId]\n         * @param {number} [options.limit] - Default: 500; Max: 1000\n         * @param {number} [options.orderId]\n         * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n         */\n        async getAllocations(symbol: string, options?: getAllocationsOptions): Promise<getAllocationsResponse[]> {\n            validateRequiredParameters({ symbol });\n            const url = this.prepareSignedPath('/api/v3/myAllocations',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        symbol: symbol.toUpperCase()\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n        /**\n         * Query Commission Rates (USER_DATA) {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/account-endpoints#query-commission-rates-user_data}\n         * \n         * @param {string} symbol - Trading symbol, e.g. BNBUSDT\n         */\n        async getCommissionRates(symbol: string): Promise<getCommissionRatesResponse> {\n            validateRequiredParameters({ symbol });\n            const url = this.prepareSignedPath('/api/v3/account/commission',\n                {\n                    symbol: symbol.toUpperCase()\n                }\n            );\n            return await this.makeRequest('GET', url);\n        }\n    };\n}\n","import { Constructor } from '../../../setters/types';\nimport { validateRequiredParameters } from '../../../helpers/utils';\nimport {\n    accountApiTradingStatusOptions,\n    accountApiTradingStatusResponse,\n    accountInfoOptions,\n    accountInfoResponse,\n    accountStatusOptions,\n    accountStatusResponse,\n    allCoinsInformationOptions,\n    allCoinsInformationResponse,\n    assetDetailOptions,\n    assetDetailResponse,\n    assetDividendRecordOptions,\n    assetDividendRecordResponse,\n    dailyAccountSnapshotOptions,\n    dailyAccountSnapshotResponse,\n    depositAddressOptions,\n    depositAddressResponse,\n    depositAddressListOptions,\n    depositAddressListResponse,\n    depositHistoryOptions,\n    depositHistoryResponse,\n    disableFastWithdrawSwitchOptions,\n    dustlogOptions,\n    dustlogResponse,\n    dustTransferOptions,\n    dustTransferResponse,\n    enableFastWithdrawSwitchOptions,\n    fundingWalletOptions,\n    fundingWalletResponse,\n    getApiKeyPermissionOptions,\n    getApiKeyPermissionResponse,\n    getAssetsThatCanBeConvertedIntoBnbOptions,\n    getAssetsThatCanBeConvertedIntoBnbResponse,\n    getCloudminingPaymentAndRefundHistoryOptions,\n    getCloudminingPaymentAndRefundHistoryResponse,\n    getSymbolsDelistScheduleOptions,\n    getSymbolsDelistScheduleResponse,\n    getUserUniversalTransferHistoryOptions,\n    getUserUniversalTransferHistoryResponse,\n    oneClickArrivalDepositApplyOptions,\n    oneClickArrivalDepositApplyResponse,\n    queryUserWalletBalanceOptions,\n    queryUserWalletBalanceResponse,\n    queryUserDelegationHistoryOptions,\n    queryUserDelegationHistoryResponse,\n    systemStatusResponse,\n    tradeFeeOptions,\n    tradeFeeResponse,\n    userAssetOptions,\n    userAssetResponse,\n    userUniversalTransferOptions,\n    userUniversalTransferResponse,\n    withdrawHistoryOptions,\n    withdrawHistoryResponse,\n    withdrawOptions,\n    withdrawResponse,\n} from './types';\nimport { WalletMethods } from './methods';\nimport { AccountSnapshotType, UnivTransferType } from '../../enum';\n\nexport function mixinWallet<T extends Constructor>(base: T): Constructor<WalletMethods> & T {\n    return class extends base {\n        /**\n        * System Status (System) {@link https://developers.binance.com/docs/wallet/others/system-status}\n        */\n        async systemStatus(): Promise<systemStatusResponse> {\n            return await this.makeRequest('GET', '/sapi/v1/system/status');\n        }\n\n\n        /**\n         * Get symbols delist schedule for spot (MARKET_DATA) {@link https://developers.binance.com/docs/wallet/others/delist-schedule}\n         * \n         * @param {object} [options]\n         * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n         */\n        async getSymbolsDelistSchedule(options?: getSymbolsDelistScheduleOptions): Promise<getSymbolsDelistScheduleResponse[]> {\n            const url = this.prepareSignedPath('/sapi/v1/spot/delist-schedule',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * All Coins' Information (USER_DATA) {@link https://developers.binance.com/docs/wallet/capital/all-coins-info}\n        *\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async allCoinsInformation(options?: allCoinsInformationOptions): Promise<allCoinsInformationResponse[]> {\n            const url = this.prepareSignedPath('/sapi/v1/capital/config/getall',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Daily Account Snapshot (USER_DATA) {@link https://developers.binance.com/docs/wallet/account/daily-account-snapshoot}\n        *\n        * @param {AccountSnapshotType} type\n        * @param {object} [options]\n        * @param {number} [options.startTime] - UTC timestamp in ms\n        * @param {number} [options.endTime] - UTC timestamp in ms\n        * @param {number} [options.limit]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async dailyAccountSnapshot(type: AccountSnapshotType, options?: dailyAccountSnapshotOptions): Promise<dailyAccountSnapshotResponse> {\n            validateRequiredParameters({ type });\n            const url = this.prepareSignedPath('/sapi/v1/accountSnapshot',\n                Object.assign(options ? options : {}, { type: type })\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Disable Fast Withdraw Switch (USER_DATA) {@link https://developers.binance.com/docs/wallet/account/disable-fast-withdraw-switch}\n        *\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async disableFastWithdrawSwitch(options?: disableFastWithdrawSwitchOptions): Promise<Record<string, never>> {\n            const url = this.prepareSignedPath('/sapi/v1/account/disableFastWithdrawSwitch',\n                options ? options : {}\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n        * Enable Fast Withdraw Switch (USER_DATA) {@link https://developers.binance.com/docs/wallet/account/enable-fast-withdraw-switch}\n        *\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async enableFastWithdrawSwitch(options?: enableFastWithdrawSwitchOptions): Promise<Record<string, never>> {\n            const url = this.prepareSignedPath('/sapi/v1/account/enableFastWithdrawSwitch',\n                options ? options : {}\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n        * Withdraw (USER_DATA) {@link https://developers.binance.com/docs/wallet/capital/withdraw}\n        *\n        * @param {string} coin - Coin name\n        * @param {string} address\n        * @param {number} amount\n        * @param {object} [options]\n        * @param {string} [options.withdrawOrderId] - Client id for withdraw\n        * @param {string} [options.network] - Get the value from `GET /sapi/v1/capital/config/getall`\n        * @param {string} [options.addressTag] - Secondary address identifier for coins like XRP,XMR etc.\n        * @param {boolean} [options.transactionFeeFlag] - When making internal transfer, - `true` ->  returning the fee to the destination account;, - `false` -> returning the fee back to the departure account.\n        * @param {string} [options.name]\n        * @param {number} [options.walletType] - The wallet type for withdraw，0-Spot wallet, 1- Funding wallet. Default is Spot wallet\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async withdraw(coin: string, address: string, amount: number, options?: withdrawOptions): Promise<withdrawResponse> {\n            validateRequiredParameters({ coin, address, amount });\n            const url = this.prepareSignedPath('/sapi/v1/capital/withdraw/apply',\n                Object.assign(options ? options : {}, { coin: coin, address: address, amount: amount })\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n        * Deposit History (supporting network) (USER_DATA) {@link https://developers.binance.com/docs/wallet/capital/deposite-history}\n        *\n        * @param {object} [options]\n        * @param {string} [options.coin] - Coin name\n        * @param {number} [options.status] - * `0` - pending, * `6` - credited but cannot withdraw, * `1` - success\n        * @param {number} [options.startTime] - UTC timestamp in ms\n        * @param {number} [options.endTime] - UTC timestamp in ms\n        * @param {number} [options.offset]\n        * @param {number} [options.limit] - Default 500; max 1000.\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        * @param {string} [options.txId]\n        */\n        async depositHistory(options?: depositHistoryOptions): Promise<depositHistoryResponse[]> {\n            const url = this.prepareSignedPath('/sapi/v1/capital/deposit/hisrec',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Withdraw History (supporting network) (USER_DATA) {@link https://developers.binance.com/docs/wallet/capital/withdraw-history}\n        *\n        * @param {object} [options]\n        * @param {string} [options.coin] - Coin name\n        * @param {string} [options.withdrawOrderId]\n        * @param {number} [options.status] - * `0` - Email Sent, * `1` - Cancelled, * `2` - Awaiting Approval, * `3` - Rejected, * `4` - Processing, * `5` - Failure, * `6` - Completed\n        * @param {number} [options.startTime] - UTC timestamp in ms, Default: 90 days from current timestamp\n        * @param {number} [options.endTime] - UTC timestamp in ms, Default: present timestamp\n        * @param {number} [options.offset]\n        * @param {number} [options.limit] - Default 500; max 1000.\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async withdrawHistory(options?: withdrawHistoryOptions): Promise<withdrawHistoryResponse[]> {\n            const url = this.prepareSignedPath('/sapi/v1/capital/withdraw/history',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Deposit Address (supporting network) (USER_DATA) {@link https://developers.binance.com/docs/wallet/capital/deposite-address}\n        *\n        * @param {string} coin - Coin name\n        * @param {object} [options]\n        * @param {string} [options.network]\n        * @param {number} [options.amount]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async depositAddress(coin: string, options?: depositAddressOptions): Promise<depositAddressResponse> {\n            validateRequiredParameters({ coin });\n            const url = this.prepareSignedPath('/sapi/v1/capital/deposit/address',\n                Object.assign(options ? options : {}, { coin: coin })\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n         * Fetch deposit address list with network (USER_DATA) {@link https://developers.binance.com/docs/wallet/capital/fetch-deposit-address-list-with-network}\n         * \n         * @param {string} coin - Coin refers to the parent network address format that the address is using\n         * @param {object} [options]\n         * @param {string} [options.network] - The value cannot be greater than 60000\n         */\n        async depositAddressList(coin: string, options?: depositAddressListOptions): Promise<depositAddressListResponse[]> {\n            validateRequiredParameters({ coin });\n            const url = this.prepareSignedPath('/sapi/v1/capital/deposit/address/list',\n                Object.assign(options ? options : {}, { coin: coin })\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Account Status (USER_DATA) {@link https://developers.binance.com/docs/wallet/account/account-status}\n        *\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async accountStatus(options?: accountStatusOptions): Promise<accountStatusResponse> {\n            const url = this.prepareSignedPath('/sapi/v1/account/status',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Account API Trading Status (USER_DATA) {@link https://developers.binance.com/docs/wallet/account/account-api-trading-status}\n        *\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async accountApiTradingStatus(options?: accountApiTradingStatusOptions): Promise<accountApiTradingStatusResponse> {\n            const url = this.prepareSignedPath('/sapi/v1/account/apiTradingStatus',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * DustLog (USER_DATA) {@link https://developers.binance.com/docs/wallet/asset/dust-log}\n        *\n        * @param {object} [options]\n        * @param {DustAccountType} [options.accountType] - SPOT or MARGIN, default SPOT\n        * @param {number} [options.startTime] - UTC timestamp in ms\n        * @param {number} [options.endTime] - UTC timestamp in ms\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async dustlog(options?: dustlogOptions): Promise<dustlogResponse> {\n            const url = this.prepareSignedPath('/sapi/v1/asset/dribblet',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Get Assets That Can Be Converted Into BNB (USER_DATA) {@link https://developers.binance.com/docs/wallet/asset/assets-can-convert-bnb}\n        *\n        * @param {object} [options]\n        * @param {DustAccountType} [options.accountType] - SPOT or MARGIN, default SPOT\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getAssetsThatCanBeConvertedIntoBnb(options?: getAssetsThatCanBeConvertedIntoBnbOptions): Promise<getAssetsThatCanBeConvertedIntoBnbResponse> {\n            const url = this.prepareSignedPath('/sapi/v1/asset/dust-btc',\n                options ? options : {}\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n        * Dust Transfer (USER_DATA) {@link https://developers.binance.com/docs/wallet/asset/dust-transfer}\n        *\n        * @param {string[]} asset - The asset being converted. For example: asset=BTC,USDT\n        * @param {object} [options]\n        * @param {DustAccountType} [options.accountType] - SPOT or MARGIN, default SPOT\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async dustTransfer(asset: string[], options?: dustTransferOptions): Promise<dustTransferResponse> {\n            validateRequiredParameters({ asset });\n            const assets = asset.map(x => x.toUpperCase()).join(',');\n            const url = this.prepareSignedPath('/sapi/v1/asset/dust',\n                Object.assign(options ? options : {}, { asset: assets })\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n        * Asset Dividend Record (USER_DATA) {@link https://developers.binance.com/docs/wallet/asset/assets-divided-record}\n        *\n        * @param {object} [options]\n        * @param {string} [options.asset]\n        * @param {number} [options.startTime] - UTC timestamp in ms\n        * @param {number} [options.endTime] - UTC timestamp in ms\n        * @param {number} [options.limit]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async assetDividendRecord(options?: assetDividendRecordOptions): Promise<assetDividendRecordResponse> {\n            const url = this.prepareSignedPath('/sapi/v1/asset/assetDividend',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Asset Detail (USER_DATA) {@link https://developers.binance.com/docs/wallet/asset/asset-detail}\n        *\n        * @param {object} [options]\n        * @param {string} [options.asset]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async assetDetail(options?: assetDetailOptions): Promise<assetDetailResponse> {\n            const url = this.prepareSignedPath('/sapi/v1/asset/assetDetail',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n         * Query User Wallet Balance (USER_DATA) {@link https://developers.binance.com/docs/wallet/asset/query-user-wallet-balance}\n         * \n         * @param {object} [options]\n         * @param {number} [options.recvWindow]\n         */\n        async queryUserWalletBalance(options?: queryUserWalletBalanceOptions): Promise<queryUserWalletBalanceResponse[]> {\n            const url = this.prepareSignedPath('/sapi/v1/asset/wallet/balance',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Trade Fee (USER_DATA) {@link https://developers.binance.com/docs/wallet/asset/trade-fee}\n        *\n        * @param {object} [options]\n        * @param {string} [options.symbol] - Trading symbol, e.g. BNBUSDT\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async tradeFee(options?: tradeFeeOptions): Promise<tradeFeeResponse[]> {\n            const url = this.prepareSignedPath('/sapi/v1/asset/tradeFee',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * User Universal Transfer (USER_DATA) {@link https://developers.binance.com/docs/wallet/asset/user-universal-transfer}\n        *\n        * @param {UnivTransferType} type - Universal transfer type\n        * @param {string} asset\n        * @param {number} amount\n        * @param {object} [options]\n        * @param {string} [options.fromSymbol] - Must be sent when type are ISOLATEDMARGIN_MARGIN and ISOLATEDMARGIN_ISOLATEDMARGIN\n        * @param {string} [options.toSymbol] - Must be sent when type are MARGIN_ISOLATEDMARGIN and ISOLATEDMARGIN_ISOLATEDMARGIN\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async userUniversalTransfer(type: UnivTransferType, asset: string, amount: number, options?: userUniversalTransferOptions): Promise<userUniversalTransferResponse> {\n            validateRequiredParameters({ type, asset, amount });\n            const url = this.prepareSignedPath('/sapi/v1/asset/transfer',\n                Object.assign(options ? options : {}, { type: type, asset: asset.toUpperCase(), amount: amount })\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n        * Query User Universal Transfer History (USER_DATA) {@link https://developers.binance.com/docs/wallet/asset/query-user-universal-transfer}\n        *\n        * @param {UnivTransferType} type - Universal transfer type\n        * @param {object} [options]\n        * @param {number} [options.startTime] - UTC timestamp in ms\n        * @param {number} [options.endTime] - UTC timestamp in ms\n        * @param {number} [options.current] - Current querying page. Start from 1. Default:1\n        * @param {number} [options.size] - Default:10 Max:100\n        * @param {string} [options.fromSymbol] - Must be sent when type are ISOLATEDMARGIN_MARGIN and ISOLATEDMARGIN_ISOLATEDMARGIN\n        * @param {string} [options.toSymbol] - Must be sent when type are MARGIN_ISOLATEDMARGIN and ISOLATEDMARGIN_ISOLATEDMARGIN\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getUserUniversalTransferHistory(type: UnivTransferType, options?: getUserUniversalTransferHistoryOptions): Promise<getUserUniversalTransferHistoryResponse> {\n            validateRequiredParameters({ type });\n            const url = this.prepareSignedPath('/sapi/v1/asset/transfer',\n                Object.assign(options ? options : {}, { type: type })\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Funding Wallet (USER_DATA) {@link https://developers.binance.com/docs/wallet/asset/funding-wallet}\n        *\n        * @param {object} [options]\n        * @param {string} [options.asset]\n        * @param {NeedBtcValuation} [options.needBtcValuation]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async fundingWallet(options?: fundingWalletOptions): Promise<fundingWalletResponse[]> {\n            const url = this.prepareSignedPath('/sapi/v1/asset/get-funding-asset',\n                options ? options : {}\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n        * User Asset (USER_DATA) {@link https://developers.binance.com/docs/wallet/asset/user-assets}\n        *\n        * @param {object} [options]\n        * @param {string} [options.asset]\n        * @param {NeedBtcValuation} [options.needBtcValuation]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async userAsset(options?: userAssetOptions): Promise<userAssetResponse[]> {\n            const url = this.prepareSignedPath('/sapi/v3/asset/getUserAsset',\n                options ? options : {}\n            );\n            return await this.makeRequest('POST', url);\n        }\n\n\n        /**\n        * Get Cloud-Mining payment and refund history (USER_DATA) {@link https://developers.binance.com/docs/wallet/asset/cloud-mining-payment-and-refund-history}\n        *\n        * @param {number} startTime - inclusive, unit: ms\n        * @param {number} endTime - exclusive, unit: ms\n        * @param {object} [options]\n        * @param {number} [options.tranId] - The transaction id\n        * @param {string} [options.clientTranId] - The unique flag\n        * @param {string} [options.asset] - If it is blank, we will query all assets\n        * @param {number} [options.current] - Current querying page. Start from 1. Default:1\n        * @param {number} [options.size] - Default:10 Max:100\n        */\n        async getCloudminingPaymentAndRefundHistory(startTime: number, endTime: number, options?: getCloudminingPaymentAndRefundHistoryOptions): Promise<getCloudminingPaymentAndRefundHistoryResponse> {\n            validateRequiredParameters({ startTime, endTime });\n            const url = this.prepareSignedPath('/sapi/v1/asset/ledger-transfer/cloud-mining/queryByPage',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        startTime: startTime,\n                        endTime: endTime\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n         * Query User Delegation History(For Master Account)(USER_DATA) {@link https://developers.binance.com/docs/wallet/asset/query-user-delegation}\n         * \n         * @param {string} email\n         * @param {number} startTime\n         * @param {number} endTime\n         * @param {object} [options]\n         * @param {string} [options.type] - Delegate/Undelegate\n         * @param {string} [options.asset]\n         * @param {number} [options.current] - default 1\n         * @param {number} [options.size] - default 10, max 100\n         * @param {number} [options.recvWindow]\n         */\n        async queryUserDelegationHistory(email: string, startTime: number, endTime: number, options?: queryUserDelegationHistoryOptions): Promise<queryUserDelegationHistoryResponse> {\n            validateRequiredParameters({ email, startTime, endTime });\n            const url = this.prepareSignedPath('/sapi/v1/asset/custody/transfer-history',\n                Object.assign(\n                    options ? options : {},\n                    {\n                        email: email,\n                        startTime: startTime,\n                        endTime: endTime\n                    }\n                )\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n         * Account info (USER_DATA) {@link https://developers.binance.com/docs/wallet/account}\n         * \n         * @param {object} [options]\n         * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n         */\n        async accountInfo(options?: accountInfoOptions): Promise<accountInfoResponse> {\n            const url = this.prepareSignedPath('/sapi/v1/account/info',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * Get API Key Permission (USER_DATA) {@link https://developers.binance.com/docs/wallet/account/api-key-permission}\n        *\n        * @param {object} [options]\n        * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n        */\n        async getApiKeyPermission(options?: getApiKeyPermissionOptions): Promise<getApiKeyPermissionResponse> {\n            const url = this.prepareSignedPath('/sapi/v1/account/apiRestrictions',\n                options ? options : {}\n            );\n            return await this.makeRequest('GET', url);\n        }\n\n\n        /**\n        * One click arrival deposit apply (for expired address deposit) (USER_DATA) {@link https://developers.binance.com/docs/wallet/capital/one-click-arrival-deposite-apply}\n        *\n        * @param {object} [options]\n        * @param {number} [options.depositId] - Deposit record Id, priority use\n        * @param {number} [options.txId] - Deposit txId, used when depositId is not specified\n        * @param {number} [options.subAccountId] - Sub-accountId of Cloud user\n        * @param {number} [options.subUserId] - Sub-userId of parent user\n        */\n        async oneClickArrivalDepositApply(options?: oneClickArrivalDepositApplyOptions): Promise<oneClickArrivalDepositApplyResponse> {\n            const url = this.prepareSignedPath('/sapi/v1/capital/deposit/credit-apply',\n                options ? options : {}\n            );\n            return await this.makeRequest('POST', url);\n        }\n    };\n}\n","import {\n    accountOptions,\n    myTradesOptions,\n    orderLimitOptions,\n    preventedMatchesOptions,\n    ocoOrderHistoryOptions,\n    orderHistoryOptions,\n    accountAllocationOptions\n} from './types';\nimport { AccountMethods } from './methods';\nimport { Constructor } from '../../../../setters/types';\n\n/**\n * Websocket API Account endpoints\n * @module Websocket\n */\nexport function mixinWsAccount<T extends Constructor>(base: T): Constructor<AccountMethods> & T {\n    return class extends base {\n        /**\n         * Account information\n         * Query information about your account.\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/account-requests#account-information-user_data}\n         *\n         * @param {object} [options]\n         * @param {number} [options.recvWindow]\n         */\n        account(options: accountOptions) {\n            this.sendSignatureMessage('account.status', options);\n        }\n\n        /**\n         * Account order rate limits\n         * Query your current order rate limit.\n         *\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/account-requests#unfilled-order-count-user_data}\n         *\n         * @param {object} [options]\n         * @param {number} [options.recvWindow]\n         */\n        orderLimit(options: orderLimitOptions) {\n            this.sendSignatureMessage('account.rateLimits.orders', options);\n        }\n\n        /**\n         * Account order history\n         *\n         * Query information about all your orders – active, canceled, filled – filtered by time range.\n         *\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/account-requests#account-order-history-user_data}\n         *\n         * @param {string} symbol\n         * @param {object} [options]\n         * @param {number} [options.orderId]\n         * @param {number} [options.startTime]\n         * @param {number} [options.endTime]\n         * @param {number} [options.limit]\n         * @param {number} [options.recvWindow]\n         */\n        orderHistory(symbol: string, options?: orderHistoryOptions) {\n            const limit = options ? options.limit : 500;\n            this.sendSignatureMessage('allOrders', {\n                symbol,\n                limit,\n                ...options\n            });\n        }\n\n        /**\n         * Account OCO history\n         *\n         * Query information about all your OCOs, filtered by time range.\n         *\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/account-requests#account-order-list-history-user_data}\n         *\n         * @param {object} [options]\n         * @param {number} [options.fromId]\n         * @param {number} [options.startTime]\n         * @param {number} [options.endTime]\n         * @param {number} [options.limit]\n         * @param {number} [options.recvWindow]\n         */\n        ocoOrderHistory(options?: ocoOrderHistoryOptions) {\n            const limit = options ? options.limit : 500;\n            this.sendSignatureMessage('allOrderLists', {\n                limit,\n                ...options\n            });\n        }\n\n        /**\n         * Account trade history\n         *\n         * Query information about all your trades, filtered by time range.\n         *\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/account-requests#account-trade-history-user_data}\n         *\n         * @param {string} [symbol]\n         * @param {object} [options]\n         * @param {number} [options.orderId]\n         * @param {number} [options.startTime]\n         * @param {number} [options.endTime]\n         * @param {number} [options.fromId]\n         * @param {number} [options.limit]\n         * @param {number} [options.recvWindow]\n         */\n        myTrades(symbol: string, options?: myTradesOptions) {\n            const limit = options ? options.limit : 500;\n            this.sendSignatureMessage('myTrades', {\n                symbol,\n                limit,\n                ...options\n            });\n        }\n\n        /**\n         * Account prevented matches\n         *\n         * Displays the list of orders that were expired because of STP trigger.\n         *\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/account-requests#account-prevented-matches-user_data}\n         *\n         * @param {string} [symbol]\n         * @param {object} [options]\n         * @param {number} [options.preventedMatchId]\n         * @param {number} [options.orderId]\n         * @param {number} [options.fromPreventedMatchId]\n         * @param {number} [options.limit]\n         * @param {number} [options.recvWindow]\n         */\n        preventedMatches(symbol: string, options?: preventedMatchesOptions) {\n            const limit = options ? options.limit : 500;\n            this.sendSignatureMessage('myPreventedMatches', {\n                symbol,\n                limit,\n                ...options\n            });\n        }\n\n        /**\n         * Retrieves allocations resulting from SOR order placement.\n         * \n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/account-requests#account-allocations-user_data}\n         * \n         * @param {string} [symbol]\n         * @param {object} [options]\n         * @param {number} [options.startTime]\n         * @param {number} [options.endTime]\n         * @param {number} [options.fromAllocationId]\n         * @param {number} [options.limit]\n         * @param {number} [options.orderId]\n         * @param {number} [options.recvWindow]\n         */\n        accountAllocation(symbol: string, options?: accountAllocationOptions) {\n            const limit = options ? options.limit : 500;\n            this.sendSignatureMessage('myAllocations', {\n                symbol,\n                limit,\n                ...options\n            });\n        }\n    };\n}\n","import { Constructor } from '../../../../setters/types';\nimport { Interval } from '../../../enum';\nimport {\n    aggTradesOptions,\n    exchangeInfoOptions,\n    historicalTradesOptions,\n    klinesOptions,\n    orderbookOptions,\n    pingOptions,\n    ticker24hrOptions,\n    tickerBookOptions,\n    tickerOptions,\n    tickerPriceOptions,\n    tradesOptions,\n    uiKlinesOptions\n} from './types';\nimport { MarketMethods } from './methods';\n\n/**\n * Websocket API market endpoints\n * @module Websocket\n */\nexport function mixinWsMarket<T extends Constructor>(base: T): Constructor<MarketMethods> & T {\n    return class extends base {\n        /**\n         * Test connectivity\n         *\n         * Test connectivity to the WebSocket API.\n         *\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/general-requests#test-connectivity}\n         */\n        ping(options?: pingOptions) {\n            this.sendMessage('ping', options);\n        }\n\n        /**\n         * Check server time\n         *\n         * Test connectivity to the WebSocket API and get the current server time.\n         *\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/general-requests#check-server-time}\n         */\n        time() {\n            this.sendMessage('time', {});\n        }\n\n        /**\n         * Exchange information\n         *\n         * Query current exchange trading rules, rate limits, and symbol information.\n         *\n         * @param {object} [options]\n         * @param {string} [options.symbol]\n         * @param {string[]} [options.symbols]\n         * @param {string[]} [options.permissions]\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/general-requests#exchange-information}\n         */\n        exchangeInfo(options?: exchangeInfoOptions) {\n            if (options && options.symbol && Object.prototype.hasOwnProperty.call(options, 'symbol')) {\n                options.symbol = options.symbol.toUpperCase();\n            }\n            if (options && options.symbols && Object.prototype.hasOwnProperty.call(options, 'symbols')) {\n                options.symbols = options.symbols.map(symbol => symbol.toUpperCase());\n            }\n            this.sendMessage('exchangeInfo', options);\n        }\n\n        /**\n         * Order book\n         *\n         * Get current order book.\n         *\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/market-data-requests#order-book}\n         * @param {string} symbol\n         * @param {object} [options]\n         * @param {number} [options.limit]\n         *\n         */\n        orderbook(symbol: string, options?: orderbookOptions) {\n            const limit = options ? options.limit : 100;\n            this.sendMessage('depth', {\n                limit,\n                symbol,\n                ...options\n            });\n        }\n\n        /**\n         * Recent trades\n         *\n         * Get recent trades.\n         *\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/market-data-requests#recent-trades}\n         * @param {string} symbol\n         * @param {object} [options]\n         * @param {number} [options.limit]\n         *\n         */\n        trades(symbol: string, options?: tradesOptions) {\n            const limit = options ? options.limit : 500;\n            this.sendMessage('trades.recent', {\n                limit,\n                symbol,\n                ...options\n            });\n        }\n\n        /**\n         * Historical trades \n         *\n         * Get historical trades.\n         *\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/market-data-requests#historical-trades}\n         * @param {string} symbol\n         * @param {object} [options]\n         * @param {number} [options.limit]\n         * @param {number} [options.fromId]\n         *\n         */\n        historicalTrades(symbol: string, options?: historicalTradesOptions) {\n            const limit = options ? options.limit : 500;\n            this.sendMessageWithAPIKey('trades.historical', {\n                limit,\n                symbol,\n                ...options\n            });\n        }\n\n        /**\n         * Aggregate trades \n         *\n         * Get aggregate trades.\n         *\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/market-data-requests#aggregate-trades}\n         * @param {string} symbol\n         * @param {object} [options]\n         * @param {number} [options.limit]\n         * @param {number} [options.fromId]\n         * @param {number} [options.startTime]\n         * @param {number} [options.endTime]\n         *\n         */\n        aggTrades(symbol: string, options?: aggTradesOptions) {\n            const limit = options ? options.limit : 500;\n            this.sendMessage('trades.aggregate', {\n                limit,\n                symbol,\n                ...options\n            });\n        }\n\n        /**\n         * Klines \n         *\n         * Get klines (candlestick bars).\n         *\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/market-data-requests#klines}\n         * @param {string} symbol\n         * @param {Interval} interval\n         * @param {object} [options]\n         * @param {number} [options.startTime]\n         * @param {number} [options.endTime]\n         * @param {number} [options.limit]\n         *\n         */\n        klines(symbol: string, interval: Interval, options?: klinesOptions) {\n            const limit = options ? options.limit : 500;\n            this.sendMessage('klines', {\n                limit,\n                interval,\n                symbol,\n                ...options\n            });\n        }\n\n        /**\n         * UI Klines \n         *\n         * Get klines (candlestick bars) optimized for presentation.\n         *\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/market-data-requests#ui-klines}\n         * @param {string} symbol\n         * @param {Interval} interval\n         * @param {object} [options]\n         * @param {number} [options.startTime]\n         * @param {number} [options.endTime]\n         * @param {number} [options.limit]\n         *\n         */\n        uiKlines(symbol: string, interval: Interval, options?: uiKlinesOptions) {\n            const limit = options ? options.limit : 500;\n            this.sendMessage('uiKlines', {\n                limit,\n                interval,\n                symbol,\n                ...options\n            });\n        }\n\n        /**\n         * Current average price \n         *\n         * Get current average price for a symbol.\n         *\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/market-data-requests#current-average-price}\n         * @param {string} symbol\n         *\n         */\n        avgPrice(symbol: string) {\n            this.sendMessage('avgPrice', { symbol });\n        }\n\n        /**\n         * 24hr ticker price change statistics \n         *\n         * Get 24-hour rolling window price change statistics.\n         *\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/market-data-requests#24hr-ticker-price-change-statistics}\n         * @param {object} [options]\n         * @param {string} [options.symbol]\n         * @param {string[]} [options.symbols]\n         * @param {string} [options.type]\n         *\n         */\n        ticker24hr(options?: ticker24hrOptions) {\n            this.sendMessage('ticker.24hr', options);\n        }\n\n        /**\n         * Rolling window price change statistics \n         *\n         * Get rolling window price change statistics with a custom window.\n         *\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/market-data-requests#rolling-window-price-change-statistics}\n         * @param {object} [options]\n         * @param {string} [options.symbol]\n         * @param {string[]} [options.symbols]\n         * @param {string} [options.type]\n         *\n         */\n        ticker(options?: tickerOptions) {\n            this.sendMessage('ticker', options);\n        }\n\n        /**\n         * Symbol price ticker \n         *\n         * Get the latest market price for a symbol.\n         *\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/market-data-requests#symbol-price-ticker}\n         * @param {object} [options]\n         * @param {string} [options.symbol]\n         * @param {string[]} [options.symbols]\n         *\n         */\n        tickerPrice(options?: tickerPriceOptions) {\n            this.sendMessage('ticker.price', options);\n        }\n\n        /**\n         * Symbol order book ticker \n         *\n         * Get the current best price and quantity on the order book.\n         *\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/market-data-requests#symbol-order-book-ticker}\n         * @param {object} [options]\n         * @param {string} [options.symbol]\n         * @param {string[]} [options.symbols]\n         *\n         */\n        tickerBook(options?: tickerBookOptions) {\n            this.sendMessage('ticker.book', options);\n        }\n    };\n}\n","import { OrderListAboveBelowType, OrderType, Side, CancelReplaceMode } from '../../../enum';\nimport { Constructor } from '../../../../setters/types';\nimport {\n    cancelOCOOrderOptions,\n    cancelOpenOrdersOptions,\n    cancelOrderOptions,\n    cancelReplaceOrderOptions,\n    getOCOOpenOrdersOptions,\n    getOCOOrderOptions,\n    getOrderOptions,\n    newOCOOrderOptions,\n    newOrderOptions,\n    newOrderSOROptions,\n    openOrdersOptions,\n    testNewOrderOptions\n} from './types';\nimport { TradeMethods } from './methods';\n\n/**\n * Websocket API Trading endpoints\n * @module Websocket\n */\nexport function mixinWsTrade<T extends Constructor>(base: T): Constructor<TradeMethods> & T {\n    return class extends base {\n        /**\n         * Place new order\n         *\n         * Send in a new order.\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/trading-requests#place-new-order-trade}\n         *\n         * @param {string} symbol\n         * @param {Side} side\n         * @param {OrderType} type\n         * @param {object} [options]\n         * @param {TimeInForce} [options.timeInForce]\n         * @param {number} [options.price]\n         * @param {number} [options.quantity]\n         * @param {number} [options.quoteOrderQty]\n         * @param {string} [options.newClientOrderId]\n         * @param {NewOrderRespType} [options.newOrderRespType]\n         * @param {number} [options.stopPrice]\n         * @param {number} [options.trailingDelta]\n         * @param {number} [options.icebergQty]\n         * @param {number} [options.strategyId]\n         * @param {number} [options.strategyType]\n         * @param {SelfTradePreventionMode} [options.selfTradePreventionMode]\n         * @param {number} [options.recvWindow]\n         */\n        newOrder(symbol: string, side: Side, type: OrderType, options?: newOrderOptions) {\n            this.sendSignatureMessage('order.place', {\n                symbol,\n                side,\n                type,\n                ...options\n            });\n        }\n\n        /**\n         * Test new order\n         *\n         * Test a new order.\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/trading-requests#test-new-order-trade}\n         *\n         * @param {string} symbol\n         * @param {Side} side\n         * @param {OrderType} type\n         * @param {object} [options]\n         * @param {TimeInForce} [options.timeInForce]\n         * @param {number} [options.price]\n         * @param {number} [options.quantity]\n         * @param {number} [options.quoteOrderQty]\n         * @param {string} [options.newClientOrderId]\n         * @param {NewOrderRespType} [options.newOrderRespType]\n         * @param {number} [options.stopPrice]\n         * @param {number} [options.trailingDelta]\n         * @param {number} [options.icebergQty]\n         * @param {number} [options.strategyId]\n         * @param {number} [options.strategyType]\n         * @param {SelfTradePreventionMode} [options.selfTradePreventionMode]\n         * @param {number} [options.recvWindow]\n         */\n        testNewOrder(symbol: string, side: Side, type: OrderType, options?: testNewOrderOptions) {\n            this.sendSignatureMessage('order.test', {\n                symbol,\n                side,\n                type,\n                ...options\n            });\n        }\n\n        /**\n         * Query order\n         *\n         * Check execution status of an order.\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/trading-requests#query-order-user_data}\n         *\n         * @param {string} symbol\n         * @param {number} orderId\n         * @param {object} [options]\n         * @param {string} [options.origClientOrderId]\n         * @param {number} [options.recvWindow]\n         */\n        getOrder(symbol: string, orderId: number, options?: getOrderOptions) {\n            this.sendSignatureMessage('order.status', {\n                symbol,\n                orderId,\n                ...options\n            });\n        }\n\n        /**\n         * Cancel order\n         *\n         * Cancel an active order.\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/trading-requests#cancel-order-trade}\n         *\n         * @param {string} symbol\n         * @param {number} orderId\n         * @param {object} [options]\n         * @param {string} [options.origClientOrderId]\n         * @param {string} [options.newClientOrderId]\n         * @param {CancelRestrictions} [options.cancelRestrictions]\n         * @param {number} [options.recvWindow]\n         */\n        cancelOrder(symbol: string, orderId: number, options?: cancelOrderOptions) {\n            this.sendSignatureMessage('order.cancel', {\n                symbol,\n                orderId,\n                ...options\n            });\n        }\n\n        /**\n         * Cancel and replace order\n         *\n         * Cancel an existing order and immediately place a new order instead of the canceled one.\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/trading-requests#cancel-and-replace-order-trade}\n         *\n         * @param {string} symbol\n         * @param {string} cancelReplaceMode\n         * @param {number} cancelOrderId\n         * @param {Side} side\n         * @param {OrderType} type\n         * @param {object} [options]\n         * @param {TimeInForce} [options.timeInForce]\n         * @param {string} [options.cancelOrigClientOrderId]\n         * @param {string} [options.cancelNewClientOrderId]\n         * @param {number} [options.price]\n         * @param {number} [options.quantity]\n         * @param {number} [options.quoteOrderQty]\n         * @param {string} [options.newClientOrderId]\n         * @param {NewOrderRespType} [options.newOrderRespType]\n         * @param {number} [options.stopPrice]\n         * @param {number} [options.trailingDelta]\n         * @param {number} [options.icebergQty]\n         * @param {number} [options.strategyId]\n         * @param {string} [options.strategyType]\n         * @param {SelfTradePreventionMode} [options.selfTradePreventionMode]\n         * @param {CancelRestrictions} [options.cancelRestrictions]\n         * @param {number} [options.recvWindow]\n         */\n        cancelReplaceOrder(symbol: string, cancelReplaceMode: CancelReplaceMode, cancelOrderId: number, side: Side, type: OrderType, options?: cancelReplaceOrderOptions) {\n            this.sendSignatureMessage('order.cancelReplace', {\n                symbol,\n                cancelReplaceMode,\n                cancelOrderId,\n                side,\n                type,\n                ...options\n            });\n        }\n\n        /**\n         * Current open orders\n         *\n         * Query execution status of all open orders.\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/trading-requests#current-open-orders-user_data}\n         *\n         * @param {object} [options]\n         * @param {string} [options.symbol]\n         * @param {number} [options.recvWindow]\n         */\n        openOrders(options?: openOrdersOptions) {\n            this.sendSignatureMessage('openOrders.status', {\n                ...options\n            });\n        }\n\n        /**\n         * Cancel open orders\n         *\n         * Cancel all open orders on a symbol, including OCO orders.\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/trading-requests#cancel-open-orders-trade}\n         *\n         * @param {string} symbol\n         * @param {object} [options]\n         * @param {number} [options.recvWindow]\n         */\n        cancelOpenOrders(symbol: string, options?: cancelOpenOrdersOptions) {\n            this.sendSignatureMessage('openOrders.cancelAll', {\n                symbol,\n                ...options\n            });\n        }\n\n        /**\n         * Place new Order list - OCO (TRADE)\n         *\n         * Send in an one-cancels the other (OCO) pair, where activation of one order immediately cancels the other.\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/trading-requests#place-new-order-list---oco-trade}\n         *\n         * @param {string} symbol - Trading symbol, e.g. BNBUSDT\n         * @param {Side} side - BUY or SELL\n         * @param {number} quantity - Quantity for both legs of the order list.\n         * @param {OrderListAboveBelowType} aboveType - Supported values: STOP_LOSS_LIMIT, STOP_LOSS, LIMIT_MAKER\n         * @param {OrderListAboveBelowType} belowType - Supported values: STOP_LOSS_LIMIT, STOP_LOSS, LIMIT_MAKER\n         * @param {object} [options]\n         * @param {string} [options.listClientOrderId] - Arbitrary unique ID among open order lists. Automatically generated if not sent. A new order list with the same `listClientOrderId` is accepted only when the previous one is filled or completely expired. `listClientOrderId` is distinct from the `aboveClientOrderId` and the `belowCLientOrderId`\n         * @param {string} [options.aboveClientOrderId] - Arbitrary unique ID among open orders for the above leg order. Automatically generated if not sent\n         * @param {number} [options.aboveIcebergQty] - Note that this can only be used if aboveTimeInForce is GTC.\n         * @param {number} [options.abovePrice]\n         * @param {number} [options.aboveStopPrice] - Can be used if aboveType is STOP_LOSS or STOP_LOSS_LIMIT. Either aboveStopPrice or aboveTrailingDelta or both, must be specified.\n         * @param {number} [options.aboveTrailingDelta]\n         * @param {number} [options.aboveTimeInForce] - Required if the aboveType is STOP_LOSS_LIMIT.\n         * @param {number} [options.aboveStrategyId] - Arbitrary numeric value identifying the above leg order within an order strategy.\n         * @param {number} [options.aboveStrategyType] - Arbitrary numeric value identifying the above leg order strategy. Values smaller than 1000000 are reserved and cannot be used.\n         * @param {string} [options.belowClientOrderId] - Arbitrary unique ID among open orders for the below leg order. Automatically generated if not sent\n         * @param {number} [options.belowIcebergQty] - Note that this can only be used if belowTimeInForce is GTC.\n         * @param {number} [options.belowPrice]\n         * @param {number} [options.belowStopPrice] - Can be used if belowType is STOP_LOSS or STOP_LOSS_LIMIT. Either belowStopPrice or belowTrailingDelta or both, must be specified.\n         * @param {number} [options.belowTrailingDelta]\n         * @param {number} [options.belowTimeInForce] - Required if the belowType is STOP_LOSS_LIMIT.\n         * @param {number} [options.belowStrategyId] - Arbitrary numeric value identifying the below leg order within an order strategy.\n         * @param {number} [options.belowStrategyType] - Arbitrary numeric value identifying the below leg order strategy.Values smaller than 1000000 are reserved and cannot be used.\n         * @param {NewOrderRespType} [options.newOrderRespType] - Set the response JSON.\n         * @param {SelfTradePreventionMode} [options.selfTradePreventionMode] - The allowed enums is dependent on what is configured on the symbol. The possible supported values are EXPIRE_TAKER, EXPIRE_MAKER, EXPIRE_BOTH, NONE.\n         * @param {number} [options.recvWindow] - The value cannot be greater than 60000\n         */\n        newOCOOrder(symbol: string, side: Side, quantity: number, aboveType: OrderListAboveBelowType, belowType: OrderListAboveBelowType, options?: newOCOOrderOptions) {\n            this.sendSignatureMessage('orderList.place.oco', {\n                symbol,\n                side,\n                quantity,\n                aboveType,\n                belowType,\n                ...options\n            });\n        }\n\n        /**\n         * Query OCO\n         *\n         * Check execution status of an OCO.\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/trading-requests#query-order-list-user_data}\n         *\n         * @param {string} origClientOrderId\n         * @param {object} [options]\n         * @param {number} [options.orderListId]\n         * @param {number} [options.recvWindow]\n         */\n        getOCOOrder(origClientOrderId: string, options?: getOCOOrderOptions) {\n            this.sendSignatureMessage('orderList.status', {\n                origClientOrderId,\n                ...options\n            });\n        }\n\n        /**\n         * Query OCO\n         *\n         * Check execution status of an OCO.\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/trading-requests#cancel-order-list-trade}\n         *\n         * @param {string} symbol\n         * @param {number} orderListId\n         * @param {object} [options]\n         * @param {string} [options.listClientOrderId]\n         * @param {string} [options.newClientOrderId]\n         * @param {number} [options.recvWindow]\n         */\n        cancelOCOOrder(symbol: string, orderListId: number, options?: cancelOCOOrderOptions) {\n            this.sendSignatureMessage('orderList.cancel', {\n                symbol,\n                orderListId,\n                ...options\n            });\n        }\n\n        /**\n         * Current open OCOs \n         *\n         * Query execution status of all open OCOs.\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/trading-requests#current-open-order-lists-user_data}\n         *\n         * @param {object} [options]\n         * @param {number} [options.recvWindow]\n         */\n        getOCOOpenOrders(options?: getOCOOpenOrdersOptions) {\n            this.sendSignatureMessage('openOrderLists.status', options);\n        }\n\n        /**\n         * Place new order using SOR\n         * \n         * Places an order using smart order routing (SOR).\n         * \n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/trading-requests#place-new-order-using-sor-trade}\n         * \n         * @param {string} symbol\n         * @param {Side} side\n         * @param {OrderType} type\n         * @param {number} quantity\n         * @param {object} [options]\n         * @param {TimeInForce} [options.timeInForce]\n         * @param {number} [options.price]\n         * @param {string} [options.newClientOrderId]\n         * @param {NewOrderRespType} [options.newOrderRespType]\n         * @param {number} [options.icebergQty]\n         * @param {number} [options.strategyId]\n         * @param {number} [options.strategyType]\n         * @param {SelfTradePreventionMode} [options.selfTradePreventionMode]\n         * @param {number} [options.recvWindow]\n         */\n        newOrderSOR(symbol: string, side: Side, type: OrderType, quantity: number, options?: newOrderSOROptions) {\n            this.sendSignatureMessage('sor.order.place', {\n                symbol,\n                side,\n                type,\n                quantity,\n                ...options\n            });\n        }\n\n        /**\n         * Place new order using SOR\n         * \n         * Places an order using smart order routing (SOR).\n         * \n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/trading-requests#test-new-order-using-sor-trade}\n         * \n         * @param {string} symbol\n         * @param {Side} side\n         * @param {OrderType} type\n         * @param {number} quantity\n         * @param {object} [options]\n         * @param {TimeInForce} [options.timeInForce]\n         * @param {number} [options.price]\n         * @param {string} [options.newClientOrderId]\n         * @param {NewOrderRespType} [options.newOrderRespType]\n         * @param {number} [options.icebergQty]\n         * @param {number} [options.strategyId]\n         * @param {number} [options.strategyType]\n         * @param {SelfTradePreventionMode} [options.selfTradePreventionMode]\n         * @param {number} [options.recvWindow]\n         */\n        testNewOrderSOR(symbol: string, side: Side, type: OrderType, quantity: number, options?: newOrderSOROptions) {\n            this.sendSignatureMessage('sor.order.test', {\n                symbol,\n                side,\n                type,\n                quantity,\n                ...options\n            });\n        }\n    };\n}\n","import { Constructor } from '../../../../setters/types';\nimport { TradeMethods } from './methods';\n\n/**\n * Websocket API user data stream endpoints\n * @module Websocket\n */\nexport function mixinWsUserData<T extends Constructor>(base: T): Constructor<TradeMethods> & T {\n    return class extends base {\n        /**\n         *\n         * Start a new user data stream.<br>\n         *\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/user-data-stream-requests#start-user-data-stream-user_stream}\n         */\n        startUserDataStream() {\n            this.sendMessageWithAPIKey('userDataStream.start');\n        }\n\n        /**\n        * Ping user data stream.< br>\n        *\n        * Ping a user data stream to keep it alive.<br>\n        *\n        *\n        * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/user-data-stream-requests#ping-user-data-stream-user_stream}\n        *\n        * @param {string} listenKey\n        */\n        pingUserDataStream(listenKey: string) {\n            this.sendMessageWithAPIKey('userDataStream.ping', { listenKey });\n        }\n\n        /**\n        * Stop user data stream.< br>\n        *\n        * Explicitly stop and close the user data stream.<br>\n        *\n        *\n        * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/user-data-stream-requests#stop-user-data-stream-user_stream}\n        */\n        stopUserDataStream(listenKey: string) {\n            this.sendMessageWithAPIKey('userDataStream.stop', { listenKey });\n        }\n    };\n}\n","import { BufferLike, websocketBaseMethods } from './types';\nimport { Constructor } from '../../../setters/types';\nimport WebSocketClient from 'ws';\n\nexport function WebsocketBase<T extends Constructor>(base: T): Constructor<websocketBaseMethods> & T {\n    return class extends base {\n        isConnected() {\n            if (!this.wsConnection.ws || this.wsConnection.ws.readyState !== WebSocketClient.OPEN) return false;\n            return true;\n        }\n\n        initConnect(url: string) {\n            const ws = new WebSocketClient(url);\n            this.logger.info(`Sending Websocket connection to: ${url}`);\n            this.wsConnection.ws = ws;\n            this.wsConnection.closeInitiated = false;\n\n            ws.on('open', () => {\n                this.logger.info(`Connected to the Websocket Server: ${url}`);\n                this.callbacks.open && this.callbacks.open(this);\n            });\n\n            // handle data message. Pass the data to the call back method from user\n            // It could be useful to store the original messages from server for debug\n            ws.on('message', data => {\n                this.callbacks.message && this.callbacks.message(data.toString());\n            });\n\n            ws.on('ping', () => {\n                // As ping pong is very important for maintaining the connection, log them as INFO level\n                this.logger.info('Received PING from server');\n                this.callbacks.ping && this.callbacks.ping();\n                ws.pong();\n                this.logger.info('Responded PONG to server\\'s PING message');\n            });\n\n            ws.on('pong', () => {\n                this.logger.info('Received PONG from server');\n                this.callbacks.pong && this.callbacks.pong();\n            });\n\n            ws.on('error', err => {\n                this.logger.error('Received error from server');\n                this.callbacks.error && this.callbacks.error();\n                this.logger.error(err);\n            });\n\n            ws.on('close', (closeEventCode, reason) => {\n                if (!this.wsConnection.closeInitiated) {\n                    this.callbacks.close && this.callbacks.close();\n                    this.logger.warn(`Connection close due to ${closeEventCode}: ${reason}.`);\n                    setTimeout(() => {\n                        this.logger.debug('Reconnect to the server.');\n                        this.initConnect(url);\n                    }, this.reconnectDelay);\n                } else {\n                    this.wsConnection.closeInitiated = false;\n                }\n            });\n        }\n\n        /**\n         * Unsubscribe the stream\n         *\n         * @param {WebSocketClient} wsConnection - websocket client instance created by ws package\n         */\n        disconnect() {\n            if (!this.isConnected()) this.logger.warn('No connection to close.');\n            else {\n                this.wsConnection.closeInitiated = true;\n                if (this.wsConnection.ws) this.wsConnection.ws.close();\n                else throw new Error('Websocket Client not set');\n                this.logger.info('Disconnected with Binance Websocket Server');\n            }\n        }\n\n        /**\n         * Send Ping message to the Websocket Server\n         */\n        pingServer() {\n            if (!this.isConnected()) this.logger.warn('Ping only can be sent when connection is ready.');\n            else {\n                this.logger.info('Send PING to the Websocket Server');\n                if (this.wsConnection.ws) this.wsConnection.ws.ping();\n                else throw new Error('Websocket Client not set');\n            }\n        }\n\n        send(payload: BufferLike) {\n            if (!this.isConnected()) this.logger.warn('Send only can be sent when connection is ready.');\n            else {\n                if (this.wsConnection.ws) this.wsConnection.ws.send(payload);\n                else throw new Error('Websocket Client not set');\n            }\n        }\n    };\n}\n","import { isEmptyValue, validateRequiredParameters } from '../../../helpers/utils';\nimport { Constructor } from '../../../setters/types';\nimport { Interval } from '../../enum';\nimport { StreamMethods } from './methods';\n\n/**\n * API websocket endpoints\n * @module Websocket\n */\nexport function mixinWsStream<T extends Constructor>(base: T): Constructor<StreamMethods> & T {\n    return class extends base {\n        /**\n         * Aggregate Trade Streams\n         *\n         * The Aggregate Trade Streams push trade information that is aggregated for a single taker order.\n         *\n         * Stream Name: <symbol>@aggTrade\n         * Update Speed: Real-time\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#aggregate-trade-streams}\n         *\n         * @param {string} symbol\n         */\n        aggTrade(symbol: string) {\n            validateRequiredParameters({ symbol });\n            this.subscribe(`${symbol.toLowerCase()}@aggTrade`);\n        }\n\n        /**\n         * Trade Streams\n         *\n         * The Trade Streams push raw trade information; each trade has a unique buyer and seller.\n         *\n         * Stream Name: <symbol>@trade\n         * Update Speed: Real-time\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#trade-streams}\n         *\n         * @param {string} symbol\n         */\n        trade(symbol: string) {\n            validateRequiredParameters({ symbol });\n            this.subscribe(`${symbol.toLowerCase()}@trade`);\n        }\n\n        /**\n         * Kline/Candlestick Streams\n         *\n         * The Kline/Candlestick Stream push updates to the current klines/candlestick every second.\n         *\n         * Stream Name: <symbol>@kline_<interval>\n         * Update Speed: 2000ms\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#kline-candlestick-streams-for-utc}\n         *\n         * @param {string} symbol\n         * @param {string} interval - m -> minutes; h -> hours; d -> days; w -> weeks; M -> months:\n         *     1m, 3m, 5m, 15m, 30m, 1h, 2h, 4h, 6h, 8h, 12h, 1d, 3d, 1w, 1M\n         */\n        kline(symbol: string, interval: Interval) {\n            validateRequiredParameters({ symbol, interval });\n            this.subscribe(`${symbol.toLowerCase()}@kline_${interval}`);\n        }\n\n        /**\n         * Individual symbol or all symbols mini ticker\n         *\n         * 24hr rolling window mini-ticker statistics.\n         * These are NOT the statistics of the UTC day, but a 24hr rolling window for the previous 24hrs\n         *\n         * Stream Name: <symbol>@miniTicker or !miniTicker@arr\n         * Update Speed: 1000ms\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#individual-symbol-mini-ticker-stream}\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#all-market-mini-tickers-stream}\n         *\n         * @param {string} [symbol]\n         */\n        miniTicker(symbol: string) {\n            let stream = '!miniTicker@arr';\n            if (!isEmptyValue(symbol)) {\n                stream = `${symbol.toLowerCase()}@miniTicker`;\n            }\n            this.subscribe(stream);\n        }\n\n        /**\n         * Individual symbol or all symbols ticker\n         *\n         * 24hr rollwing window ticker statistics for a single symbol.\n         * These are NOT the statistics of the UTC day, but a 24hr rolling window for the previous 24hrs.\n         *\n         * Stream Name: <symbol>@ticker or !ticker@arr\n         * Update Speed: 1000ms\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#individual-symbol-ticker-streams}\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#all-market-tickers-stream}\n         *\n         * @param {string} [symbol]\n         */\n        ticker(symbol: string) {\n            let stream = '!ticker@arr';\n            if (!isEmptyValue(symbol)) {\n                stream = `${symbol.toLowerCase()}@ticker`;\n            }\n            this.subscribe(stream);\n        }\n\n        /**\n         * Individual symbol or all rolling window statistics ticker\n         *\n         * Rolling window ticker statistics, computed over multiple windows.\n         *\n         * Stream Name: <symbol>@ticker_<window_size> or !ticker_<window_size>@arr\n         * Window Sizes: 1h,4h\n         * Update Speed: 1000ms\n         *\n         * Note: This stream is different from the <symbol>@ticker stream. The open time O always starts on a minute, while the closing time C is the current time of the update.\n         *\n         * As such, the effective window might be up to 59999ms wider that <window_size>.\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#individual-symbol-rolling-window-statistics-streams}\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#all-market-rolling-window-statistics-streams}\n         *\n         * @param {string} [windowSize]\n         * @param {string} [symbol]\n         */\n        rollingWindowTicker(windowSize: string, symbol: string) {\n            let stream = `!ticker_${windowSize.toLowerCase()}@arr`;\n            if (!isEmptyValue(symbol)) {\n                stream = `${symbol.toLowerCase()}@ticker_${windowSize.toLowerCase()}`;\n            }\n            this.subscribe(stream);\n        }\n\n        /**\n         * Individual symbol or all symbols book ticker\n         *\n         * Pushes any update to the best bid or ask's price or quantity in real-time.\n         *\n         * Stream Name: <symbol>@bookTicker or !bookTicker\n         * Update Speed: Real-time\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#individual-symbol-book-ticker-streams}\n         *\n         * @param {string} [symbol]\n         */\n        bookTicker(symbol: string) {\n            validateRequiredParameters({ symbol });\n            this.subscribe(`${symbol.toLowerCase()}@bookTicker`);\n        }\n\n        /**\n         * Partial Book Depth Streams\n         *\n         * Top bids and asks, Valid are 5, 10, or 20.\n         *\n         * Stream Names: <symbol>@depth<levels> or <symbol>@depth<levels>@100ms.\n         * Update Speed: 1000ms or 100ms\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#partial-book-depth-streams}\n         *\n         * @param {string} symbol\n         * @param {string} levels - 5, 10, or 20\n         * @param {string} speed - 1000ms or 100ms\n         */\n        partialBookDepth(symbol: string, levels: string, speed: string) {\n            validateRequiredParameters({ symbol, levels, speed });\n            this.subscribe(`${symbol.toLowerCase()}@depth${levels}@${speed}`);\n        }\n\n        /**\n         * Diff. Depth Stream\n         *\n         * Order book price and quantity depth updates used to locally manage an order book.\n         *\n         * Stream Names: <symbol>@depth or <symbol>@depth@100ms\n         * Update Speed: 1000ms or 100ms\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#diff-depth-stream}\n         *\n         * @param {string} symbol\n         * @param {string} speed - 1000ms or 100ms\n         */\n        diffBookDepth(symbol: string, speed: string) {\n            validateRequiredParameters({ symbol, speed });\n            this.subscribe(`${symbol.toLowerCase()}@depth@${speed}`);\n        }\n\n        /**\n         * Listen to User data stream\n         *\n         * {@link https://developers.binance.com/docs/binance-spot-api-docs/user-data-stream}\n         *\n         * @param {string} listenKey\n         */\n        userData(listenKey: string) {\n            validateRequiredParameters({ listenKey });\n            this.subscribe(listenKey);\n        }\n\n        unsubscribe(stream: string) {\n            this.unsubscribe(stream);\n        }\n    };\n}\n","export enum AccountSnapshotType {\n    SPOT = 'SPOT',\n    MARGIN = 'MARGIN',\n    FUTURES = 'FUTURES',\n}\n\nexport enum AddLiquidityPreviewType {\n    SINGLE = 'SINGLE',\n    COMBINATION = 'COMBINATION',\n}\n\nexport enum AutoCompoundPlan {\n    NONE = 'NONE',\n    STANDARD = 'STANDARD',\n    ADVANCED = 'ADVANCED',\n}\n\nexport enum BusdStableCoinsConversion {\n    USDC = 'USDC',\n    USDP = 'USDP',\n    TUSD = 'TUSD',\n}\n\nexport enum CancelReplaceMode {\n    ALLOW_FAILURE = 'ALLOW_FAILURE',\n    STOP_ON_FAILURE = 'STOP_ON_FAILURE',\n}\n\nexport enum CancelResult {\n    SUCCESS = 'SUCCESS',\n    FAILURE = 'FAILURE',\n}\n\nexport enum CancelRestrictions {\n    ONLY_NEW = 'ONLY_NEW',\n    ONLY_PARTIALLY_FILLED = 'ONLY_PARTIALLY_FILLED'\n}\n\nexport enum ConvertExpiredType {\n    One_Day = '1_D',\n    Three_Day = '3_D',\n    Seven_Day = '7_D',\n    Thirty_Day = '30_D',\n}\n\nexport enum ConvertOrderStatus {\n    PROCESS = 'PROCESS',\n    ACCEPT_SUCCESS = 'ACCEPT_SUCCESS',\n    SUCCESS = 'SUCCESS',\n    FAIL = 'FAIL',\n}\n\nexport enum ConvertSide {\n    BUY = 'BUY',\n    SELL = 'SELL',\n}\n\nexport enum CrossMarginAccountTransferType {\n    TransferFromMainAccountToMarginAccount = 1,\n    TransferFromMarginAccountToMainAccount = 2,\n}\n\nexport enum CrossMarginAccountType {\n    MARGIN_1 = 'MARGIN_1',\n    MARGIN_2 = 'MARGIN_2',\n}\n\nexport enum CrossMarginTrans {\n    SPOT = 'SPOT',\n    FUTURES = 'FUTURES',\n    FIAT = 'FIAT',\n    DELIVERY = 'DELIVERY',\n    MINING = 'MINING',\n    ISOLATED_MARGIN = 'ISOLATED_MARGIN',\n    FUNDING = 'FUNDING',\n    MOTHER_SPOT = 'MOTHER_SPOT',\n    OPTION = 'OPTION',\n    SUB_SPOT = 'SUB_SPOT',\n    SUB_MARGIN = 'SUB_MARGIN',\n    CROSS_MARGIN = 'CROSS_MARGIN',\n}\n\nexport enum DepositHistory {\n    Pending = 0,\n    CreditedButCannotWithdraw = 6,\n    Success = 1,\n}\n\nexport enum Direction {\n    ADDITIONAL = 'ADDITIONAL',\n    REDUCED = 'REDUCED',\n}\n\nexport enum DualInvestmentPurchaseStatus {\n    PENDING = 'PENDING',\n    PURCHASE_SUCCESS = 'PURCHASE_SUCCESS',\n    SETTLED = 'SETTLED',\n    PURCHASE_FAIL = 'PURCHASE_FAIL',\n    REFUNDING = 'REFUNDING',\n    REFUND_SUCCESS = 'REFUND_SUCCESS',\n    SETTLING = 'SETTLING'\n}\n\nexport enum Featured {\n    ALL = 'ALL',\n    TRUE = 'TRUE',\n}\n\nexport enum FixedAndActivityProductType {\n    ACTIVITY = 'ACTIVITY',\n    CUSTOMIZED_FIXED = 'CUSTOMIZED_FIXED',\n}\n\nexport enum FlexibleProductStatus {\n    ALL = 'ALL',\n    SUBSCRIBABLE = 'SUBSCRIBABLE',\n    UNSUBSCRIBABLE = 'UNSUBSCRIBABLE',\n}\n\nexport enum FlexibleProductType {\n    FAST = 'FAST',\n    NORMAL = 'NORMAL',\n}\n\nexport enum FromAccountType {\n    SPOT = 'SPOT',\n    USDT_FUTURE = 'USDT_FUTURE',\n    COIN_FUTURE = 'COIN_FUTURE',\n    MARGIN = 'MARGIN',\n    ISOLATED_MARGIN = 'ISOLATED_MARGIN',\n}\n\nexport enum FuturesType {\n    USDTMarginedFutures = 1,\n    COINMarginedFutures = 2,\n}\n\nexport enum FuturesTransferType {\n    TransferFromSubaccountSpotAccountToItsUSDT = 1,\n    TransferFromSubaccountUSDT = 2,\n    TransferFromSubaccountSpotAccountToItsCOIN = 3,\n    TransferFromSubaccountCOIN = 4,\n}\n\nexport enum DustAccountType {\n    SPOT = 'SPOT',\n    MARGIN = 'MARGIN',\n}\n\nexport enum GetCrossMargingTransferHistoryType {\n    ROLL_IN = 'ROLL_IN',\n    ROLL_OUT = 'ROLL_OUT',\n}\n\nexport enum HisrecStatus {\n    Pending = 0,\n    CreditedButCannotWithdraw = 6,\n    Success = 1,\n}\n\nexport enum HistoryStatus {\n    EmailSent = 0,\n    Cancelled = 1,\n    AwaitingApproval = 2,\n    Rejected = 3,\n    Processing = 4,\n    Failure = 5,\n    Completed = 6,\n}\n\nexport enum IncomeType {\n    borrowIn = 'borrowIn',\n    collateralSpent = 'collateralSpent',\n    repayAmount = 'repayAmount',\n    collateralReturn = 'collateralReturn',\n    addCollateral = 'addCollateral',\n    removeCollateral = 'removeCollateral',\n    collateralReturnAfterLiquidation = 'collateralReturnAfterLiquidation',\n}\n\nexport enum InterestBNBBurn {\n    true = 'true',\n    false = 'false',\n}\n\nexport enum Interval {\n    '1s' = '1s',\n    '1m' = '1m',\n    '3m' = '3m',\n    '5m' = '5m',\n    '15m' = '15m',\n    '30m' = '30m',\n    '1h' = '1h',\n    '2h' = '2h',\n    '4h' = '4h',\n    '6h' = '6h',\n    '8h' = '8h',\n    '12h' = '12h',\n    '1d' = '1d',\n    '3d' = '3d',\n    '1w' = '1w',\n    '1M' = '1M',\n}\n\nexport enum IsFreeze {\n    true = 'true',\n    false = 'false',\n}\n\nexport enum IsIsolatedMargin {\n    TRUE = 'TRUE',\n    FALSE = 'FALSE',\n}\n\nexport enum LendingType {\n    DAILY = 'DAILY',\n    ACTIVITY = 'ACTIVITY',\n    CUSTOMIZED_FIXED = 'CUSTOMIZED_FIXED',\n}\n\nexport enum LiquidityAddType {\n    SINGLE = 'SINGLE',\n    COMBINATION = 'COMBINATION',\n}\n\nexport enum LiquidityRemoveType {\n    SINGLE = 'SINGLE',\n    COMBINATION = 'COMBINATION',\n}\n\nexport enum LogLevel {\n    NONE = '',\n    DEBUG = 'debug',\n    INFO = 'info',\n    WARN = 'warn',\n    ERROR = 'error',\n}\n\nexport enum MarginBorrowRepayType {\n    BORROW = 'BORROW',\n    REPAY = 'REPAY',\n}\n\nexport enum MargintransferType {\n    TransferFromMainAccountToMarginAccount = 1,\n    TransferFromMarginAccountToMainAccount = 2,\n}\n\nexport enum MarginTransferType {\n    ROLL_IN = 'ROLL_IN',\n    ROLL_OUT = 'ROLL_OUT',\n}\n\nexport enum MarginStatus {\n    CONFIRMED = 'CONFIRMED',\n    PENDING = 'PENDING',\n    FAILED = 'FAILED',\n}\n\nexport enum MarginInterestHistory {\n    PERIODIC = 'PERIODIC',\n    ON_BORROW = 'ON_BORROW',\n    PERIODIC_CONVERTED = 'PERIODIC_CONVERTED',\n    ON_BORROW_CONVERTED = 'ON_BORROW_CONVERTED',\n    PORTFOLIO = 'PORTFOLIO',\n}\n\nexport enum MarginArchive {\n    true = 'true',\n    false = 'false',\n}\n\nexport enum MarginLevelStatus {\n    EXCESSIVE = 'EXCESSIVE',\n    NORMAL = 'NORMAL',\n    MARGIN_CALL = 'MARGIN_CALL',\n    PRE_LIQUIDATION = 'PRE_LIQUIDATION',\n    FORCE_LIQUIDATION = 'FORCE_LIQUIDATION'\n}\n\nexport enum MarginSubAccountTransferType {\n    TransferFromSubaccountSpotAccountToMarginAccount = 1,\n    TransferFromSubaccountMarginAccountToItsSpotAccount = 2,\n}\n\nexport enum NeedBtcValuation {\n    true = 'true',\n    false = 'false',\n}\n\nexport enum NewOrderRespType {\n    ACK = 'ACK',\n    RESULT = 'RESULT',\n    FULL = 'FULL',\n}\n\nexport enum NewOrderResult {\n    SUCCESS = 'SUCCESS',\n    FAILURE = 'FAILURE',\n    NOT_ATTEMPTED = 'NOT_ATTEMPTED'\n}\n\nexport enum OrderListOrderStatus {\n    EXECUTING = 'EXECUTING',\n    ALL_DONE = 'ALL_DONE',\n    REJECT = 'REJECT',\n}\n\nexport enum OrderListAboveBelowType {\n    STOP_LOSS_LIMIT = 'STOP_LOSS_LIMIT',\n    STOP_LOSS = 'STOP_LOSS',\n    LIMIT_MAKER = 'LIMIT_MAKER'\n}\n\nexport enum OcoNewOrderRespType {\n    ACK = 'ACK',\n    RESULT = 'RESULT',\n    FULL = 'FULL',\n}\n\nexport enum OrderListStatusType {\n    RESPONSE = 'RESPONSE',\n    EXEC_STARTED = 'EXEC_STARTED',\n    ALL_DONE = 'ALL_DONE',\n}\n\nexport enum Operation {\n    ADD = 'ADD',\n    REMOVE = 'REMOVE',\n}\n\nexport enum OptionalFixedAndActivityProductStatus {\n    ALL = 'ALL',\n    SUBSCRIBABLE = 'SUBSCRIBABLE',\n    UNSUBSCRIBABLE = 'UNSUBSCRIBABLE',\n}\n\nexport enum OptionalFlexibleProductStatus {\n    ALL = 'ALL',\n    SUBSCRIBABLE = 'SUBSCRIBABLE',\n    UNSUBSCRIBABLE = 'UNSUBSCRIBABLE',\n}\n\nexport enum OptionalSide {\n    SELL = 'SELL',\n    BUY = 'BUY',\n}\n\nexport enum OptionalTransFrom {\n    SPOT = 'SPOT',\n    ISOLATED_MARGIN = 'ISOLATED_MARGIN',\n}\n\nexport enum OptionalTransTo {\n    SPOT = 'SPOT',\n    ISOLATED_MARGIN = 'ISOLATED_MARGIN',\n}\n\nexport enum OptionType {\n    CALL = 'CALL',\n    PUT = 'PUT',\n}\n\nexport enum OrderStatus {\n    NEW = 'NEW',\n    PENDING_NEW = 'PENDING_NEW',\n    PARTIALLY_FILLED = 'PARTIALLY_FILLED',\n    FILLED = 'FILLED',\n    CANCELED = 'CANCELED',\n    PENDING_CANCEL = 'PENDING_CANCEL',\n    REJECTED = 'REJECTED',\n    EXPIRED = 'EXPIRED',\n    EXPIRED_IN_MATCH = 'EXPIRED_IN_MATCH'\n}\n\nexport enum OrderType {\n    LIMIT = 'LIMIT',\n    MARKET = 'MARKET',\n    STOP_LOSS = 'STOP_LOSS',\n    STOP_LOSS_LIMIT = 'STOP_LOSS_LIMIT',\n    TAKE_PROFIT = 'TAKE_PROFIT',\n    TAKE_PROFIT_LIMIT = 'TAKE_PROFIT_LIMIT',\n    LIMIT_MAKER = 'LIMIT_MAKER',\n}\n\nexport enum OtoPendingType {\n    LIMIT = 'LIMIT',\n    STOP_LOSS = 'STOP_LOSS',\n    TAKE_PROFIT = 'TAKE_PROFIT',\n    STOP_LOSS_LIMIT = 'STOP_LOSS_LIMIT',\n    TAKE_PROFIT_LIMIT = 'TAKE_PROFIT_LIMIT',\n}\n\nexport enum OrderListWorkingType {\n    LIMIT = 'LIMIT',\n    LIMIT_MAKER = 'LIMIT_MAKER',\n}\n\nexport enum Permissions {\n    SPOT = 'SPOT',\n    MARGIN = 'MARGIN',\n    LEVERAGED = 'LEVERAGED',\n    TRD_GRP_002 = 'TRD_GRP_002',\n    TRD_GRP_003 = 'TRD_GRP_003',\n    TRD_GRP_004 = 'TRD_GRP_004',\n    TRD_GRP_005 = 'TRD_GRP_005',\n    TRD_GRP_006 = 'TRD_GRP_006',\n    TRD_GRP_007 = 'TRD_GRP_007',\n    TRD_GRP_008 = 'TRD_GRP_008',\n    TRD_GRP_009 = 'TRD_GRP_009',\n    TRD_GRP_010 = 'TRD_GRP_010',\n    TRD_GRP_011 = 'TRD_GRP_011',\n    TRD_GRP_012 = 'TRD_GRP_012',\n    TRD_GRP_013 = 'TRD_GRP_013',\n}\n\nexport enum PortfolioAccountStatus {\n    NORMAL = 'NORMAL',\n    MARGIN_CALL = 'MARGIN_CALL',\n    SUPPLY_MARGIN = 'SUPPLY_MARGIN',\n    REDUCE_ONLY = 'REDUCE_ONLY',\n    ACTIVE_LIQUIDATION = 'ACTIVE_LIQUIDATION',\n    FORCE_LIQUIDATION = 'FORCE_LIQUIDATION',\n    BANKRUPTED = 'BANKRUPTED',\n}\n\nexport enum PortfolioAccountType {\n    PM_1 = 'PM_1',\n    PM_2 = 'PM_2',\n    PM_3 = 'PM_3',\n}\n\nexport enum PortfolioMarginFrom {\n    SPOT = 'SPOT',\n    MARGIN = 'MARGIN',\n}\n\nexport enum PositionSide {\n    BOTH = 'BOTH',\n    LONG = 'LONG',\n    SHORT = 'SHORT',\n}\n\nexport enum PositionStatus {\n    HOLDING = 'HOLDING',\n    REDEEMED = 'REDEEMED',\n}\n\nexport enum QuerySubAccountList {\n    true = 'true',\n    false = 'false',\n}\n\nexport enum RemoveLiquidityPreviewType {\n    SINGLE = 'SINGLE',\n    COMBINATION = 'COMBINATION',\n}\n\nexport enum RedeemDestAccount {\n    SPOT = 'SPOT',\n    FUND = 'FUND',\n    ALL = 'ALL'\n}\n\nexport enum RedeemOption {\n    SPOT = 'SPOT',\n    FLEXIBLE = 'FLEXIBLE',\n}\n\nexport enum SelfTradePreventionMode {\n    EXPIRE_TAKER = 'EXPIRE_TAKER',\n    EXPIRE_MAKER = 'EXPIRE_MAKER',\n    EXPIRE_BOTH = 'EXPIRE_BOTH',\n    NONE = 'NONE'\n}\n\nexport enum Side {\n    SELL = 'SELL',\n    BUY = 'BUY',\n}\n\nexport enum SideEffectType {\n    NO_SIDE_EFFECT = 'NO_SIDE_EFFECT',\n    MARGIN_BUY = 'MARGIN_BUY',\n    AUTO_REPAY = 'AUTO_REPAY',\n    AUTO_BORROW_REPAY = 'AUTO_BORROW_REPAY',\n}\n\nexport enum SimpleEarnDestAccount {\n    SPOT = 'SPOT',\n    FUNDING = 'FUNDING'\n}\n\nexport enum SimpleEarnFlexibleRewards {\n    BONUS = 'BONUS',\n    REALTIME = 'REALTIME',\n    REWARDS = 'REWARDS'\n}\n\nexport enum SimpleEarnLockedRedemption {\n    MATURE = 'MATURE',\n    NEW_TRANSFERRED = 'NEW_TRANSFERRED',\n    AHEAD = 'AHEAD'\n}\n\nexport enum SimpleEarnSourceAccount {\n    SPOT = 'SPOT',\n    FUNDING = 'FUNDING',\n    SPOTANDFUNDING = 'SPOTANDFUNDING'\n}\n\nexport enum SimpleEarnStatus {\n    SUCCESS = 'SUCCESS',\n    PURCHASING = 'PURCHASING',\n    FAILED = 'FAILED'\n}\n\nexport enum SimpleEarnType {\n    AUTO = 'AUTO',\n    NORMAL = 'NORMAL',\n    CONVERT = 'CONVERT',\n    LOAN = 'LOAN',\n    AI = 'AI',\n    TRANSFER = 'TRANSFER'\n}\n\nexport enum SortBy {\n    START_TIME = 'START_TIME',\n    LOT_SIZE = 'LOT_SIZE',\n    INTEREST_RATE = 'INTEREST_RATE',\n    DURATION = 'DURATION',\n}\n\nexport enum SpotBNBBurn {\n    true = 'true',\n    false = 'false',\n}\n\nexport enum StopLimitTimeInForce {\n    GTC = 'GTC',\n    FOK = 'FOK',\n    IOC = 'IOC',\n}\n\nexport enum SubAccountStatus {\n    SUCCESS = 'SUCCESS',\n    PROCESS = 'PROCESS',\n    FAILURE = 'FAILURE',\n}\n\nexport enum SubAccountTransferLog {\n    SPOT = 'SPOT',\n    USDT_FUTURE = 'USDT_FUTURE',\n    COIN_FUTURE = 'COIN_FUTURE',\n    MARGIN = 'MARGIN',\n    ISOLATED_MARGIN = 'ISOLATED_MARGIN',\n}\n\nexport enum SubscribeSourceAccount {\n    SPOT = 'SPOT',\n    FUND = 'FUND',\n    ALL = 'ALL'\n}\n\nexport enum SubUserHistoryType {\n    TransferIn = 1,\n    TransferOut = 2,\n}\n\nexport enum SwapStatus {\n    PendingForSwap = 0,\n    Success = 1,\n    Failed = 2,\n}\n\nexport enum SymbolStatus {\n    TRADING = 'TRADING',\n    HALT = 'HALT',\n    BREAK = 'BREAK ',\n}\n\nexport enum TimeInForce {\n    GTC = 'GTC',\n    IOC = 'IOC',\n    FOK = 'FOK',\n}\n\nexport enum ToAccountType {\n    SPOT = 'SPOT',\n    USDT_FUTURE = 'USDT_FUTURE',\n    COIN_FUTURE = 'COIN_FUTURE',\n    MARGIN = 'MARGIN',\n    ISOLATED_MARGIN = 'ISOLATED_MARGIN',\n}\n\nexport enum TradeType {\n    BUY = 'BUY',\n    SELL = 'SELL',\n}\n\nexport enum TransFrom {\n    SPOT = 'SPOT',\n    ISOLATED_MARGIN = 'ISOLATED_MARGIN',\n}\n\nexport enum TransferSide {\n    TO_UM = 'TO_UM',\n    FROM_UM = 'FROM_UM',\n}\n\nexport enum TransTo {\n    SPOT = 'SPOT',\n    ISOLATED_MARGIN = 'ISOLATED_MARGIN',\n}\n\nexport enum TransactionType {\n    Deposit = '0',\n    Withdraw = '1',\n}\n\nexport enum UnivStatus {\n    CONFIRMED = 'CONFIRMED',\n    PENDING = 'PENDING',\n    FAILED = 'FAILED',\n}\n\nexport enum UnivTransferType {\n    MAIN_MARGIN = 'MAIN_MARGIN',\n    CMFUTURE_MAIN = 'CMFUTURE_MAIN',\n    MARGIN_MAIN = 'MARGIN_MAIN',\n    ISOLATEDMARGIN_MARGIN = 'ISOLATEDMARGIN_MARGIN',\n    MARGIN_ISOLATEDMARGIN = 'MARGIN_ISOLATEDMARGIN',\n    ISOLATEDMARGIN_ISOLATEDMARGIN = 'ISOLATEDMARGIN_ISOLATEDMARGIN',\n    MARGIN_FUNDING = 'MARGIN_FUNDING',\n    FUNDING_MARGIN = 'FUNDING_MARGIN',\n    OPTION_MAIN = 'OPTION_MAIN',\n    MARGIN_OPTION = 'MARGIN_OPTION',\n    OPTION_MARGIN = 'OPTION_MARGIN',\n    FUNDING_OPTION = 'FUNDING_OPTION',\n    OPTION_FUNDING = 'OPTION_FUNDING',\n    MAIN_PORTFOLIO_MARGIN = 'MAIN_PORTFOLIO_MARGIN',\n    PORTFOLIO_MARGIN_MAIN = 'PORTFOLIO_MARGIN_MAIN',\n    MAIN_ISOLATED_MARGIN = 'MAIN_ISOLATED_MARGIN',\n    ISOLATED_MARGIN_MAIN = 'ISOLATED_MARGIN_MAIN',\n    MAIN_FUNDING = 'MAIN_FUNDING',\n    FUNDING_MAIN = 'FUNDING_MAIN',\n}\n\nexport enum Urgency {\n    LOW = 'LOW',\n    MEDIUM = 'MEDIUM',\n    HIGH = 'HIGH',\n}\n\nexport enum ValidTime {\n    '10s' = '10s',\n    '30s' = '30s',\n    '1m' = '1m',\n    '2m' = '2m',\n}\n\nexport enum WalletType {\n    SPOT = 'SPOT',\n    FUNDING = 'FUNDING',\n}\n\nexport enum WithdrawHistory {\n    EmailSent = 0,\n    Cancelled = 1,\n    AwaitingApproval = 2,\n    Rejected = 3,\n    Processing = 4,\n    Failure = 5,\n    Completed = 6,\n}\n\nexport enum WorkingFloor {\n    EXCHANGE = 'EXCHANGE',\n    SOR = 'SOR',\n}\n","import { LogLevel } from '../modules/enum';\n\nexport class Logger {\n    private static instance: Logger;\n    private minLogLevel: LogLevel = LogLevel.INFO;\n    private readonly levelsOrder: LogLevel[] = [\n        LogLevel.NONE,\n        LogLevel.DEBUG,\n        LogLevel.INFO,\n        LogLevel.WARN,\n        LogLevel.ERROR,\n    ];\n\n    constructor() { }\n\n    public static getInstance(): Logger {\n        if (!Logger.instance) {\n            Logger.instance = new Logger();\n        }\n        return Logger.instance;\n    }\n\n    public setMinLogLevel(level: LogLevel): void {\n        if (!this.isValidLogLevel(level)) {\n            throw new Error(`Invalid log level: ${level}`);\n        }\n        this.minLogLevel = level;\n    }\n\n    private isValidLogLevel(level: LogLevel): boolean {\n        return this.levelsOrder.includes(level);\n    }\n\n    private log(level: LogLevel, ...message: unknown[]): void {\n        if (level === LogLevel.NONE || !this.allowLevelLog(level)) {\n            return;\n        }\n\n        const timestamp = new Date().toISOString();\n        console[level](`[${timestamp}] [${level.toUpperCase()}]`, ...message);\n    }\n\n    private allowLevelLog(level: LogLevel): boolean {\n        if (!this.isValidLogLevel(level)) {\n            throw new Error(`Invalid log level: ${level}`);\n        }\n\n        const currentLevelIndex = this.levelsOrder.indexOf(level);\n        const minLevelIndex = this.levelsOrder.indexOf(this.minLogLevel);\n        return currentLevelIndex >= minLevelIndex;\n    }\n\n    public debug(...message: unknown[]): void {\n        this.log(LogLevel.DEBUG, ...message);\n    }\n\n    public info(...message: unknown[]): void {\n        this.log(LogLevel.INFO, ...message);\n    }\n\n    public warn(...message: unknown[]): void {\n        this.log(LogLevel.WARN, ...message);\n    }\n\n    public error(...message: unknown[]): void {\n        this.log(LogLevel.ERROR, ...message);\n    }\n}\n","import { SpotBase } from './setters/mixinBase';\nimport { SpotOptions } from './setters/types';\n\nexport class Spot extends SpotBase {\n    constructor(apiKey = '', apiSecret = '', options: SpotOptions = {}) {\n        super(\n            apiKey,\n            apiSecret,\n            options\n        );\n    }\n}\n","import * as crypto from 'crypto';\nimport { buildQueryString, removeEmptyValue, randomString, sortObject, ObjectType } from './helpers/utils';\nimport { WebsocketFeaturesBase } from './setters/mixinBase';\nimport { WebsocketAPIOptions, sendMessageOptions } from './setters/types';\n\nexport class WebsocketAPI extends WebsocketFeaturesBase {\n    wsURL: string;\n    apiKey: string;\n    apiSecret: string;\n\n    constructor(apiKey = '', apiSecret = '', options: WebsocketAPIOptions = {}) {\n        super(apiKey, apiSecret, options);\n        this.wsURL = options.wsURL || 'wss://ws-api.binance.com:443/ws-api/v3';\n        this.initConnect(this.wsURL);\n        this.apiKey = apiKey;\n        this.apiSecret = apiSecret;\n    }\n\n    sendMessageWithAPIKey(method: string, options: Omit<sendMessageOptions, 'timestamp' | 'signature'> = {}) {\n        if (!this.isConnected()) {\n            this.logger.error('Not connected');\n            return;\n        }\n        const id = options.id || randomString();\n        options.apiKey = this.apiKey;\n        delete options.id;\n        const payload = {\n            id,\n            method,\n            params: removeEmptyValue(options)\n        };\n        this.logger.debug('Send message to Binance Websocket API Server:', payload);\n        this.send(JSON.stringify(payload));\n    }\n\n    sendMessage(method: string, options: Omit<sendMessageOptions, 'apiKey' | 'timestamp' | 'signature'> = {}) {\n        if (!this.isConnected()) {\n            this.logger.error('Not connected');\n            return;\n        }\n        const id = options.id && /^[0-9a-f]{32}$/.test(options.id) ? options.id : randomString();\n        delete options.id;\n        const payload = {\n            id,\n            method,\n            params: removeEmptyValue(options)\n        };\n        this.logger.debug('Send message to Binance Websocket API Server:', payload);\n        this.send(JSON.stringify(payload));\n    }\n\n    sendSignatureMessage(method: string, options: sendMessageOptions = {}) {\n        if (!this.isConnected()) {\n            this.logger.error('Not connected');\n            return;\n        }\n        const id = options.id || randomString();\n        delete options.id;\n        options = removeEmptyValue(options);\n        options.apiKey = this.apiKey;\n        options.timestamp = Date.now();\n        options = sortObject(options as ObjectType);\n        options.signature = crypto\n            .createHmac('sha256', this.apiSecret)\n            .update(buildQueryString(options))\n            .digest('hex');\n\n        const payload = {\n            id,\n            method,\n            params: options\n        };\n        this.logger.debug('Send message to Binance Websocket API Server:', payload);\n        this.send(JSON.stringify(payload));\n    }\n}\n","import { WebsocketStreamFeaturesBase } from './setters/mixinBase';\nimport { WebsocketStreamAPIOptions } from './setters/types';\n\nexport class WebsocketStream extends WebsocketStreamFeaturesBase {\n    combinedStreams: boolean;\n\n    constructor(options?: WebsocketStreamAPIOptions) {\n        super(options);\n        this.wsURL = options && options.wsURL ? options.wsURL : 'wss://stream.binance.com:9443';\n        this.combinedStreams = options && options.combinedStreams ? options.combinedStreams : false;\n    }\n\n    _prepareURL(stream: string | string[]) {\n        let url = `${this.wsURL}/ws/${stream}`;\n        if (this.combinedStreams) {\n            url = `${this.wsURL}/stream?streams=${stream}`;\n        }\n        return url;\n    }\n\n    subscribe(stream: string | string[]) {\n        if (!this.isConnected()) {\n            if (Array.isArray(stream)) stream = stream.join('/');\n            const url = this._prepareURL(stream);\n            this.initConnect(url);\n        } else {\n            if (!Array.isArray(stream)) {\n                stream = [stream];\n            }\n            const payload = {\n                method: 'SUBSCRIBE',\n                params: stream,\n                id: Date.now()\n            };\n\n            this.logger.info('SUBSCRIBE', payload);\n            this.send(JSON.stringify(payload));\n        }\n    }\n\n    unsubscribe(stream: string | string[]) {\n        if (!this.isConnected()) {\n            this.logger.warn('Not connected');\n        } else {\n            if (!Array.isArray(stream)) {\n                stream = [stream];\n            }\n            const payload = {\n                method: 'UNSUBSCRIBE',\n                params: stream,\n                id: Date.now()\n            };\n            this.logger.info('UNSUBSCRIBE', payload);\n            this.send(JSON.stringify(payload));\n        }\n    }\n}\n"],"mappings":"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","names":["types_exports","types_exports","types_exports","types_exports","types_exports","types_exports","types_exports","types_exports","types_exports","types_exports","types_exports","types_exports","methods_exports","crypto","AccountSnapshotType","AddLiquidityPreviewType","AutoCompoundPlan","BusdStableCoinsConversion","CancelReplaceMode","CancelResult","CancelRestrictions","ConvertExpiredType","ConvertOrderStatus","ConvertSide","CrossMarginAccountTransferType","CrossMarginAccountType","CrossMarginTrans","DepositHistory","Direction","DualInvestmentPurchaseStatus","Featured","FixedAndActivityProductType","FlexibleProductStatus","FlexibleProductType","FromAccountType","FuturesType","FuturesTransferType","DustAccountType","GetCrossMargingTransferHistoryType","HisrecStatus","HistoryStatus","IncomeType","InterestBNBBurn","Interval","IsFreeze","IsIsolatedMargin","LendingType","LiquidityAddType","LiquidityRemoveType","LogLevel","MarginBorrowRepayType","MargintransferType","MarginTransferType","MarginStatus","MarginInterestHistory","MarginArchive","MarginLevelStatus","MarginSubAccountTransferType","NeedBtcValuation","NewOrderRespType","NewOrderResult","OrderListOrderStatus","OrderListAboveBelowType","OcoNewOrderRespType","OrderListStatusType","Operation","OptionalFixedAndActivityProductStatus","OptionalFlexibleProductStatus","OptionalSide","OptionalTransFrom","OptionalTransTo","OptionType","OrderStatus","OrderType","OtoPendingType","OrderListWorkingType","Permissions","PortfolioAccountStatus","PortfolioAccountType","PortfolioMarginFrom","PositionSide","PositionStatus","QuerySubAccountList","RemoveLiquidityPreviewType","RedeemDestAccount","RedeemOption","SelfTradePreventionMode","Side","SideEffectType","SimpleEarnDestAccount","SimpleEarnFlexibleRewards","SimpleEarnLockedRedemption","SimpleEarnSourceAccount","SimpleEarnStatus","SimpleEarnType","SortBy","SpotBNBBurn","StopLimitTimeInForce","SubAccountStatus","SubAccountTransferLog","SubscribeSourceAccount","SubUserHistoryType","SwapStatus","SymbolStatus","TimeInForce","ToAccountType","TradeType","TransFrom","TransferSide","TransTo","TransactionType","UnivStatus","UnivTransferType","Urgency","ValidTime","WalletType","WithdrawHistory","WorkingFloor","crypto"]}