@lifi/perps-types 0.1.1-alpha.1 → 0.1.1-alpha.11

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.
Files changed (102) hide show
  1. package/package.json +28 -5
  2. package/providers/hyperliquid/package.json +5 -0
  3. package/src/_cjs/enums.js +9 -1
  4. package/src/_cjs/enums.js.map +1 -1
  5. package/src/_cjs/index.js +1 -0
  6. package/src/_cjs/index.js.map +1 -1
  7. package/src/_cjs/providers/hyperliquid/assetId.js +19 -0
  8. package/src/_cjs/providers/hyperliquid/assetId.js.map +1 -0
  9. package/src/_cjs/providers/hyperliquid/index.js +20 -0
  10. package/src/_cjs/providers/hyperliquid/index.js.map +1 -0
  11. package/src/_cjs/providers/hyperliquid/mappers/activity.js +56 -0
  12. package/src/_cjs/providers/hyperliquid/mappers/activity.js.map +1 -0
  13. package/src/_cjs/providers/hyperliquid/mappers/history.js +22 -0
  14. package/src/_cjs/providers/hyperliquid/mappers/history.js.map +1 -0
  15. package/src/_cjs/providers/hyperliquid/mappers/index.js +18 -0
  16. package/src/_cjs/providers/hyperliquid/mappers/index.js.map +1 -0
  17. package/src/_cjs/providers/hyperliquid/mappers/market.js +28 -0
  18. package/src/_cjs/providers/hyperliquid/mappers/market.js.map +1 -0
  19. package/src/_cjs/providers/hyperliquid/mappers/order.js +76 -0
  20. package/src/_cjs/providers/hyperliquid/mappers/order.js.map +1 -0
  21. package/src/_cjs/providers/hyperliquid/mappers/position.js +29 -0
  22. package/src/_cjs/providers/hyperliquid/mappers/position.js.map +1 -0
  23. package/src/_cjs/providers/hyperliquid/mappers/shared.js +12 -0
  24. package/src/_cjs/providers/hyperliquid/mappers/shared.js.map +1 -0
  25. package/src/_cjs/providers/hyperliquid/types.js +3 -0
  26. package/src/_cjs/providers/hyperliquid/types.js.map +1 -0
  27. package/src/_cjs/subscriptions.js +3 -0
  28. package/src/_cjs/subscriptions.js.map +1 -0
  29. package/src/_esm/enums.js +8 -0
  30. package/src/_esm/enums.js.map +1 -1
  31. package/src/_esm/index.js +1 -0
  32. package/src/_esm/index.js.map +1 -1
  33. package/src/_esm/providers/hyperliquid/assetId.js +23 -0
  34. package/src/_esm/providers/hyperliquid/assetId.js.map +1 -0
  35. package/src/_esm/providers/hyperliquid/index.js +4 -0
  36. package/src/_esm/providers/hyperliquid/index.js.map +1 -0
  37. package/src/_esm/providers/hyperliquid/mappers/activity.js +59 -0
  38. package/src/_esm/providers/hyperliquid/mappers/activity.js.map +1 -0
  39. package/src/_esm/providers/hyperliquid/mappers/history.js +18 -0
  40. package/src/_esm/providers/hyperliquid/mappers/history.js.map +1 -0
  41. package/src/_esm/providers/hyperliquid/mappers/index.js +7 -0
  42. package/src/_esm/providers/hyperliquid/mappers/index.js.map +1 -0
  43. package/src/_esm/providers/hyperliquid/mappers/market.js +24 -0
  44. package/src/_esm/providers/hyperliquid/mappers/market.js.map +1 -0
  45. package/src/_esm/providers/hyperliquid/mappers/order.js +71 -0
  46. package/src/_esm/providers/hyperliquid/mappers/order.js.map +1 -0
  47. package/src/_esm/providers/hyperliquid/mappers/position.js +25 -0
  48. package/src/_esm/providers/hyperliquid/mappers/position.js.map +1 -0
  49. package/src/_esm/providers/hyperliquid/mappers/shared.js +13 -0
  50. package/src/_esm/providers/hyperliquid/mappers/shared.js.map +1 -0
  51. package/src/_esm/providers/hyperliquid/types.js +5 -0
  52. package/src/_esm/providers/hyperliquid/types.js.map +1 -0
  53. package/src/_esm/subscriptions.js +2 -0
  54. package/src/_esm/subscriptions.js.map +1 -0
  55. package/src/_types/account.d.ts +39 -1
  56. package/src/_types/account.d.ts.map +1 -1
  57. package/src/_types/enums.d.ts +8 -1
  58. package/src/_types/enums.d.ts.map +1 -1
  59. package/src/_types/index.d.ts +1 -0
  60. package/src/_types/index.d.ts.map +1 -1
  61. package/src/_types/market.d.ts +1 -0
  62. package/src/_types/market.d.ts.map +1 -1
  63. package/src/_types/providers/hyperliquid/assetId.d.ts +12 -0
  64. package/src/_types/providers/hyperliquid/assetId.d.ts.map +1 -0
  65. package/src/_types/providers/hyperliquid/index.d.ts +4 -0
  66. package/src/_types/providers/hyperliquid/index.d.ts.map +1 -0
  67. package/src/_types/providers/hyperliquid/mappers/activity.d.ts +13 -0
  68. package/src/_types/providers/hyperliquid/mappers/activity.d.ts.map +1 -0
  69. package/src/_types/providers/hyperliquid/mappers/history.d.ts +4 -0
  70. package/src/_types/providers/hyperliquid/mappers/history.d.ts.map +1 -0
  71. package/src/_types/providers/hyperliquid/mappers/index.d.ts +7 -0
  72. package/src/_types/providers/hyperliquid/mappers/index.d.ts.map +1 -0
  73. package/src/_types/providers/hyperliquid/mappers/market.d.ts +4 -0
  74. package/src/_types/providers/hyperliquid/mappers/market.d.ts.map +1 -0
  75. package/src/_types/providers/hyperliquid/mappers/order.d.ts +6 -0
  76. package/src/_types/providers/hyperliquid/mappers/order.d.ts.map +1 -0
  77. package/src/_types/providers/hyperliquid/mappers/position.d.ts +4 -0
  78. package/src/_types/providers/hyperliquid/mappers/position.d.ts.map +1 -0
  79. package/src/_types/providers/hyperliquid/mappers/shared.d.ts +7 -0
  80. package/src/_types/providers/hyperliquid/mappers/shared.d.ts.map +1 -0
  81. package/src/_types/providers/hyperliquid/types.d.ts +201 -0
  82. package/src/_types/providers/hyperliquid/types.d.ts.map +1 -0
  83. package/src/_types/subscriptions.d.ts +71 -0
  84. package/src/_types/subscriptions.d.ts.map +1 -0
  85. package/src/_types/trading.d.ts +2 -4
  86. package/src/_types/trading.d.ts.map +1 -1
  87. package/src/account.ts +55 -0
  88. package/src/enums.ts +8 -0
  89. package/src/index.ts +1 -0
  90. package/src/market.ts +1 -0
  91. package/src/providers/hyperliquid/assetId.ts +26 -0
  92. package/src/providers/hyperliquid/index.ts +3 -0
  93. package/src/providers/hyperliquid/mappers/activity.ts +84 -0
  94. package/src/providers/hyperliquid/mappers/history.ts +25 -0
  95. package/src/providers/hyperliquid/mappers/index.ts +6 -0
  96. package/src/providers/hyperliquid/mappers/market.ts +35 -0
  97. package/src/providers/hyperliquid/mappers/order.ts +88 -0
  98. package/src/providers/hyperliquid/mappers/position.ts +35 -0
  99. package/src/providers/hyperliquid/mappers/shared.ts +15 -0
  100. package/src/providers/hyperliquid/types.ts +255 -0
  101. package/src/subscriptions.ts +73 -0
  102. package/src/trading.ts +2 -4
