@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.
- package/package.json +28 -5
- package/providers/hyperliquid/package.json +5 -0
- package/src/_cjs/enums.js +9 -1
- package/src/_cjs/enums.js.map +1 -1
- package/src/_cjs/index.js +1 -0
- package/src/_cjs/index.js.map +1 -1
- package/src/_cjs/providers/hyperliquid/assetId.js +19 -0
- package/src/_cjs/providers/hyperliquid/assetId.js.map +1 -0
- package/src/_cjs/providers/hyperliquid/index.js +20 -0
- package/src/_cjs/providers/hyperliquid/index.js.map +1 -0
- package/src/_cjs/providers/hyperliquid/mappers/activity.js +56 -0
- package/src/_cjs/providers/hyperliquid/mappers/activity.js.map +1 -0
- package/src/_cjs/providers/hyperliquid/mappers/history.js +22 -0
- package/src/_cjs/providers/hyperliquid/mappers/history.js.map +1 -0
- package/src/_cjs/providers/hyperliquid/mappers/index.js +18 -0
- package/src/_cjs/providers/hyperliquid/mappers/index.js.map +1 -0
- package/src/_cjs/providers/hyperliquid/mappers/market.js +28 -0
- package/src/_cjs/providers/hyperliquid/mappers/market.js.map +1 -0
- package/src/_cjs/providers/hyperliquid/mappers/order.js +76 -0
- package/src/_cjs/providers/hyperliquid/mappers/order.js.map +1 -0
- package/src/_cjs/providers/hyperliquid/mappers/position.js +29 -0
- package/src/_cjs/providers/hyperliquid/mappers/position.js.map +1 -0
- package/src/_cjs/providers/hyperliquid/mappers/shared.js +12 -0
- package/src/_cjs/providers/hyperliquid/mappers/shared.js.map +1 -0
- package/src/_cjs/providers/hyperliquid/types.js +3 -0
- package/src/_cjs/providers/hyperliquid/types.js.map +1 -0
- package/src/_cjs/subscriptions.js +3 -0
- package/src/_cjs/subscriptions.js.map +1 -0
- package/src/_esm/enums.js +8 -0
- package/src/_esm/enums.js.map +1 -1
- package/src/_esm/index.js +1 -0
- package/src/_esm/index.js.map +1 -1
- package/src/_esm/providers/hyperliquid/assetId.js +23 -0
- package/src/_esm/providers/hyperliquid/assetId.js.map +1 -0
- package/src/_esm/providers/hyperliquid/index.js +4 -0
- package/src/_esm/providers/hyperliquid/index.js.map +1 -0
- package/src/_esm/providers/hyperliquid/mappers/activity.js +59 -0
- package/src/_esm/providers/hyperliquid/mappers/activity.js.map +1 -0
- package/src/_esm/providers/hyperliquid/mappers/history.js +18 -0
- package/src/_esm/providers/hyperliquid/mappers/history.js.map +1 -0
- package/src/_esm/providers/hyperliquid/mappers/index.js +7 -0
- package/src/_esm/providers/hyperliquid/mappers/index.js.map +1 -0
- package/src/_esm/providers/hyperliquid/mappers/market.js +24 -0
- package/src/_esm/providers/hyperliquid/mappers/market.js.map +1 -0
- package/src/_esm/providers/hyperliquid/mappers/order.js +71 -0
- package/src/_esm/providers/hyperliquid/mappers/order.js.map +1 -0
- package/src/_esm/providers/hyperliquid/mappers/position.js +25 -0
- package/src/_esm/providers/hyperliquid/mappers/position.js.map +1 -0
- package/src/_esm/providers/hyperliquid/mappers/shared.js +13 -0
- package/src/_esm/providers/hyperliquid/mappers/shared.js.map +1 -0
- package/src/_esm/providers/hyperliquid/types.js +5 -0
- package/src/_esm/providers/hyperliquid/types.js.map +1 -0
- package/src/_esm/subscriptions.js +2 -0
- package/src/_esm/subscriptions.js.map +1 -0
- package/src/_types/account.d.ts +39 -1
- package/src/_types/account.d.ts.map +1 -1
- package/src/_types/enums.d.ts +8 -1
- package/src/_types/enums.d.ts.map +1 -1
- package/src/_types/index.d.ts +1 -0
- package/src/_types/index.d.ts.map +1 -1
- package/src/_types/market.d.ts +1 -0
- package/src/_types/market.d.ts.map +1 -1
- package/src/_types/providers/hyperliquid/assetId.d.ts +12 -0
- package/src/_types/providers/hyperliquid/assetId.d.ts.map +1 -0
- package/src/_types/providers/hyperliquid/index.d.ts +4 -0
- package/src/_types/providers/hyperliquid/index.d.ts.map +1 -0
- package/src/_types/providers/hyperliquid/mappers/activity.d.ts +13 -0
- package/src/_types/providers/hyperliquid/mappers/activity.d.ts.map +1 -0
- package/src/_types/providers/hyperliquid/mappers/history.d.ts +4 -0
- package/src/_types/providers/hyperliquid/mappers/history.d.ts.map +1 -0
- package/src/_types/providers/hyperliquid/mappers/index.d.ts +7 -0
- package/src/_types/providers/hyperliquid/mappers/index.d.ts.map +1 -0
- package/src/_types/providers/hyperliquid/mappers/market.d.ts +4 -0
- package/src/_types/providers/hyperliquid/mappers/market.d.ts.map +1 -0
- package/src/_types/providers/hyperliquid/mappers/order.d.ts +6 -0
- package/src/_types/providers/hyperliquid/mappers/order.d.ts.map +1 -0
- package/src/_types/providers/hyperliquid/mappers/position.d.ts +4 -0
- package/src/_types/providers/hyperliquid/mappers/position.d.ts.map +1 -0
- package/src/_types/providers/hyperliquid/mappers/shared.d.ts +7 -0
- package/src/_types/providers/hyperliquid/mappers/shared.d.ts.map +1 -0
- package/src/_types/providers/hyperliquid/types.d.ts +201 -0
- package/src/_types/providers/hyperliquid/types.d.ts.map +1 -0
- package/src/_types/subscriptions.d.ts +71 -0
- package/src/_types/subscriptions.d.ts.map +1 -0
- package/src/_types/trading.d.ts +2 -4
- package/src/_types/trading.d.ts.map +1 -1
- package/src/account.ts +55 -0
- package/src/enums.ts +8 -0
- package/src/index.ts +1 -0
- package/src/market.ts +1 -0
- package/src/providers/hyperliquid/assetId.ts +26 -0
- package/src/providers/hyperliquid/index.ts +3 -0
- package/src/providers/hyperliquid/mappers/activity.ts +84 -0
- package/src/providers/hyperliquid/mappers/history.ts +25 -0
- package/src/providers/hyperliquid/mappers/index.ts +6 -0
- package/src/providers/hyperliquid/mappers/market.ts +35 -0
- package/src/providers/hyperliquid/mappers/order.ts +88 -0
- package/src/providers/hyperliquid/mappers/position.ts +35 -0
- package/src/providers/hyperliquid/mappers/shared.ts +15 -0
- package/src/providers/hyperliquid/types.ts +255 -0
- package/src/subscriptions.ts +73 -0
- 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"}
|
package/src/_types/trading.d.ts
CHANGED
|
@@ -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
|
|
13
|
+
type?: OrderType;
|
|
15
14
|
size: string;
|
|
16
|
-
price
|
|
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,
|
|
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
package/src/market.ts
CHANGED
|
@@ -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,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
|
+
}
|