@pear-protocol/hyperliquid-sdk 0.1.0 → 0.1.3

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,5 +1,5 @@
1
- import { ActiveAssetData, CandleChartData, CandleData, ClearinghouseState, TokenMetadata, UniverseAsset, WebData3AssetCtx, WsAllMidsData } from '../types';
2
- type TokenMetadataBySymbol = Record<string, TokenMetadata | null>;
1
+ import { ActiveAssetData, CandleChartData, CandleData, ClearinghouseState, UniverseAsset, WebData3AssetCtx, WsAllMidsData, PerpDexsResponse } from '../types';
2
+ import { TokenMetadataBySymbol } from '../utils/token-metadata-extractor';
3
3
  interface HyperliquidDataState {
4
4
  allMids: WsAllMidsData | null;
5
5
  activeAssetData: Record<string, ActiveAssetData> | null;
@@ -10,6 +10,9 @@ interface HyperliquidDataState {
10
10
  rawClearinghouseStates: [string, ClearinghouseState][] | null;
11
11
  perpMetaAssets: UniverseAsset[] | null;
12
12
  tokenMetadata: TokenMetadataBySymbol;
13
+ perpDexs: PerpDexsResponse | null;
14
+ perpMetasByDex: Map<string, UniverseAsset[]> | null;
15
+ assetContextsByDex: Map<string, WebData3AssetCtx[]> | null;
13
16
  setAllMids: (value: WsAllMidsData | null) => void;
14
17
  setActiveAssetData: (value: Record<string, ActiveAssetData> | null | ((prev: Record<string, ActiveAssetData> | null) => Record<string, ActiveAssetData> | null)) => void;
15
18
  deleteActiveAssetData: (key: string) => void;
@@ -22,6 +25,9 @@ interface HyperliquidDataState {
22
25
  setAggregatedClearingHouseState: (value: ClearinghouseState | null) => void;
23
26
  setRawClearinghouseStates: (value: [string, ClearinghouseState][] | null) => void;
24
27
  setPerpMetaAssets: (value: UniverseAsset[] | null) => void;
28
+ setPerpDexs: (value: PerpDexsResponse | null) => void;
29
+ setPerpMetasByDex: (value: Map<string, UniverseAsset[]> | null) => void;
30
+ setAssetContextsByDex: (value: Map<string, WebData3AssetCtx[]> | null) => void;
25
31
  }
26
32
  export declare const useHyperliquidData: import("zustand").UseBoundStore<import("zustand").StoreApi<HyperliquidDataState>>;
27
33
  export {};
@@ -1,4 +1,4 @@
1
- import type { TokenSelection, TokenMetadata, ActiveAssetsResponse, UniverseAsset } from "../types";
1
+ import type { TokenSelection, TokenMetadata, ActiveAssetsResponse } from "../types";
2
2
  export interface TokenSelectionMetadataState {
3
3
  isPriceDataReady: boolean;
4
4
  isLoading: boolean;
@@ -12,10 +12,9 @@ export interface TokenSelectionMetadataState {
12
12
  volume: string;
13
13
  sumNetFunding: number;
14
14
  maxLeverage: number;
15
- minMargin: number;
15
+ minSize: Record<string, number>;
16
16
  leverageMatched: boolean;
17
17
  recompute: (args: {
18
- perpMetaAssets: UniverseAsset[] | null;
19
18
  tokenMetadata: Record<string, TokenMetadata | null>;
20
19
  marketData: ActiveAssetsResponse | null;
21
20
  longTokens: TokenSelection[];
package/dist/types.d.ts CHANGED
@@ -628,8 +628,10 @@ export interface AssetCtx {
628
628
  * Collateral token type
629
629
  * 0 = USDC
630
630
  * 360 = USDH
631
+ * 235 = USDE
632
+ * 268 = USDT0
631
633
  */
632
- export type CollateralToken = 'USDC' | 'USDH';
634
+ export type CollateralToken = 'USDC' | 'USDH' | 'USDE' | 'USDT0';
633
635
  /**
634
636
  * Universe asset metadata
635
637
  */
@@ -804,6 +806,7 @@ export interface AssetMarketData {
804
806
  export interface PairAssetDto {
805
807
  asset: string;
806
808
  weight: number;
809
+ metadata?: TokenMetadata | null;
807
810
  }
808
811
  export interface ActiveAssetGroupItem {
809
812
  longAssets: PairAssetDto[];
@@ -817,7 +820,6 @@ export interface ActiveAssetGroupItem {
817
820
  weightedRatio?: string;
818
821
  weightedPrevRatio?: string;
819
822
  weightedChange24h?: string;
820
- collateralType: 'USDC' | 'USDH' | 'MIXED';
821
823
  }
822
824
  export interface ActiveAssetsResponse {
823
825
  active: ActiveAssetGroupItem[];
@@ -884,3 +886,64 @@ export interface TokenEntry {
884
886
  symbol: string;
885
887
  data: AssetMarketData;
886
888
  }
889
+ export interface PerpDex {
890
+ name: string;
891
+ fullName: string;
892
+ deployer: string;
893
+ oracleUpdater: string | null;
894
+ feeRecipient: string | null;
895
+ deployerFeeScale: string;
896
+ assetToStreamingOiCap: [string, string][];
897
+ assetToFundingMultiplier: [string, string][];
898
+ subDeployers: [string, string[]][];
899
+ lastDeployerFeeScaleChangeTime: string;
900
+ }
901
+ export type PerpDexsResponse = (PerpDex | null)[];
902
+ export interface SpotBalances {
903
+ [coin: string]: number;
904
+ }
905
+ export interface AvailableToTrades {
906
+ [collateralCoin: string]: number;
907
+ }
908
+ export type ExecutionType = "MARKET" | "TRIGGER" | "TWAP" | "LADDER" | "TP" | "SL" | "SPOT_MARKET" | "SPOT_LIMIT" | "SPOT_TWAP";
909
+ export type TpSlThresholdType = "PERCENTAGE" | "DOLLAR" | "POSITION_VALUE" | "PRICE" | "PRICE_RATIO" | "WEIGHTED_RATIO";
910
+ export interface PairAssetInput {
911
+ asset: string;
912
+ weight?: number;
913
+ }
914
+ export interface TpSlThresholdInput {
915
+ type: TpSlThresholdType;
916
+ value?: number;
917
+ isTrailing?: boolean;
918
+ trailingDeltaValue?: number;
919
+ trailingActivationValue?: number;
920
+ }
921
+ export interface LadderConfigInput {
922
+ ratioStart: number;
923
+ ratioEnd: number;
924
+ numberOfLevels: number;
925
+ }
926
+ export interface CreatePositionRequestInput {
927
+ slippage: number;
928
+ executionType: ExecutionType;
929
+ leverage: number;
930
+ usdValue: number;
931
+ longAssets?: PairAssetInput[];
932
+ shortAssets?: PairAssetInput[];
933
+ triggerValue?: string | number;
934
+ triggerType?: TriggerType;
935
+ direction?: "MORE_THAN" | "LESS_THAN";
936
+ assetName?: string;
937
+ marketCode?: string;
938
+ twapDuration?: number;
939
+ twapIntervalSeconds?: number;
940
+ randomizeExecution?: boolean;
941
+ referralCode?: string;
942
+ ladderConfig?: LadderConfigInput;
943
+ takeProfit?: TpSlThresholdInput | null;
944
+ stopLoss?: TpSlThresholdInput | null;
945
+ }
946
+ export interface CreatePositionResponseDto {
947
+ orderId: string;
948
+ fills?: ExternalFillDto[];
949
+ }
@@ -1,4 +1,4 @@
1
- import type { PairAssetInput } from "../clients/positions";
1
+ import { PairAssetInput } from "../types";
2
2
  /**
3
3
  * Minimum USD value required per asset when creating a position
4
4
  */
@@ -3,26 +3,6 @@ import type { WsAllMidsData, TokenMetadata, ActiveAssetData, UniverseAsset, WebD
3
3
  * Extracts token metadata from aggregated WebData3 contexts and AllMids data
4
4
  */
5
5
  export declare class TokenMetadataExtractor {
6
- /**
7
- * Extracts comprehensive token metadata
8
- * @param symbol - Token symbol (e.g., "BTC", "TSLA")
9
- * @param perpMetaAssets - Aggregated universe assets (flattened across dexes)
10
- * @param finalAssetContexts - Aggregated asset contexts (flattened across dexes)
11
- * @param allMids - AllMids data containing current prices
12
- * @param activeAssetData - Optional active asset data containing leverage information
13
- * @returns TokenMetadata or null if token not found
14
- */
15
- static extractTokenMetadata(symbol: string, perpMetaAssets: UniverseAsset[] | null, finalAssetContexts: WebData3AssetCtx[] | null, allMids: WsAllMidsData | null, activeAssetData?: Record<string, ActiveAssetData> | null, finalAtOICaps?: string[] | null): TokenMetadata | null;
16
- /**
17
- * Extracts metadata for multiple tokens
18
- * @param tokens - Array of token strings (e.g., "BTC", "TSLA")
19
- * @param perpMetaAssets - Aggregated universe assets
20
- * @param finalAssetContexts - Aggregated asset contexts
21
- * @param allMids - AllMids data
22
- * @param activeAssetData - Optional active asset data containing leverage information
23
- * @returns Record of token string to TokenMetadata (keys match input tokens exactly)
24
- */
25
- static extractMultipleTokensMetadata(tokens: string[], perpMetaAssets: UniverseAsset[] | null, finalAssetContexts: WebData3AssetCtx[] | null, allMids: WsAllMidsData | null, activeAssetData?: Record<string, ActiveAssetData> | null, finalAtOICaps?: string[] | null): Record<string, TokenMetadata | null>;
26
6
  /**
27
7
  * Checks if token data is available in aggregated universe assets
28
8
  * @param symbol - Token symbol
@@ -30,4 +10,39 @@ export declare class TokenMetadataExtractor {
30
10
  * @returns boolean indicating if token exists in universe
31
11
  */
32
12
  static isTokenAvailable(symbol: string, perpMetaAssets: UniverseAsset[] | null): boolean;
13
+ /**
14
+ * Extracts token metadata using DEX-aware lookup (correctly matches perpMetas to assetContexts)
15
+ * @param symbol - Token symbol (e.g., "BTC", "TSLA")
16
+ * @param perpMetasByDex - Map of DEX name to UniverseAsset[]
17
+ * @param assetContextsByDex - Map of DEX name to WebData3AssetCtx[]
18
+ * @param allMids - AllMids data containing current prices
19
+ * @param activeAssetData - Optional active asset data containing leverage information
20
+ * @param finalAtOICaps - Optional array of symbols at OI caps
21
+ * @returns TokenMetadata or null if token not found
22
+ */
23
+ static extractTokenMetadataByDex(symbol: string, perpMetasByDex: Map<string, UniverseAsset[]>, assetContextsByDex: Map<string, WebData3AssetCtx[]>, allMids: WsAllMidsData, activeAssetData?: Record<string, ActiveAssetData> | null, finalAtOICaps?: string[] | null): TokenMetadata | null;
33
24
  }
25
+ export type TokenMetadataBySymbol = Record<string, TokenMetadata | null>;
26
+ export type TokenMetadataInputs = {
27
+ perpMetaAssets: UniverseAsset[] | null;
28
+ finalAssetContexts: WebData3AssetCtx[] | null;
29
+ allMids: WsAllMidsData | null;
30
+ activeAssetData: Record<string, ActiveAssetData> | null;
31
+ finalAtOICaps: string[] | null;
32
+ perpMetasByDex?: Map<string, UniverseAsset[]> | null;
33
+ assetContextsByDex?: Map<string, WebData3AssetCtx[]> | null;
34
+ };
35
+ export type RefreshTokenMetadataOptions = {
36
+ symbols?: string[];
37
+ oiCapsOnly?: boolean;
38
+ };
39
+ export declare const refreshTokenMetadata: (state: {
40
+ perpMetaAssets: UniverseAsset[] | null;
41
+ finalAssetContexts: WebData3AssetCtx[] | null;
42
+ allMids: WsAllMidsData | null;
43
+ activeAssetData: Record<string, ActiveAssetData> | null;
44
+ finalAtOICaps: string[] | null;
45
+ tokenMetadata: TokenMetadataBySymbol;
46
+ perpMetasByDex?: Map<string, UniverseAsset[]> | null;
47
+ assetContextsByDex?: Map<string, WebData3AssetCtx[]> | null;
48
+ }, overrides: Partial<TokenMetadataInputs>, options?: RefreshTokenMetadataOptions) => TokenMetadataBySymbol;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pear-protocol/hyperliquid-sdk",
3
- "version": "0.1.0",
3
+ "version": "0.1.3",
4
4
  "description": "React SDK for Pear Protocol Hyperliquid API integration",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",