@orderly.network/hooks 1.4.0-alpha.0 → 1.4.0-alpha.1

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 (61) hide show
  1. package/esm/configProvider.d.ts.map +1 -1
  2. package/esm/configProvider.js +3 -2
  3. package/esm/configProvider.js.map +1 -1
  4. package/esm/dev/proxyConfigStore.d.ts +15 -0
  5. package/esm/dev/proxyConfigStore.d.ts.map +1 -0
  6. package/esm/dev/proxyConfigStore.js +41 -0
  7. package/esm/dev/proxyConfigStore.js.map +1 -0
  8. package/esm/orderly/orderlyHooks.d.ts +1 -1
  9. package/esm/orderly/orderlyHooks.js +1 -1
  10. package/esm/orderly/orderlyHooks.js.map +1 -1
  11. package/esm/orderly/useOrderStream/useOrderStream.d.ts +2 -1
  12. package/esm/orderly/useOrderStream/useOrderStream.d.ts.map +1 -1
  13. package/esm/orderly/useOrderStream/useOrderStream.js +21 -10
  14. package/esm/orderly/useOrderStream/useOrderStream.js.map +1 -1
  15. package/esm/orderly/useTakeProfitAndStopLoss/index.d.ts +3 -5
  16. package/esm/orderly/useTakeProfitAndStopLoss/index.d.ts.map +1 -1
  17. package/esm/orderly/useTakeProfitAndStopLoss/index.js +1 -1
  18. package/esm/orderly/useTakeProfitAndStopLoss/index.js.map +1 -1
  19. package/esm/orderly/useTakeProfitAndStopLoss/useTPSL.d.ts +3 -5
  20. package/esm/orderly/useTakeProfitAndStopLoss/useTPSL.d.ts.map +1 -1
  21. package/esm/orderly/useTakeProfitAndStopLoss/useTPSL.js +9 -10
  22. package/esm/orderly/useTakeProfitAndStopLoss/useTPSL.js.map +1 -1
  23. package/esm/orderly/useTakeProfitAndStopLoss/utils.d.ts.map +1 -1
  24. package/esm/orderly/useTakeProfitAndStopLoss/utils.js +24 -11
  25. package/esm/orderly/useTakeProfitAndStopLoss/utils.js.map +1 -1
  26. package/esm/services/orderCreator/tpslOrderCreator.js +1 -1
  27. package/esm/services/orderCreator/tpslOrderCreator.js.map +1 -1
  28. package/esm/version.d.ts +1 -1
  29. package/esm/version.js +2 -2
  30. package/esm/version.js.map +1 -1
  31. package/lib/configProvider.d.ts.map +1 -1
  32. package/lib/configProvider.js +3 -2
  33. package/lib/configProvider.js.map +1 -1
  34. package/lib/dev/proxyConfigStore.d.ts +15 -0
  35. package/lib/dev/proxyConfigStore.d.ts.map +1 -0
  36. package/lib/dev/proxyConfigStore.js +51 -0
  37. package/lib/dev/proxyConfigStore.js.map +1 -0
  38. package/lib/orderly/orderlyHooks.d.ts +1 -1
  39. package/lib/orderly/orderlyHooks.js +3 -3
  40. package/lib/orderly/orderlyHooks.js.map +1 -1
  41. package/lib/orderly/useOrderStream/useOrderStream.d.ts +2 -1
  42. package/lib/orderly/useOrderStream/useOrderStream.d.ts.map +1 -1
  43. package/lib/orderly/useOrderStream/useOrderStream.js +21 -10
  44. package/lib/orderly/useOrderStream/useOrderStream.js.map +1 -1
  45. package/lib/orderly/useTakeProfitAndStopLoss/index.d.ts +3 -5
  46. package/lib/orderly/useTakeProfitAndStopLoss/index.d.ts.map +1 -1
  47. package/lib/orderly/useTakeProfitAndStopLoss/index.js +3 -3
  48. package/lib/orderly/useTakeProfitAndStopLoss/index.js.map +1 -1
  49. package/lib/orderly/useTakeProfitAndStopLoss/useTPSL.d.ts +3 -5
  50. package/lib/orderly/useTakeProfitAndStopLoss/useTPSL.d.ts.map +1 -1
  51. package/lib/orderly/useTakeProfitAndStopLoss/useTPSL.js +9 -10
  52. package/lib/orderly/useTakeProfitAndStopLoss/useTPSL.js.map +1 -1
  53. package/lib/orderly/useTakeProfitAndStopLoss/utils.d.ts.map +1 -1
  54. package/lib/orderly/useTakeProfitAndStopLoss/utils.js +12 -10
  55. package/lib/orderly/useTakeProfitAndStopLoss/utils.js.map +1 -1
  56. package/lib/services/orderCreator/tpslOrderCreator.js +1 -1
  57. package/lib/services/orderCreator/tpslOrderCreator.js.map +1 -1
  58. package/lib/version.d.ts +1 -1
  59. package/lib/version.js +2 -2
  60. package/lib/version.js.map +1 -1
  61. package/package.json +6 -6
@@ -1,6 +1,6 @@
1
1
  import { OrderSide } from "@orderly.network/types";
2
2
  import { AlgoOrderType } from "@orderly.network/types";
3
- import { Decimal, zero } from "@orderly.network/utils";
3
+ import { Decimal, todpIfNeed, zero } from "@orderly.network/utils";
4
4
  /**
5
5
  * offset -> TP/SL price
6
6
  */ export function offsetToPrice(inputs) {
@@ -36,7 +36,7 @@ export function priceToOffset(inputs, options = {}) {
36
36
  decimal = new Decimal(entryPrice).minus(new Decimal(price));
37
37
  }
38
38
  if (symbol) {
39
- return decimal.abs().todp(symbol.quote_dp, 4).toNumber();
39
+ return decimal.abs().todp(symbol.quote_dp, Decimal.ROUND_UP).toNumber();
40
40
  }
41
41
  return decimal.abs().toNumber();
42
42
  }
