@orderly.network/hooks 1.5.0 → 1.5.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.
- package/esm/orderly/orderlyHooks.d.ts +1 -0
- package/esm/orderly/orderlyHooks.d.ts.map +1 -1
- package/esm/orderly/orderlyHooks.js +1 -0
- package/esm/orderly/orderlyHooks.js.map +1 -1
- package/esm/orderly/useCollateral.d.ts.map +1 -1
- package/esm/orderly/useCollateral.js +8 -9
- package/esm/orderly/useCollateral.js.map +1 -1
- package/esm/orderly/usePositionStream/usePositionStream.d.ts +4 -0
- package/esm/orderly/usePositionStream/usePositionStream.d.ts.map +1 -1
- package/esm/orderly/usePositionStream/usePositionStream.js +9 -1
- package/esm/orderly/usePositionStream/usePositionStream.js.map +1 -1
- package/esm/orderly/usePrivateDataObserver.d.ts.map +1 -1
- package/esm/orderly/usePrivateDataObserver.js +8 -2
- package/esm/orderly/usePrivateDataObserver.js.map +1 -1
- package/esm/orderly/useSymbolLeverage.d.ts +2 -0
- package/esm/orderly/useSymbolLeverage.d.ts.map +1 -0
- package/esm/orderly/useSymbolLeverage.js +31 -0
- package/esm/orderly/useSymbolLeverage.js.map +1 -0
- package/esm/orderly/useTakeProfitAndStopLoss/useTPSL.d.ts.map +1 -1
- package/esm/orderly/useTakeProfitAndStopLoss/useTPSL.js +2 -1
- package/esm/orderly/useTakeProfitAndStopLoss/useTPSL.js.map +1 -1
- package/esm/referral/index.d.ts +3 -0
- package/esm/referral/index.d.ts.map +1 -1
- package/esm/referral/index.js +3 -0
- package/esm/referral/index.js.map +1 -1
- package/esm/referral/useCheckReferralCode.d.ts +6 -0
- package/esm/referral/useCheckReferralCode.d.ts.map +1 -0
- package/esm/referral/useCheckReferralCode.js +18 -0
- package/esm/referral/useCheckReferralCode.js.map +1 -0
- package/esm/referral/useGetReferralCode.d.ts +6 -0
- package/esm/referral/useGetReferralCode.d.ts.map +1 -0
- package/esm/referral/useGetReferralCode.js +18 -0
- package/esm/referral/useGetReferralCode.js.map +1 -0
- package/esm/referral/useReferralInfo.d.ts +10 -0
- package/esm/referral/useReferralInfo.d.ts.map +1 -0
- package/esm/referral/useReferralInfo.js +56 -0
- package/esm/referral/useReferralInfo.js.map +1 -0
- package/esm/services/orderMerge/algoOrderMergeHandler.d.ts +1 -0
- package/esm/services/orderMerge/algoOrderMergeHandler.d.ts.map +1 -1
- package/esm/services/orderMerge/algoOrderMergeHandler.js +8 -0
- package/esm/services/orderMerge/algoOrderMergeHandler.js.map +1 -1
- package/esm/services/orderMerge/baseMergeHandler.d.ts +1 -0
- package/esm/services/orderMerge/baseMergeHandler.d.ts.map +1 -1
- package/esm/services/orderMerge/baseMergeHandler.js +1 -1
- package/esm/services/orderMerge/baseMergeHandler.js.map +1 -1
- package/esm/services/orderMerge/regularOrderMergeHandler.d.ts +1 -0
- package/esm/services/orderMerge/regularOrderMergeHandler.d.ts.map +1 -1
- package/esm/services/orderMerge/regularOrderMergeHandler.js +3 -0
- package/esm/services/orderMerge/regularOrderMergeHandler.js.map +1 -1
- package/esm/services/painter/basePaint.d.ts +5 -0
- package/esm/services/painter/basePaint.d.ts.map +1 -1
- package/esm/services/painter/basePaint.js.map +1 -1
- package/esm/services/painter/dataPaint.d.ts +3 -0
- package/esm/services/painter/dataPaint.d.ts.map +1 -1
- package/esm/services/painter/dataPaint.js +88 -16
- package/esm/services/painter/dataPaint.js.map +1 -1
- package/esm/services/painter/layout.config.js +1 -1
- package/esm/services/painter/layout.config.js.map +1 -1
- package/esm/services/painter/painter.d.ts.map +1 -1
- package/esm/services/painter/painter.js +7 -2
- package/esm/services/painter/painter.js.map +1 -1
- package/esm/services/painter/qrPaint.d.ts +8 -0
- package/esm/services/painter/qrPaint.d.ts.map +1 -0
- package/esm/services/painter/qrPaint.js +39 -0
- package/esm/services/painter/qrPaint.js.map +1 -0
- package/esm/useLocalStorage.js +2 -2
- package/esm/useLocalStorage.js.map +1 -1
- package/esm/useMediaQuery.js +7 -7
- package/esm/useMediaQuery.js.map +1 -1
- package/esm/usePoster.d.ts.map +1 -1
- package/esm/usePoster.js +18 -15
- package/esm/usePoster.js.map +1 -1
- package/esm/useSessionStorage.js +2 -2
- package/esm/useSessionStorage.js.map +1 -1
- package/esm/utils/index.d.ts +1 -0
- package/esm/utils/index.d.ts.map +1 -1
- package/esm/utils/index.js +1 -0
- package/esm/utils/index.js.map +1 -1
- package/esm/utils/orderEntryHelper.d.ts +1 -0
- package/esm/utils/orderEntryHelper.d.ts.map +1 -1
- package/esm/utils/orderEntryHelper.js +27 -2
- package/esm/utils/orderEntryHelper.js.map +1 -1
- package/esm/version.d.ts +1 -1
- package/esm/version.js +2 -2
- package/esm/version.js.map +1 -1
- package/lib/orderly/orderlyHooks.d.ts +1 -0
- package/lib/orderly/orderlyHooks.d.ts.map +1 -1
- package/lib/orderly/orderlyHooks.js +4 -0
- package/lib/orderly/orderlyHooks.js.map +1 -1
- package/lib/orderly/useCollateral.d.ts.map +1 -1
- package/lib/orderly/useCollateral.js +8 -9
- package/lib/orderly/useCollateral.js.map +1 -1
- package/lib/orderly/usePositionStream/usePositionStream.d.ts +4 -0
- package/lib/orderly/usePositionStream/usePositionStream.d.ts.map +1 -1
- package/lib/orderly/usePositionStream/usePositionStream.js +9 -1
- package/lib/orderly/usePositionStream/usePositionStream.js.map +1 -1
- package/lib/orderly/usePrivateDataObserver.d.ts.map +1 -1
- package/lib/orderly/usePrivateDataObserver.js +8 -2
- package/lib/orderly/usePrivateDataObserver.js.map +1 -1
- package/lib/orderly/useSymbolLeverage.d.ts +2 -0
- package/lib/orderly/useSymbolLeverage.d.ts.map +1 -0
- package/lib/orderly/useSymbolLeverage.js +41 -0
- package/lib/orderly/useSymbolLeverage.js.map +1 -0
- package/lib/orderly/useTakeProfitAndStopLoss/useTPSL.d.ts.map +1 -1
- package/lib/orderly/useTakeProfitAndStopLoss/useTPSL.js +2 -1
- package/lib/orderly/useTakeProfitAndStopLoss/useTPSL.js.map +1 -1
- package/lib/referral/index.d.ts +3 -0
- package/lib/referral/index.d.ts.map +1 -1
- package/lib/referral/index.js +12 -0
- package/lib/referral/index.js.map +1 -1
- package/lib/referral/useCheckReferralCode.d.ts +6 -0
- package/lib/referral/useCheckReferralCode.d.ts.map +1 -0
- package/lib/referral/useCheckReferralCode.js +28 -0
- package/lib/referral/useCheckReferralCode.js.map +1 -0
- package/lib/referral/useGetReferralCode.d.ts +6 -0
- package/lib/referral/useGetReferralCode.d.ts.map +1 -0
- package/lib/referral/useGetReferralCode.js +28 -0
- package/lib/referral/useGetReferralCode.js.map +1 -0
- package/lib/referral/useReferralInfo.d.ts +10 -0
- package/lib/referral/useReferralInfo.d.ts.map +1 -0
- package/lib/referral/useReferralInfo.js +66 -0
- package/lib/referral/useReferralInfo.js.map +1 -0
- package/lib/services/orderMerge/algoOrderMergeHandler.d.ts +1 -0
- package/lib/services/orderMerge/algoOrderMergeHandler.d.ts.map +1 -1
- package/lib/services/orderMerge/algoOrderMergeHandler.js +8 -0
- package/lib/services/orderMerge/algoOrderMergeHandler.js.map +1 -1
- package/lib/services/orderMerge/baseMergeHandler.d.ts +1 -0
- package/lib/services/orderMerge/baseMergeHandler.d.ts.map +1 -1
- package/lib/services/orderMerge/baseMergeHandler.js +1 -1
- package/lib/services/orderMerge/baseMergeHandler.js.map +1 -1
- package/lib/services/orderMerge/regularOrderMergeHandler.d.ts +1 -0
- package/lib/services/orderMerge/regularOrderMergeHandler.d.ts.map +1 -1
- package/lib/services/orderMerge/regularOrderMergeHandler.js +3 -0
- package/lib/services/orderMerge/regularOrderMergeHandler.js.map +1 -1
- package/lib/services/painter/basePaint.d.ts +5 -0
- package/lib/services/painter/basePaint.d.ts.map +1 -1
- package/lib/services/painter/basePaint.js.map +1 -1
- package/lib/services/painter/dataPaint.d.ts +3 -0
- package/lib/services/painter/dataPaint.d.ts.map +1 -1
- package/lib/services/painter/dataPaint.js +88 -16
- package/lib/services/painter/dataPaint.js.map +1 -1
- package/lib/services/painter/layout.config.js +1 -1
- package/lib/services/painter/layout.config.js.map +1 -1
- package/lib/services/painter/painter.d.ts.map +1 -1
- package/lib/services/painter/painter.js +7 -2
- package/lib/services/painter/painter.js.map +1 -1
- package/lib/services/painter/qrPaint.d.ts +8 -0
- package/lib/services/painter/qrPaint.d.ts.map +1 -0
- package/lib/services/painter/qrPaint.js +49 -0
- package/lib/services/painter/qrPaint.js.map +1 -0
- package/lib/useLocalStorage.js +2 -2
- package/lib/useLocalStorage.js.map +1 -1
- package/lib/useMediaQuery.js +7 -7
- package/lib/useMediaQuery.js.map +1 -1
- package/lib/usePoster.d.ts.map +1 -1
- package/lib/usePoster.js +18 -15
- package/lib/usePoster.js.map +1 -1
- package/lib/useSessionStorage.js +2 -2
- package/lib/useSessionStorage.js.map +1 -1
- package/lib/utils/index.d.ts +1 -0
- package/lib/utils/index.d.ts.map +1 -1
- package/lib/utils/index.js +3 -0
- package/lib/utils/index.js.map +1 -1
- package/lib/utils/orderEntryHelper.d.ts +1 -0
- package/lib/utils/orderEntryHelper.d.ts.map +1 -1
- package/lib/utils/orderEntryHelper.js +29 -2
- package/lib/utils/orderEntryHelper.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +2 -2
- package/lib/version.js.map +1 -1
- package/package.json +10 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/orderEntryHelper.ts"],"sourcesContent":["import { OrderEntity, OrderType } from \"@orderly.network/types\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nexport type OrderEntityKey = keyof OrderEntity & string;\n\n// index 3: markPrice\ntype orderEntryInputs = [\n Partial<OrderEntity>,\n // to update field\n keyof OrderEntity,\n any,\n number,\n {\n baseDP: number;\n quoteDP: number;\n }\n];\n\ntype orderEntryInputHandle = (inputs: orderEntryInputs) => orderEntryInputs;\n\nconst needNumberOnlyFields: (keyof OrderEntity)[] = [\n \"order_quantity\",\n \"order_price\",\n \"trigger_price\",\n \"total\",\n];\n\n/// only save number\nexport const cleanStringStyle = (str: string | number): string => {\n if (typeof str !== \"string\") {\n str = str.toString();\n }\n str = str.replace(/,/g, \"\");\n // clear extra character expect number and .\n str = str\n .replace(/[^\\d.]/g, \"\")\n .replace(\".\", \"$#$\")\n .replace(/\\./g, \"\")\n .replace(\"$#$\", \".\");\n\n return str;\n};\n\nexport function baseInputHandle(inputs: orderEntryInputs): orderEntryInputs {\n let [values, input, value, markPrice, config] = inputs;\n\n needNumberOnlyFields.forEach((field) => {\n if (typeof values[field] !== \"undefined\") {\n // @ts-ignore\n values[field] = cleanStringStyle(values[field] as string);\n }\n });\n\n if (needNumberOnlyFields.includes(input)) {\n value = cleanStringStyle(value);\n }\n\n return [\n {\n ...values,\n [input]: value,\n },\n input,\n value,\n markPrice,\n config,\n ];\n\n // return [values, input, value, markPrice];\n}\n\nexport function orderTypeHandle(inputs: orderEntryInputs): orderEntryInputs {\n const [values, input, value, markPrice, config] = inputs;\n\n if (value === OrderType.LIMIT || value === OrderType.STOP_LIMIT) {\n if (values.order_price === \"\") {\n values.total = \"\";\n }\n }\n\n return [values, input, value, markPrice, config];\n}\n\n/**\n * digital precision processing\n * @param inputs\n * @returns\n */\nexport function orderEntityFormatHandle(baseTick: number, quoteTick: number) {\n return function (inputs: orderEntryInputs): orderEntryInputs {\n const [values, input, value, markPrice, config] = inputs;\n\n // TODO: formatting only deals with the thousandths and so on\n // if (!!values.order_quantity) {\n //\n // const d = new Decimal(values.order_quantity);\n // const dp = d.dp();\n // if (dp > quoteTick) {\n // values.order_quantity = d.toDecimalPlaces(baseTick).toNumber();\n // }\n // }\n\n // if (!!values.order_price && values.order_type === OrderType.LIMIT) {\n // const sd = new Decimal(values.order_price).sd(false);\n // if (sd > quoteTick) {\n // values.order_price = new Decimal(values.order_price).toFixed(quoteTick);\n // }\n // }\n\n // if (!!values.total) {\n // const sd = new Decimal(values.total).sd(false);\n // if (sd > quoteTick) {\n // values.total = new Decimal(values.total).toFixed(quoteTick);\n // }\n // }\n\n return [values, input, value, markPrice, config];\n };\n}\n\n/**\n * price input handle\n * @param inputs\n * @returns\n */\nfunction priceInputHandle(inputs: orderEntryInputs): orderEntryInputs {\n const [values, input, value, markPrice, config] = inputs;\n\n if (value === \"\") {\n return [{ ...values, total: \"\" }, input, value, markPrice, config];\n }\n\n // when entering the price, total also needs to be linked\n const price = new Decimal(value);\n const priceDP = price.dp();\n\n if (priceDP > config.quoteDP) {\n values.order_price = price.toDecimalPlaces(config.quoteDP).toString();\n }\n\n price.toDecimalPlaces(Math.min(priceDP, config.quoteDP));\n\n if (!values.order_quantity && !values.total) {\n return [values, input, value, markPrice, config];\n }\n\n const newValue = {\n ...values,\n };\n\n if (values.order_quantity) {\n // total = price.mul(values.order_quantity);\n newValue.total = price.mul(values.order_quantity).todp(2).toString();\n } else if (values.total) {\n // total = new Decimal(values.total);\n newValue.order_quantity = new Decimal(values.total)\n .div(price)\n .todp(config.baseDP)\n .toString();\n }\n\n // const quantityDP = total.dp();\n return [\n // {\n // ...values,\n // total: total.todp(2).toString(),\n // },\n newValue,\n input,\n value,\n markPrice,\n config,\n ];\n}\n\n/**\n * quantity input handle\n * @param inputs\n * @returns\n */\nfunction quantityInputHandle(inputs: orderEntryInputs): orderEntryInputs {\n const [values, input, value, markPrice, config] = inputs;\n\n if (value === \"\") {\n return [{ ...values, total: \"\" }, input, value, markPrice, config];\n }\n\n let quantity = new Decimal(value);\n const quantityDP = quantity.dp();\n\n // check the length for precision and recalculate\n if (quantityDP > config.baseDP) {\n quantity = quantity.toDecimalPlaces(config.baseDP);\n values.order_quantity = quantity.toNumber();\n }\n\n // if(values.order_type === OrderType.MARKET) {\n\n // }\n\n if (\n values.order_type === OrderType.MARKET ||\n values.order_type === OrderType.STOP_MARKET\n ) {\n const price = markPrice;\n values.total = quantity.mul(price).todp(2).toString();\n }\n\n if (\n values.order_type === OrderType.LIMIT ||\n values.order_type === OrderType.STOP_LIMIT\n ) {\n if (values.order_price) {\n const price = Number(values.order_price);\n const total = quantity.mul(price);\n values.total = total.todp(2).toString();\n } else {\n values.total = \"\";\n }\n }\n\n // const totalDP = total.dp();\n // total.todp(Math.min(config.quoteDP, totalDP));\n\n return [\n {\n ...values,\n // total: total.todp(2).toNumber(),\n },\n input,\n value,\n markPrice,\n config,\n ];\n}\n\n/**\n * total input handle\n * @param inputs\n * @returns\n */\nfunction totalInputHandle(inputs: orderEntryInputs): orderEntryInputs {\n const [values, input, value, markPrice, config] = inputs;\n if (value === \"\") {\n return [{ ...values, order_quantity: \"\" }, input, value, markPrice, config];\n }\n\n let price = markPrice;\n\n if (\n (values.order_type === OrderType.LIMIT ||\n values.order_type === OrderType.STOP_LIMIT) &&\n !!values.order_price\n ) {\n price = Number(values.order_price);\n }\n let total = new Decimal(value);\n const totalDP = total.dp();\n\n if (totalDP > config.quoteDP) {\n total = total.toDecimalPlaces(config.quoteDP);\n values.total = total.toString();\n }\n\n const quantity = total.div(price);\n\n return [\n {\n ...values,\n order_quantity: quantity\n .toDecimalPlaces(Math.min(config.baseDP, quantity.dp()))\n .toString(),\n },\n input,\n value,\n markPrice,\n config,\n ];\n}\n\n/**\n * other input handle\n * @param inputs\n * @returns\n */\nfunction otherInputHandle(inputs: orderEntryInputs): orderEntryInputs {\n return inputs;\n}\n\nexport const getCalculateHandler = (\n fieldName: string\n): orderEntryInputHandle => {\n switch (fieldName) {\n case \"order_type\":\n return orderTypeHandle;\n case \"order_quantity\": {\n return quantityInputHandle;\n }\n case \"order_price\": {\n return priceInputHandle;\n }\n case \"total\": {\n return totalInputHandle;\n }\n default:\n return otherInputHandle;\n }\n};\n"],"names":["OrderType","Decimal","needNumberOnlyFields","cleanStringStyle","str","toString","replace","baseInputHandle","inputs","values","input","value","markPrice","config","forEach","field","includes","orderTypeHandle","LIMIT","STOP_LIMIT","order_price","total","orderEntityFormatHandle","baseTick","quoteTick","priceInputHandle","price","priceDP","dp","quoteDP","toDecimalPlaces","Math","min","order_quantity","newValue","mul","todp","div","baseDP","quantityInputHandle","quantity","quantityDP","toNumber","order_type","MARKET","STOP_MARKET","Number","totalInputHandle","totalDP","otherInputHandle","getCalculateHandler","fieldName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAAsBA,SAAS,QAAQ,yBAAyB;AAChE,SAASC,OAAO,QAAQ,yBAAyB;AAmBjD,MAAMC,uBAA8C;IAClD;IACA;IACA;IACA;CACD;AAED,oBAAoB;AACpB,OAAO,MAAMC,mBAAmB,CAACC;IAC/B,IAAI,OAAOA,QAAQ,UAAU;QAC3BA,MAAMA,IAAIC,QAAQ;IACpB;IACAD,MAAMA,IAAIE,OAAO,CAAC,MAAM;IACxB,4CAA4C;IAC5CF,MAAMA,IACHE,OAAO,CAAC,WAAW,IACnBA,OAAO,CAAC,KAAK,OACbA,OAAO,CAAC,OAAO,IACfA,OAAO,CAAC,OAAO;IAElB,OAAOF;AACT,EAAE;AAEF,OAAO,SAASG,gBAAgBC,MAAwB;IACtD,IAAI,CAACC,QAAQC,OAAOC,OAAOC,WAAWC,OAAO,GAAGL;IAEhDN,qBAAqBY,OAAO,CAAC,CAACC;QAC5B,IAAI,OAAON,MAAM,CAACM,MAAM,KAAK,aAAa;YACxC,aAAa;YACbN,MAAM,CAACM,MAAM,GAAGZ,iBAAiBM,MAAM,CAACM,MAAM;QAChD;IACF;IAEA,IAAIb,qBAAqBc,QAAQ,CAACN,QAAQ;QACxCC,QAAQR,iBAAiBQ;IAC3B;IAEA,OAAO;QACL;YACE,GAAGF,MAAM;YACT,CAACC,MAAM,EAAEC;QACX;QACAD;QACAC;QACAC;QACAC;KACD;AAED,8CAA8C;AAChD;AAEA,OAAO,SAASI,gBAAgBT,MAAwB;IACtD,MAAM,CAACC,QAAQC,OAAOC,OAAOC,WAAWC,OAAO,GAAGL;IAElD,IAAIG,UAAUX,UAAUkB,KAAK,IAAIP,UAAUX,UAAUmB,UAAU,EAAE;QAC/D,IAAIV,OAAOW,WAAW,KAAK,IAAI;YAC7BX,OAAOY,KAAK,GAAG;QACjB;IACF;IAEA,OAAO;QAACZ;QAAQC;QAAOC;QAAOC;QAAWC;KAAO;AAClD;AAEA;;;;CAIC,GACD,OAAO,SAASS,wBAAwBC,QAAgB,EAAEC,SAAiB;IACzE,OAAO,SAAUhB,MAAwB;QACvC,MAAM,CAACC,QAAQC,OAAOC,OAAOC,WAAWC,OAAO,GAAGL;QAElD,6DAA6D;QAC7D,iCAAiC;QACjC,EAAE;QACF,kDAAkD;QAClD,uBAAuB;QACvB,0BAA0B;QAC1B,sEAAsE;QACtE,MAAM;QACN,IAAI;QAEJ,uEAAuE;QACvE,0DAA0D;QAC1D,0BAA0B;QAC1B,+EAA+E;QAC/E,MAAM;QACN,IAAI;QAEJ,wBAAwB;QACxB,oDAAoD;QACpD,0BAA0B;QAC1B,mEAAmE;QACnE,MAAM;QACN,IAAI;QAEJ,OAAO;YAACC;YAAQC;YAAOC;YAAOC;YAAWC;SAAO;IAClD;AACF;AAEA;;;;CAIC,GACD,SAASY,iBAAiBjB,MAAwB;IAChD,MAAM,CAACC,QAAQC,OAAOC,OAAOC,WAAWC,OAAO,GAAGL;IAElD,IAAIG,UAAU,IAAI;QAChB,OAAO;YAAC;gBAAE,GAAGF,MAAM;gBAAEY,OAAO;YAAG;YAAGX;YAAOC;YAAOC;YAAWC;SAAO;IACpE;IAEA,yDAAyD;IACzD,MAAMa,QAAQ,IAAIzB,QAAQU;IAC1B,MAAMgB,UAAUD,MAAME,EAAE;IAExB,IAAID,UAAUd,OAAOgB,OAAO,EAAE;QAC5BpB,OAAOW,WAAW,GAAGM,MAAMI,eAAe,CAACjB,OAAOgB,OAAO,EAAExB,QAAQ;IACrE;IAEAqB,MAAMI,eAAe,CAACC,KAAKC,GAAG,CAACL,SAASd,OAAOgB,OAAO;IAEtD,IAAI,CAACpB,OAAOwB,cAAc,IAAI,CAACxB,OAAOY,KAAK,EAAE;QAC3C,OAAO;YAACZ;YAAQC;YAAOC;YAAOC;YAAWC;SAAO;IAClD;IAEA,MAAMqB,WAAW;QACf,GAAGzB,MAAM;IACX;IAEA,IAAIA,OAAOwB,cAAc,EAAE;QACzB,4CAA4C;QAC5CC,SAASb,KAAK,GAAGK,MAAMS,GAAG,CAAC1B,OAAOwB,cAAc,EAAEG,IAAI,CAAC,GAAG/B,QAAQ;IACpE,OAAO,IAAII,OAAOY,KAAK,EAAE;QACvB,qCAAqC;QACrCa,SAASD,cAAc,GAAG,IAAIhC,QAAQQ,OAAOY,KAAK,EAC/CgB,GAAG,CAACX,OACJU,IAAI,CAACvB,OAAOyB,MAAM,EAClBjC,QAAQ;IACb;IAEA,iCAAiC;IACjC,OAAO;QACL,IAAI;QACJ,eAAe;QACf,qCAAqC;QACrC,KAAK;QACL6B;QACAxB;QACAC;QACAC;QACAC;KACD;AACH;AAEA;;;;CAIC,GACD,SAAS0B,oBAAoB/B,MAAwB;IACnD,MAAM,CAACC,QAAQC,OAAOC,OAAOC,WAAWC,OAAO,GAAGL;IAElD,IAAIG,UAAU,IAAI;QAChB,OAAO;YAAC;gBAAE,GAAGF,MAAM;gBAAEY,OAAO;YAAG;YAAGX;YAAOC;YAAOC;YAAWC;SAAO;IACpE;IAEA,IAAI2B,WAAW,IAAIvC,QAAQU;IAC3B,MAAM8B,aAAaD,SAASZ,EAAE;IAE9B,iDAAiD;IACjD,IAAIa,aAAa5B,OAAOyB,MAAM,EAAE;QAC9BE,WAAWA,SAASV,eAAe,CAACjB,OAAOyB,MAAM;QACjD7B,OAAOwB,cAAc,GAAGO,SAASE,QAAQ;IAC3C;IAEA,+CAA+C;IAE/C,IAAI;IAEJ,IACEjC,OAAOkC,UAAU,KAAK3C,UAAU4C,MAAM,IACtCnC,OAAOkC,UAAU,KAAK3C,UAAU6C,WAAW,EAC3C;QACA,MAAMnB,QAAQd;QACdH,OAAOY,KAAK,GAAGmB,SAASL,GAAG,CAACT,OAAOU,IAAI,CAAC,GAAG/B,QAAQ;IACrD;IAEA,IACEI,OAAOkC,UAAU,KAAK3C,UAAUkB,KAAK,IACrCT,OAAOkC,UAAU,KAAK3C,UAAUmB,UAAU,EAC1C;QACA,IAAIV,OAAOW,WAAW,EAAE;YACtB,MAAMM,QAAQoB,OAAOrC,OAAOW,WAAW;YACvC,MAAMC,QAAQmB,SAASL,GAAG,CAACT;YAC3BjB,OAAOY,KAAK,GAAGA,MAAMe,IAAI,CAAC,GAAG/B,QAAQ;QACvC,OAAO;YACLI,OAAOY,KAAK,GAAG;QACjB;IACF;IAEA,8BAA8B;IAC9B,iDAAiD;IAEjD,OAAO;QACL;YACE,GAAGZ,MAAM;QAEX;QACAC;QACAC;QACAC;QACAC;KACD;AACH;AAEA;;;;CAIC,GACD,SAASkC,iBAAiBvC,MAAwB;IAChD,MAAM,CAACC,QAAQC,OAAOC,OAAOC,WAAWC,OAAO,GAAGL;IAClD,IAAIG,UAAU,IAAI;QAChB,OAAO;YAAC;gBAAE,GAAGF,MAAM;gBAAEwB,gBAAgB;YAAG;YAAGvB;YAAOC;YAAOC;YAAWC;SAAO;IAC7E;IAEA,IAAIa,QAAQd;IAEZ,IACE,AAACH,CAAAA,OAAOkC,UAAU,KAAK3C,UAAUkB,KAAK,IACpCT,OAAOkC,UAAU,KAAK3C,UAAUmB,UAAU,AAAD,KAC3C,CAAC,CAACV,OAAOW,WAAW,EACpB;QACAM,QAAQoB,OAAOrC,OAAOW,WAAW;IACnC;IACA,IAAIC,QAAQ,IAAIpB,QAAQU;IACxB,MAAMqC,UAAU3B,MAAMO,EAAE;IAExB,IAAIoB,UAAUnC,OAAOgB,OAAO,EAAE;QAC5BR,QAAQA,MAAMS,eAAe,CAACjB,OAAOgB,OAAO;QAC5CpB,OAAOY,KAAK,GAAGA,MAAMhB,QAAQ;IAC/B;IAEA,MAAMmC,WAAWnB,MAAMgB,GAAG,CAACX;IAE3B,OAAO;QACL;YACE,GAAGjB,MAAM;YACTwB,gBAAgBO,SACbV,eAAe,CAACC,KAAKC,GAAG,CAACnB,OAAOyB,MAAM,EAAEE,SAASZ,EAAE,KACnDvB,QAAQ;QACb;QACAK;QACAC;QACAC;QACAC;KACD;AACH;AAEA;;;;CAIC,GACD,SAASoC,iBAAiBzC,MAAwB;IAChD,OAAOA;AACT;AAEA,OAAO,MAAM0C,sBAAsB,CACjCC;IAEA,OAAQA;QACN,KAAK;YACH,OAAOlC;QACT,KAAK;YAAkB;gBACrB,OAAOsB;YACT;QACA,KAAK;YAAe;gBAClB,OAAOd;YACT;QACA,KAAK;YAAS;gBACZ,OAAOsB;YACT;QACA;YACE,OAAOE;IACX;AACF,EAAE"}
|
|
1
|
+
{"version":3,"sources":["../../src/utils/orderEntryHelper.ts"],"sourcesContent":["import { OrderEntity, OrderType } from \"@orderly.network/types\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nexport type OrderEntityKey = keyof OrderEntity & string;\n\n// index 3: markPrice\ntype orderEntryInputs = [\n Partial<OrderEntity>,\n // to update field\n keyof OrderEntity,\n any,\n number,\n {\n baseDP: number;\n quoteDP: number;\n }\n];\n\ntype orderEntryInputHandle = (inputs: orderEntryInputs) => orderEntryInputs;\n\nconst needNumberOnlyFields: (keyof OrderEntity)[] = [\n \"order_quantity\",\n \"order_price\",\n \"trigger_price\",\n \"total\",\n];\n\n/// only save number\nexport const cleanStringStyle = (str: string | number): string => {\n if (typeof str !== \"string\") {\n str = `${str}`;\n }\n str = str.replace(/,/g, \"\");\n // clear extra character expect number and .\n str = str\n .replace(/[^\\d.]/g, \"\")\n .replace(\".\", \"$#$\")\n .replace(/\\./g, \"\")\n .replace(\"$#$\", \".\");\n\n return str;\n};\n\nexport function baseInputHandle(inputs: orderEntryInputs): orderEntryInputs {\n let [values, input, value, markPrice, config] = inputs;\n\n needNumberOnlyFields.forEach((field) => {\n if (typeof values[field] !== \"undefined\") {\n // @ts-ignore\n values[field] = cleanStringStyle(values[field] as string);\n }\n });\n\n if (needNumberOnlyFields.includes(input)) {\n value = cleanStringStyle(value);\n }\n\n return [\n {\n ...values,\n [input]: value,\n },\n input,\n value,\n markPrice,\n config,\n ];\n\n // return [values, input, value, markPrice];\n}\n\nexport function orderTypeHandle(inputs: orderEntryInputs): orderEntryInputs {\n const [values, input, value, markPrice, config] = inputs;\n\n if (value === OrderType.LIMIT || value === OrderType.STOP_LIMIT) {\n if (values.order_price === \"\") {\n values.total = \"\";\n }\n }\n\n return [values, input, value, markPrice, config];\n}\n\n/**\n * digital precision processing\n * @param inputs\n * @returns\n */\nexport function orderEntityFormatHandle(baseTick: number, quoteTick: number) {\n return function (inputs: orderEntryInputs): orderEntryInputs {\n const [values, input, value, markPrice, config] = inputs;\n\n // TODO: formatting only deals with the thousandths and so on\n // if (!!values.order_quantity) {\n //\n // const d = new Decimal(values.order_quantity);\n // const dp = d.dp();\n // if (dp > quoteTick) {\n // values.order_quantity = d.toDecimalPlaces(baseTick).toNumber();\n // }\n // }\n\n // if (!!values.order_price && values.order_type === OrderType.LIMIT) {\n // const sd = new Decimal(values.order_price).sd(false);\n // if (sd > quoteTick) {\n // values.order_price = new Decimal(values.order_price).toFixed(quoteTick);\n // }\n // }\n\n // if (!!values.total) {\n // const sd = new Decimal(values.total).sd(false);\n // if (sd > quoteTick) {\n // values.total = new Decimal(values.total).toFixed(quoteTick);\n // }\n // }\n\n return [values, input, value, markPrice, config];\n };\n}\n\n/**\n * price input handle\n * @param inputs\n * @returns\n */\nfunction priceInputHandle(inputs: orderEntryInputs): orderEntryInputs {\n const [values, input, value, markPrice, config] = inputs;\n\n if (value === \"\") {\n return [{ ...values, total: \"\" }, input, value, markPrice, config];\n }\n\n // when entering the price, total also needs to be linked\n const price = new Decimal(value);\n const priceDP = price.dp();\n\n if (priceDP > config.quoteDP) {\n values.order_price = price.toDecimalPlaces(config.quoteDP).toString();\n }\n\n price.toDecimalPlaces(Math.min(priceDP, config.quoteDP));\n\n if (!values.order_quantity && !values.total) {\n return [values, input, value, markPrice, config];\n }\n\n const newValue = {\n ...values,\n };\n\n if (values.order_quantity) {\n // total = price.mul(values.order_quantity);\n newValue.total = price.mul(values.order_quantity).todp(2).toString();\n } else if (values.total) {\n // total = new Decimal(values.total);\n newValue.order_quantity = new Decimal(values.total)\n .div(price)\n .todp(config.baseDP)\n .toString();\n }\n\n // const quantityDP = total.dp();\n return [\n // {\n // ...values,\n // total: total.todp(2).toString(),\n // },\n newValue,\n input,\n value,\n markPrice,\n config,\n ];\n}\n\n/**\n * quantity input handle\n * @param inputs\n * @returns\n */\nfunction quantityInputHandle(inputs: orderEntryInputs): orderEntryInputs {\n const [values, input, value, markPrice, config] = inputs;\n\n if (value === \"\") {\n return [{ ...values, total: \"\" }, input, value, markPrice, config];\n }\n\n let quantity = new Decimal(value);\n const quantityDP = quantity.dp();\n\n // check the length for precision and recalculate\n if (quantityDP > config.baseDP) {\n quantity = quantity.toDecimalPlaces(config.baseDP);\n values.order_quantity = quantity.toNumber();\n }\n\n // if(values.order_type === OrderType.MARKET) {\n\n // }\n\n if (\n values.order_type === OrderType.MARKET ||\n values.order_type === OrderType.STOP_MARKET\n ) {\n const price = markPrice;\n values.total = quantity.mul(price).todp(2).toString();\n }\n\n if (\n values.order_type === OrderType.LIMIT ||\n values.order_type === OrderType.STOP_LIMIT\n ) {\n if (values.order_price) {\n const price = Number(values.order_price);\n const total = quantity.mul(price);\n values.total = total.todp(config.quoteDP).toString();\n } else {\n values.total = \"\";\n }\n }\n\n // const totalDP = total.dp();\n // total.todp(Math.min(config.quoteDP, totalDP));\n\n return [\n {\n ...values,\n // total: total.todp(2).toNumber(),\n },\n input,\n value,\n markPrice,\n config,\n ];\n}\n\n/**\n * total input handle\n * @param inputs\n * @returns\n */\nfunction totalInputHandle(inputs: orderEntryInputs): orderEntryInputs {\n const [values, input, value, markPrice, config] = inputs;\n if (value === \"\") {\n return [{ ...values, order_quantity: \"\" }, input, value, markPrice, config];\n }\n\n let price = markPrice;\n\n if (\n (values.order_type === OrderType.LIMIT ||\n values.order_type === OrderType.STOP_LIMIT) &&\n !!values.order_price\n ) {\n price = Number(values.order_price);\n }\n let total = new Decimal(value);\n const totalDP = total.dp();\n\n if (totalDP > config.quoteDP) {\n total = total.toDecimalPlaces(config.quoteDP);\n values.total = total.toString();\n }\n\n const quantity = total.div(price);\n\n return [\n {\n ...values,\n order_quantity: quantity\n .toDecimalPlaces(Math.min(config.baseDP, quantity.dp()))\n .toString(),\n },\n input,\n value,\n markPrice,\n config,\n ];\n}\n\n/**\n * other input handle\n * @param inputs\n * @returns\n */\nfunction otherInputHandle(inputs: orderEntryInputs): orderEntryInputs {\n return inputs;\n}\n\nexport const getCalculateHandler = (\n fieldName: string\n): orderEntryInputHandle => {\n switch (fieldName) {\n case \"order_type\":\n return orderTypeHandle;\n case \"order_quantity\": {\n return quantityInputHandle;\n }\n case \"order_price\": {\n return priceInputHandle;\n }\n case \"total\": {\n return totalInputHandle;\n }\n default:\n return otherInputHandle;\n }\n};\n\n//** format number */\nexport function formatNumber(\n qty?: string | number,\n dp?: number | string\n): string | undefined {\n if (typeof qty === \"undefined\") return qty;\n if (typeof dp === \"undefined\") return `${qty}`;\n\n // console.log(\"qty\", qty, \"dp\", dp);\n \n const _qty = `${qty}`.replace(/,/g, \"\");\n \n \n try {\n const _dp = new Decimal(dp);\n const _qtyDecimal = new Decimal(_qty);\n \n if (_dp.lessThan(1)) {\n if (`${_qty}`.endsWith(\".\")) return `${_qty}`;\n \n const numStr = dp.toString();\n const decimalIndex = numStr.indexOf(\".\");\n const digitsAfterDecimal =\n decimalIndex === -1 ? 0 : numStr.length - decimalIndex - 1;\n\n const result = _qtyDecimal\n .toDecimalPlaces(digitsAfterDecimal, Decimal.ROUND_DOWN)\n .toString();\n\n return result;\n }\n\n if (_qtyDecimal.lessThan(_dp)) {\n return _qty;\n }\n\n return _qtyDecimal\n .dividedBy(_dp)\n .toDecimalPlaces(0, Decimal.ROUND_DOWN)\n .mul(dp)\n .toString();\n } catch (e) { \n return undefined;\n }\n}\n"],"names":["OrderType","Decimal","needNumberOnlyFields","cleanStringStyle","str","replace","baseInputHandle","inputs","values","input","value","markPrice","config","forEach","field","includes","orderTypeHandle","LIMIT","STOP_LIMIT","order_price","total","orderEntityFormatHandle","baseTick","quoteTick","priceInputHandle","price","priceDP","dp","quoteDP","toDecimalPlaces","toString","Math","min","order_quantity","newValue","mul","todp","div","baseDP","quantityInputHandle","quantity","quantityDP","toNumber","order_type","MARKET","STOP_MARKET","Number","totalInputHandle","totalDP","otherInputHandle","getCalculateHandler","fieldName","formatNumber","qty","_qty","_dp","_qtyDecimal","lessThan","endsWith","numStr","decimalIndex","indexOf","digitsAfterDecimal","length","result","ROUND_DOWN","dividedBy","e","undefined"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
package/esm/version.d.ts
CHANGED
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.5.
|
|
3
|
+
window.__ORDERLY_VERSION__["@orderly.network/hooks"] = "1.5.1";
|
|
4
4
|
}
|
|
5
|
-
export default "1.5.
|
|
5
|
+
export default "1.5.1";
|
|
6
6
|
|
|
7
7
|
//# sourceMappingURL=version.js.map
|
package/esm/version.js.map
CHANGED
|
@@ -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.5.
|
|
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.5.1\";\n};\n\nexport default \"1.5.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,QAAQ"}
|
|
@@ -31,4 +31,5 @@ export { useSettleSubscription } from "./useSettleSubscription";
|
|
|
31
31
|
export { usePrivateDataObserver } from "./usePrivateDataObserver";
|
|
32
32
|
export { useSymbolPriceRange } from "./useSymbolPriceRange";
|
|
33
33
|
export { useTPSLOrder, type ComputedAlgoOrder, } from "./useTakeProfitAndStopLoss";
|
|
34
|
+
export { useSymbolLeverage } from "./useSymbolLeverage";
|
|
34
35
|
//# sourceMappingURL=orderlyHooks.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orderlyHooks.d.ts","sourceRoot":"","sources":["../../src/orderly/orderlyHooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EACV,aAAa,EACb,aAAa,EACb,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACvD,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EACV,gBAAgB,EAChB,KAAK,EACL,MAAM,EACN,qBAAqB,GACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EACL,YAAY,EACZ,KAAK,iBAAiB,GACvB,MAAM,4BAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"orderlyHooks.d.ts","sourceRoot":"","sources":["../../src/orderly/orderlyHooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EACV,aAAa,EACb,aAAa,EACb,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACvD,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EACV,gBAAgB,EAChB,KAAK,EACL,MAAM,EACN,qBAAqB,GACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EACL,YAAY,EACZ,KAAK,iBAAiB,GACvB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -78,6 +78,9 @@ _export(exports, {
|
|
|
78
78
|
useSettleSubscription: function() {
|
|
79
79
|
return _useSettleSubscription.useSettleSubscription;
|
|
80
80
|
},
|
|
81
|
+
useSymbolLeverage: function() {
|
|
82
|
+
return _useSymbolLeverage.useSymbolLeverage;
|
|
83
|
+
},
|
|
81
84
|
useSymbolPriceRange: function() {
|
|
82
85
|
return _useSymbolPriceRange.useSymbolPriceRange;
|
|
83
86
|
},
|
|
@@ -125,5 +128,6 @@ const _useSettleSubscription = require("./useSettleSubscription");
|
|
|
125
128
|
const _usePrivateDataObserver = require("./usePrivateDataObserver");
|
|
126
129
|
const _useSymbolPriceRange = require("./useSymbolPriceRange");
|
|
127
130
|
const _useTakeProfitAndStopLoss = require("./useTakeProfitAndStopLoss");
|
|
131
|
+
const _useSymbolLeverage = require("./useSymbolLeverage");
|
|
128
132
|
|
|
129
133
|
//# sourceMappingURL=orderlyHooks.js.map
|
|
@@ -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 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":"
|
|
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\n\nexport { useSymbolLeverage } from \"./useSymbolLeverage\";"],"names":["MarketsType","useAccountInfo","useChain","useChains","useCollateral","useDeposit","useFundingRate","useHoldingStream","useIndexPrice","useLeverage","useMarginRatio","useMarkPrice","useMarkPricesStream","useMarketTradeStream","useMarkets","useMarketsStream","useMaxQty","useOrderEntry","useOrderStream","useOrderbookStream","usePositionStream","usePrivateDataObserver","useSettleSubscription","useSymbolLeverage","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;;IAWrBC,iBAAiB;eAAjBA,oCAAiB;;IARjBC,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;mCAG2B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCollateral.d.ts","sourceRoot":"","sources":["../../src/orderly/useCollateral.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,GAAG,EAAe,MAAM,wBAAwB,CAAC;AAO/D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IAErB,SAAS,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC;CAC/B,CAAC;AAKF,eAAO,MAAM,aAAa,aACf;IACP,wBAAwB;IACxB,EAAE,EAAE,MAAM,CAAC;CACZ,KACA,
|
|
1
|
+
{"version":3,"file":"useCollateral.d.ts","sourceRoot":"","sources":["../../src/orderly/useCollateral.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,GAAG,EAAe,MAAM,wBAAwB,CAAC;AAO/D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IAErB,SAAS,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC;CAC/B,CAAC;AAKF,eAAO,MAAM,aAAa,aACf;IACP,wBAAwB;IACxB,EAAE,EAAE,MAAM,CAAC;CACZ,KACA,iBAoFF,CAAC"}
|
|
@@ -13,12 +13,10 @@ const _usePrivateQuery = require("../usePrivateQuery");
|
|
|
13
13
|
const _usePositionStream = require("./usePositionStream/usePositionStream");
|
|
14
14
|
const _ramda = require("ramda");
|
|
15
15
|
const _perp = require("@orderly.network/perp");
|
|
16
|
-
const _types = require("@orderly.network/types");
|
|
17
16
|
const _useSymbolsInfo = require("./useSymbolsInfo");
|
|
18
17
|
const _utils = require("@orderly.network/utils");
|
|
19
18
|
const _useMarkPricesStream = require("./useMarkPricesStream");
|
|
20
19
|
const _useHoldingStream = require("./useHoldingStream");
|
|
21
|
-
const _useOrderStream = require("./useOrderStream/useOrderStream");
|
|
22
20
|
const positionsPath = (0, _ramda.pathOr)([], [
|
|
23
21
|
0,
|
|
24
22
|
"rows"
|
|
@@ -31,15 +29,17 @@ const useCollateral = (options = {
|
|
|
31
29
|
dp: 6
|
|
32
30
|
})=>{
|
|
33
31
|
const { dp } = options;
|
|
34
|
-
const positions = (0, _usePositionStream.usePositionStream)(
|
|
35
|
-
|
|
36
|
-
status: _types.OrderStatus.NEW
|
|
32
|
+
const positions = (0, _usePositionStream.usePositionStream)(undefined, {
|
|
33
|
+
includedPendingOrder: true
|
|
37
34
|
});
|
|
35
|
+
// console.log("positions", positions);
|
|
36
|
+
// const [orders] = useOrderStream({ status: OrderStatus.NEW });
|
|
38
37
|
const { data: accountInfo } = (0, _usePrivateQuery.usePrivateQuery)("/v1/client/info");
|
|
39
38
|
const symbolInfo = (0, _useSymbolsInfo.useSymbolsInfo)();
|
|
40
39
|
const { data: markPrices } = (0, _useMarkPricesStream.useMarkPricesStream)();
|
|
41
40
|
const { usdc } = (0, _useHoldingStream.useHoldingStream)();
|
|
42
|
-
const filterAlgoOrders =
|
|
41
|
+
// const filterAlgoOrders =
|
|
42
|
+
// orders?.filter((item) => item.algo_order_id === undefined) ?? [];
|
|
43
43
|
// const { data: holding } = usePrivateQuery<API.Holding[]>(
|
|
44
44
|
// "/v1/client/holding",
|
|
45
45
|
// {
|
|
@@ -67,9 +67,8 @@ const useCollateral = (options = {
|
|
|
67
67
|
if (!accountInfo || !symbolInfo || !markPrices) {
|
|
68
68
|
return 0;
|
|
69
69
|
}
|
|
70
|
-
return _perp.account.
|
|
70
|
+
return _perp.account.totalInitialMarginWithQty({
|
|
71
71
|
positions: positionsPath(positions),
|
|
72
|
-
orders: filterAlgoOrders,
|
|
73
72
|
markPrices,
|
|
74
73
|
IMR_Factors: accountInfo.imr_factor,
|
|
75
74
|
maxLeverage: accountInfo.max_leverage,
|
|
@@ -77,7 +76,7 @@ const useCollateral = (options = {
|
|
|
77
76
|
});
|
|
78
77
|
}, [
|
|
79
78
|
positions,
|
|
80
|
-
filterAlgoOrders,
|
|
79
|
+
// filterAlgoOrders,
|
|
81
80
|
markPrices,
|
|
82
81
|
accountInfo,
|
|
83
82
|
symbolInfo
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/orderly/useCollateral.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport { usePrivateQuery } from \"../usePrivateQuery\";\nimport {\n pathOr_unsettledPnLPathOr,\n usePositionStream,\n} from \"./usePositionStream/usePositionStream\";\nimport { pathOr } from \"ramda\";\nimport { account } from \"@orderly.network/perp\";\nimport { type API, OrderStatus } from \"@orderly.network/types\";\nimport { useSymbolsInfo } from \"./useSymbolsInfo\";\nimport { zero } from \"@orderly.network/utils\";\nimport { useMarkPricesStream } from \"./useMarkPricesStream\";\nimport { useHoldingStream } from \"./useHoldingStream\";\nimport { useOrderStream } from \"./useOrderStream/useOrderStream\";\n\nexport type CollateralOutputs = {\n totalCollateral: number;\n freeCollateral: number;\n totalValue: number;\n availableBalance: number;\n unsettledPnL: number;\n\n positions: API.Position[];\n accountInfo?: API.AccountInfo;\n};\n\nconst positionsPath = pathOr([], [0, \"rows\"]);\nconst totalCollateralPath = pathOr(0, [0, \"totalCollateral\"]);\n\nexport const useCollateral = (\n options: {\n /** decimal precision */\n dp: number;\n } = { dp: 6 }\n): CollateralOutputs => {\n const { dp } = options;\n const positions = usePositionStream();\n\n const [orders] = useOrderStream({ status: OrderStatus.NEW });\n\n const { data: accountInfo } =\n usePrivateQuery<API.AccountInfo>(\"/v1/client/info\");\n\n const symbolInfo = useSymbolsInfo();\n\n const { data: markPrices } = useMarkPricesStream();\n\n const { usdc } = useHoldingStream();\n\n const filterAlgoOrders =\n
|
|
1
|
+
{"version":3,"sources":["../../src/orderly/useCollateral.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport { usePrivateQuery } from \"../usePrivateQuery\";\nimport {\n pathOr_unsettledPnLPathOr,\n usePositionStream,\n} from \"./usePositionStream/usePositionStream\";\nimport { pathOr } from \"ramda\";\nimport { account } from \"@orderly.network/perp\";\nimport { type API, OrderStatus } from \"@orderly.network/types\";\nimport { useSymbolsInfo } from \"./useSymbolsInfo\";\nimport { zero } from \"@orderly.network/utils\";\nimport { useMarkPricesStream } from \"./useMarkPricesStream\";\nimport { useHoldingStream } from \"./useHoldingStream\";\nimport { useOrderStream } from \"./useOrderStream/useOrderStream\";\n\nexport type CollateralOutputs = {\n totalCollateral: number;\n freeCollateral: number;\n totalValue: number;\n availableBalance: number;\n unsettledPnL: number;\n\n positions: API.Position[];\n accountInfo?: API.AccountInfo;\n};\n\nconst positionsPath = pathOr([], [0, \"rows\"]);\nconst totalCollateralPath = pathOr(0, [0, \"totalCollateral\"]);\n\nexport const useCollateral = (\n options: {\n /** decimal precision */\n dp: number;\n } = { dp: 6 }\n): CollateralOutputs => {\n const { dp } = options;\n const positions = usePositionStream(undefined, {\n includedPendingOrder: true,\n });\n\n // console.log(\"positions\", positions);\n\n // const [orders] = useOrderStream({ status: OrderStatus.NEW });\n\n const { data: accountInfo } =\n usePrivateQuery<API.AccountInfo>(\"/v1/client/info\");\n\n const symbolInfo = useSymbolsInfo();\n\n const { data: markPrices } = useMarkPricesStream();\n\n const { usdc } = useHoldingStream();\n\n // const filterAlgoOrders =\n // orders?.filter((item) => item.algo_order_id === undefined) ?? [];\n\n // const { data: holding } = usePrivateQuery<API.Holding[]>(\n // \"/v1/client/holding\",\n // {\n // formatter: (data) => {\n // return data.holding;\n // },\n // }\n // );\n\n const [totalCollateral, totalValue] = useMemo(() => {\n return [\n pathOr(zero, [0, \"totalCollateral\"], positions),\n pathOr(zero, [0, \"totalValue\"], positions),\n ];\n }, [positions, markPrices]);\n\n const totalInitialMarginWithOrders = useMemo(() => {\n if (!accountInfo || !symbolInfo || !markPrices) {\n return 0;\n }\n\n return account.totalInitialMarginWithQty({\n positions: positionsPath(positions),\n markPrices,\n IMR_Factors: accountInfo.imr_factor,\n maxLeverage: accountInfo.max_leverage,\n symbolInfo,\n });\n }, [\n positions,\n // filterAlgoOrders,\n markPrices,\n accountInfo,\n symbolInfo,\n ]);\n\n const freeCollateral = useMemo(() => {\n return account.freeCollateral({\n totalCollateral,\n totalInitialMarginWithOrders,\n });\n }, [totalCollateral, totalInitialMarginWithOrders]);\n\n const availableBalance = useMemo(() => {\n return account.availableBalance({\n USDCHolding: usdc?.holding ?? 0,\n unsettlementPnL: pathOr_unsettledPnLPathOr(positions),\n });\n }, [usdc?.holding, pathOr_unsettledPnLPathOr(positions)]);\n\n return {\n totalCollateral: totalCollateral.toDecimalPlaces(dp).toNumber(),\n freeCollateral: freeCollateral.toDecimalPlaces(dp).toNumber(),\n totalValue: totalValue.toDecimalPlaces(dp).toNumber(),\n availableBalance,\n unsettledPnL: pathOr_unsettledPnLPathOr(positions),\n\n accountInfo,\n\n // @hidden\n positions: positionsPath(positions),\n };\n};\n"],"names":["useCollateral","positionsPath","pathOr","totalCollateralPath","options","dp","positions","usePositionStream","undefined","includedPendingOrder","data","accountInfo","usePrivateQuery","symbolInfo","useSymbolsInfo","markPrices","useMarkPricesStream","usdc","useHoldingStream","totalCollateral","totalValue","useMemo","zero","totalInitialMarginWithOrders","account","totalInitialMarginWithQty","IMR_Factors","imr_factor","maxLeverage","max_leverage","freeCollateral","availableBalance","USDCHolding","holding","unsettlementPnL","pathOr_unsettledPnLPathOr","toDecimalPlaces","toNumber","unsettledPnL"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;+BA6BaA;;;eAAAA;;;uBA7BW;iCACQ;mCAIzB;uBACgB;sBACC;gCAEO;uBACV;qCACe;kCACH;AAcjC,MAAMC,gBAAgBC,IAAAA,aAAM,EAAC,EAAE,EAAE;IAAC;IAAG;CAAO;AAC5C,MAAMC,sBAAsBD,IAAAA,aAAM,EAAC,GAAG;IAAC;IAAG;CAAkB;AAErD,MAAMF,gBAAgB,CAC3BI,UAGI;IAAEC,IAAI;AAAE,CAAC;IAEb,MAAM,EAAEA,EAAE,EAAE,GAAGD;IACf,MAAME,YAAYC,IAAAA,oCAAiB,EAACC,WAAW;QAC7CC,sBAAsB;IACxB;IAEA,uCAAuC;IAEvC,gEAAgE;IAEhE,MAAM,EAAEC,MAAMC,WAAW,EAAE,GACzBC,IAAAA,gCAAe,EAAkB;IAEnC,MAAMC,aAAaC,IAAAA,8BAAc;IAEjC,MAAM,EAAEJ,MAAMK,UAAU,EAAE,GAAGC,IAAAA,wCAAmB;IAEhD,MAAM,EAAEC,IAAI,EAAE,GAAGC,IAAAA,kCAAgB;IAEjC,2BAA2B;IAC3B,sEAAsE;IAEtE,4DAA4D;IAC5D,0BAA0B;IAC1B,MAAM;IACN,6BAA6B;IAC7B,6BAA6B;IAC7B,SAAS;IACT,MAAM;IACN,KAAK;IAEL,MAAM,CAACC,iBAAiBC,WAAW,GAAGC,IAAAA,cAAO,EAAC;QAC5C,OAAO;YACLnB,IAAAA,aAAM,EAACoB,WAAI,EAAE;gBAAC;gBAAG;aAAkB,EAAEhB;YACrCJ,IAAAA,aAAM,EAACoB,WAAI,EAAE;gBAAC;gBAAG;aAAa,EAAEhB;SACjC;IACH,GAAG;QAACA;QAAWS;KAAW;IAE1B,MAAMQ,+BAA+BF,IAAAA,cAAO,EAAC;QAC3C,IAAI,CAACV,eAAe,CAACE,cAAc,CAACE,YAAY;YAC9C,OAAO;QACT;QAEA,OAAOS,aAAO,CAACC,yBAAyB,CAAC;YACvCnB,WAAWL,cAAcK;YACzBS;YACAW,aAAaf,YAAYgB,UAAU;YACnCC,aAAajB,YAAYkB,YAAY;YACrChB;QACF;IACF,GAAG;QACDP;QACA,oBAAoB;QACpBS;QACAJ;QACAE;KACD;IAED,MAAMiB,iBAAiBT,IAAAA,cAAO,EAAC;QAC7B,OAAOG,aAAO,CAACM,cAAc,CAAC;YAC5BX;YACAI;QACF;IACF,GAAG;QAACJ;QAAiBI;KAA6B;IAElD,MAAMQ,mBAAmBV,IAAAA,cAAO,EAAC;QAC/B,OAAOG,aAAO,CAACO,gBAAgB,CAAC;YAC9BC,aAAaf,MAAMgB,WAAW;YAC9BC,iBAAiBC,IAAAA,4CAAyB,EAAC7B;QAC7C;IACF,GAAG;QAACW,MAAMgB;QAASE,IAAAA,4CAAyB,EAAC7B;KAAW;IAExD,OAAO;QACLa,iBAAiBA,gBAAgBiB,eAAe,CAAC/B,IAAIgC,QAAQ;QAC7DP,gBAAgBA,eAAeM,eAAe,CAAC/B,IAAIgC,QAAQ;QAC3DjB,YAAYA,WAAWgB,eAAe,CAAC/B,IAAIgC,QAAQ;QACnDN;QACAO,cAAcH,IAAAA,4CAAyB,EAAC7B;QAExCK;QAEA,UAAU;QACVL,WAAWL,cAAcK;IAC3B;AACF"}
|
|
@@ -9,6 +9,10 @@ export interface PositionReturn {
|
|
|
9
9
|
}
|
|
10
10
|
export declare const usePositionStream: (symbol?: string, options?: SWRConfiguration & {
|
|
11
11
|
calcMode?: PriceMode;
|
|
12
|
+
/**
|
|
13
|
+
* If true, the pending order will be included in the result.
|
|
14
|
+
*/
|
|
15
|
+
includedPendingOrder?: boolean;
|
|
12
16
|
}) => readonly [{
|
|
13
17
|
readonly rows: API.PositionTPSLExt[] | null;
|
|
14
18
|
readonly aggregated: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePositionStream.d.ts","sourceRoot":"","sources":["../../../src/orderly/usePositionStream/usePositionStream.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,KAAK,CAAC;AAG5C,OAAO,EACL,KAAK,GAAG,EACR,WAAW,EAIZ,MAAM,wBAAwB,CAAC;AAKhC,OAAO,EAAE,OAAO,EAAQ,MAAM,wBAAwB,CAAC;AASvD,KAAK,SAAS,GAAG,WAAW,GAAG,WAAW,CAAC;AAE3C,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,CACL,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,YAAY,GAAG,aAAa,GAAG,MAAM,CAAC,KAC5D,IAAI,CAAC;CACX;AAED,eAAO,MAAM,iBAAiB,YAInB,MAAM,YACL,gBAAgB,GAAG;
|
|
1
|
+
{"version":3,"file":"usePositionStream.d.ts","sourceRoot":"","sources":["../../../src/orderly/usePositionStream/usePositionStream.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,KAAK,CAAC;AAG5C,OAAO,EACL,KAAK,GAAG,EACR,WAAW,EAIZ,MAAM,wBAAwB,CAAC;AAKhC,OAAO,EAAE,OAAO,EAAQ,MAAM,wBAAwB,CAAC;AASvD,KAAK,SAAS,GAAG,WAAW,GAAG,WAAW,CAAC;AAE3C,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,CACL,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,YAAY,GAAG,aAAa,GAAG,MAAM,CAAC,KAC5D,IAAI,CAAC;CACX;AAED,eAAO,MAAM,iBAAiB,YAInB,MAAM,YACL,gBAAgB,GAAG;IAC3B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;OAEG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;;;;;;;;;;;;;;;;;;;;;;;EA+SF,CAAC;AAEF,eAAO,MAAM,yBAAyB,sBAIpC,CAAC"}
|
|
@@ -34,6 +34,7 @@ const usePositionStream = (/**
|
|
|
34
34
|
* If symbol is passed, only the position of that symbol will be returned.
|
|
35
35
|
*/ symbol, options)=>{
|
|
36
36
|
const symbolInfo = (0, _useSymbolsInfo.useSymbolsInfo)();
|
|
37
|
+
const { includedPendingOrder = false } = options || {};
|
|
37
38
|
const { data: accountInfo } = (0, _usePrivateQuery.usePrivateQuery)("/v1/client/info");
|
|
38
39
|
const { data: holding } = (0, _usePrivateQuery.usePrivateQuery)("/v1/client/holding", {
|
|
39
40
|
formatter: (data)=>{
|
|
@@ -199,7 +200,14 @@ const usePositionStream = (/**
|
|
|
199
200
|
if (!formatedPositions) return null;
|
|
200
201
|
if (!symbolInfo || !accountInfo) return formatedPositions[0];
|
|
201
202
|
const total = totalCollateral.toNumber();
|
|
202
|
-
let rows = formatedPositions[0]
|
|
203
|
+
let rows = formatedPositions[0];
|
|
204
|
+
if (!includedPendingOrder) {
|
|
205
|
+
rows = rows.filter((item)=>item.position_qty !== 0);
|
|
206
|
+
} else {
|
|
207
|
+
rows = rows.filter((item)=>item.position_qty !== 0 || item.pending_long_qty !== 0 || item.pending_short_qty !== 0);
|
|
208
|
+
}
|
|
209
|
+
// .filter((item) => item.position_qty !== 0)
|
|
210
|
+
rows = rows.map((item)=>{
|
|
203
211
|
const info = symbolInfo?.[item.symbol];
|
|
204
212
|
const related_order = Array.isArray(tpslOrders) ? (0, _utils1.findPositionTPSLFromOrders)(tpslOrders, item.symbol) : undefined;
|
|
205
213
|
const tp_sl_pricer = !!related_order ? (0, _utils1.findTPSLFromOrder)(related_order) : undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/orderly/usePositionStream/usePositionStream.ts"],"sourcesContent":["import { useEffect, useMemo, useState } from \"react\";\nimport { usePrivateQuery } from \"../../usePrivateQuery\";\nimport { account, positions } from \"@orderly.network/perp\";\nimport { type SWRConfiguration } from \"swr\";\nimport { createGetter } from \"../../utils/createGetter\";\nimport { useFundingRates } from \"../useFundingRates\";\nimport {\n type API,\n OrderEntity,\n AlgoOrderType,\n AlgoOrderRootType,\n OrderStatus,\n} from \"@orderly.network/types\";\nimport { useSymbolsInfo } from \"../useSymbolsInfo\";\nimport { useMarkPricesStream } from \"../useMarkPricesStream\";\nimport { pathOr, propOr } from \"ramda\";\nimport { parseHolding } from \"../../utils/parseHolding\";\nimport { Decimal, zero } from \"@orderly.network/utils\";\nimport { useMarketsStream } from \"../useMarketsStream\";\nimport { useOrderStream } from \"../orderlyHooks\";\nimport {\n findPositionTPSLFromOrders,\n findTPSLFromOrder,\n findTPSLFromOrders,\n} from \"./utils\";\n\ntype PriceMode = \"markPrice\" | \"lastPrice\";\n\nexport interface PositionReturn {\n data: any[];\n loading: boolean;\n close: (\n order: Pick<OrderEntity, \"order_type\" | \"order_price\" | \"side\">\n ) => void;\n}\n\nexport const usePositionStream = (\n /**\n * If symbol is passed, only the position of that symbol will be returned.\n */\n symbol?: string,\n options?: SWRConfiguration & { calcMode?: PriceMode }\n) => {\n const symbolInfo = useSymbolsInfo();\n const { data: accountInfo } =\n usePrivateQuery<API.AccountInfo>(\"/v1/client/info\");\n\n const { data: holding } = usePrivateQuery<API.Holding[]>(\n \"/v1/client/holding\",\n {\n formatter: (data) => {\n return data.holding;\n },\n }\n );\n\n const fundingRates = useFundingRates();\n\n const {\n data,\n error,\n mutate: refreshPositions,\n } = usePrivateQuery<API.PositionInfo>(`/v1/positions`, {\n // revalidateOnFocus: false,\n // revalidateOnReconnect: false,\n // dedupingInterval: 200,\n // keepPreviousData: false,\n // revalidateIfStale: true,\n ...options,\n\n formatter: (data) => data,\n onError: (err) => {},\n });\n\n const { data: markPrices } = useMarkPricesStream();\n\n // get TP/SL orders;\n\n const [tpslOrders] = useOrderStream({\n status: OrderStatus.INCOMPLETE,\n includes: [AlgoOrderRootType.POSITIONAL_TP_SL, AlgoOrderRootType.TP_SL],\n });\n //\n\n // console.log(\"---------------\");\n\n const [priceMode, setPriceMode] = useState(options?.calcMode || \"markPrice\");\n\n useEffect(() => {\n if (options?.calcMode && priceMode !== options?.calcMode) {\n setPriceMode(options?.calcMode);\n }\n }, [options?.calcMode]);\n\n const { data: tickers } = useMarketsStream();\n\n const tickerPrices = useMemo(() => {\n const data: Record<string, number> = Object.create(null);\n tickers?.forEach((item) => {\n // @ts-ignore\n data[item.symbol] = item[\"24h_close\"];\n });\n return data;\n }, [tickers]);\n\n const formatedPositions = useMemo<[API.PositionExt[], any] | null>(() => {\n if (!data?.rows || symbolInfo.isNil || !accountInfo) return null;\n\n const filteredData =\n typeof symbol === \"undefined\" || symbol === \"\"\n ? data.rows\n : data.rows.filter((item) => {\n return item.symbol === symbol;\n });\n\n let unrealPnL_total = zero,\n notional_total = zero,\n unsettlementPnL_total = zero;\n\n const formatted = filteredData.map((item: API.Position) => {\n // const price = (markPrices as any)[item.symbol] ?? item.mark_price;\n const unRealizedPrice = propOr(\n item.mark_price,\n item.symbol,\n priceMode === \"markPrice\" ? markPrices : tickerPrices\n ) as unknown as number;\n\n const price = propOr(\n item.mark_price,\n item.symbol,\n markPrices\n ) as unknown as number;\n\n const info = symbolInfo[item.symbol];\n //\n\n const notional = positions.notional(item.position_qty, price);\n\n const unrealPnl = positions.unrealizedPnL({\n qty: item.position_qty,\n openPrice: item?.average_open_price,\n markPrice: unRealizedPrice,\n });\n\n const imr = account.IMR({\n maxLeverage: accountInfo.max_leverage,\n baseIMR: info(\"base_imr\"),\n IMR_Factor: accountInfo.imr_factor[item.symbol] as number,\n positionNotional: notional,\n ordersNotional: 0,\n IMR_factor_power: 4 / 5,\n });\n\n const unrealPnlROI = positions.unrealizedPnLROI({\n positionQty: item.position_qty,\n openPrice: item.average_open_price,\n IMR: imr,\n unrealizedPnL: unrealPnl,\n });\n\n const unsettlementPnL = positions.unsettlementPnL({\n positionQty: item.position_qty,\n markPrice: price,\n costPosition: item.cost_position,\n sumUnitaryFunding: fundingRates[item.symbol]?.(\n \"sum_unitary_funding\",\n 0\n ),\n lastSumUnitaryFunding: item.last_sum_unitary_funding,\n });\n\n unrealPnL_total = unrealPnL_total.add(unrealPnl);\n notional_total = notional_total.add(notional);\n unsettlementPnL_total = unsettlementPnL_total.add(unsettlementPnL);\n\n return {\n ...item,\n mark_price: price,\n mm: 0,\n notional,\n unsettlement_pnl: unsettlementPnL,\n unrealized_pnl: unrealPnl,\n unrealized_pnl_ROI: unrealPnlROI,\n };\n });\n\n return [\n formatted,\n {\n unrealPnL: unrealPnL_total.toNumber(),\n notional: notional_total.toNumber(),\n unsettledPnL: unsettlementPnL_total.toNumber(),\n },\n ];\n }, [\n data?.rows,\n symbolInfo,\n accountInfo,\n markPrices,\n priceMode,\n tickerPrices,\n symbol,\n holding,\n ]);\n\n // const showSymbol = useCallback((symbol: string) => {\n // setVisibleSymbol(symbol);\n // }, []);\n\n const [totalCollateral, totalValue, totalUnrealizedROI] = useMemo<\n [Decimal, Decimal, number]\n >(() => {\n if (!holding || !markPrices) {\n return [zero, zero, 0];\n }\n const unsettlemnedPnL = pathOr(0, [1, \"unsettledPnL\"])(formatedPositions);\n const unrealizedPnL = pathOr(0, [1, \"unrealPnL\"])(formatedPositions);\n\n const [USDC_holding, nonUSDC] = parseHolding(holding, markPrices);\n\n const totalCollateral = account.totalCollateral({\n USDCHolding: USDC_holding,\n nonUSDCHolding: nonUSDC,\n unsettlementPnL: unsettlemnedPnL,\n });\n\n const totalValue = account.totalValue({\n totalUnsettlementPnL: unsettlemnedPnL,\n USDCHolding: USDC_holding,\n nonUSDCHolding: nonUSDC,\n });\n\n const totalUnrealizedROI = account.totalUnrealizedROI({\n totalUnrealizedPnL: unrealizedPnL,\n totalValue: totalValue.toNumber(),\n });\n\n return [totalCollateral, totalValue, totalUnrealizedROI];\n }, [holding, formatedPositions, markPrices]);\n\n const positionsRows = useMemo<API.PositionTPSLExt[] | null>(() => {\n if (!formatedPositions) return null;\n\n if (!symbolInfo || !accountInfo) return formatedPositions[0];\n\n const total = totalCollateral.toNumber();\n\n let rows = formatedPositions[0]\n .filter((item) => item.position_qty !== 0)\n .map((item) => {\n const info = symbolInfo?.[item.symbol];\n\n const related_order = Array.isArray(tpslOrders)\n ? findPositionTPSLFromOrders(tpslOrders, item.symbol)\n : undefined;\n\n const tp_sl_pricer = !!related_order\n ? findTPSLFromOrder(related_order)\n : undefined;\n\n const MMR = positions.MMR({\n baseMMR: info(\"base_mmr\"),\n baseIMR: info(\"base_imr\"),\n IMRFactor: accountInfo.imr_factor[item.symbol] as number,\n positionNotional: item.notional,\n IMR_factor_power: 4 / 5,\n });\n\n return {\n ...item,\n mm: positions.maintenanceMargin({\n positionQty: item.position_qty,\n markPrice: item.mark_price,\n MMR,\n }),\n tp_trigger_price: tp_sl_pricer?.tp_trigger_price,\n sl_trigger_price: tp_sl_pricer?.sl_trigger_price,\n\n mmr: MMR,\n\n // has_position_tp_sl:\n // !tp_sl_pricer?.sl_trigger_price && !tp_sl_pricer?.tp_trigger_price,\n algo_order: related_order,\n };\n });\n\n // calculate est_liq_price\n rows = rows.map((item) => {\n const est_liq_price = positions.liqPrice({\n markPrice: item.mark_price,\n totalCollateral: total,\n positionQty: item.position_qty,\n positions: rows,\n MMR: item.mmr,\n });\n return {\n ...item,\n est_liq_price,\n };\n });\n\n return rows;\n }, [formatedPositions, symbolInfo, accountInfo, totalCollateral, tpslOrders]);\n\n const positionInfoGetter = createGetter<\n Omit<API.PositionInfo, \"rows\">,\n keyof Omit<API.PositionInfo, \"rows\">\n >(data as any, 1);\n\n return [\n {\n rows: positionsRows,\n aggregated: {\n ...(formatedPositions?.[1] ?? {}),\n unrealPnlROI: totalUnrealizedROI,\n },\n totalCollateral,\n totalValue,\n totalUnrealizedROI,\n },\n positionInfoGetter,\n {\n // close: onClosePosition,\n loading: false,\n // showSymbol,\n error,\n // loadMore: () => {},\n refresh: refreshPositions,\n },\n ] as const;\n};\n\nexport const pathOr_unsettledPnLPathOr = pathOr(0, [\n 0,\n \"aggregated\",\n \"unsettledPnL\",\n]);\n"],"names":["pathOr_unsettledPnLPathOr","usePositionStream","symbol","options","symbolInfo","useSymbolsInfo","data","accountInfo","usePrivateQuery","holding","formatter","fundingRates","useFundingRates","error","mutate","refreshPositions","onError","err","markPrices","useMarkPricesStream","tpslOrders","useOrderStream","status","OrderStatus","INCOMPLETE","includes","AlgoOrderRootType","POSITIONAL_TP_SL","TP_SL","priceMode","setPriceMode","useState","calcMode","useEffect","tickers","useMarketsStream","tickerPrices","useMemo","Object","create","forEach","item","formatedPositions","rows","isNil","filteredData","filter","unrealPnL_total","zero","notional_total","unsettlementPnL_total","formatted","map","unRealizedPrice","propOr","mark_price","price","info","notional","positions","position_qty","unrealPnl","unrealizedPnL","qty","openPrice","average_open_price","markPrice","imr","account","IMR","maxLeverage","max_leverage","baseIMR","IMR_Factor","imr_factor","positionNotional","ordersNotional","IMR_factor_power","unrealPnlROI","unrealizedPnLROI","positionQty","unsettlementPnL","costPosition","cost_position","sumUnitaryFunding","lastSumUnitaryFunding","last_sum_unitary_funding","add","mm","unsettlement_pnl","unrealized_pnl","unrealized_pnl_ROI","unrealPnL","toNumber","unsettledPnL","totalCollateral","totalValue","totalUnrealizedROI","unsettlemnedPnL","pathOr","USDC_holding","nonUSDC","parseHolding","USDCHolding","nonUSDCHolding","totalUnsettlementPnL","totalUnrealizedPnL","positionsRows","total","related_order","Array","isArray","findPositionTPSLFromOrders","undefined","tp_sl_pricer","findTPSLFromOrder","MMR","baseMMR","IMRFactor","maintenanceMargin","tp_trigger_price","sl_trigger_price","mmr","algo_order","est_liq_price","liqPrice","positionInfoGetter","createGetter","aggregated","loading","refresh"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/orderly/usePositionStream/usePositionStream.ts"],"sourcesContent":["import { useEffect, useMemo, useState } from \"react\";\nimport { usePrivateQuery } from \"../../usePrivateQuery\";\nimport { account, positions } from \"@orderly.network/perp\";\nimport { type SWRConfiguration } from \"swr\";\nimport { createGetter } from \"../../utils/createGetter\";\nimport { useFundingRates } from \"../useFundingRates\";\nimport {\n type API,\n OrderEntity,\n AlgoOrderType,\n AlgoOrderRootType,\n OrderStatus,\n} from \"@orderly.network/types\";\nimport { useSymbolsInfo } from \"../useSymbolsInfo\";\nimport { useMarkPricesStream } from \"../useMarkPricesStream\";\nimport { pathOr, propOr } from \"ramda\";\nimport { parseHolding } from \"../../utils/parseHolding\";\nimport { Decimal, zero } from \"@orderly.network/utils\";\nimport { useMarketsStream } from \"../useMarketsStream\";\nimport { useOrderStream } from \"../orderlyHooks\";\nimport {\n findPositionTPSLFromOrders,\n findTPSLFromOrder,\n findTPSLFromOrders,\n} from \"./utils\";\n\ntype PriceMode = \"markPrice\" | \"lastPrice\";\n\nexport interface PositionReturn {\n data: any[];\n loading: boolean;\n close: (\n order: Pick<OrderEntity, \"order_type\" | \"order_price\" | \"side\">\n ) => void;\n}\n\nexport const usePositionStream = (\n /**\n * If symbol is passed, only the position of that symbol will be returned.\n */\n symbol?: string,\n options?: SWRConfiguration & {\n calcMode?: PriceMode;\n /**\n * If true, the pending order will be included in the result.\n */\n includedPendingOrder?: boolean;\n }\n) => {\n const symbolInfo = useSymbolsInfo();\n\n const { includedPendingOrder = false } = options || {};\n\n const { data: accountInfo } =\n usePrivateQuery<API.AccountInfo>(\"/v1/client/info\");\n\n const { data: holding } = usePrivateQuery<API.Holding[]>(\n \"/v1/client/holding\",\n {\n formatter: (data) => {\n return data.holding;\n },\n }\n );\n\n const fundingRates = useFundingRates();\n\n const {\n data,\n error,\n mutate: refreshPositions,\n } = usePrivateQuery<API.PositionInfo>(`/v1/positions`, {\n // revalidateOnFocus: false,\n // revalidateOnReconnect: false,\n // dedupingInterval: 200,\n // keepPreviousData: false,\n // revalidateIfStale: true,\n ...options,\n\n formatter: (data) => data,\n onError: (err) => {},\n });\n\n const { data: markPrices } = useMarkPricesStream();\n\n // get TP/SL orders;\n\n const [tpslOrders] = useOrderStream({\n status: OrderStatus.INCOMPLETE,\n includes: [AlgoOrderRootType.POSITIONAL_TP_SL, AlgoOrderRootType.TP_SL],\n });\n //\n\n // console.log(\"---------------\");\n\n const [priceMode, setPriceMode] = useState(options?.calcMode || \"markPrice\");\n\n useEffect(() => {\n if (options?.calcMode && priceMode !== options?.calcMode) {\n setPriceMode(options?.calcMode);\n }\n }, [options?.calcMode]);\n\n const { data: tickers } = useMarketsStream();\n\n const tickerPrices = useMemo(() => {\n const data: Record<string, number> = Object.create(null);\n tickers?.forEach((item) => {\n // @ts-ignore\n data[item.symbol] = item[\"24h_close\"];\n });\n return data;\n }, [tickers]);\n\n const formatedPositions = useMemo<[API.PositionExt[], any] | null>(() => {\n if (!data?.rows || symbolInfo.isNil || !accountInfo) return null;\n\n const filteredData =\n typeof symbol === \"undefined\" || symbol === \"\"\n ? data.rows\n : data.rows.filter((item) => {\n return item.symbol === symbol;\n });\n\n let unrealPnL_total = zero,\n notional_total = zero,\n unsettlementPnL_total = zero;\n\n const formatted = filteredData.map((item: API.Position) => {\n // const price = (markPrices as any)[item.symbol] ?? item.mark_price;\n const unRealizedPrice = propOr(\n item.mark_price,\n item.symbol,\n priceMode === \"markPrice\" ? markPrices : tickerPrices\n ) as unknown as number;\n\n const price = propOr(\n item.mark_price,\n item.symbol,\n markPrices\n ) as unknown as number;\n\n const info = symbolInfo[item.symbol];\n //\n\n const notional = positions.notional(item.position_qty, price);\n\n const unrealPnl = positions.unrealizedPnL({\n qty: item.position_qty,\n openPrice: item?.average_open_price,\n markPrice: unRealizedPrice,\n });\n\n const imr = account.IMR({\n maxLeverage: accountInfo.max_leverage,\n baseIMR: info(\"base_imr\"),\n IMR_Factor: accountInfo.imr_factor[item.symbol] as number,\n positionNotional: notional,\n ordersNotional: 0,\n IMR_factor_power: 4 / 5,\n });\n\n const unrealPnlROI = positions.unrealizedPnLROI({\n positionQty: item.position_qty,\n openPrice: item.average_open_price,\n IMR: imr,\n unrealizedPnL: unrealPnl,\n });\n\n const unsettlementPnL = positions.unsettlementPnL({\n positionQty: item.position_qty,\n markPrice: price,\n costPosition: item.cost_position,\n sumUnitaryFunding: fundingRates[item.symbol]?.(\n \"sum_unitary_funding\",\n 0\n ),\n lastSumUnitaryFunding: item.last_sum_unitary_funding,\n });\n\n unrealPnL_total = unrealPnL_total.add(unrealPnl);\n notional_total = notional_total.add(notional);\n unsettlementPnL_total = unsettlementPnL_total.add(unsettlementPnL);\n\n return {\n ...item,\n mark_price: price,\n mm: 0,\n notional,\n unsettlement_pnl: unsettlementPnL,\n unrealized_pnl: unrealPnl,\n unrealized_pnl_ROI: unrealPnlROI,\n };\n });\n\n return [\n formatted,\n {\n unrealPnL: unrealPnL_total.toNumber(),\n notional: notional_total.toNumber(),\n unsettledPnL: unsettlementPnL_total.toNumber(),\n },\n ];\n }, [\n data?.rows,\n symbolInfo,\n accountInfo,\n markPrices,\n priceMode,\n tickerPrices,\n symbol,\n holding,\n ]);\n\n // const showSymbol = useCallback((symbol: string) => {\n // setVisibleSymbol(symbol);\n // }, []);\n\n const [totalCollateral, totalValue, totalUnrealizedROI] = useMemo<\n [Decimal, Decimal, number]\n >(() => {\n if (!holding || !markPrices) {\n return [zero, zero, 0];\n }\n const unsettlemnedPnL = pathOr(0, [1, \"unsettledPnL\"])(formatedPositions);\n const unrealizedPnL = pathOr(0, [1, \"unrealPnL\"])(formatedPositions);\n\n const [USDC_holding, nonUSDC] = parseHolding(holding, markPrices);\n\n const totalCollateral = account.totalCollateral({\n USDCHolding: USDC_holding,\n nonUSDCHolding: nonUSDC,\n unsettlementPnL: unsettlemnedPnL,\n });\n\n const totalValue = account.totalValue({\n totalUnsettlementPnL: unsettlemnedPnL,\n USDCHolding: USDC_holding,\n nonUSDCHolding: nonUSDC,\n });\n\n const totalUnrealizedROI = account.totalUnrealizedROI({\n totalUnrealizedPnL: unrealizedPnL,\n totalValue: totalValue.toNumber(),\n });\n\n return [totalCollateral, totalValue, totalUnrealizedROI];\n }, [holding, formatedPositions, markPrices]);\n\n const positionsRows = useMemo<API.PositionTPSLExt[] | null>(() => {\n if (!formatedPositions) return null;\n\n if (!symbolInfo || !accountInfo) return formatedPositions[0];\n\n const total = totalCollateral.toNumber();\n\n let rows = formatedPositions[0];\n\n if (!includedPendingOrder) {\n rows = rows.filter((item) => item.position_qty !== 0);\n } else {\n rows = rows.filter(\n (item) =>\n item.position_qty !== 0 ||\n item.pending_long_qty !== 0 ||\n item.pending_short_qty !== 0\n );\n }\n // .filter((item) => item.position_qty !== 0)\n rows = rows.map((item) => {\n const info = symbolInfo?.[item.symbol];\n\n const related_order = Array.isArray(tpslOrders)\n ? findPositionTPSLFromOrders(tpslOrders, item.symbol)\n : undefined;\n\n const tp_sl_pricer = !!related_order\n ? findTPSLFromOrder(related_order)\n : undefined;\n\n const MMR = positions.MMR({\n baseMMR: info(\"base_mmr\"),\n baseIMR: info(\"base_imr\"),\n IMRFactor: accountInfo.imr_factor[item.symbol] as number,\n positionNotional: item.notional,\n IMR_factor_power: 4 / 5,\n });\n\n return {\n ...item,\n mm: positions.maintenanceMargin({\n positionQty: item.position_qty,\n markPrice: item.mark_price,\n MMR,\n }),\n tp_trigger_price: tp_sl_pricer?.tp_trigger_price,\n sl_trigger_price: tp_sl_pricer?.sl_trigger_price,\n\n mmr: MMR,\n\n // has_position_tp_sl:\n // !tp_sl_pricer?.sl_trigger_price && !tp_sl_pricer?.tp_trigger_price,\n algo_order: related_order,\n };\n });\n\n // calculate est_liq_price\n rows = rows.map((item) => {\n const est_liq_price = positions.liqPrice({\n markPrice: item.mark_price,\n totalCollateral: total,\n positionQty: item.position_qty,\n positions: rows,\n MMR: item.mmr,\n });\n return {\n ...item,\n est_liq_price,\n };\n });\n\n return rows;\n }, [formatedPositions, symbolInfo, accountInfo, totalCollateral, tpslOrders]);\n\n const positionInfoGetter = createGetter<\n Omit<API.PositionInfo, \"rows\">,\n keyof Omit<API.PositionInfo, \"rows\">\n >(data as any, 1);\n\n return [\n {\n rows: positionsRows,\n aggregated: {\n ...(formatedPositions?.[1] ?? {}),\n unrealPnlROI: totalUnrealizedROI,\n },\n totalCollateral,\n totalValue,\n totalUnrealizedROI,\n },\n positionInfoGetter,\n {\n // close: onClosePosition,\n loading: false,\n // showSymbol,\n error,\n // loadMore: () => {},\n refresh: refreshPositions,\n },\n ] as const;\n};\n\nexport const pathOr_unsettledPnLPathOr = pathOr(0, [\n 0,\n \"aggregated\",\n \"unsettledPnL\",\n]);\n"],"names":["pathOr_unsettledPnLPathOr","usePositionStream","symbol","options","symbolInfo","useSymbolsInfo","includedPendingOrder","data","accountInfo","usePrivateQuery","holding","formatter","fundingRates","useFundingRates","error","mutate","refreshPositions","onError","err","markPrices","useMarkPricesStream","tpslOrders","useOrderStream","status","OrderStatus","INCOMPLETE","includes","AlgoOrderRootType","POSITIONAL_TP_SL","TP_SL","priceMode","setPriceMode","useState","calcMode","useEffect","tickers","useMarketsStream","tickerPrices","useMemo","Object","create","forEach","item","formatedPositions","rows","isNil","filteredData","filter","unrealPnL_total","zero","notional_total","unsettlementPnL_total","formatted","map","unRealizedPrice","propOr","mark_price","price","info","notional","positions","position_qty","unrealPnl","unrealizedPnL","qty","openPrice","average_open_price","markPrice","imr","account","IMR","maxLeverage","max_leverage","baseIMR","IMR_Factor","imr_factor","positionNotional","ordersNotional","IMR_factor_power","unrealPnlROI","unrealizedPnLROI","positionQty","unsettlementPnL","costPosition","cost_position","sumUnitaryFunding","lastSumUnitaryFunding","last_sum_unitary_funding","add","mm","unsettlement_pnl","unrealized_pnl","unrealized_pnl_ROI","unrealPnL","toNumber","unsettledPnL","totalCollateral","totalValue","totalUnrealizedROI","unsettlemnedPnL","pathOr","USDC_holding","nonUSDC","parseHolding","USDCHolding","nonUSDCHolding","totalUnsettlementPnL","totalUnrealizedPnL","positionsRows","total","pending_long_qty","pending_short_qty","related_order","Array","isArray","findPositionTPSLFromOrders","undefined","tp_sl_pricer","findTPSLFromOrder","MMR","baseMMR","IMRFactor","maintenanceMargin","tp_trigger_price","sl_trigger_price","mmr","algo_order","est_liq_price","liqPrice","positionInfoGetter","createGetter","aggregated","loading","refresh"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"usePrivateDataObserver.d.ts","sourceRoot":"","sources":["../../src/orderly/usePrivateDataObserver.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAOjD,eAAO,MAAM,sBAAsB;uBAEd,MAAM,KAAK,IAAI,MAAM,EAAE,cAAc,CAAC;UAoK1D,CAAC"}
|
|
@@ -17,6 +17,7 @@ const _useEventEmitter = require("../useEventEmitter");
|
|
|
17
17
|
const _swr1 = require("../utils/swr");
|
|
18
18
|
const _algoOrderMergeHandler = require("../services/orderMerge/algoOrderMergeHandler");
|
|
19
19
|
const _ws = require("../utils/ws");
|
|
20
|
+
const _useLocalStorage = require("../useLocalStorage");
|
|
20
21
|
const usePrivateDataObserver = (options)=>{
|
|
21
22
|
const ws = (0, _useWS.useWS)();
|
|
22
23
|
// const { mutate } = useSWRConfig();
|
|
@@ -24,6 +25,7 @@ const usePrivateDataObserver = (options)=>{
|
|
|
24
25
|
const { state } = (0, _useAccount.useAccount)();
|
|
25
26
|
// TODO: remove this when the WS service provides the correct data
|
|
26
27
|
// const algoOrderCacheQuneue = useRef<API.AlgoOrder[]>([]);
|
|
28
|
+
const [subOrder, setSubOrder] = (0, _useLocalStorage.useLocalStorage)("orderly_subscribe_order", true);
|
|
27
29
|
const updateOrders = (data, isAlgoOrder)=>{
|
|
28
30
|
const keysMap = options.getKeysMap("orders");
|
|
29
31
|
keysMap.forEach((getKey, key)=>{
|
|
@@ -58,6 +60,7 @@ const usePrivateDataObserver = (options)=>{
|
|
|
58
60
|
// orders
|
|
59
61
|
(0, _react.useEffect)(()=>{
|
|
60
62
|
if (!state.accountId) return;
|
|
63
|
+
if (subOrder !== true) return;
|
|
61
64
|
const unsubscribe = ws.privateSubscribe("executionreport", {
|
|
62
65
|
onMessage: (data)=>{
|
|
63
66
|
updateOrders(data, false);
|
|
@@ -65,11 +68,13 @@ const usePrivateDataObserver = (options)=>{
|
|
|
65
68
|
});
|
|
66
69
|
return ()=>unsubscribe?.();
|
|
67
70
|
}, [
|
|
68
|
-
state.accountId
|
|
71
|
+
state.accountId,
|
|
72
|
+
subOrder
|
|
69
73
|
]);
|
|
70
74
|
// algo orders
|
|
71
75
|
(0, _react.useEffect)(()=>{
|
|
72
76
|
if (!state.accountId) return;
|
|
77
|
+
if (subOrder !== true) return;
|
|
73
78
|
const unsubscribe = ws.privateSubscribe("algoexecutionreport", {
|
|
74
79
|
onMessage: (data)=>{
|
|
75
80
|
updateOrders(data, true);
|
|
@@ -77,7 +82,8 @@ const usePrivateDataObserver = (options)=>{
|
|
|
77
82
|
});
|
|
78
83
|
return ()=>unsubscribe?.();
|
|
79
84
|
}, [
|
|
80
|
-
state.accountId
|
|
85
|
+
state.accountId,
|
|
86
|
+
subOrder
|
|
81
87
|
]);
|
|
82
88
|
// positions
|
|
83
89
|
(0, _react.useEffect)(()=>{
|
|
@@ -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, 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":["usePrivateDataObserver","options","ws","useWS","ee","useEventEmitter","state","useAccount","updateOrders","data","isAlgoOrder","keysMap","getKeysMap","forEach","getKey","key","mutate","unstable_serialize","index","prevData","accountId","result","updateAlgoOrdersHandler","updateOrdersHandler","error","revalidate","formattedData","AlgoOrderMergeHandler","groupOrders","object2underscore","emit","status","algo_status","useEffect","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":"
|
|
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\";\nimport { useLocalStorage } from \"../useLocalStorage\";\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 [subOrder, setSubOrder] = useLocalStorage(\"orderly_subscribe_order\", true);\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 if (subOrder !== true) return;\n const unsubscribe = ws.privateSubscribe(\"executionreport\", {\n onMessage: (data: any) => {\n updateOrders(data, false);\n },\n });\n\n return () => unsubscribe?.();\n }, [state.accountId, subOrder]);\n\n // algo orders\n useEffect(() => {\n if (!state.accountId) return;\n if (subOrder !== true) return;\n const unsubscribe = ws.privateSubscribe(\"algoexecutionreport\", {\n onMessage: (data: any) => {\n updateOrders(data, true);\n },\n });\n\n return () => unsubscribe?.();\n }, [state.accountId, subOrder]);\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":["usePrivateDataObserver","options","ws","useWS","ee","useEventEmitter","state","useAccount","subOrder","setSubOrder","useLocalStorage","updateOrders","data","isAlgoOrder","keysMap","getKeysMap","forEach","getKey","key","mutate","unstable_serialize","index","prevData","accountId","result","updateAlgoOrdersHandler","updateOrdersHandler","error","revalidate","formattedData","AlgoOrderMergeHandler","groupOrders","object2underscore","emit","status","algo_status","useEffect","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":";;;;+BAeaA;;;eAAAA;;;uBAfqB;uBACZ;qBACC;4BAEI;0BACQ;iCAEH;sBAG6B;uCACvB;oBACJ;iCACF;AAEzB,MAAMA,yBAAyB,CAACC;IAIrC,MAAMC,KAAKC,IAAAA,YAAK;IAChB,qCAAqC;IACrC,MAAMC,KAAKC,IAAAA,gCAAe;IAC1B,MAAM,EAAEC,KAAK,EAAE,GAAGC,IAAAA,sBAAU;IAE5B,kEAAkE;IAClE,4DAA4D;IAE5D,MAAM,CAACC,UAAUC,YAAY,GAAGC,IAAAA,gCAAe,EAAC,2BAA2B;IAE3E,MAAMC,eAAe,CACnBC,MACAC;QAEA,MAAMC,UAAUb,QAAQc,UAAU,CAAC;QAEnCD,QAAQE,OAAO,CAAC,CAACC,QAAQC;YACvBC,IAAAA,WAAM,EACJC,IAAAA,4BAAkB,EAAC,CAACC,OAAOC,WAAa;oBACtCL,OAAOI,OAAOC;oBACdhB,MAAMiB,SAAS;iBAChB,GACD,CAACD;gBACC,IAAI;oBACF,IAAIT,aAAa;wBACf,MAAMW,SAASC,IAAAA,6BAAuB,EACpCP,KACAN,MACAU;wBAGF,OAAOE;oBACT;oBACA,OAAOE,IAAAA,yBAAmB,EAACR,KAAKN,MAAyBU;gBAC3D,EAAE,OAAOK,OAAO;oBACd,OAAOL;gBACT;YACF,GACA;gBACEM,YAAY;YACd;QAEJ;QAEA,gBAAgB;QAChB,8BAA8B;QAC9B,aAAa;QACb,qEAAqE;QACrE,MAAM;QAEN,MAAMC,gBAAgBhB,cAClBiB,4CAAqB,CAACC,WAAW,CAACnB,QAClCoB,IAAAA,qBAAiB,EAACpB;QAEtBR,GAAG6B,IAAI,CAAC,kBAAkB;YACxB,GAAGJ,aAAa;YAChBK,QAAQrB,cACJgB,cAAcM,WAAW,GACzB,AAACvB,KAAyBsB,MAAM;QACtC;IACF;IAEA,SAAS;IACTE,IAAAA,gBAAS,EAAC;QACR,IAAI,CAAC9B,MAAMiB,SAAS,EAAE;QACtB,IAAIf,aAAa,MAAM;QACvB,MAAM6B,cAAcnC,GAAGoC,gBAAgB,CAAC,mBAAmB;YACzDC,WAAW,CAAC3B;gBACVD,aAAaC,MAAM;YACrB;QACF;QAEA,OAAO,IAAMyB;IACf,GAAG;QAAC/B,MAAMiB,SAAS;QAAEf;KAAS;IAE9B,cAAc;IACd4B,IAAAA,gBAAS,EAAC;QACR,IAAI,CAAC9B,MAAMiB,SAAS,EAAE;QACtB,IAAIf,aAAa,MAAM;QACvB,MAAM6B,cAAcnC,GAAGoC,gBAAgB,CAAC,uBAAuB;YAC7DC,WAAW,CAAC3B;gBACVD,aAAaC,MAAM;YACrB;QACF;QAEA,OAAO,IAAMyB;IACf,GAAG;QAAC/B,MAAMiB,SAAS;QAAEf;KAAS;IAE9B,YAAY;IACZ4B,IAAAA,gBAAS,EAAC;QACR,IAAI,CAAC9B,MAAMiB,SAAS,EAAE;QACtB,MAAML,MAAM;YAAC;YAAiBZ,MAAMiB,SAAS;SAAC;QAC9C,MAAMc,cAAcnC,GAAGoC,gBAAgB,CAAC,YAAY;YAClDC,WAAW,CAAC3B;gBACV,MAAM,EAAE4B,WAAWC,YAAY,EAAE,GAAG7B;gBAEpC,oDAAoD;gBAEpD,qBAAqB;gBAErBO,IAAAA,WAAM,EACJD,KACA,CAACwB;oBACC,uBAAuB;oBACvB,IAAI,CAAC,CAACA,eAAe;wBACnB,OAAO;4BACL,GAAGA,aAAa;4BAChBC,MAAMD,cAAcC,IAAI,CAACC,GAAG,CAAC,CAACC;gCAC5B,MAAMC,OAAOL,aAAaM,IAAI,CAC5B,CAACD,OAASA,KAAKE,MAAM,KAAKH,IAAIG,MAAM;gCAEtC,IAAIF,MAAM;oCACR,OAAO;wCACLE,QAAQF,KAAKE,MAAM;wCACnBC,cAAcH,KAAKI,WAAW;wCAC9BC,eAAeL,KAAKM,YAAY;wCAChCC,0BAA0BP,KAAKQ,qBAAqB;wCACpDC,kBAAkBT,KAAKU,cAAc;wCACrCC,mBAAmBX,KAAKY,eAAe;wCACvCC,cAAcb,KAAKc,WAAW;wCAC9BC,oBAAoBf,KAAKgB,gBAAgB;wCACzCC,eAAejB,KAAKkB,YAAY;wCAChCC,YAAYnB,KAAKoB,SAAS;wCAC1BC,eAAerB,KAAKsB,WAAW;wCAC/BC,WAAWC,KAAKC,GAAG;wCACnBC,KAAK1B,KAAK0B,GAAG;wCACbC,KAAK3B,KAAK2B,GAAG;wCACbC,qBAAqB5B,KAAK6B,aAAa;wCACvCC,iBAAiB9B,KAAK+B,aAAa;wCACnCC,UAAUhC,KAAKiC,MAAM;wCACrBC,UAAUlC,KAAKmC,MAAM;oCACvB;gCACF;gCAEA,OAAOpC;4BACT;wBACF;oBACF;gBACF,GACA;oBACEjB,YAAY;gBACd;YAEJ;QACF;QACA,OAAO;YACLS;QACF;IACF,GAAG;QAAC/B,MAAMiB,SAAS;KAAC;AAEpB,oBAAoB;AACpB,oBAAoB;AACpB,+CAA+C;AAC/C,+CAA+C;AAC/C,OAAO;AAEP,uCAAuC;AAEvC,mBAAmB;AACnB,0CAA0C;AAC1C,OAAO;AACP,UAAU;AACZ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSymbolLeverage.d.ts","sourceRoot":"","sources":["../../src/orderly/useSymbolLeverage.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,iBAAiB,WAAY,MAAM,KAAI,MAAM,GAAG,GA0B5D,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "useSymbolLeverage", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return useSymbolLeverage;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _react = require("react");
|
|
12
|
+
const _useQuery = require("../useQuery");
|
|
13
|
+
const _useAccountInfo = require("./useAccountInfo");
|
|
14
|
+
const useSymbolLeverage = (symbol)=>{
|
|
15
|
+
const { data: info } = (0, _useAccountInfo.useAccountInfo)();
|
|
16
|
+
const maxAccountLeverage = info?.max_leverage;
|
|
17
|
+
const res = (0, _useQuery.useQuery)(`/v1/public/info/${symbol}`, {
|
|
18
|
+
dedupingInterval: 1000 * 60 * 60 * 24,
|
|
19
|
+
revalidateOnFocus: false,
|
|
20
|
+
errorRetryCount: 2,
|
|
21
|
+
errorRetryInterval: 200
|
|
22
|
+
});
|
|
23
|
+
const maxSymbolLeverage = (0, _react.useMemo)(()=>{
|
|
24
|
+
const base = res?.data?.base_imr;
|
|
25
|
+
if (base) return 1 / base;
|
|
26
|
+
}, [
|
|
27
|
+
res
|
|
28
|
+
]);
|
|
29
|
+
const maxLeverage = (0, _react.useMemo)(()=>{
|
|
30
|
+
if (!maxAccountLeverage || !maxSymbolLeverage) {
|
|
31
|
+
return "-";
|
|
32
|
+
}
|
|
33
|
+
return Math.min(maxAccountLeverage, maxSymbolLeverage);
|
|
34
|
+
}, [
|
|
35
|
+
maxAccountLeverage,
|
|
36
|
+
maxSymbolLeverage
|
|
37
|
+
]);
|
|
38
|
+
return maxLeverage;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
//# sourceMappingURL=useSymbolLeverage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/orderly/useSymbolLeverage.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport { useQuery } from \"../useQuery\";\nimport { useAccountInfo } from \"./useAccountInfo\";\n\nexport const useSymbolLeverage = (symbol: string) : number | \"-\" => {\n const { data: info } = useAccountInfo();\n\n const maxAccountLeverage = info?.max_leverage;\n\n const res = useQuery<any>(`/v1/public/info/${symbol}`, {\n dedupingInterval: 1000 * 60 * 60 * 24,\n revalidateOnFocus: false,\n errorRetryCount: 2,\n errorRetryInterval: 200,\n });\n\n const maxSymbolLeverage = useMemo(() => {\n const base = res?.data?.base_imr;\n if (base) return 1 / base;\n }, [res]);\n\n const maxLeverage = useMemo(() => {\n if (!maxAccountLeverage || !maxSymbolLeverage) {\n return \"-\";\n }\n\n return Math.min(maxAccountLeverage, maxSymbolLeverage);\n }, [maxAccountLeverage, maxSymbolLeverage]);\n\n return maxLeverage;\n};\n"],"names":["useSymbolLeverage","symbol","data","info","useAccountInfo","maxAccountLeverage","max_leverage","res","useQuery","dedupingInterval","revalidateOnFocus","errorRetryCount","errorRetryInterval","maxSymbolLeverage","useMemo","base","base_imr","maxLeverage","Math","min"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;+BAIaA;;;eAAAA;;;uBAJW;0BACC;gCACM;AAExB,MAAMA,oBAAoB,CAACC;IAChC,MAAM,EAAEC,MAAMC,IAAI,EAAE,GAAGC,IAAAA,8BAAc;IAErC,MAAMC,qBAAqBF,MAAMG;IAEjC,MAAMC,MAAMC,IAAAA,kBAAQ,EAAM,CAAC,gBAAgB,EAAEP,OAAO,CAAC,EAAE;QACrDQ,kBAAkB,OAAO,KAAK,KAAK;QACnCC,mBAAmB;QACnBC,iBAAiB;QACjBC,oBAAoB;IACtB;IAEA,MAAMC,oBAAoBC,IAAAA,cAAO,EAAC;QAChC,MAAMC,OAAOR,KAAKL,MAAMc;QACxB,IAAID,MAAM,OAAO,IAAIA;IACvB,GAAG;QAACR;KAAI;IAER,MAAMU,cAAcH,IAAAA,cAAO,EAAC;QAC1B,IAAI,CAACT,sBAAsB,CAACQ,mBAAmB;YAC7C,OAAO;QACT;QAEA,OAAOK,KAAKC,GAAG,CAACd,oBAAoBQ;IACtC,GAAG;QAACR;QAAoBQ;KAAkB;IAE1C,OAAOI;AACT"}
|
|
@@ -1 +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,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG;IACzC;;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,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;IA/BC;;OAEG;YACK,MAAM;eACH,MAAM;0BACK,MAAM;IAE5B;;OAEG;YACK,MAAM;eACH,MAAM;0BACK,MAAM;;IA0B5B;;OAEG;oBACa,MAAM,SAAS,MAAM,GAAG,MAAM,KAAK,IAAI;wBACnC,QAAQ,iBAAiB,CAAC,KAAK,IAAI;IAEvD;;OAEG;YACK,MAAM,QAAQ,IAAI,CAAC;YAMnB,aAAa,GAAG,IAAI;IAC5B;;OAEG;cACO,MAAM,QACd,gBACE,kBAAkB,gBAAgB,GAAG,kBAAkB,KAAK,CAC7D,CACF;
|
|
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,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG;IACzC;;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,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;IA/BC;;OAEG;YACK,MAAM;eACH,MAAM;0BACK,MAAM;IAE5B;;OAEG;YACK,MAAM;eACH,MAAM;0BACK,MAAM;;IA0B5B;;OAEG;oBACa,MAAM,SAAS,MAAM,GAAG,MAAM,KAAK,IAAI;wBACnC,QAAQ,iBAAiB,CAAC,KAAK,IAAI;IAEvD;;OAEG;YACK,MAAM,QAAQ,IAAI,CAAC;YAMnB,aAAa,GAAG,IAAI;IAC5B;;OAEG;cACO,MAAM,QACd,gBACE,kBAAkB,gBAAgB,GAAG,kBAAkB,KAAK,CAC7D,CACF;EAoSJ,CAAC"}
|
|
@@ -46,7 +46,7 @@ const useTaskProfitAndStopLossInternal = (position, options)=>{
|
|
|
46
46
|
}
|
|
47
47
|
}, []);
|
|
48
48
|
const _setOrderValue = (key, value, options)=>{
|
|
49
|
-
|
|
49
|
+
;
|
|
50
50
|
setOrder((prev)=>{
|
|
51
51
|
const side = position.position_qty > 0 ? _types.OrderSide.BUY : _types.OrderSide.SELL;
|
|
52
52
|
if (key === "sl_pnl") {
|
|
@@ -69,6 +69,7 @@ const useTaskProfitAndStopLossInternal = (position, options)=>{
|
|
|
69
69
|
});
|
|
70
70
|
};
|
|
71
71
|
const setOrderValue = async (key, value, options)=>{
|
|
72
|
+
// console.log("-------->>>>>", key, value);
|
|
72
73
|
if (key === "quantity") {
|
|
73
74
|
setOrder((prev)=>({
|
|
74
75
|
...prev,
|