@lifi/perps-sdk 0.0.0-preview-142c251 → 0.0.0-preview-1edeff0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (198) hide show
  1. package/README.md +42 -2
  2. package/dist/cjs/client/PerpsClient.d.ts +10 -5
  3. package/dist/cjs/client/PerpsClient.d.ts.map +1 -1
  4. package/dist/cjs/client/PerpsClient.js +89 -55
  5. package/dist/cjs/client/PerpsClient.js.map +1 -1
  6. package/dist/cjs/index.d.ts +13 -8
  7. package/dist/cjs/index.d.ts.map +1 -1
  8. package/dist/cjs/index.js +20 -5
  9. package/dist/cjs/index.js.map +1 -1
  10. package/dist/cjs/registry/marketRegistry.d.ts +3 -0
  11. package/dist/cjs/registry/marketRegistry.d.ts.map +1 -1
  12. package/dist/cjs/registry/marketRegistry.js +16 -1
  13. package/dist/cjs/registry/marketRegistry.js.map +1 -1
  14. package/dist/cjs/registry/referenceDataRegistry.d.ts.map +1 -1
  15. package/dist/cjs/registry/referenceDataRegistry.js +0 -1
  16. package/dist/cjs/registry/referenceDataRegistry.js.map +1 -1
  17. package/dist/cjs/services/getGasRecommendation.d.ts +9 -0
  18. package/dist/cjs/services/getGasRecommendation.d.ts.map +1 -0
  19. package/dist/cjs/services/getGasRecommendation.js +10 -0
  20. package/dist/cjs/services/getGasRecommendation.js.map +1 -0
  21. package/dist/cjs/services/getMarket.d.ts.map +1 -1
  22. package/dist/cjs/services/getMarket.js +2 -1
  23. package/dist/cjs/services/getMarket.js.map +1 -1
  24. package/dist/cjs/services/getMarkets.d.ts.map +1 -1
  25. package/dist/cjs/services/getMarkets.js +3 -1
  26. package/dist/cjs/services/getMarkets.js.map +1 -1
  27. package/dist/cjs/types/api.d.ts +4 -0
  28. package/dist/cjs/types/api.d.ts.map +1 -1
  29. package/dist/cjs/types/config.d.ts.map +1 -1
  30. package/dist/cjs/types/deposit.d.ts +25 -0
  31. package/dist/cjs/types/deposit.d.ts.map +1 -0
  32. package/dist/cjs/types/deposit.js +3 -0
  33. package/dist/cjs/types/deposit.js.map +1 -0
  34. package/dist/cjs/types/provider.d.ts +16 -5
  35. package/dist/cjs/types/provider.d.ts.map +1 -1
  36. package/dist/cjs/utils/accountSummary.d.ts.map +1 -1
  37. package/dist/cjs/utils/accountSummary.js +10 -4
  38. package/dist/cjs/utils/accountSummary.js.map +1 -1
  39. package/dist/cjs/utils/depositAssets.d.ts +8 -0
  40. package/dist/cjs/utils/depositAssets.d.ts.map +1 -0
  41. package/dist/cjs/utils/depositAssets.js +36 -0
  42. package/dist/cjs/utils/depositAssets.js.map +1 -0
  43. package/dist/cjs/utils/explorer.d.ts +1 -0
  44. package/dist/cjs/utils/explorer.d.ts.map +1 -1
  45. package/dist/cjs/utils/explorer.js +7 -3
  46. package/dist/cjs/utils/explorer.js.map +1 -1
  47. package/dist/cjs/utils/format.d.ts +3 -0
  48. package/dist/cjs/utils/format.d.ts.map +1 -1
  49. package/dist/cjs/utils/format.js +31 -24
  50. package/dist/cjs/utils/format.js.map +1 -1
  51. package/dist/cjs/utils/scaleToInteger.d.ts +3 -0
  52. package/dist/cjs/utils/scaleToInteger.d.ts.map +1 -0
  53. package/dist/cjs/utils/scaleToInteger.js +30 -0
  54. package/dist/cjs/utils/scaleToInteger.js.map +1 -0
  55. package/dist/cjs/utils/setupActions.d.ts +3 -0
  56. package/dist/cjs/utils/setupActions.d.ts.map +1 -0
  57. package/dist/cjs/utils/setupActions.js +8 -0
  58. package/dist/cjs/utils/setupActions.js.map +1 -0
  59. package/dist/cjs/version.d.ts +1 -1
  60. package/dist/cjs/version.js +1 -1
  61. package/dist/esm/client/PerpsClient.d.ts +41 -14
  62. package/dist/esm/client/PerpsClient.d.ts.map +1 -1
  63. package/dist/esm/client/PerpsClient.js +128 -73
  64. package/dist/esm/client/PerpsClient.js.map +1 -1
  65. package/dist/esm/index.d.ts +14 -9
  66. package/dist/esm/index.d.ts.map +1 -1
  67. package/dist/esm/index.js +8 -5
  68. package/dist/esm/index.js.map +1 -1
  69. package/dist/esm/registry/marketRegistry.d.ts +15 -2
  70. package/dist/esm/registry/marketRegistry.d.ts.map +1 -1
  71. package/dist/esm/registry/marketRegistry.js +26 -2
  72. package/dist/esm/registry/marketRegistry.js.map +1 -1
  73. package/dist/esm/registry/referenceDataRegistry.d.ts +2 -1
  74. package/dist/esm/registry/referenceDataRegistry.d.ts.map +1 -1
  75. package/dist/esm/registry/referenceDataRegistry.js +2 -2
  76. package/dist/esm/registry/referenceDataRegistry.js.map +1 -1
  77. package/dist/esm/services/getGasRecommendation.d.ts +31 -0
  78. package/dist/esm/services/getGasRecommendation.d.ts.map +1 -0
  79. package/dist/esm/services/getGasRecommendation.js +22 -0
  80. package/dist/esm/services/getGasRecommendation.js.map +1 -0
  81. package/dist/esm/services/getMarket.d.ts +5 -4
  82. package/dist/esm/services/getMarket.d.ts.map +1 -1
  83. package/dist/esm/services/getMarket.js +7 -5
  84. package/dist/esm/services/getMarket.js.map +1 -1
  85. package/dist/esm/services/getMarkets.d.ts +6 -3
  86. package/dist/esm/services/getMarkets.d.ts.map +1 -1
  87. package/dist/esm/services/getMarkets.js +9 -4
  88. package/dist/esm/services/getMarkets.js.map +1 -1
  89. package/dist/esm/types/api.d.ts +9 -0
  90. package/dist/esm/types/api.d.ts.map +1 -1
  91. package/dist/esm/types/config.d.ts +4 -1
  92. package/dist/esm/types/config.d.ts.map +1 -1
  93. package/dist/esm/types/deposit.d.ts +68 -0
  94. package/dist/esm/types/deposit.d.ts.map +1 -0
  95. package/dist/esm/types/deposit.js +2 -0
  96. package/dist/esm/types/deposit.js.map +1 -0
  97. package/dist/esm/types/provider.d.ts +53 -17
  98. package/dist/esm/types/provider.d.ts.map +1 -1
  99. package/dist/esm/utils/accountSummary.d.ts.map +1 -1
  100. package/dist/esm/utils/accountSummary.js +13 -4
  101. package/dist/esm/utils/accountSummary.js.map +1 -1
  102. package/dist/esm/utils/depositAssets.d.ts +46 -0
  103. package/dist/esm/utils/depositAssets.d.ts.map +1 -0
  104. package/dist/esm/utils/depositAssets.js +71 -0
  105. package/dist/esm/utils/depositAssets.js.map +1 -0
  106. package/dist/esm/utils/explorer.d.ts +10 -0
  107. package/dist/esm/utils/explorer.d.ts.map +1 -1
  108. package/dist/esm/utils/explorer.js +16 -4
  109. package/dist/esm/utils/explorer.js.map +1 -1
  110. package/dist/esm/utils/format.d.ts +22 -0
  111. package/dist/esm/utils/format.d.ts.map +1 -1
  112. package/dist/esm/utils/format.js +57 -27
  113. package/dist/esm/utils/format.js.map +1 -1
  114. package/dist/esm/utils/scaleToInteger.d.ts +22 -0
  115. package/dist/esm/utils/scaleToInteger.d.ts.map +1 -0
  116. package/dist/esm/utils/scaleToInteger.js +34 -0
  117. package/dist/esm/utils/scaleToInteger.js.map +1 -0
  118. package/dist/esm/utils/setupActions.d.ts +17 -0
  119. package/dist/esm/utils/setupActions.d.ts.map +1 -0
  120. package/dist/esm/utils/setupActions.js +19 -0
  121. package/dist/esm/utils/setupActions.js.map +1 -0
  122. package/dist/esm/version.d.ts +1 -1
  123. package/dist/esm/version.js +1 -1
  124. package/dist/types/client/PerpsClient.d.ts +41 -14
  125. package/dist/types/client/PerpsClient.d.ts.map +1 -1
  126. package/dist/types/index.d.ts +14 -9
  127. package/dist/types/index.d.ts.map +1 -1
  128. package/dist/types/registry/marketRegistry.d.ts +15 -2
  129. package/dist/types/registry/marketRegistry.d.ts.map +1 -1
  130. package/dist/types/registry/referenceDataRegistry.d.ts +2 -1
  131. package/dist/types/registry/referenceDataRegistry.d.ts.map +1 -1
  132. package/dist/types/services/getGasRecommendation.d.ts +31 -0
  133. package/dist/types/services/getGasRecommendation.d.ts.map +1 -0
  134. package/dist/types/services/getMarket.d.ts +5 -4
  135. package/dist/types/services/getMarket.d.ts.map +1 -1
  136. package/dist/types/services/getMarkets.d.ts +6 -3
  137. package/dist/types/services/getMarkets.d.ts.map +1 -1
  138. package/dist/types/types/api.d.ts +9 -0
  139. package/dist/types/types/api.d.ts.map +1 -1
  140. package/dist/types/types/config.d.ts +4 -1
  141. package/dist/types/types/config.d.ts.map +1 -1
  142. package/dist/types/types/deposit.d.ts +68 -0
  143. package/dist/types/types/deposit.d.ts.map +1 -0
  144. package/dist/types/types/provider.d.ts +53 -17
  145. package/dist/types/types/provider.d.ts.map +1 -1
  146. package/dist/types/utils/accountSummary.d.ts.map +1 -1
  147. package/dist/types/utils/depositAssets.d.ts +46 -0
  148. package/dist/types/utils/depositAssets.d.ts.map +1 -0
  149. package/dist/types/utils/explorer.d.ts +10 -0
  150. package/dist/types/utils/explorer.d.ts.map +1 -1
  151. package/dist/types/utils/format.d.ts +22 -0
  152. package/dist/types/utils/format.d.ts.map +1 -1
  153. package/dist/types/utils/scaleToInteger.d.ts +22 -0
  154. package/dist/types/utils/scaleToInteger.d.ts.map +1 -0
  155. package/dist/types/utils/setupActions.d.ts +17 -0
  156. package/dist/types/utils/setupActions.d.ts.map +1 -0
  157. package/dist/types/version.d.ts +1 -1
  158. package/package.json +4 -3
  159. package/src/client/PerpsClient.ts +206 -106
  160. package/src/index.ts +34 -8
  161. package/src/registry/marketRegistry.ts +33 -2
  162. package/src/registry/referenceDataRegistry.ts +2 -2
  163. package/src/services/getGasRecommendation.ts +45 -0
  164. package/src/services/getMarket.ts +7 -5
  165. package/src/services/getMarkets.ts +14 -4
  166. package/src/types/api.ts +10 -0
  167. package/src/types/config.ts +4 -1
  168. package/src/types/deposit.ts +75 -0
  169. package/src/types/provider.ts +56 -25
  170. package/src/utils/accountSummary.ts +18 -5
  171. package/src/utils/depositAssets.ts +77 -0
  172. package/src/utils/explorer.ts +20 -4
  173. package/src/utils/format.ts +108 -28
  174. package/src/utils/scaleToInteger.ts +56 -0
  175. package/src/utils/setupActions.ts +24 -0
  176. package/src/version.ts +1 -1
  177. package/dist/cjs/client/clientLog.d.ts +0 -4
  178. package/dist/cjs/client/clientLog.d.ts.map +0 -1
  179. package/dist/cjs/client/clientLog.js +0 -9
  180. package/dist/cjs/client/clientLog.js.map +0 -1
  181. package/dist/cjs/utils/depositChain.d.ts +0 -6
  182. package/dist/cjs/utils/depositChain.d.ts.map +0 -1
  183. package/dist/cjs/utils/depositChain.js +0 -13
  184. package/dist/cjs/utils/depositChain.js.map +0 -1
  185. package/dist/esm/client/clientLog.d.ts +0 -16
  186. package/dist/esm/client/clientLog.d.ts.map +0 -1
  187. package/dist/esm/client/clientLog.js +0 -18
  188. package/dist/esm/client/clientLog.js.map +0 -1
  189. package/dist/esm/utils/depositChain.d.ts +0 -27
  190. package/dist/esm/utils/depositChain.d.ts.map +0 -1
  191. package/dist/esm/utils/depositChain.js +0 -23
  192. package/dist/esm/utils/depositChain.js.map +0 -1
  193. package/dist/types/client/clientLog.d.ts +0 -16
  194. package/dist/types/client/clientLog.d.ts.map +0 -1
  195. package/dist/types/utils/depositChain.d.ts +0 -27
  196. package/dist/types/utils/depositChain.d.ts.map +0 -1
  197. package/src/client/clientLog.ts +0 -20
  198. package/src/utils/depositChain.ts +0 -38
