@orderly.network/hooks 1.5.13 → 1.5.14

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.
@@ -1,6 +1,6 @@
1
- import { type SWRConfiguration } from "swr";
2
1
  import { type API, OrderEntity } from "@orderly.network/types";
3
2
  import { Decimal } from "@orderly.network/utils";
3
+ import { type SWRConfiguration } from "swr";
4
4
  type PriceMode = "markPrice" | "lastPrice";
5
5
  export interface PositionReturn {
6
6
  data: any[];
@@ -35,7 +35,7 @@ export declare const usePositionStream: (symbol?: string, options?: SWRConfigura
35
35
  }, {
36
36
  readonly loading: false;
37
37
  readonly error: any;
38
- readonly refresh: import("swr/_internal").KeyedMutator<API.PositionInfo>;
38
+ readonly refresh: () => void;
39
39
  }];
40
40
  export declare const pathOr_unsettledPnLPathOr: (obj: any) => number;
41
41
  export {};
@@ -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;IAC3B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;OAEG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;;;;;;;;;;;;;;;;;;;;;;;EA+SF,CAAC;AAEF,eAAO,MAAM,yBAAyB,sBAIpC,CAAC"}
1
+ {"version":3,"file":"usePositionStream.d.ts","sourceRoot":"","sources":["../../../src/orderly/usePositionStream/usePositionStream.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,GAAG,EACR,WAAW,EAEZ,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,OAAO,EAAQ,MAAM,wBAAwB,CAAC;AAGvD,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,KAAK,CAAC;AAW5C,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;;;;;;;;;;;;;;;;;;;;;;;EAoTF,CAAC;AAEF,eAAO,MAAM,yBAAyB,sBAIpC,CAAC"}
@@ -1,16 +1,16 @@
1
- import { useEffect, useMemo, useState } from "react";
2
- import { usePrivateQuery } from "../../usePrivateQuery";
3
1
  import { account, positions } from "@orderly.network/perp";
4
- import { createGetter } from "../../utils/createGetter";
5
- import { useFundingRates } from "../useFundingRates";
6
2
  import { AlgoOrderRootType, OrderStatus } from "@orderly.network/types";
7
- import { useSymbolsInfo } from "../useSymbolsInfo";
8
- import { useMarkPricesStream } from "../useMarkPricesStream";
3
+ import { zero } from "@orderly.network/utils";
9
4
  import { pathOr, propOr } from "ramda";
5
+ import { useEffect, useMemo, useState } from "react";
6
+ import { usePrivateQuery } from "../../usePrivateQuery";
7
+ import { createGetter } from "../../utils/createGetter";
10
8
  import { parseHolding } from "../../utils/parseHolding";
11
- import { zero } from "@orderly.network/utils";
12
- import { useMarketsStream } from "../useMarketsStream";
13
9
  import { useOrderStream } from "../orderlyHooks";
10
+ import { useFundingRates } from "../useFundingRates";
11
+ import { useMarketsStream } from "../useMarketsStream";
12
+ import { useMarkPricesStream } from "../useMarkPricesStream";
13
+ import { useSymbolsInfo } from "../useSymbolsInfo";
14
14
  import { findPositionTPSLFromOrders, findTPSLFromOrder } from "./utils";
15
15
  export const usePositionStream = (/**
16
16
  * If symbol is passed, only the position of that symbol will be returned.
@@ -36,7 +36,7 @@ export const usePositionStream = (/**
36
36
  });
37
37
  const { data: markPrices } = useMarkPricesStream();
38
38
  // get TP/SL orders;
39
- const [tpslOrders] = useOrderStream({
39
+ const [tpslOrders, { refresh }] = useOrderStream({
40
40
  status: OrderStatus.INCOMPLETE,
41
41
  includes: [
42
42
  AlgoOrderRootType.POSITIONAL_TP_SL,
@@ -44,6 +44,10 @@ export const usePositionStream = (/**
44
44
  ]
45
45
  });
46
46
  //
47
+ const refreshAlgoAndPosition = ()=>{
48
+ refresh();
49
+ refreshPositions();
50
+ };
47
51
  // console.log("---------------");
48
52
  const [priceMode, setPriceMode] = useState(options?.calcMode || "markPrice");
49
53
  useEffect(()=>{
@@ -256,7 +260,7 @@ export const usePositionStream = (/**
256
260
  // showSymbol,
257
261
  error,
258
262
  // loadMore: () => {},
259
- refresh: refreshPositions
263
+ refresh: refreshAlgoAndPosition
260
264
  }
261
265
  ];
262
266
  };
@@ -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 & {\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":["useEffect","useMemo","useState","usePrivateQuery","account","positions","createGetter","useFundingRates","AlgoOrderRootType","OrderStatus","useSymbolsInfo","useMarkPricesStream","pathOr","propOr","parseHolding","zero","useMarketsStream","useOrderStream","findPositionTPSLFromOrders","findTPSLFromOrder","usePositionStream","symbol","options","symbolInfo","includedPendingOrder","data","accountInfo","holding","formatter","fundingRates","error","mutate","refreshPositions","onError","err","markPrices","tpslOrders","status","INCOMPLETE","includes","POSITIONAL_TP_SL","TP_SL","priceMode","setPriceMode","calcMode","tickers","tickerPrices","Object","create","forEach","item","formatedPositions","rows","isNil","filteredData","filter","unrealPnL_total","notional_total","unsettlementPnL_total","formatted","map","unRealizedPrice","mark_price","price","info","notional","position_qty","unrealPnl","unrealizedPnL","qty","openPrice","average_open_price","markPrice","imr","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","USDC_holding","nonUSDC","USDCHolding","nonUSDCHolding","totalUnsettlementPnL","totalUnrealizedPnL","positionsRows","total","pending_long_qty","pending_short_qty","related_order","Array","isArray","undefined","tp_sl_pricer","MMR","baseMMR","IMRFactor","maintenanceMargin","tp_trigger_price","sl_trigger_price","mmr","algo_order","est_liq_price","liqPrice","positionInfoGetter","aggregated","loading","refresh","pathOr_unsettledPnLPathOr"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../../src/orderly/usePositionStream/usePositionStream.ts"],"sourcesContent":["import { account, positions } from \"@orderly.network/perp\";\nimport {\n AlgoOrderRootType,\n type API,\n OrderEntity,\n OrderStatus,\n} from \"@orderly.network/types\";\nimport { Decimal, zero } from \"@orderly.network/utils\";\nimport { pathOr, propOr } from \"ramda\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { type SWRConfiguration } from \"swr\";\nimport { usePrivateQuery } from \"../../usePrivateQuery\";\nimport { createGetter } from \"../../utils/createGetter\";\nimport { parseHolding } from \"../../utils/parseHolding\";\nimport { useOrderStream } from \"../orderlyHooks\";\nimport { useFundingRates } from \"../useFundingRates\";\nimport { useMarketsStream } from \"../useMarketsStream\";\nimport { useMarkPricesStream } from \"../useMarkPricesStream\";\nimport { useSymbolsInfo } from \"../useSymbolsInfo\";\nimport { findPositionTPSLFromOrders, findTPSLFromOrder } 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, { refresh }] = useOrderStream({\n status: OrderStatus.INCOMPLETE,\n includes: [AlgoOrderRootType.POSITIONAL_TP_SL, AlgoOrderRootType.TP_SL],\n });\n //\n\n const refreshAlgoAndPosition = () => {\n refresh();\n refreshPositions();\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: refreshAlgoAndPosition,\n },\n ] as const;\n};\n\nexport const pathOr_unsettledPnLPathOr = pathOr(0, [\n 0,\n \"aggregated\",\n \"unsettledPnL\",\n]);\n"],"names":["account","positions","AlgoOrderRootType","OrderStatus","zero","pathOr","propOr","useEffect","useMemo","useState","usePrivateQuery","createGetter","parseHolding","useOrderStream","useFundingRates","useMarketsStream","useMarkPricesStream","useSymbolsInfo","findPositionTPSLFromOrders","findTPSLFromOrder","usePositionStream","symbol","options","symbolInfo","includedPendingOrder","data","accountInfo","holding","formatter","fundingRates","error","mutate","refreshPositions","onError","err","markPrices","tpslOrders","refresh","status","INCOMPLETE","includes","POSITIONAL_TP_SL","TP_SL","refreshAlgoAndPosition","priceMode","setPriceMode","calcMode","tickers","tickerPrices","Object","create","forEach","item","formatedPositions","rows","isNil","filteredData","filter","unrealPnL_total","notional_total","unsettlementPnL_total","formatted","map","unRealizedPrice","mark_price","price","info","notional","position_qty","unrealPnl","unrealizedPnL","qty","openPrice","average_open_price","markPrice","imr","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","USDC_holding","nonUSDC","USDCHolding","nonUSDCHolding","totalUnsettlementPnL","totalUnrealizedPnL","positionsRows","total","pending_long_qty","pending_short_qty","related_order","Array","isArray","undefined","tp_sl_pricer","MMR","baseMMR","IMRFactor","maintenanceMargin","tp_trigger_price","sl_trigger_price","mmr","algo_order","est_liq_price","liqPrice","positionInfoGetter","aggregated","loading","pathOr_unsettledPnLPathOr"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
package/esm/version.d.ts CHANGED
@@ -5,6 +5,6 @@ declare global {
5
5
  };
6
6
  }
7
7
  }
8
- declare const _default: "1.5.13";
8
+ declare const _default: "1.5.14";
9
9
  export default _default;
10
10
  //# sourceMappingURL=version.d.ts.map
package/esm/version.js CHANGED
@@ -1,7 +1,7 @@
1
1
  if (typeof window !== 'undefined') {
2
2
  window.__ORDERLY_VERSION__ = window.__ORDERLY_VERSION__ || {};
3
- window.__ORDERLY_VERSION__["@orderly.network/hooks"] = "1.5.13";
3
+ window.__ORDERLY_VERSION__["@orderly.network/hooks"] = "1.5.14";
4
4
  }
5
- export default "1.5.13";
5
+ export default "1.5.14";
6
6
 
7
7
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/version.ts"],"sourcesContent":["\ndeclare global {\n interface Window {\n __ORDERLY_VERSION__?: {\n [key: string]: string;\n };\n }\n}\nif(typeof window !== 'undefined') {\n window.__ORDERLY_VERSION__ = window.__ORDERLY_VERSION__ || {};\n window.__ORDERLY_VERSION__[\"@orderly.network/hooks\"] = \"1.5.13\";\n};\n\nexport default \"1.5.13\";\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,SAAS"}
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.14\";\n};\n\nexport default \"1.5.14\";\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,SAAS"}
@@ -1,6 +1,6 @@
1
- import { type SWRConfiguration } from "swr";
2
1
  import { type API, OrderEntity } from "@orderly.network/types";
3
2
  import { Decimal } from "@orderly.network/utils";
3
+ import { type SWRConfiguration } from "swr";
4
4
  type PriceMode = "markPrice" | "lastPrice";
5
5
  export interface PositionReturn {
6
6
  data: any[];
@@ -35,7 +35,7 @@ export declare const usePositionStream: (symbol?: string, options?: SWRConfigura
35
35
  }, {
36
36
  readonly loading: false;
37
37
  readonly error: any;
38
- readonly refresh: import("swr/_internal").KeyedMutator<API.PositionInfo>;
38
+ readonly refresh: () => void;
39
39
  }];
40
40
  export declare const pathOr_unsettledPnLPathOr: (obj: any) => number;
41
41
  export {};
@@ -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;IAC3B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;OAEG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;;;;;;;;;;;;;;;;;;;;;;;EA+SF,CAAC;AAEF,eAAO,MAAM,yBAAyB,sBAIpC,CAAC"}
1
+ {"version":3,"file":"usePositionStream.d.ts","sourceRoot":"","sources":["../../../src/orderly/usePositionStream/usePositionStream.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,GAAG,EACR,WAAW,EAEZ,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,OAAO,EAAQ,MAAM,wBAAwB,CAAC;AAGvD,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,KAAK,CAAC;AAW5C,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;;;;;;;;;;;;;;;;;;;;;;;EAoTF,CAAC;AAEF,eAAO,MAAM,yBAAyB,sBAIpC,CAAC"}
@@ -16,19 +16,19 @@ _export(exports, {
16
16
  return usePositionStream;
17
17
  }
18
18
  });
19
- const _react = require("react");
20
- const _usePrivateQuery = require("../../usePrivateQuery");
21
19
  const _perp = require("@orderly.network/perp");
22
- const _createGetter = require("../../utils/createGetter");
23
- const _useFundingRates = require("../useFundingRates");
24
20
  const _types = require("@orderly.network/types");
25
- const _useSymbolsInfo = require("../useSymbolsInfo");
26
- const _useMarkPricesStream = require("../useMarkPricesStream");
21
+ const _utils = require("@orderly.network/utils");
27
22
  const _ramda = require("ramda");
23
+ const _react = require("react");
24
+ const _usePrivateQuery = require("../../usePrivateQuery");
25
+ const _createGetter = require("../../utils/createGetter");
28
26
  const _parseHolding = require("../../utils/parseHolding");
29
- const _utils = require("@orderly.network/utils");
30
- const _useMarketsStream = require("../useMarketsStream");
31
27
  const _orderlyHooks = require("../orderlyHooks");
28
+ const _useFundingRates = require("../useFundingRates");
29
+ const _useMarketsStream = require("../useMarketsStream");
30
+ const _useMarkPricesStream = require("../useMarkPricesStream");
31
+ const _useSymbolsInfo = require("../useSymbolsInfo");
32
32
  const _utils1 = require("./utils");
33
33
  const usePositionStream = (/**
34
34
  * If symbol is passed, only the position of that symbol will be returned.
@@ -54,7 +54,7 @@ const usePositionStream = (/**
54
54
  });
55
55
  const { data: markPrices } = (0, _useMarkPricesStream.useMarkPricesStream)();
56
56
  // get TP/SL orders;
57
- const [tpslOrders] = (0, _orderlyHooks.useOrderStream)({
57
+ const [tpslOrders, { refresh }] = (0, _orderlyHooks.useOrderStream)({
58
58
  status: _types.OrderStatus.INCOMPLETE,
59
59
  includes: [
60
60
  _types.AlgoOrderRootType.POSITIONAL_TP_SL,
@@ -62,6 +62,10 @@ const usePositionStream = (/**
62
62
  ]
63
63
  });
64
64
  //
65
+ const refreshAlgoAndPosition = ()=>{
66
+ refresh();
67
+ refreshPositions();
68
+ };
65
69
  // console.log("---------------");
66
70
  const [priceMode, setPriceMode] = (0, _react.useState)(options?.calcMode || "markPrice");
67
71
  (0, _react.useEffect)(()=>{
@@ -274,7 +278,7 @@ const usePositionStream = (/**
274
278
  // showSymbol,
275
279
  error,
276
280
  // loadMore: () => {},
277
- refresh: refreshPositions
281
+ refresh: refreshAlgoAndPosition
278
282
  }
279
283
  ];
280
284
  };
@@ -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 & {\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
+ {"version":3,"sources":["../../../src/orderly/usePositionStream/usePositionStream.ts"],"sourcesContent":["import { account, positions } from \"@orderly.network/perp\";\nimport {\n AlgoOrderRootType,\n type API,\n OrderEntity,\n OrderStatus,\n} from \"@orderly.network/types\";\nimport { Decimal, zero } from \"@orderly.network/utils\";\nimport { pathOr, propOr } from \"ramda\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { type SWRConfiguration } from \"swr\";\nimport { usePrivateQuery } from \"../../usePrivateQuery\";\nimport { createGetter } from \"../../utils/createGetter\";\nimport { parseHolding } from \"../../utils/parseHolding\";\nimport { useOrderStream } from \"../orderlyHooks\";\nimport { useFundingRates } from \"../useFundingRates\";\nimport { useMarketsStream } from \"../useMarketsStream\";\nimport { useMarkPricesStream } from \"../useMarkPricesStream\";\nimport { useSymbolsInfo } from \"../useSymbolsInfo\";\nimport { findPositionTPSLFromOrders, findTPSLFromOrder } 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, { refresh }] = useOrderStream({\n status: OrderStatus.INCOMPLETE,\n includes: [AlgoOrderRootType.POSITIONAL_TP_SL, AlgoOrderRootType.TP_SL],\n });\n //\n\n const refreshAlgoAndPosition = () => {\n refresh();\n refreshPositions();\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: refreshAlgoAndPosition,\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","refresh","useOrderStream","status","OrderStatus","INCOMPLETE","includes","AlgoOrderRootType","POSITIONAL_TP_SL","TP_SL","refreshAlgoAndPosition","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"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
package/lib/version.d.ts CHANGED
@@ -5,6 +5,6 @@ declare global {
5
5
  };
6
6
  }
7
7
  }
8
- declare const _default: "1.5.13";
8
+ declare const _default: "1.5.14";
9
9
  export default _default;
10
10
  //# sourceMappingURL=version.d.ts.map
package/lib/version.js CHANGED
@@ -10,8 +10,8 @@ Object.defineProperty(exports, "default", {
10
10
  });
11
11
  if (typeof window !== 'undefined') {
12
12
  window.__ORDERLY_VERSION__ = window.__ORDERLY_VERSION__ || {};
13
- window.__ORDERLY_VERSION__["@orderly.network/hooks"] = "1.5.13";
13
+ window.__ORDERLY_VERSION__["@orderly.network/hooks"] = "1.5.14";
14
14
  }
15
- const _default = "1.5.13";
15
+ const _default = "1.5.14";
16
16
 
17
17
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/version.ts"],"sourcesContent":["\ndeclare global {\n interface Window {\n __ORDERLY_VERSION__?: {\n [key: string]: string;\n };\n }\n}\nif(typeof window !== 'undefined') {\n window.__ORDERLY_VERSION__ = window.__ORDERLY_VERSION__ || {};\n window.__ORDERLY_VERSION__[\"@orderly.network/hooks\"] = \"1.5.13\";\n};\n\nexport default \"1.5.13\";\n"],"names":["window","__ORDERLY_VERSION__"],"rangeMappings":";;;;;;;;;;;;;;","mappings":";;;;+BAaA;;;eAAA;;;AALA,IAAG,OAAOA,WAAW,aAAa;IAC9BA,OAAOC,mBAAmB,GAAGD,OAAOC,mBAAmB,IAAI,CAAC;IAC5DD,OAAOC,mBAAmB,CAAC,yBAAyB,GAAG;AAC3D;MAEA,WAAe"}
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.14\";\n};\n\nexport default \"1.5.14\";\n"],"names":["window","__ORDERLY_VERSION__"],"rangeMappings":";;;;;;;;;;;;;;","mappings":";;;;+BAaA;;;eAAA;;;AALA,IAAG,OAAOA,WAAW,aAAa;IAC9BA,OAAOC,mBAAmB,GAAGD,OAAOC,mBAAmB,IAAI,CAAC;IAC5DD,OAAOC,mBAAmB,CAAC,yBAAyB,GAAG;AAC3D;MAEA,WAAe"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orderly.network/hooks",
3
- "version": "1.5.13",
3
+ "version": "1.5.14",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "module": "esm/index.js",
@@ -33,7 +33,7 @@
33
33
  "tsup": "^7.1.0",
34
34
  "typedoc": "^0.26.5",
35
35
  "typescript": "^5.1.6",
36
- "tsconfig": "0.3.13"
36
+ "tsconfig": "0.3.14"
37
37
  },
38
38
  "dependencies": {
39
39
  "@akamfoad/qr": "^0.4.0",
@@ -41,11 +41,11 @@
41
41
  "swr": "2.2.4",
42
42
  "use-constant": "^1.1.1",
43
43
  "use-debounce": "^9.0.4",
44
- "@orderly.network/utils": "1.5.13",
45
- "@orderly.network/perp": "3.3.13",
46
- "@orderly.network/net": "1.5.13",
47
- "@orderly.network/core": "1.5.13",
48
- "@orderly.network/types": "1.5.13"
44
+ "@orderly.network/net": "1.5.14",
45
+ "@orderly.network/core": "1.5.14",
46
+ "@orderly.network/types": "1.5.14",
47
+ "@orderly.network/perp": "3.3.14",
48
+ "@orderly.network/utils": "1.5.14"
49
49
  },
50
50
  "publishConfig": {
51
51
  "access": "public"