@@ -0,0 +1,201 @@
1
+ export type HlUniverseItem = {
2
+ name: string;
3
+ szDecimals: number;
4
+ maxLeverage: number;
5
+ onlyIsolated?: boolean;
6
+ isDelisted?: boolean;
7
+ };
8
+ export type HlMeta = {
9
+ universe: HlUniverseItem[];
10
+ };
11
+ export type HlAssetCtx = {
12
+ funding: string;
13
+ openInterest: string;
14
+ dayNtlVlm: string;
15
+ markPx: string;
16
+ };
17
+ export type HlMetaAndAssetCtxs = [HlMeta, HlAssetCtx[]];
18
+ export type HlUniverse = HlMeta['universe'];
19
+ export type HlAllMids = Record<string, string>;
20
+ export type HlCandle = {
21
+ t: number;
22
+ o: string;
23
+ h: string;
24
+ l: string;
25
+ c: string;
26
+ v: string;
27
+ };
28
+ export type HlCandleSnapshot = HlCandle[];
29
+ export type HlLevel = {
30
+ px: string;
31
+ sz: string;
32
+ n: number;
33
+ };
34
+ export type HlL2Book = {
35
+ levels: [HlLevel[], HlLevel[]];
36
+ time: number;
37
+ };
38
+ export type HlPosition = {
39
+ coin: string;
40
+ szi: string;
41
+ entryPx: string;
42
+ positionValue: string;
43
+ liquidationPx: string;
44
+ unrealizedPnl: string;
45
+ marginUsed: string;
46
+ leverage: {
47
+ type: string;
48
+ value: number;
49
+ };
50
+ };
51
+ export type HlAssetPosition = {
52
+ position: HlPosition;
53
+ };
54
+ export type HlClearinghouseState = {
55
+ assetPositions: HlAssetPosition[];
56
+ marginSummary: {
57
+ accountValue: string;
58
+ totalMarginUsed: string;
59
+ };
60
+ crossMarginSummary: {
61
+ accountValue: string;
62
+ totalMarginUsed: string;
63
+ };
64
+ };
65
+ export type HlSpotBalance = {
66
+ coin: string;
67
+ token: number;
68
+ total: string;
69
+ hold: string;
70
+ entryNtl: string;
71
+ };
72
+ export type HlSpotClearinghouseState = {
73
+ balances: HlSpotBalance[];
74
+ };
75
+ export type HlUserFees = {
76
+ userAddRate: string;
77
+ userCrossRate: string;
78
+ activeReferralDiscount: string;
79
+ };
80
+ export type HlFrontendOpenOrder = {
81
+ oid: number;
82
+ coin: string;
83
+ side: string;
84
+ sz: string;
85
+ limitPx: string;
86
+ orderType: string;
87
+ origSz: string;
88
+ reduceOnly: boolean;
89
+ timestamp: number;
90
+ };
91
+ export type HlFrontendOpenOrders = HlFrontendOpenOrder[];
92
+ export type HlExtraAgents = Record<string, unknown>[];
93
+ export type HlUserFill = {
94
+ tid: number;
95
+ coin: string;
96
+ side: string;
97
+ sz: string;
98
+ px: string;
99
+ dir: string;
100
+ fee: string;
101
+ closedPnl: string;
102
+ time: number;
103
+ };
104
+ export type HlUserFills = HlUserFill[];
105
+ export type HlUserFillsByTime = HlUserFill[];
106
+ export type HlOrderDetail = {
107
+ order: {
108
+ oid: number;
109
+ coin: string;
110
+ side: string;
111
+ sz: string;
112
+ limitPx: string;
113
+ orderType: string;
114
+ origSz: string;
115
+ reduceOnly: boolean;
116
+ timestamp: number;
117
+ tif: string | null;
118
+ cloid: string | null;
119
+ triggerCondition: string;
120
+ triggerPx: string | null;
121
+ };
122
+ status: string;
123
+ statusTimestamp: number;
124
+ };
125
+ export type HlOrderStatusFound = {
126
+ status: 'order';
127
+ order: HlOrderDetail;
128
+ };
129
+ export type HlOrderStatusResponse = HlOrderStatusFound | {
130
+ status: 'unknownOid';
131
+ };
132
+ export type HlLedgerDelta = {
133
+ type: string;
134
+ usdc?: string;
135
+ [key: string]: unknown;
136
+ };
137
+ export type HlLedgerUpdate = {
138
+ time: number;
139
+ hash: string;
140
+ delta: HlLedgerDelta;
141
+ };
142
+ export type HlUserNonFundingLedgerUpdates = HlLedgerUpdate[];
143
+ export type HlFundingDelta = {
144
+ type: 'funding';
145
+ coin: string;
146
+ usdc: string;
147
+ szi: string;
148
+ fundingRate: string;
149
+ };
150
+ export type HlFundingUpdate = {
151
+ time: number;
152
+ hash: string;
153
+ delta: HlFundingDelta;
154
+ };
155
+ export type HlUserFunding = HlFundingUpdate[];
156
+ export type HlPerpDexs = (null | {
157
+ name: string;
158
+ })[];
159
+ export type HlExchangeRequest = {
160
+ action: Record<string, unknown>;
161
+ signature: {
162
+ r: string;
163
+ s: string;
164
+ v: number;
165
+ };
166
+ nonce: number;
167
+ vaultAddress?: string | null;
168
+ };
169
+ export type HlExchangeResponse = {
170
+ status: string;
171
+ response?: string | {
172
+ type: string;
173
+ data?: {
174
+ statuses?: (string | {
175
+ filled: {
176
+ totalSz: string;
177
+ avgPx: string;
178
+ oid: number;
179
+ };
180
+ } | {
181
+ resting: {
182
+ oid: number;
183
+ };
184
+ } | {
185
+ waitingForFill: {
186
+ oid: number;
187
+ };
188
+ } | {
189
+ waitingForTrigger: {
190
+ oid: number;
191
+ };
192
+ } | {
193
+ success: true;
194
+ } | {
195
+ error: string;
196
+ })[];
197
+ status?: unknown;
198
+ };
199
+ };
200
+ };
201
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../providers/hyperliquid/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ import type { Address } from './typedData.js';
2
+ import type { Candle, OhlcvInterval, OrderbookResponse, PricesResponse } from './market.js';
3
+ import type { HistoryItem, Position } from './account.js';
4
+ import type { Order } from './trading.js';
5
+ export type PricesSubscription = {
6
+ channel: 'prices';
7
+ dex: string;
8
+ };
9
+ export type OrderbookSubscription = {
10
+ channel: 'orderbook';
11
+ dex: string;
12
+ symbol: string;
13
+ depth?: number;
14
+ };
15
+ export type TradesSubscription = {
16
+ channel: 'trades';
17
+ dex: string;
18
+ symbol: string;
19
+ };
20
+ export type CandleSubscription = {
21
+ channel: 'candle';
22
+ dex: string;
23
+ symbol: string;
24
+ interval: OhlcvInterval;
25
+ };
26
+ export type OrderUpdatesSubscription = {
27
+ channel: 'orderUpdates';
28
+ dex: string;
29
+ address: Address;
30
+ };
31
+ export type FillsSubscription = {
32
+ channel: 'fills';
33
+ dex: string;
34
+ address: Address;
35
+ };
36
+ export type PositionsSubscription = {
37
+ channel: 'positions';
38
+ dex: string;
39
+ address: Address;
40
+ };
41
+ export type Subscription = PricesSubscription | OrderbookSubscription | TradesSubscription | CandleSubscription | OrderUpdatesSubscription | FillsSubscription | PositionsSubscription;
42
+ export type PricesEvent = {
43
+ channel: 'prices';
44
+ data: PricesResponse;
45
+ };
46
+ export type OrderbookEvent = {
47
+ channel: 'orderbook';
48
+ data: OrderbookResponse;
49
+ };
50
+ export type TradesEvent = {
51
+ channel: 'trades';
52
+ data: HistoryItem[];
53
+ };
54
+ export type CandleEvent = {
55
+ channel: 'candle';
56
+ data: Candle;
57
+ };
58
+ export type OrderUpdatesEvent = {
59
+ channel: 'orderUpdates';
60
+ data: Order[];
61
+ };
62
+ export type FillsEvent = {
63
+ channel: 'fills';
64
+ data: HistoryItem[];
65
+ };
66
+ export type PositionsEvent = {
67
+ channel: 'positions';
68
+ data: Position[];
69
+ };
70
+ export type SubscriptionEvent = PricesEvent | OrderbookEvent | TradesEvent | CandleEvent | OrderUpdatesEvent | FillsEvent | PositionsEvent;
71
+ //# sourceMappingURL=subscriptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscriptions.d.ts","sourceRoot":"","sources":["../subscriptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,KAAK,EACV,MAAM,EACN,aAAa,EACb,iBAAiB,EACjB,cAAc,EACf,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAIzC,MAAM,MAAM,kBAAkB,GAAG;IAAE,OAAO,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAA;AACnE,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,WAAW,CAAA;IACpB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AACD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,QAAQ,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AACD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,QAAQ,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,aAAa,CAAA;CACxB,CAAA;AACD,MAAM,MAAM,wBAAwB,GAAG;IACrC,OAAO,EAAE,cAAc,CAAA;IACvB,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AACD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AACD,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,WAAW,CAAA;IACpB,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,YAAY,GACpB,kBAAkB,GAClB,qBAAqB,GACrB,kBAAkB,GAClB,kBAAkB,GAClB,wBAAwB,GACxB,iBAAiB,GACjB,qBAAqB,CAAA;AAIzB,MAAM,MAAM,WAAW,GAAG;IAAE,OAAO,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,CAAA;AACrE,MAAM,MAAM,cAAc,GAAG;IAAE,OAAO,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,iBAAiB,CAAA;CAAE,CAAA;AAC9E,MAAM,MAAM,WAAW,GAAG;IAAE,OAAO,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,WAAW,EAAE,CAAA;CAAE,CAAA;AACpE,MAAM,MAAM,WAAW,GAAG;IAAE,OAAO,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAC7D,MAAM,MAAM,iBAAiB,GAAG;IAAE,OAAO,EAAE,cAAc,CAAC;IAAC,IAAI,EAAE,KAAK,EAAE,CAAA;CAAE,CAAA;AAC1E,MAAM,MAAM,UAAU,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,WAAW,EAAE,CAAA;CAAE,CAAA;AAClE,MAAM,MAAM,cAAc,GAAG;IAAE,OAAO,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,QAAQ,EAAE,CAAA;CAAE,CAAA;AAEvE,MAAM,MAAM,iBAAiB,GACzB,WAAW,GACX,cAAc,GACd,WAAW,GACX,WAAW,GACX,iBAAiB,GACjB,UAAU,GACV,cAAc,CAAA"}
@@ -8,12 +8,11 @@ export interface CreateOrderRequest {
8
8
  dex: string;
9
9
  address: Address;
10
10
  signerAddress?: Address;
11
- clientOrderId?: string;
12
11
  symbol: string;
13
12
  side: OrderSide;
14
- type: OrderType;
13
+ type?: OrderType;
15
14
  size: string;
16
- price: string;
15
+ price?: string;
17
16
  leverage?: number;
18
17
  reduceOnly?: boolean;
19
18
  timeInForce?: TimeInForce;
@@ -60,7 +59,6 @@ export interface SubmitOrderResponse {
60
59
  }
61
60
  export interface Order {
62
61
  orderId: string;
63
- clientOrderId?: string;
64
62
  symbol: string;
65
63
  side: OrderSide;
66
64
  type: OrderType;
@@ -1 +1 @@
1
- {"version":3,"file":"trading.d.ts","sourceRoot":"","sources":["../trading.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAClE,OAAO,KAAK,EACV,eAAe,EACf,SAAS,EACT,WAAW,EACX,SAAS,EACT,WAAW,EACX,gBAAgB,EACjB,MAAM,YAAY,CAAA;AAEnB,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,OAAO,CAAA;IAChB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,SAAS,CAAA;IACf,IAAI,EAAE,SAAS,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,iBAAiB,CAAA;IAC9B,QAAQ,CAAC,EAAE,iBAAiB,CAAA;CAC7B;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,eAAe,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,cAAc,CAAA;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,WAAW,EAAE,CAAA;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,OAAO,CAAA;IAChB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,GAAG,EAAE,MAAM,EAAE,CAAA;CACd;AAED,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,WAAW,EAAE,CAAA;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,eAAe,CAAA;IACvB,SAAS,EAAE,cAAc,CAAA;IACzB,SAAS,EAAE,GAAG,CAAA;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,OAAO,CAAA;IAChB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,OAAO,EAAE,iBAAiB,EAAE,CAAA;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,eAAe,CAAA;IACvB,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,iBAAiB,EAAE,CAAA;CAC7B;AAED,MAAM,WAAW,KAAK;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,SAAS,CAAA;IACf,IAAI,EAAE,SAAS,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,MAAM,EAAE,WAAW,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB"}
1
+ {"version":3,"file":"trading.d.ts","sourceRoot":"","sources":["../trading.ts"],"names":[],"mappings":"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"}
package/src/account.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import type { Address } from './typedData.js'
2
2
  import type {
3
+ ActivityType,
3
4
  HistoryItemStatus,
4
5
  MarginMode,
5
6
  OrderSide,
@@ -86,3 +87,57 @@ export interface HistoryResponse {
86
87
  items: HistoryItem[]
87
88
  pagination: Pagination
88
89
  }
90
+
91
+ // ---------------------------------------------------------------------------
92
+ // Activities
93
+ // ---------------------------------------------------------------------------
94
+
95
+ export interface BaseActivity {
96
+ id: string
97
+ dex: string
98
+ timestamp: string
99
+ }
100
+
101
+ export interface DepositActivity extends BaseActivity {
102
+ type: ActivityType.DEPOSIT
103
+ amount: string
104
+ }
105
+
106
+ export interface WithdrawalActivity extends BaseActivity {
107
+ type: ActivityType.WITHDRAWAL
108
+ amount: string
109
+ fee: string
110
+ }
111
+
112
+ export interface LiquidatedPosition {
113
+ symbol: string
114
+ size: string
115
+ }
116
+
117
+ export interface LiquidationActivity extends BaseActivity {
118
+ type: ActivityType.LIQUIDATION
119
+ liquidatedNotionalPosition: string
120
+ accountValue: string
121
+ leverageType: string
122
+ liquidatedPositions: LiquidatedPosition[]
123
+ }
124
+
125
+ export interface FundingActivity extends BaseActivity {
126
+ type: ActivityType.FUNDING
127
+ symbol: string
128
+ amount: string
129
+ positionSize: string
130
+ fundingRate: string
131
+ }
132
+
133
+ export type ActivityItem =
134
+ | DepositActivity
135
+ | WithdrawalActivity
136
+ | LiquidationActivity
137
+ | FundingActivity
138
+
139
+ export interface ActivitiesResponse {
140
+ dex: string
141
+ items: ActivityItem[]
142
+ pagination: Pagination
143
+ }
package/src/enums.ts CHANGED
@@ -38,6 +38,7 @@ export enum OrderSide {
38
38
  export enum OrderType {
39
39
  MARKET = 'MARKET',
40
40
  LIMIT = 'LIMIT',
41
+ TRIGGER_ONLY = 'TRIGGER_ONLY',
41
42
  }
42
43
 
43
44
  export enum PositionSide {
@@ -97,3 +98,10 @@ export enum TriggerOrderStatus {
97
98
  TRIGGERED = 'TRIGGERED',
98
99
  CANCELLED = 'CANCELLED',
99
100
  }
101
+
102
+ export enum ActivityType {
103
+ DEPOSIT = 'DEPOSIT',
104
+ WITHDRAWAL = 'WITHDRAWAL',
105
+ LIQUIDATION = 'LIQUIDATION',
106
+ FUNDING = 'FUNDING',
107
+ }
package/src/index.ts CHANGED
@@ -6,3 +6,4 @@ export * from './account.js'
6
6
  export * from './trading.js'
7
7
  export * from './withdrawal.js'
8
8
  export * from './errors.js'
9
+ export * from './subscriptions.js'
package/src/market.ts CHANGED
@@ -16,6 +16,7 @@ export interface Dex {
16
16
  logoURI: string
17
17
  authorizations: Authorization[]
18
18
  extraData?: Record<string, unknown>
19
+ wsUrl?: string
19
20
  }
20
21
 
21
22
  export interface DexesResponse {
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Calculate the asset ID for a given DEX index and asset index.
3
+ *
4
+ * Main DEX (dex = ''): assetId = indexInDex
5
+ * HIP-3 DEXes (dex = 'xyz'): assetId = 100_000 + perpDexIndex * 10_000 + indexInDex
6
+ */
7
+ export const calculateAssetId = (
8
+ dexIndex: number,
9
+ indexInDex: number
10
+ ): number => {
11
+ if (dexIndex === 0) {
12
+ return indexInDex
13
+ }
14
+ return 100_000 + dexIndex * 10_000 + indexInDex
15
+ }
16
+
17
+ /**
18
+ * Get the DEX index from the given list of dex names.
19
+ */
20
+ export const getDexIndex = (dex: string, dexNames: string[]): number => {
21
+ const index = dexNames.indexOf(dex)
22
+ if (index === -1) {
23
+ throw new Error(`Unknown sub-dex: ${dex}`)
24
+ }
25
+ return index
26
+ }
@@ -0,0 +1,3 @@
1
+ export * from './types.js'
2
+ export * from './assetId.js'
3
+ export * from './mappers/index.js'
@@ -0,0 +1,84 @@
1
+ import { ActivityType } from '../../../enums.js'
2
+ import type {
3
+ ActivityItem,
4
+ DepositActivity,
5
+ WithdrawalActivity,
6
+ LiquidationActivity,
7
+ FundingActivity,
8
+ } from '../../../account.js'
9
+ import type { HlLedgerUpdate, HlFundingUpdate } from '../types.js'
10
+
11
+ /**
12
+ * Map a Hyperliquid non-funding ledger entry to an ActivityItem.
13
+ * Returns null for unsupported delta types (accountClassTransfer,
14
+ * internalTransfer, subAccountTransfer, spotTransfer).
15
+ */
16
+ export const mapLedgerEntry = (
17
+ entry: HlLedgerUpdate,
18
+ dexKey: string
19
+ ): ActivityItem | null => {
20
+ const { delta } = entry
21
+ const base = {
22
+ id: entry.hash,
23
+ dex: dexKey,
24
+ timestamp: new Date(entry.time).toISOString(),
25
+ }
26
+
27
+ switch (delta.type) {
28
+ case 'deposit':
29
+ return {
30
+ ...base,
31
+ type: ActivityType.DEPOSIT,
32
+ amount: delta.usdc ?? '0',
33
+ } satisfies DepositActivity
34
+
35
+ case 'withdraw':
36
+ return {
37
+ ...base,
38
+ type: ActivityType.WITHDRAWAL,
39
+ amount: delta.usdc ?? '0',
40
+ fee: (delta as { fee?: string }).fee ?? '0',
41
+ } satisfies WithdrawalActivity
42
+
43
+ case 'liquidation': {
44
+ const d = delta as unknown as {
45
+ type: string
46
+ liquidatedNtlPos: string
47
+ accountValue: string
48
+ leverageType: string
49
+ liquidatedPositions?: { coin: string; szi: string }[]
50
+ }
51
+ return {
52
+ ...base,
53
+ type: ActivityType.LIQUIDATION,
54
+ liquidatedNotionalPosition: d.liquidatedNtlPos,
55
+ accountValue: d.accountValue,
56
+ leverageType: d.leverageType,
57
+ liquidatedPositions: (d.liquidatedPositions ?? []).map((p) => ({
58
+ symbol: p.coin,
59
+ size: p.szi,
60
+ })),
61
+ } satisfies LiquidationActivity
62
+ }
63
+
64
+ default:
65
+ return null
66
+ }
67
+ }
68
+
69
+ /**
70
+ * Map a Hyperliquid funding entry to a FundingActivity.
71
+ */
72
+ export const mapFundingActivity = (
73
+ entry: HlFundingUpdate,
74
+ dexKey: string
75
+ ): FundingActivity => ({
76
+ id: entry.hash,
77
+ dex: dexKey,
78
+ timestamp: new Date(entry.time).toISOString(),
79
+ type: ActivityType.FUNDING,
80
+ symbol: entry.delta.coin,
81
+ amount: entry.delta.usdc,
82
+ positionSize: entry.delta.szi,
83
+ fundingRate: entry.delta.fundingRate,
84
+ })
@@ -0,0 +1,25 @@
1
+ import { HistoryItemStatus, OrderSide, OrderType } from '../../../enums.js'
2
+ import type { HistoryItem } from '../../../account.js'
3
+ import type { HlUserFill } from '../types.js'
4
+
5
+ import { resolveAssetIdFromLookup } from './shared.js'
6
+
7
+ export const mapHistoryItem = (
8
+ fill: HlUserFill,
9
+ dexKey: string,
10
+ assetIdLookup: Map<string, number>
11
+ ): HistoryItem => ({
12
+ id: String(fill.tid),
13
+ symbol: fill.coin,
14
+ assetId: resolveAssetIdFromLookup(assetIdLookup, fill.coin),
15
+ dex: dexKey,
16
+ side: fill.side === 'B' ? OrderSide.BUY : OrderSide.SELL,
17
+ type: fill.dir?.includes('Limit') ? OrderType.LIMIT : OrderType.MARKET,
18
+ size: fill.sz,
19
+ price: fill.px,
20
+ status: HistoryItemStatus.FILLED,
21
+ filledSize: fill.sz,
22
+ fee: fill.fee,
23
+ realizedPnl: fill.closedPnl === '0' ? null : fill.closedPnl,
24
+ createdAt: new Date(fill.time).toISOString(),
25
+ })
@@ -0,0 +1,6 @@
1
+ export { resolveAssetIdFromLookup } from './shared.js'
2
+ export { mapMarket } from './market.js'
3
+ export { mapOpenOrder, mapOrder } from './order.js'
4
+ export { mapPosition } from './position.js'
5
+ export { mapHistoryItem } from './history.js'
6
+ export { mapLedgerEntry, mapFundingActivity } from './activity.js'
@@ -0,0 +1,35 @@
1
+ import type { Market } from '../../../market.js'
2
+ import { calculateAssetId } from '../assetId.js'
3
+ import type { HlAssetCtx, HlUniverseItem } from '../types.js'
4
+
5
+ const NEXT_FUNDING_INTERVAL_MS = 60 * 60 * 1000 // 1 hour
6
+
7
+ export const mapMarket = (
8
+ universe: HlUniverseItem,
9
+ assetCtx: HlAssetCtx,
10
+ dexIndex: number,
11
+ indexInDex: number,
12
+ dexKey: string
13
+ ): Market => {
14
+ const now = Date.now()
15
+ const nextFundingTime =
16
+ Math.ceil(now / NEXT_FUNDING_INTERVAL_MS) * NEXT_FUNDING_INTERVAL_MS
17
+
18
+ return {
19
+ symbol: universe.name,
20
+ name: universe.name,
21
+ logoURI: `https://app.hyperliquid.xyz/coins/${universe.name}.svg`,
22
+ assetId: calculateAssetId(dexIndex, indexInDex),
23
+ dex: dexKey,
24
+ szDecimals: universe.szDecimals,
25
+ maxLeverage: universe.maxLeverage,
26
+ onlyIsolated: universe.onlyIsolated === true,
27
+ funding: {
28
+ rate: assetCtx.funding,
29
+ nextFundingTime,
30
+ },
31
+ openInterest: assetCtx.openInterest,
32
+ volume24h: assetCtx.dayNtlVlm,
33
+ markPrice: assetCtx.markPx,
34
+ }
35
+ }