@lifi/perps-sdk-provider-hyperliquid 23.0.0 → 25.0.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.
@@ -1 +1 @@
1
- {"version":3,"file":"orderFormatting.d.ts","sourceRoot":"","sources":["../../../src/utils/orderFormatting.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAsBtD,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAER;AAcD,wBAAgB,aAAa,CAC3B,IAAI,EAAE,aAAa,EACnB,UAAU,EAAE,MAAM,GACjB,aAAa,CAMf;AAqBD,wBAAgB,cAAc,CAC5B,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,GACd,aAAa,CAYf"}
1
+ {"version":3,"file":"orderFormatting.d.ts","sourceRoot":"","sources":["../../../src/utils/orderFormatting.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAsBtD,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAER;AAcD,wBAAgB,aAAa,CAC3B,IAAI,EAAE,aAAa,EACnB,UAAU,EAAE,MAAM,GACjB,aAAa,CAMf;AAqBD,wBAAgB,cAAc,CAC5B,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,GACd,aAAa,CAaf"}
@@ -20,11 +20,10 @@ function snapOrderSize(size, szDecimals) {
20
20
  return truncated.eq(0) ? '0' : truncated.toFixed();
21
21
  }
22
22
  function snapOrderPrice(price, szDecimals, market) {
23
- const maxPriceDecimals = getMaxPriceDecimals(szDecimals, market);
24
- let rounded = new big_js_1.default(price).round(maxPriceDecimals, big_js_1.default.roundHalfUp);
25
- if (!rounded.mod(1).eq(0)) {
26
- rounded = rounded.prec(5, big_js_1.default.roundHalfUp);
27
- }
23
+ const value = new big_js_1.default(price);
24
+ const sigFigDecimals = Math.max(0, 4 - value.e);
25
+ const decimals = Math.min(sigFigDecimals, getMaxPriceDecimals(szDecimals, market));
26
+ const rounded = value.round(decimals, big_js_1.default.roundHalfUp);
28
27
  return rounded.eq(0) ? '0' : rounded.toFixed();
29
28
  }
30
29
  //# sourceMappingURL=orderFormatting.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"orderFormatting.js","sourceRoot":"","sources":["../../../src/utils/orderFormatting.ts"],"names":[],"mappings":";;;;;AA+BA,kDAKC;AAcD,sCASC;AAqBD,wCAgBC;AAtFD,oDAAwB;AAMxB,MAAM,kBAAkB,GAAG,CAAC,CAAA;AAC5B,MAAM,iBAAiB,GAAG,CAAC,CAAA;AAE3B,SAAS,cAAc,CAAC,MAAe;IACrC,OAAO,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,kBAAkB,CAAA;AACnE,CAAC;AAUD,SAAgB,mBAAmB,CACjC,UAAkB,EAClB,MAAe;IAEf,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,CAAA;AACzD,CAAC;AAcD,SAAgB,aAAa,CAC3B,IAAmB,EACnB,UAAkB;IAIlB,MAAM,SAAS,GAAG,IAAI,gBAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,gBAAG,CAAC,SAAS,CAAC,CAAA;IAEhE,OAAO,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,CAAA;AACpD,CAAC;AAqBD,SAAgB,cAAc,CAC5B,KAAoB,EACpB,UAAkB,EAClB,MAAe;IAEf,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;IAEhE,IAAI,OAAO,GAAG,IAAI,gBAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,gBAAgB,EAAE,gBAAG,CAAC,WAAW,CAAC,CAAA;IAGrE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1B,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,gBAAG,CAAC,WAAW,CAAC,CAAA;IAC5C,CAAC;IAGD,OAAO,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAA;AAChD,CAAC"}
1
+ {"version":3,"file":"orderFormatting.js","sourceRoot":"","sources":["../../../src/utils/orderFormatting.ts"],"names":[],"mappings":";;;;;AA+BA,kDAKC;AAcD,sCASC;AAqBD,wCAiBC;AAvFD,oDAAwB;AAMxB,MAAM,kBAAkB,GAAG,CAAC,CAAA;AAC5B,MAAM,iBAAiB,GAAG,CAAC,CAAA;AAE3B,SAAS,cAAc,CAAC,MAAe;IACrC,OAAO,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,kBAAkB,CAAA;AACnE,CAAC;AAUD,SAAgB,mBAAmB,CACjC,UAAkB,EAClB,MAAe;IAEf,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,CAAA;AACzD,CAAC;AAcD,SAAgB,aAAa,CAC3B,IAAmB,EACnB,UAAkB;IAIlB,MAAM,SAAS,GAAG,IAAI,gBAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,gBAAG,CAAC,SAAS,CAAC,CAAA;IAEhE,OAAO,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,CAAA;AACpD,CAAC;AAqBD,SAAgB,cAAc,CAC5B,KAAoB,EACpB,UAAkB,EAClB,MAAe;IAEf,MAAM,KAAK,GAAG,IAAI,gBAAG,CAAC,KAAK,CAAC,CAAA;IAG5B,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CACvB,cAAc,EACd,mBAAmB,CAAC,UAAU,EAAE,MAAM,CAAC,CACxC,CAAA;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,gBAAG,CAAC,WAAW,CAAC,CAAA;IAGtD,OAAO,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAA;AAChD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"transferMargin.d.ts","sourceRoot":"","sources":["../../../src/utils/transferMargin.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,KAAK,aAAa,EAElB,KAAK,QAAQ,EACd,MAAM,mBAAmB,CAAA;AA2C1B,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,QAAQ,GACjB,aAAa,GAAG,SAAS,CAwB3B"}
1
+ {"version":3,"file":"transferMargin.d.ts","sourceRoot":"","sources":["../../../src/utils/transferMargin.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,KAAK,aAAa,EAElB,KAAK,QAAQ,EACd,MAAM,mBAAmB,CAAA;AAoC1B,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,QAAQ,GACjB,aAAa,GAAG,SAAS,CAwB3B"}
@@ -10,12 +10,7 @@ const big_js_1 = __importDefault(require("big.js"));
10
10
  const NOTIONAL_FLOOR_RATIO = '0.1';
11
11
  const AMOUNT_DECIMALS = 6;
12
12
  function positionAmount(value, field) {
13
- try {
14
- return new big_js_1.default(value);
15
- }
16
- catch {
17
- throw new perps_sdk_1.PerpsError(perps_types_1.PerpsErrorCode.ValidationError, `Invalid decimal string on Position.${field}: '${value}'`);
18
- }
13
+ return new big_js_1.default((0, perps_sdk_1.validateDecimalString)(value, `Position.${field}`));
19
14
  }
20
15
  function positivePositionAmount(value, field) {
21
16
  const amount = positionAmount(value, field);
@@ -1 +1 @@
1
- {"version":3,"file":"transferMargin.js","sourceRoot":"","sources":["../../../src/utils/transferMargin.ts"],"names":[],"mappings":";;;;;AAoDA,0DA0BC;AA9ED,+CAIwB;AACxB,mDAI0B;AAC1B,oDAAwB;AAExB,MAAM,oBAAoB,GAAG,KAAK,CAAA;AAClC,MAAM,eAAe,GAAG,CAAC,CAAA;AAEzB,SAAS,cAAc,CAAC,KAAa,EAAE,KAAa;IAClD,IAAI,CAAC;QACH,OAAO,IAAI,gBAAG,CAAC,KAAK,CAAC,CAAA;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,sBAAU,CAClB,4BAAc,CAAC,eAAe,EAC9B,sCAAsC,KAAK,MAAM,KAAK,GAAG,CAC1D,CAAA;IACH,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAa,EAAE,KAAa;IAC1D,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IAC3C,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAClB,MAAM,IAAI,sBAAU,CAClB,4BAAc,CAAC,eAAe,EAC9B,YAAY,KAAK,6BAA6B,CAC/C,CAAA;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAiBD,SAAgB,uBAAuB,CACrC,QAAkB;IAElB,IAAI,CAAC,IAAA,4CAAgC,EAAC,QAAQ,CAAC,EAAE,CAAC;QAChD,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,IAAI,CAAC,IAAA,yCAA6B,EAAC,QAAQ,CAAC,EAAE,CAAC;QAC7C,OAAO,GAAG,CAAA;IACZ,CAAC;IACD,MAAM,UAAU,GAAG,cAAc,CAAC,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;IACpE,MAAM,aAAa,GAAG,sBAAsB,CAC1C,QAAQ,CAAC,wBAAwB,EACjC,0BAA0B,CAC3B,CAAA;IACD,MAAM,aAAa,GAAG,sBAAsB,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;SAChE,KAAK,CAAC,sBAAsB,CAAC,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;SAC9D,KAAK,CAAC,oBAAoB,CAAC,CAAA;IAC9B,MAAM,aAAa,GAAG,aAAa,CAAC,EAAE,CAAC,aAAa,CAAC;QACnD,CAAC,CAAC,aAAa;QACf,CAAC,CAAC,aAAa,CAAA;IAEjB,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;IACjD,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACrB,OAAO,GAAG,CAAA;IACZ,CAAC;IACD,OAAO,SAAS,CAAC,KAAK,CAAC,eAAe,EAAE,gBAAG,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAA;AAClE,CAAC"}
1
+ {"version":3,"file":"transferMargin.js","sourceRoot":"","sources":["../../../src/utils/transferMargin.ts"],"names":[],"mappings":";;;;;AA8CA,0DA0BC;AAxED,+CAKwB;AACxB,mDAI0B;AAC1B,oDAAwB;AAExB,MAAM,oBAAoB,GAAG,KAAK,CAAA;AAClC,MAAM,eAAe,GAAG,CAAC,CAAA;AAEzB,SAAS,cAAc,CAAC,KAAoB,EAAE,KAAa;IACzD,OAAO,IAAI,gBAAG,CAAC,IAAA,iCAAqB,EAAC,KAAK,EAAE,YAAY,KAAK,EAAE,CAAC,CAAC,CAAA;AACnE,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAoB,EAAE,KAAa;IACjE,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IAC3C,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAClB,MAAM,IAAI,sBAAU,CAClB,4BAAc,CAAC,eAAe,EAC9B,YAAY,KAAK,6BAA6B,CAC/C,CAAA;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAiBD,SAAgB,uBAAuB,CACrC,QAAkB;IAElB,IAAI,CAAC,IAAA,4CAAgC,EAAC,QAAQ,CAAC,EAAE,CAAC;QAChD,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,IAAI,CAAC,IAAA,yCAA6B,EAAC,QAAQ,CAAC,EAAE,CAAC;QAC7C,OAAO,GAAG,CAAA;IACZ,CAAC;IACD,MAAM,UAAU,GAAG,cAAc,CAAC,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;IACpE,MAAM,aAAa,GAAG,sBAAsB,CAC1C,QAAQ,CAAC,wBAAwB,EACjC,0BAA0B,CAC3B,CAAA;IACD,MAAM,aAAa,GAAG,sBAAsB,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;SAChE,KAAK,CAAC,sBAAsB,CAAC,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;SAC9D,KAAK,CAAC,oBAAoB,CAAC,CAAA;IAC9B,MAAM,aAAa,GAAG,aAAa,CAAC,EAAE,CAAC,aAAa,CAAC;QACnD,CAAC,CAAC,aAAa;QACf,CAAC,CAAC,aAAa,CAAA;IAEjB,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;IACjD,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACrB,OAAO,GAAG,CAAA;IACZ,CAAC;IACD,OAAO,SAAS,CAAC,KAAK,CAAC,eAAe,EAAE,gBAAG,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAA;AAClE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"orderFormatting.d.ts","sourceRoot":"","sources":["../../../src/utils/orderFormatting.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AActD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAER;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,aAAa,EACnB,UAAU,EAAE,MAAM,GACjB,aAAa,CAMf;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,GACd,aAAa,CAYf"}
1
+ {"version":3,"file":"orderFormatting.d.ts","sourceRoot":"","sources":["../../../src/utils/orderFormatting.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AActD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAER;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,aAAa,EACnB,UAAU,EAAE,MAAM,GACjB,aAAa,CAMf;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,GACd,aAAa,CAaf"}
@@ -66,12 +66,12 @@ export function snapOrderSize(size, szDecimals) {
66
66
  * @public
67
67
  */
68
68
  export function snapOrderPrice(price, szDecimals, market) {
69
- const maxPriceDecimals = getMaxPriceDecimals(szDecimals, market);
70
- let rounded = new Big(price).round(maxPriceDecimals, Big.roundHalfUp);
71
- // Integer prices bypass the 5 sig-fig rule; prec() is a no-op below 6 sig figs
72
- if (!rounded.mod(1).eq(0)) {
73
- rounded = rounded.prec(5, Big.roundHalfUp);
74
- }
69
+ const value = new Big(price);
70
+ // Big's `e` is the base-10 exponent of the leading digit. Integer prices
71
+ // bypass the 5 sig-fig rule, so the sig-fig grid never goes coarser than 1.
72
+ const sigFigDecimals = Math.max(0, 4 - value.e);
73
+ const decimals = Math.min(sigFigDecimals, getMaxPriceDecimals(szDecimals, market));
74
+ const rounded = value.round(decimals, Big.roundHalfUp);
75
75
  // toFixed() with no dp always emits plain notation; eq(0) guards '-0'
76
76
  return rounded.eq(0) ? '0' : rounded.toFixed();
77
77
  }
@@ -1 +1 @@
1
- {"version":3,"file":"orderFormatting.js","sourceRoot":"","sources":["../../../src/utils/orderFormatting.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,GAAG,MAAM,QAAQ,CAAA;AAExB;;;GAGG;AACH,MAAM,kBAAkB,GAAG,CAAC,CAAA;AAC5B,MAAM,iBAAiB,GAAG,CAAC,CAAA;AAE3B,SAAS,cAAc,CAAC,MAAe;IACrC,OAAO,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,kBAAkB,CAAA;AACnE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CACjC,UAAkB,EAClB,MAAe;IAEf,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,CAAA;AACzD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa,CAC3B,IAAmB,EACnB,UAAkB;IAElB,wEAAwE;IACxE,4BAA4B;IAC5B,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,GAAG,CAAC,SAAS,CAAC,CAAA;IAChE,sEAAsE;IACtE,OAAO,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,CAAA;AACpD,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,cAAc,CAC5B,KAAoB,EACpB,UAAkB,EAClB,MAAe;IAEf,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;IAEhE,IAAI,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,gBAAgB,EAAE,GAAG,CAAC,WAAW,CAAC,CAAA;IAErE,+EAA+E;IAC/E,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1B,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,CAAA;IAC5C,CAAC;IAED,sEAAsE;IACtE,OAAO,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAA;AAChD,CAAC"}
1
+ {"version":3,"file":"orderFormatting.js","sourceRoot":"","sources":["../../../src/utils/orderFormatting.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,GAAG,MAAM,QAAQ,CAAA;AAExB;;;GAGG;AACH,MAAM,kBAAkB,GAAG,CAAC,CAAA;AAC5B,MAAM,iBAAiB,GAAG,CAAC,CAAA;AAE3B,SAAS,cAAc,CAAC,MAAe;IACrC,OAAO,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,kBAAkB,CAAA;AACnE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CACjC,UAAkB,EAClB,MAAe;IAEf,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,CAAA;AACzD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa,CAC3B,IAAmB,EACnB,UAAkB;IAElB,wEAAwE;IACxE,4BAA4B;IAC5B,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,GAAG,CAAC,SAAS,CAAC,CAAA;IAChE,sEAAsE;IACtE,OAAO,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,CAAA;AACpD,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,cAAc,CAC5B,KAAoB,EACpB,UAAkB,EAClB,MAAe;IAEf,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAA;IAC5B,yEAAyE;IACzE,4EAA4E;IAC5E,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CACvB,cAAc,EACd,mBAAmB,CAAC,UAAU,EAAE,MAAM,CAAC,CACxC,CAAA;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,WAAW,CAAC,CAAA;IAEtD,sEAAsE;IACtE,OAAO,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAA;AAChD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"transferMargin.d.ts","sourceRoot":"","sources":["../../../src/utils/transferMargin.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,KAAK,aAAa,EAElB,KAAK,QAAQ,EACd,MAAM,mBAAmB,CAAA;AA4B1B;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,QAAQ,GACjB,aAAa,GAAG,SAAS,CAwB3B"}
1
+ {"version":3,"file":"transferMargin.d.ts","sourceRoot":"","sources":["../../../src/utils/transferMargin.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,KAAK,aAAa,EAElB,KAAK,QAAQ,EACd,MAAM,mBAAmB,CAAA;AAqB1B;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,QAAQ,GACjB,aAAa,GAAG,SAAS,CAwB3B"}
@@ -1,15 +1,10 @@
1
- import { PerpsError, positionSupportsMarginAdjustment, positionSupportsMarginRemoval, } from '@lifi/perps-sdk';
1
+ import { PerpsError, positionSupportsMarginAdjustment, positionSupportsMarginRemoval, validateDecimalString, } from '@lifi/perps-sdk';
2
2
  import { PerpsErrorCode, } from '@lifi/perps-types';
3
3
  import Big from 'big.js';
4
4
  const NOTIONAL_FLOOR_RATIO = '0.1';
5
5
  const AMOUNT_DECIMALS = 6;
6
6
  function positionAmount(value, field) {
7
- try {
8
- return new Big(value);
9
- }
10
- catch {
11
- throw new PerpsError(PerpsErrorCode.ValidationError, `Invalid decimal string on Position.${field}: '${value}'`);
12
- }
7
+ return new Big(validateDecimalString(value, `Position.${field}`));
13
8
  }
14
9
  function positivePositionAmount(value, field) {
15
10
  const amount = positionAmount(value, field);
@@ -1 +1 @@
1
- {"version":3,"file":"transferMargin.js","sourceRoot":"","sources":["../../../src/utils/transferMargin.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,gCAAgC,EAChC,6BAA6B,GAC9B,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAEL,cAAc,GAEf,MAAM,mBAAmB,CAAA;AAC1B,OAAO,GAAG,MAAM,QAAQ,CAAA;AAExB,MAAM,oBAAoB,GAAG,KAAK,CAAA;AAClC,MAAM,eAAe,GAAG,CAAC,CAAA;AAEzB,SAAS,cAAc,CAAC,KAAa,EAAE,KAAa;IAClD,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,CAAA;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,UAAU,CAClB,cAAc,CAAC,eAAe,EAC9B,sCAAsC,KAAK,MAAM,KAAK,GAAG,CAC1D,CAAA;IACH,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAa,EAAE,KAAa;IAC1D,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IAC3C,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAClB,MAAM,IAAI,UAAU,CAClB,cAAc,CAAC,eAAe,EAC9B,YAAY,KAAK,6BAA6B,CAC/C,CAAA;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,uBAAuB,CACrC,QAAkB;IAElB,IAAI,CAAC,gCAAgC,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChD,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,IAAI,CAAC,6BAA6B,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7C,OAAO,GAAG,CAAA;IACZ,CAAC;IACD,MAAM,UAAU,GAAG,cAAc,CAAC,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;IACpE,MAAM,aAAa,GAAG,sBAAsB,CAC1C,QAAQ,CAAC,wBAAwB,EACjC,0BAA0B,CAC3B,CAAA;IACD,MAAM,aAAa,GAAG,sBAAsB,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;SAChE,KAAK,CAAC,sBAAsB,CAAC,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;SAC9D,KAAK,CAAC,oBAAoB,CAAC,CAAA;IAC9B,MAAM,aAAa,GAAG,aAAa,CAAC,EAAE,CAAC,aAAa,CAAC;QACnD,CAAC,CAAC,aAAa;QACf,CAAC,CAAC,aAAa,CAAA;IAEjB,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;IACjD,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACrB,OAAO,GAAG,CAAA;IACZ,CAAC;IACD,OAAO,SAAS,CAAC,KAAK,CAAC,eAAe,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAA;AAClE,CAAC"}
1
+ {"version":3,"file":"transferMargin.js","sourceRoot":"","sources":["../../../src/utils/transferMargin.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,gCAAgC,EAChC,6BAA6B,EAC7B,qBAAqB,GACtB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAEL,cAAc,GAEf,MAAM,mBAAmB,CAAA;AAC1B,OAAO,GAAG,MAAM,QAAQ,CAAA;AAExB,MAAM,oBAAoB,GAAG,KAAK,CAAA;AAClC,MAAM,eAAe,GAAG,CAAC,CAAA;AAEzB,SAAS,cAAc,CAAC,KAAoB,EAAE,KAAa;IACzD,OAAO,IAAI,GAAG,CAAC,qBAAqB,CAAC,KAAK,EAAE,YAAY,KAAK,EAAE,CAAC,CAAC,CAAA;AACnE,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAoB,EAAE,KAAa;IACjE,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IAC3C,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAClB,MAAM,IAAI,UAAU,CAClB,cAAc,CAAC,eAAe,EAC9B,YAAY,KAAK,6BAA6B,CAC/C,CAAA;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,uBAAuB,CACrC,QAAkB;IAElB,IAAI,CAAC,gCAAgC,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChD,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,IAAI,CAAC,6BAA6B,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7C,OAAO,GAAG,CAAA;IACZ,CAAC;IACD,MAAM,UAAU,GAAG,cAAc,CAAC,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;IACpE,MAAM,aAAa,GAAG,sBAAsB,CAC1C,QAAQ,CAAC,wBAAwB,EACjC,0BAA0B,CAC3B,CAAA;IACD,MAAM,aAAa,GAAG,sBAAsB,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;SAChE,KAAK,CAAC,sBAAsB,CAAC,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;SAC9D,KAAK,CAAC,oBAAoB,CAAC,CAAA;IAC9B,MAAM,aAAa,GAAG,aAAa,CAAC,EAAE,CAAC,aAAa,CAAC;QACnD,CAAC,CAAC,aAAa;QACf,CAAC,CAAC,aAAa,CAAA;IAEjB,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;IACjD,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACrB,OAAO,GAAG,CAAA;IACZ,CAAC;IACD,OAAO,SAAS,CAAC,KAAK,CAAC,eAAe,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAA;AAClE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"orderFormatting.d.ts","sourceRoot":"","sources":["../../../src/utils/orderFormatting.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AActD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAER;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,aAAa,EACnB,UAAU,EAAE,MAAM,GACjB,aAAa,CAMf;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,GACd,aAAa,CAYf"}
1
+ {"version":3,"file":"orderFormatting.d.ts","sourceRoot":"","sources":["../../../src/utils/orderFormatting.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AActD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAER;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,aAAa,EACnB,UAAU,EAAE,MAAM,GACjB,aAAa,CAMf;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,GACd,aAAa,CAaf"}
@@ -1 +1 @@
1
- {"version":3,"file":"transferMargin.d.ts","sourceRoot":"","sources":["../../../src/utils/transferMargin.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,KAAK,aAAa,EAElB,KAAK,QAAQ,EACd,MAAM,mBAAmB,CAAA;AA4B1B;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,QAAQ,GACjB,aAAa,GAAG,SAAS,CAwB3B"}
1
+ {"version":3,"file":"transferMargin.d.ts","sourceRoot":"","sources":["../../../src/utils/transferMargin.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,KAAK,aAAa,EAElB,KAAK,QAAQ,EACd,MAAM,mBAAmB,CAAA;AAqB1B;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,QAAQ,GACjB,aAAa,GAAG,SAAS,CAwB3B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lifi/perps-sdk-provider-hyperliquid",
3
- "version": "23.0.0",
3
+ "version": "25.0.0",
4
4
  "description": "Hyperliquid provider plugin for @lifi/perps-sdk",
5
5
  "homepage": "https://github.com/lifinance/perps-sdk",
6
6
  "bugs": {
@@ -49,10 +49,10 @@
49
49
  "dependencies": {
50
50
  "big.js": "^7.0.1",
51
51
  "viem": "^2.55.18",
52
- "@lifi/perps-types": "^20.0.0"
52
+ "@lifi/perps-types": "^20.2.0"
53
53
  },
54
54
  "peerDependencies": {
55
- "@lifi/perps-sdk": "^22.0.0"
55
+ "@lifi/perps-sdk": "^23.1.0"
56
56
  },
57
57
  "publishConfig": {
58
58
  "access": "public"
@@ -83,14 +83,15 @@ export function snapOrderPrice(
83
83
  szDecimals: number,
84
84
  market?: string
85
85
  ): DecimalString {
86
- const maxPriceDecimals = getMaxPriceDecimals(szDecimals, market)
87
-
88
- let rounded = new Big(price).round(maxPriceDecimals, Big.roundHalfUp)
89
-
90
- // Integer prices bypass the 5 sig-fig rule; prec() is a no-op below 6 sig figs
91
- if (!rounded.mod(1).eq(0)) {
92
- rounded = rounded.prec(5, Big.roundHalfUp)
93
- }
86
+ const value = new Big(price)
87
+ // Big's `e` is the base-10 exponent of the leading digit. Integer prices
88
+ // bypass the 5 sig-fig rule, so the sig-fig grid never goes coarser than 1.
89
+ const sigFigDecimals = Math.max(0, 4 - value.e)
90
+ const decimals = Math.min(
91
+ sigFigDecimals,
92
+ getMaxPriceDecimals(szDecimals, market)
93
+ )
94
+ const rounded = value.round(decimals, Big.roundHalfUp)
94
95
 
95
96
  // toFixed() with no dp always emits plain notation; eq(0) guards '-0'
96
97
  return rounded.eq(0) ? '0' : rounded.toFixed()
@@ -2,6 +2,7 @@ import {
2
2
  PerpsError,
3
3
  positionSupportsMarginAdjustment,
4
4
  positionSupportsMarginRemoval,
5
+ validateDecimalString,
5
6
  } from '@lifi/perps-sdk'
6
7
  import {
7
8
  type DecimalString,
@@ -13,18 +14,11 @@ import Big from 'big.js'
13
14
  const NOTIONAL_FLOOR_RATIO = '0.1'
14
15
  const AMOUNT_DECIMALS = 6
15
16
 
16
- function positionAmount(value: string, field: string): Big {
17
- try {
18
- return new Big(value)
19
- } catch {
20
- throw new PerpsError(
21
- PerpsErrorCode.ValidationError,
22
- `Invalid decimal string on Position.${field}: '${value}'`
23
- )
24
- }
17
+ function positionAmount(value: DecimalString, field: string): Big {
18
+ return new Big(validateDecimalString(value, `Position.${field}`))
25
19
  }
26
20
 
27
- function positivePositionAmount(value: string, field: string): Big {
21
+ function positivePositionAmount(value: DecimalString, field: string): Big {
28
22
  const amount = positionAmount(value, field)
29
23
  if (amount.lte(0)) {
30
24
  throw new PerpsError(