@pear-protocol/symmio-client 0.3.16 → 0.3.17

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.
@@ -633,6 +633,7 @@ var symmKeys = {
633
633
  triggerOrders: (params) => ["symm", "triggerOrders", params],
634
634
  triggerConfig: (orderId) => ["symm", "triggerConfig", orderId],
635
635
  markets: (chainId, search, pageSize) => ["symm", "markets", chainId, search, pageSize],
636
+ marketPositioning: (chainId, market) => ["symm", "marketPositioning", chainId, market],
636
637
  hedgerMarketById: (id, chainId) => ["symm", "hedgerMarketById", id, chainId],
637
638
  hedgerMarketBySymbol: (symbol, chainId) => ["symm", "hedgerMarketBySymbol", symbol, chainId],
638
639
  lockedParams: (marketName, leverage, chainId) => ["symm", "lockedParams", marketName, leverage, chainId],
@@ -1705,6 +1706,7 @@ var SymmioSDKError = class extends Error {
1705
1706
  this.code = code;
1706
1707
  this.name = "SymmioSDKError";
1707
1708
  }
1709
+ code;
1708
1710
  };
1709
1711
  function validateAddress(address, name) {
1710
1712
  if (!viem.isAddress(address)) {
@@ -26159,7 +26161,7 @@ function useSymmAccountOverview(params) {
26159
26161
  chainId: params.chainId,
26160
26162
  query: {
26161
26163
  ...params.query,
26162
- enabled: upnlReady && (params.query?.enabled ?? true)
26164
+ enabled: params.query?.enabled ?? true
26163
26165
  }
26164
26166
  });
26165
26167
  const data = react.useMemo(() => {
@@ -26681,6 +26683,34 @@ function useSymmMarkets(params) {
26681
26683
  enabled: internalEnabled && (params?.query?.enabled ?? true)
26682
26684
  });
26683
26685
  }
26686
+ function normalizeMarket(market) {
26687
+ if (Array.isArray(market)) {
26688
+ const markets = market.map((marketName2) => marketName2.trim()).filter((marketName2) => marketName2.length > 0);
26689
+ return markets.length > 0 ? markets : void 0;
26690
+ }
26691
+ const marketName = market?.trim();
26692
+ return marketName ? marketName : void 0;
26693
+ }
26694
+ function hasMarket(market) {
26695
+ return Array.isArray(market) ? market.length > 0 : market !== void 0;
26696
+ }
26697
+ function useSymmMarketPositioning(params) {
26698
+ const { symmCoreClient, chainId: ctxChainId } = useSymmContext();
26699
+ const chainId = params?.chainId ?? ctxChainId;
26700
+ const market = normalizeMarket(params?.market);
26701
+ const internalEnabled = !!symmCoreClient && hasMarket(market);
26702
+ return reactQuery.useQuery({
26703
+ ...params?.query,
26704
+ queryKey: symmKeys.marketPositioning(chainId, market),
26705
+ queryFn: () => {
26706
+ if (!hasMarket(market)) {
26707
+ throw new Error("Market is required to fetch positioning");
26708
+ }
26709
+ return symmCoreClient.markets.getPositioning({ chainId, market });
26710
+ },
26711
+ enabled: internalEnabled && (params?.query?.enabled ?? true)
26712
+ });
26713
+ }
26684
26714
  function useSymmHedgerMarketById(params) {
26685
26715
  const { symmCoreClient, chainId: ctxChainId } = useSymmContext();
26686
26716
  const { id } = params;
@@ -26786,7 +26816,9 @@ async function fetch24hrTicker(symbol) {
26786
26816
  return {
26787
26817
  lastPrice: parseFloat(data.lastPrice),
26788
26818
  openPrice: parseFloat(data.openPrice),
26789
- priceChangePercent: parseFloat(data.priceChangePercent)
26819
+ priceChangePercent: parseFloat(data.priceChangePercent),
26820
+ volume: parseFloat(data.volume),
26821
+ quoteVolume: parseFloat(data.quoteVolume)
26790
26822
  };
26791
26823
  }
26792
26824
  async function fetch24hrTickers() {
@@ -26800,7 +26832,9 @@ async function fetch24hrTickers() {
26800
26832
  result[item.symbol] = {
26801
26833
  lastPrice: parseFloat(item.lastPrice),
26802
26834
  openPrice: parseFloat(item.openPrice),
26803
- priceChangePercent: parseFloat(item.priceChangePercent)
26835
+ priceChangePercent: parseFloat(item.priceChangePercent),
26836
+ volume: parseFloat(item.volume),
26837
+ quoteVolume: parseFloat(item.quoteVolume)
26804
26838
  };
26805
26839
  }
26806
26840
  return result;
@@ -26836,7 +26870,11 @@ function useSymmTokenSelectionMarkets(params) {
26836
26870
  return;
26837
26871
  }
26838
26872
  const ticker = allTickers[binanceSymbol];
26839
- tickerSnapshots[symbol] = ticker ? { openPrice: ticker.openPrice } : null;
26873
+ tickerSnapshots[symbol] = ticker ? {
26874
+ openPrice: ticker.openPrice,
26875
+ volume: ticker.volume,
26876
+ quoteVolume: ticker.quoteVolume
26877
+ } : null;
26840
26878
  });
26841
26879
  return { tickerSnapshots };
26842
26880
  },
