@orderly.network/hooks 1.3.0-alpha.0 → 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.
Files changed (355) hide show
  1. package/esm/dataProvider.d.ts.map +1 -1
  2. package/esm/dataProvider.js +0 -2
  3. package/esm/dataProvider.js.map +1 -1
  4. package/esm/index.d.ts +4 -3
  5. package/esm/index.d.ts.map +1 -1
  6. package/esm/index.js +4 -3
  7. package/esm/index.js.map +1 -1
  8. package/esm/orderly/orderlyHooks.d.ts +3 -2
  9. package/esm/orderly/orderlyHooks.d.ts.map +1 -1
  10. package/esm/orderly/orderlyHooks.js +3 -2
  11. package/esm/orderly/orderlyHooks.js.map +1 -1
  12. package/esm/orderly/useCollateral.js +2 -2
  13. package/esm/orderly/useCollateral.js.map +1 -1
  14. package/esm/orderly/useMarginRatio.js +1 -1
  15. package/esm/orderly/useMarginRatio.js.map +1 -1
  16. package/esm/orderly/useMaxQty.js +2 -2
  17. package/esm/orderly/useMaxQty.js.map +1 -1
  18. package/esm/orderly/useOrderEntry.d.ts.map +1 -1
  19. package/esm/orderly/useOrderEntry.js +15 -12
  20. package/esm/orderly/useOrderEntry.js.map +1 -1
  21. package/esm/orderly/useOrderEntryNext/index.d.ts +1 -0
  22. package/esm/orderly/useOrderEntryNext/index.d.ts.map +1 -0
  23. package/esm/orderly/useOrderEntryNext/index.js +2 -0
  24. package/esm/orderly/useOrderEntryNext/index.js.map +1 -0
  25. package/esm/orderly/{useOrderStream.d.ts → useOrderStream/useOrderStream.d.ts} +19 -12
  26. package/esm/orderly/useOrderStream/useOrderStream.d.ts.map +1 -0
  27. package/esm/orderly/{useOrderStream.js → useOrderStream/useOrderStream.js} +91 -26
  28. package/esm/orderly/useOrderStream/useOrderStream.js.map +1 -0
  29. package/esm/orderly/useOrderbookStream.d.ts.map +1 -1
  30. package/esm/orderly/useOrderbookStream.js +13 -6
  31. package/esm/orderly/useOrderbookStream.js.map +1 -1
  32. package/esm/orderly/{usePositionStream.d.ts → usePositionStream/usePositionStream.d.ts} +1 -1
  33. package/esm/orderly/usePositionStream/usePositionStream.d.ts.map +1 -0
  34. package/esm/orderly/{usePositionStream.js → usePositionStream/usePositionStream.js} +30 -22
  35. package/esm/orderly/usePositionStream/usePositionStream.js.map +1 -0
  36. package/esm/orderly/usePositionStream/utils.d.ts +8 -0
  37. package/esm/orderly/usePositionStream/utils.d.ts.map +1 -0
  38. package/esm/orderly/usePositionStream/utils.js +34 -0
  39. package/esm/orderly/usePositionStream/utils.js.map +1 -0
  40. package/esm/orderly/usePrivateDataObserver.d.ts.map +1 -1
  41. package/esm/orderly/usePrivateDataObserver.js +30 -43
  42. package/esm/orderly/usePrivateDataObserver.js.map +1 -1
  43. package/esm/orderly/useTakeProfitAndStopLoss/__test__/useTakeProfitAndStopLoss.test.d.ts +1 -0
  44. package/esm/orderly/useTakeProfitAndStopLoss/__test__/useTakeProfitAndStopLoss.test.d.ts.map +1 -0
  45. package/esm/orderly/useTakeProfitAndStopLoss/__test__/utils.test.d.ts +2 -0
  46. package/esm/orderly/useTakeProfitAndStopLoss/__test__/utils.test.d.ts.map +1 -0
  47. package/esm/orderly/useTakeProfitAndStopLoss/index.d.ts +32 -0
  48. package/esm/orderly/useTakeProfitAndStopLoss/index.d.ts.map +1 -0
  49. package/esm/orderly/useTakeProfitAndStopLoss/index.js +23 -0
  50. package/esm/orderly/useTakeProfitAndStopLoss/index.js.map +1 -0
  51. package/esm/orderly/useTakeProfitAndStopLoss/useTPSL.d.ts +59 -0
  52. package/esm/orderly/useTakeProfitAndStopLoss/useTPSL.d.ts.map +1 -0
  53. package/esm/orderly/useTakeProfitAndStopLoss/useTPSL.js +211 -0
  54. package/esm/orderly/useTakeProfitAndStopLoss/useTPSL.js.map +1 -0
  55. package/esm/orderly/useTakeProfitAndStopLoss/utils.d.ts +70 -0
  56. package/esm/orderly/useTakeProfitAndStopLoss/utils.d.ts.map +1 -0
  57. package/esm/orderly/useTakeProfitAndStopLoss/utils.js +226 -0
  58. package/esm/orderly/useTakeProfitAndStopLoss/utils.js.map +1 -0
  59. package/esm/services/orderCreator/__test__/limitOrderCreator.test.d.ts +2 -0
  60. package/esm/services/orderCreator/__test__/limitOrderCreator.test.d.ts.map +1 -0
  61. package/esm/services/orderCreator/__test__/orderCreator.test.d.ts +2 -0
  62. package/esm/services/orderCreator/__test__/orderCreator.test.d.ts.map +1 -0
  63. package/esm/services/orderCreator/__test__/stopLimitOrderCreator.test.d.ts +2 -0
  64. package/esm/services/orderCreator/__test__/stopLimitOrderCreator.test.d.ts.map +1 -0
  65. package/esm/services/orderCreator/__test__/stopMarketOrderCreator.test.d.ts +2 -0
  66. package/esm/services/orderCreator/__test__/stopMarketOrderCreator.test.d.ts.map +1 -0
  67. package/esm/services/orderCreator/__test__/tpslOrderCreator.test.d.ts +2 -0
  68. package/esm/services/orderCreator/__test__/tpslOrderCreator.test.d.ts.map +1 -0
  69. package/esm/services/orderCreator/__test__/tpslPositionOrderCreator.test.d.ts +2 -0
  70. package/esm/services/orderCreator/__test__/tpslPositionOrderCreator.test.d.ts.map +1 -0
  71. package/esm/services/orderCreator/baseAlgoCreator.d.ts +22 -0
  72. package/esm/services/orderCreator/baseAlgoCreator.d.ts.map +1 -0
  73. package/esm/services/orderCreator/baseAlgoCreator.js +57 -0
  74. package/esm/services/orderCreator/baseAlgoCreator.js.map +1 -0
  75. package/esm/services/orderCreator/baseCreator.d.ts +14 -0
  76. package/esm/services/orderCreator/baseCreator.d.ts.map +1 -0
  77. package/esm/services/orderCreator/baseCreator.js +92 -0
  78. package/esm/services/orderCreator/baseCreator.js.map +1 -0
  79. package/esm/services/orderCreator/factory.d.ts +7 -0
  80. package/esm/services/orderCreator/factory.d.ts.map +1 -0
  81. package/esm/services/orderCreator/factory.js +45 -0
  82. package/esm/services/orderCreator/factory.js.map +1 -0
  83. package/esm/services/orderCreator/fokCreator.d.ts +4 -0
  84. package/esm/services/orderCreator/fokCreator.d.ts.map +1 -0
  85. package/esm/services/orderCreator/fokCreator.js +5 -0
  86. package/esm/services/orderCreator/fokCreator.js.map +1 -0
  87. package/esm/services/orderCreator/generalCreator.d.ts +8 -0
  88. package/esm/services/orderCreator/generalCreator.d.ts.map +1 -0
  89. package/esm/services/orderCreator/generalCreator.js +15 -0
  90. package/esm/services/orderCreator/generalCreator.js.map +1 -0
  91. package/esm/services/orderCreator/interface.d.ts +23 -0
  92. package/esm/services/orderCreator/interface.d.ts.map +1 -0
  93. package/esm/services/orderCreator/interface.js +3 -0
  94. package/esm/services/orderCreator/interface.js.map +1 -0
  95. package/esm/services/orderCreator/iocCreator.d.ts +4 -0
  96. package/esm/services/orderCreator/iocCreator.d.ts.map +1 -0
  97. package/esm/services/orderCreator/iocCreator.js +5 -0
  98. package/esm/services/orderCreator/iocCreator.js.map +1 -0
  99. package/esm/services/orderCreator/limitOrderCreator.d.ts +8 -0
  100. package/esm/services/orderCreator/limitOrderCreator.d.ts.map +1 -0
  101. package/esm/services/orderCreator/limitOrderCreator.js +69 -0
  102. package/esm/services/orderCreator/limitOrderCreator.js.map +1 -0
  103. package/esm/services/orderCreator/marketOrderCreator.d.ts +24 -0
  104. package/esm/services/orderCreator/marketOrderCreator.d.ts.map +1 -0
  105. package/esm/services/orderCreator/marketOrderCreator.js +18 -0
  106. package/esm/services/orderCreator/marketOrderCreator.js.map +1 -0
  107. package/esm/services/orderCreator/postOnlyCreator.d.ts +4 -0
  108. package/esm/services/orderCreator/postOnlyCreator.d.ts.map +1 -0
  109. package/esm/services/orderCreator/postOnlyCreator.js +5 -0
  110. package/esm/services/orderCreator/postOnlyCreator.js.map +1 -0
  111. package/esm/services/orderCreator/stopLimitOrderCreator.d.ts +11 -0
  112. package/esm/services/orderCreator/stopLimitOrderCreator.d.ts.map +1 -0
  113. package/esm/services/orderCreator/stopLimitOrderCreator.js +84 -0
  114. package/esm/services/orderCreator/stopLimitOrderCreator.js.map +1 -0
  115. package/esm/services/orderCreator/stopMarketOrderCreator.d.ts +30 -0
  116. package/esm/services/orderCreator/stopMarketOrderCreator.d.ts.map +1 -0
  117. package/esm/services/orderCreator/stopMarketOrderCreator.js +46 -0
  118. package/esm/services/orderCreator/stopMarketOrderCreator.js.map +1 -0
  119. package/esm/services/orderCreator/tpslOrderCreator.d.ts +32 -0
  120. package/esm/services/orderCreator/tpslOrderCreator.d.ts.map +1 -0
  121. package/esm/services/orderCreator/tpslOrderCreator.js +88 -0
  122. package/esm/services/orderCreator/tpslOrderCreator.js.map +1 -0
  123. package/esm/services/orderCreator/tpslPositionOrderCreator.d.ts +33 -0
  124. package/esm/services/orderCreator/tpslPositionOrderCreator.d.ts.map +1 -0
  125. package/esm/services/orderCreator/tpslPositionOrderCreator.js +74 -0
  126. package/esm/services/orderCreator/tpslPositionOrderCreator.js.map +1 -0
  127. package/esm/services/orderMerge/algoOrderMergeHandler.d.ts +9 -0
  128. package/esm/services/orderMerge/algoOrderMergeHandler.d.ts.map +1 -0
  129. package/esm/services/orderMerge/algoOrderMergeHandler.js +38 -0
  130. package/esm/services/orderMerge/algoOrderMergeHandler.js.map +1 -0
  131. package/esm/services/orderMerge/baseMergeHandler.d.ts +22 -0
  132. package/esm/services/orderMerge/baseMergeHandler.d.ts.map +1 -0
  133. package/esm/services/orderMerge/baseMergeHandler.js +160 -0
  134. package/esm/services/orderMerge/baseMergeHandler.js.map +1 -0
  135. package/esm/services/orderMerge/interface.d.ts +8 -0
  136. package/esm/services/orderMerge/interface.d.ts.map +1 -0
  137. package/esm/services/orderMerge/interface.js +3 -0
  138. package/esm/services/orderMerge/interface.js.map +1 -0
  139. package/esm/services/orderMerge/regularOrderMergeHandler.d.ts +8 -0
  140. package/esm/services/orderMerge/regularOrderMergeHandler.d.ts.map +1 -0
  141. package/esm/services/orderMerge/regularOrderMergeHandler.js +15 -0
  142. package/esm/services/orderMerge/regularOrderMergeHandler.js.map +1 -0
  143. package/esm/usePoster.d.ts +3 -0
  144. package/esm/usePoster.d.ts.map +1 -1
  145. package/esm/usePoster.js +3 -1
  146. package/esm/usePoster.js.map +1 -1
  147. package/esm/utils/createOrder.d.ts +0 -55
  148. package/esm/utils/createOrder.d.ts.map +1 -1
  149. package/esm/utils/createOrder.js +0 -334
  150. package/esm/utils/createOrder.js.map +1 -1
  151. package/esm/utils/fokCreator.d.ts +1 -0
  152. package/esm/utils/fokCreator.d.ts.map +1 -0
  153. package/esm/utils/fokCreator.js +2 -0
  154. package/esm/utils/fokCreator.js.map +1 -0
  155. package/esm/utils/index.d.ts +5 -0
  156. package/esm/utils/index.d.ts.map +1 -0
  157. package/esm/utils/index.js +6 -0
  158. package/esm/utils/index.js.map +1 -0
  159. package/esm/utils/order.d.ts +2 -0
  160. package/esm/utils/order.d.ts.map +1 -0
  161. package/esm/utils/order.js +3 -0
  162. package/esm/utils/order.js.map +1 -0
  163. package/esm/utils/swr.d.ts +3 -1
  164. package/esm/utils/swr.d.ts.map +1 -1
  165. package/esm/utils/swr.js +123 -89
  166. package/esm/utils/swr.js.map +1 -1
  167. package/esm/utils/ws.d.ts +2 -0
  168. package/esm/utils/ws.d.ts.map +1 -0
  169. package/esm/utils/ws.js +9 -0
  170. package/esm/utils/ws.js.map +1 -0
  171. package/esm/version.d.ts +1 -1
  172. package/esm/version.js +2 -2
  173. package/esm/version.js.map +1 -1
  174. package/lib/dataProvider.d.ts.map +1 -1
  175. package/lib/dataProvider.js +0 -2
  176. package/lib/dataProvider.js.map +1 -1
  177. package/lib/index.d.ts +4 -3
  178. package/lib/index.d.ts.map +1 -1
  179. package/lib/index.js +10 -3
  180. package/lib/index.js.map +1 -1
  181. package/lib/orderly/orderlyHooks.d.ts +3 -2
  182. package/lib/orderly/orderlyHooks.d.ts.map +1 -1
  183. package/lib/orderly/orderlyHooks.js +6 -2
  184. package/lib/orderly/orderlyHooks.js.map +1 -1
  185. package/lib/orderly/useCollateral.js +2 -2
  186. package/lib/orderly/useCollateral.js.map +1 -1
  187. package/lib/orderly/useMarginRatio.js +1 -1
  188. package/lib/orderly/useMarginRatio.js.map +1 -1
  189. package/lib/orderly/useMaxQty.js +2 -2
  190. package/lib/orderly/useMaxQty.js.map +1 -1
  191. package/lib/orderly/useOrderEntry.d.ts.map +1 -1
  192. package/lib/orderly/useOrderEntry.js +14 -12
  193. package/lib/orderly/useOrderEntry.js.map +1 -1
  194. package/lib/orderly/useOrderEntryNext/index.d.ts +1 -0
  195. package/lib/orderly/useOrderEntryNext/index.d.ts.map +1 -0
  196. package/lib/orderly/useOrderEntryNext/index.js +3 -0
  197. package/lib/orderly/useOrderEntryNext/index.js.map +1 -0
  198. package/lib/orderly/{useOrderStream.d.ts → useOrderStream/useOrderStream.d.ts} +19 -12
  199. package/lib/orderly/useOrderStream/useOrderStream.d.ts.map +1 -0
  200. package/lib/orderly/{useOrderStream.js → useOrderStream/useOrderStream.js} +89 -25
  201. package/lib/orderly/useOrderStream/useOrderStream.js.map +1 -0
  202. package/lib/orderly/useOrderbookStream.d.ts.map +1 -1
  203. package/lib/orderly/useOrderbookStream.js +12 -5
  204. package/lib/orderly/useOrderbookStream.js.map +1 -1
  205. package/lib/orderly/{usePositionStream.d.ts → usePositionStream/usePositionStream.d.ts} +1 -1
  206. package/lib/orderly/usePositionStream/usePositionStream.d.ts.map +1 -0
  207. package/lib/orderly/{usePositionStream.js → usePositionStream/usePositionStream.js} +30 -22
  208. package/lib/orderly/usePositionStream/usePositionStream.js.map +1 -0
  209. package/lib/orderly/usePositionStream/utils.d.ts +8 -0
  210. package/lib/orderly/usePositionStream/utils.d.ts.map +1 -0
  211. package/lib/orderly/usePositionStream/utils.js +55 -0
  212. package/lib/orderly/usePositionStream/utils.js.map +1 -0
  213. package/lib/orderly/usePrivateDataObserver.d.ts.map +1 -1
  214. package/lib/orderly/usePrivateDataObserver.js +28 -41
  215. package/lib/orderly/usePrivateDataObserver.js.map +1 -1
  216. package/lib/orderly/useTakeProfitAndStopLoss/__test__/useTakeProfitAndStopLoss.test.d.ts +1 -0
  217. package/lib/orderly/useTakeProfitAndStopLoss/__test__/useTakeProfitAndStopLoss.test.d.ts.map +1 -0
  218. package/lib/orderly/useTakeProfitAndStopLoss/__test__/utils.test.d.ts +2 -0
  219. package/lib/orderly/useTakeProfitAndStopLoss/__test__/utils.test.d.ts.map +1 -0
  220. package/lib/orderly/useTakeProfitAndStopLoss/index.d.ts +32 -0
  221. package/lib/orderly/useTakeProfitAndStopLoss/index.d.ts.map +1 -0
  222. package/lib/orderly/useTakeProfitAndStopLoss/index.js +33 -0
  223. package/lib/orderly/useTakeProfitAndStopLoss/index.js.map +1 -0
  224. package/lib/orderly/useTakeProfitAndStopLoss/useTPSL.d.ts +59 -0
  225. package/lib/orderly/useTakeProfitAndStopLoss/useTPSL.d.ts.map +1 -0
  226. package/lib/orderly/useTakeProfitAndStopLoss/useTPSL.js +218 -0
  227. package/lib/orderly/useTakeProfitAndStopLoss/useTPSL.js.map +1 -0
  228. package/lib/orderly/useTakeProfitAndStopLoss/utils.d.ts +70 -0
  229. package/lib/orderly/useTakeProfitAndStopLoss/utils.d.ts.map +1 -0
  230. package/lib/orderly/useTakeProfitAndStopLoss/utils.js +252 -0
  231. package/lib/orderly/useTakeProfitAndStopLoss/utils.js.map +1 -0
  232. package/lib/services/orderCreator/__test__/limitOrderCreator.test.d.ts +2 -0
  233. package/lib/services/orderCreator/__test__/limitOrderCreator.test.d.ts.map +1 -0
  234. package/lib/services/orderCreator/__test__/orderCreator.test.d.ts +2 -0
  235. package/lib/services/orderCreator/__test__/orderCreator.test.d.ts.map +1 -0
  236. package/lib/services/orderCreator/__test__/stopLimitOrderCreator.test.d.ts +2 -0
  237. package/lib/services/orderCreator/__test__/stopLimitOrderCreator.test.d.ts.map +1 -0
  238. package/lib/services/orderCreator/__test__/stopMarketOrderCreator.test.d.ts +2 -0
  239. package/lib/services/orderCreator/__test__/stopMarketOrderCreator.test.d.ts.map +1 -0
  240. package/lib/services/orderCreator/__test__/tpslOrderCreator.test.d.ts +2 -0
  241. package/lib/services/orderCreator/__test__/tpslOrderCreator.test.d.ts.map +1 -0
  242. package/lib/services/orderCreator/__test__/tpslPositionOrderCreator.test.d.ts +2 -0
  243. package/lib/services/orderCreator/__test__/tpslPositionOrderCreator.test.d.ts.map +1 -0
  244. package/lib/services/orderCreator/baseAlgoCreator.d.ts +22 -0
  245. package/lib/services/orderCreator/baseAlgoCreator.d.ts.map +1 -0
  246. package/lib/services/orderCreator/baseAlgoCreator.js +67 -0
  247. package/lib/services/orderCreator/baseAlgoCreator.js.map +1 -0
  248. package/lib/services/orderCreator/baseCreator.d.ts +14 -0
  249. package/lib/services/orderCreator/baseCreator.d.ts.map +1 -0
  250. package/lib/services/orderCreator/baseCreator.js +102 -0
  251. package/lib/services/orderCreator/baseCreator.js.map +1 -0
  252. package/lib/services/orderCreator/factory.d.ts +7 -0
  253. package/lib/services/orderCreator/factory.d.ts.map +1 -0
  254. package/lib/services/orderCreator/factory.js +54 -0
  255. package/lib/services/orderCreator/factory.js.map +1 -0
  256. package/lib/services/orderCreator/fokCreator.d.ts +4 -0
  257. package/lib/services/orderCreator/fokCreator.d.ts.map +1 -0
  258. package/lib/services/orderCreator/fokCreator.js +15 -0
  259. package/lib/services/orderCreator/fokCreator.js.map +1 -0
  260. package/lib/services/orderCreator/generalCreator.d.ts +8 -0
  261. package/lib/services/orderCreator/generalCreator.d.ts.map +1 -0
  262. package/lib/services/orderCreator/generalCreator.js +25 -0
  263. package/lib/services/orderCreator/generalCreator.js.map +1 -0
  264. package/lib/services/orderCreator/interface.d.ts +23 -0
  265. package/lib/services/orderCreator/interface.d.ts.map +1 -0
  266. package/lib/services/orderCreator/interface.js +6 -0
  267. package/lib/services/orderCreator/interface.js.map +1 -0
  268. package/lib/services/orderCreator/iocCreator.d.ts +4 -0
  269. package/lib/services/orderCreator/iocCreator.d.ts.map +1 -0
  270. package/lib/services/orderCreator/iocCreator.js +15 -0
  271. package/lib/services/orderCreator/iocCreator.js.map +1 -0
  272. package/lib/services/orderCreator/limitOrderCreator.d.ts +8 -0
  273. package/lib/services/orderCreator/limitOrderCreator.d.ts.map +1 -0
  274. package/lib/services/orderCreator/limitOrderCreator.js +79 -0
  275. package/lib/services/orderCreator/limitOrderCreator.js.map +1 -0
  276. package/lib/services/orderCreator/marketOrderCreator.d.ts +24 -0
  277. package/lib/services/orderCreator/marketOrderCreator.d.ts.map +1 -0
  278. package/lib/services/orderCreator/marketOrderCreator.js +28 -0
  279. package/lib/services/orderCreator/marketOrderCreator.js.map +1 -0
  280. package/lib/services/orderCreator/postOnlyCreator.d.ts +4 -0
  281. package/lib/services/orderCreator/postOnlyCreator.d.ts.map +1 -0
  282. package/lib/services/orderCreator/postOnlyCreator.js +15 -0
  283. package/lib/services/orderCreator/postOnlyCreator.js.map +1 -0
  284. package/lib/services/orderCreator/stopLimitOrderCreator.d.ts +11 -0
  285. package/lib/services/orderCreator/stopLimitOrderCreator.d.ts.map +1 -0
  286. package/lib/services/orderCreator/stopLimitOrderCreator.js +93 -0
  287. package/lib/services/orderCreator/stopLimitOrderCreator.js.map +1 -0
  288. package/lib/services/orderCreator/stopMarketOrderCreator.d.ts +30 -0
  289. package/lib/services/orderCreator/stopMarketOrderCreator.d.ts.map +1 -0
  290. package/lib/services/orderCreator/stopMarketOrderCreator.js +56 -0
  291. package/lib/services/orderCreator/stopMarketOrderCreator.js.map +1 -0
  292. package/lib/services/orderCreator/tpslOrderCreator.d.ts +32 -0
  293. package/lib/services/orderCreator/tpslOrderCreator.d.ts.map +1 -0
  294. package/lib/services/orderCreator/tpslOrderCreator.js +94 -0
  295. package/lib/services/orderCreator/tpslOrderCreator.js.map +1 -0
  296. package/lib/services/orderCreator/tpslPositionOrderCreator.d.ts +33 -0
  297. package/lib/services/orderCreator/tpslPositionOrderCreator.d.ts.map +1 -0
  298. package/lib/services/orderCreator/tpslPositionOrderCreator.js +83 -0
  299. package/lib/services/orderCreator/tpslPositionOrderCreator.js.map +1 -0
  300. package/lib/services/orderMerge/algoOrderMergeHandler.d.ts +9 -0
  301. package/lib/services/orderMerge/algoOrderMergeHandler.d.ts.map +1 -0
  302. package/lib/services/orderMerge/algoOrderMergeHandler.js +48 -0
  303. package/lib/services/orderMerge/algoOrderMergeHandler.js.map +1 -0
  304. package/lib/services/orderMerge/baseMergeHandler.d.ts +22 -0
  305. package/lib/services/orderMerge/baseMergeHandler.d.ts.map +1 -0
  306. package/lib/services/orderMerge/baseMergeHandler.js +170 -0
  307. package/lib/services/orderMerge/baseMergeHandler.js.map +1 -0
  308. package/lib/services/orderMerge/interface.d.ts +8 -0
  309. package/lib/services/orderMerge/interface.d.ts.map +1 -0
  310. package/lib/services/orderMerge/interface.js +6 -0
  311. package/lib/services/orderMerge/interface.js.map +1 -0
  312. package/lib/services/orderMerge/regularOrderMergeHandler.d.ts +8 -0
  313. package/lib/services/orderMerge/regularOrderMergeHandler.d.ts.map +1 -0
  314. package/lib/services/orderMerge/regularOrderMergeHandler.js +25 -0
  315. package/lib/services/orderMerge/regularOrderMergeHandler.js.map +1 -0
  316. package/lib/usePoster.d.ts +3 -0
  317. package/lib/usePoster.d.ts.map +1 -1
  318. package/lib/usePoster.js +3 -1
  319. package/lib/usePoster.js.map +1 -1
  320. package/lib/utils/createOrder.d.ts +0 -55
  321. package/lib/utils/createOrder.d.ts.map +1 -1
  322. package/lib/utils/createOrder.js +3 -375
  323. package/lib/utils/createOrder.js.map +1 -1
  324. package/lib/utils/fokCreator.d.ts +1 -0
  325. package/lib/utils/fokCreator.d.ts.map +1 -0
  326. package/lib/utils/fokCreator.js +3 -0
  327. package/lib/utils/fokCreator.js.map +1 -0
  328. package/lib/utils/index.d.ts +5 -0
  329. package/lib/utils/index.d.ts.map +1 -0
  330. package/lib/utils/index.js +36 -0
  331. package/lib/utils/index.js.map +1 -0
  332. package/lib/utils/order.d.ts +2 -0
  333. package/lib/utils/order.d.ts.map +1 -0
  334. package/lib/utils/order.js +6 -0
  335. package/lib/utils/order.js.map +1 -0
  336. package/lib/utils/swr.d.ts +3 -1
  337. package/lib/utils/swr.d.ts.map +1 -1
  338. package/lib/utils/swr.js +128 -89
  339. package/lib/utils/swr.js.map +1 -1
  340. package/lib/utils/ws.d.ts +2 -0
  341. package/lib/utils/ws.d.ts.map +1 -0
  342. package/lib/utils/ws.js +19 -0
  343. package/lib/utils/ws.js.map +1 -0
  344. package/lib/version.d.ts +1 -1
  345. package/lib/version.js +2 -2
  346. package/lib/version.js.map +1 -1
  347. package/package.json +10 -8
  348. package/esm/orderly/useOrderStream.d.ts.map +0 -1
  349. package/esm/orderly/useOrderStream.js.map +0 -1
  350. package/esm/orderly/usePositionStream.d.ts.map +0 -1
  351. package/esm/orderly/usePositionStream.js.map +0 -1
  352. package/lib/orderly/useOrderStream.d.ts.map +0 -1
  353. package/lib/orderly/useOrderStream.js.map +0 -1
  354. package/lib/orderly/usePositionStream.d.ts.map +0 -1
  355. package/lib/orderly/usePositionStream.js.map +0 -1
