@tria-sdk/hyperliquid-core 0.1.0
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/dist/api.d.ts +279 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +914 -0
- package/dist/api.js.map +1 -0
- package/dist/client.d.ts +6 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +35 -0
- package/dist/client.js.map +1 -0
- package/dist/exchange.d.ts +131 -0
- package/dist/exchange.d.ts.map +1 -0
- package/dist/exchange.js +6 -0
- package/dist/exchange.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +357 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/format.d.ts +62 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +193 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/localization.d.ts +93 -0
- package/dist/utils/localization.d.ts.map +1 -0
- package/dist/utils/localization.js +108 -0
- package/dist/utils/localization.js.map +1 -0
- package/dist/websocket/WebSocketManager.d.ts +41 -0
- package/dist/websocket/WebSocketManager.d.ts.map +1 -0
- package/dist/websocket/WebSocketManager.js +295 -0
- package/dist/websocket/WebSocketManager.js.map +1 -0
- package/dist/websocket/index.d.ts +3 -0
- package/dist/websocket/index.d.ts.map +1 -0
- package/dist/websocket/index.js +3 -0
- package/dist/websocket/index.js.map +1 -0
- package/dist/websocket/types.d.ts +98 -0
- package/dist/websocket/types.d.ts.map +1 -0
- package/dist/websocket/types.js +2 -0
- package/dist/websocket/types.js.map +1 -0
- package/package.json +28 -0
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Format utilities for Hyperliquid order prices and sizes
|
|
3
|
+
* Based on: https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/tick-and-lot-size
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Format size for ORDER SUBMISSION according to szDecimals
|
|
7
|
+
* Sizes are rounded to the szDecimals of that asset
|
|
8
|
+
* Trailing zeros are removed as required for signing
|
|
9
|
+
* @param size - The size value to format
|
|
10
|
+
* @param szDecimals - Number of decimal places allowed for this asset
|
|
11
|
+
* @returns Formatted size string with trailing zeros removed
|
|
12
|
+
*/
|
|
13
|
+
export declare function formatOrderSize(size: number, szDecimals: number): string;
|
|
14
|
+
/**
|
|
15
|
+
* Format price for ORDER SUBMISSION according to Hyperliquid rules
|
|
16
|
+
* - Max 5 significant figures
|
|
17
|
+
* - Max decimals: 6 for perps, 8 for spot (minus szDecimals)
|
|
18
|
+
* - Integers always allowed regardless of significant figures
|
|
19
|
+
* Trailing zeros are removed as required for signing
|
|
20
|
+
* @param price - The price value to format
|
|
21
|
+
* @param szDecimals - Asset's szDecimals (affects max decimal places)
|
|
22
|
+
* @param isSpot - Whether this is a spot order (default: false for perps)
|
|
23
|
+
* @returns Formatted price string with trailing zeros removed
|
|
24
|
+
*/
|
|
25
|
+
export declare function formatOrderPrice(price: number, szDecimals: number, isSpot?: boolean): string;
|
|
26
|
+
/**
|
|
27
|
+
* Remove trailing zeros from a numeric string
|
|
28
|
+
* Required for signing per Hyperliquid docs
|
|
29
|
+
*/
|
|
30
|
+
export declare function removeTrailingZeros(str: string): string;
|
|
31
|
+
/**
|
|
32
|
+
* Validate if a price string is acceptable for Hyperliquid
|
|
33
|
+
* @param priceStr - Price as string
|
|
34
|
+
* @param szDecimals - Asset's szDecimals
|
|
35
|
+
* @param isSpot - Whether this is spot (default: false for perps)
|
|
36
|
+
* @returns true if valid
|
|
37
|
+
*/
|
|
38
|
+
export declare function isValidPrice(priceStr: string, szDecimals: number, isSpot?: boolean): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Validate if a size string is acceptable for Hyperliquid
|
|
41
|
+
* @param sizeStr - Size as string
|
|
42
|
+
* @param szDecimals - Asset's szDecimals
|
|
43
|
+
* @returns true if valid
|
|
44
|
+
*/
|
|
45
|
+
export declare function isValidSize(sizeStr: string, szDecimals: number): boolean;
|
|
46
|
+
export declare function formatPrice(price: number | string | undefined): string;
|
|
47
|
+
export declare function formatSize(size: number | string | undefined): string;
|
|
48
|
+
/**
|
|
49
|
+
* Format as USD currency for DISPLAY
|
|
50
|
+
*/
|
|
51
|
+
export declare function formatUSD(amount: number | string | undefined): string;
|
|
52
|
+
/**
|
|
53
|
+
* Format a percentage for DISPLAY
|
|
54
|
+
*/
|
|
55
|
+
export declare function formatPercentage(value: number | string | undefined, decimals?: number): string;
|
|
56
|
+
export declare const fmt: {
|
|
57
|
+
usd: typeof formatUSD;
|
|
58
|
+
px: typeof formatPrice;
|
|
59
|
+
sz: typeof formatSize;
|
|
60
|
+
pct: typeof formatPercentage;
|
|
61
|
+
};
|
|
62
|
+
//# sourceMappingURL=format.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/utils/format.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAUxE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,MAAM,UAAQ,GACb,MAAM,CAiCR;AAoCD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAQvD;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,MAAM,UAAQ,GACb,OAAO,CAWT;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAWxE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAYtE;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAQpE;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAUrE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,EAClC,QAAQ,SAAI,GACX,MAAM,CAKR;AAED,eAAO,MAAM,GAAG;;;;;CAKf,CAAC"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Format utilities for Hyperliquid order prices and sizes
|
|
3
|
+
* Based on: https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/tick-and-lot-size
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Format size for ORDER SUBMISSION according to szDecimals
|
|
7
|
+
* Sizes are rounded to the szDecimals of that asset
|
|
8
|
+
* Trailing zeros are removed as required for signing
|
|
9
|
+
* @param size - The size value to format
|
|
10
|
+
* @param szDecimals - Number of decimal places allowed for this asset
|
|
11
|
+
* @returns Formatted size string with trailing zeros removed
|
|
12
|
+
*/
|
|
13
|
+
export function formatOrderSize(size, szDecimals) {
|
|
14
|
+
if (!Number.isFinite(size) || size < 0) {
|
|
15
|
+
throw new Error("Invalid size value");
|
|
16
|
+
}
|
|
17
|
+
// Round to szDecimals
|
|
18
|
+
const rounded = Number(size.toFixed(szDecimals));
|
|
19
|
+
// Convert to string and remove trailing zeros
|
|
20
|
+
return removeTrailingZeros(rounded.toString());
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Format price for ORDER SUBMISSION according to Hyperliquid rules
|
|
24
|
+
* - Max 5 significant figures
|
|
25
|
+
* - Max decimals: 6 for perps, 8 for spot (minus szDecimals)
|
|
26
|
+
* - Integers always allowed regardless of significant figures
|
|
27
|
+
* Trailing zeros are removed as required for signing
|
|
28
|
+
* @param price - The price value to format
|
|
29
|
+
* @param szDecimals - Asset's szDecimals (affects max decimal places)
|
|
30
|
+
* @param isSpot - Whether this is a spot order (default: false for perps)
|
|
31
|
+
* @returns Formatted price string with trailing zeros removed
|
|
32
|
+
*/
|
|
33
|
+
export function formatOrderPrice(price, szDecimals, isSpot = false) {
|
|
34
|
+
if (!Number.isFinite(price) || price <= 0) {
|
|
35
|
+
throw new Error("Invalid price value");
|
|
36
|
+
}
|
|
37
|
+
const MAX_DECIMALS = isSpot ? 8 : 6;
|
|
38
|
+
const maxDecimals = MAX_DECIMALS - szDecimals;
|
|
39
|
+
// Check if it's an integer
|
|
40
|
+
if (Number.isInteger(price)) {
|
|
41
|
+
return price.toString();
|
|
42
|
+
}
|
|
43
|
+
// Get the price as string to analyze
|
|
44
|
+
const priceStr = price.toString();
|
|
45
|
+
const [, decPart = ""] = priceStr.split(".");
|
|
46
|
+
// Count significant figures
|
|
47
|
+
const sigFigs = countSignificantFigures(price);
|
|
48
|
+
// If more than 5 sig figs, we need to round
|
|
49
|
+
if (sigFigs > 5) {
|
|
50
|
+
// Round to 5 significant figures
|
|
51
|
+
const rounded = roundToSignificantFigures(price, 5);
|
|
52
|
+
return formatOrderPrice(rounded, szDecimals, isSpot);
|
|
53
|
+
}
|
|
54
|
+
// Apply max decimal constraint
|
|
55
|
+
const actualDecimals = Math.min(decPart.length, maxDecimals);
|
|
56
|
+
const rounded = Number(price.toFixed(actualDecimals));
|
|
57
|
+
// Remove trailing zeros
|
|
58
|
+
return removeTrailingZeros(rounded.toString());
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Count significant figures in a number
|
|
62
|
+
*/
|
|
63
|
+
function countSignificantFigures(num) {
|
|
64
|
+
// Convert to string and remove scientific notation
|
|
65
|
+
const str = num.toString();
|
|
66
|
+
const [intPart, decPart = ""] = str.split(".");
|
|
67
|
+
// Remove leading zeros from integer part
|
|
68
|
+
const intDigits = intPart.replace(/^0+/, "");
|
|
69
|
+
if (intDigits.length > 0) {
|
|
70
|
+
// Has integer part - count all digits
|
|
71
|
+
return intDigits.length + decPart.length;
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
// Only decimal part - skip leading zeros in decimal
|
|
75
|
+
const firstNonZero = decPart.search(/[1-9]/);
|
|
76
|
+
if (firstNonZero === -1)
|
|
77
|
+
return 0;
|
|
78
|
+
return decPart.length - firstNonZero;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Round number to specified significant figures
|
|
83
|
+
*/
|
|
84
|
+
function roundToSignificantFigures(num, sigFigs) {
|
|
85
|
+
if (num === 0)
|
|
86
|
+
return 0;
|
|
87
|
+
const magnitude = Math.floor(Math.log10(Math.abs(num)));
|
|
88
|
+
const scale = Math.pow(10, sigFigs - magnitude - 1);
|
|
89
|
+
return Math.round(num * scale) / scale;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Remove trailing zeros from a numeric string
|
|
93
|
+
* Required for signing per Hyperliquid docs
|
|
94
|
+
*/
|
|
95
|
+
export function removeTrailingZeros(str) {
|
|
96
|
+
// If no decimal point, return as-is
|
|
97
|
+
if (!str.includes(".")) {
|
|
98
|
+
return str;
|
|
99
|
+
}
|
|
100
|
+
// Remove trailing zeros and trailing decimal point
|
|
101
|
+
return str.replace(/\.?0+$/, "");
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Validate if a price string is acceptable for Hyperliquid
|
|
105
|
+
* @param priceStr - Price as string
|
|
106
|
+
* @param szDecimals - Asset's szDecimals
|
|
107
|
+
* @param isSpot - Whether this is spot (default: false for perps)
|
|
108
|
+
* @returns true if valid
|
|
109
|
+
*/
|
|
110
|
+
export function isValidPrice(priceStr, szDecimals, isSpot = false) {
|
|
111
|
+
const price = parseFloat(priceStr);
|
|
112
|
+
if (!Number.isFinite(price) || price <= 0)
|
|
113
|
+
return false;
|
|
114
|
+
try {
|
|
115
|
+
const formatted = formatOrderPrice(price, szDecimals, isSpot);
|
|
116
|
+
// Check if formatting changed the value significantly
|
|
117
|
+
return Math.abs(parseFloat(formatted) - price) < price * 0.0001;
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Validate if a size string is acceptable for Hyperliquid
|
|
125
|
+
* @param sizeStr - Size as string
|
|
126
|
+
* @param szDecimals - Asset's szDecimals
|
|
127
|
+
* @returns true if valid
|
|
128
|
+
*/
|
|
129
|
+
export function isValidSize(sizeStr, szDecimals) {
|
|
130
|
+
const size = parseFloat(sizeStr);
|
|
131
|
+
if (!Number.isFinite(size) || size <= 0)
|
|
132
|
+
return false;
|
|
133
|
+
try {
|
|
134
|
+
const formatted = formatOrderSize(size, szDecimals);
|
|
135
|
+
// Check if formatting changed the value
|
|
136
|
+
return parseFloat(formatted) === size;
|
|
137
|
+
}
|
|
138
|
+
catch {
|
|
139
|
+
return false;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
export function formatPrice(price) {
|
|
143
|
+
const value = typeof price === "string" ? parseFloat(price) : price ?? 0;
|
|
144
|
+
if (!Number.isFinite(value))
|
|
145
|
+
return "-";
|
|
146
|
+
const abs = Math.abs(value);
|
|
147
|
+
// Show deep precision for sub-dollar assets, otherwise crisp two-decimal display
|
|
148
|
+
const options = abs < 1
|
|
149
|
+
? { minimumFractionDigits: 6, maximumFractionDigits: 6 }
|
|
150
|
+
: { minimumFractionDigits: 2, maximumFractionDigits: 2 };
|
|
151
|
+
return value.toLocaleString("en-US", options);
|
|
152
|
+
}
|
|
153
|
+
export function formatSize(size) {
|
|
154
|
+
const value = typeof size === "string" ? parseFloat(size) : size ?? 0;
|
|
155
|
+
if (!Number.isFinite(value))
|
|
156
|
+
return "-";
|
|
157
|
+
const abs = Math.abs(value);
|
|
158
|
+
if (abs >= 1000)
|
|
159
|
+
return value.toFixed(0);
|
|
160
|
+
if (abs >= 10)
|
|
161
|
+
return value.toFixed(2);
|
|
162
|
+
return value.toFixed(4);
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Format as USD currency for DISPLAY
|
|
166
|
+
*/
|
|
167
|
+
export function formatUSD(amount) {
|
|
168
|
+
const value = typeof amount === "string" ? parseFloat(amount) : amount ?? 0;
|
|
169
|
+
if (!Number.isFinite(value))
|
|
170
|
+
return "-";
|
|
171
|
+
return new Intl.NumberFormat("en-US", {
|
|
172
|
+
style: "currency",
|
|
173
|
+
currency: "USD",
|
|
174
|
+
minimumFractionDigits: 2,
|
|
175
|
+
maximumFractionDigits: 2,
|
|
176
|
+
}).format(value);
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Format a percentage for DISPLAY
|
|
180
|
+
*/
|
|
181
|
+
export function formatPercentage(value, decimals = 2) {
|
|
182
|
+
const num = typeof value === "string" ? parseFloat(value) : value ?? 0;
|
|
183
|
+
if (!Number.isFinite(num))
|
|
184
|
+
return "-";
|
|
185
|
+
return `${num.toFixed(decimals)}%`;
|
|
186
|
+
}
|
|
187
|
+
export const fmt = {
|
|
188
|
+
usd: formatUSD,
|
|
189
|
+
px: formatPrice,
|
|
190
|
+
sz: formatSize,
|
|
191
|
+
pct: formatPercentage,
|
|
192
|
+
};
|
|
193
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/utils/format.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
export declare enum ErrorKey {
|
|
2
|
+
UNKNOWN = "ERROR_UNKNOWN",
|
|
3
|
+
VALIDATION_ERROR = "ERROR_VALIDATION",
|
|
4
|
+
AUTH_FAILED = "ERROR_AUTH_FAILED",
|
|
5
|
+
USER_NOT_FOUND = "ERROR_HL_USER_NOT_FOUND",
|
|
6
|
+
AGENT_NOT_APPROVED = "ERROR_HL_AGENT_NOT_APPROVED",
|
|
7
|
+
AGENT_ALREADY_APPROVED = "ERROR_HL_AGENT_ALREADY_APPROVED",
|
|
8
|
+
EXTRA_AGENT_ALREADY_USED = "ERROR_HL_EXTRA_AGENT_ALREADY_USED",
|
|
9
|
+
AGENT_USER_ADDRESS = "ERROR_HL_AGENT_USER_ADDRESS",
|
|
10
|
+
AGENT_DOES_NOT_EXIST = "ERROR_HL_AGENT_DOES_NOT_EXIST",
|
|
11
|
+
BUILDER_NOT_APPROVED = "ERROR_HL_BUILDER_NOT_APPROVED",
|
|
12
|
+
BUILDER_INSUFFICIENT_BALANCE = "ERROR_HL_BUILDER_INSUFFICIENT_BALANCE",
|
|
13
|
+
ORDER_IS_NOT_PLACED_OR_FULFILLED = "ERROR_HL_ORDER_IS_NOT_PLACED_OR_FULFILLED",
|
|
14
|
+
ORDER_PRICE_TOO_FAR = "ERROR_HL_ORDER_PRICE_TOO_FAR",
|
|
15
|
+
ORDER_PRICE_NOT_DIVISIBLE_BY_TICK = "ERROR_HL_ORDER_PRICE_NOT_DIVISIBLE_BY_TICK",
|
|
16
|
+
ORDER_SIZE_TOO_SMALL = "ERROR_HL_ORDER_SIZE_TOO_SMALL",
|
|
17
|
+
ORDER_SIZE_TOO_LARGE = "ERROR_HL_ORDER_SIZE_TOO_LARGE",
|
|
18
|
+
ORDER_VALUE_TOO_SMALL = "ERROR_HL_ORDER_VALUE_TOO_SMALL",
|
|
19
|
+
ORDER_INVALID_PRICE = "ERROR_HL_ORDER_INVALID_PRICE",
|
|
20
|
+
ORDER_INVALID_SIZE = "ERROR_HL_ORDER_INVALID_SIZE",
|
|
21
|
+
ORDER_ZERO_SIZE = "ERROR_HL_ORDER_ZERO_SIZE",
|
|
22
|
+
ORDER_VALUE_TOO_LARGE = "ERROR_HL_ORDER_VALUE_TOO_LARGE",
|
|
23
|
+
ORDER_TRIGGER_NOT_MAIN = "ERROR_HL_ORDER_TRIGGER_NOT_MAIN",
|
|
24
|
+
ORDER_INVALID_TRIGGER_PRICE = "ERROR_HL_ORDER_INVALID_TRIGGER_PRICE",
|
|
25
|
+
ORDER_WOULD_TRIGGER_IMMEDIATELY = "ERROR_HL_ORDER_WOULD_TRIGGER_IMMEDIATELY",
|
|
26
|
+
ORDER_POST_ONLY_FAILED = "ERROR_HL_ORDER_POST_ONLY_FAILED",
|
|
27
|
+
ORDER_IOC_CANCELLED = "ERROR_HL_ORDER_IOC_CANCELLED",
|
|
28
|
+
ORDER_MAX_ORDERS_EXCEEDED = "ERROR_HL_ORDER_MAX_ORDERS_EXCEEDED",
|
|
29
|
+
ORDER_DUPLICATE_CLOID = "ERROR_HL_ORDER_DUPLICATE_CLOID",
|
|
30
|
+
ORDER_INVALID_TIF = "ERROR_HL_ORDER_INVALID_TIF",
|
|
31
|
+
ORDER_NO_LIQUIDITY = "ERROR_HL_ORDER_NO_LIQUIDITY",
|
|
32
|
+
ORDER_NO_IMMEDIATE_MATCH = "ERROR_HL_ORDER_NO_IMMEDIATE_MATCH",
|
|
33
|
+
ORDER_INSUFFICIENT_SPOT_BALANCE = "ERROR_HL_ORDER_INSUFFICIENT_SPOT_BALANCE",
|
|
34
|
+
POSITION_NOT_FOUND = "ERROR_HL_POSITION_NOT_FOUND",
|
|
35
|
+
POSITION_EMPTY = "ERROR_HL_POSITION_EMPTY",
|
|
36
|
+
MARGIN_UPDATE_ZERO = "ERROR_HL_MARGIN_UPDATE_ZERO",
|
|
37
|
+
INSUFFICIENT_MARGIN = "ERROR_HL_INSUFFICIENT_MARGIN",
|
|
38
|
+
LEVERAGE_TOO_HIGH = "ERROR_HL_LEVERAGE_TOO_HIGH",
|
|
39
|
+
LEVERAGE_TOO_LOW = "ERROR_HL_LEVERAGE_TOO_LOW",
|
|
40
|
+
INVALID_LEVERAGE = "ERROR_HL_INVALID_LEVERAGE",
|
|
41
|
+
MARGIN_MODE_CHANGE_FAILED = "ERROR_HL_MARGIN_MODE_CHANGE_FAILED",
|
|
42
|
+
NOT_ISOLATED_MARGIN = "ERROR_HL_NOT_ISOLATED_MARGIN",
|
|
43
|
+
REDUCE_ONLY_FAILED = "ERROR_HL_REDUCE_ONLY_FAILED",
|
|
44
|
+
POSITION_LIMIT_EXCEEDED = "ERROR_HL_POSITION_LIMIT_EXCEEDED",
|
|
45
|
+
POSITION_EXCEEDS_MARGIN_TIER = "ERROR_HL_POSITION_EXCEEDS_MARGIN_TIER",
|
|
46
|
+
OPEN_INTEREST_AT_CAP = "ERROR_HL_OPEN_INTEREST_AT_CAP",
|
|
47
|
+
OPEN_INTEREST_INCREASE_TOO_FAST = "ERROR_HL_OPEN_INTEREST_INCREASE_TOO_FAST",
|
|
48
|
+
PRICE_TOO_AGGRESSIVE_AT_OI_CAP = "ERROR_HL_PRICE_TOO_AGGRESSIVE_AT_OI_CAP",
|
|
49
|
+
INVALID_ASSET = "ERROR_HL_INVALID_ASSET",
|
|
50
|
+
ASSET_NOT_TRADEABLE = "ERROR_HL_ASSET_NOT_TRADEABLE",
|
|
51
|
+
ASSET_DELISTED = "ERROR_HL_ASSET_DELISTED",
|
|
52
|
+
TRANSFER_FAILED = "ERROR_HL_TRANSFER_FAILED",
|
|
53
|
+
WITHDRAW_FAILED = "ERROR_HL_WITHDRAW_FAILED",
|
|
54
|
+
WITHDRAW_ZERO_AMOUNT = "ERROR_HL_WITHDRAW_ZERO_AMOUNT",
|
|
55
|
+
WITHDRAW_TOO_SMALL = "ERROR_HL_WITHDRAW_TOO_SMALL",
|
|
56
|
+
WITHDRAW_SMALLER_THAN_FEE = "ERROR_HL_WITHDRAW_SMALLER_THAN_FEE",
|
|
57
|
+
WITHDRAW_TOO_LARGE = "ERROR_HL_WITHDRAW_TOO_LARGE",
|
|
58
|
+
WITHDRAW_BRIDGE_ERROR = "ERROR_HL_WITHDRAW_BRIDGE_ERROR",
|
|
59
|
+
INVALID_DESTINATION = "ERROR_HL_INVALID_DESTINATION",
|
|
60
|
+
SAME_ADDRESS_TRANSFER = "ERROR_HL_SAME_ADDRESS_TRANSFER",
|
|
61
|
+
DEPOSIT_REQUIRED = "ERROR_HL_DEPOSIT_REQUIRED",
|
|
62
|
+
VAULT_NOT_FOUND = "ERROR_HL_VAULT_NOT_FOUND",
|
|
63
|
+
VAULT_NOT_REGISTERED = "ERROR_HL_VAULT_NOT_REGISTERED",
|
|
64
|
+
VAULT_INSUFFICIENT_EQUITY = "ERROR_HL_VAULT_INSUFFICIENT_EQUITY",
|
|
65
|
+
VAULT_DEPOSIT_TOO_SMALL = "ERROR_HL_VAULT_DEPOSIT_TOO_SMALL",
|
|
66
|
+
VAULT_DEPOSIT_FAILED = "ERROR_HL_VAULT_DEPOSIT_FAILED",
|
|
67
|
+
VAULT_WITHDRAW_FAILED = "ERROR_HL_VAULT_WITHDRAW_FAILED",
|
|
68
|
+
VAULT_LOCKED = "ERROR_HL_VAULT_LOCKED",
|
|
69
|
+
TWAP_NOT_FOUND = "ERROR_HL_TWAP_NOT_FOUND",
|
|
70
|
+
TWAP_ALREADY_CANCELLED = "ERROR_HL_TWAP_ALREADY_CANCELLED",
|
|
71
|
+
TWAP_ALREADY_COMPLETED = "ERROR_HL_TWAP_ALREADY_COMPLETED",
|
|
72
|
+
TWAP_INVALID_DURATION = "ERROR_HL_TWAP_INVALID_DURATION",
|
|
73
|
+
TWAP_SIZE_TOO_SMALL = "ERROR_HL_TWAP_SIZE_TOO_SMALL",
|
|
74
|
+
TWAP_VALUE_TOO_SMALL = "ERROR_HL_TWAP_VALUE_TOO_SMALL",
|
|
75
|
+
TWAP_REDUCE_ONLY_WOULD_INCREASE = "ERROR_HL_TWAP_REDUCE_ONLY_WOULD_INCREASE",
|
|
76
|
+
TWAP_NOT_PLACED_OR_FULFILLED = "ERROR_HL_TWAP_NOT_PLACED_OR_FULFILLED",
|
|
77
|
+
SCHEDULE_CANCEL_INVALID_TIME = "ERROR_HL_SCHEDULE_CANCEL_INVALID_TIME",
|
|
78
|
+
SCHEDULE_CANCEL_TOO_FAR = "ERROR_HL_SCHEDULE_CANCEL_TOO_FAR",
|
|
79
|
+
SCHEDULE_CANCEL_INSUFFICIENT_VOLUME = "ERROR_HL_SCHEDULE_CANCEL_INSUFFICIENT_VOLUME",
|
|
80
|
+
FAILED_TO_SIGN_TYPED_DATA = "ERROR_HL_FAILED_TO_SIGN_TYPED_DATA",
|
|
81
|
+
SIGNATURE_NETWORK_MISMATCH = "ERROR_HL_SIGNATURE_NETWORK_MISMATCH",
|
|
82
|
+
INVALID_NONCE_DUPLICATE = "ERROR_HL_INVALID_NONCE_DUPLICATE",
|
|
83
|
+
PRICE_BAND_EXCEEDED = "ERROR_HL_PRICE_BAND_EXCEEDED",
|
|
84
|
+
INVALID_TOKEN = "ERROR_HL_INVALID_TOKEN",
|
|
85
|
+
SPOT_DUSTING_ERROR = "ERROR_HL_SPOT_DUSTING_ERROR",
|
|
86
|
+
INVALID_PARAMETER = "ERROR_HL_INVALID_PARAMETER",
|
|
87
|
+
INVALID_DECIMALS = "ERROR_HL_INVALID_DECIMALS",
|
|
88
|
+
INVALID_PERCENTAGE = "ERROR_HL_INVALID_PERCENTAGE",
|
|
89
|
+
CANCEL_NOT_ALLOWED = "ERROR_HL_CANCEL_NOT_ALLOWED",
|
|
90
|
+
MODIFY_NOT_ALLOWED = "ERROR_HL_MODIFY_NOT_ALLOWED",
|
|
91
|
+
BUILDER_FEE_ERROR = "ERROR_HL_BUILDER_FEE_ERROR"
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=localization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localization.d.ts","sourceRoot":"","sources":["../../src/utils/localization.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ;IAClB,OAAO,kBAAkB;IACzB,gBAAgB,qBAAqB;IACrC,WAAW,sBAAsB;IAGjC,cAAc,4BAA4B;IAC1C,kBAAkB,gCAAgC;IAClD,sBAAsB,oCAAoC;IAC1D,wBAAwB,sCAAsC;IAC9D,kBAAkB,gCAAgC;IAClD,oBAAoB,kCAAkC;IACtD,oBAAoB,kCAAkC;IACtD,4BAA4B,0CAA0C;IAGtE,gCAAgC,8CAA8C;IAC9E,mBAAmB,iCAAiC;IACpD,iCAAiC,+CAA+C;IAChF,oBAAoB,kCAAkC;IACtD,oBAAoB,kCAAkC;IACtD,qBAAqB,mCAAmC;IACxD,mBAAmB,iCAAiC;IACpD,kBAAkB,gCAAgC;IAClD,eAAe,6BAA6B;IAC5C,qBAAqB,mCAAmC;IACxD,sBAAsB,oCAAoC;IAC1D,2BAA2B,yCAAyC;IACpE,+BAA+B,6CAA6C;IAC5E,sBAAsB,oCAAoC;IAC1D,mBAAmB,iCAAiC;IACpD,yBAAyB,uCAAuC;IAChE,qBAAqB,mCAAmC;IACxD,iBAAiB,+BAA+B;IAChD,kBAAkB,gCAAgC;IAClD,wBAAwB,sCAAsC;IAC9D,+BAA+B,6CAA6C;IAG5E,kBAAkB,gCAAgC;IAClD,cAAc,4BAA4B;IAC1C,kBAAkB,gCAAgC;IAClD,mBAAmB,iCAAiC;IACpD,iBAAiB,+BAA+B;IAChD,gBAAgB,8BAA8B;IAC9C,gBAAgB,8BAA8B;IAC9C,yBAAyB,uCAAuC;IAChE,mBAAmB,iCAAiC;IACpD,kBAAkB,gCAAgC;IAClD,uBAAuB,qCAAqC;IAC5D,4BAA4B,0CAA0C;IACtE,oBAAoB,kCAAkC;IACtD,+BAA+B,6CAA6C;IAC5E,8BAA8B,4CAA4C;IAG1E,aAAa,2BAA2B;IACxC,mBAAmB,iCAAiC;IACpD,cAAc,4BAA4B;IAG1C,eAAe,6BAA6B;IAC5C,eAAe,6BAA6B;IAC5C,oBAAoB,kCAAkC;IACtD,kBAAkB,gCAAgC;IAClD,yBAAyB,uCAAuC;IAChE,kBAAkB,gCAAgC;IAClD,qBAAqB,mCAAmC;IACxD,mBAAmB,iCAAiC;IACpD,qBAAqB,mCAAmC;IACxD,gBAAgB,8BAA8B;IAG9C,eAAe,6BAA6B;IAC5C,oBAAoB,kCAAkC;IACtD,yBAAyB,uCAAuC;IAChE,uBAAuB,qCAAqC;IAC5D,oBAAoB,kCAAkC;IACtD,qBAAqB,mCAAmC;IACxD,YAAY,0BAA0B;IAGtC,cAAc,4BAA4B;IAC1C,sBAAsB,oCAAoC;IAC1D,sBAAsB,oCAAoC;IAC1D,qBAAqB,mCAAmC;IACxD,mBAAmB,iCAAiC;IACpD,oBAAoB,kCAAkC;IACtD,+BAA+B,6CAA6C;IAC5E,4BAA4B,0CAA0C;IAGtE,4BAA4B,0CAA0C;IACtE,uBAAuB,qCAAqC;IAC5D,mCAAmC,iDAAiD;IAGpF,yBAAyB,uCAAuC;IAChE,0BAA0B,wCAAwC;IAClE,uBAAuB,qCAAqC;IAG5D,mBAAmB,iCAAiC;IAGpD,aAAa,2BAA2B;IACxC,kBAAkB,gCAAgC;IAGlD,iBAAiB,+BAA+B;IAChD,gBAAgB,8BAA8B;IAC9C,kBAAkB,gCAAgC;IAGlD,kBAAkB,gCAAgC;IAClD,kBAAkB,gCAAgC;IAGlD,iBAAiB,+BAA+B;CACjD"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
export var ErrorKey;
|
|
2
|
+
(function (ErrorKey) {
|
|
3
|
+
ErrorKey["UNKNOWN"] = "ERROR_UNKNOWN";
|
|
4
|
+
ErrorKey["VALIDATION_ERROR"] = "ERROR_VALIDATION";
|
|
5
|
+
ErrorKey["AUTH_FAILED"] = "ERROR_AUTH_FAILED";
|
|
6
|
+
// Hyperliquid SDK - User/Wallet
|
|
7
|
+
ErrorKey["USER_NOT_FOUND"] = "ERROR_HL_USER_NOT_FOUND";
|
|
8
|
+
ErrorKey["AGENT_NOT_APPROVED"] = "ERROR_HL_AGENT_NOT_APPROVED";
|
|
9
|
+
ErrorKey["AGENT_ALREADY_APPROVED"] = "ERROR_HL_AGENT_ALREADY_APPROVED";
|
|
10
|
+
ErrorKey["EXTRA_AGENT_ALREADY_USED"] = "ERROR_HL_EXTRA_AGENT_ALREADY_USED";
|
|
11
|
+
ErrorKey["AGENT_USER_ADDRESS"] = "ERROR_HL_AGENT_USER_ADDRESS";
|
|
12
|
+
ErrorKey["AGENT_DOES_NOT_EXIST"] = "ERROR_HL_AGENT_DOES_NOT_EXIST";
|
|
13
|
+
ErrorKey["BUILDER_NOT_APPROVED"] = "ERROR_HL_BUILDER_NOT_APPROVED";
|
|
14
|
+
ErrorKey["BUILDER_INSUFFICIENT_BALANCE"] = "ERROR_HL_BUILDER_INSUFFICIENT_BALANCE";
|
|
15
|
+
// Hyperliquid SDK - Order
|
|
16
|
+
ErrorKey["ORDER_IS_NOT_PLACED_OR_FULFILLED"] = "ERROR_HL_ORDER_IS_NOT_PLACED_OR_FULFILLED";
|
|
17
|
+
ErrorKey["ORDER_PRICE_TOO_FAR"] = "ERROR_HL_ORDER_PRICE_TOO_FAR";
|
|
18
|
+
ErrorKey["ORDER_PRICE_NOT_DIVISIBLE_BY_TICK"] = "ERROR_HL_ORDER_PRICE_NOT_DIVISIBLE_BY_TICK";
|
|
19
|
+
ErrorKey["ORDER_SIZE_TOO_SMALL"] = "ERROR_HL_ORDER_SIZE_TOO_SMALL";
|
|
20
|
+
ErrorKey["ORDER_SIZE_TOO_LARGE"] = "ERROR_HL_ORDER_SIZE_TOO_LARGE";
|
|
21
|
+
ErrorKey["ORDER_VALUE_TOO_SMALL"] = "ERROR_HL_ORDER_VALUE_TOO_SMALL";
|
|
22
|
+
ErrorKey["ORDER_INVALID_PRICE"] = "ERROR_HL_ORDER_INVALID_PRICE";
|
|
23
|
+
ErrorKey["ORDER_INVALID_SIZE"] = "ERROR_HL_ORDER_INVALID_SIZE";
|
|
24
|
+
ErrorKey["ORDER_ZERO_SIZE"] = "ERROR_HL_ORDER_ZERO_SIZE";
|
|
25
|
+
ErrorKey["ORDER_VALUE_TOO_LARGE"] = "ERROR_HL_ORDER_VALUE_TOO_LARGE";
|
|
26
|
+
ErrorKey["ORDER_TRIGGER_NOT_MAIN"] = "ERROR_HL_ORDER_TRIGGER_NOT_MAIN";
|
|
27
|
+
ErrorKey["ORDER_INVALID_TRIGGER_PRICE"] = "ERROR_HL_ORDER_INVALID_TRIGGER_PRICE";
|
|
28
|
+
ErrorKey["ORDER_WOULD_TRIGGER_IMMEDIATELY"] = "ERROR_HL_ORDER_WOULD_TRIGGER_IMMEDIATELY";
|
|
29
|
+
ErrorKey["ORDER_POST_ONLY_FAILED"] = "ERROR_HL_ORDER_POST_ONLY_FAILED";
|
|
30
|
+
ErrorKey["ORDER_IOC_CANCELLED"] = "ERROR_HL_ORDER_IOC_CANCELLED";
|
|
31
|
+
ErrorKey["ORDER_MAX_ORDERS_EXCEEDED"] = "ERROR_HL_ORDER_MAX_ORDERS_EXCEEDED";
|
|
32
|
+
ErrorKey["ORDER_DUPLICATE_CLOID"] = "ERROR_HL_ORDER_DUPLICATE_CLOID";
|
|
33
|
+
ErrorKey["ORDER_INVALID_TIF"] = "ERROR_HL_ORDER_INVALID_TIF";
|
|
34
|
+
ErrorKey["ORDER_NO_LIQUIDITY"] = "ERROR_HL_ORDER_NO_LIQUIDITY";
|
|
35
|
+
ErrorKey["ORDER_NO_IMMEDIATE_MATCH"] = "ERROR_HL_ORDER_NO_IMMEDIATE_MATCH";
|
|
36
|
+
ErrorKey["ORDER_INSUFFICIENT_SPOT_BALANCE"] = "ERROR_HL_ORDER_INSUFFICIENT_SPOT_BALANCE";
|
|
37
|
+
// Hyperliquid SDK - Position/Margin
|
|
38
|
+
ErrorKey["POSITION_NOT_FOUND"] = "ERROR_HL_POSITION_NOT_FOUND";
|
|
39
|
+
ErrorKey["POSITION_EMPTY"] = "ERROR_HL_POSITION_EMPTY";
|
|
40
|
+
ErrorKey["MARGIN_UPDATE_ZERO"] = "ERROR_HL_MARGIN_UPDATE_ZERO";
|
|
41
|
+
ErrorKey["INSUFFICIENT_MARGIN"] = "ERROR_HL_INSUFFICIENT_MARGIN";
|
|
42
|
+
ErrorKey["LEVERAGE_TOO_HIGH"] = "ERROR_HL_LEVERAGE_TOO_HIGH";
|
|
43
|
+
ErrorKey["LEVERAGE_TOO_LOW"] = "ERROR_HL_LEVERAGE_TOO_LOW";
|
|
44
|
+
ErrorKey["INVALID_LEVERAGE"] = "ERROR_HL_INVALID_LEVERAGE";
|
|
45
|
+
ErrorKey["MARGIN_MODE_CHANGE_FAILED"] = "ERROR_HL_MARGIN_MODE_CHANGE_FAILED";
|
|
46
|
+
ErrorKey["NOT_ISOLATED_MARGIN"] = "ERROR_HL_NOT_ISOLATED_MARGIN";
|
|
47
|
+
ErrorKey["REDUCE_ONLY_FAILED"] = "ERROR_HL_REDUCE_ONLY_FAILED";
|
|
48
|
+
ErrorKey["POSITION_LIMIT_EXCEEDED"] = "ERROR_HL_POSITION_LIMIT_EXCEEDED";
|
|
49
|
+
ErrorKey["POSITION_EXCEEDS_MARGIN_TIER"] = "ERROR_HL_POSITION_EXCEEDS_MARGIN_TIER";
|
|
50
|
+
ErrorKey["OPEN_INTEREST_AT_CAP"] = "ERROR_HL_OPEN_INTEREST_AT_CAP";
|
|
51
|
+
ErrorKey["OPEN_INTEREST_INCREASE_TOO_FAST"] = "ERROR_HL_OPEN_INTEREST_INCREASE_TOO_FAST";
|
|
52
|
+
ErrorKey["PRICE_TOO_AGGRESSIVE_AT_OI_CAP"] = "ERROR_HL_PRICE_TOO_AGGRESSIVE_AT_OI_CAP";
|
|
53
|
+
// Hyperliquid SDK - Asset
|
|
54
|
+
ErrorKey["INVALID_ASSET"] = "ERROR_HL_INVALID_ASSET";
|
|
55
|
+
ErrorKey["ASSET_NOT_TRADEABLE"] = "ERROR_HL_ASSET_NOT_TRADEABLE";
|
|
56
|
+
ErrorKey["ASSET_DELISTED"] = "ERROR_HL_ASSET_DELISTED";
|
|
57
|
+
// Hyperliquid SDK - Transfer/Withdraw
|
|
58
|
+
ErrorKey["TRANSFER_FAILED"] = "ERROR_HL_TRANSFER_FAILED";
|
|
59
|
+
ErrorKey["WITHDRAW_FAILED"] = "ERROR_HL_WITHDRAW_FAILED";
|
|
60
|
+
ErrorKey["WITHDRAW_ZERO_AMOUNT"] = "ERROR_HL_WITHDRAW_ZERO_AMOUNT";
|
|
61
|
+
ErrorKey["WITHDRAW_TOO_SMALL"] = "ERROR_HL_WITHDRAW_TOO_SMALL";
|
|
62
|
+
ErrorKey["WITHDRAW_SMALLER_THAN_FEE"] = "ERROR_HL_WITHDRAW_SMALLER_THAN_FEE";
|
|
63
|
+
ErrorKey["WITHDRAW_TOO_LARGE"] = "ERROR_HL_WITHDRAW_TOO_LARGE";
|
|
64
|
+
ErrorKey["WITHDRAW_BRIDGE_ERROR"] = "ERROR_HL_WITHDRAW_BRIDGE_ERROR";
|
|
65
|
+
ErrorKey["INVALID_DESTINATION"] = "ERROR_HL_INVALID_DESTINATION";
|
|
66
|
+
ErrorKey["SAME_ADDRESS_TRANSFER"] = "ERROR_HL_SAME_ADDRESS_TRANSFER";
|
|
67
|
+
ErrorKey["DEPOSIT_REQUIRED"] = "ERROR_HL_DEPOSIT_REQUIRED";
|
|
68
|
+
// Hyperliquid SDK - Vault
|
|
69
|
+
ErrorKey["VAULT_NOT_FOUND"] = "ERROR_HL_VAULT_NOT_FOUND";
|
|
70
|
+
ErrorKey["VAULT_NOT_REGISTERED"] = "ERROR_HL_VAULT_NOT_REGISTERED";
|
|
71
|
+
ErrorKey["VAULT_INSUFFICIENT_EQUITY"] = "ERROR_HL_VAULT_INSUFFICIENT_EQUITY";
|
|
72
|
+
ErrorKey["VAULT_DEPOSIT_TOO_SMALL"] = "ERROR_HL_VAULT_DEPOSIT_TOO_SMALL";
|
|
73
|
+
ErrorKey["VAULT_DEPOSIT_FAILED"] = "ERROR_HL_VAULT_DEPOSIT_FAILED";
|
|
74
|
+
ErrorKey["VAULT_WITHDRAW_FAILED"] = "ERROR_HL_VAULT_WITHDRAW_FAILED";
|
|
75
|
+
ErrorKey["VAULT_LOCKED"] = "ERROR_HL_VAULT_LOCKED";
|
|
76
|
+
// Hyperliquid SDK - TWAP
|
|
77
|
+
ErrorKey["TWAP_NOT_FOUND"] = "ERROR_HL_TWAP_NOT_FOUND";
|
|
78
|
+
ErrorKey["TWAP_ALREADY_CANCELLED"] = "ERROR_HL_TWAP_ALREADY_CANCELLED";
|
|
79
|
+
ErrorKey["TWAP_ALREADY_COMPLETED"] = "ERROR_HL_TWAP_ALREADY_COMPLETED";
|
|
80
|
+
ErrorKey["TWAP_INVALID_DURATION"] = "ERROR_HL_TWAP_INVALID_DURATION";
|
|
81
|
+
ErrorKey["TWAP_SIZE_TOO_SMALL"] = "ERROR_HL_TWAP_SIZE_TOO_SMALL";
|
|
82
|
+
ErrorKey["TWAP_VALUE_TOO_SMALL"] = "ERROR_HL_TWAP_VALUE_TOO_SMALL";
|
|
83
|
+
ErrorKey["TWAP_REDUCE_ONLY_WOULD_INCREASE"] = "ERROR_HL_TWAP_REDUCE_ONLY_WOULD_INCREASE";
|
|
84
|
+
ErrorKey["TWAP_NOT_PLACED_OR_FULFILLED"] = "ERROR_HL_TWAP_NOT_PLACED_OR_FULFILLED";
|
|
85
|
+
// Hyperliquid SDK - Schedule Cancel
|
|
86
|
+
ErrorKey["SCHEDULE_CANCEL_INVALID_TIME"] = "ERROR_HL_SCHEDULE_CANCEL_INVALID_TIME";
|
|
87
|
+
ErrorKey["SCHEDULE_CANCEL_TOO_FAR"] = "ERROR_HL_SCHEDULE_CANCEL_TOO_FAR";
|
|
88
|
+
ErrorKey["SCHEDULE_CANCEL_INSUFFICIENT_VOLUME"] = "ERROR_HL_SCHEDULE_CANCEL_INSUFFICIENT_VOLUME";
|
|
89
|
+
// Hyperliquid SDK - Signature/Auth
|
|
90
|
+
ErrorKey["FAILED_TO_SIGN_TYPED_DATA"] = "ERROR_HL_FAILED_TO_SIGN_TYPED_DATA";
|
|
91
|
+
ErrorKey["SIGNATURE_NETWORK_MISMATCH"] = "ERROR_HL_SIGNATURE_NETWORK_MISMATCH";
|
|
92
|
+
ErrorKey["INVALID_NONCE_DUPLICATE"] = "ERROR_HL_INVALID_NONCE_DUPLICATE";
|
|
93
|
+
// Hyperliquid SDK - Price
|
|
94
|
+
ErrorKey["PRICE_BAND_EXCEEDED"] = "ERROR_HL_PRICE_BAND_EXCEEDED";
|
|
95
|
+
// Hyperliquid SDK - Spot/Token
|
|
96
|
+
ErrorKey["INVALID_TOKEN"] = "ERROR_HL_INVALID_TOKEN";
|
|
97
|
+
ErrorKey["SPOT_DUSTING_ERROR"] = "ERROR_HL_SPOT_DUSTING_ERROR";
|
|
98
|
+
// Hyperliquid SDK - Validation
|
|
99
|
+
ErrorKey["INVALID_PARAMETER"] = "ERROR_HL_INVALID_PARAMETER";
|
|
100
|
+
ErrorKey["INVALID_DECIMALS"] = "ERROR_HL_INVALID_DECIMALS";
|
|
101
|
+
ErrorKey["INVALID_PERCENTAGE"] = "ERROR_HL_INVALID_PERCENTAGE";
|
|
102
|
+
// Hyperliquid SDK - Cancel/Modify
|
|
103
|
+
ErrorKey["CANCEL_NOT_ALLOWED"] = "ERROR_HL_CANCEL_NOT_ALLOWED";
|
|
104
|
+
ErrorKey["MODIFY_NOT_ALLOWED"] = "ERROR_HL_MODIFY_NOT_ALLOWED";
|
|
105
|
+
// Hyperliquid SDK - Builder/Fee
|
|
106
|
+
ErrorKey["BUILDER_FEE_ERROR"] = "ERROR_HL_BUILDER_FEE_ERROR";
|
|
107
|
+
})(ErrorKey || (ErrorKey = {}));
|
|
108
|
+
//# sourceMappingURL=localization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localization.js","sourceRoot":"","sources":["../../src/utils/localization.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,QAuHX;AAvHD,WAAY,QAAQ;IAClB,qCAAyB,CAAA;IACzB,iDAAqC,CAAA;IACrC,6CAAiC,CAAA;IAEjC,gCAAgC;IAChC,sDAA0C,CAAA;IAC1C,8DAAkD,CAAA;IAClD,sEAA0D,CAAA;IAC1D,0EAA8D,CAAA;IAC9D,8DAAkD,CAAA;IAClD,kEAAsD,CAAA;IACtD,kEAAsD,CAAA;IACtD,kFAAsE,CAAA;IAEtE,0BAA0B;IAC1B,0FAA8E,CAAA;IAC9E,gEAAoD,CAAA;IACpD,4FAAgF,CAAA;IAChF,kEAAsD,CAAA;IACtD,kEAAsD,CAAA;IACtD,oEAAwD,CAAA;IACxD,gEAAoD,CAAA;IACpD,8DAAkD,CAAA;IAClD,wDAA4C,CAAA;IAC5C,oEAAwD,CAAA;IACxD,sEAA0D,CAAA;IAC1D,gFAAoE,CAAA;IACpE,wFAA4E,CAAA;IAC5E,sEAA0D,CAAA;IAC1D,gEAAoD,CAAA;IACpD,4EAAgE,CAAA;IAChE,oEAAwD,CAAA;IACxD,4DAAgD,CAAA;IAChD,8DAAkD,CAAA;IAClD,0EAA8D,CAAA;IAC9D,wFAA4E,CAAA;IAE5E,oCAAoC;IACpC,8DAAkD,CAAA;IAClD,sDAA0C,CAAA;IAC1C,8DAAkD,CAAA;IAClD,gEAAoD,CAAA;IACpD,4DAAgD,CAAA;IAChD,0DAA8C,CAAA;IAC9C,0DAA8C,CAAA;IAC9C,4EAAgE,CAAA;IAChE,gEAAoD,CAAA;IACpD,8DAAkD,CAAA;IAClD,wEAA4D,CAAA;IAC5D,kFAAsE,CAAA;IACtE,kEAAsD,CAAA;IACtD,wFAA4E,CAAA;IAC5E,sFAA0E,CAAA;IAE1E,0BAA0B;IAC1B,oDAAwC,CAAA;IACxC,gEAAoD,CAAA;IACpD,sDAA0C,CAAA;IAE1C,sCAAsC;IACtC,wDAA4C,CAAA;IAC5C,wDAA4C,CAAA;IAC5C,kEAAsD,CAAA;IACtD,8DAAkD,CAAA;IAClD,4EAAgE,CAAA;IAChE,8DAAkD,CAAA;IAClD,oEAAwD,CAAA;IACxD,gEAAoD,CAAA;IACpD,oEAAwD,CAAA;IACxD,0DAA8C,CAAA;IAE9C,0BAA0B;IAC1B,wDAA4C,CAAA;IAC5C,kEAAsD,CAAA;IACtD,4EAAgE,CAAA;IAChE,wEAA4D,CAAA;IAC5D,kEAAsD,CAAA;IACtD,oEAAwD,CAAA;IACxD,kDAAsC,CAAA;IAEtC,yBAAyB;IACzB,sDAA0C,CAAA;IAC1C,sEAA0D,CAAA;IAC1D,sEAA0D,CAAA;IAC1D,oEAAwD,CAAA;IACxD,gEAAoD,CAAA;IACpD,kEAAsD,CAAA;IACtD,wFAA4E,CAAA;IAC5E,kFAAsE,CAAA;IAEtE,oCAAoC;IACpC,kFAAsE,CAAA;IACtE,wEAA4D,CAAA;IAC5D,gGAAoF,CAAA;IAEpF,mCAAmC;IACnC,4EAAgE,CAAA;IAChE,8EAAkE,CAAA;IAClE,wEAA4D,CAAA;IAE5D,0BAA0B;IAC1B,gEAAoD,CAAA;IAEpD,+BAA+B;IAC/B,oDAAwC,CAAA;IACxC,8DAAkD,CAAA;IAElD,+BAA+B;IAC/B,4DAAgD,CAAA;IAChD,0DAA8C,CAAA;IAC9C,8DAAkD,CAAA;IAElD,kCAAkC;IAClC,8DAAkD,CAAA;IAClD,8DAAkD,CAAA;IAElD,gCAAgC;IAChC,4DAAgD,CAAA;AAClD,CAAC,EAvHW,QAAQ,KAAR,QAAQ,QAuHnB"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { SubscriptionType, SubscriptionParams, WebSocketManagerConfig } from "./types";
|
|
2
|
+
export declare class WebSocketManager {
|
|
3
|
+
private subscriptions;
|
|
4
|
+
private throttleTimers;
|
|
5
|
+
private pendingUpdates;
|
|
6
|
+
private reconnectAttempts;
|
|
7
|
+
private reconnectTimer;
|
|
8
|
+
private connectionListeners;
|
|
9
|
+
private isPaused;
|
|
10
|
+
private pausedSubscriptions;
|
|
11
|
+
private wsTransport;
|
|
12
|
+
private subscriptionClient;
|
|
13
|
+
private readonly throttleConfigs;
|
|
14
|
+
private readonly reconnectConfig;
|
|
15
|
+
private readonly network;
|
|
16
|
+
constructor(config?: WebSocketManagerConfig);
|
|
17
|
+
private getWebSocketTransport;
|
|
18
|
+
private getSubscriptionClient;
|
|
19
|
+
pause(): void;
|
|
20
|
+
resume(): Promise<void>;
|
|
21
|
+
private getSubscriptionKey;
|
|
22
|
+
subscribe<T>(type: SubscriptionType, listener: (data: T) => void, params?: SubscriptionParams): Promise<() => void>;
|
|
23
|
+
private startSubscription;
|
|
24
|
+
private createThrottledHandler;
|
|
25
|
+
private dispatchUpdates;
|
|
26
|
+
private unsubscribe;
|
|
27
|
+
private cleanupSubscription;
|
|
28
|
+
private scheduleReconnect;
|
|
29
|
+
onConnectionChange(listener: (connected: boolean) => void): () => void;
|
|
30
|
+
private notifyConnectionListeners;
|
|
31
|
+
cleanup(): void;
|
|
32
|
+
getStats(): {
|
|
33
|
+
subscriptions: number;
|
|
34
|
+
listeners: number;
|
|
35
|
+
isPaused: boolean;
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
export declare function getWebSocketManager(config?: WebSocketManagerConfig): WebSocketManager;
|
|
39
|
+
export declare function resetWebSocketManager(): void;
|
|
40
|
+
export declare function createWebSocketManager(config?: WebSocketManagerConfig): WebSocketManager;
|
|
41
|
+
//# sourceMappingURL=WebSocketManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebSocketManager.d.ts","sourceRoot":"","sources":["../../src/websocket/WebSocketManager.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,gBAAgB,EAChB,kBAAkB,EAIlB,sBAAsB,EAEvB,MAAM,SAAS,CAAC;AAgBjB,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,aAAa,CAAwC;IAC7D,OAAO,CAAC,cAAc,CAAoD;IAC1E,OAAO,CAAC,cAAc,CAAgC;IACtD,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,mBAAmB,CAA2C;IACtE,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,mBAAmB,CAGvB;IAEJ,OAAO,CAAC,WAAW,CAAmC;IACtD,OAAO,CAAC,kBAAkB,CAAmC;IAE7D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA2C;IAC3E,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;gBAEjC,MAAM,CAAC,EAAE,sBAAsB;IAY3C,OAAO,CAAC,qBAAqB;IAU7B,OAAO,CAAC,qBAAqB;IAS7B,KAAK,IAAI,IAAI;IAyBP,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAa7B,OAAO,CAAC,kBAAkB;IAUpB,SAAS,CAAC,CAAC,EACf,IAAI,EAAE,gBAAgB,EACtB,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,EAC3B,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,MAAM,IAAI,CAAC;YA6BR,iBAAiB;IA4D/B,OAAO,CAAC,sBAAsB;IAuB9B,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,mBAAmB;IAoB3B,OAAO,CAAC,iBAAiB;IAuBzB,kBAAkB,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI;IAKtE,OAAO,CAAC,yBAAyB;IAQjC,OAAO,IAAI,IAAI;IAsBf,QAAQ,IAAI;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE;CAW5E;AAID,wBAAgB,mBAAmB,CACjC,MAAM,CAAC,EAAE,sBAAsB,GAC9B,gBAAgB,CAKlB;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAK5C;AAED,wBAAgB,sBAAsB,CACpC,MAAM,CAAC,EAAE,sBAAsB,GAC9B,gBAAgB,CAElB"}
|