@@ -1,11 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatNumber = formatNumber;
3
4
  exports.formatUsd = formatUsd;
4
5
  exports.formatSignedUsd = formatSignedUsd;
5
6
  exports.formatSignedPercent = formatSignedPercent;
6
7
  exports.formatPrice = formatPrice;
7
8
  exports.formatCompactUsd = formatCompactUsd;
8
9
  const DEFAULT_PLACEHOLDER = '—';
10
+ const FLOAT_GUARD_DIGITS = 9;
9
11
  function toFiniteNumber(value) {
10
12
  let n;
11
13
  if (typeof value === 'string') {
@@ -23,10 +25,18 @@ function toFiniteNumber(value) {
23
25
  }
24
26
  return Number.isFinite(n) ? n : null;
25
27
  }
26
- function signAndBody(n, decimals, locale, grouping) {
27
- const rounded = Number(n.toFixed(decimals));
28
- const sign = rounded < 0 ? '-' : '';
29
- const body = Math.abs(rounded).toLocaleString(locale, {
28
+ function truncateAbs(abs, decimals) {
29
+ const s = abs.toFixed(Math.min(decimals + FLOAT_GUARD_DIGITS, 100));
30
+ const dot = s.indexOf('.');
31
+ const cut = decimals === 0 ? dot : dot + 1 + decimals;
32
+ return Number(s.slice(0, cut));
33
+ }
34
+ function signAndBody(n, decimals, locale, grouping, rounding, signed) {
35
+ const reduced = rounding === 'floor'
36
+ ? (n < 0 ? -1 : 1) * truncateAbs(Math.abs(n), decimals)
37
+ : Number(n.toFixed(decimals));
38
+ const sign = reduced < 0 ? '-' : signed && reduced > 0 ? '+' : '';
39
+ const body = Math.abs(reduced).toLocaleString(locale, {
30
40
  minimumFractionDigits: decimals,
31
41
  maximumFractionDigits: decimals,
32
42
  useGrouping: grouping,
@@ -45,54 +55,51 @@ function autoDecimals(abs) {
45
55
  }
46
56
  return 6;
47
57
  }
58
+ function formatNumber(value, options = {}) {
59
+ const { decimals = 2, placeholder = DEFAULT_PLACEHOLDER, locale, rounding = 'halfUp', } = options;
60
+ const n = toFiniteNumber(value);
61
+ if (n === null) {
62
+ return placeholder;
63
+ }
64
+ const { sign, body } = signAndBody(n, decimals, locale, true, rounding, false);
65
+ return `${sign}${body}`;
66
+ }
48
67
  function formatUsd(value, options = {}) {
49
- const { decimals = 2, placeholder = DEFAULT_PLACEHOLDER, locale } = options;
68
+ const { decimals = 2, placeholder = DEFAULT_PLACEHOLDER, locale, rounding = 'halfUp', } = options;
50
69
  const n = toFiniteNumber(value);
51
70
  if (n === null) {
52
71
  return placeholder;
53
72
  }
54
- const { sign, body } = signAndBody(n, decimals, locale, true);
73
+ const { sign, body } = signAndBody(n, decimals, locale, true, rounding, false);
55
74
  return `${sign}$${body}`;
56
75
  }
57
76
  function formatSignedUsd(value, options = {}) {
58
- const { decimals = 2, placeholder = DEFAULT_PLACEHOLDER, locale } = options;
77
+ const { decimals = 2, placeholder = DEFAULT_PLACEHOLDER, locale, rounding = 'halfUp', } = options;
59
78
  const n = toFiniteNumber(value);
60
79
  if (n === null) {
61
80
  return placeholder;
62
81
  }
63
- const rounded = Number(n.toFixed(decimals));
64
- const sign = rounded > 0 ? '+' : rounded < 0 ? '-' : '';
65
- const body = Math.abs(rounded).toLocaleString(locale, {
66
- minimumFractionDigits: decimals,
67
- maximumFractionDigits: decimals,
68
- useGrouping: true,
69
- });
82
+ const { sign, body } = signAndBody(n, decimals, locale, true, rounding, true);
70
83
  return `${sign}$${body}`;
71
84
  }
72
85
  function formatSignedPercent(value, options = {}) {
73
- const { decimals = 2, placeholder = DEFAULT_PLACEHOLDER, locale } = options;
86
+ const { decimals = 2, placeholder = DEFAULT_PLACEHOLDER, locale, rounding = 'halfUp', } = options;
74
87
  const n = toFiniteNumber(value);
75
88
  if (n === null) {
76
89
  return placeholder;
77
90
  }
78
- const rounded = Number(n.toFixed(decimals));
79
- const sign = rounded > 0 ? '+' : rounded < 0 ? '-' : '';
80
- const body = Math.abs(rounded).toLocaleString(locale, {
81
- minimumFractionDigits: decimals,
82
- maximumFractionDigits: decimals,
83
- useGrouping: false,
84
- });
91
+ const { sign, body } = signAndBody(n, decimals, locale, false, rounding, true);
85
92
  return `${sign}${body}%`;
86
93
  }
87
94
  function formatPrice(value, options = {}) {
88
- const { placeholder = DEFAULT_PLACEHOLDER, locale } = options;
95
+ const { placeholder = DEFAULT_PLACEHOLDER, locale, rounding = 'halfUp', } = options;
89
96
  const n = toFiniteNumber(value);
90
97
  if (n === null) {
91
98
  return placeholder;
92
99
  }
93
100
  const abs = Math.abs(n);
94
101
  const decimals = options.decimals ?? autoDecimals(abs);
95
- const { sign, body } = signAndBody(n, decimals, locale, abs >= 1000);
102
+ const { sign, body } = signAndBody(n, decimals, locale, abs >= 1000, rounding, false);
96
103
  return `${sign}$${body}`;
97
104
  }
98
105
  function formatCompactUsd(value, options = {}) {
@@ -1 +1 @@
1
- {"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/utils/format.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/utils/format.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export type ScaleToIntegerPolicy = 'truncate' | 'round';
2
+ export declare const scaleToInteger: (value: string, decimals: number, policy: ScaleToIntegerPolicy) => number;
3
+ //# sourceMappingURL=scaleToInteger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaleToInteger.d.ts","sourceRoot":"","sources":["../../../src/utils/scaleToInteger.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,OAAO,CAAA;AAavD,eAAO,MAAM,cAAc,GACzB,OAAO,MAAM,EACb,UAAU,MAAM,EAChB,QAAQ,oBAAoB,KAC3B,MA0BF,CAAA"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.scaleToInteger = void 0;
7
+ const perps_types_1 = require("@lifi/perps-types");
8
+ const big_js_1 = __importDefault(require("big.js"));
9
+ const PerpsError_js_1 = require("../errors/PerpsError.js");
10
+ const scaleToInteger = (value, decimals, policy) => {
11
+ if (!Number.isInteger(decimals) || decimals < 0) {
12
+ throw new PerpsError_js_1.PerpsError(perps_types_1.PerpsErrorCode.ValidationError, `Invalid decimals for integer scaling: ${decimals}`);
13
+ }
14
+ let parsed;
15
+ try {
16
+ parsed = new big_js_1.default(value);
17
+ }
18
+ catch {
19
+ throw new PerpsError_js_1.PerpsError(perps_types_1.PerpsErrorCode.ValidationError, `Invalid decimal string for integer scaling: '${value}'`);
20
+ }
21
+ const scaled = parsed
22
+ .times(new big_js_1.default(10).pow(decimals))
23
+ .round(0, policy === 'truncate' ? big_js_1.default.roundDown : big_js_1.default.roundHalfUp);
24
+ if (scaled.abs().gt(Number.MAX_SAFE_INTEGER)) {
25
+ throw new PerpsError_js_1.PerpsError(perps_types_1.PerpsErrorCode.ValidationError, `Scaled value ${scaled.toFixed()} exceeds Number.MAX_SAFE_INTEGER and cannot be encoded exactly.`);
26
+ }
27
+ return scaled.toNumber();
28
+ };
29
+ exports.scaleToInteger = scaleToInteger;
30
+ //# sourceMappingURL=scaleToInteger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaleToInteger.js","sourceRoot":"","sources":["../../../src/utils/scaleToInteger.ts"],"names":[],"mappings":";;;;;;AAAA,mDAAkD;AAClD,oDAAwB;AACxB,2DAAoD;AAuB7C,MAAM,cAAc,GAAG,CAC5B,KAAa,EACb,QAAgB,EAChB,MAA4B,EACpB,EAAE;IACV,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,0BAAU,CAClB,4BAAc,CAAC,eAAe,EAC9B,yCAAyC,QAAQ,EAAE,CACpD,CAAA;IACH,CAAC;IACD,IAAI,MAAW,CAAA;IACf,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,gBAAG,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,0BAAU,CAClB,4BAAc,CAAC,eAAe,EAC9B,gDAAgD,KAAK,GAAG,CACzD,CAAA;IACH,CAAC;IACD,MAAM,MAAM,GAAG,MAAM;SAClB,KAAK,CAAC,IAAI,gBAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;SAChC,KAAK,CAAC,CAAC,EAAE,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,gBAAG,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAG,CAAC,WAAW,CAAC,CAAA;IACpE,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,0BAAU,CAClB,4BAAc,CAAC,eAAe,EAC9B,gBAAgB,MAAM,CAAC,OAAO,EAAE,iEAAiE,CAClG,CAAA;IACH,CAAC;IACD,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAA;AAC1B,CAAC,CAAA;AA9BY,QAAA,cAAc,kBA8B1B"}
@@ -0,0 +1,3 @@
1
+ import type { ProviderAction } from '@lifi/perps-types';
2
+ export declare function selectUserSetupActions(setup: ProviderAction[]): ProviderAction[];
3
+ //# sourceMappingURL=setupActions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setupActions.d.ts","sourceRoot":"","sources":["../../../src/utils/setupActions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAiBvD,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,cAAc,EAAE,GACtB,cAAc,EAAE,CAIlB"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.selectUserSetupActions = selectUserSetupActions;
4
+ const perps_types_1 = require("@lifi/perps-types");
5
+ function selectUserSetupActions(setup) {
6
+ return setup.filter((descriptor) => descriptor.signers.includes(perps_types_1.PerpsSigner.USER));
7
+ }
8
+ //# sourceMappingURL=setupActions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setupActions.js","sourceRoot":"","sources":["../../../src/utils/setupActions.ts"],"names":[],"mappings":";;AAiBA,wDAMC;AAtBD,mDAA+C;AAgB/C,SAAgB,sBAAsB,CACpC,KAAuB;IAEvB,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CACjC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,yBAAW,CAAC,IAAI,CAAC,CAC9C,CAAA;AACH,CAAC"}
@@ -1,3 +1,3 @@
1
1
  export declare const name = "@lifi/perps-sdk";
2
- export declare const version = "0.0.0-preview-142c251";
2
+ export declare const version = "0.0.0-preview-1edeff0";
3
3
  //# sourceMappingURL=version.d.ts.map
@@ -2,5 +2,5 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.version = exports.name = void 0;
4
4
  exports.name = '@lifi/perps-sdk';
5
- exports.version = '0.0.0-preview-142c251';
5
+ exports.version = '0.0.0-preview-1edeff0';
6
6
  //# sourceMappingURL=version.js.map
@@ -1,9 +1,10 @@
1
- import type { AccountResponse, AccountSummary, ActionParamsMap, ActionStep, CreateActionResponse, DepositAsset, DepositMethod, ExecuteActionResponse, MarketRef, Position } from '@lifi/perps-types';
1
+ import type { AccountResponse, AccountSummary, ActionParamsMap, ActionStep, CreateActionResponse, ExecuteActionResponse, MarketRef, Position } from '@lifi/perps-types';
2
2
  import { ActionType } from '@lifi/perps-types';
3
3
  import type { Address } from 'viem';
4
- import type { BuildProviderSetupParams, CancelOrdersParams, GetAccountResult, GetSetupParams, ModifyOrdersParams, PerpsClientOptions, PlaceOrderParams, PlaceTriggerOrderParams, ProviderSetup, SendAssetActionParams, WithdrawParams } from '../types/api.js';
4
+ import type { BuildProviderSetupParams, CancelOrdersParams, GetAccountResult, GetDepositFlowParams, GetSetupParams, ModifyOrdersParams, PerpsClientOptions, PlaceOrderParams, PlaceTriggerOrderParams, ProviderSetup, SendAssetActionParams, WithdrawParams } from '../types/api.js';
5
5
  import type { SwitchChainHook } from '../types/config.js';
6
- import type { PerpsSDKClient } from '../types/provider.js';
6
+ import type { DepositFlow } from '../types/deposit.js';
7
+ import type { PerpsSDKClient, SignActionProgress } from '../types/provider.js';
7
8
  /**
8
9
  * The primary high-level perps API: wraps a {@link PerpsSDKClient} and owns the
9
10
  * end-to-end signing pipeline for provider setup, orders, and account-level
@@ -63,6 +64,12 @@ export declare class PerpsClient {
63
64
  * arm signs as the user.
64
65
  */
65
66
  private delegateSignActions;
67
+ /**
68
+ * Let the plugin observe `/executeAction` per-step results before the core
69
+ * surfaces failures — e.g. to evict a locally stored credential the venue
70
+ * rejected.
71
+ */
72
+ private notifyExecuteResults;
66
73
  /**
67
74
  * Resolve the wallet that signs `actions`. For a USER-signed EIP-712 batch,
68
75
  * switch the configured wallet to the action's target chain via the
@@ -146,12 +153,16 @@ export declare class PerpsClient {
146
153
  */
147
154
  accountExists(provider: string, address: Address): Promise<boolean>;
148
155
  /**
149
- * Resolve provider-owned funding methods for a wallet address and source
150
- * asset. Providers that do not implement discovery return an empty list.
156
+ * The deposit flow for `params.address` at `params.provider`, delegated to the
157
+ * provider plugin — every deposit decision (the collateral destination, the
158
+ * account-opening pipeline, an outstanding setup gate) is venue-owned.
151
159
  *
160
+ * @returns `undefined` when the registered plugin declares no deposit flow.
161
+ * @throws {PerpsError} When the provider plugin is not registered, or the
162
+ * plugin's flow resolution fails.
152
163
  * @public
153
164
  */
154
- getProviderDepositMethods(provider: string, address: Address, sourceAsset: DepositAsset): Promise<DepositMethod[]>;
165
+ getDepositFlow(params: GetDepositFlowParams): Promise<DepositFlow | undefined>;
155
166
  /**
156
167
  * Return the unsatisfied entries on `Provider.setup` for this account as a
157
168
  * flat, self-describing list. Trading is gated on `isReady === true`.
@@ -163,6 +174,27 @@ export declare class PerpsClient {
163
174
  * @public
164
175
  */
165
176
  checkSetup(params: GetSetupParams): Promise<ProviderSetup>;
177
+ /**
178
+ * Resolve setup descriptors already satisfied from the provider's own typed
179
+ * account config projection. This catches client-held auth state (e.g. Ondo
180
+ * SIWE/JWT) that the backend cannot observe.
181
+ */
182
+ private resolveSatisfiedSetup;
183
+ /**
184
+ * Drain the pending setup steps the provider declares as internal via
185
+ * `PerpsProviderPlugin.internalSetupActions`, returning the set of action
186
+ * types to omit from the caller-facing setup list. Each such step is built,
187
+ * signed, and executed in place with the provider's own credentials. A
188
+ * descriptor whose `signers` include {@link PerpsSigner.USER} is left to
189
+ * render as a normal step. A drain failure is swallowed so it never blocks
190
+ * setup — the step stays unsatisfied and is retried on a later `checkSetup`.
191
+ */
192
+ private resolveInternalSetup;
193
+ /**
194
+ * Build unsigned setup steps for the supplied descriptor subset, preserving
195
+ * provider sequence order with SIWE descriptors prioritized.
196
+ */
197
+ private buildProviderSetupActions;
166
198
  /**
167
199
  * Build the unsigned setup `ActionStep`s still outstanding for an account,
168
200
  * ordered by descriptor `sequence`. The backend filters already-satisfied
@@ -326,14 +358,9 @@ export declare class PerpsClient {
326
358
  address: Address;
327
359
  action: T;
328
360
  params: ActionParamsMap[T];
361
+ /** Progress sink for on-chain legs (e.g. a native deposit's approve then
362
+ * deposit); called as each leg is submitted and confirmed. */
363
+ onProgress?: (progress: SignActionProgress) => void;
329
364
  }): Promise<ExecuteActionResponse>;
330
- /**
331
- * The `AUTH_TOKEN` arm of {@link execute}: the venue call runs client-side
332
- * via the plugin's `executeRestCallActions` because the credential headers
333
- * must never transit the LI.FI backend. The venue's results are what the
334
- * caller gets; the backend `executeAction` submission that follows is
335
- * bookkeeping only, sent with `headers` stripped.
336
- */
337
- private executeAuthTokenActions;
338
365
  }
339
366
  //# sourceMappingURL=PerpsClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PerpsClient.d.ts","sourceRoot":"","sources":["../../../src/client/PerpsClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PerpsClient.d.ts","sourceRoot":"","sources":["../../../src/client/PerpsClient.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,10 @@
1
- import { ActionType, PerpsErrorCode, SigningMethod } from '@lifi/perps-types';
1
+ import { ActionType, PerpsErrorCode, PerpsSigner, SigningMethod, } from '@lifi/perps-types';
2
2
  import { PerpsError } from '../errors/PerpsError.js';
3
3
  import { createAction } from '../services/createAction.js';
4
4
  import { executeAction } from '../services/executeAction.js';
5
5
  import { getAccount as fetchAccount } from '../services/getAccount.js';
6
6
  import { getProviders } from '../services/getProviders.js';
7
7
  import { switchSigningChain, userEip712TargetChainId, } from '../utils/switchChain.js';
8
- import { clientLog } from './clientLog.js';
9
8
  import { createPerpsClient } from './createPerpsClient.js';
10
9
  import { requireProvider as resolveProvider } from './requireProvider.js';
11
10
  /**
@@ -123,14 +122,25 @@ export class PerpsClient {
123
122
  * reading the end-user's wallet from the {@link SignActionsContext} when an
124
123
  * arm signs as the user.
125
124
  */
126
- async delegateSignActions(provider, address, descriptor, actions) {
125
+ async delegateSignActions(provider, address, descriptor, actions, onProgress) {
127
126
  const plugin = this.requireProvider(provider);
128
127
  if (typeof plugin.signActions !== 'function') {
129
128
  throw new PerpsError(PerpsErrorCode.SDKError, `Provider '${provider}' does not implement signActions for ` +
130
129
  `signingMethod '${descriptor.signingMethod}'.`);
131
130
  }
132
131
  const userWallet = await this.resolveSigningWallet(descriptor, actions);
133
- return plugin.signActions(descriptor.signingMethod, actions, address, this.buildSignActionsContext(descriptor, userWallet));
132
+ return plugin.signActions(descriptor.signingMethod, actions, address, this.buildSignActionsContext(descriptor, userWallet, onProgress));
133
+ }
134
+ /**
135
+ * Let the plugin observe `/executeAction` per-step results before the core
136
+ * surfaces failures — e.g. to evict a locally stored credential the venue
137
+ * rejected.
138
+ */
139
+ async notifyExecuteResults(provider, address, results) {
140
+ const plugin = this.requireProvider(provider);
141
+ if (typeof plugin.onExecuteResults === 'function') {
142
+ await plugin.onExecuteResults(address, results);
143
+ }
134
144
  }
135
145
  /**
136
146
  * Resolve the wallet that signs `actions`. For a USER-signed EIP-712 batch,
@@ -167,8 +177,11 @@ export class PerpsClient {
167
177
  * `EVM_TX` broadcasts); the switch stays transient — it never mutates
168
178
  * `sdkClient.userWallet`.
169
179
  */
170
- buildSignActionsContext(descriptor, userWallet) {
180
+ buildSignActionsContext(descriptor, userWallet, onProgress) {
171
181
  const ctx = { signers: descriptor.signers };
182
+ if (onProgress !== undefined) {
183
+ ctx.onProgress = onProgress;
184
+ }
172
185
  const wallet = userWallet ?? this.sdkClient.userWallet;
173
186
  if (wallet !== undefined) {
174
187
  ctx.userWallet = wallet;
@@ -260,17 +273,18 @@ export class PerpsClient {
260
273
  return this.requireProvider(provider).accountExists({ address });
261
274
  }
262
275
  /**
263
- * Resolve provider-owned funding methods for a wallet address and source
264
- * asset. Providers that do not implement discovery return an empty list.
276
+ * The deposit flow for `params.address` at `params.provider`, delegated to the
277
+ * provider plugin — every deposit decision (the collateral destination, the
278
+ * account-opening pipeline, an outstanding setup gate) is venue-owned.
265
279
  *
280
+ * @returns `undefined` when the registered plugin declares no deposit flow.
281
+ * @throws {PerpsError} When the provider plugin is not registered, or the
282
+ * plugin's flow resolution fails.
266
283
  * @public
267
284
  */
268
- async getProviderDepositMethods(provider, address, sourceAsset) {
269
- const plugin = this.requireProvider(provider);
270
- if (typeof plugin.getDepositMethods !== 'function') {
271
- return [];
272
- }
273
- return plugin.getDepositMethods({ address, sourceAsset });
285
+ async getDepositFlow(params) {
286
+ const plugin = this.requireProvider(params.provider);
287
+ return plugin.getDepositFlow?.({ address: params.address });
274
288
  }
275
289
  /**
276
290
  * Return the unsatisfied entries on `Provider.setup` for this account as a
@@ -284,15 +298,24 @@ export class PerpsClient {
284
298
  */
285
299
  async checkSetup(params) {
286
300
  const { provider, address } = params;
301
+ const metadata = await this.getProviderMetadata(provider);
302
+ const hasSiweSetup = metadata.setup.some((descriptor) => descriptor.signingMethod === SigningMethod.SIWE);
287
303
  // Gate on existence first: an unfunded account has no setup, so short-circuit
288
304
  // before any createAction round-trip and let the consumer prompt a deposit.
289
- if (!(await this.accountExists(provider, address))) {
305
+ //
306
+ // SIWE-first providers (Ondo) are the exception: they cannot reliably probe
307
+ // account existence before the user signs in, so setup must still stage.
308
+ if (!hasSiweSetup && !(await this.accountExists(provider, address))) {
290
309
  return { accountExists: false, setup: [], isReady: false };
291
310
  }
311
+ const satisfiedSetup = await this.resolveSatisfiedSetup(provider, address);
312
+ const pendingSetup = metadata.setup.filter((descriptor) => !satisfiedSetup.has(descriptor.type));
313
+ const hiddenSetup = await this.resolveInternalSetup(provider, address, pendingSetup);
314
+ const visibleSetup = pendingSetup.filter((descriptor) => !hiddenSetup.has(descriptor.type));
292
315
  // The backend filters already-satisfied setup actions and returns typed
293
316
  // data for those still outstanding; each plugin contributes its own
294
317
  // signer-bearing request fields.
295
- const { actions } = await this.buildProviderSetup({ provider, address });
318
+ const actions = await this.buildProviderSetupActions(provider, address, visibleSetup);
296
319
  return {
297
320
  accountExists: true,
298
321
  setup: actions,
@@ -300,18 +323,77 @@ export class PerpsClient {
300
323
  };
301
324
  }
302
325
  /**
303
- * Build the unsigned setup `ActionStep`s still outstanding for an account,
304
- * ordered by descriptor `sequence`. The backend filters already-satisfied
305
- * setup; each plugin contributes its own signer-bearing request fields and
306
- * any local-state params (e.g. Lighter's known pubkey).
307
- *
308
- * @public
326
+ * Resolve setup descriptors already satisfied from the provider's own typed
327
+ * account config projection. This catches client-held auth state (e.g. Ondo
328
+ * SIWE/JWT) that the backend cannot observe.
309
329
  */
310
- async buildProviderSetup(params) {
311
- const { provider, address } = params;
330
+ async resolveSatisfiedSetup(provider, address) {
312
331
  const metadata = await this.getProviderMetadata(provider);
313
- const orderedSetup = [...metadata.setup].sort((a, b) => (a.sequence ?? Number.MAX_SAFE_INTEGER) -
314
- (b.sequence ?? Number.MAX_SAFE_INTEGER));
332
+ const plugin = this.sdkClient.getProvider(provider);
333
+ if (!plugin || typeof plugin.getAccount !== 'function') {
334
+ return new Set();
335
+ }
336
+ const account = await plugin.getAccount({ address });
337
+ const settings = plugin.projectConfig(account.config, metadata.setup, metadata.options);
338
+ const setupTypes = new Set(metadata.setup.map((descriptor) => descriptor.type));
339
+ return new Set(settings
340
+ .filter((setting) => setting.satisfied && setupTypes.has(setting.type))
341
+ .map((setting) => setting.type));
342
+ }
343
+ /**
344
+ * Drain the pending setup steps the provider declares as internal via
345
+ * `PerpsProviderPlugin.internalSetupActions`, returning the set of action
346
+ * types to omit from the caller-facing setup list. Each such step is built,
347
+ * signed, and executed in place with the provider's own credentials. A
348
+ * descriptor whose `signers` include {@link PerpsSigner.USER} is left to
349
+ * render as a normal step. A drain failure is swallowed so it never blocks
350
+ * setup — the step stays unsatisfied and is retried on a later `checkSetup`.
351
+ */
352
+ async resolveInternalSetup(provider, address, pending) {
353
+ const plugin = this.sdkClient.getProvider(provider);
354
+ const internal = plugin?.internalSetupActions;
355
+ if (!internal || internal.length === 0) {
356
+ return new Set();
357
+ }
358
+ const internalTypes = new Set(internal);
359
+ const hidden = new Set();
360
+ for (const descriptor of pending) {
361
+ if (!internalTypes.has(descriptor.type) ||
362
+ descriptor.signers.includes(PerpsSigner.USER)) {
363
+ continue;
364
+ }
365
+ hidden.add(descriptor.type);
366
+ try {
367
+ const steps = await this.buildProviderSetupActions(provider, address, [
368
+ descriptor,
369
+ ]);
370
+ for (const step of steps) {
371
+ const signed = await this.signProviderSetupAction(provider, address, step);
372
+ if (signed !== undefined) {
373
+ await this.executeProviderSetup({
374
+ provider,
375
+ address,
376
+ setup: [step],
377
+ signedActions: [signed],
378
+ });
379
+ }
380
+ }
381
+ }
382
+ catch (error) {
383
+ console.debug(`[perps-sdk] internal setup step '${descriptor.type}' for '${provider}' did not complete; will retry on the next checkSetup.`, error);
384
+ }
385
+ }
386
+ return hidden;
387
+ }
388
+ /**
389
+ * Build unsigned setup steps for the supplied descriptor subset, preserving
390
+ * provider sequence order with SIWE descriptors prioritized.
391
+ */
392
+ async buildProviderSetupActions(provider, address, descriptors) {
393
+ const setupPriority = (descriptor) => descriptor.signingMethod === SigningMethod.SIWE ? 0 : 1;
394
+ const orderedSetup = [...descriptors].sort((a, b) => setupPriority(a) - setupPriority(b) ||
395
+ (a.sequence ?? Number.MAX_SAFE_INTEGER) -
396
+ (b.sequence ?? Number.MAX_SAFE_INTEGER));
315
397
  const plugin = this.sdkClient.getProvider(provider);
316
398
  const allActions = [];
317
399
  for (const descriptor of orderedSetup) {
@@ -332,7 +414,21 @@ export class PerpsClient {
332
414
  });
333
415
  allActions.push(...actions);
334
416
  }
335
- return { actions: allActions };
417
+ return allActions;
418
+ }
419
+ /**
420
+ * Build the unsigned setup `ActionStep`s still outstanding for an account,
421
+ * ordered by descriptor `sequence`. The backend filters already-satisfied
422
+ * setup; each plugin contributes its own signer-bearing request fields and
423
+ * any local-state params (e.g. Lighter's known pubkey).
424
+ *
425
+ * @public
426
+ */
427
+ async buildProviderSetup(params) {
428
+ const { provider, address } = params;
429
+ const metadata = await this.getProviderMetadata(provider);
430
+ const actions = await this.buildProviderSetupActions(provider, address, metadata.setup);
431
+ return { actions };
336
432
  }
337
433
  /**
338
434
  * Submit the signed setup steps returned by `checkSetup` (and signed by the
@@ -358,6 +454,7 @@ export class PerpsClient {
358
454
  action,
359
455
  actions: signedActions,
360
456
  });
457
+ await this.notifyExecuteResults(provider, address, results.results);
361
458
  const failure = results.results.find((r) => !r.success);
362
459
  if (failure) {
363
460
  throw new PerpsError(PerpsErrorCode.ExchangeRejected, failure.error);
@@ -551,7 +648,7 @@ export class PerpsClient {
551
648
  * @public
552
649
  */
553
650
  async execute(params) {
554
- const { provider, address, action } = params;
651
+ const { provider, address, action, onProgress } = params;
555
652
  const metadata = await this.getProviderMetadata(provider);
556
653
  const descriptor = findActionDescriptor(metadata, action);
557
654
  const { signerAddress, params: signerParams } = await this.resolveActionRequest(provider, descriptor, address);
@@ -565,17 +662,14 @@ export class PerpsClient {
565
662
  ...signerParams,
566
663
  },
567
664
  });
568
- const signedActions = await this.delegateSignActions(provider, address, descriptor, actions);
569
- if (descriptor.signingMethod === SigningMethod.AUTH_TOKEN) {
570
- return this.executeAuthTokenActions(provider, address, signerAddress ?? address, action, signedActions);
571
- }
665
+ const signedActions = await this.delegateSignActions(provider, address, descriptor, actions, onProgress);
572
666
  // A plugin may execute an action entirely client-side (e.g. Lighter's
573
667
  // token-authenticated venue mutations), leaving no backend-bound step. With
574
668
  // nothing to submit, skip the `/executeAction` hop.
575
669
  if (signedActions.length === 0) {
576
670
  return { results: [] };
577
671
  }
578
- return executeAction(this.sdkClient, {
672
+ const response = await executeAction(this.sdkClient, {
579
673
  provider,
580
674
  address,
581
675
  // The submitting account: the plugin-resolved signer (Hyperliquid's
@@ -584,47 +678,8 @@ export class PerpsClient {
584
678
  action,
585
679
  actions: signedActions,
586
680
  });
587
- }
588
- /**
589
- * The `AUTH_TOKEN` arm of {@link execute}: the venue call runs client-side
590
- * via the plugin's `executeRestCallActions` because the credential headers
591
- * must never transit the LI.FI backend. The venue's results are what the
592
- * caller gets; the backend `executeAction` submission that follows is
593
- * bookkeeping only, sent with `headers` stripped.
594
- */
595
- async executeAuthTokenActions(provider, address, signerAddress, action, signedActions) {
596
- const plugin = this.requireProvider(provider);
597
- if (typeof plugin.executeRestCallActions !== 'function') {
598
- throw new PerpsError(PerpsErrorCode.SDKError, `Provider '${provider}' does not implement executeRestCallActions ` +
599
- `for signingMethod 'authToken'.`);
600
- }
601
- const restCallSteps = signedActions.map((step) => {
602
- if (!('request' in step) || !('headers' in step)) {
603
- throw new PerpsError(PerpsErrorCode.SDKError, `Provider '${provider}' signed action '${step.action}' with a ` +
604
- `non-rest-call step for signingMethod 'authToken'.`);
605
- }
606
- return step;
607
- });
608
- const results = await plugin.executeRestCallActions(restCallSteps, address);
609
- try {
610
- await executeAction(this.sdkClient, {
611
- provider,
612
- address,
613
- signerAddress,
614
- action,
615
- actions: restCallSteps.map((step) => ({
616
- action: step.action,
617
- request: step.request,
618
- headers: {},
619
- })),
620
- });
621
- }
622
- catch (error) {
623
- // The venue call already succeeded above — a failed bookkeeping
624
- // submission must not mask a landed order, so it is logged, not thrown.
625
- clientLog.bookkeepingFailure(provider, error);
626
- }
627
- return { results };
681
+ await this.notifyExecuteResults(provider, address, response.results);
682
+ return response;
628
683
  }
629
684
  }
630
685
  //# sourceMappingURL=PerpsClient.js.map