@pear-protocol/symmio-client 0.2.26 → 0.2.27

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.
@@ -8720,6 +8720,19 @@ interface UseSymmTokenSelectionMarketsReturn {
8720
8720
  */
8721
8721
  declare function useSymmTokenSelectionMarkets(params?: UseSymmHedgerMarketsParams): UseSymmTokenSelectionMarketsReturn;
8722
8722
 
8723
+ interface UseSymmTokenMarkPriceReturn {
8724
+ symbol: string | null;
8725
+ binanceSymbol: string | null;
8726
+ markPrice: number | null;
8727
+ isSupported: boolean;
8728
+ reason: "missing_symbol" | "unsupported_symbol" | "invalid_symbol" | null;
8729
+ }
8730
+ /**
8731
+ * Use case: Subscribe to and read live Binance mark price for a single SYMM token symbol.
8732
+ * Uses WebSocket source for continuous updates.
8733
+ */
8734
+ declare function useSymmTokenMarkPrice(symbol?: string | null): UseSymmTokenMarkPriceReturn;
8735
+
8723
8736
  /**
8724
8737
  * Use case: Fetch current funding rate snapshots from SYMM core.
8725
8738
  */
@@ -9102,4 +9115,4 @@ type SymmAuthState = {
9102
9115
  };
9103
9116
  declare const useSymmAuthStore: zustand.UseBoundStore<zustand.StoreApi<SymmAuthState>>;
9104
9117
 
9105
- export { type SymmChartSelection, type SymmChartSelectionInput, type SymmChartTokenSelection, type SymmContextValue, type SymmDelegationState, type SymmInstantTradeActionArgs, type SymmInstantTradeRequest, type SymmMutationConfig, type SymmPerformanceOverlay, type SymmQueryConfig, type SymmTokenMetadata, type SymmTokenSelectionMarket, type UseSymmAuthParams, type UseSymmChartCandlesReturn, type UseSymmDelegationParams, type UseSymmHedgerMarketsParams, type UseSymmTokenSelectionMarketsReturn, type UseSymmTokenSelectionMetadataReturn, type UseSymmTpslOrdersParams, getSymmErrorMessage, symmKeys, useBinanceMarkPriceStore, useSymmAccountData, useSymmAccountSummary, useSymmAccountsApi, useSymmAccountsLength, useSymmAccountsQuery, useSymmAccountsWithPositions, useSymmAllocateCollateralMutation, useSymmApprovalQuery, useSymmApproveMutation, useSymmAuth, useSymmAuthStore, useSymmAvailableMargin, useSymmBalances, useSymmCancelClose, useSymmCancelOpenMutation, useSymmCancelTpslMutation, useSymmCancelTwapOrderMutation, useSymmChartCandles, useSymmChartSelection, useSymmClearTriggerConfigMutation, useSymmCloseAllPositionsMutation, useSymmCloseOrder, useSymmClosePositionMutation, useSymmContext, useSymmCoreClient, useSymmCreateAccountMutation, useSymmDeallocateCollateralMutation, useSymmDelegation, useSymmDepositAndAllocateMutation, useSymmDepositMutation, useSymmEditAccountNameMutation, useSymmFunding, useSymmFundingHistory, useSymmFundingPayments, useSymmHedgerMarketById, useSymmHedgerMarketBySymbol, useSymmHedgerMarkets, useSymmInstantTradeEnsureReadyMutation, useSymmInstantTradeExecuteMutation, useSymmInternalTransferCollateralMutation, useSymmLockedParams, useSymmMarkReadNotificationMutation, useSymmMarkets, useSymmNotificationsQuery, useSymmOpenBasketMutation, useSymmOpenOrders, useSymmPendingIds, useSymmPendingInstantOpens, useSymmPerformanceOverlays, useSymmPortfolio, useSymmPositions, useSymmSetTpslMutation, useSymmSetTriggerConfigMutation, useSymmSignTermsMutation, useSymmSignatureQuery, useSymmTokenSelectionMarkets, useSymmTokenSelectionMetadata, useSymmTpslOrders, useSymmTradeHistory, useSymmTriggerConfigQuery, useSymmTriggerOrders, useSymmTwapOrder, useSymmTwapOrdersQuery, useSymmUnreadCountQuery, useSymmUpdatePositionMutation, useSymmWithdraw, useSymmWs, useSymmWsStore };
9118
+ export { type SymmChartSelection, type SymmChartSelectionInput, type SymmChartTokenSelection, type SymmContextValue, type SymmDelegationState, type SymmInstantTradeActionArgs, type SymmInstantTradeRequest, type SymmMutationConfig, type SymmPerformanceOverlay, type SymmQueryConfig, type SymmTokenMetadata, type SymmTokenSelectionMarket, type UseSymmAuthParams, type UseSymmChartCandlesReturn, type UseSymmDelegationParams, type UseSymmHedgerMarketsParams, type UseSymmTokenMarkPriceReturn, type UseSymmTokenSelectionMarketsReturn, type UseSymmTokenSelectionMetadataReturn, type UseSymmTpslOrdersParams, getSymmErrorMessage, symmKeys, useBinanceMarkPriceStore, useSymmAccountData, useSymmAccountSummary, useSymmAccountsApi, useSymmAccountsLength, useSymmAccountsQuery, useSymmAccountsWithPositions, useSymmAllocateCollateralMutation, useSymmApprovalQuery, useSymmApproveMutation, useSymmAuth, useSymmAuthStore, useSymmAvailableMargin, useSymmBalances, useSymmCancelClose, useSymmCancelOpenMutation, useSymmCancelTpslMutation, useSymmCancelTwapOrderMutation, useSymmChartCandles, useSymmChartSelection, useSymmClearTriggerConfigMutation, useSymmCloseAllPositionsMutation, useSymmCloseOrder, useSymmClosePositionMutation, useSymmContext, useSymmCoreClient, useSymmCreateAccountMutation, useSymmDeallocateCollateralMutation, useSymmDelegation, useSymmDepositAndAllocateMutation, useSymmDepositMutation, useSymmEditAccountNameMutation, useSymmFunding, useSymmFundingHistory, useSymmFundingPayments, useSymmHedgerMarketById, useSymmHedgerMarketBySymbol, useSymmHedgerMarkets, useSymmInstantTradeEnsureReadyMutation, useSymmInstantTradeExecuteMutation, useSymmInternalTransferCollateralMutation, useSymmLockedParams, useSymmMarkReadNotificationMutation, useSymmMarkets, useSymmNotificationsQuery, useSymmOpenBasketMutation, useSymmOpenOrders, useSymmPendingIds, useSymmPendingInstantOpens, useSymmPerformanceOverlays, useSymmPortfolio, useSymmPositions, useSymmSetTpslMutation, useSymmSetTriggerConfigMutation, useSymmSignTermsMutation, useSymmSignatureQuery, useSymmTokenMarkPrice, useSymmTokenSelectionMarkets, useSymmTokenSelectionMetadata, useSymmTpslOrders, useSymmTradeHistory, useSymmTriggerConfigQuery, useSymmTriggerOrders, useSymmTwapOrder, useSymmTwapOrdersQuery, useSymmUnreadCountQuery, useSymmUpdatePositionMutation, useSymmWithdraw, useSymmWs, useSymmWsStore };
@@ -8720,6 +8720,19 @@ interface UseSymmTokenSelectionMarketsReturn {
8720
8720
  */
8721
8721
  declare function useSymmTokenSelectionMarkets(params?: UseSymmHedgerMarketsParams): UseSymmTokenSelectionMarketsReturn;
8722
8722
 
8723
+ interface UseSymmTokenMarkPriceReturn {
8724
+ symbol: string | null;
8725
+ binanceSymbol: string | null;
8726
+ markPrice: number | null;
8727
+ isSupported: boolean;
8728
+ reason: "missing_symbol" | "unsupported_symbol" | "invalid_symbol" | null;
8729
+ }
8730
+ /**
8731
+ * Use case: Subscribe to and read live Binance mark price for a single SYMM token symbol.
8732
+ * Uses WebSocket source for continuous updates.
8733
+ */
8734
+ declare function useSymmTokenMarkPrice(symbol?: string | null): UseSymmTokenMarkPriceReturn;
8735
+
8723
8736
  /**
8724
8737
  * Use case: Fetch current funding rate snapshots from SYMM core.
8725
8738
  */
@@ -9102,4 +9115,4 @@ type SymmAuthState = {
9102
9115
  };
9103
9116
  declare const useSymmAuthStore: zustand.UseBoundStore<zustand.StoreApi<SymmAuthState>>;
9104
9117
 
9105
- export { type SymmChartSelection, type SymmChartSelectionInput, type SymmChartTokenSelection, type SymmContextValue, type SymmDelegationState, type SymmInstantTradeActionArgs, type SymmInstantTradeRequest, type SymmMutationConfig, type SymmPerformanceOverlay, type SymmQueryConfig, type SymmTokenMetadata, type SymmTokenSelectionMarket, type UseSymmAuthParams, type UseSymmChartCandlesReturn, type UseSymmDelegationParams, type UseSymmHedgerMarketsParams, type UseSymmTokenSelectionMarketsReturn, type UseSymmTokenSelectionMetadataReturn, type UseSymmTpslOrdersParams, getSymmErrorMessage, symmKeys, useBinanceMarkPriceStore, useSymmAccountData, useSymmAccountSummary, useSymmAccountsApi, useSymmAccountsLength, useSymmAccountsQuery, useSymmAccountsWithPositions, useSymmAllocateCollateralMutation, useSymmApprovalQuery, useSymmApproveMutation, useSymmAuth, useSymmAuthStore, useSymmAvailableMargin, useSymmBalances, useSymmCancelClose, useSymmCancelOpenMutation, useSymmCancelTpslMutation, useSymmCancelTwapOrderMutation, useSymmChartCandles, useSymmChartSelection, useSymmClearTriggerConfigMutation, useSymmCloseAllPositionsMutation, useSymmCloseOrder, useSymmClosePositionMutation, useSymmContext, useSymmCoreClient, useSymmCreateAccountMutation, useSymmDeallocateCollateralMutation, useSymmDelegation, useSymmDepositAndAllocateMutation, useSymmDepositMutation, useSymmEditAccountNameMutation, useSymmFunding, useSymmFundingHistory, useSymmFundingPayments, useSymmHedgerMarketById, useSymmHedgerMarketBySymbol, useSymmHedgerMarkets, useSymmInstantTradeEnsureReadyMutation, useSymmInstantTradeExecuteMutation, useSymmInternalTransferCollateralMutation, useSymmLockedParams, useSymmMarkReadNotificationMutation, useSymmMarkets, useSymmNotificationsQuery, useSymmOpenBasketMutation, useSymmOpenOrders, useSymmPendingIds, useSymmPendingInstantOpens, useSymmPerformanceOverlays, useSymmPortfolio, useSymmPositions, useSymmSetTpslMutation, useSymmSetTriggerConfigMutation, useSymmSignTermsMutation, useSymmSignatureQuery, useSymmTokenSelectionMarkets, useSymmTokenSelectionMetadata, useSymmTpslOrders, useSymmTradeHistory, useSymmTriggerConfigQuery, useSymmTriggerOrders, useSymmTwapOrder, useSymmTwapOrdersQuery, useSymmUnreadCountQuery, useSymmUpdatePositionMutation, useSymmWithdraw, useSymmWs, useSymmWsStore };
9118
+ export { type SymmChartSelection, type SymmChartSelectionInput, type SymmChartTokenSelection, type SymmContextValue, type SymmDelegationState, type SymmInstantTradeActionArgs, type SymmInstantTradeRequest, type SymmMutationConfig, type SymmPerformanceOverlay, type SymmQueryConfig, type SymmTokenMetadata, type SymmTokenSelectionMarket, type UseSymmAuthParams, type UseSymmChartCandlesReturn, type UseSymmDelegationParams, type UseSymmHedgerMarketsParams, type UseSymmTokenMarkPriceReturn, type UseSymmTokenSelectionMarketsReturn, type UseSymmTokenSelectionMetadataReturn, type UseSymmTpslOrdersParams, getSymmErrorMessage, symmKeys, useBinanceMarkPriceStore, useSymmAccountData, useSymmAccountSummary, useSymmAccountsApi, useSymmAccountsLength, useSymmAccountsQuery, useSymmAccountsWithPositions, useSymmAllocateCollateralMutation, useSymmApprovalQuery, useSymmApproveMutation, useSymmAuth, useSymmAuthStore, useSymmAvailableMargin, useSymmBalances, useSymmCancelClose, useSymmCancelOpenMutation, useSymmCancelTpslMutation, useSymmCancelTwapOrderMutation, useSymmChartCandles, useSymmChartSelection, useSymmClearTriggerConfigMutation, useSymmCloseAllPositionsMutation, useSymmCloseOrder, useSymmClosePositionMutation, useSymmContext, useSymmCoreClient, useSymmCreateAccountMutation, useSymmDeallocateCollateralMutation, useSymmDelegation, useSymmDepositAndAllocateMutation, useSymmDepositMutation, useSymmEditAccountNameMutation, useSymmFunding, useSymmFundingHistory, useSymmFundingPayments, useSymmHedgerMarketById, useSymmHedgerMarketBySymbol, useSymmHedgerMarkets, useSymmInstantTradeEnsureReadyMutation, useSymmInstantTradeExecuteMutation, useSymmInternalTransferCollateralMutation, useSymmLockedParams, useSymmMarkReadNotificationMutation, useSymmMarkets, useSymmNotificationsQuery, useSymmOpenBasketMutation, useSymmOpenOrders, useSymmPendingIds, useSymmPendingInstantOpens, useSymmPerformanceOverlays, useSymmPortfolio, useSymmPositions, useSymmSetTpslMutation, useSymmSetTriggerConfigMutation, useSymmSignTermsMutation, useSymmSignatureQuery, useSymmTokenMarkPrice, useSymmTokenSelectionMarkets, useSymmTokenSelectionMetadata, useSymmTpslOrders, useSymmTradeHistory, useSymmTriggerConfigQuery, useSymmTriggerOrders, useSymmTwapOrder, useSymmTwapOrdersQuery, useSymmUnreadCountQuery, useSymmUpdatePositionMutation, useSymmWithdraw, useSymmWs, useSymmWsStore };
@@ -25040,6 +25040,22 @@ async function fetch24hrTicker(symbol) {
25040
25040
  priceChangePercent: parseFloat(data.priceChangePercent)
25041
25041
  };
25042
25042
  }
25043
+ async function fetch24hrTickers() {
25044
+ const response = await fetch(`${BINANCE_FAPI_BASE}/fapi/v1/ticker/24hr`);
25045
+ if (!response.ok) {
25046
+ throw new Error(`Binance 24hr tickers failed: ${response.status}`);
25047
+ }
25048
+ const data = await response.json();
25049
+ const result = {};
25050
+ for (const item of data) {
25051
+ result[item.symbol] = {
25052
+ lastPrice: parseFloat(item.lastPrice),
25053
+ prevClosePrice: parseFloat(item.prevClosePrice),
25054
+ priceChangePercent: parseFloat(item.priceChangePercent)
25055
+ };
25056
+ }
25057
+ return result;
25058
+ }
25043
25059
 
25044
25060
  // src/utils/binance-symbol-map.ts
25045
25061
  var SYMBOL_OVERRIDES = {
@@ -25361,15 +25377,6 @@ var useBinanceMarkPriceStore = zustand.create((set) => ({
25361
25377
  }));
25362
25378
 
25363
25379
  // src/react/hooks/use-symm-token-selection-markets.ts
25364
- async function fetchTickerSnapshot(symbol) {
25365
- const resolution = resolveBinanceSymbol(symbol);
25366
- if (!resolution.binanceSymbol) return null;
25367
- const ticker = await fetch24hrTicker(resolution.binanceSymbol);
25368
- if (!ticker) return null;
25369
- return {
25370
- prevClosePrice: ticker.prevClosePrice
25371
- };
25372
- }
25373
25380
  function useSymmTokenSelectionMarkets(params) {
25374
25381
  const query = useSymmHedgerMarkets(params);
25375
25382
  const baseMarkets = query.data?.filteredMarkets ?? query.data?.markets ?? [];
@@ -25401,12 +25408,17 @@ function useSymmTokenSelectionMarkets(params) {
25401
25408
  const priceQuery = reactQuery.useQuery({
25402
25409
  queryKey: ["symm", "token-selection-markets-price", symbolsKey],
25403
25410
  queryFn: async () => {
25411
+ const allTickers = await fetch24hrTickers();
25404
25412
  const tickerSnapshots = {};
25405
- await Promise.all(
25406
- marketSymbols.map(async (symbol) => {
25407
- tickerSnapshots[symbol] = await fetchTickerSnapshot(symbol);
25408
- })
25409
- );
25413
+ marketSymbols.forEach((symbol) => {
25414
+ const binanceSymbol = resolveBinanceSymbol(symbol).binanceSymbol;
25415
+ if (!binanceSymbol) {
25416
+ tickerSnapshots[symbol] = null;
25417
+ return;
25418
+ }
25419
+ const ticker = allTickers[binanceSymbol];
25420
+ tickerSnapshots[symbol] = ticker ? { prevClosePrice: ticker.prevClosePrice } : null;
25421
+ });
25410
25422
  return { tickerSnapshots };
25411
25423
  },
25412
25424
  enabled: query.isSuccess && marketSymbols.length > 0,
@@ -25465,6 +25477,33 @@ function useSymmTokenSelectionMarkets(params) {
25465
25477
  isPriceLoading: priceQuery.isLoading
25466
25478
  };
25467
25479
  }
25480
+ function useSymmTokenMarkPrice(symbol) {
25481
+ const normalizedSymbol = symbol?.trim().toUpperCase() || null;
25482
+ const resolution = resolveBinanceSymbol(normalizedSymbol ?? "");
25483
+ const liveMarkPrices = useBinanceMarkPriceStore((state) => state.markPrices);
25484
+ const subscribeSymbol = useBinanceMarkPriceStore((state) => state.subscribeSymbol);
25485
+ const unsubscribeSymbol = useBinanceMarkPriceStore((state) => state.unsubscribeSymbol);
25486
+ react.useEffect(() => {
25487
+ if (!normalizedSymbol || !resolution.binanceSymbol || !resolution.supported) {
25488
+ return;
25489
+ }
25490
+ subscribeSymbol(normalizedSymbol, resolution.binanceSymbol);
25491
+ return () => {
25492
+ unsubscribeSymbol(normalizedSymbol, resolution.binanceSymbol);
25493
+ };
25494
+ }, [normalizedSymbol, resolution.binanceSymbol, resolution.supported, subscribeSymbol, unsubscribeSymbol]);
25495
+ const markPrice = react.useMemo(() => {
25496
+ if (!normalizedSymbol) return null;
25497
+ return liveMarkPrices[normalizedSymbol] ?? null;
25498
+ }, [liveMarkPrices, normalizedSymbol]);
25499
+ return {
25500
+ symbol: normalizedSymbol,
25501
+ binanceSymbol: resolution.binanceSymbol,
25502
+ markPrice,
25503
+ isSupported: resolution.supported,
25504
+ reason: resolution.reason
25505
+ };
25506
+ }
25468
25507
  function useSymmFunding(params) {
25469
25508
  const { symmCoreClient, chainId: ctxChainId } = useSymmContext();
25470
25509
  const chainId = params?.chainId ?? ctxChainId;
@@ -25973,7 +26012,7 @@ function computeNetFundingSum({
25973
26012
  }
25974
26013
 
25975
26014
  // src/react/hooks/use-symm-token-selection-metadata.ts
25976
- async function fetchTickerSnapshot2(symbol) {
26015
+ async function fetchTickerSnapshot(symbol) {
25977
26016
  const resolution = resolveBinanceSymbol(symbol);
25978
26017
  if (!resolution.binanceSymbol) return null;
25979
26018
  const ticker = await fetch24hrTicker(resolution.binanceSymbol);
@@ -26029,7 +26068,7 @@ function useSymmTokenSelectionMetadata(selection, options = {}) {
26029
26068
  const results = await Promise.all(
26030
26069
  allSymbols.map(async ({ symbol }) => ({
26031
26070
  symbol,
26032
- ticker: await fetchTickerSnapshot2(symbol)
26071
+ ticker: await fetchTickerSnapshot(symbol)
26033
26072
  }))
26034
26073
  );
26035
26074
  const tickerSnapshots = {};
@@ -26561,6 +26600,7 @@ exports.useSymmSetTpslMutation = useSymmSetTpslMutation;
26561
26600
  exports.useSymmSetTriggerConfigMutation = useSymmSetTriggerConfigMutation;
26562
26601
  exports.useSymmSignTermsMutation = useSymmSignTermsMutation;
26563
26602
  exports.useSymmSignatureQuery = useSymmSignatureQuery;
26603
+ exports.useSymmTokenMarkPrice = useSymmTokenMarkPrice;
26564
26604
  exports.useSymmTokenSelectionMarkets = useSymmTokenSelectionMarkets;
26565
26605
  exports.useSymmTokenSelectionMetadata = useSymmTokenSelectionMetadata;
26566
26606
  exports.useSymmTpslOrders = useSymmTpslOrders;