@@ -75,7 +75,7 @@ export function priceToOffsetPercentage(inputs) {
75
75
  * pnl -> TP/SL price
76
76
  */ export function pnlToPrice(inputs) {
77
77
  const { qty, pnl, entryPrice, orderType, orderSide } = inputs;
78
- ;
78
+ // console.log("pnlToPrice", inputs);
79
79
  if (!pnl) {
80
80
  return;
81
81
  }
@@ -111,10 +111,21 @@ export function priceToOffsetPercentage(inputs) {
111
111
  decimal = new Decimal(qty).mul(new Decimal(price).minus(new Decimal(entryPrice)));
112
112
  }
113
113
  if (symbol) {
114
- return decimal.todp(symbol.quote_dp, 4).toNumber();
114
+ return decimal.todp(symbol.quote_dp, Decimal.ROUND_DOWN).toNumber();
115
115
  }
116
116
  return decimal.toNumber();
117
117
  }
118
+ // function formatPrice(price: number | string, symbol?: API.SymbolExt) {
119
+ // if (typeof price !== "string") {
120
+ // price = `${price}`;
121
+ // }
122
+ // if (price.endsWith(".") || !symbol) {
123
+ // return price;
124
+ // }
125
+ // return new Decimal(Number(price))
126
+ // .todp(symbol.quote_dp, Decimal.ROUND_UP)
127
+ // .toNumber();
128
+ // }
118
129
  export function calculateHelper(key, inputs, options = {}) {
119
130
  const { symbol } = options;
120
131
  // if not need to be computed, return the value directly
@@ -134,6 +145,8 @@ export function calculateHelper(key, inputs, options = {}) {
134
145
  [key]: inputs.value
135
146
  };
136
147
  let trigger_price, offset, offset_percentage, pnl;
148
+ const entryPrice = new Decimal(inputs.entryPrice).todp(options.symbol?.quote_dp ?? 2, Decimal.ROUND_UP).toNumber();
149
+ // console.log("******* entryPrice", options.symbol?.quote_dp, entryPrice);
137
150
  switch(key){
138
151
  case "tp_trigger_price":
139
152
  case "sl_trigger_price":
@@ -157,7 +170,7 @@ export function calculateHelper(key, inputs, options = {}) {
157
170
  trigger_price = pnlToPrice({
158
171
  qty,
159
172
  pnl: Number(inputs.value),
160
- entryPrice: inputs.entryPrice,
173
+ entryPrice,
161
174
  orderSide: inputs.orderSide,
162
175
  orderType
163
176
  });
@@ -170,7 +183,7 @@ export function calculateHelper(key, inputs, options = {}) {
170
183
  trigger_price = offsetToPrice({
171
184
  qty,
172
185
  offset: Number(inputs.value),
173
- entryPrice: inputs.entryPrice,
186
+ entryPrice,
174
187
  orderSide: inputs.orderSide,
175
188
  orderType: key === "tp_offset" ? AlgoOrderType.TAKE_PROFIT : AlgoOrderType.STOP_LOSS
176
189
  });
@@ -183,7 +196,7 @@ export function calculateHelper(key, inputs, options = {}) {
183
196
  trigger_price = offsetPercentageToPrice({
184
197
  qty,
185
198
  percentage: Number(inputs.value),
186
- entryPrice: inputs.entryPrice,
199
+ entryPrice,
187
200
  orderSide: inputs.orderSide,
188
201
  orderType
189
202
  });
@@ -198,25 +211,25 @@ export function calculateHelper(key, inputs, options = {}) {
198
211
  [key]: inputs.value
199
212
  };
200
213
  return {
201
- [`${keyPrefix}trigger_price`]: symbol ? new Decimal(Number(trigger_price)).todp(symbol.quote_dp, 4).toNumber() : trigger_price,
214
+ [`${keyPrefix}trigger_price`]: todpIfNeed(trigger_price, symbol?.quote_dp ?? 2),
202
215
  [`${keyPrefix}offset`]: offset ?? priceToOffset({
203
216
  qty,
204
217
  price: Number(trigger_price),
205
- entryPrice: inputs.entryPrice,
218
+ entryPrice,
206
219
  orderSide: inputs.orderSide,
207
220
  orderType
208
221
  }, options),
209
222
  [`${keyPrefix}offset_percentage`]: offset_percentage ?? priceToOffsetPercentage({
210
223
  qty,
211
224
  price: Number(trigger_price),
212
- entryPrice: inputs.entryPrice,
225
+ entryPrice,
213
226
  orderSide: inputs.orderSide,
214
227
  orderType
215
228
  }),
216
229
  [`${keyPrefix}pnl`]: pnl ?? priceToPnl({
217
230
  qty,
218
231
  price: Number(trigger_price),
219
- entryPrice: inputs.entryPrice,
232
+ entryPrice,
220
233
  orderSide: inputs.orderSide,
221
234
  orderType
222
235
  }, options)
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/orderly/useTakeProfitAndStopLoss/utils.ts"],"sourcesContent":["import { API, OrderSide, PositionSide } from \"@orderly.network/types\";\nimport { OrderType } from \"@orderly.network/types\";\nimport { AlgoOrderType } from \"@orderly.network/types\";\nimport { Decimal, zero } from \"@orderly.network/utils\";\n\nexport type UpdateOrderKey =\n | \"tp_trigger_price\"\n | \"tp_offset_percentage\"\n | \"tp_pnl\"\n | \"tp_offset\"\n | \"quantity\"\n | \"sl_trigger_price\"\n | \"sl_offset_percentage\"\n | \"sl_pnl\"\n | \"sl_offset\";\n\n/**\n * offset -> TP/SL price\n */\nexport function offsetToPrice(inputs: {\n qty: number;\n offset: number;\n entryPrice: number;\n orderSide: OrderSide;\n orderType: AlgoOrderType;\n}) {\n const { qty, offset, entryPrice, orderType, orderSide } = inputs;\n\n if (!offset) return;\n\n if (orderSide === OrderSide.BUY) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(entryPrice).add(new Decimal(offset)).toNumber();\n }\n\n return new Decimal(entryPrice).minus(new Decimal(offset)).toNumber();\n }\n\n if (orderSide === OrderSide.SELL) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(entryPrice).minus(new Decimal(offset)).toNumber();\n }\n\n return new Decimal(entryPrice).add(new Decimal(offset)).toNumber();\n }\n}\n\nexport function priceToOffset(\n inputs: {\n qty: number;\n price: number;\n entryPrice: number;\n orderSide: OrderSide;\n orderType: AlgoOrderType;\n },\n options: { symbol?: API.SymbolExt } = {}\n) {\n const { qty, price, entryPrice, orderType, orderSide } = inputs;\n const { symbol } = options;\n let decimal: Decimal;\n\n if (orderSide === OrderSide.BUY) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n decimal = new Decimal(price).minus(new Decimal(entryPrice));\n }\n\n decimal = new Decimal(price).minus(new Decimal(entryPrice));\n }\n\n if (orderSide === OrderSide.SELL) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n decimal = new Decimal(price).minus(new Decimal(entryPrice));\n }\n\n decimal = new Decimal(entryPrice).minus(new Decimal(price));\n }\n\n if (symbol) {\n return decimal!.abs().todp(symbol.quote_dp, 4).toNumber();\n }\n\n return decimal!.abs().toNumber();\n}\n\nexport function offsetPercentageToPrice(inputs: {\n qty: number;\n percentage: number;\n entryPrice: number;\n orderSide: OrderSide;\n orderType: AlgoOrderType;\n}) {\n const { qty, percentage, entryPrice, orderType, orderSide } = inputs;\n\n if (!percentage) return;\n\n if (orderSide === OrderSide.BUY) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(1)\n .add(new Decimal(percentage))\n .mul(new Decimal(entryPrice))\n .toNumber();\n }\n\n return new Decimal(1)\n .minus(new Decimal(percentage))\n .mul(new Decimal(entryPrice))\n .toNumber();\n }\n\n if (orderSide === OrderSide.SELL) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(1)\n .minus(new Decimal(percentage))\n .mul(new Decimal(entryPrice))\n .toNumber();\n }\n\n return new Decimal(1)\n .add(new Decimal(percentage))\n .mul(new Decimal(entryPrice))\n .toNumber();\n }\n}\n\nexport function priceToOffsetPercentage(inputs: {\n qty: number;\n price: number;\n entryPrice: number;\n orderSide: OrderSide;\n orderType: AlgoOrderType;\n}) {\n const { qty, price, entryPrice, orderType, orderSide } = inputs;\n\n if (orderSide === OrderSide.BUY) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(price)\n .div(new Decimal(entryPrice))\n .minus(1)\n .toNumber();\n }\n\n return new Decimal(1)\n .minus(new Decimal(price).div(new Decimal(entryPrice)))\n .toNumber();\n }\n\n if (orderSide === OrderSide.SELL) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(1)\n .minus(new Decimal(price).div(new Decimal(entryPrice)))\n .toNumber();\n }\n\n return new Decimal(price).div(new Decimal(entryPrice)).minus(1).toNumber();\n }\n}\n\n/**\n * pnl -> TP/SL price\n */\nexport function pnlToPrice(inputs: {\n qty: number;\n pnl: number;\n entryPrice: number;\n orderSide: OrderSide;\n orderType: AlgoOrderType;\n}) {\n const { qty, pnl, entryPrice, orderType, orderSide } = inputs;\n\n console.log(\"pnlToPrice\", inputs);\n\n if (!pnl) {\n return;\n }\n\n if (orderSide === OrderSide.BUY) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(entryPrice)\n .plus(new Decimal(pnl).div(new Decimal(qty)))\n .toNumber();\n }\n\n return new Decimal(entryPrice)\n .add(new Decimal(pnl).div(new Decimal(qty)))\n .toNumber();\n }\n if (orderSide === OrderSide.SELL) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(entryPrice)\n .add(new Decimal(pnl).div(new Decimal(qty)))\n .toNumber();\n }\n\n return new Decimal(entryPrice)\n .add(new Decimal(pnl).div(new Decimal(qty)))\n .toNumber();\n }\n}\n\n/**\n * TP/SL price -> pnl\n */\nexport function priceToPnl(\n inputs: {\n qty: number;\n price: number;\n entryPrice: number;\n orderSide: OrderSide;\n orderType: AlgoOrderType;\n },\n options: { symbol?: API.SymbolExt } = {}\n): number {\n const { qty, price, entryPrice, orderType, orderSide } = inputs;\n const { symbol } = options;\n let decimal = zero;\n\n if (orderSide === OrderSide.BUY) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n decimal = new Decimal(qty).mul(\n new Decimal(price).minus(new Decimal(entryPrice))\n );\n }\n\n decimal = new Decimal(qty).mul(\n new Decimal(price).minus(new Decimal(entryPrice))\n );\n }\n\n if (orderSide === OrderSide.SELL) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n decimal = new Decimal(qty).mul(\n new Decimal(price).minus(new Decimal(entryPrice))\n );\n }\n\n decimal = new Decimal(qty).mul(\n new Decimal(price).minus(new Decimal(entryPrice))\n );\n }\n\n if (symbol) {\n return decimal.todp(symbol.quote_dp, 4).toNumber();\n }\n\n return decimal.toNumber();\n}\n\nexport function calculateHelper(\n key: string,\n inputs: {\n key: string;\n value: string | number;\n entryPrice: number;\n qty: number;\n orderSide: OrderSide;\n },\n options: { symbol?: API.SymbolExt } = {}\n) {\n const { symbol } = options;\n // if not need to be computed, return the value directly\n if (\n key !== \"quantity\" &&\n key !== \"tp_trigger_price\" &&\n key !== \"sl_trigger_price\" &&\n key !== \"tp_pnl\" &&\n key !== \"sl_pnl\" &&\n key !== \"tp_offset\" &&\n key !== \"sl_offset\" &&\n key !== \"tp_offset_percentage\" &&\n key !== \"sl_offset_percentage\"\n ) {\n return {\n [key]: inputs.value,\n };\n }\n\n const orderType = key.startsWith(\"tp_\")\n ? AlgoOrderType.TAKE_PROFIT\n : AlgoOrderType.STOP_LOSS;\n const keyPrefix = key.slice(0, 3);\n\n let qty = Number(key === \"quantity\" ? inputs.value : inputs.qty);\n\n if (qty === 0)\n return {\n [`${keyPrefix}trigger_price`]: \"\",\n // [`${keyPrefix}offset`]: \"\",\n // [`${keyPrefix}offset_percentage`]: \"\",\n [`${keyPrefix}pnl`]: \"\",\n [key]: inputs.value,\n };\n\n let trigger_price, offset, offset_percentage, pnl;\n\n switch (key) {\n case \"tp_trigger_price\":\n case \"sl_trigger_price\": {\n trigger_price = inputs.value;\n // if trigger price is empty and the key is `*_trigger_price`, reset the offset and pnl\n if (inputs.value === \"\") {\n return {\n [`${keyPrefix}trigger_price`]: trigger_price,\n [`${keyPrefix}offset`]: \"\",\n [`${keyPrefix}offset_percentage`]: \"\",\n [`${keyPrefix}pnl`]: \"\",\n };\n }\n break;\n }\n\n case \"tp_pnl\":\n case \"sl_pnl\": {\n pnl = inputs.value;\n trigger_price = pnlToPrice({\n qty,\n pnl: Number(inputs.value),\n entryPrice: inputs.entryPrice,\n orderSide: inputs.orderSide,\n orderType,\n });\n break;\n }\n\n case \"tp_offset\":\n case \"sl_offset\": {\n offset = inputs.value;\n trigger_price = offsetToPrice({\n qty,\n offset: Number(inputs.value),\n entryPrice: inputs.entryPrice,\n orderSide: inputs.orderSide,\n orderType:\n key === \"tp_offset\"\n ? AlgoOrderType.TAKE_PROFIT\n : AlgoOrderType.STOP_LOSS,\n });\n break;\n }\n\n case \"tp_offset_percentage\":\n case \"sl_offset_percentage\": {\n offset_percentage = inputs.value;\n trigger_price = offsetPercentageToPrice({\n qty,\n percentage: Number(inputs.value),\n entryPrice: inputs.entryPrice,\n orderSide: inputs.orderSide,\n orderType,\n });\n break;\n }\n }\n\n if (!trigger_price)\n return {\n [`${keyPrefix}trigger_price`]: \"\",\n [`${keyPrefix}offset`]: \"\",\n [`${keyPrefix}offset_percentage`]: \"\",\n [`${keyPrefix}pnl`]: \"\",\n [key]: inputs.value,\n };\n\n return {\n [`${keyPrefix}trigger_price`]: symbol\n ? new Decimal(Number(trigger_price)).todp(symbol.quote_dp, 4).toNumber()\n : trigger_price,\n [`${keyPrefix}offset`]:\n offset ??\n priceToOffset(\n {\n qty,\n price: Number(trigger_price!),\n entryPrice: inputs.entryPrice,\n orderSide: inputs.orderSide,\n orderType,\n },\n options\n ),\n [`${keyPrefix}offset_percentage`]:\n offset_percentage ??\n priceToOffsetPercentage({\n qty,\n price: Number(trigger_price!),\n entryPrice: inputs.entryPrice,\n orderSide: inputs.orderSide,\n orderType,\n }),\n [`${keyPrefix}pnl`]:\n pnl ??\n priceToPnl(\n {\n qty,\n price: Number(trigger_price!),\n entryPrice: inputs.entryPrice,\n orderSide: inputs.orderSide,\n orderType,\n },\n options\n ),\n };\n}\n"],"names":["OrderSide","AlgoOrderType","Decimal","zero","offsetToPrice","inputs","qty","offset","entryPrice","orderType","orderSide","BUY","TAKE_PROFIT","add","toNumber","minus","SELL","priceToOffset","options","price","symbol","decimal","abs","todp","quote_dp","offsetPercentageToPrice","percentage","mul","priceToOffsetPercentage","div","pnlToPrice","pnl","plus","priceToPnl","calculateHelper","key","value","startsWith","STOP_LOSS","keyPrefix","slice","Number","trigger_price","offset_percentage"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../../src/orderly/useTakeProfitAndStopLoss/utils.ts"],"sourcesContent":["import { API, OrderSide, PositionSide } from \"@orderly.network/types\";\nimport { OrderType } from \"@orderly.network/types\";\nimport { AlgoOrderType } from \"@orderly.network/types\";\nimport { Decimal, todpIfNeed, zero } from \"@orderly.network/utils\";\n\nexport type UpdateOrderKey =\n | \"tp_trigger_price\"\n | \"tp_offset_percentage\"\n | \"tp_pnl\"\n | \"tp_offset\"\n | \"quantity\"\n | \"sl_trigger_price\"\n | \"sl_offset_percentage\"\n | \"sl_pnl\"\n | \"sl_offset\";\n\n/**\n * offset -> TP/SL price\n */\nexport function offsetToPrice(inputs: {\n qty: number;\n offset: number;\n entryPrice: number;\n orderSide: OrderSide;\n orderType: AlgoOrderType;\n}) {\n const { qty, offset, entryPrice, orderType, orderSide } = inputs;\n\n if (!offset) return;\n\n if (orderSide === OrderSide.BUY) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(entryPrice).add(new Decimal(offset)).toNumber();\n }\n\n return new Decimal(entryPrice).minus(new Decimal(offset)).toNumber();\n }\n\n if (orderSide === OrderSide.SELL) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(entryPrice).minus(new Decimal(offset)).toNumber();\n }\n\n return new Decimal(entryPrice).add(new Decimal(offset)).toNumber();\n }\n}\n\nexport function priceToOffset(\n inputs: {\n qty: number;\n price: number;\n entryPrice: number;\n orderSide: OrderSide;\n orderType: AlgoOrderType;\n },\n options: { symbol?: API.SymbolExt } = {}\n) {\n const { qty, price, entryPrice, orderType, orderSide } = inputs;\n const { symbol } = options;\n let decimal: Decimal;\n\n if (orderSide === OrderSide.BUY) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n decimal = new Decimal(price).minus(new Decimal(entryPrice));\n }\n\n decimal = new Decimal(price).minus(new Decimal(entryPrice));\n }\n\n if (orderSide === OrderSide.SELL) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n decimal = new Decimal(price).minus(new Decimal(entryPrice));\n }\n\n decimal = new Decimal(entryPrice).minus(new Decimal(price));\n }\n\n if (symbol) {\n return decimal!.abs().todp(symbol.quote_dp, Decimal.ROUND_UP).toNumber();\n }\n\n return decimal!.abs().toNumber();\n}\n\nexport function offsetPercentageToPrice(inputs: {\n qty: number;\n percentage: number;\n entryPrice: number;\n orderSide: OrderSide;\n orderType: AlgoOrderType;\n}) {\n const { qty, percentage, entryPrice, orderType, orderSide } = inputs;\n\n if (!percentage) return;\n\n if (orderSide === OrderSide.BUY) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(1)\n .add(new Decimal(percentage))\n .mul(new Decimal(entryPrice))\n .toNumber();\n }\n\n return new Decimal(1)\n .minus(new Decimal(percentage))\n .mul(new Decimal(entryPrice))\n .toNumber();\n }\n\n if (orderSide === OrderSide.SELL) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(1)\n .minus(new Decimal(percentage))\n .mul(new Decimal(entryPrice))\n .toNumber();\n }\n\n return new Decimal(1)\n .add(new Decimal(percentage))\n .mul(new Decimal(entryPrice))\n .toNumber();\n }\n}\n\nexport function priceToOffsetPercentage(inputs: {\n qty: number;\n price: number;\n entryPrice: number;\n orderSide: OrderSide;\n orderType: AlgoOrderType;\n}) {\n const { qty, price, entryPrice, orderType, orderSide } = inputs;\n\n if (orderSide === OrderSide.BUY) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(price)\n .div(new Decimal(entryPrice))\n .minus(1)\n .toNumber();\n }\n\n return new Decimal(1)\n .minus(new Decimal(price).div(new Decimal(entryPrice)))\n .toNumber();\n }\n\n if (orderSide === OrderSide.SELL) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(1)\n .minus(new Decimal(price).div(new Decimal(entryPrice)))\n .toNumber();\n }\n\n return new Decimal(price).div(new Decimal(entryPrice)).minus(1).toNumber();\n }\n}\n\n/**\n * pnl -> TP/SL price\n */\nexport function pnlToPrice(inputs: {\n qty: number;\n pnl: number;\n entryPrice: number;\n orderSide: OrderSide;\n orderType: AlgoOrderType;\n}) {\n const { qty, pnl, entryPrice, orderType, orderSide } = inputs;\n\n // console.log(\"pnlToPrice\", inputs);\n\n if (!pnl) {\n return;\n }\n\n if (orderSide === OrderSide.BUY) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(entryPrice)\n .plus(new Decimal(pnl).div(new Decimal(qty)))\n .toNumber();\n }\n\n return new Decimal(entryPrice)\n .add(new Decimal(pnl).div(new Decimal(qty)))\n .toNumber();\n }\n if (orderSide === OrderSide.SELL) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(entryPrice)\n .add(new Decimal(pnl).div(new Decimal(qty)))\n .toNumber();\n }\n\n return new Decimal(entryPrice)\n .add(new Decimal(pnl).div(new Decimal(qty)))\n .toNumber();\n }\n}\n\n/**\n * TP/SL price -> pnl\n */\nexport function priceToPnl(\n inputs: {\n qty: number;\n price: number;\n entryPrice: number;\n orderSide: OrderSide;\n orderType: AlgoOrderType;\n },\n options: { symbol?: API.SymbolExt } = {}\n): number {\n const { qty, price, entryPrice, orderType, orderSide } = inputs;\n const { symbol } = options;\n let decimal = zero;\n\n if (orderSide === OrderSide.BUY) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n decimal = new Decimal(qty).mul(\n new Decimal(price).minus(new Decimal(entryPrice))\n );\n }\n\n decimal = new Decimal(qty).mul(\n new Decimal(price).minus(new Decimal(entryPrice))\n );\n }\n\n if (orderSide === OrderSide.SELL) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n decimal = new Decimal(qty).mul(\n new Decimal(price).minus(new Decimal(entryPrice))\n );\n }\n\n decimal = new Decimal(qty).mul(\n new Decimal(price).minus(new Decimal(entryPrice))\n );\n }\n\n if (symbol) {\n return decimal.todp(symbol.quote_dp, Decimal.ROUND_DOWN).toNumber();\n }\n\n return decimal.toNumber();\n}\n\n// function formatPrice(price: number | string, symbol?: API.SymbolExt) {\n// if (typeof price !== \"string\") {\n// price = `${price}`;\n// }\n\n// if (price.endsWith(\".\") || !symbol) {\n// return price;\n// }\n// return new Decimal(Number(price))\n// .todp(symbol.quote_dp, Decimal.ROUND_UP)\n// .toNumber();\n// }\n\nexport function calculateHelper(\n key: string,\n inputs: {\n key: string;\n value: string | number;\n entryPrice: number;\n qty: number;\n orderSide: OrderSide;\n },\n options: { symbol?: API.SymbolExt } = {}\n) {\n const { symbol } = options;\n // if not need to be computed, return the value directly\n if (\n key !== \"quantity\" &&\n key !== \"tp_trigger_price\" &&\n key !== \"sl_trigger_price\" &&\n key !== \"tp_pnl\" &&\n key !== \"sl_pnl\" &&\n key !== \"tp_offset\" &&\n key !== \"sl_offset\" &&\n key !== \"tp_offset_percentage\" &&\n key !== \"sl_offset_percentage\"\n ) {\n return {\n [key]: inputs.value,\n };\n }\n\n const orderType = key.startsWith(\"tp_\")\n ? AlgoOrderType.TAKE_PROFIT\n : AlgoOrderType.STOP_LOSS;\n const keyPrefix = key.slice(0, 3);\n\n let qty = Number(key === \"quantity\" ? inputs.value : inputs.qty);\n\n if (qty === 0)\n return {\n [`${keyPrefix}trigger_price`]: \"\",\n // [`${keyPrefix}offset`]: \"\",\n // [`${keyPrefix}offset_percentage`]: \"\",\n [`${keyPrefix}pnl`]: \"\",\n [key]: inputs.value,\n };\n\n let trigger_price, offset, offset_percentage, pnl;\n\n const entryPrice = new Decimal(inputs.entryPrice)\n .todp(options.symbol?.quote_dp ?? 2, Decimal.ROUND_UP)\n .toNumber();\n\n // console.log(\"******* entryPrice\", options.symbol?.quote_dp, entryPrice);\n\n switch (key) {\n case \"tp_trigger_price\":\n case \"sl_trigger_price\": {\n trigger_price = inputs.value;\n // if trigger price is empty and the key is `*_trigger_price`, reset the offset and pnl\n if (inputs.value === \"\") {\n return {\n [`${keyPrefix}trigger_price`]: trigger_price,\n [`${keyPrefix}offset`]: \"\",\n [`${keyPrefix}offset_percentage`]: \"\",\n [`${keyPrefix}pnl`]: \"\",\n };\n }\n break;\n }\n\n case \"tp_pnl\":\n case \"sl_pnl\": {\n pnl = inputs.value;\n trigger_price = pnlToPrice({\n qty,\n pnl: Number(inputs.value),\n entryPrice,\n orderSide: inputs.orderSide,\n orderType,\n });\n break;\n }\n\n case \"tp_offset\":\n case \"sl_offset\": {\n offset = inputs.value;\n trigger_price = offsetToPrice({\n qty,\n offset: Number(inputs.value),\n entryPrice,\n orderSide: inputs.orderSide,\n orderType:\n key === \"tp_offset\"\n ? AlgoOrderType.TAKE_PROFIT\n : AlgoOrderType.STOP_LOSS,\n });\n break;\n }\n\n case \"tp_offset_percentage\":\n case \"sl_offset_percentage\": {\n offset_percentage = inputs.value;\n trigger_price = offsetPercentageToPrice({\n qty,\n percentage: Number(inputs.value),\n entryPrice,\n orderSide: inputs.orderSide,\n orderType,\n });\n break;\n }\n }\n\n if (!trigger_price)\n return {\n [`${keyPrefix}trigger_price`]: \"\",\n [`${keyPrefix}offset`]: \"\",\n [`${keyPrefix}offset_percentage`]: \"\",\n [`${keyPrefix}pnl`]: \"\",\n [key]: inputs.value,\n };\n\n return {\n [`${keyPrefix}trigger_price`]: todpIfNeed(\n trigger_price,\n symbol?.quote_dp ?? 2\n ),\n [`${keyPrefix}offset`]:\n offset ??\n priceToOffset(\n {\n qty,\n price: Number(trigger_price!),\n entryPrice,\n orderSide: inputs.orderSide,\n orderType,\n },\n options\n ),\n [`${keyPrefix}offset_percentage`]:\n offset_percentage ??\n priceToOffsetPercentage({\n qty,\n price: Number(trigger_price!),\n entryPrice,\n orderSide: inputs.orderSide,\n orderType,\n }),\n [`${keyPrefix}pnl`]:\n pnl ??\n priceToPnl(\n {\n qty,\n price: Number(trigger_price!),\n entryPrice,\n orderSide: inputs.orderSide,\n orderType,\n },\n options\n ),\n };\n}\n"],"names":["OrderSide","AlgoOrderType","Decimal","todpIfNeed","zero","offsetToPrice","inputs","qty","offset","entryPrice","orderType","orderSide","BUY","TAKE_PROFIT","add","toNumber","minus","SELL","priceToOffset","options","price","symbol","decimal","abs","todp","quote_dp","ROUND_UP","offsetPercentageToPrice","percentage","mul","priceToOffsetPercentage","div","pnlToPrice","pnl","plus","priceToPnl","ROUND_DOWN","calculateHelper","key","value","startsWith","STOP_LOSS","keyPrefix","slice","Number","trigger_price","offset_percentage"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -10,7 +10,7 @@ export class TPSLOrderCreator extends BaseAlgoOrderCreator {
10
10
  const side = values.side === OrderSide.BUY ? OrderSide.SELL : OrderSide.BUY;
11
11
  const child_orders = [];
12
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;
13
+ const tp_trigger_price = !!values.tp_trigger_price ? new Decimal(values.tp_trigger_price).todp(config.symbol.quote_dp).toNumber() : values.tp_trigger_price;
14
14
  child_orders.push({
15
15
  algo_type: AlgoOrderType.TAKE_PROFIT,
16
16
  reduce_only: true,
@@ -1 +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"}
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.tp_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","todp","symbol","quote_dp","toNumber","push","algo_type","TAKE_PROFIT","reduce_only","type","MARKET","trigger_price","is_activated","sl_trigger_price","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":"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"}
package/esm/version.d.ts CHANGED
@@ -5,6 +5,6 @@ declare global {
5
5
  };
6
6
  }
7
7
  }
8
- declare const _default: "1.4.0-alpha.0";
8
+ declare const _default: "1.4.0-alpha.1";
9
9
  export default _default;
10
10
  //# sourceMappingURL=version.d.ts.map
package/esm/version.js CHANGED
@@ -1,7 +1,7 @@
1
1
  if (typeof window !== 'undefined') {
2
2
  window.__ORDERLY_VERSION__ = window.__ORDERLY_VERSION__ || {};
3
- window.__ORDERLY_VERSION__["@orderly.network/hooks"] = "1.4.0-alpha.0";
3
+ window.__ORDERLY_VERSION__["@orderly.network/hooks"] = "1.4.0-alpha.1";
4
4
  }
5
- export default "1.4.0-alpha.0";
5
+ export default "1.4.0-alpha.1";
6
6
 
7
7
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/version.ts"],"sourcesContent":["\ndeclare global {\n interface Window {\n __ORDERLY_VERSION__?: {\n [key: string]: string;\n };\n }\n}\nif(typeof window !== 'undefined') {\n window.__ORDERLY_VERSION__ = window.__ORDERLY_VERSION__ || {};\n window.__ORDERLY_VERSION__[\"@orderly.network/hooks\"] = \"1.4.0-alpha.0\";\n};\n\nexport default \"1.4.0-alpha.0\";\n"],"names":["window","__ORDERLY_VERSION__"],"rangeMappings":";;;;","mappings":"AAQA,IAAG,OAAOA,WAAW,aAAa;IAC9BA,OAAOC,mBAAmB,GAAGD,OAAOC,mBAAmB,IAAI,CAAC;IAC5DD,OAAOC,mBAAmB,CAAC,yBAAyB,GAAG;AAC3D;AAEA,eAAe,gBAAgB"}
1
+ {"version":3,"sources":["../src/version.ts"],"sourcesContent":["\ndeclare global {\n interface Window {\n __ORDERLY_VERSION__?: {\n [key: string]: string;\n };\n }\n}\nif(typeof window !== 'undefined') {\n window.__ORDERLY_VERSION__ = window.__ORDERLY_VERSION__ || {};\n window.__ORDERLY_VERSION__[\"@orderly.network/hooks\"] = \"1.4.0-alpha.1\";\n};\n\nexport default \"1.4.0-alpha.1\";\n"],"names":["window","__ORDERLY_VERSION__"],"rangeMappings":";;;;","mappings":"AAQA,IAAG,OAAOA,WAAW,aAAa;IAC9BA,OAAOC,mBAAmB,GAAGD,OAAOC,mBAAmB,IAAI,CAAC;IAC5DD,OAAOC,mBAAmB,CAAC,yBAAyB,GAAG;AAC3D;AAEA,eAAe,gBAAgB"}
@@ -1 +1 @@
1
- {"version":3,"file":"configProvider.d.ts","sourceRoot":"","sources":["../src/configProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAM,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAGnD,OAAO,EACL,WAAW,EAGX,eAAe,EACf,oBAAoB,EAMpB,SAAS,EACV,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,KAAK,EACL,SAAS,EAGV,MAAM,wBAAwB,CAAC;AAYhC,KAAK,iBAAiB,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GACjE;KACG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CACnE,CAAC,CAAC,CAAC,CAAC;AAEP,KAAK,cAAc,GAAG;IACpB,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC;CACnB,CAAC;AAEF,KAAK,gBAAgB,GAAG,CAAC,MAAM,EAAE,WAAW,KAAK,cAAc,CAAC;AAChE,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,SAAS,CAAC;IAErB,WAAW,CAAC,EAAE,cAAc,GAAG,gBAAgB,CAAC;CACjD;AAED,eAAO,MAAM,qBAAqB,UACzB,kBACL,kBAAkB,mBAAmB,EAAE,UAAU,GAAG,aAAa,CAAC,CACnE,mDAgGF,CAAC"}
1
+ {"version":3,"file":"configProvider.d.ts","sourceRoot":"","sources":["../src/configProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAM,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAGnD,OAAO,EACL,WAAW,EAGX,eAAe,EACf,oBAAoB,EAMpB,SAAS,EACV,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,KAAK,EACL,SAAS,EAGV,MAAM,wBAAwB,CAAC;AAahC,KAAK,iBAAiB,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GACjE;KACG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CACnE,CAAC,CAAC,CAAC,CAAC;AAEP,KAAK,cAAc,GAAG;IACpB,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC;CACnB,CAAC;AAEF,KAAK,gBAAgB,GAAG,CAAC,MAAM,EAAE,WAAW,KAAK,cAAc,CAAC;AAEhE,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,SAAS,CAAC;IAErB,WAAW,CAAC,EAAE,cAAc,GAAG,gBAAgB,CAAC;CACjD;AAED,eAAO,MAAM,qBAAqB,UACzB,kBACL,kBAAkB,mBAAmB,EAAE,UAAU,GAAG,aAAa,CAAC,CACnE,mDAkGF,CAAC"}
@@ -16,6 +16,7 @@ const _useconstant = /*#__PURE__*/ _interop_require_default(require("use-constan
16
16
  const _dataProvider = require("./dataProvider");
17
17
  const _statusProvider = require("./statusProvider");
18
18
  const _types = require("@orderly.network/types");
19
+ const _proxyConfigStore = require("./dev/proxyConfigStore");
19
20
  function _interop_require_default(obj) {
20
21
  return obj && obj.__esModule ? obj : {
21
22
  default: obj
@@ -73,10 +74,10 @@ const OrderlyConfigProvider = (props)=>{
73
74
  throw new _types.SDKError("if configStore is provided, brokerId is required in configStore");
74
75
  }
75
76
  const innerConfigStore = (0, _useconstant.default)(()=>{
76
- return configStore || new _core.DefaultConfigStore({
77
+ return new _proxyConfigStore.ProxyConfigStore(configStore || new _core.DefaultConfigStore({
77
78
  brokerId,
78
79
  networkId
79
- });
80
+ }));
80
81
  });
81
82
  const innerKeyStore = (0, _useconstant.default)(()=>{
82
83
  return keyStore || new _core.LocalStorageStore(networkId);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/configProvider.tsx"],"sourcesContent":["import type { FC, PropsWithChildren } from \"react\";\nimport React, { useEffect, useMemo } from \"react\";\nimport { OrderlyProvider } from \"./orderlyContext\";\nimport {\n ConfigStore,\n // MemoryConfigStore,\n DefaultConfigStore,\n OrderlyKeyStore,\n getWalletAdapterFunc,\n WalletAdapterOptions,\n LocalStorageStore,\n EtherAdapter,\n SimpleDI,\n Account,\n IContract,\n} from \"@orderly.network/core\";\n\nimport useConstant from \"use-constant\";\nimport {\n Chain,\n NetworkId,\n defaultMainnetChains,\n defaultTestnetChains,\n} from \"@orderly.network/types\";\n// import { usePreLoadData } from \"./usePreloadData\";\nimport { DataCenterProvider } from \"./dataProvider\";\nimport { StatusProvider } from \"./statusProvider\";\nimport { SDKError } from \"@orderly.network/types\";\n// import { useParamsCheck } from \"./useParamsCheck\";\n\ntype RequireOnlyOne<T, U extends keyof T = keyof T> = Omit<T, U> &\n {\n [K in U]-?: Required<Pick<T, K>> & Partial<Record<Exclude<U, K>, never>>;\n }[U];\n\ntype RequireAtLeastOne<T, R extends keyof T = keyof T> = Omit<T, R> &\n {\n [K in R]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<R, K>>>;\n }[R];\n\ntype filteredChains = {\n mainnet?: Chain[];\n testnet?: Chain[];\n};\n\ntype filterChainsFunc = (config: ConfigStore) => filteredChains;\nexport interface ConfigProviderProps {\n configStore?: ConfigStore;\n keyStore?: OrderlyKeyStore;\n contracts?: IContract;\n getWalletAdapter?: getWalletAdapterFunc;\n brokerId: string;\n networkId: NetworkId;\n\n chainFilter?: filteredChains | filterChainsFunc;\n}\n\nexport const OrderlyConfigProvider = (\n props: PropsWithChildren<\n RequireAtLeastOne<ConfigProviderProps, \"brokerId\" | \"configStore\">\n >\n) => {\n const [account, setAccount] = React.useState<Account | null>(null);\n const {\n configStore,\n keyStore,\n getWalletAdapter,\n brokerId,\n networkId,\n contracts,\n chainFilter,\n } = props;\n\n if (!brokerId && typeof configStore === \"undefined\") {\n console.error(\"[OrderlyConfigProvider]: brokerId is required\");\n }\n\n if (typeof configStore !== \"undefined\" && !configStore.get(\"brokerId\")) {\n // console.error(\"[OrderlyConfigProvider]: brokerId is required\");\n throw new SDKError(\n \"if configStore is provided, brokerId is required in configStore\"\n );\n }\n\n const innerConfigStore = useConstant<ConfigStore>(() => {\n return configStore || new DefaultConfigStore({ brokerId, networkId });\n });\n\n const innerKeyStore = useConstant<OrderlyKeyStore>(() => {\n return keyStore || new LocalStorageStore(networkId);\n });\n\n const innerGetWalletAdapter = useConstant<getWalletAdapterFunc>(() => {\n return (\n getWalletAdapter ||\n ((options: WalletAdapterOptions) => new EtherAdapter(options))\n );\n });\n\n // check params, if has mismatch, throw warning message to console\n // useParamsCheck({ brokerId: innerConfigStore.get(\"brokerId\") });\n\n useEffect(() => {\n let account = SimpleDI.get<Account>(Account.instanceName);\n\n if (!account) {\n account = new Account(\n innerConfigStore,\n innerKeyStore,\n innerGetWalletAdapter,\n {\n contracts,\n }\n );\n\n SimpleDI.registerByName(Account.instanceName, account);\n }\n\n setAccount(account);\n }, []);\n\n const filteredChains = useMemo(() => {\n if (typeof chainFilter === \"function\") {\n return chainFilter(innerConfigStore);\n }\n\n return chainFilter;\n\n // const { mainnet, testnet } = props.chains || {};\n\n // return {\n // mainnet: mainnet || defaultMainnetChains,\n // testnet: testnet || defaultTestnetChains,\n // };\n }, [props.chainFilter, innerConfigStore]);\n\n if (!account) {\n return null;\n }\n\n return (\n <OrderlyProvider\n value={{\n configStore: innerConfigStore,\n keyStore: innerKeyStore,\n getWalletAdapter: innerGetWalletAdapter,\n networkId: networkId,\n filteredChains: filteredChains,\n // apiBaseUrl,\n }}\n >\n <StatusProvider>\n <DataCenterProvider>{props.children}</DataCenterProvider>\n </StatusProvider>\n </OrderlyProvider>\n );\n};\n\n// const DataPreload = () => {\n// const { error, done } = usePreLoadData();\n// };\n"],"names":["OrderlyConfigProvider","props","account","setAccount","React","useState","configStore","keyStore","getWalletAdapter","brokerId","networkId","contracts","chainFilter","console","error","get","SDKError","innerConfigStore","useConstant","DefaultConfigStore","innerKeyStore","LocalStorageStore","innerGetWalletAdapter","options","EtherAdapter","useEffect","SimpleDI","Account","instanceName","registerByName","filteredChains","useMemo","OrderlyProvider","value","StatusProvider","DataCenterProvider","children"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;+BAyDaA;;;eAAAA;;;;+DAxD6B;gCACV;sBAazB;oEAEiB;8BAQW;gCACJ;uBACN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BlB,MAAMA,wBAAwB,CACnCC;IAIA,MAAM,CAACC,SAASC,WAAW,GAAGC,cAAK,CAACC,QAAQ,CAAiB;IAC7D,MAAM,EACJC,WAAW,EACXC,QAAQ,EACRC,gBAAgB,EAChBC,QAAQ,EACRC,SAAS,EACTC,SAAS,EACTC,WAAW,EACZ,GAAGX;IAEJ,IAAI,CAACQ,YAAY,OAAOH,gBAAgB,aAAa;QACnDO,QAAQC,KAAK,CAAC;IAChB;IAEA,IAAI,OAAOR,gBAAgB,eAAe,CAACA,YAAYS,GAAG,CAAC,aAAa;QACtE,kEAAkE;QAClE,MAAM,IAAIC,eAAQ,CAChB;IAEJ;IAEA,MAAMC,mBAAmBC,IAAAA,oBAAW,EAAc;QAChD,OAAOZ,eAAe,IAAIa,wBAAkB,CAAC;YAAEV;YAAUC;QAAU;IACrE;IAEA,MAAMU,gBAAgBF,IAAAA,oBAAW,EAAkB;QACjD,OAAOX,YAAY,IAAIc,uBAAiB,CAACX;IAC3C;IAEA,MAAMY,wBAAwBJ,IAAAA,oBAAW,EAAuB;QAC9D,OACEV,oBACC,CAAA,CAACe,UAAkC,IAAIC,kBAAY,CAACD,QAAO;IAEhE;IAEA,kEAAkE;IAClE,kEAAkE;IAElEE,IAAAA,gBAAS,EAAC;QACR,IAAIvB,UAAUwB,cAAQ,CAACX,GAAG,CAAUY,aAAO,CAACC,YAAY;QAExD,IAAI,CAAC1B,SAAS;YACZA,UAAU,IAAIyB,aAAO,CACnBV,kBACAG,eACAE,uBACA;gBACEX;YACF;YAGFe,cAAQ,CAACG,cAAc,CAACF,aAAO,CAACC,YAAY,EAAE1B;QAChD;QAEAC,WAAWD;IACb,GAAG,EAAE;IAEL,MAAM4B,iBAAiBC,IAAAA,cAAO,EAAC;QAC7B,IAAI,OAAOnB,gBAAgB,YAAY;YACrC,OAAOA,YAAYK;QACrB;QAEA,OAAOL;IAEP,mDAAmD;IAEnD,WAAW;IACX,8CAA8C;IAC9C,8CAA8C;IAC9C,KAAK;IACP,GAAG;QAACX,MAAMW,WAAW;QAAEK;KAAiB;IAExC,IAAI,CAACf,SAAS;QACZ,OAAO;IACT;IAEA,qBACE,qBAAC8B,+BAAe;QACdC,OAAO;YACL3B,aAAaW;YACbV,UAAUa;YACVZ,kBAAkBc;YAClBZ,WAAWA;YACXoB,gBAAgBA;QAElB;kBAEA,cAAA,qBAACI,8BAAc;sBACb,cAAA,qBAACC,gCAAkB;0BAAElC,MAAMmC,QAAQ;;;;AAI3C,GAEA,8BAA8B;CAC9B,8CAA8C;CAC9C,KAAK"}
1
+ {"version":3,"sources":["../src/configProvider.tsx"],"sourcesContent":["import type { FC, PropsWithChildren } from \"react\";\nimport React, { useEffect, useMemo } from \"react\";\nimport { OrderlyProvider } from \"./orderlyContext\";\nimport {\n ConfigStore,\n // MemoryConfigStore,\n DefaultConfigStore,\n OrderlyKeyStore,\n getWalletAdapterFunc,\n WalletAdapterOptions,\n LocalStorageStore,\n EtherAdapter,\n SimpleDI,\n Account,\n IContract,\n} from \"@orderly.network/core\";\n\nimport useConstant from \"use-constant\";\nimport {\n Chain,\n NetworkId,\n defaultMainnetChains,\n defaultTestnetChains,\n} from \"@orderly.network/types\";\n// import { usePreLoadData } from \"./usePreloadData\";\nimport { DataCenterProvider } from \"./dataProvider\";\nimport { StatusProvider } from \"./statusProvider\";\nimport { SDKError } from \"@orderly.network/types\";\nimport { ProxyConfigStore } from \"./dev/proxyConfigStore\";\n// import { useParamsCheck } from \"./useParamsCheck\";\n\ntype RequireOnlyOne<T, U extends keyof T = keyof T> = Omit<T, U> &\n {\n [K in U]-?: Required<Pick<T, K>> & Partial<Record<Exclude<U, K>, never>>;\n }[U];\n\ntype RequireAtLeastOne<T, R extends keyof T = keyof T> = Omit<T, R> &\n {\n [K in R]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<R, K>>>;\n }[R];\n\ntype filteredChains = {\n mainnet?: Chain[];\n testnet?: Chain[];\n};\n\ntype filterChainsFunc = (config: ConfigStore) => filteredChains;\n\nexport interface ConfigProviderProps {\n configStore?: ConfigStore;\n keyStore?: OrderlyKeyStore;\n contracts?: IContract;\n getWalletAdapter?: getWalletAdapterFunc;\n brokerId: string;\n networkId: NetworkId;\n\n chainFilter?: filteredChains | filterChainsFunc;\n}\n\nexport const OrderlyConfigProvider = (\n props: PropsWithChildren<\n RequireAtLeastOne<ConfigProviderProps, \"brokerId\" | \"configStore\">\n >\n) => {\n const [account, setAccount] = React.useState<Account | null>(null);\n const {\n configStore,\n keyStore,\n getWalletAdapter,\n brokerId,\n networkId,\n contracts,\n chainFilter,\n } = props;\n\n if (!brokerId && typeof configStore === \"undefined\") {\n console.error(\"[OrderlyConfigProvider]: brokerId is required\");\n }\n\n if (typeof configStore !== \"undefined\" && !configStore.get(\"brokerId\")) {\n // console.error(\"[OrderlyConfigProvider]: brokerId is required\");\n throw new SDKError(\n \"if configStore is provided, brokerId is required in configStore\"\n );\n }\n\n const innerConfigStore = useConstant<ConfigStore>(() => {\n return new ProxyConfigStore(\n configStore || new DefaultConfigStore({ brokerId, networkId })\n );\n });\n\n const innerKeyStore = useConstant<OrderlyKeyStore>(() => {\n return keyStore || new LocalStorageStore(networkId);\n });\n\n const innerGetWalletAdapter = useConstant<getWalletAdapterFunc>(() => {\n return (\n getWalletAdapter ||\n ((options: WalletAdapterOptions) => new EtherAdapter(options))\n );\n });\n\n // check params, if has mismatch, throw warning message to console\n // useParamsCheck({ brokerId: innerConfigStore.get(\"brokerId\") });\n\n useEffect(() => {\n let account = SimpleDI.get<Account>(Account.instanceName);\n\n if (!account) {\n account = new Account(\n innerConfigStore,\n innerKeyStore,\n innerGetWalletAdapter,\n {\n contracts,\n }\n );\n\n SimpleDI.registerByName(Account.instanceName, account);\n }\n\n setAccount(account);\n }, []);\n\n const filteredChains = useMemo(() => {\n if (typeof chainFilter === \"function\") {\n return chainFilter(innerConfigStore);\n }\n\n return chainFilter;\n\n // const { mainnet, testnet } = props.chains || {};\n\n // return {\n // mainnet: mainnet || defaultMainnetChains,\n // testnet: testnet || defaultTestnetChains,\n // };\n }, [props.chainFilter, innerConfigStore]);\n\n if (!account) {\n return null;\n }\n\n return (\n <OrderlyProvider\n value={{\n configStore: innerConfigStore,\n keyStore: innerKeyStore,\n getWalletAdapter: innerGetWalletAdapter,\n networkId: networkId,\n filteredChains: filteredChains,\n // apiBaseUrl,\n }}\n >\n <StatusProvider>\n <DataCenterProvider>{props.children}</DataCenterProvider>\n </StatusProvider>\n </OrderlyProvider>\n );\n};\n\n// const DataPreload = () => {\n// const { error, done } = usePreLoadData();\n// };\n"],"names":["OrderlyConfigProvider","props","account","setAccount","React","useState","configStore","keyStore","getWalletAdapter","brokerId","networkId","contracts","chainFilter","console","error","get","SDKError","innerConfigStore","useConstant","ProxyConfigStore","DefaultConfigStore","innerKeyStore","LocalStorageStore","innerGetWalletAdapter","options","EtherAdapter","useEffect","SimpleDI","Account","instanceName","registerByName","filteredChains","useMemo","OrderlyProvider","value","StatusProvider","DataCenterProvider","children"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;+BA2DaA;;;eAAAA;;;;+DA1D6B;gCACV;sBAazB;oEAEiB;8BAQW;gCACJ;uBACN;kCACQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+B1B,MAAMA,wBAAwB,CACnCC;IAIA,MAAM,CAACC,SAASC,WAAW,GAAGC,cAAK,CAACC,QAAQ,CAAiB;IAC7D,MAAM,EACJC,WAAW,EACXC,QAAQ,EACRC,gBAAgB,EAChBC,QAAQ,EACRC,SAAS,EACTC,SAAS,EACTC,WAAW,EACZ,GAAGX;IAEJ,IAAI,CAACQ,YAAY,OAAOH,gBAAgB,aAAa;QACnDO,QAAQC,KAAK,CAAC;IAChB;IAEA,IAAI,OAAOR,gBAAgB,eAAe,CAACA,YAAYS,GAAG,CAAC,aAAa;QACtE,kEAAkE;QAClE,MAAM,IAAIC,eAAQ,CAChB;IAEJ;IAEA,MAAMC,mBAAmBC,IAAAA,oBAAW,EAAc;QAChD,OAAO,IAAIC,kCAAgB,CACzBb,eAAe,IAAIc,wBAAkB,CAAC;YAAEX;YAAUC;QAAU;IAEhE;IAEA,MAAMW,gBAAgBH,IAAAA,oBAAW,EAAkB;QACjD,OAAOX,YAAY,IAAIe,uBAAiB,CAACZ;IAC3C;IAEA,MAAMa,wBAAwBL,IAAAA,oBAAW,EAAuB;QAC9D,OACEV,oBACC,CAAA,CAACgB,UAAkC,IAAIC,kBAAY,CAACD,QAAO;IAEhE;IAEA,kEAAkE;IAClE,kEAAkE;IAElEE,IAAAA,gBAAS,EAAC;QACR,IAAIxB,UAAUyB,cAAQ,CAACZ,GAAG,CAAUa,aAAO,CAACC,YAAY;QAExD,IAAI,CAAC3B,SAAS;YACZA,UAAU,IAAI0B,aAAO,CACnBX,kBACAI,eACAE,uBACA;gBACEZ;YACF;YAGFgB,cAAQ,CAACG,cAAc,CAACF,aAAO,CAACC,YAAY,EAAE3B;QAChD;QAEAC,WAAWD;IACb,GAAG,EAAE;IAEL,MAAM6B,iBAAiBC,IAAAA,cAAO,EAAC;QAC7B,IAAI,OAAOpB,gBAAgB,YAAY;YACrC,OAAOA,YAAYK;QACrB;QAEA,OAAOL;IAEP,mDAAmD;IAEnD,WAAW;IACX,8CAA8C;IAC9C,8CAA8C;IAC9C,KAAK;IACP,GAAG;QAACX,MAAMW,WAAW;QAAEK;KAAiB;IAExC,IAAI,CAACf,SAAS;QACZ,OAAO;IACT;IAEA,qBACE,qBAAC+B,+BAAe;QACdC,OAAO;YACL5B,aAAaW;YACbV,UAAUc;YACVb,kBAAkBe;YAClBb,WAAWA;YACXqB,gBAAgBA;QAElB;kBAEA,cAAA,qBAACI,8BAAc;sBACb,cAAA,qBAACC,gCAAkB;0BAAEnC,MAAMoC,QAAQ;;;;AAI3C,GAEA,8BAA8B;CAC9B,8CAA8C;CAC9C,KAAK"}
@@ -0,0 +1,15 @@
1
+ import { ConfigKey, ConfigStore } from "@orderly.network/core";
2
+ export declare class ProxyConfigStore implements ConfigStore {
3
+ private readonly _originConfigStore;
4
+ private _proxyConfigStore?;
5
+ constructor(_originConfigStore: ConfigStore);
6
+ get<T>(key: ConfigKey): T;
7
+ getOr<T>(key: ConfigKey, defaultValue: T): T;
8
+ set<T>(key: ConfigKey, value: T): void;
9
+ clear(): void;
10
+ getFromOrigin<T>(key: ConfigKey): T;
11
+ getOrFromOrigin<T>(key: ConfigKey, defaultValue: T): T;
12
+ setToOrigin<T>(key: ConfigKey, value: T): void;
13
+ clearOrigin(): void;
14
+ }
15
+ //# sourceMappingURL=proxyConfigStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxyConfigStore.d.ts","sourceRoot":"","sources":["../../src/dev/proxyConfigStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAG/D,qBAAa,gBAAiB,YAAW,WAAW;IAGtC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IAF/C,OAAO,CAAC,iBAAiB,CAAC,CAAc;gBAEX,kBAAkB,EAAE,WAAW;IAO5D,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,GAAG,CAAC;IAQzB,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC;IAO5C,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAItC,KAAK,IAAI,IAAI;IAIb,aAAa,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,GAAG,CAAC;IAInC,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC;IAItD,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAI9C,WAAW,IAAI,IAAI;CAGpB"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "ProxyConfigStore", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return ProxyConfigStore;
9
+ }
10
+ });
11
+ const _utils = require("@orderly.network/utils");
12
+ class ProxyConfigStore {
13
+ _originConfigStore;
14
+ _proxyConfigStore;
15
+ constructor(_originConfigStore){
16
+ this._originConfigStore = _originConfigStore;
17
+ (0, _utils.windowGuard)(()=>{
18
+ this._proxyConfigStore = window.__ORDERLY_CONFIG_STORE__ || _originConfigStore;
19
+ });
20
+ }
21
+ get(key) {
22
+ const value = this._proxyConfigStore?.get(key);
23
+ if (typeof value === "undefined") {
24
+ return this._originConfigStore.get(key);
25
+ }
26
+ return value;
27
+ }
28
+ getOr(key, defaultValue) {
29
+ return (this._proxyConfigStore ?? this._originConfigStore).getOr(key, defaultValue);
30
+ }
31
+ set(key, value) {
32
+ (this._proxyConfigStore ?? this._originConfigStore).set(key, value);
33
+ }
34
+ clear() {
35
+ throw new Error("Method not implemented.");
36
+ }
37
+ getFromOrigin(key) {
38
+ return this._originConfigStore.get(key);
39
+ }
40
+ getOrFromOrigin(key, defaultValue) {
41
+ return this._originConfigStore.getOr(key, defaultValue);
42
+ }
43
+ setToOrigin(key, value) {
44
+ this._originConfigStore.set(key, value);
45
+ }
46
+ clearOrigin() {
47
+ this._originConfigStore.clear();
48
+ }
49
+ }
50
+
51
+ //# sourceMappingURL=proxyConfigStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/dev/proxyConfigStore.ts"],"sourcesContent":["import { ConfigKey, ConfigStore } from \"@orderly.network/core\";\nimport { windowGuard } from \"@orderly.network/utils\";\n\nexport class ProxyConfigStore implements ConfigStore {\n private _proxyConfigStore?: ConfigStore;\n\n constructor(private readonly _originConfigStore: ConfigStore) {\n windowGuard(() => {\n this._proxyConfigStore =\n (window as any).__ORDERLY_CONFIG_STORE__ || _originConfigStore;\n });\n }\n\n get<T>(key: ConfigKey): T {\n const value = this._proxyConfigStore?.get(key);\n if (typeof value === \"undefined\") {\n return this._originConfigStore.get(key);\n }\n return value as T;\n }\n\n getOr<T>(key: ConfigKey, defaultValue: T): T {\n return (this._proxyConfigStore ?? this._originConfigStore).getOr(\n key,\n defaultValue\n );\n }\n\n set<T>(key: ConfigKey, value: T): void {\n (this._proxyConfigStore ?? this._originConfigStore).set(key, value);\n }\n\n clear(): void {\n throw new Error(\"Method not implemented.\");\n }\n\n getFromOrigin<T>(key: ConfigKey): T {\n return this._originConfigStore.get(key);\n }\n\n getOrFromOrigin<T>(key: ConfigKey, defaultValue: T): T {\n return this._originConfigStore.getOr(key, defaultValue);\n }\n\n setToOrigin<T>(key: ConfigKey, value: T): void {\n this._originConfigStore.set(key, value);\n }\n\n clearOrigin(): void {\n this._originConfigStore.clear();\n }\n}\n"],"names":["ProxyConfigStore","_proxyConfigStore","constructor","_originConfigStore","windowGuard","window","__ORDERLY_CONFIG_STORE__","get","key","value","getOr","defaultValue","set","clear","Error","getFromOrigin","getOrFromOrigin","setToOrigin","clearOrigin"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;+BAGaA;;;eAAAA;;;uBAFe;AAErB,MAAMA;;IACHC,kBAAgC;IAExCC,YAAY,AAAiBC,kBAA+B,CAAE;aAAjCA,qBAAAA;QAC3BC,IAAAA,kBAAW,EAAC;YACV,IAAI,CAACH,iBAAiB,GACpB,AAACI,OAAeC,wBAAwB,IAAIH;QAChD;IACF;IAEAI,IAAOC,GAAc,EAAK;QACxB,MAAMC,QAAQ,IAAI,CAACR,iBAAiB,EAAEM,IAAIC;QAC1C,IAAI,OAAOC,UAAU,aAAa;YAChC,OAAO,IAAI,CAACN,kBAAkB,CAACI,GAAG,CAACC;QACrC;QACA,OAAOC;IACT;IAEAC,MAASF,GAAc,EAAEG,YAAe,EAAK;QAC3C,OAAO,AAAC,CAAA,IAAI,CAACV,iBAAiB,IAAI,IAAI,CAACE,kBAAkB,AAAD,EAAGO,KAAK,CAC9DF,KACAG;IAEJ;IAEAC,IAAOJ,GAAc,EAAEC,KAAQ,EAAQ;QACpC,CAAA,IAAI,CAACR,iBAAiB,IAAI,IAAI,CAACE,kBAAkB,AAAD,EAAGS,GAAG,CAACJ,KAAKC;IAC/D;IAEAI,QAAc;QACZ,MAAM,IAAIC,MAAM;IAClB;IAEAC,cAAiBP,GAAc,EAAK;QAClC,OAAO,IAAI,CAACL,kBAAkB,CAACI,GAAG,CAACC;IACrC;IAEAQ,gBAAmBR,GAAc,EAAEG,YAAe,EAAK;QACrD,OAAO,IAAI,CAACR,kBAAkB,CAACO,KAAK,CAACF,KAAKG;IAC5C;IAEAM,YAAeT,GAAc,EAAEC,KAAQ,EAAQ;QAC7C,IAAI,CAACN,kBAAkB,CAACS,GAAG,CAACJ,KAAKC;IACnC;IAEAS,cAAoB;QAClB,IAAI,CAACf,kBAAkB,CAACU,KAAK;IAC/B;AACF"}
@@ -30,5 +30,5 @@ export { useWalletSubscription } from "./useWalletSubscription";
30
30
  export { useSettleSubscription } from "./useSettleSubscription";
31
31
  export { usePrivateDataObserver } from "./usePrivateDataObserver";
32
32
  export { useSymbolPriceRange } from "./useSymbolPriceRange";
33
- export { useStopOrder, type ComputedAlgoOrder, } from "./useTakeProfitAndStopLoss";
33
+ export { useTPSLOrder, type ComputedAlgoOrder, } from "./useTakeProfitAndStopLoss";
34
34
  //# sourceMappingURL=orderlyHooks.d.ts.map
@@ -78,15 +78,15 @@ _export(exports, {
78
78
  useSettleSubscription: function() {
79
79
  return _useSettleSubscription.useSettleSubscription;
80
80
  },
81
- useStopOrder: function() {
82
- return _useTakeProfitAndStopLoss.useStopOrder;
83
- },
84
81
  useSymbolPriceRange: function() {
85
82
  return _useSymbolPriceRange.useSymbolPriceRange;
86
83
  },
87
84
  useSymbolsInfo: function() {
88
85
  return _useSymbolsInfo.useSymbolsInfo;
89
86
  },
87
+ useTPSLOrder: function() {
88
+ return _useTakeProfitAndStopLoss.useTPSLOrder;
89
+ },
90
90
  useTickerStream: function() {
91
91
  return _useTickerStream.useTickerStream;
92
92
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/orderly/orderlyHooks.ts"],"sourcesContent":["export { useOrderbookStream } from \"./useOrderbookStream\";\nexport type {\n OrderbookData,\n OrderBookItem,\n OrderbookOptions,\n} from \"./useOrderbookStream\";\nexport { useOrderEntry } from \"./useOrderEntry\";\nexport type { UseOrderEntryMetaState, OrderParams } from \"./useOrderEntry\";\nexport { useSymbolsInfo } from \"./useSymbolsInfo\";\nexport { useAccountInfo } from \"./useAccountInfo\";\n\nexport { useMarketsStream } from \"./useMarketsStream\";\nexport { useMarkets, MarketsType } from \"./useMarkets\";\nexport type { FavoriteTab, Favorite, Recent } from \"./useMarkets\";\nexport { useMarkPricesStream } from \"./useMarkPricesStream\";\nexport { useMarkPrice } from \"./useMarkPrice\";\nexport { useIndexPrice } from \"./useIndexPrice\";\nexport { useLeverage } from \"./useLeverage\";\n\nexport { useTickerStream } from \"./useTickerStream\";\nexport { useFundingRate } from \"./useFundingRate\";\nexport { usePositionStream } from \"./usePositionStream/usePositionStream\";\nexport { useOrderStream } from \"./useOrderStream/useOrderStream\";\nexport { useMarketTradeStream } from \"./useMarketTradeStream\";\n\nexport { useCollateral } from \"./useCollateral\";\nexport type { CollateralOutputs } from \"./useCollateral\";\nexport { useMaxQty } from \"./useMaxQty\";\nexport { useMarginRatio } from \"./useMarginRatio\";\n\nexport { useChains } from \"./useChains\";\nexport type {\n UseChainsOptions,\n Chain,\n Chains,\n UseChainsReturnObject,\n} from \"./useChains\";\nexport { useChain } from \"./useChain\";\nexport { useWithdraw } from \"./useWithdraw\";\nexport { useDeposit } from \"./useDeposit\";\n\nexport { useHoldingStream } from \"./useHoldingStream\";\nexport { useWalletSubscription } from \"./useWalletSubscription\";\nexport { useSettleSubscription } from \"./useSettleSubscription\";\nexport { usePrivateDataObserver } from \"./usePrivateDataObserver\";\n\nexport { useSymbolPriceRange } from \"./useSymbolPriceRange\";\n\nexport {\n useStopOrder,\n type ComputedAlgoOrder,\n} from \"./useTakeProfitAndStopLoss\";\n"],"names":["MarketsType","useAccountInfo","useChain","useChains","useCollateral","useDeposit","useFundingRate","useHoldingStream","useIndexPrice","useLeverage","useMarginRatio","useMarkPrice","useMarkPricesStream","useMarketTradeStream","useMarkets","useMarketsStream","useMaxQty","useOrderEntry","useOrderStream","useOrderbookStream","usePositionStream","usePrivateDataObserver","useSettleSubscription","useStopOrder","useSymbolPriceRange","useSymbolsInfo","useTickerStream","useWalletSubscription","useWithdraw"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;;;;;;;;IAYqBA,WAAW;eAAXA,uBAAW;;IAHvBC,cAAc;eAAdA,8BAAc;;IA4BdC,QAAQ;eAARA,kBAAQ;;IAPRC,SAAS;eAATA,oBAAS;;IALTC,aAAa;eAAbA,4BAAa;;IAcbC,UAAU;eAAVA,sBAAU;;IAnBVC,cAAc;eAAdA,8BAAc;;IAqBdC,gBAAgB;eAAhBA,kCAAgB;;IAzBhBC,aAAa;eAAbA,4BAAa;;IACbC,WAAW;eAAXA,wBAAW;;IAWXC,cAAc;eAAdA,8BAAc;;IAbdC,YAAY;eAAZA,0BAAY;;IADZC,mBAAmB;eAAnBA,wCAAmB;;IASnBC,oBAAoB;eAApBA,0CAAoB;;IAXpBC,UAAU;eAAVA,sBAAU;;IADVC,gBAAgB;eAAhBA,kCAAgB;;IAgBhBC,SAAS;eAATA,oBAAS;;IArBTC,aAAa;eAAbA,4BAAa;;IAgBbC,cAAc;eAAdA,8BAAc;;IAtBdC,kBAAkB;eAAlBA,sCAAkB;;IAqBlBC,iBAAiB;eAAjBA,oCAAiB;;IAuBjBC,sBAAsB;eAAtBA,8CAAsB;;IADtBC,qBAAqB;eAArBA,4CAAqB;;IAM5BC,YAAY;eAAZA,sCAAY;;IAHLC,mBAAmB;eAAnBA,wCAAmB;;IAtCnBC,cAAc;eAAdA,8BAAc;;IAWdC,eAAe;eAAfA,gCAAe;;IAuBfC,qBAAqB;eAArBA,4CAAqB;;IAJrBC,WAAW;eAAXA,wBAAW;;;oCAtCe;+BAML;gCAEC;gCACA;kCAEE;4BACO;qCAEJ;8BACP;+BACC;6BACF;iCAEI;gCACD;mCACG;gCACH;sCACM;+BAEP;2BAEJ;gCACK;2BAEL;0BAOD;6BACG;4BACD;kCAEM;uCACK;uCACA;wCACC;qCAEH;0CAK7B"}
1
+ {"version":3,"sources":["../../src/orderly/orderlyHooks.ts"],"sourcesContent":["export { useOrderbookStream } from \"./useOrderbookStream\";\nexport type {\n OrderbookData,\n OrderBookItem,\n OrderbookOptions,\n} from \"./useOrderbookStream\";\nexport { useOrderEntry } from \"./useOrderEntry\";\nexport type { UseOrderEntryMetaState, OrderParams } from \"./useOrderEntry\";\nexport { useSymbolsInfo } from \"./useSymbolsInfo\";\nexport { useAccountInfo } from \"./useAccountInfo\";\n\nexport { useMarketsStream } from \"./useMarketsStream\";\nexport { useMarkets, MarketsType } from \"./useMarkets\";\nexport type { FavoriteTab, Favorite, Recent } from \"./useMarkets\";\nexport { useMarkPricesStream } from \"./useMarkPricesStream\";\nexport { useMarkPrice } from \"./useMarkPrice\";\nexport { useIndexPrice } from \"./useIndexPrice\";\nexport { useLeverage } from \"./useLeverage\";\n\nexport { useTickerStream } from \"./useTickerStream\";\nexport { useFundingRate } from \"./useFundingRate\";\nexport { usePositionStream } from \"./usePositionStream/usePositionStream\";\nexport { useOrderStream } from \"./useOrderStream/useOrderStream\";\nexport { useMarketTradeStream } from \"./useMarketTradeStream\";\n\nexport { useCollateral } from \"./useCollateral\";\nexport type { CollateralOutputs } from \"./useCollateral\";\nexport { useMaxQty } from \"./useMaxQty\";\nexport { useMarginRatio } from \"./useMarginRatio\";\n\nexport { useChains } from \"./useChains\";\nexport type {\n UseChainsOptions,\n Chain,\n Chains,\n UseChainsReturnObject,\n} from \"./useChains\";\nexport { useChain } from \"./useChain\";\nexport { useWithdraw } from \"./useWithdraw\";\nexport { useDeposit } from \"./useDeposit\";\n\nexport { useHoldingStream } from \"./useHoldingStream\";\nexport { useWalletSubscription } from \"./useWalletSubscription\";\nexport { useSettleSubscription } from \"./useSettleSubscription\";\nexport { usePrivateDataObserver } from \"./usePrivateDataObserver\";\n\nexport { useSymbolPriceRange } from \"./useSymbolPriceRange\";\n\nexport {\n useTPSLOrder,\n type ComputedAlgoOrder,\n} from \"./useTakeProfitAndStopLoss\";\n"],"names":["MarketsType","useAccountInfo","useChain","useChains","useCollateral","useDeposit","useFundingRate","useHoldingStream","useIndexPrice","useLeverage","useMarginRatio","useMarkPrice","useMarkPricesStream","useMarketTradeStream","useMarkets","useMarketsStream","useMaxQty","useOrderEntry","useOrderStream","useOrderbookStream","usePositionStream","usePrivateDataObserver","useSettleSubscription","useSymbolPriceRange","useSymbolsInfo","useTPSLOrder","useTickerStream","useWalletSubscription","useWithdraw"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;;;;;;;;IAYqBA,WAAW;eAAXA,uBAAW;;IAHvBC,cAAc;eAAdA,8BAAc;;IA4BdC,QAAQ;eAARA,kBAAQ;;IAPRC,SAAS;eAATA,oBAAS;;IALTC,aAAa;eAAbA,4BAAa;;IAcbC,UAAU;eAAVA,sBAAU;;IAnBVC,cAAc;eAAdA,8BAAc;;IAqBdC,gBAAgB;eAAhBA,kCAAgB;;IAzBhBC,aAAa;eAAbA,4BAAa;;IACbC,WAAW;eAAXA,wBAAW;;IAWXC,cAAc;eAAdA,8BAAc;;IAbdC,YAAY;eAAZA,0BAAY;;IADZC,mBAAmB;eAAnBA,wCAAmB;;IASnBC,oBAAoB;eAApBA,0CAAoB;;IAXpBC,UAAU;eAAVA,sBAAU;;IADVC,gBAAgB;eAAhBA,kCAAgB;;IAgBhBC,SAAS;eAATA,oBAAS;;IArBTC,aAAa;eAAbA,4BAAa;;IAgBbC,cAAc;eAAdA,8BAAc;;IAtBdC,kBAAkB;eAAlBA,sCAAkB;;IAqBlBC,iBAAiB;eAAjBA,oCAAiB;;IAuBjBC,sBAAsB;eAAtBA,8CAAsB;;IADtBC,qBAAqB;eAArBA,4CAAqB;;IAGrBC,mBAAmB;eAAnBA,wCAAmB;;IAtCnBC,cAAc;eAAdA,8BAAc;;IAyCrBC,YAAY;eAAZA,sCAAY;;IA9BLC,eAAe;eAAfA,gCAAe;;IAuBfC,qBAAqB;eAArBA,4CAAqB;;IAJrBC,WAAW;eAAXA,wBAAW;;;oCAtCe;+BAML;gCAEC;gCACA;kCAEE;4BACO;qCAEJ;8BACP;+BACC;6BACF;iCAEI;gCACD;mCACG;gCACH;sCACM;+BAEP;2BAEJ;gCACK;2BAEL;0BAOD;6BACG;4BACD;kCAEM;uCACK;uCACA;wCACC;qCAEH;0CAK7B"}
@@ -30,7 +30,8 @@ export declare const useOrderStream: (params: {
30
30
  readonly refresh: import("swr/_internal").KeyedMutator<any[]>;
31
31
  readonly loadMore: () => void;
32
32
  readonly cancelAllOrders: () => Promise<[any, any]>;
33
- readonly cancelAllAlgoOrders: () => Promise<[any, any]>;
33
+ readonly cancelAllTPSLOrders: () => Promise<any[]>;
34
+ readonly cancelAlgoOrdersByTypes: (types: AlgoOrderRootType[]) => Promise<any[]>;
34
35
  readonly updateOrder: (orderId: string, order: OrderEntity) => Promise<any>;
35
36
  readonly cancelOrder: (orderId: number, symbol?: string) => Promise<any>;
36
37
  readonly updateAlgoOrder: (orderId: string, order: OrderEntity) => Promise<any>;
@@ -1 +1 @@
1
- {"version":3,"file":"useOrderStream.d.ts","sourceRoot":"","sources":["../../../src/orderly/useOrderStream/useOrderStream.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,SAAS,EACT,WAAW,EACX,WAAW,EACX,GAAG,EACH,iBAAiB,EAClB,MAAM,wBAAwB,CAAC;AAWhC,KAAK,gBAAgB,GAAG,iBAAiB,GAAG,KAAK,CAAC;AAElD,eAAO,MAAM,cAAc,WAIjB;IACN,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;OAGG;IACH,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAC/B,YACS;IACR;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;;;;;;;oCAwKyC,MAAM,SAAS,WAAW;oCAoD1B,MAAM,WAAW,MAAM;wCA7CnB,MAAM,SAAS,WAAW;wCAoD1B,MAAM,WAAW,MAAM;6CAazD,MAAM,mBAAmB,MAAM,KAAG,QAAQ,GAAG,CAAC;wCAmB7C,MAAM,eACF,IAAI,SAAS,CAAC,cAAc,CAAC;;;;;;;;;;;;;EA0C/C,CAAC"}
1
+ {"version":3,"file":"useOrderStream.d.ts","sourceRoot":"","sources":["../../../src/orderly/useOrderStream/useOrderStream.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,SAAS,EACT,WAAW,EACX,WAAW,EACX,GAAG,EACH,iBAAiB,EAClB,MAAM,wBAAwB,CAAC;AAYhC,KAAK,gBAAgB,GAAG,iBAAiB,GAAG,KAAK,CAAC;AAElD,eAAO,MAAM,cAAc,WAIjB;IACN,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;OAGG;IACH,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAC/B,YACS;IACR;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;;;;;;;8CAmIuC,iBAAiB,EAAE;oCAuDjB,MAAM,SAAS,WAAW;oCAoD1B,MAAM,WAAW,MAAM;wCA7CnB,MAAM,SAAS,WAAW;wCAoD1B,MAAM,WAAW,MAAM;6CAazD,MAAM,mBAAmB,MAAM,KAAG,QAAQ,GAAG,CAAC;wCAmB7C,MAAM,eACF,IAAI,SAAS,CAAC,cAAc,CAAC;;;;;;;;;;;;;EA2C/C,CAAC"}
@@ -124,6 +124,20 @@ const useOrderStream = (/**
124
124
  }, [
125
125
  orders?.length
126
126
  ]);
127
+ const cancelAlgoOrdersByTypes = (types)=>{
128
+ if (!types) {
129
+ throw new _types.SDKError("types is required");
130
+ }
131
+ if (!Array.isArray(types)) {
132
+ throw new _types.SDKError("types should be an array");
133
+ }
134
+ // TODO: order type check
135
+ return Promise.all(types.map((type)=>{
136
+ return doCancelAllAlgoOrders(null, {
137
+ algo_type: type
138
+ });
139
+ }));
140
+ };
127
141
  /**
128
142
  * cancel all orders
129
143
  */ const cancelAllOrders = (0, _react.useCallback)(()=>{
@@ -136,14 +150,10 @@ const useOrderStream = (/**
136
150
  }, [
137
151
  ordersResponse.data
138
152
  ]);
139
- const cancelAllAlgoOrders = (0, _react.useCallback)(()=>{
140
- return Promise.all([
141
- doCancelAllAlgoOrders(null, {
142
- algo_type: "TP_SL"
143
- }),
144
- doCancelAllAlgoOrders(null, {
145
- algo_type: "POSITIONAL_TP_SL"
146
- })
153
+ const cancelAllTPSLOrders = (0, _react.useCallback)(()=>{
154
+ return cancelAlgoOrdersByTypes([
155
+ _types.AlgoOrderRootType.POSITIONAL_TP_SL,
156
+ _types.AlgoOrderRootType.TP_SL
147
157
  ]);
148
158
  }, [
149
159
  ordersResponse.data
@@ -244,7 +254,7 @@ const useOrderStream = (/**
244
254
  }
245
255
  return doUpdateAlgoOrder({
246
256
  order_id: orderId,
247
- children_orders: childOrders
257
+ child_orders: childOrders
248
258
  });
249
259
  }, []);
250
260
  return [
@@ -255,7 +265,8 @@ const useOrderStream = (/**
255
265
  refresh: ordersResponse.mutate,
256
266
  loadMore,
257
267
  cancelAllOrders,
258
- cancelAllAlgoOrders,
268
+ cancelAllTPSLOrders,
269
+ cancelAlgoOrdersByTypes,
259
270
  updateOrder,
260
271
  cancelOrder,
261
272
  updateAlgoOrder,