@@ -26846,21 +26884,30 @@ function useSymmTokenSelectionMarkets(params) {
26846
26884
  });
26847
26885
  const markets = react.useMemo(() => {
26848
26886
  const snapshots = priceQuery.data?.tickerSnapshots ?? {};
26849
- return baseMarkets.map((market) => {
26887
+ return baseMarkets.map((market, index) => {
26850
26888
  const symbol = market.symbol ?? "";
26851
26889
  const markPrice = symbol ? liveMarkPrices[symbol] ?? null : null;
26852
- const prevDayPrice = symbol ? snapshots[symbol]?.openPrice ?? null : null;
26890
+ const ticker = symbol ? snapshots[symbol] ?? null : null;
26891
+ const prevDayPrice = ticker?.openPrice ?? null;
26853
26892
  const priceChange24h = markPrice != null && prevDayPrice != null ? markPrice - prevDayPrice : null;
26854
26893
  const priceChange24hPercent = markPrice != null && prevDayPrice != null && prevDayPrice !== 0 ? (markPrice - prevDayPrice) / prevDayPrice * 100 : null;
26855
26894
  return {
26856
- ...market,
26857
- collateralToken: "USDC",
26858
- markPrice,
26859
- prevDayPrice,
26860
- priceChange24h,
26861
- priceChange24hPercent
26895
+ market: {
26896
+ ...market,
26897
+ collateralToken: "USDC",
26898
+ markPrice,
26899
+ prevDayPrice,
26900
+ priceChange24h,
26901
+ priceChange24hPercent,
26902
+ volume24h: ticker?.volume ?? null,
26903
+ quoteVolume24h: ticker?.quoteVolume ?? null
26904
+ },
26905
+ index
26862
26906
  };
26863
- });
26907
+ }).sort((a, b) => {
26908
+ const volumeDelta = (b.market.quoteVolume24h ?? 0) - (a.market.quoteVolume24h ?? 0);
26909
+ return volumeDelta === 0 ? a.index - b.index : volumeDelta;
26910
+ }).map(({ market }) => market);
26864
26911
  }, [baseMarkets, liveMarkPrices, priceQuery.data]);
26865
26912
  const marketsBySymbol = react.useMemo(
26866
26913
  () => new Map(
@@ -27921,6 +27968,7 @@ exports.useSymmInstantTradeExecuteMutation = useSymmInstantTradeExecuteMutation;
27921
27968
  exports.useSymmInternalTransferCollateralMutation = useSymmInternalTransferCollateralMutation;
27922
27969
  exports.useSymmLockedParams = useSymmLockedParams;
27923
27970
  exports.useSymmMarkReadNotificationMutation = useSymmMarkReadNotificationMutation;
27971
+ exports.useSymmMarketPositioning = useSymmMarketPositioning;
27924
27972
  exports.useSymmMarkets = useSymmMarkets;
27925
27973
  exports.useSymmNotificationsQuery = useSymmNotificationsQuery;
27926
27974
  exports.useSymmOpenBasketMutation = useSymmOpenBasketMutation;