@lifi/perps-sdk-provider-hyperliquid 10.1.4 → 10.2.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/cjs/types/asset.d.ts +4 -0
- package/dist/cjs/types/asset.d.ts.map +1 -1
- package/dist/cjs/utils/mapMarket.d.ts +2 -2
- package/dist/cjs/utils/mapMarket.d.ts.map +1 -1
- package/dist/cjs/utils/mapMarket.js +23 -1
- package/dist/cjs/utils/mapMarket.js.map +1 -1
- package/dist/esm/types/asset.d.ts +9 -0
- package/dist/esm/types/asset.d.ts.map +1 -1
- package/dist/esm/utils/mapMarket.d.ts +6 -7
- package/dist/esm/utils/mapMarket.d.ts.map +1 -1
- package/dist/esm/utils/mapMarket.js +25 -6
- package/dist/esm/utils/mapMarket.js.map +1 -1
- package/dist/types/types/asset.d.ts +9 -0
- package/dist/types/types/asset.d.ts.map +1 -1
- package/dist/types/utils/mapMarket.d.ts +6 -7
- package/dist/types/utils/mapMarket.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/types/asset.ts +9 -0
- package/src/utils/mapMarket.ts +36 -7
|
@@ -6,6 +6,10 @@ export type HlUniverseItem = {
|
|
|
6
6
|
marginMode?: 'strictIsolated' | 'noCross';
|
|
7
7
|
isDelisted?: boolean;
|
|
8
8
|
};
|
|
9
|
+
export type HlMaxMarketOrderNtls = Array<[
|
|
10
|
+
minMaxLeverage: number,
|
|
11
|
+
maxMarketOrderUsd: string
|
|
12
|
+
]>;
|
|
9
13
|
export type HlMeta = {
|
|
10
14
|
universe: HlUniverseItem[];
|
|
11
15
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asset.d.ts","sourceRoot":"","sources":["../../../src/types/asset.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,OAAO,CAAA;IAEtB,UAAU,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAA;IACzC,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,CAAA;AAMD,MAAM,MAAM,MAAM,GAAG;IACnB,QAAQ,EAAE,cAAc,EAAE,CAAA;CAC3B,CAAA;AAQD,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAOD,MAAM,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAA;AAGvD,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;AAO3C,MAAM,MAAM,QAAQ,GAAG;IACrB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV,CAAA;AAGD,MAAM,MAAM,gBAAgB,GAAG,QAAQ,EAAE,CAAA;AAQzC,MAAM,MAAM,OAAO,GAAG;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,EAAE,EAAE,MAAM,CAAA;IACV,CAAC,EAAE,MAAM,CAAA;CACV,CAAA;AAOD,MAAM,MAAM,QAAQ,GAAG;IACrB,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;IAC9B,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAOD,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EAAE,CAAA;AAOpD,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAOD,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,OAAO,CAAA;CACrB,CAAA;AAGD,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,QAAQ,EAAE,mBAAmB,EAAE,CAAA;CAChC,CAAA;AAOD,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB,CAAA;AAGD,MAAM,MAAM,sBAAsB,GAAG,CAAC,UAAU,EAAE,cAAc,EAAE,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"asset.d.ts","sourceRoot":"","sources":["../../../src/types/asset.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,OAAO,CAAA;IAEtB,UAAU,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAA;IACzC,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,CAAA;AAOD,MAAM,MAAM,oBAAoB,GAAG,KAAK,CACtC;IAAC,cAAc,EAAE,MAAM;IAAE,iBAAiB,EAAE,MAAM;CAAC,CACpD,CAAA;AAMD,MAAM,MAAM,MAAM,GAAG;IACnB,QAAQ,EAAE,cAAc,EAAE,CAAA;CAC3B,CAAA;AAQD,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAOD,MAAM,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAA;AAGvD,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;AAO3C,MAAM,MAAM,QAAQ,GAAG;IACrB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV,CAAA;AAGD,MAAM,MAAM,gBAAgB,GAAG,QAAQ,EAAE,CAAA;AAQzC,MAAM,MAAM,OAAO,GAAG;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,EAAE,EAAE,MAAM,CAAA;IACV,CAAC,EAAE,MAAM,CAAA;CACV,CAAA;AAOD,MAAM,MAAM,QAAQ,GAAG;IACrB,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;IAC9B,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAOD,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EAAE,CAAA;AAOpD,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAOD,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,OAAO,CAAA;CACrB,CAAA;AAGD,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,QAAQ,EAAE,mBAAmB,EAAE,CAAA;CAChC,CAAA;AAOD,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB,CAAA;AAGD,MAAM,MAAM,sBAAsB,GAAG,CAAC,UAAU,EAAE,cAAc,EAAE,CAAC,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { PerpsMarket } from '@lifi/perps-types';
|
|
2
|
-
import type { HlUniverseItem } from '../types/index.js';
|
|
3
|
-
export declare const mapMarket: (universe: HlUniverseItem, categoryId: string) => PerpsMarket;
|
|
2
|
+
import type { HlMaxMarketOrderNtls, HlUniverseItem } from '../types/index.js';
|
|
3
|
+
export declare const mapMarket: (universe: HlUniverseItem, categoryId: string, maxMarketOrderNtls?: HlMaxMarketOrderNtls) => PerpsMarket;
|
|
4
4
|
//# sourceMappingURL=mapMarket.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapMarket.d.ts","sourceRoot":"","sources":["../../../src/utils/mapMarket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"mapMarket.d.ts","sourceRoot":"","sources":["../../../src/utils/mapMarket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAIpD,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AA0C7E,eAAO,MAAM,SAAS,GACpB,UAAU,cAAc,EACxB,YAAY,MAAM,EAClB,qBAAqB,oBAAoB,KACxC,WAuBD,CAAA"}
|
|
@@ -1,13 +1,34 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.mapMarket = void 0;
|
|
4
7
|
const perps_types_1 = require("@lifi/perps-types");
|
|
8
|
+
const big_js_1 = __importDefault(require("big.js"));
|
|
5
9
|
const constants_js_1 = require("../constants.js");
|
|
6
10
|
const liquidation_js_1 = require("./liquidation.js");
|
|
7
11
|
const marketDisplay_js_1 = require("./marketDisplay.js");
|
|
8
12
|
const orderFormatting_js_1 = require("./orderFormatting.js");
|
|
9
13
|
const QUOTE_SYMBOL = 'USDC';
|
|
10
|
-
const
|
|
14
|
+
const LIMIT_ORDER_VALUE_MULTIPLIER = 10;
|
|
15
|
+
const mapMarketOrderLimits = (maxLeverage, tiers) => {
|
|
16
|
+
const selected = tiers
|
|
17
|
+
?.slice()
|
|
18
|
+
.sort(([a], [b]) => b - a)
|
|
19
|
+
.find(([minMaxLeverage]) => minMaxLeverage <= maxLeverage);
|
|
20
|
+
if (selected === undefined) {
|
|
21
|
+
return {};
|
|
22
|
+
}
|
|
23
|
+
const maxMarketOrderUsd = new big_js_1.default(selected[1]);
|
|
24
|
+
return {
|
|
25
|
+
maxMarketOrderUsd: maxMarketOrderUsd.toFixed(),
|
|
26
|
+
maxLimitOrderUsd: maxMarketOrderUsd
|
|
27
|
+
.times(LIMIT_ORDER_VALUE_MULTIPLIER)
|
|
28
|
+
.toFixed(),
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
const mapMarket = (universe, categoryId, maxMarketOrderNtls) => ({
|
|
11
32
|
providerId: constants_js_1.PROVIDER_KEY,
|
|
12
33
|
id: universe.name,
|
|
13
34
|
...(universe.isDelisted === undefined
|
|
@@ -19,6 +40,7 @@ const mapMarket = (universe, categoryId) => ({
|
|
|
19
40
|
szDecimals: universe.szDecimals,
|
|
20
41
|
priceDecimals: (0, orderFormatting_js_1.getMaxPriceDecimals)(universe.szDecimals),
|
|
21
42
|
maxLeverage: universe.maxLeverage,
|
|
43
|
+
...mapMarketOrderLimits(universe.maxLeverage, maxMarketOrderNtls),
|
|
22
44
|
onlyIsolated: universe.marginMode !== undefined || universe.onlyIsolated === true,
|
|
23
45
|
positionMarginAdjustment: universe.marginMode === 'noCross' ||
|
|
24
46
|
(universe.marginMode === undefined && universe.onlyIsolated !== true)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapMarket.js","sourceRoot":"","sources":["../../../src/utils/mapMarket.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mapMarket.js","sourceRoot":"","sources":["../../../src/utils/mapMarket.ts"],"names":[],"mappings":";;;;;;AACA,mDAA4D;AAC5D,oDAAwB;AACxB,kDAA8C;AAE9C,qDAAiE;AACjE,yDAA8C;AAC9C,6DAA0D;AAG1D,MAAM,YAAY,GAAG,MAAM,CAAA;AAE3B,MAAM,4BAA4B,GAAG,EAAE,CAAA;AAOvC,MAAM,oBAAoB,GAAG,CAC3B,WAAmB,EACnB,KAA4B,EACT,EAAE;IACrB,MAAM,QAAQ,GAAG,KAAK;QACpB,EAAE,KAAK,EAAE;SACR,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;SACzB,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,cAAc,IAAI,WAAW,CAAC,CAAA;IAC5D,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,EAAE,CAAA;IACX,CAAC;IACD,MAAM,iBAAiB,GAAG,IAAI,gBAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;IAC9C,OAAO;QACL,iBAAiB,EAAE,iBAAiB,CAAC,OAAO,EAAE;QAC9C,gBAAgB,EAAE,iBAAiB;aAChC,KAAK,CAAC,4BAA4B,CAAC;aACnC,OAAO,EAAE;KACb,CAAA;AACH,CAAC,CAAA;AASM,MAAM,SAAS,GAAG,CACvB,QAAwB,EACxB,UAAkB,EAClB,kBAAyC,EAC5B,EAAE,CAAC,CAAC;IACjB,UAAU,EAAE,2BAAY;IACxB,EAAE,EAAE,QAAQ,CAAC,IAAI;IACjB,GAAG,CAAC,QAAQ,CAAC,UAAU,KAAK,SAAS;QACnC,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC;IACxC,UAAU;IACV,SAAS,EAAE,IAAA,4BAAS,EAAC,QAAQ,CAAC,IAAI,CAAC;IACnC,UAAU,EAAE,IAAA,4BAAS,EAAC,YAAY,CAAC;IACnC,UAAU,EAAE,QAAQ,CAAC,UAAU;IAC/B,aAAa,EAAE,IAAA,wCAAmB,EAAC,QAAQ,CAAC,UAAU,CAAC;IACvD,WAAW,EAAE,QAAQ,CAAC,WAAW;IACjC,GAAG,oBAAoB,CAAC,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;IACjE,YAAY,EACV,QAAQ,CAAC,UAAU,KAAK,SAAS,IAAI,QAAQ,CAAC,YAAY,KAAK,IAAI;IAGrE,wBAAwB,EACtB,QAAQ,CAAC,UAAU,KAAK,SAAS;QACjC,CAAC,QAAQ,CAAC,UAAU,KAAK,SAAS,IAAI,QAAQ,CAAC,YAAY,KAAK,IAAI,CAAC;QACnE,CAAC,CAAC,sCAAwB,CAAC,cAAc;QACzC,CAAC,CAAC,sCAAwB,CAAC,QAAQ;IACvC,qBAAqB,EAAE,IAAA,+CAA8B,EAAC,QAAQ,CAAC,WAAW,CAAC;CAC5E,CAAC,CAAA;AA3BW,QAAA,SAAS,aA2BpB"}
|
|
@@ -12,6 +12,15 @@ export type HlUniverseItem = {
|
|
|
12
12
|
marginMode?: 'strictIsolated' | 'noCross';
|
|
13
13
|
isDelisted?: boolean;
|
|
14
14
|
};
|
|
15
|
+
/**
|
|
16
|
+
* Descending leverage thresholds and USD market-order caps from the
|
|
17
|
+
* `maxMarketOrderNtls` info query.
|
|
18
|
+
* @public
|
|
19
|
+
*/
|
|
20
|
+
export type HlMaxMarketOrderNtls = Array<[
|
|
21
|
+
minMaxLeverage: number,
|
|
22
|
+
maxMarketOrderUsd: string
|
|
23
|
+
]>;
|
|
15
24
|
/**
|
|
16
25
|
* Perpetual metadata envelope returned by the Hyperliquid `meta` info query.
|
|
17
26
|
* @public
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asset.d.ts","sourceRoot":"","sources":["../../../src/types/asset.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,yDAAyD;IACzD,UAAU,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAA;IACzC,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG;IACnB,QAAQ,EAAE,cAAc,EAAE,CAAA;CAC3B,CAAA;AAED;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAA;AAEvD,wEAAwE;AACxE,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;AAE3C;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV,CAAA;AAED,uFAAuF;AACvF,MAAM,MAAM,gBAAgB,GAAG,QAAQ,EAAE,CAAA;AAEzC;;;;;GAKG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,EAAE,EAAE,MAAM,CAAA;IACV,CAAC,EAAE,MAAM,CAAA;CACV,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;IAC9B,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EAAE,CAAA;AAEpD;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,OAAO,CAAA;CACrB,CAAA;AAED,qFAAqF;AACrF,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,QAAQ,EAAE,mBAAmB,EAAE,CAAA;CAChC,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB,CAAA;AAED,sEAAsE;AACtE,MAAM,MAAM,sBAAsB,GAAG,CAAC,UAAU,EAAE,cAAc,EAAE,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"asset.d.ts","sourceRoot":"","sources":["../../../src/types/asset.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,yDAAyD;IACzD,UAAU,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAA;IACzC,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,KAAK,CACtC;IAAC,cAAc,EAAE,MAAM;IAAE,iBAAiB,EAAE,MAAM;CAAC,CACpD,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG;IACnB,QAAQ,EAAE,cAAc,EAAE,CAAA;CAC3B,CAAA;AAED;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAA;AAEvD,wEAAwE;AACxE,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;AAE3C;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV,CAAA;AAED,uFAAuF;AACvF,MAAM,MAAM,gBAAgB,GAAG,QAAQ,EAAE,CAAA;AAEzC;;;;;GAKG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,EAAE,EAAE,MAAM,CAAA;IACV,CAAC,EAAE,MAAM,CAAA;CACV,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;IAC9B,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EAAE,CAAA;AAEpD;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,OAAO,CAAA;CACrB,CAAA;AAED,qFAAqF;AACrF,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,QAAQ,EAAE,mBAAmB,EAAE,CAAA;CAChC,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB,CAAA;AAED,sEAAsE;AACtE,MAAM,MAAM,sBAAsB,GAAG,CAAC,UAAU,EAAE,cAAc,EAAE,CAAC,CAAA"}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import type { PerpsMarket } from '@lifi/perps-types';
|
|
2
|
-
import type { HlUniverseItem } from '../types/index.js';
|
|
2
|
+
import type { HlMaxMarketOrderNtls, HlUniverseItem } from '../types/index.js';
|
|
3
3
|
/**
|
|
4
|
-
* Map
|
|
5
|
-
*
|
|
6
|
-
* {@link
|
|
7
|
-
*
|
|
8
|
-
* re-derived from the coin string.
|
|
4
|
+
* Map Hyperliquid universe metadata and optional `maxMarketOrderNtls` tiers to
|
|
5
|
+
* a {@link PerpsMarket}. Missing tiers leave both order caps unset. Live stats
|
|
6
|
+
* stay on {@link MarketContext}; callers supply the provider category id
|
|
7
|
+
* because the coin string does not contain it.
|
|
9
8
|
* @public
|
|
10
9
|
*/
|
|
11
|
-
export declare const mapMarket: (universe: HlUniverseItem, categoryId: string) => PerpsMarket;
|
|
10
|
+
export declare const mapMarket: (universe: HlUniverseItem, categoryId: string, maxMarketOrderNtls?: HlMaxMarketOrderNtls) => PerpsMarket;
|
|
12
11
|
//# sourceMappingURL=mapMarket.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapMarket.d.ts","sourceRoot":"","sources":["../../../src/utils/mapMarket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"mapMarket.d.ts","sourceRoot":"","sources":["../../../src/utils/mapMarket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAIpD,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAmC7E;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,GACpB,UAAU,cAAc,EACxB,YAAY,MAAM,EAClB,qBAAqB,oBAAoB,KACxC,WAuBD,CAAA"}
|
|
@@ -1,19 +1,37 @@
|
|
|
1
1
|
import { PositionMarginAdjustment } from '@lifi/perps-types';
|
|
2
|
+
import Big from 'big.js';
|
|
2
3
|
import { PROVIDER_KEY } from '../constants.js';
|
|
3
4
|
import { calculateMaintenanceMarginRate } from './liquidation.js';
|
|
4
5
|
import { coinAsset } from './marketDisplay.js';
|
|
5
6
|
import { getMaxPriceDecimals } from './orderFormatting.js';
|
|
6
7
|
/** Hyperliquid quotes every perp market in USDC. */
|
|
7
8
|
const QUOTE_SYMBOL = 'USDC';
|
|
9
|
+
/** Hyperliquid documents the limit-order notional cap as 10x the market-order cap. */
|
|
10
|
+
const LIMIT_ORDER_VALUE_MULTIPLIER = 10;
|
|
11
|
+
const mapMarketOrderLimits = (maxLeverage, tiers) => {
|
|
12
|
+
const selected = tiers
|
|
13
|
+
?.slice()
|
|
14
|
+
.sort(([a], [b]) => b - a)
|
|
15
|
+
.find(([minMaxLeverage]) => minMaxLeverage <= maxLeverage);
|
|
16
|
+
if (selected === undefined) {
|
|
17
|
+
return {};
|
|
18
|
+
}
|
|
19
|
+
const maxMarketOrderUsd = new Big(selected[1]);
|
|
20
|
+
return {
|
|
21
|
+
maxMarketOrderUsd: maxMarketOrderUsd.toFixed(),
|
|
22
|
+
maxLimitOrderUsd: maxMarketOrderUsd
|
|
23
|
+
.times(LIMIT_ORDER_VALUE_MULTIPLIER)
|
|
24
|
+
.toFixed(),
|
|
25
|
+
};
|
|
26
|
+
};
|
|
8
27
|
/**
|
|
9
|
-
* Map
|
|
10
|
-
*
|
|
11
|
-
* {@link
|
|
12
|
-
*
|
|
13
|
-
* re-derived from the coin string.
|
|
28
|
+
* Map Hyperliquid universe metadata and optional `maxMarketOrderNtls` tiers to
|
|
29
|
+
* a {@link PerpsMarket}. Missing tiers leave both order caps unset. Live stats
|
|
30
|
+
* stay on {@link MarketContext}; callers supply the provider category id
|
|
31
|
+
* because the coin string does not contain it.
|
|
14
32
|
* @public
|
|
15
33
|
*/
|
|
16
|
-
export const mapMarket = (universe, categoryId) => ({
|
|
34
|
+
export const mapMarket = (universe, categoryId, maxMarketOrderNtls) => ({
|
|
17
35
|
providerId: PROVIDER_KEY,
|
|
18
36
|
id: universe.name,
|
|
19
37
|
...(universe.isDelisted === undefined
|
|
@@ -25,6 +43,7 @@ export const mapMarket = (universe, categoryId) => ({
|
|
|
25
43
|
szDecimals: universe.szDecimals,
|
|
26
44
|
priceDecimals: getMaxPriceDecimals(universe.szDecimals),
|
|
27
45
|
maxLeverage: universe.maxLeverage,
|
|
46
|
+
...mapMarketOrderLimits(universe.maxLeverage, maxMarketOrderNtls),
|
|
28
47
|
onlyIsolated: universe.marginMode !== undefined || universe.onlyIsolated === true,
|
|
29
48
|
// Deprecated `onlyIsolated` cannot distinguish strict-isolated from
|
|
30
49
|
// no-cross, so the ambiguous legacy shape fails closed as add-only.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapMarket.js","sourceRoot":"","sources":["../../../src/utils/mapMarket.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE9C,OAAO,EAAE,8BAA8B,EAAE,MAAM,kBAAkB,CAAA;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAE1D,oDAAoD;AACpD,MAAM,YAAY,GAAG,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"mapMarket.js","sourceRoot":"","sources":["../../../src/utils/mapMarket.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,GAAG,MAAM,QAAQ,CAAA;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE9C,OAAO,EAAE,8BAA8B,EAAE,MAAM,kBAAkB,CAAA;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAE1D,oDAAoD;AACpD,MAAM,YAAY,GAAG,MAAM,CAAA;AAC3B,sFAAsF;AACtF,MAAM,4BAA4B,GAAG,EAAE,CAAA;AAOvC,MAAM,oBAAoB,GAAG,CAC3B,WAAmB,EACnB,KAA4B,EACT,EAAE;IACrB,MAAM,QAAQ,GAAG,KAAK;QACpB,EAAE,KAAK,EAAE;SACR,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;SACzB,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,cAAc,IAAI,WAAW,CAAC,CAAA;IAC5D,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,EAAE,CAAA;IACX,CAAC;IACD,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;IAC9C,OAAO;QACL,iBAAiB,EAAE,iBAAiB,CAAC,OAAO,EAAE;QAC9C,gBAAgB,EAAE,iBAAiB;aAChC,KAAK,CAAC,4BAA4B,CAAC;aACnC,OAAO,EAAE;KACb,CAAA;AACH,CAAC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,QAAwB,EACxB,UAAkB,EAClB,kBAAyC,EAC5B,EAAE,CAAC,CAAC;IACjB,UAAU,EAAE,YAAY;IACxB,EAAE,EAAE,QAAQ,CAAC,IAAI;IACjB,GAAG,CAAC,QAAQ,CAAC,UAAU,KAAK,SAAS;QACnC,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC;IACxC,UAAU;IACV,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;IACnC,UAAU,EAAE,SAAS,CAAC,YAAY,CAAC;IACnC,UAAU,EAAE,QAAQ,CAAC,UAAU;IAC/B,aAAa,EAAE,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC;IACvD,WAAW,EAAE,QAAQ,CAAC,WAAW;IACjC,GAAG,oBAAoB,CAAC,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;IACjE,YAAY,EACV,QAAQ,CAAC,UAAU,KAAK,SAAS,IAAI,QAAQ,CAAC,YAAY,KAAK,IAAI;IACrE,oEAAoE;IACpE,oEAAoE;IACpE,wBAAwB,EACtB,QAAQ,CAAC,UAAU,KAAK,SAAS;QACjC,CAAC,QAAQ,CAAC,UAAU,KAAK,SAAS,IAAI,QAAQ,CAAC,YAAY,KAAK,IAAI,CAAC;QACnE,CAAC,CAAC,wBAAwB,CAAC,cAAc;QACzC,CAAC,CAAC,wBAAwB,CAAC,QAAQ;IACvC,qBAAqB,EAAE,8BAA8B,CAAC,QAAQ,CAAC,WAAW,CAAC;CAC5E,CAAC,CAAA"}
|
|
@@ -12,6 +12,15 @@ export type HlUniverseItem = {
|
|
|
12
12
|
marginMode?: 'strictIsolated' | 'noCross';
|
|
13
13
|
isDelisted?: boolean;
|
|
14
14
|
};
|
|
15
|
+
/**
|
|
16
|
+
* Descending leverage thresholds and USD market-order caps from the
|
|
17
|
+
* `maxMarketOrderNtls` info query.
|
|
18
|
+
* @public
|
|
19
|
+
*/
|
|
20
|
+
export type HlMaxMarketOrderNtls = Array<[
|
|
21
|
+
minMaxLeverage: number,
|
|
22
|
+
maxMarketOrderUsd: string
|
|
23
|
+
]>;
|
|
15
24
|
/**
|
|
16
25
|
* Perpetual metadata envelope returned by the Hyperliquid `meta` info query.
|
|
17
26
|
* @public
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asset.d.ts","sourceRoot":"","sources":["../../../src/types/asset.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,yDAAyD;IACzD,UAAU,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAA;IACzC,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG;IACnB,QAAQ,EAAE,cAAc,EAAE,CAAA;CAC3B,CAAA;AAED;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAA;AAEvD,wEAAwE;AACxE,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;AAE3C;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV,CAAA;AAED,uFAAuF;AACvF,MAAM,MAAM,gBAAgB,GAAG,QAAQ,EAAE,CAAA;AAEzC;;;;;GAKG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,EAAE,EAAE,MAAM,CAAA;IACV,CAAC,EAAE,MAAM,CAAA;CACV,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;IAC9B,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EAAE,CAAA;AAEpD;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,OAAO,CAAA;CACrB,CAAA;AAED,qFAAqF;AACrF,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,QAAQ,EAAE,mBAAmB,EAAE,CAAA;CAChC,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB,CAAA;AAED,sEAAsE;AACtE,MAAM,MAAM,sBAAsB,GAAG,CAAC,UAAU,EAAE,cAAc,EAAE,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"asset.d.ts","sourceRoot":"","sources":["../../../src/types/asset.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import type { PerpsMarket } from '@lifi/perps-types';
|
|
2
|
-
import type { HlUniverseItem } from '../types/index.js';
|
|
2
|
+
import type { HlMaxMarketOrderNtls, HlUniverseItem } from '../types/index.js';
|
|
3
3
|
/**
|
|
4
|
-
* Map
|
|
5
|
-
*
|
|
6
|
-
* {@link
|
|
7
|
-
*
|
|
8
|
-
* re-derived from the coin string.
|
|
4
|
+
* Map Hyperliquid universe metadata and optional `maxMarketOrderNtls` tiers to
|
|
5
|
+
* a {@link PerpsMarket}. Missing tiers leave both order caps unset. Live stats
|
|
6
|
+
* stay on {@link MarketContext}; callers supply the provider category id
|
|
7
|
+
* because the coin string does not contain it.
|
|
9
8
|
* @public
|
|
10
9
|
*/
|
|
11
|
-
export declare const mapMarket: (universe: HlUniverseItem, categoryId: string) => PerpsMarket;
|
|
10
|
+
export declare const mapMarket: (universe: HlUniverseItem, categoryId: string, maxMarketOrderNtls?: HlMaxMarketOrderNtls) => PerpsMarket;
|
|
12
11
|
//# sourceMappingURL=mapMarket.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapMarket.d.ts","sourceRoot":"","sources":["../../../src/utils/mapMarket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"mapMarket.d.ts","sourceRoot":"","sources":["../../../src/utils/mapMarket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAIpD,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAmC7E;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,GACpB,UAAU,cAAc,EACxB,YAAY,MAAM,EAClB,qBAAqB,oBAAoB,KACxC,WAuBD,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lifi/perps-sdk-provider-hyperliquid",
|
|
3
|
-
"version": "10.
|
|
3
|
+
"version": "10.2.0",
|
|
4
4
|
"description": "Hyperliquid provider plugin for @lifi/perps-sdk",
|
|
5
5
|
"homepage": "https://github.com/lifinance/perps-sdk",
|
|
6
6
|
"bugs": {
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"dependencies": {
|
|
50
50
|
"big.js": "^7.0.1",
|
|
51
51
|
"viem": "^2.55.18",
|
|
52
|
-
"@lifi/perps-types": "^11.
|
|
52
|
+
"@lifi/perps-types": "^11.5.0"
|
|
53
53
|
},
|
|
54
54
|
"peerDependencies": {
|
|
55
55
|
"@lifi/perps-sdk": "^10.2.0"
|
package/src/types/asset.ts
CHANGED
|
@@ -15,6 +15,15 @@ export type HlUniverseItem = {
|
|
|
15
15
|
isDelisted?: boolean
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Descending leverage thresholds and USD market-order caps from the
|
|
20
|
+
* `maxMarketOrderNtls` info query.
|
|
21
|
+
* @public
|
|
22
|
+
*/
|
|
23
|
+
export type HlMaxMarketOrderNtls = Array<
|
|
24
|
+
[minMaxLeverage: number, maxMarketOrderUsd: string]
|
|
25
|
+
>
|
|
26
|
+
|
|
18
27
|
/**
|
|
19
28
|
* Perpetual metadata envelope returned by the Hyperliquid `meta` info query.
|
|
20
29
|
* @public
|
package/src/utils/mapMarket.ts
CHANGED
|
@@ -1,25 +1,53 @@
|
|
|
1
1
|
import type { PerpsMarket } from '@lifi/perps-types'
|
|
2
2
|
import { PositionMarginAdjustment } from '@lifi/perps-types'
|
|
3
|
+
import Big from 'big.js'
|
|
3
4
|
import { PROVIDER_KEY } from '../constants.js'
|
|
4
|
-
import type { HlUniverseItem } from '../types/index.js'
|
|
5
|
+
import type { HlMaxMarketOrderNtls, HlUniverseItem } from '../types/index.js'
|
|
5
6
|
import { calculateMaintenanceMarginRate } from './liquidation.js'
|
|
6
7
|
import { coinAsset } from './marketDisplay.js'
|
|
7
8
|
import { getMaxPriceDecimals } from './orderFormatting.js'
|
|
8
9
|
|
|
9
10
|
/** Hyperliquid quotes every perp market in USDC. */
|
|
10
11
|
const QUOTE_SYMBOL = 'USDC'
|
|
12
|
+
/** Hyperliquid documents the limit-order notional cap as 10x the market-order cap. */
|
|
13
|
+
const LIMIT_ORDER_VALUE_MULTIPLIER = 10
|
|
14
|
+
|
|
15
|
+
type MarketOrderLimits = Pick<
|
|
16
|
+
PerpsMarket,
|
|
17
|
+
'maxMarketOrderUsd' | 'maxLimitOrderUsd'
|
|
18
|
+
>
|
|
19
|
+
|
|
20
|
+
const mapMarketOrderLimits = (
|
|
21
|
+
maxLeverage: number,
|
|
22
|
+
tiers?: HlMaxMarketOrderNtls
|
|
23
|
+
): MarketOrderLimits => {
|
|
24
|
+
const selected = tiers
|
|
25
|
+
?.slice()
|
|
26
|
+
.sort(([a], [b]) => b - a)
|
|
27
|
+
.find(([minMaxLeverage]) => minMaxLeverage <= maxLeverage)
|
|
28
|
+
if (selected === undefined) {
|
|
29
|
+
return {}
|
|
30
|
+
}
|
|
31
|
+
const maxMarketOrderUsd = new Big(selected[1])
|
|
32
|
+
return {
|
|
33
|
+
maxMarketOrderUsd: maxMarketOrderUsd.toFixed(),
|
|
34
|
+
maxLimitOrderUsd: maxMarketOrderUsd
|
|
35
|
+
.times(LIMIT_ORDER_VALUE_MULTIPLIER)
|
|
36
|
+
.toFixed(),
|
|
37
|
+
}
|
|
38
|
+
}
|
|
11
39
|
|
|
12
40
|
/**
|
|
13
|
-
* Map
|
|
14
|
-
*
|
|
15
|
-
* {@link
|
|
16
|
-
*
|
|
17
|
-
* re-derived from the coin string.
|
|
41
|
+
* Map Hyperliquid universe metadata and optional `maxMarketOrderNtls` tiers to
|
|
42
|
+
* a {@link PerpsMarket}. Missing tiers leave both order caps unset. Live stats
|
|
43
|
+
* stay on {@link MarketContext}; callers supply the provider category id
|
|
44
|
+
* because the coin string does not contain it.
|
|
18
45
|
* @public
|
|
19
46
|
*/
|
|
20
47
|
export const mapMarket = (
|
|
21
48
|
universe: HlUniverseItem,
|
|
22
|
-
categoryId: string
|
|
49
|
+
categoryId: string,
|
|
50
|
+
maxMarketOrderNtls?: HlMaxMarketOrderNtls
|
|
23
51
|
): PerpsMarket => ({
|
|
24
52
|
providerId: PROVIDER_KEY,
|
|
25
53
|
id: universe.name,
|
|
@@ -32,6 +60,7 @@ export const mapMarket = (
|
|
|
32
60
|
szDecimals: universe.szDecimals,
|
|
33
61
|
priceDecimals: getMaxPriceDecimals(universe.szDecimals),
|
|
34
62
|
maxLeverage: universe.maxLeverage,
|
|
63
|
+
...mapMarketOrderLimits(universe.maxLeverage, maxMarketOrderNtls),
|
|
35
64
|
onlyIsolated:
|
|
36
65
|
universe.marginMode !== undefined || universe.onlyIsolated === true,
|
|
37
66
|
// Deprecated `onlyIsolated` cannot distinguish strict-isolated from
|