@orderly.network/hooks 1.3.2 → 1.4.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/dataProvider.d.ts.map +1 -1
- package/esm/dataProvider.js +0 -2
- package/esm/dataProvider.js.map +1 -1
- package/esm/index.d.ts +4 -3
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +4 -3
- package/esm/index.js.map +1 -1
- package/esm/orderly/orderlyHooks.d.ts +3 -2
- package/esm/orderly/orderlyHooks.d.ts.map +1 -1
- package/esm/orderly/orderlyHooks.js +3 -2
- package/esm/orderly/orderlyHooks.js.map +1 -1
- package/esm/orderly/useCollateral.js +2 -2
- package/esm/orderly/useCollateral.js.map +1 -1
- package/esm/orderly/useMarginRatio.js +1 -1
- package/esm/orderly/useMarginRatio.js.map +1 -1
- package/esm/orderly/useMaxQty.js +2 -2
- package/esm/orderly/useMaxQty.js.map +1 -1
- package/esm/orderly/useOrderEntry.d.ts.map +1 -1
- package/esm/orderly/useOrderEntry.js +15 -12
- package/esm/orderly/useOrderEntry.js.map +1 -1
- package/esm/orderly/useOrderEntryNext/index.d.ts +1 -0
- package/esm/orderly/useOrderEntryNext/index.d.ts.map +1 -0
- package/esm/orderly/useOrderEntryNext/index.js +2 -0
- package/esm/orderly/useOrderEntryNext/index.js.map +1 -0
- package/esm/orderly/{useOrderStream.d.ts → useOrderStream/useOrderStream.d.ts} +19 -12
- package/esm/orderly/useOrderStream/useOrderStream.d.ts.map +1 -0
- package/esm/orderly/{useOrderStream.js → useOrderStream/useOrderStream.js} +91 -26
- package/esm/orderly/useOrderStream/useOrderStream.js.map +1 -0
- package/esm/orderly/{usePositionStream.d.ts → usePositionStream/usePositionStream.d.ts} +1 -1
- package/esm/orderly/usePositionStream/usePositionStream.d.ts.map +1 -0
- package/esm/orderly/{usePositionStream.js → usePositionStream/usePositionStream.js} +30 -22
- package/esm/orderly/usePositionStream/usePositionStream.js.map +1 -0
- package/esm/orderly/usePositionStream/utils.d.ts +8 -0
- package/esm/orderly/usePositionStream/utils.d.ts.map +1 -0
- package/esm/orderly/usePositionStream/utils.js +34 -0
- package/esm/orderly/usePositionStream/utils.js.map +1 -0
- package/esm/orderly/usePrivateDataObserver.d.ts.map +1 -1
- package/esm/orderly/usePrivateDataObserver.js +30 -43
- package/esm/orderly/usePrivateDataObserver.js.map +1 -1
- package/esm/orderly/useTakeProfitAndStopLoss/__test__/useTakeProfitAndStopLoss.test.d.ts +1 -0
- package/esm/orderly/useTakeProfitAndStopLoss/__test__/useTakeProfitAndStopLoss.test.d.ts.map +1 -0
- package/esm/orderly/useTakeProfitAndStopLoss/__test__/utils.test.d.ts +2 -0
- package/esm/orderly/useTakeProfitAndStopLoss/__test__/utils.test.d.ts.map +1 -0
- package/esm/orderly/useTakeProfitAndStopLoss/index.d.ts +32 -0
- package/esm/orderly/useTakeProfitAndStopLoss/index.d.ts.map +1 -0
- package/esm/orderly/useTakeProfitAndStopLoss/index.js +23 -0
- package/esm/orderly/useTakeProfitAndStopLoss/index.js.map +1 -0
- package/esm/orderly/useTakeProfitAndStopLoss/useTPSL.d.ts +59 -0
- package/esm/orderly/useTakeProfitAndStopLoss/useTPSL.d.ts.map +1 -0
- package/esm/orderly/useTakeProfitAndStopLoss/useTPSL.js +211 -0
- package/esm/orderly/useTakeProfitAndStopLoss/useTPSL.js.map +1 -0
- package/esm/orderly/useTakeProfitAndStopLoss/utils.d.ts +70 -0
- package/esm/orderly/useTakeProfitAndStopLoss/utils.d.ts.map +1 -0
- package/esm/orderly/useTakeProfitAndStopLoss/utils.js +226 -0
- package/esm/orderly/useTakeProfitAndStopLoss/utils.js.map +1 -0
- package/esm/services/orderCreator/__test__/limitOrderCreator.test.d.ts +2 -0
- package/esm/services/orderCreator/__test__/limitOrderCreator.test.d.ts.map +1 -0
- package/esm/services/orderCreator/__test__/orderCreator.test.d.ts +2 -0
- package/esm/services/orderCreator/__test__/orderCreator.test.d.ts.map +1 -0
- package/esm/services/orderCreator/__test__/stopLimitOrderCreator.test.d.ts +2 -0
- package/esm/services/orderCreator/__test__/stopLimitOrderCreator.test.d.ts.map +1 -0
- package/esm/services/orderCreator/__test__/stopMarketOrderCreator.test.d.ts +2 -0
- package/esm/services/orderCreator/__test__/stopMarketOrderCreator.test.d.ts.map +1 -0
- package/esm/services/orderCreator/__test__/tpslOrderCreator.test.d.ts +2 -0
- package/esm/services/orderCreator/__test__/tpslOrderCreator.test.d.ts.map +1 -0
- package/esm/services/orderCreator/__test__/tpslPositionOrderCreator.test.d.ts +2 -0
- package/esm/services/orderCreator/__test__/tpslPositionOrderCreator.test.d.ts.map +1 -0
- package/esm/services/orderCreator/baseAlgoCreator.d.ts +22 -0
- package/esm/services/orderCreator/baseAlgoCreator.d.ts.map +1 -0
- package/esm/services/orderCreator/baseAlgoCreator.js +57 -0
- package/esm/services/orderCreator/baseAlgoCreator.js.map +1 -0
- package/esm/services/orderCreator/baseCreator.d.ts +14 -0
- package/esm/services/orderCreator/baseCreator.d.ts.map +1 -0
- package/esm/services/orderCreator/baseCreator.js +92 -0
- package/esm/services/orderCreator/baseCreator.js.map +1 -0
- package/esm/services/orderCreator/factory.d.ts +7 -0
- package/esm/services/orderCreator/factory.d.ts.map +1 -0
- package/esm/services/orderCreator/factory.js +45 -0
- package/esm/services/orderCreator/factory.js.map +1 -0
- package/esm/services/orderCreator/fokCreator.d.ts +4 -0
- package/esm/services/orderCreator/fokCreator.d.ts.map +1 -0
- package/esm/services/orderCreator/fokCreator.js +5 -0
- package/esm/services/orderCreator/fokCreator.js.map +1 -0
- package/esm/services/orderCreator/generalCreator.d.ts +8 -0
- package/esm/services/orderCreator/generalCreator.d.ts.map +1 -0
- package/esm/services/orderCreator/generalCreator.js +15 -0
- package/esm/services/orderCreator/generalCreator.js.map +1 -0
- package/esm/services/orderCreator/interface.d.ts +23 -0
- package/esm/services/orderCreator/interface.d.ts.map +1 -0
- package/esm/services/orderCreator/interface.js +3 -0
- package/esm/services/orderCreator/interface.js.map +1 -0
- package/esm/services/orderCreator/iocCreator.d.ts +4 -0
- package/esm/services/orderCreator/iocCreator.d.ts.map +1 -0
- package/esm/services/orderCreator/iocCreator.js +5 -0
- package/esm/services/orderCreator/iocCreator.js.map +1 -0
- package/esm/services/orderCreator/limitOrderCreator.d.ts +8 -0
- package/esm/services/orderCreator/limitOrderCreator.d.ts.map +1 -0
- package/esm/services/orderCreator/limitOrderCreator.js +69 -0
- package/esm/services/orderCreator/limitOrderCreator.js.map +1 -0
- package/esm/services/orderCreator/marketOrderCreator.d.ts +24 -0
- package/esm/services/orderCreator/marketOrderCreator.d.ts.map +1 -0
- package/esm/services/orderCreator/marketOrderCreator.js +18 -0
- package/esm/services/orderCreator/marketOrderCreator.js.map +1 -0
- package/esm/services/orderCreator/postOnlyCreator.d.ts +4 -0
- package/esm/services/orderCreator/postOnlyCreator.d.ts.map +1 -0
- package/esm/services/orderCreator/postOnlyCreator.js +5 -0
- package/esm/services/orderCreator/postOnlyCreator.js.map +1 -0
- package/esm/services/orderCreator/stopLimitOrderCreator.d.ts +11 -0
- package/esm/services/orderCreator/stopLimitOrderCreator.d.ts.map +1 -0
- package/esm/services/orderCreator/stopLimitOrderCreator.js +84 -0
- package/esm/services/orderCreator/stopLimitOrderCreator.js.map +1 -0
- package/esm/services/orderCreator/stopMarketOrderCreator.d.ts +30 -0
- package/esm/services/orderCreator/stopMarketOrderCreator.d.ts.map +1 -0
- package/esm/services/orderCreator/stopMarketOrderCreator.js +46 -0
- package/esm/services/orderCreator/stopMarketOrderCreator.js.map +1 -0
- package/esm/services/orderCreator/tpslOrderCreator.d.ts +32 -0
- package/esm/services/orderCreator/tpslOrderCreator.d.ts.map +1 -0
- package/esm/services/orderCreator/tpslOrderCreator.js +88 -0
- package/esm/services/orderCreator/tpslOrderCreator.js.map +1 -0
- package/esm/services/orderCreator/tpslPositionOrderCreator.d.ts +33 -0
- package/esm/services/orderCreator/tpslPositionOrderCreator.d.ts.map +1 -0
- package/esm/services/orderCreator/tpslPositionOrderCreator.js +74 -0
- package/esm/services/orderCreator/tpslPositionOrderCreator.js.map +1 -0
- package/esm/services/orderMerge/algoOrderMergeHandler.d.ts +9 -0
- package/esm/services/orderMerge/algoOrderMergeHandler.d.ts.map +1 -0
- package/esm/services/orderMerge/algoOrderMergeHandler.js +38 -0
- package/esm/services/orderMerge/algoOrderMergeHandler.js.map +1 -0
- package/esm/services/orderMerge/baseMergeHandler.d.ts +22 -0
- package/esm/services/orderMerge/baseMergeHandler.d.ts.map +1 -0
- package/esm/services/orderMerge/baseMergeHandler.js +160 -0
- package/esm/services/orderMerge/baseMergeHandler.js.map +1 -0
- package/esm/services/orderMerge/interface.d.ts +8 -0
- package/esm/services/orderMerge/interface.d.ts.map +1 -0
- package/esm/services/orderMerge/interface.js +3 -0
- package/esm/services/orderMerge/interface.js.map +1 -0
- package/esm/services/orderMerge/regularOrderMergeHandler.d.ts +8 -0
- package/esm/services/orderMerge/regularOrderMergeHandler.d.ts.map +1 -0
- package/esm/services/orderMerge/regularOrderMergeHandler.js +15 -0
- package/esm/services/orderMerge/regularOrderMergeHandler.js.map +1 -0
- package/esm/usePoster.d.ts +3 -0
- package/esm/usePoster.d.ts.map +1 -1
- package/esm/usePoster.js +3 -1
- package/esm/usePoster.js.map +1 -1
- package/esm/utils/createOrder.d.ts +0 -55
- package/esm/utils/createOrder.d.ts.map +1 -1
- package/esm/utils/createOrder.js +0 -334
- package/esm/utils/createOrder.js.map +1 -1
- package/esm/utils/fokCreator.d.ts +1 -0
- package/esm/utils/fokCreator.d.ts.map +1 -0
- package/esm/utils/fokCreator.js +2 -0
- package/esm/utils/fokCreator.js.map +1 -0
- package/esm/utils/index.d.ts +5 -0
- package/esm/utils/index.d.ts.map +1 -0
- package/esm/utils/index.js +6 -0
- package/esm/utils/index.js.map +1 -0
- package/esm/utils/order.d.ts +2 -0
- package/esm/utils/order.d.ts.map +1 -0
- package/esm/utils/order.js +3 -0
- package/esm/utils/order.js.map +1 -0
- package/esm/utils/swr.d.ts +3 -1
- package/esm/utils/swr.d.ts.map +1 -1
- package/esm/utils/swr.js +123 -89
- package/esm/utils/swr.js.map +1 -1
- package/esm/utils/ws.d.ts +2 -0
- package/esm/utils/ws.d.ts.map +1 -0
- package/esm/utils/ws.js +9 -0
- package/esm/utils/ws.js.map +1 -0
- package/esm/version.d.ts +1 -1
- package/esm/version.d.ts.map +1 -1
- package/esm/version.js +2 -2
- package/esm/version.js.map +1 -1
- package/lib/dataProvider.d.ts.map +1 -1
- package/lib/dataProvider.js +0 -2
- package/lib/dataProvider.js.map +1 -1
- package/lib/index.d.ts +4 -3
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +10 -3
- package/lib/index.js.map +1 -1
- package/lib/orderly/orderlyHooks.d.ts +3 -2
- package/lib/orderly/orderlyHooks.d.ts.map +1 -1
- package/lib/orderly/orderlyHooks.js +6 -2
- package/lib/orderly/orderlyHooks.js.map +1 -1
- package/lib/orderly/useCollateral.js +2 -2
- package/lib/orderly/useCollateral.js.map +1 -1
- package/lib/orderly/useMarginRatio.js +1 -1
- package/lib/orderly/useMarginRatio.js.map +1 -1
- package/lib/orderly/useMaxQty.js +2 -2
- package/lib/orderly/useMaxQty.js.map +1 -1
- package/lib/orderly/useOrderEntry.d.ts.map +1 -1
- package/lib/orderly/useOrderEntry.js +14 -12
- package/lib/orderly/useOrderEntry.js.map +1 -1
- package/lib/orderly/useOrderEntryNext/index.d.ts +1 -0
- package/lib/orderly/useOrderEntryNext/index.d.ts.map +1 -0
- package/lib/orderly/useOrderEntryNext/index.js +3 -0
- package/lib/orderly/useOrderEntryNext/index.js.map +1 -0
- package/lib/orderly/{useOrderStream.d.ts → useOrderStream/useOrderStream.d.ts} +19 -12
- package/lib/orderly/useOrderStream/useOrderStream.d.ts.map +1 -0
- package/lib/orderly/{useOrderStream.js → useOrderStream/useOrderStream.js} +89 -25
- package/lib/orderly/useOrderStream/useOrderStream.js.map +1 -0
- package/lib/orderly/{usePositionStream.d.ts → usePositionStream/usePositionStream.d.ts} +1 -1
- package/lib/orderly/usePositionStream/usePositionStream.d.ts.map +1 -0
- package/lib/orderly/{usePositionStream.js → usePositionStream/usePositionStream.js} +30 -22
- package/lib/orderly/usePositionStream/usePositionStream.js.map +1 -0
- package/lib/orderly/usePositionStream/utils.d.ts +8 -0
- package/lib/orderly/usePositionStream/utils.d.ts.map +1 -0
- package/lib/orderly/usePositionStream/utils.js +55 -0
- package/lib/orderly/usePositionStream/utils.js.map +1 -0
- package/lib/orderly/usePrivateDataObserver.d.ts.map +1 -1
- package/lib/orderly/usePrivateDataObserver.js +28 -41
- package/lib/orderly/usePrivateDataObserver.js.map +1 -1
- package/lib/orderly/useTakeProfitAndStopLoss/__test__/useTakeProfitAndStopLoss.test.d.ts +1 -0
- package/lib/orderly/useTakeProfitAndStopLoss/__test__/useTakeProfitAndStopLoss.test.d.ts.map +1 -0
- package/lib/orderly/useTakeProfitAndStopLoss/__test__/utils.test.d.ts +2 -0
- package/lib/orderly/useTakeProfitAndStopLoss/__test__/utils.test.d.ts.map +1 -0
- package/lib/orderly/useTakeProfitAndStopLoss/index.d.ts +32 -0
- package/lib/orderly/useTakeProfitAndStopLoss/index.d.ts.map +1 -0
- package/lib/orderly/useTakeProfitAndStopLoss/index.js +33 -0
- package/lib/orderly/useTakeProfitAndStopLoss/index.js.map +1 -0
- package/lib/orderly/useTakeProfitAndStopLoss/useTPSL.d.ts +59 -0
- package/lib/orderly/useTakeProfitAndStopLoss/useTPSL.d.ts.map +1 -0
- package/lib/orderly/useTakeProfitAndStopLoss/useTPSL.js +218 -0
- package/lib/orderly/useTakeProfitAndStopLoss/useTPSL.js.map +1 -0
- package/lib/orderly/useTakeProfitAndStopLoss/utils.d.ts +70 -0
- package/lib/orderly/useTakeProfitAndStopLoss/utils.d.ts.map +1 -0
- package/lib/orderly/useTakeProfitAndStopLoss/utils.js +252 -0
- package/lib/orderly/useTakeProfitAndStopLoss/utils.js.map +1 -0
- package/lib/services/orderCreator/__test__/limitOrderCreator.test.d.ts +2 -0
- package/lib/services/orderCreator/__test__/limitOrderCreator.test.d.ts.map +1 -0
- package/lib/services/orderCreator/__test__/orderCreator.test.d.ts +2 -0
- package/lib/services/orderCreator/__test__/orderCreator.test.d.ts.map +1 -0
- package/lib/services/orderCreator/__test__/stopLimitOrderCreator.test.d.ts +2 -0
- package/lib/services/orderCreator/__test__/stopLimitOrderCreator.test.d.ts.map +1 -0
- package/lib/services/orderCreator/__test__/stopMarketOrderCreator.test.d.ts +2 -0
- package/lib/services/orderCreator/__test__/stopMarketOrderCreator.test.d.ts.map +1 -0
- package/lib/services/orderCreator/__test__/tpslOrderCreator.test.d.ts +2 -0
- package/lib/services/orderCreator/__test__/tpslOrderCreator.test.d.ts.map +1 -0
- package/lib/services/orderCreator/__test__/tpslPositionOrderCreator.test.d.ts +2 -0
- package/lib/services/orderCreator/__test__/tpslPositionOrderCreator.test.d.ts.map +1 -0
- package/lib/services/orderCreator/baseAlgoCreator.d.ts +22 -0
- package/lib/services/orderCreator/baseAlgoCreator.d.ts.map +1 -0
- package/lib/services/orderCreator/baseAlgoCreator.js +67 -0
- package/lib/services/orderCreator/baseAlgoCreator.js.map +1 -0
- package/lib/services/orderCreator/baseCreator.d.ts +14 -0
- package/lib/services/orderCreator/baseCreator.d.ts.map +1 -0
- package/lib/services/orderCreator/baseCreator.js +102 -0
- package/lib/services/orderCreator/baseCreator.js.map +1 -0
- package/lib/services/orderCreator/factory.d.ts +7 -0
- package/lib/services/orderCreator/factory.d.ts.map +1 -0
- package/lib/services/orderCreator/factory.js +54 -0
- package/lib/services/orderCreator/factory.js.map +1 -0
- package/lib/services/orderCreator/fokCreator.d.ts +4 -0
- package/lib/services/orderCreator/fokCreator.d.ts.map +1 -0
- package/lib/services/orderCreator/fokCreator.js +15 -0
- package/lib/services/orderCreator/fokCreator.js.map +1 -0
- package/lib/services/orderCreator/generalCreator.d.ts +8 -0
- package/lib/services/orderCreator/generalCreator.d.ts.map +1 -0
- package/lib/services/orderCreator/generalCreator.js +25 -0
- package/lib/services/orderCreator/generalCreator.js.map +1 -0
- package/lib/services/orderCreator/interface.d.ts +23 -0
- package/lib/services/orderCreator/interface.d.ts.map +1 -0
- package/lib/services/orderCreator/interface.js +6 -0
- package/lib/services/orderCreator/interface.js.map +1 -0
- package/lib/services/orderCreator/iocCreator.d.ts +4 -0
- package/lib/services/orderCreator/iocCreator.d.ts.map +1 -0
- package/lib/services/orderCreator/iocCreator.js +15 -0
- package/lib/services/orderCreator/iocCreator.js.map +1 -0
- package/lib/services/orderCreator/limitOrderCreator.d.ts +8 -0
- package/lib/services/orderCreator/limitOrderCreator.d.ts.map +1 -0
- package/lib/services/orderCreator/limitOrderCreator.js +79 -0
- package/lib/services/orderCreator/limitOrderCreator.js.map +1 -0
- package/lib/services/orderCreator/marketOrderCreator.d.ts +24 -0
- package/lib/services/orderCreator/marketOrderCreator.d.ts.map +1 -0
- package/lib/services/orderCreator/marketOrderCreator.js +28 -0
- package/lib/services/orderCreator/marketOrderCreator.js.map +1 -0
- package/lib/services/orderCreator/postOnlyCreator.d.ts +4 -0
- package/lib/services/orderCreator/postOnlyCreator.d.ts.map +1 -0
- package/lib/services/orderCreator/postOnlyCreator.js +15 -0
- package/lib/services/orderCreator/postOnlyCreator.js.map +1 -0
- package/lib/services/orderCreator/stopLimitOrderCreator.d.ts +11 -0
- package/lib/services/orderCreator/stopLimitOrderCreator.d.ts.map +1 -0
- package/lib/services/orderCreator/stopLimitOrderCreator.js +93 -0
- package/lib/services/orderCreator/stopLimitOrderCreator.js.map +1 -0
- package/lib/services/orderCreator/stopMarketOrderCreator.d.ts +30 -0
- package/lib/services/orderCreator/stopMarketOrderCreator.d.ts.map +1 -0
- package/lib/services/orderCreator/stopMarketOrderCreator.js +56 -0
- package/lib/services/orderCreator/stopMarketOrderCreator.js.map +1 -0
- package/lib/services/orderCreator/tpslOrderCreator.d.ts +32 -0
- package/lib/services/orderCreator/tpslOrderCreator.d.ts.map +1 -0
- package/lib/services/orderCreator/tpslOrderCreator.js +94 -0
- package/lib/services/orderCreator/tpslOrderCreator.js.map +1 -0
- package/lib/services/orderCreator/tpslPositionOrderCreator.d.ts +33 -0
- package/lib/services/orderCreator/tpslPositionOrderCreator.d.ts.map +1 -0
- package/lib/services/orderCreator/tpslPositionOrderCreator.js +83 -0
- package/lib/services/orderCreator/tpslPositionOrderCreator.js.map +1 -0
- package/lib/services/orderMerge/algoOrderMergeHandler.d.ts +9 -0
- package/lib/services/orderMerge/algoOrderMergeHandler.d.ts.map +1 -0
- package/lib/services/orderMerge/algoOrderMergeHandler.js +48 -0
- package/lib/services/orderMerge/algoOrderMergeHandler.js.map +1 -0
- package/lib/services/orderMerge/baseMergeHandler.d.ts +22 -0
- package/lib/services/orderMerge/baseMergeHandler.d.ts.map +1 -0
- package/lib/services/orderMerge/baseMergeHandler.js +170 -0
- package/lib/services/orderMerge/baseMergeHandler.js.map +1 -0
- package/lib/services/orderMerge/interface.d.ts +8 -0
- package/lib/services/orderMerge/interface.d.ts.map +1 -0
- package/lib/services/orderMerge/interface.js +6 -0
- package/lib/services/orderMerge/interface.js.map +1 -0
- package/lib/services/orderMerge/regularOrderMergeHandler.d.ts +8 -0
- package/lib/services/orderMerge/regularOrderMergeHandler.d.ts.map +1 -0
- package/lib/services/orderMerge/regularOrderMergeHandler.js +25 -0
- package/lib/services/orderMerge/regularOrderMergeHandler.js.map +1 -0
- package/lib/usePoster.d.ts +3 -0
- package/lib/usePoster.d.ts.map +1 -1
- package/lib/usePoster.js +3 -1
- package/lib/usePoster.js.map +1 -1
- package/lib/utils/createOrder.d.ts +0 -55
- package/lib/utils/createOrder.d.ts.map +1 -1
- package/lib/utils/createOrder.js +3 -375
- package/lib/utils/createOrder.js.map +1 -1
- package/lib/utils/fokCreator.d.ts +1 -0
- package/lib/utils/fokCreator.d.ts.map +1 -0
- package/lib/utils/fokCreator.js +3 -0
- package/lib/utils/fokCreator.js.map +1 -0
- package/lib/utils/index.d.ts +5 -0
- package/lib/utils/index.d.ts.map +1 -0
- package/lib/utils/index.js +36 -0
- package/lib/utils/index.js.map +1 -0
- package/lib/utils/order.d.ts +2 -0
- package/lib/utils/order.d.ts.map +1 -0
- package/lib/utils/order.js +6 -0
- package/lib/utils/order.js.map +1 -0
- package/lib/utils/swr.d.ts +3 -1
- package/lib/utils/swr.d.ts.map +1 -1
- package/lib/utils/swr.js +128 -89
- package/lib/utils/swr.js.map +1 -1
- package/lib/utils/ws.d.ts +2 -0
- package/lib/utils/ws.d.ts.map +1 -0
- package/lib/utils/ws.js +19 -0
- package/lib/utils/ws.js.map +1 -0
- package/lib/version.d.ts +1 -1
- package/lib/version.d.ts.map +1 -1
- package/lib/version.js +2 -2
- package/lib/version.js.map +1 -1
- package/package.json +9 -7
- package/esm/orderly/useOrderStream.d.ts.map +0 -1
- package/esm/orderly/useOrderStream.js.map +0 -1
- package/esm/orderly/usePositionStream.d.ts.map +0 -1
- package/esm/orderly/usePositionStream.js.map +0 -1
- package/lib/orderly/useOrderStream.d.ts.map +0 -1
- package/lib/orderly/useOrderStream.js.map +0 -1
- package/lib/orderly/usePositionStream.d.ts.map +0 -1
- package/lib/orderly/usePositionStream.js.map +0 -1
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { OrderEntity } from "@orderly.network/types";
|
|
2
|
+
import { BaseOrderCreator } from "./baseCreator";
|
|
3
|
+
import { OrderFormEntity, ValuesDepConfig, VerifyResult } from "./interface";
|
|
4
|
+
export declare class GeneralOrderCreator extends BaseOrderCreator<OrderEntity> {
|
|
5
|
+
create(data: OrderEntity): OrderEntity;
|
|
6
|
+
validate(values: OrderFormEntity, configs: ValuesDepConfig): Promise<VerifyResult>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=generalCreator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generalCreator.d.ts","sourceRoot":"","sources":["../../../src/services/orderCreator/generalCreator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE7E,qBAAa,mBAAoB,SAAQ,gBAAgB,CAAC,WAAW,CAAC;IACpE,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW;IAOtC,QAAQ,CACN,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,YAAY,CAAC;CAGzB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { BaseOrderCreator } from "./baseCreator";
|
|
2
|
+
export class GeneralOrderCreator extends BaseOrderCreator {
|
|
3
|
+
create(data) {
|
|
4
|
+
return {
|
|
5
|
+
...this.baseOrder(data),
|
|
6
|
+
order_price: data.order_price,
|
|
7
|
+
order_quantity: data.order_quantity
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
validate(values, configs) {
|
|
11
|
+
return super.baseValidate(values, configs);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
//# sourceMappingURL=generalCreator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/services/orderCreator/generalCreator.ts"],"sourcesContent":["import { OrderEntity } from \"@orderly.network/types\";\nimport { BaseOrderCreator } from \"./baseCreator\";\nimport { OrderFormEntity, ValuesDepConfig, VerifyResult } from \"./interface\";\n\nexport class GeneralOrderCreator extends BaseOrderCreator<OrderEntity> {\n create(data: OrderEntity): OrderEntity {\n return {\n ...this.baseOrder(data),\n order_price: data.order_price,\n order_quantity: data.order_quantity,\n };\n }\n validate(\n values: OrderFormEntity,\n configs: ValuesDepConfig\n ): Promise<VerifyResult> {\n return super.baseValidate(values, configs);\n }\n}\n"],"names":["BaseOrderCreator","GeneralOrderCreator","create","data","baseOrder","order_price","order_quantity","validate","values","configs","baseValidate"],"rangeMappings":";;;;;;;;;;;;","mappings":"AACA,SAASA,gBAAgB,QAAQ,gBAAgB;AAGjD,OAAO,MAAMC,4BAA4BD;IACvCE,OAAOC,IAAiB,EAAe;QACrC,OAAO;YACL,GAAG,IAAI,CAACC,SAAS,CAACD,KAAK;YACvBE,aAAaF,KAAKE,WAAW;YAC7BC,gBAAgBH,KAAKG,cAAc;QACrC;IACF;IACAC,SACEC,MAAuB,EACvBC,OAAwB,EACD;QACvB,OAAO,KAAK,CAACC,aAAaF,QAAQC;IACpC;AACF"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { API, OrderEntity } from "@orderly.network/types";
|
|
2
|
+
export type VerifyResult = {
|
|
3
|
+
[P in keyof OrderEntity]?: {
|
|
4
|
+
type: string;
|
|
5
|
+
message: string;
|
|
6
|
+
};
|
|
7
|
+
};
|
|
8
|
+
export type OrderFormEntity = Pick<OrderEntity, "order_price" | "order_quantity" | "total" | "reduce_only">;
|
|
9
|
+
export type ValuesDepConfig = {
|
|
10
|
+
symbol: API.SymbolExt;
|
|
11
|
+
maxQty: number;
|
|
12
|
+
markPrice: number;
|
|
13
|
+
};
|
|
14
|
+
export interface OrderCreator<T> {
|
|
15
|
+
create: (values: T, configs: ValuesDepConfig) => T;
|
|
16
|
+
validate: (values: T, configs: ValuesDepConfig) => Promise<{
|
|
17
|
+
[P in keyof T]?: {
|
|
18
|
+
type: string;
|
|
19
|
+
message: string;
|
|
20
|
+
};
|
|
21
|
+
}>;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../src/services/orderCreator/interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,MAAM,YAAY,GAAG;KACxB,CAAC,IAAI,MAAM,WAAW,CAAC,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;CAC7D,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,IAAI,CAChC,WAAW,EACX,aAAa,GAAG,gBAAgB,GAAG,OAAO,GAAG,aAAa,CAC3D,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAE5B,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,KAAK,CAAC,CAAC;IACnD,QAAQ,EAAE,CACR,MAAM,EAAE,CAAC,EACT,OAAO,EAAE,eAAe,KACrB,OAAO,CAAC;SACV,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE;KACnD,CAAC,CAAC;CACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/services/orderCreator/interface.ts"],"sourcesContent":["import { API, OrderEntity } from \"@orderly.network/types\";\n\nexport type VerifyResult = {\n [P in keyof OrderEntity]?: { type: string; message: string };\n};\n\nexport type OrderFormEntity = Pick<\n OrderEntity,\n \"order_price\" | \"order_quantity\" | \"total\" | \"reduce_only\"\n>;\n\nexport type ValuesDepConfig = {\n // token: API.TokenInfo;\n symbol: API.SymbolExt;\n maxQty: number;\n markPrice: number;\n};\n\nexport interface OrderCreator<T> {\n create: (values: T, configs: ValuesDepConfig) => T;\n validate: (\n values: T,\n configs: ValuesDepConfig\n ) => Promise<{\n [P in keyof T]?: { type: string; message: string };\n }>;\n}\n"],"names":[],"rangeMappings":"","mappings":"AAkBA,WAQC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iocCreator.d.ts","sourceRoot":"","sources":["../../../src/services/orderCreator/iocCreator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,qBAAa,eAAgB,SAAQ,iBAAiB;CAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/services/orderCreator/iocCreator.ts"],"sourcesContent":["import { LimitOrderCreator } from \"./limitOrderCreator\";\n\nexport class IOCOrderCreator extends LimitOrderCreator {}\n"],"names":["LimitOrderCreator","IOCOrderCreator"],"rangeMappings":";;","mappings":"AAAA,SAASA,iBAAiB,QAAQ,sBAAsB;AAExD,OAAO,MAAMC,wBAAwBD;AAAmB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { OrderEntity } from "@orderly.network/types";
|
|
2
|
+
import { BaseOrderCreator } from "./baseCreator";
|
|
3
|
+
import { OrderFormEntity, ValuesDepConfig, VerifyResult } from "./interface";
|
|
4
|
+
export declare class LimitOrderCreator extends BaseOrderCreator<OrderEntity> {
|
|
5
|
+
create(values: OrderEntity, config?: ValuesDepConfig): OrderEntity;
|
|
6
|
+
validate(values: OrderFormEntity, config: ValuesDepConfig): Promise<VerifyResult>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=limitOrderCreator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"limitOrderCreator.d.ts","sourceRoot":"","sources":["../../../src/services/orderCreator/limitOrderCreator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAO7E,qBAAa,iBAAkB,SAAQ,gBAAgB,CAAC,WAAW,CAAC;IAClE,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,eAAe,GAAG,WAAW;IAyBlE,QAAQ,CACN,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,YAAY,CAAC;CAyDzB"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { BaseOrderCreator } from "./baseCreator";
|
|
2
|
+
import { Decimal } from "@orderly.network/utils";
|
|
3
|
+
import { order as orderUntil } from "@orderly.network/perp";
|
|
4
|
+
import { pick } from "ramda";
|
|
5
|
+
const { maxPrice, minPrice, scropePrice } = orderUntil;
|
|
6
|
+
export class LimitOrderCreator extends BaseOrderCreator {
|
|
7
|
+
create(values, config) {
|
|
8
|
+
const order = {
|
|
9
|
+
...this.baseOrder(values),
|
|
10
|
+
order_price: values.order_price
|
|
11
|
+
};
|
|
12
|
+
this.totalToQuantity(order, config);
|
|
13
|
+
// console.log("create", order);
|
|
14
|
+
return pick([
|
|
15
|
+
"symbol",
|
|
16
|
+
"order_price",
|
|
17
|
+
"order_quantity",
|
|
18
|
+
"visible_quantity",
|
|
19
|
+
"reduce_only",
|
|
20
|
+
"side",
|
|
21
|
+
"order_type"
|
|
22
|
+
], order);
|
|
23
|
+
// return order;
|
|
24
|
+
}
|
|
25
|
+
validate(values, config) {
|
|
26
|
+
return this.baseValidate(values, config).then((errors)=>{
|
|
27
|
+
// const errors = this.baseValidate(values, config);
|
|
28
|
+
// @ts-ignore
|
|
29
|
+
const { order_price, side } = values;
|
|
30
|
+
if (!order_price) {
|
|
31
|
+
errors.order_price = {
|
|
32
|
+
type: "required",
|
|
33
|
+
message: "price is required"
|
|
34
|
+
};
|
|
35
|
+
} else {
|
|
36
|
+
const price = new Decimal(order_price);
|
|
37
|
+
const { symbol } = config;
|
|
38
|
+
const { price_range, price_scope } = symbol;
|
|
39
|
+
const maxPriceNumber = maxPrice(config.markPrice, price_range);
|
|
40
|
+
const minPriceNumber = minPrice(config.markPrice, price_range);
|
|
41
|
+
const scropePriceNumbere = scropePrice(config.markPrice, price_scope, side);
|
|
42
|
+
const priceRange = side === "BUY" ? {
|
|
43
|
+
min: scropePriceNumbere,
|
|
44
|
+
max: maxPriceNumber
|
|
45
|
+
} : {
|
|
46
|
+
min: minPriceNumber,
|
|
47
|
+
max: scropePriceNumbere
|
|
48
|
+
};
|
|
49
|
+
/// if side is 'buy', only check max price,
|
|
50
|
+
/// if side is 'sell', only check min price,
|
|
51
|
+
if (price.gt(priceRange?.max)) {
|
|
52
|
+
errors.order_price = {
|
|
53
|
+
type: "max",
|
|
54
|
+
message: `Price must be less than ${new Decimal(priceRange.max).todp(symbol.quote_dp)}`
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
if (price.lt(priceRange?.min)) {
|
|
58
|
+
errors.order_price = {
|
|
59
|
+
type: "min",
|
|
60
|
+
message: `Price must be greater than ${new Decimal(priceRange.min).todp(symbol.quote_dp)}`
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return errors;
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
//# sourceMappingURL=limitOrderCreator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/services/orderCreator/limitOrderCreator.ts"],"sourcesContent":["import { OrderEntity } from \"@orderly.network/types\";\nimport { BaseOrderCreator } from \"./baseCreator\";\nimport { OrderFormEntity, ValuesDepConfig, VerifyResult } from \"./interface\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { order as orderUntil } from \"@orderly.network/perp\";\nimport { pick } from \"ramda\";\n\nconst { maxPrice, minPrice, scropePrice } = orderUntil;\n\nexport class LimitOrderCreator extends BaseOrderCreator<OrderEntity> {\n create(values: OrderEntity, config?: ValuesDepConfig): OrderEntity {\n const order = {\n ...this.baseOrder(values),\n order_price: values.order_price,\n };\n\n this.totalToQuantity(order, config!);\n\n // console.log(\"create\", order);\n\n return pick(\n [\n \"symbol\",\n \"order_price\",\n \"order_quantity\",\n \"visible_quantity\",\n \"reduce_only\",\n \"side\",\n \"order_type\",\n ],\n order\n );\n\n // return order;\n }\n validate(\n values: OrderFormEntity,\n config: ValuesDepConfig\n ): Promise<VerifyResult> {\n return this.baseValidate(values, config).then((errors) => {\n // const errors = this.baseValidate(values, config);\n // @ts-ignore\n const { order_price, side } = values;\n\n if (!order_price) {\n errors.order_price = {\n type: \"required\",\n message: \"price is required\",\n };\n } else {\n const price = new Decimal(order_price);\n const { symbol } = config;\n const { price_range, price_scope } = symbol;\n const maxPriceNumber = maxPrice(config.markPrice, price_range);\n const minPriceNumber = minPrice(config.markPrice, price_range);\n const scropePriceNumbere = scropePrice(\n config.markPrice,\n price_scope,\n side\n );\n\n const priceRange =\n side === \"BUY\"\n ? {\n min: scropePriceNumbere,\n max: maxPriceNumber,\n }\n : {\n min: minPriceNumber,\n max: scropePriceNumbere,\n };\n\n /// if side is 'buy', only check max price,\n /// if side is 'sell', only check min price,\n if (price.gt(priceRange?.max)) {\n errors.order_price = {\n type: \"max\",\n message: `Price must be less than ${new Decimal(\n priceRange.max\n ).todp(symbol.quote_dp)}`,\n };\n }\n if (price.lt(priceRange?.min)) {\n errors.order_price = {\n type: \"min\",\n message: `Price must be greater than ${new Decimal(\n priceRange.min\n ).todp(symbol.quote_dp)}`,\n };\n }\n }\n\n return errors;\n });\n }\n}\n"],"names":["BaseOrderCreator","Decimal","order","orderUntil","pick","maxPrice","minPrice","scropePrice","LimitOrderCreator","create","values","config","baseOrder","order_price","totalToQuantity","validate","baseValidate","then","errors","side","type","message","price","symbol","price_range","price_scope","maxPriceNumber","markPrice","minPriceNumber","scropePriceNumbere","priceRange","min","max","gt","todp","quote_dp","lt"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AACA,SAASA,gBAAgB,QAAQ,gBAAgB;AAEjD,SAASC,OAAO,QAAQ,yBAAyB;AACjD,SAASC,SAASC,UAAU,QAAQ,wBAAwB;AAC5D,SAASC,IAAI,QAAQ,QAAQ;AAE7B,MAAM,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,WAAW,EAAE,GAAGJ;AAE5C,OAAO,MAAMK,0BAA0BR;IACrCS,OAAOC,MAAmB,EAAEC,MAAwB,EAAe;QACjE,MAAMT,QAAQ;YACZ,GAAG,IAAI,CAACU,SAAS,CAACF,OAAO;YACzBG,aAAaH,OAAOG,WAAW;QACjC;QAEA,IAAI,CAACC,eAAe,CAACZ,OAAOS;QAE5B,gCAAgC;QAEhC,OAAOP,KACL;YACE;YACA;YACA;YACA;YACA;YACA;YACA;SACD,EACDF;IAGF,gBAAgB;IAClB;IACAa,SACEL,MAAuB,EACvBC,MAAuB,EACA;QACvB,OAAO,IAAI,CAACK,YAAY,CAACN,QAAQC,QAAQM,IAAI,CAAC,CAACC;YAC7C,oDAAoD;YACpD,aAAa;YACb,MAAM,EAAEL,WAAW,EAAEM,IAAI,EAAE,GAAGT;YAE9B,IAAI,CAACG,aAAa;gBAChBK,OAAOL,WAAW,GAAG;oBACnBO,MAAM;oBACNC,SAAS;gBACX;YACF,OAAO;gBACL,MAAMC,QAAQ,IAAIrB,QAAQY;gBAC1B,MAAM,EAAEU,MAAM,EAAE,GAAGZ;gBACnB,MAAM,EAAEa,WAAW,EAAEC,WAAW,EAAE,GAAGF;gBACrC,MAAMG,iBAAiBrB,SAASM,OAAOgB,SAAS,EAAEH;gBAClD,MAAMI,iBAAiBtB,SAASK,OAAOgB,SAAS,EAAEH;gBAClD,MAAMK,qBAAqBtB,YACzBI,OAAOgB,SAAS,EAChBF,aACAN;gBAGF,MAAMW,aACJX,SAAS,QACL;oBACEY,KAAKF;oBACLG,KAAKN;gBACP,IACA;oBACEK,KAAKH;oBACLI,KAAKH;gBACP;gBAEN,2CAA2C;gBAC3C,4CAA4C;gBAC5C,IAAIP,MAAMW,EAAE,CAACH,YAAYE,MAAM;oBAC7Bd,OAAOL,WAAW,GAAG;wBACnBO,MAAM;wBACNC,SAAS,CAAC,wBAAwB,EAAE,IAAIpB,QACtC6B,WAAWE,GAAG,EACdE,IAAI,CAACX,OAAOY,QAAQ,EAAE,CAAC;oBAC3B;gBACF;gBACA,IAAIb,MAAMc,EAAE,CAACN,YAAYC,MAAM;oBAC7Bb,OAAOL,WAAW,GAAG;wBACnBO,MAAM;wBACNC,SAAS,CAAC,2BAA2B,EAAE,IAAIpB,QACzC6B,WAAWC,GAAG,EACdG,IAAI,CAACX,OAAOY,QAAQ,EAAE,CAAC;oBAC3B;gBACF;YACF;YAEA,OAAOjB;QACT;IACF;AACF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { OrderEntity } from "@orderly.network/types";
|
|
2
|
+
import { BaseOrderCreator } from "./baseCreator";
|
|
3
|
+
import { OrderFormEntity, ValuesDepConfig, VerifyResult } from "./interface";
|
|
4
|
+
export declare class MarketOrderCreator extends BaseOrderCreator<OrderEntity> {
|
|
5
|
+
create(values: OrderEntity): {
|
|
6
|
+
symbol: string;
|
|
7
|
+
order_type: import("@orderly.network/types").OrderType;
|
|
8
|
+
algo_type?: import("@orderly.network/types").AlgoOrderRootType | undefined;
|
|
9
|
+
order_type_ext?: import("@orderly.network/types").OrderType | undefined;
|
|
10
|
+
order_price?: string | number | undefined;
|
|
11
|
+
order_quantity?: string | number | undefined;
|
|
12
|
+
order_amount?: number | undefined;
|
|
13
|
+
visible_quantity?: number | undefined;
|
|
14
|
+
reduce_only?: boolean | undefined;
|
|
15
|
+
side: import("@orderly.network/types").OrderSide;
|
|
16
|
+
broker_id?: string | undefined;
|
|
17
|
+
total?: string | number | undefined;
|
|
18
|
+
isStopOrder?: boolean | undefined;
|
|
19
|
+
trigger_price?: string | number | undefined;
|
|
20
|
+
order_tag?: string | undefined;
|
|
21
|
+
};
|
|
22
|
+
validate(values: OrderFormEntity, configs: ValuesDepConfig): Promise<VerifyResult>;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=marketOrderCreator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"marketOrderCreator.d.ts","sourceRoot":"","sources":["../../../src/services/orderCreator/marketOrderCreator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE7E,qBAAa,kBAAmB,SAAQ,gBAAgB,CAAC,WAAW,CAAC;IACnE,MAAM,CAAC,MAAM,EAAE,WAAW;;;;;;;;;;;;;;;;;IAY1B,QAAQ,CACN,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,YAAY,CAAC;CAGzB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { BaseOrderCreator } from "./baseCreator";
|
|
2
|
+
export class MarketOrderCreator extends BaseOrderCreator {
|
|
3
|
+
create(values) {
|
|
4
|
+
const data = this.baseOrder(values);
|
|
5
|
+
delete data["order_price"];
|
|
6
|
+
delete data["total"];
|
|
7
|
+
delete data["trigger_price"];
|
|
8
|
+
delete data["isStopOrder"];
|
|
9
|
+
return {
|
|
10
|
+
...data
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
validate(values, configs) {
|
|
14
|
+
return this.baseValidate(values, configs);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=marketOrderCreator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/services/orderCreator/marketOrderCreator.ts"],"sourcesContent":["import { OrderEntity } from \"@orderly.network/types\";\nimport { BaseOrderCreator } from \"./baseCreator\";\nimport { OrderFormEntity, ValuesDepConfig, VerifyResult } from \"./interface\";\n\nexport class MarketOrderCreator extends BaseOrderCreator<OrderEntity> {\n create(values: OrderEntity) {\n const data = this.baseOrder(values);\n\n delete data[\"order_price\"];\n delete data[\"total\"];\n delete data[\"trigger_price\"];\n delete data[\"isStopOrder\"];\n\n return {\n ...data,\n };\n }\n validate(\n values: OrderFormEntity,\n configs: ValuesDepConfig\n ): Promise<VerifyResult> {\n return this.baseValidate(values, configs);\n }\n}\n"],"names":["BaseOrderCreator","MarketOrderCreator","create","values","data","baseOrder","validate","configs","baseValidate"],"rangeMappings":";;;;;;;;;;;;;;;","mappings":"AACA,SAASA,gBAAgB,QAAQ,gBAAgB;AAGjD,OAAO,MAAMC,2BAA2BD;IACtCE,OAAOC,MAAmB,EAAE;QAC1B,MAAMC,OAAO,IAAI,CAACC,SAAS,CAACF;QAE5B,OAAOC,IAAI,CAAC,cAAc;QAC1B,OAAOA,IAAI,CAAC,QAAQ;QACpB,OAAOA,IAAI,CAAC,gBAAgB;QAC5B,OAAOA,IAAI,CAAC,cAAc;QAE1B,OAAO;YACL,GAAGA,IAAI;QACT;IACF;IACAE,SACEH,MAAuB,EACvBI,OAAwB,EACD;QACvB,OAAO,IAAI,CAACC,YAAY,CAACL,QAAQI;IACnC;AACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postOnlyCreator.d.ts","sourceRoot":"","sources":["../../../src/services/orderCreator/postOnlyCreator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,qBAAa,oBAAqB,SAAQ,iBAAiB;CAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/services/orderCreator/postOnlyCreator.ts"],"sourcesContent":["import { LimitOrderCreator } from \"./limitOrderCreator\";\n\nexport class PostOnlyOrderCreator extends LimitOrderCreator {}\n"],"names":["LimitOrderCreator","PostOnlyOrderCreator"],"rangeMappings":";;","mappings":"AAAA,SAASA,iBAAiB,QAAQ,sBAAsB;AAExD,OAAO,MAAMC,6BAA6BD;AAAmB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { AlgoOrderEntity, AlgoOrderRootType } from "@orderly.network/types";
|
|
2
|
+
import { OrderFormEntity, ValuesDepConfig, VerifyResult } from "./interface";
|
|
3
|
+
import { BaseOrderCreator } from "./baseCreator";
|
|
4
|
+
export declare class StopLimitOrderCreator extends BaseOrderCreator<AlgoOrderEntity> {
|
|
5
|
+
create(values: AlgoOrderEntity & {
|
|
6
|
+
order_quantity: number;
|
|
7
|
+
order_price: number;
|
|
8
|
+
}, config?: ValuesDepConfig): AlgoOrderEntity<AlgoOrderRootType.STOP>;
|
|
9
|
+
validate(values: OrderFormEntity, config: ValuesDepConfig): Promise<VerifyResult>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=stopLimitOrderCreator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stopLimitOrderCreator.d.ts","sourceRoot":"","sources":["../../../src/services/orderCreator/stopLimitOrderCreator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,iBAAiB,EAGlB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAMjD,qBAAa,qBAAsB,SAAQ,gBAAgB,CAAC,eAAe,CAAC;IAC1E,MAAM,CACJ,MAAM,EAAE,eAAe,GAAG;QACxB,cAAc,EAAE,MAAM,CAAC;QACvB,WAAW,EAAE,MAAM,CAAC;KACrB,EACD,MAAM,CAAC,EAAE,eAAe,GACvB,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC;IA8B1C,QAAQ,CACN,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,YAAY,CAAC;CAkEzB"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { AlgoOrderRootType, TriggerPriceType } from "@orderly.network/types";
|
|
2
|
+
import { Decimal } from "@orderly.network/utils";
|
|
3
|
+
import { order as orderUntil } from "@orderly.network/perp";
|
|
4
|
+
import { BaseOrderCreator } from "./baseCreator";
|
|
5
|
+
import { OrderType } from "@orderly.network/types";
|
|
6
|
+
import { pick } from "ramda";
|
|
7
|
+
const { maxPrice, minPrice, scropePrice } = orderUntil;
|
|
8
|
+
export class StopLimitOrderCreator extends BaseOrderCreator {
|
|
9
|
+
create(values, config) {
|
|
10
|
+
this.totalToQuantity(values, config);
|
|
11
|
+
const order = {
|
|
12
|
+
...this.baseOrder(values),
|
|
13
|
+
trigger_price: values.trigger_price,
|
|
14
|
+
algo_type: AlgoOrderRootType.STOP,
|
|
15
|
+
type: OrderType.LIMIT,
|
|
16
|
+
quantity: values["order_quantity"],
|
|
17
|
+
price: values["order_price"],
|
|
18
|
+
trigger_price_type: TriggerPriceType.MARK_PRICE
|
|
19
|
+
};
|
|
20
|
+
return pick([
|
|
21
|
+
"symbol",
|
|
22
|
+
"trigger_price",
|
|
23
|
+
"algo_type",
|
|
24
|
+
"type",
|
|
25
|
+
"quantity",
|
|
26
|
+
"price",
|
|
27
|
+
"trigger_price_type",
|
|
28
|
+
"side",
|
|
29
|
+
"reduce_only",
|
|
30
|
+
"visible_quantity"
|
|
31
|
+
], order);
|
|
32
|
+
}
|
|
33
|
+
validate(values, config) {
|
|
34
|
+
return this.baseValidate(values, config).then((errors)=>{
|
|
35
|
+
// const errors = this.baseValidate(values, config);
|
|
36
|
+
// @ts-ignore
|
|
37
|
+
const { order_price, trigger_price, side } = values;
|
|
38
|
+
if (!order_price) {
|
|
39
|
+
errors.order_price = {
|
|
40
|
+
type: "required",
|
|
41
|
+
message: "price is required"
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
if (!trigger_price) {
|
|
45
|
+
errors.trigger_price = {
|
|
46
|
+
type: "required",
|
|
47
|
+
message: "Trigger price is required"
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
if (trigger_price && order_price) {
|
|
51
|
+
const price = new Decimal(order_price);
|
|
52
|
+
const { symbol } = config;
|
|
53
|
+
const { price_range, price_scope } = symbol;
|
|
54
|
+
const maxPriceNumber = maxPrice(trigger_price, price_range);
|
|
55
|
+
const minPriceNumber = minPrice(trigger_price, price_range);
|
|
56
|
+
const scropePriceNumbere = scropePrice(trigger_price, price_scope, side);
|
|
57
|
+
const priceRange = side === "BUY" ? {
|
|
58
|
+
min: scropePriceNumbere,
|
|
59
|
+
max: maxPriceNumber
|
|
60
|
+
} : {
|
|
61
|
+
min: minPriceNumber,
|
|
62
|
+
max: scropePriceNumbere
|
|
63
|
+
};
|
|
64
|
+
/// if side is 'buy', only check max price,
|
|
65
|
+
/// if side is 'sell', only check min price,
|
|
66
|
+
if (price.gt(priceRange?.max)) {
|
|
67
|
+
errors.order_price = {
|
|
68
|
+
type: "max",
|
|
69
|
+
message: `Price must be less than ${new Decimal(priceRange.max).todp(symbol.quote_dp)}`
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
if (price.lt(priceRange?.min)) {
|
|
73
|
+
errors.order_price = {
|
|
74
|
+
type: "min",
|
|
75
|
+
message: `Price must be greater than ${new Decimal(priceRange.min).todp(symbol.quote_dp)}`
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return errors;
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
//# sourceMappingURL=stopLimitOrderCreator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/services/orderCreator/stopLimitOrderCreator.ts"],"sourcesContent":["import {\n AlgoOrderEntity,\n AlgoOrderRootType,\n OrderEntity,\n TriggerPriceType,\n} from \"@orderly.network/types\";\nimport { OrderFormEntity, ValuesDepConfig, VerifyResult } from \"./interface\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { order as orderUntil } from \"@orderly.network/perp\";\nimport { BaseOrderCreator } from \"./baseCreator\";\nimport { OrderType } from \"@orderly.network/types\";\nimport { pick } from \"ramda\";\n\nconst { maxPrice, minPrice, scropePrice } = orderUntil;\n\nexport class StopLimitOrderCreator extends BaseOrderCreator<AlgoOrderEntity> {\n create(\n values: AlgoOrderEntity & {\n order_quantity: number;\n order_price: number;\n },\n config?: ValuesDepConfig\n ): AlgoOrderEntity<AlgoOrderRootType.STOP> {\n this.totalToQuantity(values, config!);\n\n const order: AlgoOrderEntity<AlgoOrderRootType.STOP> = {\n ...this.baseOrder(values as unknown as OrderEntity),\n\n trigger_price: values.trigger_price!,\n algo_type: AlgoOrderRootType.STOP,\n type: OrderType.LIMIT,\n quantity: values[\"order_quantity\"]!,\n price: values[\"order_price\"],\n trigger_price_type: TriggerPriceType.MARK_PRICE,\n };\n\n return pick(\n [\n \"symbol\",\n \"trigger_price\",\n \"algo_type\",\n \"type\",\n \"quantity\",\n \"price\",\n \"trigger_price_type\",\n \"side\",\n \"reduce_only\",\n \"visible_quantity\",\n ],\n order\n );\n }\n validate(\n values: OrderFormEntity,\n config: ValuesDepConfig\n ): Promise<VerifyResult> {\n return this.baseValidate(values, config).then((errors) => {\n // const errors = this.baseValidate(values, config);\n // @ts-ignore\n const { order_price, trigger_price, side } = values;\n\n if (!order_price) {\n errors.order_price = {\n type: \"required\",\n message: \"price is required\",\n };\n }\n\n if (!trigger_price) {\n errors.trigger_price = {\n type: \"required\",\n message: \"Trigger price is required\",\n };\n }\n\n if (trigger_price && order_price) {\n const price = new Decimal(order_price);\n const { symbol } = config;\n const { price_range, price_scope } = symbol;\n const maxPriceNumber = maxPrice(trigger_price, price_range);\n const minPriceNumber = minPrice(trigger_price, price_range);\n const scropePriceNumbere = scropePrice(\n trigger_price,\n price_scope,\n side\n );\n\n const priceRange =\n side === \"BUY\"\n ? {\n min: scropePriceNumbere,\n max: maxPriceNumber,\n }\n : {\n min: minPriceNumber,\n max: scropePriceNumbere,\n };\n\n /// if side is 'buy', only check max price,\n /// if side is 'sell', only check min price,\n if (price.gt(priceRange?.max)) {\n errors.order_price = {\n type: \"max\",\n message: `Price must be less than ${new Decimal(\n priceRange.max\n ).todp(symbol.quote_dp)}`,\n };\n }\n if (price.lt(priceRange?.min)) {\n errors.order_price = {\n type: \"min\",\n message: `Price must be greater than ${new Decimal(\n priceRange.min\n ).todp(symbol.quote_dp)}`,\n };\n }\n }\n\n return errors;\n });\n }\n}\n"],"names":["AlgoOrderRootType","TriggerPriceType","Decimal","order","orderUntil","BaseOrderCreator","OrderType","pick","maxPrice","minPrice","scropePrice","StopLimitOrderCreator","create","values","config","totalToQuantity","baseOrder","trigger_price","algo_type","STOP","type","LIMIT","quantity","price","trigger_price_type","MARK_PRICE","validate","baseValidate","then","errors","order_price","side","message","symbol","price_range","price_scope","maxPriceNumber","minPriceNumber","scropePriceNumbere","priceRange","min","max","gt","todp","quote_dp","lt"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAEEA,iBAAiB,EAEjBC,gBAAgB,QACX,yBAAyB;AAEhC,SAASC,OAAO,QAAQ,yBAAyB;AACjD,SAASC,SAASC,UAAU,QAAQ,wBAAwB;AAC5D,SAASC,gBAAgB,QAAQ,gBAAgB;AACjD,SAASC,SAAS,QAAQ,yBAAyB;AACnD,SAASC,IAAI,QAAQ,QAAQ;AAE7B,MAAM,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,WAAW,EAAE,GAAGN;AAE5C,OAAO,MAAMO,8BAA8BN;IACzCO,OACEC,MAGC,EACDC,MAAwB,EACiB;QACzC,IAAI,CAACC,eAAe,CAACF,QAAQC;QAE7B,MAAMX,QAAiD;YACrD,GAAG,IAAI,CAACa,SAAS,CAACH,OAAiC;YAEnDI,eAAeJ,OAAOI,aAAa;YACnCC,WAAWlB,kBAAkBmB,IAAI;YACjCC,MAAMd,UAAUe,KAAK;YACrBC,UAAUT,MAAM,CAAC,iBAAiB;YAClCU,OAAOV,MAAM,CAAC,cAAc;YAC5BW,oBAAoBvB,iBAAiBwB,UAAU;QACjD;QAEA,OAAOlB,KACL;YACE;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;SACD,EACDJ;IAEJ;IACAuB,SACEb,MAAuB,EACvBC,MAAuB,EACA;QACvB,OAAO,IAAI,CAACa,YAAY,CAACd,QAAQC,QAAQc,IAAI,CAAC,CAACC;YAC7C,oDAAoD;YACpD,aAAa;YACb,MAAM,EAAEC,WAAW,EAAEb,aAAa,EAAEc,IAAI,EAAE,GAAGlB;YAE7C,IAAI,CAACiB,aAAa;gBAChBD,OAAOC,WAAW,GAAG;oBACnBV,MAAM;oBACNY,SAAS;gBACX;YACF;YAEA,IAAI,CAACf,eAAe;gBAClBY,OAAOZ,aAAa,GAAG;oBACrBG,MAAM;oBACNY,SAAS;gBACX;YACF;YAEA,IAAIf,iBAAiBa,aAAa;gBAChC,MAAMP,QAAQ,IAAIrB,QAAQ4B;gBAC1B,MAAM,EAAEG,MAAM,EAAE,GAAGnB;gBACnB,MAAM,EAAEoB,WAAW,EAAEC,WAAW,EAAE,GAAGF;gBACrC,MAAMG,iBAAiB5B,SAASS,eAAeiB;gBAC/C,MAAMG,iBAAiB5B,SAASQ,eAAeiB;gBAC/C,MAAMI,qBAAqB5B,YACzBO,eACAkB,aACAJ;gBAGF,MAAMQ,aACJR,SAAS,QACL;oBACES,KAAKF;oBACLG,KAAKL;gBACP,IACA;oBACEI,KAAKH;oBACLI,KAAKH;gBACP;gBAEN,2CAA2C;gBAC3C,4CAA4C;gBAC5C,IAAIf,MAAMmB,EAAE,CAACH,YAAYE,MAAM;oBAC7BZ,OAAOC,WAAW,GAAG;wBACnBV,MAAM;wBACNY,SAAS,CAAC,wBAAwB,EAAE,IAAI9B,QACtCqC,WAAWE,GAAG,EACdE,IAAI,CAACV,OAAOW,QAAQ,EAAE,CAAC;oBAC3B;gBACF;gBACA,IAAIrB,MAAMsB,EAAE,CAACN,YAAYC,MAAM;oBAC7BX,OAAOC,WAAW,GAAG;wBACnBV,MAAM;wBACNY,SAAS,CAAC,2BAA2B,EAAE,IAAI9B,QACzCqC,WAAWC,GAAG,EACdG,IAAI,CAACV,OAAOW,QAAQ,EAAE,CAAC;oBAC3B;gBACF;YACF;YAEA,OAAOf;QACT;IACF;AACF"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { AlgoOrderEntity, AlgoOrderRootType, OrderType, TriggerPriceType } from "@orderly.network/types";
|
|
2
|
+
import { OrderFormEntity, ValuesDepConfig, VerifyResult } from "./interface";
|
|
3
|
+
import { BaseOrderCreator } from "./baseCreator";
|
|
4
|
+
export declare class StopMarketOrderCreator extends BaseOrderCreator<AlgoOrderEntity> {
|
|
5
|
+
create(values: AlgoOrderEntity & {
|
|
6
|
+
order_quantity: number;
|
|
7
|
+
order_price: number;
|
|
8
|
+
}): Pick<{
|
|
9
|
+
trigger_price: string | number;
|
|
10
|
+
algo_type: AlgoOrderRootType;
|
|
11
|
+
type: OrderType;
|
|
12
|
+
quantity: number;
|
|
13
|
+
trigger_price_type: TriggerPriceType;
|
|
14
|
+
symbol: string;
|
|
15
|
+
order_type: OrderType;
|
|
16
|
+
order_type_ext?: OrderType | undefined;
|
|
17
|
+
order_price?: string | number | undefined;
|
|
18
|
+
order_quantity?: string | number | undefined;
|
|
19
|
+
order_amount?: number | undefined;
|
|
20
|
+
visible_quantity?: number | undefined;
|
|
21
|
+
reduce_only?: boolean | undefined;
|
|
22
|
+
side: import("@orderly.network/types").OrderSide;
|
|
23
|
+
broker_id?: string | undefined;
|
|
24
|
+
total?: string | number | undefined;
|
|
25
|
+
isStopOrder?: boolean | undefined;
|
|
26
|
+
order_tag?: string | undefined;
|
|
27
|
+
}, "symbol" | "type" | "algo_type" | "trigger_price_type" | "side" | "quantity" | "visible_quantity" | "reduce_only" | "trigger_price">;
|
|
28
|
+
validate(values: OrderFormEntity, config: ValuesDepConfig): Promise<VerifyResult>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=stopMarketOrderCreator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stopMarketOrderCreator.d.ts","sourceRoot":"","sources":["../../../src/services/orderCreator/stopMarketOrderCreator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,iBAAiB,EAEjB,SAAS,EACT,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,qBAAa,sBAAuB,SAAQ,gBAAgB,CAAC,eAAe,CAAC;IAC3E,MAAM,CACJ,MAAM,EAAE,eAAe,GAAG;QACxB,cAAc,EAAE,MAAM,CAAC;QACvB,WAAW,EAAE,MAAM,CAAC;KACrB;;;;;;;;;;;;;;;;;;;;IA+BH,QAAQ,CACN,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,YAAY,CAAC;CAgBzB"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { AlgoOrderRootType, OrderType, TriggerPriceType } from "@orderly.network/types";
|
|
2
|
+
import { pick } from "ramda";
|
|
3
|
+
import { BaseOrderCreator } from "./baseCreator";
|
|
4
|
+
export class StopMarketOrderCreator extends BaseOrderCreator {
|
|
5
|
+
create(values) {
|
|
6
|
+
const order = {
|
|
7
|
+
...this.baseOrder(values),
|
|
8
|
+
// order_price: values.order_price,
|
|
9
|
+
trigger_price: values.trigger_price,
|
|
10
|
+
algo_type: AlgoOrderRootType.STOP,
|
|
11
|
+
type: OrderType.MARKET,
|
|
12
|
+
quantity: values["order_quantity"],
|
|
13
|
+
// price: values["order_price"],
|
|
14
|
+
trigger_price_type: TriggerPriceType.MARK_PRICE
|
|
15
|
+
};
|
|
16
|
+
return pick([
|
|
17
|
+
"symbol",
|
|
18
|
+
"trigger_price",
|
|
19
|
+
"algo_type",
|
|
20
|
+
"type",
|
|
21
|
+
"quantity",
|
|
22
|
+
// "price",
|
|
23
|
+
"trigger_price_type",
|
|
24
|
+
"side",
|
|
25
|
+
"reduce_only",
|
|
26
|
+
"visible_quantity"
|
|
27
|
+
], order);
|
|
28
|
+
// return order;
|
|
29
|
+
}
|
|
30
|
+
validate(values, config) {
|
|
31
|
+
return this.baseValidate(values, config).then((errors)=>{
|
|
32
|
+
// const errors = this.baseValidate(values, config);
|
|
33
|
+
// @ts-ignore
|
|
34
|
+
const { order_price, trigger_price, side } = values;
|
|
35
|
+
if (!trigger_price) {
|
|
36
|
+
errors.trigger_price = {
|
|
37
|
+
type: "required",
|
|
38
|
+
message: "Trigger price is required"
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
return errors;
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
//# sourceMappingURL=stopMarketOrderCreator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/services/orderCreator/stopMarketOrderCreator.ts"],"sourcesContent":["import {\n AlgoOrderEntity,\n AlgoOrderRootType,\n OrderEntity,\n OrderType,\n TriggerPriceType,\n} from \"@orderly.network/types\";\nimport { OrderFormEntity, ValuesDepConfig, VerifyResult } from \"./interface\";\n\nimport { pick } from \"ramda\";\nimport { BaseOrderCreator } from \"./baseCreator\";\n\nexport class StopMarketOrderCreator extends BaseOrderCreator<AlgoOrderEntity> {\n create(\n values: AlgoOrderEntity & {\n order_quantity: number;\n order_price: number;\n }\n ) {\n const order = {\n ...this.baseOrder(values as unknown as OrderEntity),\n // order_price: values.order_price,\n trigger_price: values.trigger_price!,\n algo_type: AlgoOrderRootType.STOP,\n type: OrderType.MARKET,\n quantity: values[\"order_quantity\"]!,\n // price: values[\"order_price\"],\n trigger_price_type: TriggerPriceType.MARK_PRICE,\n };\n\n return pick(\n [\n \"symbol\",\n \"trigger_price\",\n \"algo_type\",\n \"type\",\n \"quantity\",\n // \"price\",\n \"trigger_price_type\",\n \"side\",\n \"reduce_only\",\n \"visible_quantity\",\n ],\n order\n );\n\n // return order;\n }\n validate(\n values: OrderFormEntity,\n config: ValuesDepConfig\n ): Promise<VerifyResult> {\n return this.baseValidate(values, config).then((errors) => {\n // const errors = this.baseValidate(values, config);\n // @ts-ignore\n const { order_price, trigger_price, side } = values;\n\n if (!trigger_price) {\n errors.trigger_price = {\n type: \"required\",\n message: \"Trigger price is required\",\n };\n }\n\n return errors;\n });\n }\n}\n"],"names":["AlgoOrderRootType","OrderType","TriggerPriceType","pick","BaseOrderCreator","StopMarketOrderCreator","create","values","order","baseOrder","trigger_price","algo_type","STOP","type","MARKET","quantity","trigger_price_type","MARK_PRICE","validate","config","baseValidate","then","errors","order_price","side","message"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAEEA,iBAAiB,EAEjBC,SAAS,EACTC,gBAAgB,QACX,yBAAyB;AAGhC,SAASC,IAAI,QAAQ,QAAQ;AAC7B,SAASC,gBAAgB,QAAQ,gBAAgB;AAEjD,OAAO,MAAMC,+BAA+BD;IAC1CE,OACEC,MAGC,EACD;QACA,MAAMC,QAAQ;YACZ,GAAG,IAAI,CAACC,SAAS,CAACF,OAAiC;YACnD,mCAAmC;YACnCG,eAAeH,OAAOG,aAAa;YACnCC,WAAWX,kBAAkBY,IAAI;YACjCC,MAAMZ,UAAUa,MAAM;YACtBC,UAAUR,MAAM,CAAC,iBAAiB;YAClC,gCAAgC;YAChCS,oBAAoBd,iBAAiBe,UAAU;QACjD;QAEA,OAAOd,KACL;YACE;YACA;YACA;YACA;YACA;YACA,WAAW;YACX;YACA;YACA;YACA;SACD,EACDK;IAGF,gBAAgB;IAClB;IACAU,SACEX,MAAuB,EACvBY,MAAuB,EACA;QACvB,OAAO,IAAI,CAACC,YAAY,CAACb,QAAQY,QAAQE,IAAI,CAAC,CAACC;YAC7C,oDAAoD;YACpD,aAAa;YACb,MAAM,EAAEC,WAAW,EAAEb,aAAa,EAAEc,IAAI,EAAE,GAAGjB;YAE7C,IAAI,CAACG,eAAe;gBAClBY,OAAOZ,aAAa,GAAG;oBACrBG,MAAM;oBACNY,SAAS;gBACX;YACF;YAEA,OAAOH;QACT;IACF;AACF"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { AlgoOrderEntity, OrderType, API } from "@orderly.network/types";
|
|
2
|
+
import { TriggerPriceType } from "@orderly.network/types";
|
|
3
|
+
import { AlgoOrderType } from "@orderly.network/types";
|
|
4
|
+
import { AlgoOrderRootType } from "@orderly.network/types";
|
|
5
|
+
import { OrderSide } from "@orderly.network/types";
|
|
6
|
+
import { AlgoOrderUpdateEntity, BaseAlgoOrderCreator } from "./baseAlgoCreator";
|
|
7
|
+
import { ValuesDepConfig } from "./interface";
|
|
8
|
+
export declare class TPSLOrderCreator extends BaseAlgoOrderCreator<AlgoOrderEntity<AlgoOrderRootType.TP_SL>> {
|
|
9
|
+
create(values: AlgoOrderEntity<AlgoOrderRootType.TP_SL>, config: ValuesDepConfig): {
|
|
10
|
+
algo_type: AlgoOrderRootType;
|
|
11
|
+
trigger_price_type: TriggerPriceType;
|
|
12
|
+
reduce_only: boolean;
|
|
13
|
+
quantity: string | number;
|
|
14
|
+
symbol: string;
|
|
15
|
+
child_orders: {
|
|
16
|
+
algo_type: AlgoOrderType;
|
|
17
|
+
reduce_only: boolean;
|
|
18
|
+
side: OrderSide;
|
|
19
|
+
type: OrderType;
|
|
20
|
+
trigger_price: string | number;
|
|
21
|
+
symbol: string;
|
|
22
|
+
is_activated: boolean;
|
|
23
|
+
}[];
|
|
24
|
+
};
|
|
25
|
+
crateUpdateOrder(values: AlgoOrderEntity<AlgoOrderRootType.TP_SL>, oldValue: API.AlgoOrder, config: ValuesDepConfig): [
|
|
26
|
+
{
|
|
27
|
+
child_orders: AlgoOrderUpdateEntity[];
|
|
28
|
+
},
|
|
29
|
+
AlgoOrderEntity<AlgoOrderRootType.TP_SL>
|
|
30
|
+
];
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=tpslOrderCreator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tpslOrderCreator.d.ts","sourceRoot":"","sources":["../../../src/services/orderCreator/tpslOrderCreator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,qBAAa,gBAAiB,SAAQ,oBAAoB,CACxD,eAAe,CAAC,iBAAiB,CAAC,KAAK,CAAC,CACzC;IACC,MAAM,CACJ,MAAM,EAAE,eAAe,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAChD,MAAM,EAAE,eAAe;;;;;;;;;;;;;;;;IAoDzB,gBAAgB,CACd,MAAM,EAAE,eAAe,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAChD,QAAQ,EAAE,GAAG,CAAC,SAAS,EACvB,MAAM,EAAE,eAAe,GACtB;QACD;YAAE,YAAY,EAAE,qBAAqB,EAAE,CAAA;SAAE;QACzC,eAAe,CAAC,iBAAiB,CAAC,KAAK,CAAC;KACzC;CAsDF"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { OrderType } from "@orderly.network/types";
|
|
2
|
+
import { TriggerPriceType } from "@orderly.network/types";
|
|
3
|
+
import { AlgoOrderType } from "@orderly.network/types";
|
|
4
|
+
import { AlgoOrderRootType } from "@orderly.network/types";
|
|
5
|
+
import { OrderSide } from "@orderly.network/types";
|
|
6
|
+
import { BaseAlgoOrderCreator } from "./baseAlgoCreator";
|
|
7
|
+
import { Decimal } from "@orderly.network/utils";
|
|
8
|
+
export class TPSLOrderCreator extends BaseAlgoOrderCreator {
|
|
9
|
+
create(values, config) {
|
|
10
|
+
const side = values.side === OrderSide.BUY ? OrderSide.SELL : OrderSide.BUY;
|
|
11
|
+
const child_orders = [];
|
|
12
|
+
if (typeof values.tp_trigger_price !== "undefined") {
|
|
13
|
+
const tp_trigger_price = !!values.sl_trigger_price ? new Decimal(values.tp_trigger_price).todp(config.symbol.quote_dp).toNumber() : values.tp_trigger_price;
|
|
14
|
+
child_orders.push({
|
|
15
|
+
algo_type: AlgoOrderType.TAKE_PROFIT,
|
|
16
|
+
reduce_only: true,
|
|
17
|
+
side,
|
|
18
|
+
type: OrderType.MARKET,
|
|
19
|
+
trigger_price: tp_trigger_price,
|
|
20
|
+
symbol: values.symbol,
|
|
21
|
+
is_activated: !!values.tp_trigger_price
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
if (typeof values.sl_trigger_price !== "undefined") {
|
|
25
|
+
const sl_trigger_price = !!values.sl_trigger_price ? new Decimal(values.sl_trigger_price).todp(config.symbol.quote_dp).toNumber() : values.sl_trigger_price;
|
|
26
|
+
child_orders.push({
|
|
27
|
+
algo_type: AlgoOrderType.STOP_LOSS,
|
|
28
|
+
reduce_only: true,
|
|
29
|
+
side,
|
|
30
|
+
type: OrderType.MARKET,
|
|
31
|
+
trigger_price: sl_trigger_price,
|
|
32
|
+
symbol: values.symbol,
|
|
33
|
+
is_activated: !!values.sl_trigger_price
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
return {
|
|
37
|
+
algo_type: AlgoOrderRootType.TP_SL,
|
|
38
|
+
trigger_price_type: TriggerPriceType.MARK_PRICE,
|
|
39
|
+
reduce_only: true,
|
|
40
|
+
quantity: values.quantity,
|
|
41
|
+
symbol: values.symbol,
|
|
42
|
+
child_orders
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
crateUpdateOrder(values, oldValue, config) {
|
|
46
|
+
const data = this.create(values, config);
|
|
47
|
+
const newData = [];
|
|
48
|
+
const needUpdateQty = values.quantity !== oldValue.quantity;
|
|
49
|
+
data.child_orders.forEach((order)=>{
|
|
50
|
+
// find the old order
|
|
51
|
+
let _order = Object.create(null);
|
|
52
|
+
if (needUpdateQty) {
|
|
53
|
+
_order["quantity"] = data.quantity;
|
|
54
|
+
}
|
|
55
|
+
const oldOrder = oldValue.child_orders?.find((oldOrder)=>oldOrder.algo_type === order.algo_type);
|
|
56
|
+
if (oldOrder) {
|
|
57
|
+
if (!order.is_activated) {
|
|
58
|
+
_order["is_activated"] = false;
|
|
59
|
+
} else if (oldOrder.trigger_price !== order.trigger_price) {
|
|
60
|
+
// _order["order_id"] = Number(oldOrder.algo_order_id);
|
|
61
|
+
_order["trigger_price"] = order.trigger_price;
|
|
62
|
+
}
|
|
63
|
+
if (Object.keys(_order).length > 0) {
|
|
64
|
+
_order["order_id"] = Number(oldOrder.algo_order_id);
|
|
65
|
+
newData.push(_order);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
if (needUpdateQty && newData.length < 2) {
|
|
70
|
+
// if quantity is changed, need to update all child orders
|
|
71
|
+
const missingOrders = oldValue.child_orders.filter((order)=>order.algo_order_id !== newData[0].order_id);
|
|
72
|
+
if (missingOrders.length) {
|
|
73
|
+
newData.push({
|
|
74
|
+
quantity: Number(data.quantity),
|
|
75
|
+
order_id: missingOrders[0].algo_order_id
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return [
|
|
80
|
+
{
|
|
81
|
+
child_orders: newData
|
|
82
|
+
},
|
|
83
|
+
data
|
|
84
|
+
];
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
//# sourceMappingURL=tpslOrderCreator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/services/orderCreator/tpslOrderCreator.ts"],"sourcesContent":["import { AlgoOrderEntity, OrderType, API } from \"@orderly.network/types\";\nimport { TriggerPriceType } from \"@orderly.network/types\";\nimport { AlgoOrderType } from \"@orderly.network/types\";\nimport { AlgoOrderRootType } from \"@orderly.network/types\";\nimport { OrderSide } from \"@orderly.network/types\";\nimport { AlgoOrderUpdateEntity, BaseAlgoOrderCreator } from \"./baseAlgoCreator\";\nimport { ValuesDepConfig } from \"./interface\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nexport class TPSLOrderCreator extends BaseAlgoOrderCreator<\n AlgoOrderEntity<AlgoOrderRootType.TP_SL>\n> {\n create(\n values: AlgoOrderEntity<AlgoOrderRootType.TP_SL>,\n config: ValuesDepConfig\n ) {\n const side =\n values.side! === OrderSide.BUY ? OrderSide.SELL : OrderSide.BUY;\n\n const child_orders = [];\n\n if (typeof values.tp_trigger_price !== \"undefined\") {\n const tp_trigger_price = !!values.sl_trigger_price\n ? new Decimal(values.tp_trigger_price)\n .todp(config.symbol.quote_dp)\n .toNumber()\n : values.tp_trigger_price;\n\n child_orders.push({\n algo_type: AlgoOrderType.TAKE_PROFIT,\n reduce_only: true,\n side,\n type: OrderType.MARKET,\n trigger_price: tp_trigger_price,\n symbol: values.symbol,\n is_activated: !!values.tp_trigger_price,\n });\n }\n\n if (typeof values.sl_trigger_price !== \"undefined\") {\n const sl_trigger_price = !!values.sl_trigger_price\n ? new Decimal(values.sl_trigger_price)\n .todp(config.symbol.quote_dp)\n .toNumber()\n : values.sl_trigger_price;\n child_orders.push({\n algo_type: AlgoOrderType.STOP_LOSS,\n reduce_only: true,\n side,\n type: OrderType.MARKET,\n trigger_price: sl_trigger_price,\n symbol: values.symbol,\n is_activated: !!values.sl_trigger_price,\n });\n }\n\n return {\n algo_type: AlgoOrderRootType.TP_SL,\n trigger_price_type: TriggerPriceType.MARK_PRICE,\n reduce_only: true,\n quantity: values.quantity,\n symbol: values.symbol,\n child_orders,\n };\n }\n\n crateUpdateOrder(\n values: AlgoOrderEntity<AlgoOrderRootType.TP_SL>,\n oldValue: API.AlgoOrder,\n config: ValuesDepConfig\n ): [\n { child_orders: AlgoOrderUpdateEntity[] },\n AlgoOrderEntity<AlgoOrderRootType.TP_SL>\n ] {\n const data = this.create(values, config);\n const newData: AlgoOrderUpdateEntity[] = [];\n\n const needUpdateQty = values.quantity !== oldValue.quantity;\n\n data.child_orders.forEach((order) => {\n // find the old order\n let _order = Object.create(null);\n\n if (needUpdateQty) {\n _order[\"quantity\"] = data.quantity;\n }\n\n const oldOrder = oldValue.child_orders?.find(\n (oldOrder) => oldOrder.algo_type === order.algo_type\n );\n\n if (oldOrder) {\n if (!order.is_activated) {\n _order[\"is_activated\"] = false;\n } else if (oldOrder.trigger_price !== order.trigger_price) {\n // _order[\"order_id\"] = Number(oldOrder.algo_order_id);\n _order[\"trigger_price\"] = order.trigger_price as number;\n }\n\n if (Object.keys(_order).length > 0) {\n _order[\"order_id\"] = Number(oldOrder.algo_order_id);\n newData.push(_order);\n }\n }\n });\n\n if (needUpdateQty && newData.length < 2) {\n // if quantity is changed, need to update all child orders\n const missingOrders = oldValue.child_orders.filter(\n (order) => order.algo_order_id !== newData[0].order_id\n );\n\n if (missingOrders.length) {\n newData.push({\n quantity: Number(data.quantity),\n order_id: missingOrders[0].algo_order_id,\n });\n }\n }\n\n return [\n {\n child_orders: newData,\n },\n data,\n ];\n }\n}\n"],"names":["OrderType","TriggerPriceType","AlgoOrderType","AlgoOrderRootType","OrderSide","BaseAlgoOrderCreator","Decimal","TPSLOrderCreator","create","values","config","side","BUY","SELL","child_orders","tp_trigger_price","sl_trigger_price","todp","symbol","quote_dp","toNumber","push","algo_type","TAKE_PROFIT","reduce_only","type","MARKET","trigger_price","is_activated","STOP_LOSS","TP_SL","trigger_price_type","MARK_PRICE","quantity","crateUpdateOrder","oldValue","data","newData","needUpdateQty","forEach","order","_order","Object","oldOrder","find","keys","length","Number","algo_order_id","missingOrders","filter","order_id"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAA0BA,SAAS,QAAa,yBAAyB;AACzE,SAASC,gBAAgB,QAAQ,yBAAyB;AAC1D,SAASC,aAAa,QAAQ,yBAAyB;AACvD,SAASC,iBAAiB,QAAQ,yBAAyB;AAC3D,SAASC,SAAS,QAAQ,yBAAyB;AACnD,SAAgCC,oBAAoB,QAAQ,oBAAoB;AAEhF,SAASC,OAAO,QAAQ,yBAAyB;AAEjD,OAAO,MAAMC,yBAAyBF;IAGpCG,OACEC,MAAgD,EAChDC,MAAuB,EACvB;QACA,MAAMC,OACJF,OAAOE,IAAI,KAAMP,UAAUQ,GAAG,GAAGR,UAAUS,IAAI,GAAGT,UAAUQ,GAAG;QAEjE,MAAME,eAAe,EAAE;QAEvB,IAAI,OAAOL,OAAOM,gBAAgB,KAAK,aAAa;YAClD,MAAMA,mBAAmB,CAAC,CAACN,OAAOO,gBAAgB,GAC9C,IAAIV,QAAQG,OAAOM,gBAAgB,EAChCE,IAAI,CAACP,OAAOQ,MAAM,CAACC,QAAQ,EAC3BC,QAAQ,KACXX,OAAOM,gBAAgB;YAE3BD,aAAaO,IAAI,CAAC;gBAChBC,WAAWpB,cAAcqB,WAAW;gBACpCC,aAAa;gBACbb;gBACAc,MAAMzB,UAAU0B,MAAM;gBACtBC,eAAeZ;gBACfG,QAAQT,OAAOS,MAAM;gBACrBU,cAAc,CAAC,CAACnB,OAAOM,gBAAgB;YACzC;QACF;QAEA,IAAI,OAAON,OAAOO,gBAAgB,KAAK,aAAa;YAClD,MAAMA,mBAAmB,CAAC,CAACP,OAAOO,gBAAgB,GAC9C,IAAIV,QAAQG,OAAOO,gBAAgB,EAChCC,IAAI,CAACP,OAAOQ,MAAM,CAACC,QAAQ,EAC3BC,QAAQ,KACXX,OAAOO,gBAAgB;YAC3BF,aAAaO,IAAI,CAAC;gBAChBC,WAAWpB,cAAc2B,SAAS;gBAClCL,aAAa;gBACbb;gBACAc,MAAMzB,UAAU0B,MAAM;gBACtBC,eAAeX;gBACfE,QAAQT,OAAOS,MAAM;gBACrBU,cAAc,CAAC,CAACnB,OAAOO,gBAAgB;YACzC;QACF;QAEA,OAAO;YACLM,WAAWnB,kBAAkB2B,KAAK;YAClCC,oBAAoB9B,iBAAiB+B,UAAU;YAC/CR,aAAa;YACbS,UAAUxB,OAAOwB,QAAQ;YACzBf,QAAQT,OAAOS,MAAM;YACrBJ;QACF;IACF;IAEAoB,iBACEzB,MAAgD,EAChD0B,QAAuB,EACvBzB,MAAuB,EAIvB;QACA,MAAM0B,OAAO,IAAI,CAAC5B,MAAM,CAACC,QAAQC;QACjC,MAAM2B,UAAmC,EAAE;QAE3C,MAAMC,gBAAgB7B,OAAOwB,QAAQ,KAAKE,SAASF,QAAQ;QAE3DG,KAAKtB,YAAY,CAACyB,OAAO,CAAC,CAACC;YACzB,qBAAqB;YACrB,IAAIC,SAASC,OAAOlC,MAAM,CAAC;YAE3B,IAAI8B,eAAe;gBACjBG,MAAM,CAAC,WAAW,GAAGL,KAAKH,QAAQ;YACpC;YAEA,MAAMU,WAAWR,SAASrB,YAAY,EAAE8B,KACtC,CAACD,WAAaA,SAASrB,SAAS,KAAKkB,MAAMlB,SAAS;YAGtD,IAAIqB,UAAU;gBACZ,IAAI,CAACH,MAAMZ,YAAY,EAAE;oBACvBa,MAAM,CAAC,eAAe,GAAG;gBAC3B,OAAO,IAAIE,SAAShB,aAAa,KAAKa,MAAMb,aAAa,EAAE;oBACzD,uDAAuD;oBACvDc,MAAM,CAAC,gBAAgB,GAAGD,MAAMb,aAAa;gBAC/C;gBAEA,IAAIe,OAAOG,IAAI,CAACJ,QAAQK,MAAM,GAAG,GAAG;oBAClCL,MAAM,CAAC,WAAW,GAAGM,OAAOJ,SAASK,aAAa;oBAClDX,QAAQhB,IAAI,CAACoB;gBACf;YACF;QACF;QAEA,IAAIH,iBAAiBD,QAAQS,MAAM,GAAG,GAAG;YACvC,0DAA0D;YAC1D,MAAMG,gBAAgBd,SAASrB,YAAY,CAACoC,MAAM,CAChD,CAACV,QAAUA,MAAMQ,aAAa,KAAKX,OAAO,CAAC,EAAE,CAACc,QAAQ;YAGxD,IAAIF,cAAcH,MAAM,EAAE;gBACxBT,QAAQhB,IAAI,CAAC;oBACXY,UAAUc,OAAOX,KAAKH,QAAQ;oBAC9BkB,UAAUF,aAAa,CAAC,EAAE,CAACD,aAAa;gBAC1C;YACF;QACF;QAEA,OAAO;YACL;gBACElC,cAAcuB;YAChB;YACAD;SACD;IACH;AACF"}
|