@pear-protocol/hyperliquid-sdk 0.1.10 → 0.1.12

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,4 +1,4 @@
1
- import { AvailableToTrades, SpotBalances, CollateralToken } from '../types';
1
+ import { AvailableToTrades, SpotBalances, CollateralToken, UserAbstraction } from '../types';
2
2
  export interface MarginRequiredPerCollateral {
3
3
  collateral: CollateralToken;
4
4
  marginRequired: number;
@@ -16,6 +16,7 @@ interface AllUserBalancesResult {
16
16
  spotBalances: SpotBalances;
17
17
  availableToTrades: AvailableToTrades;
18
18
  isLoading: boolean;
19
+ abstractionMode: UserAbstraction | null;
19
20
  getMarginRequired: (assetsLeverage: Record<string, number>, size: number) => MarginRequiredResult;
20
21
  getMaxSize: (assetsLeverage: Record<string, number>) => number;
21
22
  }
package/dist/index.d.ts CHANGED
@@ -591,6 +591,7 @@ interface HLChannelDataMap {
591
591
  allDexsAssetCtxs: AllDexsAssetCtxsData;
592
592
  userFills: any;
593
593
  }
594
+ type UserAbstraction = 'dexAbstraction' | 'disabled' | 'unifiedAccount';
594
595
  interface WebData3UserState {
595
596
  agentAddress?: string;
596
597
  agentValidUntil?: number;
@@ -599,6 +600,7 @@ interface WebData3UserState {
599
600
  isVault: boolean;
600
601
  user: string;
601
602
  dexAbstractionEnabled?: boolean;
603
+ abstraction: UserAbstraction;
602
604
  }
603
605
  interface WebData3AssetCtx {
604
606
  funding: string;
@@ -1446,6 +1448,7 @@ interface AllUserBalancesResult {
1446
1448
  spotBalances: SpotBalances;
1447
1449
  availableToTrades: AvailableToTrades;
1448
1450
  isLoading: boolean;
1451
+ abstractionMode: UserAbstraction | null;
1449
1452
  getMarginRequired: (assetsLeverage: Record<string, number>, size: number) => MarginRequiredResult;
1450
1453
  getMaxSize: (assetsLeverage: Record<string, number>) => number;
1451
1454
  }
@@ -1743,4 +1746,4 @@ interface MarketDataState {
1743
1746
  declare const useMarketData: zustand.UseBoundStore<zustand.StoreApi<MarketDataState>>;
1744
1747
 
1745
1748
  export { ConflictDetector, MAX_ASSETS_PER_LEG, MINIMUM_ASSET_USD_VALUE, MaxAssetsPerLegError, MinimumPositionSizeError, PearHyperliquidProvider, ReadyState, adjustAdvancePosition, adjustOrder, adjustPosition, calculateMinimumPositionValue, calculateWeightedRatio, cancelOrder, cancelTwap, cancelTwapOrder, closeAllPositions, closePosition, computeBasketCandles, createCandleLookups, createPosition, executeSpotOrder, getCompleteTimestamps, getKalshiMarkets, getOrderDirection, getOrderLadderConfig, getOrderLeverage, getOrderReduceOnly, getOrderTpSlTriggerType, getOrderTrailingInfo, getOrderTriggerType, getOrderTriggerValue, getOrderTwapDuration, getOrderUsdValue, getPortfolio, isBtcDomOrder, mapCandleIntervalToTradingViewInterval, mapTradingViewIntervalToCandleInterval, markNotificationReadById, markNotificationsRead, toggleWatchlist, updateLeverage, updateRiskParameters, useAccountSummary, useAgentWallet, useAllUserBalances, useAuth, useBasketCandles, useHistoricalPriceData, useHistoricalPriceDataStore, useHyperliquidUserFills, useMarket, useMarketData, useMarketDataHook, useNotifications, useOpenOrders, useOrders, usePearHyperliquid, usePerformanceOverlays, usePortfolio, usePosition, useSpotOrder, useTokenSelectionMetadata, useTradeHistories, useTwap, useUserSelection, useWatchlist, validateMaxAssetsPerLeg, validateMinimumAssetSize, validatePositionSize };
1746
- export type { AccountSummaryResponseDto, ActiveAssetData, ActiveAssetGroupItem, ActiveAssetsAllResponse, ActiveAssetsResponse, AddressState, AdjustAdvanceAssetInput, AdjustAdvanceItemInput, AdjustAdvanceResponseDto, AdjustExecutionType, AdjustOrderRequestInput, AdjustOrderResponseDto, AdjustPositionRequestInput, AdjustPositionResponseDto, AgentWalletDto, AgentWalletState, AgentWalletStatus, AllDexsAssetCtxsData, AllDexsClearinghouseStateData, AllPerpMetasItem, AllPerpMetasResponse, ApiErrorResponse, ApiResponse, AssetCtx, AssetInformationDetail, AssetMarketData, AssetPosition, AuthenticateRequest, AuthenticateResponse, AvailableToTrades, BalanceSummaryDto, BaseTriggerOrderNotificationParams, BtcDomTriggerParams, CancelOrderResponseDto, CancelTwapResponseDto, CandleChartData, CandleData, CandleInterval, CandleSnapshotRequest, ChunkFillDto, ClearinghouseState, CloseAllPositionsResponseDto, CloseAllPositionsResultDto, CloseExecutionType, ClosePositionRequestInput, ClosePositionResponseDto, CollateralToken, CreateAgentWalletResponseDto, CreatePositionRequestInput, CreatePositionResponseDto, CrossAssetPriceTriggerParams, CrossMarginSummaryDto, CumFundingDto, EIP712AuthDetails, ExecutionType, ExternalFillDto, ExternalLiquidationDto, ExtraAgent, GetAgentWalletResponseDto, GetEIP712MessageResponse, GetKalshiMarketsParams, HLChannel, HLChannelDataMap, HLWebSocketResponse, HistoricalRange, KalshiMarket, KalshiMarketsResponse, KalshiMveLeg, KalshiPriceRange, LadderConfigInput, LadderOrderParameters, LeverageInfo, LogoutRequest, LogoutResponse, MarginRequiredPerCollateral, MarginRequiredResult, MarginSummaryDto, MarginTableDef, MarginTablesEntry, MarginTier, MarketOrderParameters, NotificationCategory, NotificationDto, OpenLimitOrderDto, OpenPositionDto, OrderAssetDto, OrderDirection, OrderParameters, OrderStatus, OrderType, PairAssetDto, PairAssetInput, PerformanceOverlay, PerpDex, PerpDexsResponse, PerpMetaAsset, PlatformAccountSummaryResponseDto, PortfolioBucketDto, PortfolioInterval, PortfolioIntervalsDto, PortfolioOverallDto, PortfolioResponseDto, PositionAdjustmentType, PositionAssetDetailDto, PredictionMarketOutcomeTriggerParams, PriceRatioTriggerParams, PriceTriggerParams, PrivyAuthDetails, RawAssetDto, RawPositionDto, RealtimeBar, RealtimeBarsCallback, RefreshTokenRequest, RefreshTokenResponse, SpotBalance, SpotBalances, SpotOrderFilledStatus, SpotOrderHyperliquidData, SpotOrderHyperliquidResult, SpotOrderRequestInput, SpotOrderResponseDto, SpotState, SyncFillsRequestDto, SyncFillsResponseDto, ToggleWatchlistResponseDto, TokenConflict, TokenEntry, TokenHistoricalPriceData, TokenMetadata, TokenSelection, TokenSelectorConfig, TpSlOrderParameters, TpSlThreshold, TpSlThresholdInput, TpSlThresholdType, TpSlTriggerType, TradeHistoryAssetDataDto, TradeHistoryDataDto, TriggerOrderNotificationAsset, TriggerOrderNotificationParams, TriggerOrderNotificationType, TriggerOrderParameters, TriggerType, TwapChunkStatus, TwapChunkStatusDto, TwapMonitoringDto, TwapOrderOverallStatus, TwapOrderParameters, TwapSliceFillResponseItem, UniverseAsset, UpdateLeverageRequestInput, UpdateLeverageResponseDto, UpdateRiskParametersRequestInput, UpdateRiskParametersResponseDto, UseAuthOptions, UseBasketCandlesReturn, UseHistoricalPriceDataReturn, UseHyperliquidUserFillsOptions, UseHyperliquidUserFillsState, UseNotificationsResult, UsePerformanceOverlaysReturn, UsePortfolioResult, UseSpotOrderResult, UseTokenSelectionMetadataReturn, UserProfile, UserSelectionState, WatchlistAssetDto, WatchlistItemDto, WebData3AssetCtx, WebData3PerpDexState, WebData3Response, WebData3UserState, WebSocketAckResponse, WebSocketChannel, WebSocketConnectionState, WebSocketDataMessage, WebSocketMessage, WebSocketSubscribeMessage, WsAllMidsData };
1749
+ export type { AccountSummaryResponseDto, ActiveAssetData, ActiveAssetGroupItem, ActiveAssetsAllResponse, ActiveAssetsResponse, AddressState, AdjustAdvanceAssetInput, AdjustAdvanceItemInput, AdjustAdvanceResponseDto, AdjustExecutionType, AdjustOrderRequestInput, AdjustOrderResponseDto, AdjustPositionRequestInput, AdjustPositionResponseDto, AgentWalletDto, AgentWalletState, AgentWalletStatus, AllDexsAssetCtxsData, AllDexsClearinghouseStateData, AllPerpMetasItem, AllPerpMetasResponse, ApiErrorResponse, ApiResponse, AssetCtx, AssetInformationDetail, AssetMarketData, AssetPosition, AuthenticateRequest, AuthenticateResponse, AvailableToTrades, BalanceSummaryDto, BaseTriggerOrderNotificationParams, BtcDomTriggerParams, CancelOrderResponseDto, CancelTwapResponseDto, CandleChartData, CandleData, CandleInterval, CandleSnapshotRequest, ChunkFillDto, ClearinghouseState, CloseAllPositionsResponseDto, CloseAllPositionsResultDto, CloseExecutionType, ClosePositionRequestInput, ClosePositionResponseDto, CollateralToken, CreateAgentWalletResponseDto, CreatePositionRequestInput, CreatePositionResponseDto, CrossAssetPriceTriggerParams, CrossMarginSummaryDto, CumFundingDto, EIP712AuthDetails, ExecutionType, ExternalFillDto, ExternalLiquidationDto, ExtraAgent, GetAgentWalletResponseDto, GetEIP712MessageResponse, GetKalshiMarketsParams, HLChannel, HLChannelDataMap, HLWebSocketResponse, HistoricalRange, KalshiMarket, KalshiMarketsResponse, KalshiMveLeg, KalshiPriceRange, LadderConfigInput, LadderOrderParameters, LeverageInfo, LogoutRequest, LogoutResponse, MarginRequiredPerCollateral, MarginRequiredResult, MarginSummaryDto, MarginTableDef, MarginTablesEntry, MarginTier, MarketOrderParameters, NotificationCategory, NotificationDto, OpenLimitOrderDto, OpenPositionDto, OrderAssetDto, OrderDirection, OrderParameters, OrderStatus, OrderType, PairAssetDto, PairAssetInput, PerformanceOverlay, PerpDex, PerpDexsResponse, PerpMetaAsset, PlatformAccountSummaryResponseDto, PortfolioBucketDto, PortfolioInterval, PortfolioIntervalsDto, PortfolioOverallDto, PortfolioResponseDto, PositionAdjustmentType, PositionAssetDetailDto, PredictionMarketOutcomeTriggerParams, PriceRatioTriggerParams, PriceTriggerParams, PrivyAuthDetails, RawAssetDto, RawPositionDto, RealtimeBar, RealtimeBarsCallback, RefreshTokenRequest, RefreshTokenResponse, SpotBalance, SpotBalances, SpotOrderFilledStatus, SpotOrderHyperliquidData, SpotOrderHyperliquidResult, SpotOrderRequestInput, SpotOrderResponseDto, SpotState, SyncFillsRequestDto, SyncFillsResponseDto, ToggleWatchlistResponseDto, TokenConflict, TokenEntry, TokenHistoricalPriceData, TokenMetadata, TokenSelection, TokenSelectorConfig, TpSlOrderParameters, TpSlThreshold, TpSlThresholdInput, TpSlThresholdType, TpSlTriggerType, TradeHistoryAssetDataDto, TradeHistoryDataDto, TriggerOrderNotificationAsset, TriggerOrderNotificationParams, TriggerOrderNotificationType, TriggerOrderParameters, TriggerType, TwapChunkStatus, TwapChunkStatusDto, TwapMonitoringDto, TwapOrderOverallStatus, TwapOrderParameters, TwapSliceFillResponseItem, UniverseAsset, UpdateLeverageRequestInput, UpdateLeverageResponseDto, UpdateRiskParametersRequestInput, UpdateRiskParametersResponseDto, UseAuthOptions, UseBasketCandlesReturn, UseHistoricalPriceDataReturn, UseHyperliquidUserFillsOptions, UseHyperliquidUserFillsState, UseNotificationsResult, UsePerformanceOverlaysReturn, UsePortfolioResult, UseSpotOrderResult, UseTokenSelectionMetadataReturn, UserAbstraction, UserProfile, UserSelectionState, WatchlistAssetDto, WatchlistItemDto, WebData3AssetCtx, WebData3PerpDexState, WebData3Response, WebData3UserState, WebSocketAckResponse, WebSocketChannel, WebSocketConnectionState, WebSocketDataMessage, WebSocketMessage, WebSocketSubscribeMessage, WsAllMidsData };
package/dist/index.js CHANGED
@@ -64,6 +64,8 @@ const useUserData = create((set) => ({
64
64
  notifications: null,
65
65
  userExtraAgents: null,
66
66
  spotState: null,
67
+ userAbstractionMode: null,
68
+ setUserAbstractionMode: (value) => set({ userAbstractionMode: value }),
67
69
  setAccessToken: (token) => set({ accessToken: token }),
68
70
  setRefreshToken: (token) => set({ refreshToken: token }),
69
71
  setIsAuthenticated: (value) => set({ isAuthenticated: value }),
@@ -887,7 +889,7 @@ const useUserSelection$1 = create((set, get) => ({
887
889
 
888
890
  const useHyperliquidNativeWebSocket = ({ address, enabled = true, onUserFills, }) => {
889
891
  const { setAllMids, setActiveAssetData, upsertActiveAssetData, setCandleData, deleteCandleSymbol, deleteActiveAssetData, addCandleData, setFinalAtOICaps, setAggregatedClearingHouseState, setRawClearinghouseStates, setAssetContextsByDex, } = useHyperliquidData();
890
- const { setSpotState } = useUserData();
892
+ const { setSpotState, setUserAbstractionMode } = useUserData();
891
893
  const { candleInterval } = useUserSelection$1();
892
894
  const userSummary = useUserData((state) => state.accountSummary);
893
895
  const longTokens = useUserSelection$1((s) => s.longTokens);
@@ -941,6 +943,7 @@ const useHyperliquidNativeWebSocket = ({ address, enabled = true, onUserFills, }
941
943
  // finalAssetContexts now sourced from allDexsAssetCtxs channel
942
944
  const finalAtOICaps = webData3.perpDexStates.flatMap((dex) => dex.perpsAtOpenInterestCap);
943
945
  setFinalAtOICaps(finalAtOICaps);
946
+ setUserAbstractionMode(webData3.userState.abstraction || null);
944
947
  break;
945
948
  case 'allDexsAssetCtxs':
946
949
  {
@@ -6910,7 +6913,9 @@ const calculatePositionAsset = (asset, currentPrice, totalInitialPositionSize, l
6910
6913
  var _a;
6911
6914
  const entryNotional = asset.entryPrice * asset.size;
6912
6915
  const currentNotional = currentPrice * asset.size;
6913
- const marginUsed = currentNotional / (leverage || 1);
6916
+ const effectiveLeverage = leverage || 1;
6917
+ const marginUsed = currentNotional / effectiveLeverage;
6918
+ const entryMarginUsed = entryNotional / effectiveLeverage;
6914
6919
  const unrealizedPnl = isLong
6915
6920
  ? currentNotional - entryNotional
6916
6921
  : entryNotional - currentNotional;
@@ -6920,6 +6925,7 @@ const calculatePositionAsset = (asset, currentPrice, totalInitialPositionSize, l
6920
6925
  actualSize: asset.size,
6921
6926
  leverage: leverage,
6922
6927
  marginUsed: marginUsed,
6928
+ entryMarginUsed: entryMarginUsed,
6923
6929
  positionValue: currentNotional,
6924
6930
  unrealizedPnl: unrealizedPnl,
6925
6931
  entryPositionValue: entryNotional,
@@ -6945,6 +6951,7 @@ const buildPositionValue = (rawPositions, clearinghouseState, getAssetByName) =>
6945
6951
  takeProfit: position.takeProfit,
6946
6952
  stopLoss: position.stopLoss,
6947
6953
  };
6954
+ let entryMarginUsed = 0;
6948
6955
  const totalInitialPositionSize = position.longAssets.reduce((acc, asset) => acc + asset.entryPrice * asset.size, 0) +
6949
6956
  position.shortAssets.reduce((acc, asset) => acc + asset.entryPrice * asset.size, 0);
6950
6957
  mappedPosition.longAssets = position.longAssets.map((longAsset) => {
@@ -6959,6 +6966,7 @@ const buildPositionValue = (rawPositions, clearinghouseState, getAssetByName) =>
6959
6966
  mappedPosition.unrealizedPnl += mappedPositionAssets.unrealizedPnl;
6960
6967
  mappedPosition.positionValue += mappedPositionAssets.positionValue;
6961
6968
  mappedPosition.marginUsed += mappedPositionAssets.marginUsed;
6969
+ entryMarginUsed += mappedPositionAssets.entryMarginUsed;
6962
6970
  mappedPosition.entryRatio *= Math.pow(longAsset.entryPrice, mappedPositionAssets.initialWeight);
6963
6971
  mappedPosition.markRatio *= Math.pow(currentPrice, mappedPositionAssets.initialWeight);
6964
6972
  return mappedPositionAssets;
@@ -6975,6 +6983,7 @@ const buildPositionValue = (rawPositions, clearinghouseState, getAssetByName) =>
6975
6983
  mappedPosition.unrealizedPnl += mappedPositionAssets.unrealizedPnl;
6976
6984
  mappedPosition.positionValue += mappedPositionAssets.positionValue;
6977
6985
  mappedPosition.marginUsed += mappedPositionAssets.marginUsed;
6986
+ entryMarginUsed += mappedPositionAssets.entryMarginUsed;
6978
6987
  mappedPosition.entryRatio *= Math.pow(shortAsset.entryPrice, -mappedPositionAssets.initialWeight);
6979
6988
  mappedPosition.markRatio *= Math.pow(currentPrice, -mappedPositionAssets.initialWeight);
6980
6989
  return mappedPositionAssets;
@@ -7012,7 +7021,7 @@ const buildPositionValue = (rawPositions, clearinghouseState, getAssetByName) =>
7012
7021
  mappedPosition.markPriceRatio = shortMark;
7013
7022
  }
7014
7023
  mappedPosition.unrealizedPnlPercentage =
7015
- mappedPosition.unrealizedPnl / mappedPosition.marginUsed;
7024
+ entryMarginUsed > 0 ? mappedPosition.unrealizedPnl / entryMarginUsed : 0;
7016
7025
  return mappedPosition;
7017
7026
  });
7018
7027
  };
@@ -7855,6 +7864,7 @@ const useAllUserBalances = () => {
7855
7864
  availableToTrades,
7856
7865
  ]);
7857
7866
  return {
7867
+ abstractionMode: useUserData((state) => state.userAbstractionMode),
7858
7868
  spotBalances,
7859
7869
  availableToTrades,
7860
7870
  isLoading,
@@ -1,4 +1,4 @@
1
- import { PlatformAccountSummaryResponseDto, OpenLimitOrderDto, RawPositionDto, TradeHistoryDataDto, TwapMonitoringDto, NotificationDto, ExtraAgent, SpotState } from "../types";
1
+ import { PlatformAccountSummaryResponseDto, OpenLimitOrderDto, RawPositionDto, TradeHistoryDataDto, TwapMonitoringDto, NotificationDto, ExtraAgent, SpotState, UserAbstraction } from "../types";
2
2
  interface UserDataState {
3
3
  accessToken: string | null;
4
4
  refreshToken: string | null;
@@ -12,6 +12,7 @@ interface UserDataState {
12
12
  notifications: NotificationDto[] | null;
13
13
  userExtraAgents: ExtraAgent[] | null;
14
14
  spotState: SpotState | null;
15
+ userAbstractionMode: UserAbstraction | null;
15
16
  setAccessToken: (token: string | null) => void;
16
17
  setRefreshToken: (token: string | null) => void;
17
18
  setIsAuthenticated: (value: boolean) => void;
@@ -24,6 +25,7 @@ interface UserDataState {
24
25
  setTwapDetails: (value: TwapMonitoringDto[] | null) => void;
25
26
  setNotifications: (value: NotificationDto[] | null) => void;
26
27
  setSpotState: (value: SpotState | null) => void;
28
+ setUserAbstractionMode: (value: UserAbstraction | null) => void;
27
29
  clean: () => void;
28
30
  }
29
31
  export declare const useUserData: import("zustand").UseBoundStore<import("zustand").StoreApi<UserDataState>>;
package/dist/types.d.ts CHANGED
@@ -563,6 +563,7 @@ export interface HLChannelDataMap {
563
563
  allDexsAssetCtxs: AllDexsAssetCtxsData;
564
564
  userFills: any;
565
565
  }
566
+ export type UserAbstraction = 'dexAbstraction' | 'disabled' | 'unifiedAccount';
566
567
  export interface WebData3UserState {
567
568
  agentAddress?: string;
568
569
  agentValidUntil?: number;
@@ -571,6 +572,7 @@ export interface WebData3UserState {
571
572
  isVault: boolean;
572
573
  user: string;
573
574
  dexAbstractionEnabled?: boolean;
575
+ abstraction: UserAbstraction;
574
576
  }
575
577
  export interface WebData3AssetCtx {
576
578
  funding: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pear-protocol/hyperliquid-sdk",
3
- "version": "0.1.10",
3
+ "version": "0.1.12",
4
4
  "description": "React SDK for Pear Protocol Hyperliquid API integration",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",