@@ -0,0 +1,8 @@
1
+ import { API, AlgoOrderEntity } from "@orderly.network/types";
2
+ export declare const findTPSLFromOrders: (orders: API.AlgoOrder[], symbol: string) => Partial<AlgoOrderEntity> | undefined;
3
+ export declare const findTPSLFromOrder: (order: API.AlgoOrder) => {
4
+ tp_trigger_price?: number | undefined;
5
+ sl_trigger_price?: number | undefined;
6
+ };
7
+ export declare const findPositionTPSLFromOrders: (orders: API.AlgoOrder[], symbol: string) => API.AlgoOrder | undefined;
8
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/orderly/usePositionStream/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,GAAG,EACH,eAAe,EAIhB,MAAM,wBAAwB,CAAC;AAEhC,eAAO,MAAM,kBAAkB,WACrB,IAAI,SAAS,EAAE,UACf,MAAM,KACb,QAAQ,eAAe,CAAC,GAAG,SAO7B,CAAC;AAEF,eAAO,MAAM,iBAAiB,UACrB,IAAI,SAAS;;;CA6BrB,CAAC;AAEF,eAAO,MAAM,0BAA0B,WAC7B,IAAI,SAAS,EAAE,UACf,MAAM,KACb,IAAI,SAAS,GAAG,SAalB,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { AlgoOrderType, AlgoOrderRootType, OrderStatus } from "@orderly.network/types";
2
+ export const findTPSLFromOrders = (orders, symbol)=>{
3
+ const order = findPositionTPSLFromOrders(orders, symbol);
4
+ // console.log("!!!!!", order);
5
+ if (!order) return;
6
+ return findTPSLFromOrder(order);
7
+ };
8
+ export const findTPSLFromOrder = (order)=>{
9
+ let tp_trigger_price;
10
+ let sl_trigger_price;
11
+ const tpOrder = order.child_orders.find((order)=>order.algo_type === AlgoOrderType.TAKE_PROFIT);
12
+ const slOrder = order.child_orders.find((order)=>order.algo_type === AlgoOrderType.STOP_LOSS);
13
+ if (tpOrder) {
14
+ tp_trigger_price = tpOrder.trigger_price;
15
+ // take_profit_qty = tpOrder.quantity ;
16
+ }
17
+ if (slOrder) {
18
+ sl_trigger_price = slOrder.trigger_price;
19
+ // stop_loss_qty = slOrder.quantity;
20
+ }
21
+ return {
22
+ tp_trigger_price,
23
+ sl_trigger_price
24
+ };
25
+ };
26
+ export const findPositionTPSLFromOrders = (orders, symbol)=>{
27
+ return orders?.find((order)=>{
28
+ // console.log(order.symbol, symbol, order.algo_type);
29
+ return order.symbol === symbol && order.algo_type === AlgoOrderRootType.POSITIONAL_TP_SL && (order.root_algo_status === OrderStatus.NEW || order.root_algo_status === OrderStatus.REPLACED || order.root_algo_status === OrderStatus.PARTIAL_FILLED);
30
+ });
31
+ // return order;
32
+ };
33
+
34
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/orderly/usePositionStream/utils.ts"],"sourcesContent":["import {\n API,\n AlgoOrderEntity,\n AlgoOrderType,\n AlgoOrderRootType,\n OrderStatus,\n} from \"@orderly.network/types\";\n\nexport const findTPSLFromOrders = (\n orders: API.AlgoOrder[],\n symbol: string\n): Partial<AlgoOrderEntity> | undefined => {\n const order = findPositionTPSLFromOrders(orders, symbol);\n\n // console.log(\"!!!!!\", order);\n\n if (!order) return;\n return findTPSLFromOrder(order);\n};\n\nexport const findTPSLFromOrder = (\n order: API.AlgoOrder\n): {\n tp_trigger_price?: number;\n sl_trigger_price?: number;\n} => {\n let tp_trigger_price;\n\n let sl_trigger_price;\n\n const tpOrder = order.child_orders.find(\n (order: any) => order.algo_type === AlgoOrderType.TAKE_PROFIT\n );\n const slOrder = order.child_orders.find(\n (order: any) => order.algo_type === AlgoOrderType.STOP_LOSS\n );\n\n if (tpOrder) {\n tp_trigger_price = tpOrder.trigger_price;\n // take_profit_qty = tpOrder.quantity ;\n }\n if (slOrder) {\n sl_trigger_price = slOrder.trigger_price;\n // stop_loss_qty = slOrder.quantity;\n }\n\n return {\n tp_trigger_price,\n sl_trigger_price,\n };\n};\n\nexport const findPositionTPSLFromOrders = (\n orders: API.AlgoOrder[],\n symbol: string\n): API.AlgoOrder | undefined => {\n return orders?.find((order) => {\n // console.log(order.symbol, symbol, order.algo_type);\n return (\n order.symbol === symbol &&\n order.algo_type === AlgoOrderRootType.POSITIONAL_TP_SL &&\n (order.root_algo_status === OrderStatus.NEW ||\n order.root_algo_status === OrderStatus.REPLACED ||\n order.root_algo_status === OrderStatus.PARTIAL_FILLED)\n );\n });\n\n // return order;\n};\n"],"names":["AlgoOrderType","AlgoOrderRootType","OrderStatus","findTPSLFromOrders","orders","symbol","order","findPositionTPSLFromOrders","findTPSLFromOrder","tp_trigger_price","sl_trigger_price","tpOrder","child_orders","find","algo_type","TAKE_PROFIT","slOrder","STOP_LOSS","trigger_price","POSITIONAL_TP_SL","root_algo_status","NEW","REPLACED","PARTIAL_FILLED"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAGEA,aAAa,EACbC,iBAAiB,EACjBC,WAAW,QACN,yBAAyB;AAEhC,OAAO,MAAMC,qBAAqB,CAChCC,QACAC;IAEA,MAAMC,QAAQC,2BAA2BH,QAAQC;IAEjD,+BAA+B;IAE/B,IAAI,CAACC,OAAO;IACZ,OAAOE,kBAAkBF;AAC3B,EAAE;AAEF,OAAO,MAAME,oBAAoB,CAC/BF;IAKA,IAAIG;IAEJ,IAAIC;IAEJ,MAAMC,UAAUL,MAAMM,YAAY,CAACC,IAAI,CACrC,CAACP,QAAeA,MAAMQ,SAAS,KAAKd,cAAce,WAAW;IAE/D,MAAMC,UAAUV,MAAMM,YAAY,CAACC,IAAI,CACrC,CAACP,QAAeA,MAAMQ,SAAS,KAAKd,cAAciB,SAAS;IAG7D,IAAIN,SAAS;QACXF,mBAAmBE,QAAQO,aAAa;IACxC,wCAAwC;IAC1C;IACA,IAAIF,SAAS;QACXN,mBAAmBM,QAAQE,aAAa;IACxC,oCAAoC;IACtC;IAEA,OAAO;QACLT;QACAC;IACF;AACF,EAAE;AAEF,OAAO,MAAMH,6BAA6B,CACxCH,QACAC;IAEA,OAAOD,QAAQS,KAAK,CAACP;QACnB,sDAAsD;QACtD,OACEA,MAAMD,MAAM,KAAKA,UACjBC,MAAMQ,SAAS,KAAKb,kBAAkBkB,gBAAgB,IACrDb,CAAAA,MAAMc,gBAAgB,KAAKlB,YAAYmB,GAAG,IACzCf,MAAMc,gBAAgB,KAAKlB,YAAYoB,QAAQ,IAC/ChB,MAAMc,gBAAgB,KAAKlB,YAAYqB,cAAc,AAAD;IAE1D;AAEA,gBAAgB;AAClB,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"file":"usePrivateDataObserver.d.ts","sourceRoot":"","sources":["../../src/orderly/usePrivateDataObserver.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAIjD,eAAO,MAAM,sBAAsB;uBAEd,MAAM,KAAK,IAAI,MAAM,EAAE,cAAc,CAAC;UA4K1D,CAAC"}
1
+ {"version":3,"file":"usePrivateDataObserver.d.ts","sourceRoot":"","sources":["../../src/orderly/usePrivateDataObserver.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAMjD,eAAO,MAAM,sBAAsB;uBAEd,MAAM,KAAK,IAAI,MAAM,EAAE,cAAc,CAAC;UAgK1D,CAAC"}
@@ -1,39 +1,35 @@
1
- import { useEffect, useRef } from "react";
1
+ import { useEffect } from "react";
2
2
  import { useWS } from "../useWS";
3
3
  import { mutate } from "swr";
4
4
  import { useAccount } from "../useAccount";
5
5
  import { unstable_serialize } from "swr/infinite";
6
6
  import { useEventEmitter } from "../useEventEmitter";
7
- import { updateOrdersHandler } from "../utils/swr";
7
+ import { updateOrdersHandler, updateAlgoOrdersHandler } from "../utils/swr";
8
+ import { AlgoOrderMergeHandler } from "../services/orderMerge/algoOrderMergeHandler";
9
+ import { object2underscore } from "../utils/ws";
8
10
  export const usePrivateDataObserver = (options)=>{
9
11
  const ws = useWS();
10
12
  // const { mutate } = useSWRConfig();
11
13
  const ee = useEventEmitter();
12
14
  const { state } = useAccount();
13
15
  // TODO: remove this when the WS service provides the correct data
14
- const algoOrderCacheQuneue = useRef([]);
16
+ // const algoOrderCacheQuneue = useRef<API.AlgoOrder[]>([]);
15
17
  const updateOrders = (data, isAlgoOrder)=>{
16
- const map = options.getKeysMap("orders");
17
- // console.log("$$$$$$$$$$$$", data, algoOrderCacheQuneue.current);
18
- if (isAlgoOrder) {
19
- /// TODO: remove this when the WS service provides the correct data
20
- if (algoOrderCacheQuneue.current.length) {
21
- const index = algoOrderCacheQuneue.current.findIndex((item)=>item.order_id === data.algoOrderId);
22
- if (index > -1) {
23
- data = {
24
- ...data,
25
- ...algoOrderCacheQuneue.current[index]
26
- };
27
- algoOrderCacheQuneue.current.splice(index, 1);
28
- }
29
- }
30
- }
31
- map.forEach((getKey, key)=>{
18
+ const keysMap = options.getKeysMap("orders");
19
+ keysMap.forEach((getKey, key)=>{
32
20
  mutate(unstable_serialize((index, prevData)=>[
33
21
  getKey(index, prevData),
34
22
  state.accountId
35
23
  ]), (prevData)=>{
36
- return updateOrdersHandler(key, data, prevData);
24
+ try {
25
+ if (isAlgoOrder) {
26
+ const result = updateAlgoOrdersHandler(key, data, prevData);
27
+ return result;
28
+ }
29
+ return updateOrdersHandler(key, data, prevData);
30
+ } catch (error) {
31
+ return prevData;
32
+ }
37
33
  }, {
38
34
  revalidate: false
39
35
  });
@@ -43,9 +39,10 @@ export const usePrivateDataObserver = (options)=>{
43
39
  // ...data,
44
40
  // status: data.status || (data as WSMessage.AlgoOrder).algoStatus,
45
41
  // });
42
+ const formattedData = isAlgoOrder ? AlgoOrderMergeHandler.groupOrders(data) : object2underscore(data);
46
43
  ee.emit("orders:changed", {
47
- ...data,
48
- status: data.status || data.algoStatus
44
+ ...formattedData,
45
+ status: isAlgoOrder ? formattedData.algo_status : data.status
49
46
  });
50
47
  };
51
48
  // orders
@@ -65,17 +62,7 @@ export const usePrivateDataObserver = (options)=>{
65
62
  if (!state.accountId) return;
66
63
  const unsubscribe = ws.privateSubscribe("algoexecutionreport", {
67
64
  onMessage: (data)=>{
68
- setTimeout(()=>{
69
- if (Array.isArray(data)) {
70
- data.forEach((item)=>{
71
- updateOrders(item, true);
72
- // ee.emit("orders:changed", { ...item, status: item.algoStatus });
73
- });
74
- } else {
75
- updateOrders(data, true);
76
- // ee.emit("orders:changed", { ...data, status: data.algoStatus });
77
- }
78
- }, 100);
65
+ updateOrders(data, true);
79
66
  }
80
67
  });
81
68
  return ()=>unsubscribe?.();
@@ -138,16 +125,16 @@ export const usePrivateDataObserver = (options)=>{
138
125
  }, [
139
126
  state.accountId
140
127
  ]);
141
- // cache algo orders
142
- useEffect(()=>{
143
- const handler = (data)=>{
144
- algoOrderCacheQuneue.current.push(data);
145
- };
146
- ee.on("algoOrder:cache", handler);
147
- return ()=>{
148
- ee.off("algoOrder:cache", handler);
149
- };
150
- }, []);
128
+ // cache algo orders
129
+ // useEffect(() => {
130
+ // const handler = (data: API.AlgoOrder) => {
131
+ // algoOrderCacheQuneue.current.push(data);
132
+ // };
133
+ // ee.on("algoOrder:cache", handler);
134
+ // return () => {
135
+ // ee.off("algoOrder:cache", handler);
136
+ // };
137
+ // }, []);
151
138
  };
152
139
 
153
140
  //# sourceMappingURL=usePrivateDataObserver.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/orderly/usePrivateDataObserver.ts"],"sourcesContent":["import { useEffect, useRef } from \"react\";\nimport { useWS } from \"../useWS\";\nimport { mutate } from \"swr\";\nimport { WSMessage, API } from \"@orderly.network/types\";\nimport { useAccount } from \"../useAccount\";\nimport { unstable_serialize } from \"swr/infinite\";\nimport { useDebouncedCallback } from \"use-debounce\";\nimport { useEventEmitter } from \"../useEventEmitter\";\nimport { getKeyFunction } from \"../dataProvider\";\nimport { parseJSON } from \"../utils/json\";\nimport { updateOrdersHandler } from \"../utils/swr\";\n\nexport const usePrivateDataObserver = (options: {\n // onUpdateOrders: (data: any) => void;\n getKeysMap: (type: string) => Map<string, getKeyFunction>;\n}) => {\n const ws = useWS();\n // const { mutate } = useSWRConfig();\n const ee = useEventEmitter();\n const { state } = useAccount();\n\n // TODO: remove this when the WS service provides the correct data\n const algoOrderCacheQuneue = useRef<API.AlgoOrder[]>([]);\n\n const updateOrders = (\n data: WSMessage.AlgoOrder | WSMessage.Order,\n isAlgoOrder: boolean\n ) => {\n const map = options.getKeysMap(\"orders\");\n\n // console.log(\"$$$$$$$$$$$$\", data, algoOrderCacheQuneue.current);\n\n if (isAlgoOrder) {\n /// TODO: remove this when the WS service provides the correct data\n if (algoOrderCacheQuneue.current.length) {\n const index = algoOrderCacheQuneue.current.findIndex(\n (item: any) =>\n item.order_id === (data as WSMessage.AlgoOrder).algoOrderId\n );\n\n if (index > -1) {\n data = {\n ...data,\n ...algoOrderCacheQuneue.current[index],\n };\n algoOrderCacheQuneue.current.splice(index, 1);\n }\n }\n }\n\n map.forEach((getKey, key) => {\n mutate(\n unstable_serialize((index, prevData) => [\n getKey(index, prevData),\n state.accountId,\n ]),\n (prevData?: any[]) => {\n return updateOrdersHandler(key, data, prevData);\n },\n {\n revalidate: false,\n }\n );\n });\n\n // emit events;\n // ee.emit(\"orders:changed\", {\n // ...data,\n // status: data.status || (data as WSMessage.AlgoOrder).algoStatus,\n // });\n\n ee.emit(\"orders:changed\", {\n ...data,\n status: data.status || (data as WSMessage.AlgoOrder).algoStatus,\n });\n };\n\n // orders\n useEffect(() => {\n if (!state.accountId) return;\n const unsubscribe = ws.privateSubscribe(\"executionreport\", {\n onMessage: (data: any) => {\n updateOrders(data, false);\n },\n });\n\n return () => unsubscribe?.();\n }, [state.accountId]);\n\n // algo orders\n useEffect(() => {\n if (!state.accountId) return;\n const unsubscribe = ws.privateSubscribe(\"algoexecutionreport\", {\n onMessage: (data: any) => {\n setTimeout(() => {\n if (Array.isArray(data)) {\n data.forEach((item) => {\n updateOrders(item, true);\n\n // ee.emit(\"orders:changed\", { ...item, status: item.algoStatus });\n });\n } else {\n updateOrders(data, true);\n // ee.emit(\"orders:changed\", { ...data, status: data.algoStatus });\n }\n }, 100);\n },\n });\n\n return () => unsubscribe?.();\n }, [state.accountId]);\n\n // positions\n useEffect(() => {\n if (!state.accountId) return;\n const key = [\"/v1/positions\", state.accountId];\n const unsubscribe = ws.privateSubscribe(\"position\", {\n onMessage: (data: { positions: WSMessage.Position[] }) => {\n const { positions: nextPostions } = data;\n\n // console.log(\"ws----- positions data-----\", data);\n\n // updatePositions();\n\n mutate(\n key,\n (prevPositions: any) => {\n // return nextPostions;\n if (!!prevPositions) {\n return {\n ...prevPositions,\n rows: prevPositions.rows.map((row: any) => {\n const item = nextPostions.find(\n (item) => item.symbol === row.symbol\n );\n if (item) {\n return {\n symbol: item.symbol,\n position_qty: item.positionQty,\n cost_position: item.costPosition,\n last_sum_unitary_funding: item.lastSumUnitaryFunding,\n pending_long_qty: item.pendingLongQty,\n pending_short_qty: item.pendingShortQty,\n settle_price: item.settlePrice,\n average_open_price: item.averageOpenPrice,\n unsettled_pnl: item.unsettledPnl,\n mark_price: item.markPrice,\n est_liq_price: item.estLiqPrice,\n timestamp: Date.now(),\n imr: item.imr,\n mmr: item.mmr,\n IMR_withdraw_orders: item.imrwithOrders,\n MMR_with_orders: item.mmrwithOrders,\n pnl_24_h: item.pnl24H,\n fee_24_h: item.fee24H,\n };\n }\n\n return row;\n }),\n };\n }\n },\n {\n revalidate: false,\n }\n );\n },\n });\n return () => {\n unsubscribe?.();\n };\n }, [state.accountId]);\n\n // cache algo orders\n useEffect(() => {\n const handler = (data: API.AlgoOrder) => {\n algoOrderCacheQuneue.current.push(data);\n };\n\n ee.on(\"algoOrder:cache\", handler);\n\n return () => {\n ee.off(\"algoOrder:cache\", handler);\n };\n }, []);\n};\n"],"names":["useEffect","useRef","useWS","mutate","useAccount","unstable_serialize","useEventEmitter","updateOrdersHandler","usePrivateDataObserver","options","ws","ee","state","algoOrderCacheQuneue","updateOrders","data","isAlgoOrder","map","getKeysMap","current","length","index","findIndex","item","order_id","algoOrderId","splice","forEach","getKey","key","prevData","accountId","revalidate","emit","status","algoStatus","unsubscribe","privateSubscribe","onMessage","setTimeout","Array","isArray","positions","nextPostions","prevPositions","rows","row","find","symbol","position_qty","positionQty","cost_position","costPosition","last_sum_unitary_funding","lastSumUnitaryFunding","pending_long_qty","pendingLongQty","pending_short_qty","pendingShortQty","settle_price","settlePrice","average_open_price","averageOpenPrice","unsettled_pnl","unsettledPnl","mark_price","markPrice","est_liq_price","estLiqPrice","timestamp","Date","now","imr","mmr","IMR_withdraw_orders","imrwithOrders","MMR_with_orders","mmrwithOrders","pnl_24_h","pnl24H","fee_24_h","fee24H","handler","push","on","off"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../src/orderly/usePrivateDataObserver.ts"],"sourcesContent":["import { useEffect, useRef } from \"react\";\nimport { useWS } from \"../useWS\";\nimport { mutate } from \"swr\";\nimport { WSMessage, API } from \"@orderly.network/types\";\nimport { useAccount } from \"../useAccount\";\nimport { unstable_serialize } from \"swr/infinite\";\nimport { useDebouncedCallback } from \"use-debounce\";\nimport { useEventEmitter } from \"../useEventEmitter\";\nimport { getKeyFunction } from \"../dataProvider\";\nimport { parseJSON } from \"../utils/json\";\nimport { updateOrdersHandler, updateAlgoOrdersHandler } from \"../utils/swr\";\nimport { AlgoOrderMergeHandler } from \"../services/orderMerge/algoOrderMergeHandler\";\nimport { object2underscore } from \"../utils/ws\";\n\nexport const usePrivateDataObserver = (options: {\n // onUpdateOrders: (data: any) => void;\n getKeysMap: (type: string) => Map<string, getKeyFunction>;\n}) => {\n const ws = useWS();\n // const { mutate } = useSWRConfig();\n const ee = useEventEmitter();\n const { state } = useAccount();\n\n // TODO: remove this when the WS service provides the correct data\n // const algoOrderCacheQuneue = useRef<API.AlgoOrder[]>([]);\n\n const updateOrders = (\n data: WSMessage.AlgoOrder[] | WSMessage.Order,\n isAlgoOrder: boolean\n ) => {\n const keysMap = options.getKeysMap(\"orders\");\n\n keysMap.forEach((getKey, key) => {\n mutate(\n unstable_serialize((index, prevData) => [\n getKey(index, prevData),\n state.accountId,\n ]),\n (prevData?: any[]) => {\n try {\n if (isAlgoOrder) {\n const result = updateAlgoOrdersHandler(\n key,\n data as WSMessage.AlgoOrder[],\n prevData!\n );\n\n return result;\n }\n return updateOrdersHandler(key, data as WSMessage.Order, prevData);\n } catch (error) {\n return prevData;\n }\n },\n {\n revalidate: false,\n }\n );\n });\n\n // emit events;\n // ee.emit(\"orders:changed\", {\n // ...data,\n // status: data.status || (data as WSMessage.AlgoOrder).algoStatus,\n // });\n\n const formattedData = isAlgoOrder\n ? AlgoOrderMergeHandler.groupOrders(data as WSMessage.AlgoOrder[])\n : object2underscore(data);\n\n ee.emit(\"orders:changed\", {\n ...formattedData,\n status: isAlgoOrder\n ? formattedData.algo_status\n : (data as WSMessage.Order).status,\n });\n };\n\n // orders\n useEffect(() => {\n if (!state.accountId) return;\n const unsubscribe = ws.privateSubscribe(\"executionreport\", {\n onMessage: (data: any) => {\n updateOrders(data, false);\n },\n });\n\n return () => unsubscribe?.();\n }, [state.accountId]);\n\n // algo orders\n useEffect(() => {\n if (!state.accountId) return;\n const unsubscribe = ws.privateSubscribe(\"algoexecutionreport\", {\n onMessage: (data: any) => {\n updateOrders(data, true);\n },\n });\n\n return () => unsubscribe?.();\n }, [state.accountId]);\n\n // positions\n useEffect(() => {\n if (!state.accountId) return;\n const key = [\"/v1/positions\", state.accountId];\n const unsubscribe = ws.privateSubscribe(\"position\", {\n onMessage: (data: { positions: WSMessage.Position[] }) => {\n const { positions: nextPostions } = data;\n\n // console.log(\"ws----- positions data-----\", data);\n\n // updatePositions();\n\n mutate(\n key,\n (prevPositions: any) => {\n // return nextPostions;\n if (!!prevPositions) {\n return {\n ...prevPositions,\n rows: prevPositions.rows.map((row: any) => {\n const item = nextPostions.find(\n (item) => item.symbol === row.symbol\n );\n if (item) {\n return {\n symbol: item.symbol,\n position_qty: item.positionQty,\n cost_position: item.costPosition,\n last_sum_unitary_funding: item.lastSumUnitaryFunding,\n pending_long_qty: item.pendingLongQty,\n pending_short_qty: item.pendingShortQty,\n settle_price: item.settlePrice,\n average_open_price: item.averageOpenPrice,\n unsettled_pnl: item.unsettledPnl,\n mark_price: item.markPrice,\n est_liq_price: item.estLiqPrice,\n timestamp: Date.now(),\n imr: item.imr,\n mmr: item.mmr,\n IMR_withdraw_orders: item.imrwithOrders,\n MMR_with_orders: item.mmrwithOrders,\n pnl_24_h: item.pnl24H,\n fee_24_h: item.fee24H,\n };\n }\n\n return row;\n }),\n };\n }\n },\n {\n revalidate: false,\n }\n );\n },\n });\n return () => {\n unsubscribe?.();\n };\n }, [state.accountId]);\n\n // cache algo orders\n // useEffect(() => {\n // const handler = (data: API.AlgoOrder) => {\n // algoOrderCacheQuneue.current.push(data);\n // };\n\n // ee.on(\"algoOrder:cache\", handler);\n\n // return () => {\n // ee.off(\"algoOrder:cache\", handler);\n // };\n // }, []);\n};\n"],"names":["useEffect","useWS","mutate","useAccount","unstable_serialize","useEventEmitter","updateOrdersHandler","updateAlgoOrdersHandler","AlgoOrderMergeHandler","object2underscore","usePrivateDataObserver","options","ws","ee","state","updateOrders","data","isAlgoOrder","keysMap","getKeysMap","forEach","getKey","key","index","prevData","accountId","result","error","revalidate","formattedData","groupOrders","emit","status","algo_status","unsubscribe","privateSubscribe","onMessage","positions","nextPostions","prevPositions","rows","map","row","item","find","symbol","position_qty","positionQty","cost_position","costPosition","last_sum_unitary_funding","lastSumUnitaryFunding","pending_long_qty","pendingLongQty","pending_short_qty","pendingShortQty","settle_price","settlePrice","average_open_price","averageOpenPrice","unsettled_pnl","unsettledPnl","mark_price","markPrice","est_liq_price","estLiqPrice","timestamp","Date","now","imr","mmr","IMR_withdraw_orders","imrwithOrders","MMR_with_orders","mmrwithOrders","pnl_24_h","pnl24H","fee_24_h","fee24H"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=useTakeProfitAndStopLoss.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTakeProfitAndStopLoss.test.d.ts","sourceRoot":"","sources":["../../../../src/orderly/useTakeProfitAndStopLoss/__test__/useTakeProfitAndStopLoss.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=utils.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.test.d.ts","sourceRoot":"","sources":["../../../../src/orderly/useTakeProfitAndStopLoss/__test__/utils.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,32 @@
1
+ import { API, AlgoOrderEntity } from "@orderly.network/types";
2
+ export declare const useStopOrder: (position: Partial<API.PositionTPSLExt> & Pick<API.PositionTPSLExt, "symbol" | "average_open_price" | "position_qty">, options?: {
3
+ /**
4
+ * You can set the default value for the take profit and stop loss order,
5
+ * it is usually used when editing order
6
+ */
7
+ defaultOrder?: API.AlgoOrder;
8
+ }) => [Partial<import("@orderly.network/types").Optional<import("@orderly.network/types").BaseAlgoOrderEntity<import("@orderly.network/types").AlgoOrderRootType.TP_SL & {
9
+ tp_pnl: number;
10
+ tp_offset: number;
11
+ tp_offset_percentage: number;
12
+ sl_pnl: number;
13
+ sl_offset: number;
14
+ sl_offset_percentage: number;
15
+ }>, "type" | "side" | "order_type" | "trigger_price">>, {
16
+ setValue: (key: string, value: string | number) => void;
17
+ setValues: (values: Partial<Partial<import("@orderly.network/types").Optional<import("@orderly.network/types").BaseAlgoOrderEntity<import("@orderly.network/types").AlgoOrderRootType.TP_SL & {
18
+ tp_pnl: number;
19
+ tp_offset: number;
20
+ tp_offset_percentage: number;
21
+ sl_pnl: number;
22
+ sl_offset: number;
23
+ sl_offset_percentage: number;
24
+ }>, "type" | "side" | "order_type" | "trigger_price">>>) => void;
25
+ submit: () => Promise<void>;
26
+ create: () => Promise<void>;
27
+ update: (orderId: number) => Promise<any>;
28
+ errors: import("./useTPSL").ValidateError | null;
29
+ validate: () => Promise<AlgoOrderEntity<import("@orderly.network/types").AlgoOrderRootType.TP_SL | import("@orderly.network/types").AlgoOrderRootType.POSITIONAL_TP_SL>>;
30
+ }];
31
+ export type { ComputedAlgoOrder } from "./useTPSL";
32
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/orderly/useTakeProfitAndStopLoss/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,eAAe,EAAY,MAAM,wBAAwB,CAAC;AAIxE,eAAO,MAAM,YAAY,aAIb,QAAQ,IAAI,eAAe,CAAC,GACpC,KAAK,IAAI,eAAe,EAAE,QAAQ,GAAG,oBAAoB,GAAG,cAAc,CAAC,YACnE;IACR;;;OAGG;IACH,YAAY,CAAC,EAAE,IAAI,SAAS,CAAC;CAC9B;;;;;;;;;;;;;;;;;;;;;;EAuBF,CAAC;AAEF,YAAY,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { SDKError } from "@orderly.network/types";
2
+ import { useTaskProfitAndStopLossInternal } from "./useTPSL";
3
+ export const useStopOrder = (/**
4
+ * Position that needs to set take profit and stop loss
5
+ */ position, options)=>{
6
+ if (!position) {
7
+ throw new SDKError("Position is required");
8
+ }
9
+ if (!position.symbol) {
10
+ throw new SDKError("Symbol is required");
11
+ }
12
+ if (typeof position.average_open_price === "undefined") {
13
+ throw new SDKError("Average open price is required");
14
+ }
15
+ if (typeof position.position_qty === "undefined") {
16
+ throw new SDKError("Position quantity is required");
17
+ }
18
+ // const { data: markPrice } = useMarkPrice(position.symbol);
19
+ const result = useTaskProfitAndStopLossInternal(position, options);
20
+ return result;
21
+ };
22
+
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/orderly/useTakeProfitAndStopLoss/index.ts"],"sourcesContent":["import { API, AlgoOrderEntity, SDKError } from \"@orderly.network/types\";\nimport { useTaskProfitAndStopLossInternal } from \"./useTPSL\";\nimport { useMarkPrice } from \"../useMarkPrice\";\n\nexport const useStopOrder = (\n /**\n * Position that needs to set take profit and stop loss\n */\n position: Partial<API.PositionTPSLExt> &\n Pick<API.PositionTPSLExt, \"symbol\" | \"average_open_price\" | \"position_qty\">,\n options?: {\n /**\n * You can set the default value for the take profit and stop loss order,\n * it is usually used when editing order\n */\n defaultOrder?: API.AlgoOrder;\n }\n): ReturnType<typeof useTaskProfitAndStopLossInternal> => {\n if (!position) {\n throw new SDKError(\"Position is required\");\n }\n\n if (!position.symbol) {\n throw new SDKError(\"Symbol is required\");\n }\n\n if (typeof position.average_open_price === \"undefined\") {\n throw new SDKError(\"Average open price is required\");\n }\n\n if (typeof position.position_qty === \"undefined\") {\n throw new SDKError(\"Position quantity is required\");\n }\n\n // const { data: markPrice } = useMarkPrice(position.symbol);\n\n const result = useTaskProfitAndStopLossInternal(position, options);\n\n return result;\n};\n\nexport type { ComputedAlgoOrder } from \"./useTPSL\";\n"],"names":["SDKError","useTaskProfitAndStopLossInternal","useStopOrder","position","options","symbol","average_open_price","position_qty","result"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAA+BA,QAAQ,QAAQ,yBAAyB;AACxE,SAASC,gCAAgC,QAAQ,YAAY;AAG7D,OAAO,MAAMC,eAAe,CAC1B;;GAEC,GACDC,UAEAC;IAQA,IAAI,CAACD,UAAU;QACb,MAAM,IAAIH,SAAS;IACrB;IAEA,IAAI,CAACG,SAASE,MAAM,EAAE;QACpB,MAAM,IAAIL,SAAS;IACrB;IAEA,IAAI,OAAOG,SAASG,kBAAkB,KAAK,aAAa;QACtD,MAAM,IAAIN,SAAS;IACrB;IAEA,IAAI,OAAOG,SAASI,YAAY,KAAK,aAAa;QAChD,MAAM,IAAIP,SAAS;IACrB;IAEA,6DAA6D;IAE7D,MAAMQ,SAASP,iCAAiCE,UAAUC;IAE1D,OAAOI;AACT,EAAE"}
@@ -0,0 +1,59 @@
1
+ import { API, AlgoOrderEntity } from "@orderly.network/types";
2
+ import { AlgoOrderRootType } from "@orderly.network/types";
3
+ export type ComputedAlgoOrder = Partial<AlgoOrderEntity<AlgoOrderRootType.TP_SL & {
4
+ /**
5
+ * Computed take profit
6
+ */
7
+ tp_pnl: number;
8
+ tp_offset: number;
9
+ tp_offset_percentage: number;
10
+ /**
11
+ * Computed stop loss
12
+ */
13
+ sl_pnl: number;
14
+ sl_offset: number;
15
+ sl_offset_percentage: number;
16
+ }>>;
17
+ export type ValidateError = {
18
+ [P in keyof ComputedAlgoOrder]?: {
19
+ type: string;
20
+ message: string;
21
+ };
22
+ };
23
+ /**
24
+ * @hidden
25
+ */
26
+ export declare const useTaskProfitAndStopLossInternal: (position: Partial<API.PositionTPSLExt> & Pick<API.PositionTPSLExt, "symbol" | "average_open_price" | "position_qty">, options?: {
27
+ defaultOrder?: API.AlgoOrder;
28
+ }) => [Partial<import("@orderly.network/types").Optional<import("@orderly.network/types").BaseAlgoOrderEntity<AlgoOrderRootType.TP_SL & {
29
+ /**
30
+ * Computed take profit
31
+ */
32
+ tp_pnl: number;
33
+ tp_offset: number;
34
+ tp_offset_percentage: number;
35
+ /**
36
+ * Computed stop loss
37
+ */
38
+ sl_pnl: number;
39
+ sl_offset: number;
40
+ sl_offset_percentage: number;
41
+ }>, "type" | "side" | "order_type" | "trigger_price">>, {
42
+ /**
43
+ * Update the take profit and stop loss order, this will merge the new data with the old one
44
+ */
45
+ setValue: (key: string, value: number | string) => void;
46
+ setValues: (values: Partial<ComputedAlgoOrder>) => void;
47
+ /**
48
+ * Submit the take profit and stop loss order
49
+ */
50
+ submit: () => Promise<void>;
51
+ /**
52
+ * Create the take profit and stop loss order, auto-detect the order type
53
+ */
54
+ create: () => Promise<void>;
55
+ update: (orderId: number) => Promise<any>;
56
+ errors: ValidateError | null;
57
+ validate: () => Promise<AlgoOrderEntity<AlgoOrderRootType.POSITIONAL_TP_SL | AlgoOrderRootType.TP_SL>>;
58
+ }];
59
+ //# sourceMappingURL=useTPSL.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTPSL.d.ts","sourceRoot":"","sources":["../../../src/orderly/useTakeProfitAndStopLoss/useTPSL.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,GAAG,EACH,eAAe,EAGhB,MAAM,wBAAwB,CAAC;AAIhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAO3D,MAAM,MAAM,iBAAiB,GAAG,OAAO,CACrC,eAAe,CACb,iBAAiB,CAAC,KAAK,GAAG;IACxB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,MAAM,CAAC;CAC9B,CACF,CACF,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;KACzB,CAAC,IAAI,MAAM,iBAAiB,CAAC,CAAC,EAAE;QAC/B,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB;CACF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gCAAgC,aACjC,QAAQ,IAAI,eAAe,CAAC,GACpC,KAAK,IAAI,eAAe,EAAE,QAAQ,GAAG,oBAAoB,GAAG,cAAc,CAAC,YACnE;IACR,YAAY,CAAC,EAAE,IAAI,SAAS,CAAC;CAC9B;IAhCG;;OAEG;YACK,MAAM;eACH,MAAM;0BACK,MAAM;IAE5B;;OAEG;YACK,MAAM;eACH,MAAM;0BACK,MAAM;;IAwB9B;;OAEG;oBACa,MAAM,SAAS,MAAM,GAAG,MAAM,KAAK,IAAI;wBACnC,QAAQ,iBAAiB,CAAC,KAAK,IAAI;IAEvD;;OAEG;YACK,MAAM,QAAQ,IAAI,CAAC;IAC3B;;OAEG;YACK,MAAM,QAAQ,IAAI,CAAC;sBACT,MAAM,KAAK,QAAQ,GAAG,CAAC;YACjC,aAAa,GAAG,IAAI;cAClB,MAAM,QACd,gBACE,kBAAkB,gBAAgB,GAAG,kBAAkB,KAAK,CAC7D,CACF;EAgSJ,CAAC"}
@@ -0,0 +1,211 @@
1
+ import { useEffect, useState } from "react";
2
+ import { OrderSide, SDKError } from "@orderly.network/types";
3
+ import { calculateHelper } from "./utils";
4
+ import { useMutation } from "../../useMutation";
5
+ import { OrderFactory } from "../../services/orderCreator/factory";
6
+ import { AlgoOrderRootType } from "@orderly.network/types";
7
+ import { findTPSLFromOrder } from "../usePositionStream/utils";
8
+ import { useSymbolsInfo } from "../useSymbolsInfo";
9
+ import { useMarkPrice } from "../useMarkPrice";
10
+ import { omit } from "ramda";
11
+ /**
12
+ * @hidden
13
+ */ export const useTaskProfitAndStopLossInternal = (position, options)=>{
14
+ const [order, setOrder] = useState({
15
+ algo_order_id: options?.defaultOrder?.algo_order_id,
16
+ symbol: position.symbol,
17
+ side: Number(position.position_qty) > 0 ? OrderSide.BUY : OrderSide.SELL,
18
+ quantity: options?.defaultOrder?.quantity || Math.abs(position.position_qty),
19
+ algo_type: options?.defaultOrder?.algo_type
20
+ });
21
+ const symbolInfo = useSymbolsInfo()[position.symbol]();
22
+ const { data: markPrice } = useMarkPrice(order.symbol);
23
+ const [doCreateOrder] = useMutation("/v1/algo/order");
24
+ const [doUpdateOrder] = useMutation("/v1/algo/order", "PUT");
25
+ const [doDeleteOrder] = useMutation("/v1/algo/order", "DELETE");
26
+ const [errors, setErrors] = useState(null);
27
+ useEffect(()=>{
28
+ if (!options?.defaultOrder) return;
29
+ const trigger_prices = findTPSLFromOrder(options.defaultOrder);
30
+ if (trigger_prices.tp_trigger_price) {
31
+ setOrderValue("tp_trigger_price", trigger_prices.tp_trigger_price, {
32
+ ignoreValidate: true
33
+ });
34
+ }
35
+ if (trigger_prices.sl_trigger_price) {
36
+ setOrderValue("sl_trigger_price", trigger_prices.sl_trigger_price, {
37
+ ignoreValidate: true
38
+ });
39
+ }
40
+ }, []);
41
+ const _setOrderValue = (key, value, options)=>{
42
+ ;
43
+ setOrder((prev)=>{
44
+ const side = position.position_qty > 0 ? OrderSide.BUY : OrderSide.SELL;
45
+ if (key === "sl_pnl") {
46
+ value = value ? `-${value}` : "";
47
+ }
48
+ const newValue = calculateHelper(key, {
49
+ key,
50
+ value,
51
+ entryPrice: position.average_open_price,
52
+ qty: side === OrderSide.BUY ? Number(prev.quantity) : -Number(prev.quantity),
53
+ orderSide: side
54
+ }, {
55
+ symbol: symbolInfo
56
+ });
57
+ ;
58
+ return {
59
+ ...prev,
60
+ ...newValue,
61
+ ignoreValidate: options?.ignoreValidate
62
+ };
63
+ });
64
+ };
65
+ const setOrderValue = async (key, value, options)=>{
66
+ if (key === "quantity") {
67
+ setOrder((prev)=>({
68
+ ...prev,
69
+ quantity: value
70
+ }));
71
+ if (typeof order.sl_trigger_price !== "undefined") {
72
+ _setOrderValue("sl_trigger_price", order.sl_trigger_price, {
73
+ ignoreValidate: true
74
+ });
75
+ }
76
+ if (typeof order.tp_trigger_price !== "undefined") {
77
+ _setOrderValue("tp_trigger_price", order.tp_trigger_price, {
78
+ ignoreValidate: true
79
+ });
80
+ }
81
+ return;
82
+ }
83
+ _setOrderValue(key, value, options);
84
+ };
85
+ /**
86
+ * calculate value config
87
+ */ const valueConfig = {
88
+ symbol: symbolInfo,
89
+ maxQty: Math.abs(position.position_qty),
90
+ markPrice
91
+ };
92
+ // auto validate when order changed
93
+ useEffect(()=>{
94
+ requestAnimationFrame(()=>{
95
+ if (order.ignoreValidate) return;
96
+ const orderCreator = getOrderCreator();
97
+ orderCreator.validate(order, valueConfig).then((errors)=>{
98
+ setErrors(errors);
99
+ });
100
+ });
101
+ }, [
102
+ order,
103
+ valueConfig.markPrice,
104
+ order.quantity
105
+ ]);
106
+ const setValues = (values)=>{
107
+ const keys = Object.keys(values);
108
+ keys.forEach((key)=>{
109
+ setOrderValue(key, values[key]);
110
+ });
111
+ };
112
+ const validate = ()=>{
113
+ const orderCreator = getOrderCreator();
114
+ return new Promise((resolve, reject)=>{
115
+ return orderCreator.validate(order, valueConfig).then((errors)=>{
116
+ ;
117
+ if (errors) {
118
+ setErrors(errors);
119
+ return reject(errors);
120
+ }
121
+ resolve(orderCreator.create(order, valueConfig));
122
+ });
123
+ });
124
+ };
125
+ useEffect(()=>{
126
+ // setError(validate());
127
+ }, [
128
+ order
129
+ ]);
130
+ const compare = ()=>{
131
+ const quantityNum = Number(order.quantity);
132
+ if (isNaN(quantityNum)) return false;
133
+ return quantityNum === Math.abs(Number(position.position_qty));
134
+ };
135
+ const getOrderCreator = ()=>{
136
+ // if the order is existed, and the order type is POSITIONAL_TP_SL, always return POSITIONAL_TP_SL
137
+ // else use qty to determine the order type
138
+ if (options?.defaultOrder?.algo_type === AlgoOrderRootType.TP_SL) {
139
+ return OrderFactory.create(AlgoOrderRootType.TP_SL);
140
+ }
141
+ return OrderFactory.create(compare() ? AlgoOrderRootType.POSITIONAL_TP_SL : AlgoOrderRootType.TP_SL);
142
+ };
143
+ const submit = async ()=>{
144
+ const defaultOrder = options?.defaultOrder;
145
+ const orderId = defaultOrder?.algo_order_id;
146
+ const algoType = defaultOrder?.algo_type;
147
+ // if algo_order_id is not existed, create new order
148
+ if (!orderId) {
149
+ return createOrder();
150
+ }
151
+ // if algo_order_id is existed and algoType = POSITION_TP_SL
152
+ if (algoType === AlgoOrderRootType.POSITIONAL_TP_SL) {
153
+ // if order.qty = position.qty, update order
154
+ if (compare()) {
155
+ return updateOrder(orderId);
156
+ }
157
+ // if order.qty != position.qty, create new tp/sl order
158
+ return createOrder();
159
+ }
160
+ // if algo_order_id is existed and algoType = TP_SL, delete order and create new order
161
+ return updateOrder(orderId);
162
+ };
163
+ const createOrder = ()=>{
164
+ const orderCreator = getOrderCreator();
165
+ const orderBody = orderCreator.create(order, valueConfig);
166
+ if (orderBody.child_orders.length === 0) {
167
+ throw new SDKError("No child orders");
168
+ }
169
+ return doCreateOrder(orderBody);
170
+ };
171
+ const deleteOrder = (orderId, symbol)=>{
172
+ return doDeleteOrder(null, {
173
+ order_id: orderId,
174
+ symbol
175
+ });
176
+ };
177
+ const updateOrder = (orderId)=>{
178
+ const orderCreator = getOrderCreator();
179
+ const [updatedOrderEntity, orderEntity] = orderCreator.crateUpdateOrder(// @ts-ignore
180
+ order, options?.defaultOrder, valueConfig);
181
+ if (updatedOrderEntity.child_orders.length === 0) {
182
+ return Promise.resolve("Not any order needs to update");
183
+ }
184
+ const needDelete = orderEntity.child_orders.filter((order)=>typeof order.is_activated === "boolean" && !order.is_activated).length === 2;
185
+ if (needDelete) {
186
+ return deleteOrder(orderId, order.symbol);
187
+ }
188
+ return doUpdateOrder({
189
+ order_id: orderId,
190
+ ...updatedOrderEntity
191
+ });
192
+ };
193
+ return [
194
+ omit([
195
+ "ignoreValidate"
196
+ ], order),
197
+ {
198
+ submit,
199
+ create: submit,
200
+ update: updateOrder,
201
+ setValue: setOrderValue,
202
+ setValues,
203
+ // createPositionTPSL: submit,
204
+ // createTPSL: submit,
205
+ validate,
206
+ errors
207
+ }
208
+ ];
209
+ };
210
+
211
+ //# sourceMappingURL=useTPSL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/orderly/useTakeProfitAndStopLoss/useTPSL.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\nimport {\n API,\n AlgoOrderEntity,\n OrderSide,\n SDKError,\n} from \"@orderly.network/types\";\nimport { UpdateOrderKey, calculateHelper } from \"./utils\";\nimport { useMutation } from \"../../useMutation\";\nimport { OrderFactory } from \"../../services/orderCreator/factory\";\nimport { AlgoOrderRootType } from \"@orderly.network/types\";\nimport { TPSLPositionOrderCreator } from \"../../services/orderCreator/tpslPositionOrderCreator\";\nimport { findTPSLFromOrder } from \"../usePositionStream/utils\";\nimport { useSymbolsInfo } from \"../useSymbolsInfo\";\nimport { useMarkPrice } from \"../useMarkPrice\";\nimport { omit } from \"ramda\";\n\nexport type ComputedAlgoOrder = Partial<\n AlgoOrderEntity<\n AlgoOrderRootType.TP_SL & {\n /**\n * Computed take profit\n */\n tp_pnl: number;\n tp_offset: number;\n tp_offset_percentage: number;\n\n /**\n * Computed stop loss\n */\n sl_pnl: number;\n sl_offset: number;\n sl_offset_percentage: number;\n }\n >\n>;\n\nexport type ValidateError = {\n [P in keyof ComputedAlgoOrder]?: {\n type: string;\n message: string;\n };\n};\n\n/**\n * @hidden\n */\nexport const useTaskProfitAndStopLossInternal = (\n position: Partial<API.PositionTPSLExt> &\n Pick<API.PositionTPSLExt, \"symbol\" | \"average_open_price\" | \"position_qty\">,\n options?: {\n defaultOrder?: API.AlgoOrder;\n }\n): [\n ComputedAlgoOrder,\n {\n /**\n * Update the take profit and stop loss order, this will merge the new data with the old one\n */\n setValue: (key: string, value: number | string) => void;\n setValues: (values: Partial<ComputedAlgoOrder>) => void;\n // getOrderEntity: () => AlgoOrderEntity<AlgoOrderRootType.TP_SL|AlgoOrderRootType.POSITIONAL_TP_SL>;\n /**\n * Submit the take profit and stop loss order\n */\n submit: () => Promise<void>;\n /**\n * Create the take profit and stop loss order, auto-detect the order type\n */\n create: () => Promise<void>;\n update: (orderId: number) => Promise<any>;\n errors: ValidateError | null;\n validate: () => Promise<\n AlgoOrderEntity<\n AlgoOrderRootType.POSITIONAL_TP_SL | AlgoOrderRootType.TP_SL\n >\n >;\n }\n] => {\n const [order, setOrder] = useState<\n ComputedAlgoOrder & {\n ignoreValidate?: boolean;\n }\n >({\n algo_order_id: options?.defaultOrder?.algo_order_id,\n symbol: position.symbol as string,\n side: Number(position.position_qty) > 0 ? OrderSide.BUY : OrderSide.SELL,\n quantity:\n options?.defaultOrder?.quantity || Math.abs(position.position_qty),\n algo_type: options?.defaultOrder?.algo_type as AlgoOrderRootType,\n });\n\n const symbolInfo = useSymbolsInfo()[position.symbol!]();\n const { data: markPrice } = useMarkPrice(order.symbol!);\n\n const [doCreateOrder] = useMutation(\"/v1/algo/order\");\n const [doUpdateOrder] = useMutation(\"/v1/algo/order\", \"PUT\");\n const [doDeleteOrder] = useMutation(\"/v1/algo/order\", \"DELETE\");\n\n const [errors, setErrors] = useState<ValidateError | null>(null);\n\n useEffect(() => {\n if (!options?.defaultOrder) return;\n const trigger_prices = findTPSLFromOrder(options.defaultOrder!);\n if (trigger_prices.tp_trigger_price) {\n setOrderValue(\"tp_trigger_price\", trigger_prices.tp_trigger_price, {\n ignoreValidate: true,\n });\n }\n if (trigger_prices.sl_trigger_price) {\n setOrderValue(\"sl_trigger_price\", trigger_prices.sl_trigger_price, {\n ignoreValidate: true,\n });\n }\n }, []);\n\n const _setOrderValue = (\n key: string,\n value: number | string,\n options?: {\n ignoreValidate?: boolean;\n }\n ) => {\n console.log(\"[updateOrder:]\", key, value, order.quantity);\n\n setOrder((prev) => {\n const side = position.position_qty! > 0 ? OrderSide.BUY : OrderSide.SELL;\n\n if (key === \"sl_pnl\") {\n value = value ? `-${value}` : \"\";\n }\n\n const newValue = calculateHelper(\n key,\n {\n key,\n value,\n entryPrice: position.average_open_price!,\n qty:\n side === OrderSide.BUY\n ? Number(prev.quantity)!\n : -Number(prev.quantity)!,\n orderSide: side,\n },\n {\n symbol: symbolInfo,\n }\n );\n\n console.log(\"newValue::\", newValue);\n\n return {\n ...prev,\n ...newValue,\n ignoreValidate: options?.ignoreValidate,\n };\n });\n };\n\n const setOrderValue = async (\n key: string,\n value: number | string,\n options?: {\n ignoreValidate?: boolean;\n }\n ) => {\n if (key === \"quantity\") {\n setOrder((prev) => ({ ...prev, quantity: value }));\n\n if (typeof order.sl_trigger_price !== \"undefined\") {\n _setOrderValue(\"sl_trigger_price\", order.sl_trigger_price, {\n ignoreValidate: true,\n });\n }\n\n if (typeof order.tp_trigger_price !== \"undefined\") {\n _setOrderValue(\"tp_trigger_price\", order.tp_trigger_price, {\n ignoreValidate: true,\n });\n }\n\n return;\n }\n\n _setOrderValue(key, value, options);\n };\n\n /**\n * calculate value config\n */\n const valueConfig = {\n symbol: symbolInfo,\n maxQty: Math.abs(position.position_qty),\n markPrice,\n };\n\n // auto validate when order changed\n useEffect(() => {\n requestAnimationFrame(() => {\n if (order.ignoreValidate) return;\n const orderCreator = getOrderCreator();\n orderCreator\n .validate(order as AlgoOrderEntity, valueConfig)\n .then((errors) => {\n setErrors(errors);\n });\n });\n }, [order, valueConfig.markPrice, order.quantity]);\n\n const setValues = (values: Partial<ComputedAlgoOrder>) => {\n const keys = Object.keys(values);\n keys.forEach((key) => {\n setOrderValue(\n key as UpdateOrderKey,\n values[key as keyof ComputedAlgoOrder] as number | string\n );\n });\n };\n\n const validate = (): Promise<\n AlgoOrderEntity<\n AlgoOrderRootType.POSITIONAL_TP_SL | AlgoOrderRootType.TP_SL\n >\n > => {\n const orderCreator = getOrderCreator();\n\n return new Promise((resolve, reject) => {\n return orderCreator\n .validate(\n order as AlgoOrderEntity<AlgoOrderRootType.TP_SL>,\n valueConfig\n )\n .then((errors) => {\n console.log(\"errors::\", errors);\n\n if (errors) {\n setErrors(errors);\n return reject(errors);\n }\n\n resolve(\n orderCreator.create(\n order as AlgoOrderEntity<AlgoOrderRootType.TP_SL>,\n valueConfig\n )\n );\n });\n });\n };\n\n useEffect(() => {\n // setError(validate());\n }, [order]);\n\n const compare = (): boolean => {\n const quantityNum = Number(order.quantity);\n if (isNaN(quantityNum)) return false;\n return quantityNum === Math.abs(Number(position.position_qty));\n };\n\n const getOrderCreator = () => {\n // if the order is existed, and the order type is POSITIONAL_TP_SL, always return POSITIONAL_TP_SL\n // else use qty to determine the order type\n if (options?.defaultOrder?.algo_type === AlgoOrderRootType.TP_SL) {\n return OrderFactory.create(AlgoOrderRootType.TP_SL);\n }\n return OrderFactory.create(\n compare() ? AlgoOrderRootType.POSITIONAL_TP_SL : AlgoOrderRootType.TP_SL\n );\n };\n\n const submit = async () => {\n const defaultOrder = options?.defaultOrder;\n const orderId = defaultOrder?.algo_order_id;\n const algoType = defaultOrder?.algo_type;\n\n // if algo_order_id is not existed, create new order\n if (!orderId) {\n return createOrder();\n }\n\n // if algo_order_id is existed and algoType = POSITION_TP_SL\n if (algoType === AlgoOrderRootType.POSITIONAL_TP_SL) {\n // if order.qty = position.qty, update order\n if (compare()) {\n return updateOrder(orderId!);\n }\n // if order.qty != position.qty, create new tp/sl order\n return createOrder();\n }\n\n // if algo_order_id is existed and algoType = TP_SL, delete order and create new order\n\n return updateOrder(orderId!);\n };\n\n const createOrder = () => {\n const orderCreator = getOrderCreator();\n\n const orderBody = orderCreator.create(\n order as AlgoOrderEntity<AlgoOrderRootType.TP_SL>,\n valueConfig\n );\n\n if (orderBody.child_orders.length === 0) {\n throw new SDKError(\"No child orders\");\n }\n\n return doCreateOrder(orderBody);\n };\n\n const deleteOrder = (orderId: number, symbol: string): Promise<any> => {\n return doDeleteOrder(null, {\n order_id: orderId,\n symbol,\n });\n };\n\n const updateOrder = (orderId: number): Promise<any> => {\n const orderCreator = getOrderCreator() as TPSLPositionOrderCreator;\n\n const [updatedOrderEntity, orderEntity] = orderCreator.crateUpdateOrder(\n // @ts-ignore\n order,\n options?.defaultOrder,\n valueConfig\n );\n\n if (updatedOrderEntity.child_orders.length === 0) {\n return Promise.resolve(\"Not any order needs to update\");\n }\n\n const needDelete =\n orderEntity.child_orders.filter(\n (order) =>\n typeof order.is_activated === \"boolean\" && !order.is_activated\n ).length === 2;\n\n if (needDelete) {\n return deleteOrder(orderId, order.symbol!);\n }\n\n return doUpdateOrder({\n order_id: orderId,\n ...updatedOrderEntity,\n });\n };\n\n return [\n omit([\"ignoreValidate\"], order) as ComputedAlgoOrder,\n {\n submit,\n\n create: submit,\n\n update: updateOrder,\n setValue: setOrderValue,\n setValues,\n // createPositionTPSL: submit,\n // createTPSL: submit,\n validate,\n errors,\n },\n ];\n};\n"],"names":["useEffect","useState","OrderSide","SDKError","calculateHelper","useMutation","OrderFactory","AlgoOrderRootType","findTPSLFromOrder","useSymbolsInfo","useMarkPrice","omit","useTaskProfitAndStopLossInternal","position","options","order","setOrder","algo_order_id","defaultOrder","symbol","side","Number","position_qty","BUY","SELL","quantity","Math","abs","algo_type","symbolInfo","data","markPrice","doCreateOrder","doUpdateOrder","doDeleteOrder","errors","setErrors","trigger_prices","tp_trigger_price","setOrderValue","ignoreValidate","sl_trigger_price","_setOrderValue","key","value","prev","newValue","entryPrice","average_open_price","qty","orderSide","valueConfig","maxQty","requestAnimationFrame","orderCreator","getOrderCreator","validate","then","setValues","values","keys","Object","forEach","Promise","resolve","reject","create","compare","quantityNum","isNaN","TP_SL","POSITIONAL_TP_SL","submit","orderId","algoType","createOrder","updateOrder","orderBody","child_orders","length","deleteOrder","order_id","updatedOrderEntity","orderEntity","crateUpdateOrder","needDelete","filter","is_activated","update","setValue"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}