@lifi/perps-sdk 21.1.0 → 22.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.
Files changed (161) hide show
  1. package/README.md +84 -16
  2. package/dist/cjs/client/PerpsClient.d.ts +3 -3
  3. package/dist/cjs/client/PerpsClient.d.ts.map +1 -1
  4. package/dist/cjs/client/PerpsClient.js.map +1 -1
  5. package/dist/cjs/decimal/convert.d.ts +1 -5
  6. package/dist/cjs/decimal/convert.d.ts.map +1 -1
  7. package/dist/cjs/decimal/convert.js +10 -28
  8. package/dist/cjs/decimal/convert.js.map +1 -1
  9. package/dist/cjs/decimal/format.d.ts +2 -1
  10. package/dist/cjs/decimal/format.d.ts.map +1 -1
  11. package/dist/cjs/decimal/format.js.map +1 -1
  12. package/dist/cjs/decimal/parse.d.ts +2 -4
  13. package/dist/cjs/decimal/parse.d.ts.map +1 -1
  14. package/dist/cjs/decimal/parse.js +5 -2
  15. package/dist/cjs/decimal/parse.js.map +1 -1
  16. package/dist/cjs/decimal/requireDecimal.d.ts.map +1 -0
  17. package/dist/cjs/{wire → decimal}/requireDecimal.js +2 -1
  18. package/dist/cjs/decimal/requireDecimal.js.map +1 -0
  19. package/dist/cjs/index.d.ts +5 -5
  20. package/dist/cjs/index.d.ts.map +1 -1
  21. package/dist/cjs/index.js +6 -20
  22. package/dist/cjs/index.js.map +1 -1
  23. package/dist/cjs/math/fills.d.ts +3 -3
  24. package/dist/cjs/math/fills.d.ts.map +1 -1
  25. package/dist/cjs/math/fills.js.map +1 -1
  26. package/dist/cjs/math/order.d.ts +1 -8
  27. package/dist/cjs/math/order.d.ts.map +1 -1
  28. package/dist/cjs/math/order.js +6 -11
  29. package/dist/cjs/math/order.js.map +1 -1
  30. package/dist/cjs/math/position.d.ts +3 -8
  31. package/dist/cjs/math/position.d.ts.map +1 -1
  32. package/dist/cjs/math/position.js +12 -12
  33. package/dist/cjs/math/position.js.map +1 -1
  34. package/dist/cjs/services/resolveSubscribeQuote.d.ts +1 -1
  35. package/dist/cjs/services/resolveSubscribeQuote.d.ts.map +1 -1
  36. package/dist/cjs/services/resolveSubscribeQuote.js +24 -13
  37. package/dist/cjs/services/resolveSubscribeQuote.js.map +1 -1
  38. package/dist/cjs/types/api.d.ts +4 -4
  39. package/dist/cjs/types/api.d.ts.map +1 -1
  40. package/dist/cjs/types/provider.d.ts +1 -1
  41. package/dist/cjs/types/provider.d.ts.map +1 -1
  42. package/dist/cjs/version.d.ts +1 -1
  43. package/dist/cjs/version.js +1 -1
  44. package/dist/cjs/wire/orderAmounts.d.ts +1 -2
  45. package/dist/cjs/wire/orderAmounts.d.ts.map +1 -1
  46. package/dist/cjs/wire/orderAmounts.js +19 -52
  47. package/dist/cjs/wire/orderAmounts.js.map +1 -1
  48. package/dist/cjs/wire/refuel.js +1 -1
  49. package/dist/cjs/wire/refuel.js.map +1 -1
  50. package/dist/cjs/wire/transferable.js +1 -1
  51. package/dist/cjs/wire/transferable.js.map +1 -1
  52. package/dist/cjs/wire/withdraw.d.ts.map +1 -1
  53. package/dist/cjs/wire/withdraw.js +1 -1
  54. package/dist/cjs/wire/withdraw.js.map +1 -1
  55. package/dist/esm/client/PerpsClient.d.ts +3 -3
  56. package/dist/esm/client/PerpsClient.d.ts.map +1 -1
  57. package/dist/esm/client/PerpsClient.js.map +1 -1
  58. package/dist/esm/decimal/convert.d.ts +8 -24
  59. package/dist/esm/decimal/convert.d.ts.map +1 -1
  60. package/dist/esm/decimal/convert.js +16 -42
  61. package/dist/esm/decimal/convert.js.map +1 -1
  62. package/dist/esm/decimal/format.d.ts +2 -1
  63. package/dist/esm/decimal/format.d.ts.map +1 -1
  64. package/dist/esm/decimal/format.js.map +1 -1
  65. package/dist/esm/decimal/parse.d.ts +7 -20
  66. package/dist/esm/decimal/parse.d.ts.map +1 -1
  67. package/dist/esm/decimal/parse.js +9 -4
  68. package/dist/esm/decimal/parse.js.map +1 -1
  69. package/dist/esm/{wire → decimal}/requireDecimal.d.ts +1 -1
  70. package/dist/esm/decimal/requireDecimal.d.ts.map +1 -0
  71. package/dist/esm/{wire → decimal}/requireDecimal.js +3 -2
  72. package/dist/esm/decimal/requireDecimal.js.map +1 -0
  73. package/dist/esm/index.d.ts +5 -5
  74. package/dist/esm/index.d.ts.map +1 -1
  75. package/dist/esm/index.js +4 -4
  76. package/dist/esm/index.js.map +1 -1
  77. package/dist/esm/math/fills.d.ts +3 -3
  78. package/dist/esm/math/fills.d.ts.map +1 -1
  79. package/dist/esm/math/fills.js +1 -1
  80. package/dist/esm/math/fills.js.map +1 -1
  81. package/dist/esm/math/order.d.ts +3 -34
  82. package/dist/esm/math/order.d.ts.map +1 -1
  83. package/dist/esm/math/order.js +8 -26
  84. package/dist/esm/math/order.js.map +1 -1
  85. package/dist/esm/math/position.d.ts +16 -34
  86. package/dist/esm/math/position.d.ts.map +1 -1
  87. package/dist/esm/math/position.js +23 -36
  88. package/dist/esm/math/position.js.map +1 -1
  89. package/dist/esm/services/resolveSubscribeQuote.d.ts +6 -1
  90. package/dist/esm/services/resolveSubscribeQuote.d.ts.map +1 -1
  91. package/dist/esm/services/resolveSubscribeQuote.js +29 -13
  92. package/dist/esm/services/resolveSubscribeQuote.js.map +1 -1
  93. package/dist/esm/types/api.d.ts +4 -4
  94. package/dist/esm/types/api.d.ts.map +1 -1
  95. package/dist/esm/types/provider.d.ts +1 -1
  96. package/dist/esm/types/provider.d.ts.map +1 -1
  97. package/dist/esm/version.d.ts +1 -1
  98. package/dist/esm/version.js +1 -1
  99. package/dist/esm/wire/orderAmounts.d.ts +15 -29
  100. package/dist/esm/wire/orderAmounts.d.ts.map +1 -1
  101. package/dist/esm/wire/orderAmounts.js +28 -88
  102. package/dist/esm/wire/orderAmounts.js.map +1 -1
  103. package/dist/esm/wire/refuel.js +1 -1
  104. package/dist/esm/wire/refuel.js.map +1 -1
  105. package/dist/esm/wire/transferable.js +1 -1
  106. package/dist/esm/wire/transferable.js.map +1 -1
  107. package/dist/esm/wire/withdraw.d.ts.map +1 -1
  108. package/dist/esm/wire/withdraw.js +1 -1
  109. package/dist/esm/wire/withdraw.js.map +1 -1
  110. package/dist/types/client/PerpsClient.d.ts +3 -3
  111. package/dist/types/client/PerpsClient.d.ts.map +1 -1
  112. package/dist/types/decimal/convert.d.ts +8 -24
  113. package/dist/types/decimal/convert.d.ts.map +1 -1
  114. package/dist/types/decimal/format.d.ts +2 -1
  115. package/dist/types/decimal/format.d.ts.map +1 -1
  116. package/dist/types/decimal/parse.d.ts +7 -20
  117. package/dist/types/decimal/parse.d.ts.map +1 -1
  118. package/dist/types/{wire → decimal}/requireDecimal.d.ts +1 -1
  119. package/dist/types/decimal/requireDecimal.d.ts.map +1 -0
  120. package/dist/types/index.d.ts +5 -5
  121. package/dist/types/index.d.ts.map +1 -1
  122. package/dist/types/math/fills.d.ts +3 -3
  123. package/dist/types/math/fills.d.ts.map +1 -1
  124. package/dist/types/math/order.d.ts +3 -34
  125. package/dist/types/math/order.d.ts.map +1 -1
  126. package/dist/types/math/position.d.ts +16 -34
  127. package/dist/types/math/position.d.ts.map +1 -1
  128. package/dist/types/services/resolveSubscribeQuote.d.ts +6 -1
  129. package/dist/types/services/resolveSubscribeQuote.d.ts.map +1 -1
  130. package/dist/types/types/api.d.ts +4 -4
  131. package/dist/types/types/api.d.ts.map +1 -1
  132. package/dist/types/types/provider.d.ts +1 -1
  133. package/dist/types/types/provider.d.ts.map +1 -1
  134. package/dist/types/version.d.ts +1 -1
  135. package/dist/types/wire/orderAmounts.d.ts +15 -29
  136. package/dist/types/wire/orderAmounts.d.ts.map +1 -1
  137. package/dist/types/wire/withdraw.d.ts.map +1 -1
  138. package/package.json +2 -2
  139. package/src/client/PerpsClient.ts +3 -2
  140. package/src/decimal/convert.ts +27 -54
  141. package/src/decimal/format.ts +3 -1
  142. package/src/decimal/parse.ts +10 -6
  143. package/src/{wire → decimal}/requireDecimal.ts +3 -6
  144. package/src/index.ts +4 -21
  145. package/src/math/fills.ts +8 -4
  146. package/src/math/order.ts +8 -31
  147. package/src/math/position.ts +32 -43
  148. package/src/services/resolveSubscribeQuote.ts +37 -19
  149. package/src/types/api.ts +4 -3
  150. package/src/types/provider.ts +1 -1
  151. package/src/version.ts +1 -1
  152. package/src/wire/orderAmounts.ts +35 -117
  153. package/src/wire/refuel.ts +1 -1
  154. package/src/wire/transferable.ts +1 -1
  155. package/src/wire/withdraw.ts +1 -1
  156. package/dist/cjs/wire/requireDecimal.d.ts.map +0 -1
  157. package/dist/cjs/wire/requireDecimal.js.map +0 -1
  158. package/dist/esm/wire/requireDecimal.d.ts.map +0 -1
  159. package/dist/esm/wire/requireDecimal.js.map +0 -1
  160. package/dist/types/wire/requireDecimal.d.ts.map +0 -1
  161. /package/dist/cjs/{wire → decimal}/requireDecimal.d.ts +0 -0
@@ -1,17 +1,13 @@
1
1
  /**
2
- * Display-tier position formulas. Every function takes and gives `number`;
3
- * exact decimal arithmetic happens internally with `DivBig`.
2
+ * Display-tier position formulas and margin-adjustment predicates. Every
3
+ * formula takes and gives `number`; exact decimal arithmetic happens
4
+ * internally with `DivBig`.
4
5
  *
5
6
  * Sign convention: long = +1, short = -1. Sizes passed to the `estimate*`
6
7
  * helpers are always non-negative magnitudes; direction is carried by
7
8
  * `isLong`.
8
9
  */
9
- /**
10
- * Direction sign for a position.
11
- *
12
- * @deprecated Inline `isLong ? 1 : -1`. Removed in the next major.
13
- */
14
- export declare function directionSign(isLong: boolean): 1 | -1;
10
+ import { type Position } from '@lifi/perps-types';
15
11
  /**
16
12
  * Calculate notional value of a position.
17
13
  *
@@ -62,10 +58,6 @@ export declare function calculateLiquidationDistance(params: {
62
58
  liquidationPrice: number;
63
59
  currentPrice: number;
64
60
  }): number;
65
- /**
66
- * @deprecated Use `calculateLiquidationDistance`. Removed in the next major.
67
- */
68
- export declare const liquidationDistancePercent: typeof calculateLiquidationDistance;
69
61
  /**
70
62
  * Effective leverage of an open position.
71
63
  *
@@ -80,10 +72,6 @@ export declare function calculateEffectiveLeverage(params: {
80
72
  positionValueUsd: number;
81
73
  marginUsd: number;
82
74
  }): number;
83
- /**
84
- * @deprecated Use `calculateEffectiveLeverage`. Removed in the next major.
85
- */
86
- export declare const effectiveLeverage: typeof calculateEffectiveLeverage;
87
75
  /**
88
76
  * Estimated liquidation price for an isolated-margin position, parameterised
89
77
  * by the venue's maintenance margin rate.
@@ -108,10 +96,6 @@ export declare function estimateLiquidationPrice(params: {
108
96
  isLong: boolean;
109
97
  maintenanceMarginRate: number;
110
98
  }): number | undefined;
111
- /**
112
- * @deprecated Use `estimateLiquidationPrice`. Removed in the next major.
113
- */
114
- export declare const estimateIsolatedLiquidationPrice: typeof estimateLiquidationPrice;
115
99
  /**
116
100
  * Whether an isolated position with this liquidation price is already past
117
101
  * liquidation at `currentPrice`: a long liquidates when the price falls to its
@@ -147,10 +131,6 @@ export declare function estimateAverageEntryPrice(params: {
147
131
  addSize: number;
148
132
  fillPrice: number;
149
133
  }): number | undefined;
150
- /**
151
- * @deprecated Use `estimateAverageEntryPrice`. Removed in the next major.
152
- */
153
- export declare const predictAverageEntryPrice: typeof estimateAverageEntryPrice;
154
134
  /**
155
135
  * Estimated effective leverage after adding margin and notional.
156
136
  *
@@ -168,10 +148,6 @@ export declare function estimateNewLeverage(params: {
168
148
  addNotional: number;
169
149
  addMargin: number;
170
150
  }): number | undefined;
171
- /**
172
- * @deprecated Use `estimateNewLeverage`. Removed in the next major.
173
- */
174
- export declare const predictNewLeverage: typeof estimateNewLeverage;
175
151
  /**
176
152
  * Estimated unrealised PnL at the current mark price.
177
153
  *
@@ -186,10 +162,6 @@ export declare function estimateUnrealizedPnl(params: {
186
162
  size: number;
187
163
  isLong: boolean;
188
164
  }): number;
189
- /**
190
- * @deprecated Use `estimateUnrealizedPnl`. Removed in the next major.
191
- */
192
- export declare const predictUnrealizedPnl: typeof estimateUnrealizedPnl;
193
165
  /**
194
166
  * Realised PnL on the portion of a position being closed.
195
167
  *
@@ -205,7 +177,17 @@ export declare function calculateRealizedPnl(params: {
205
177
  isLong: boolean;
206
178
  }): number;
207
179
  /**
208
- * @deprecated Use `calculateRealizedPnl`. Removed in the next major.
180
+ * Whether this position can take a margin adjustment at all: it holds margin of
181
+ * its own and its market exposes individual position margin.
182
+ *
183
+ * @public
184
+ */
185
+ export declare function positionSupportsMarginAdjustment(position: Position): boolean;
186
+ /**
187
+ * Whether a removal is among the adjustments this position permits. An
188
+ * `ADD_ONLY` market takes adds and no withdrawal.
189
+ *
190
+ * @public
209
191
  */
210
- export declare const realizedPnlOnClose: typeof calculateRealizedPnl;
192
+ export declare function positionSupportsMarginRemoval(position: Position): boolean;
211
193
  //# sourceMappingURL=position.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"position.d.ts","sourceRoot":"","sources":["../../../src/math/position.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"position.d.ts","sourceRoot":"","sources":["../../../src/math/position.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAEL,KAAK,QAAQ,EAEd,MAAM,mBAAmB,CAAA;AAG1B;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAK1E;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,GACX,MAAM,CAKR;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAQhE;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,GACf,MAAM,CAQR;AAED;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE;IACnD,gBAAgB,EAAE,MAAM,CAAA;IACxB,YAAY,EAAE,MAAM,CAAA;CACrB,GAAG,MAAM,CAMT;AAED;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE;IACjD,gBAAgB,EAAE,MAAM,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;CAClB,GAAG,MAAM,CAST;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE;IAC/C,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,OAAO,CAAA;IACf,qBAAqB,EAAE,MAAM,CAAA;CAC9B,GAAG,MAAM,GAAG,SAAS,CAqBrB;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE;IAChD,gBAAgB,EAAE,MAAM,CAAA;IACxB,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,OAAO,CAAA;CAChB,GAAG,OAAO,CAQV;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE;IAChD,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB,GAAG,MAAM,GAAG,SAAS,CAiBrB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IAC1C,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;CAClB,GAAG,MAAM,GAAG,SAAS,CAarB;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAC5C,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,OAAO,CAAA;CAChB,GAAG,MAAM,CAUT;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAC3C,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,OAAO,CAAA;CAChB,GAAG,MAAM,CAUT;AAED;;;;;GAKG;AACH,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAK5E;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAMzE"}
@@ -1,4 +1,4 @@
1
- import type { FeeTier } from '@lifi/perps-types';
1
+ import { type FeeTier } from '@lifi/perps-types';
2
2
  import type { PerpsSDKClient, ProviderGetQuoteParams, QuoteListener } from '../types/provider.js';
3
3
  import type { WsProvider } from '../websocket/types.js';
4
4
  /**
@@ -25,6 +25,11 @@ export declare const QUOTE_THROTTLE_MS = 100;
25
25
  * listeners once and cancels any pending trailing emission, so the wire
26
26
  * subscriptions' ref counts cannot be double-decremented.
27
27
  *
28
+ * A throw while building or delivering a streamed quote (an unparsable mark
29
+ * price, a throwing `onQuote`) is logged via `wsLog.listenerFailure` and the
30
+ * emission is skipped, on both the immediate and the trailing-timer path.
31
+ *
32
+ * @throws {PerpsError} `ValidationError` when `params.size` is not finite.
28
33
  * @throws {PerpsError} `MarketNotFound` when no market matches symbol+type.
29
34
  * @internal
30
35
  */
@@ -1 +1 @@
1
- {"version":3,"file":"resolveSubscribeQuote.d.ts","sourceRoot":"","sources":["../../../src/services/resolveSubscribeQuote.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EAGR,MAAM,mBAAmB,CAAA;AAE1B,OAAO,KAAK,EACV,cAAc,EACd,sBAAsB,EACtB,aAAa,EACd,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAGvD;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,MAAM,CAAA;AAEpC;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,EACjC,MAAM,EAAE,sBAAsB,EAC9B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,IAAI,CAAC,CAuFrB"}
1
+ {"version":3,"file":"resolveSubscribeQuote.d.ts","sourceRoot":"","sources":["../../../src/services/resolveSubscribeQuote.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EAIb,MAAM,mBAAmB,CAAA;AAG1B,OAAO,KAAK,EACV,cAAc,EACd,sBAAsB,EACtB,aAAa,EACd,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAIvD;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,MAAM,CAAA;AAEpC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,EACjC,MAAM,EAAE,sBAAsB,EAC9B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,IAAI,CAAC,CAiGrB"}
@@ -1,4 +1,4 @@
1
- import type { AccountConfigSetting, AccountResponse, CancelTwapOrderParams as ActionCancelTwapOrderParams, CreateReferralCodeParams as ActionCreateReferralCodeParams, ActionParamsMap, PlaceTwapOrderParams as ActionPlaceTwapOrderParams, ActionStep, ExecuteActionResponse, MarginMode, MarketRef, MetaActionType, ModifyOrderInput, OnboardParams, OrderSide, OrderType, PortfolioHistoryRange, SetupAction, SetupOption, SignedActionStep, TimeInForce, TriggerOrderInput, WithdrawalParams } from '@lifi/perps-types';
1
+ import type { AccountConfigSetting, AccountResponse, CancelTwapOrderParams as ActionCancelTwapOrderParams, CreateReferralCodeParams as ActionCreateReferralCodeParams, ActionParamsMap, PlaceTwapOrderParams as ActionPlaceTwapOrderParams, ActionStep, DecimalString, ExecuteActionResponse, MarginMode, MarketRef, MetaActionType, ModifyOrderInput, OnboardParams, OrderSide, OrderType, PortfolioHistoryRange, SetupAction, SetupOption, SignedActionStep, TimeInForce, TriggerOrderInput, WithdrawalParams } from '@lifi/perps-types';
2
2
  import type { Account, Address, WalletClient } from 'viem';
3
3
  import type { RetryConfig } from '../transport/retryPolicy.js';
4
4
  import type { RequestInterceptor, SwitchChainHook } from './config.js';
@@ -110,9 +110,9 @@ export interface PlaceOrderParams {
110
110
  side: OrderSide;
111
111
  type: Exclude<OrderType, OrderType.TWAP>;
112
112
  /** Base-asset size as a decimal wire string. */
113
- size: string;
113
+ size: DecimalString;
114
114
  /** Limit price as a decimal wire string; required by limit-style orders. */
115
- price: string;
115
+ price: DecimalString;
116
116
  /** Optional leverage multiplier; provider defaults apply when omitted. */
117
117
  leverage?: number;
118
118
  /**
@@ -191,7 +191,7 @@ export interface SendAssetActionParams {
191
191
  /** Destination DEX/account identifier understood by the provider. */
192
192
  destinationDex: string;
193
193
  /** Transfer amount as a provider-compatible decimal wire string. */
194
- amount: string;
194
+ amount: DecimalString;
195
195
  }
196
196
  /**
197
197
  * Parameters for canceling orders.
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/types/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,eAAe,EACf,qBAAqB,IAAI,2BAA2B,EACpD,wBAAwB,IAAI,8BAA8B,EAC1D,eAAe,EACf,oBAAoB,IAAI,0BAA0B,EAClD,UAAU,EACV,qBAAqB,EACrB,UAAU,EACV,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,SAAS,EACT,SAAS,EACT,qBAAqB,EACrB,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AACtE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAExD;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,kEAAkE;IAClE,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;IACvC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,mBAAmB,EAAE,CAAA;IACjC;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAA;IAC5C;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,KAAK,CAAA;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,2DAA2D;IAC3D,SAAS,CAAC,EAAE,mBAAmB,EAAE,CAAA;IACjC;;;;OAIG;IACH,WAAW,CAAC,EAAE,eAAe,CAAA;CAC9B;AAED;;;;;GAKG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,wCAAwC;IACxC,MAAM,EAAE,SAAS,CAAA;IACjB,IAAI,EAAE,SAAS,CAAA;IACf,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;IACxC,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAA;IACZ,4EAA4E;IAC5E,KAAK,EAAE,MAAM,CAAA;IACb,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;OAIG;IACH,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,8DAA8D;IAC9D,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,kEAAkE;IAClE,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,iBAAiB,CAAA;IAC9B,QAAQ,CAAC,EAAE,iBAAiB,CAAA;CAC7B;AAED;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,wCAAwC;IACxC,MAAM,EAAE,SAAS,CAAA;IACjB,IAAI,EAAE,SAAS,CAAA;IACf,UAAU,CAAC,EAAE,iBAAiB,CAAA;IAC9B,QAAQ,CAAC,EAAE,iBAAiB,CAAA;CAC7B;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAqB,SAAQ,0BAA0B;IACtE,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAsB,SAAQ,2BAA2B;IACxE,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,0EAA0E;IAC1E,UAAU,EAAE,gBAAgB,CAAA;CAC7B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,wGAAwG;IACxG,UAAU,EAAE,MAAM,CAAA;IAClB,gEAAgE;IAChE,SAAS,EAAE,MAAM,CAAA;IACjB,qEAAqE;IACrE,cAAc,EAAE,MAAM,CAAA;IACtB,oEAAoE;IACpE,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,oGAAoG;IACpG,GAAG,EAAE,MAAM,EAAE,CAAA;IACb,mFAAmF;IACnF,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,6CAA6C;IAC7C,aAAa,EAAE,gBAAgB,EAAE,CAAA;CAClC;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,qBAAqB,CAAA;CAC7B;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,qDAAqD;IACrD,UAAU,EAAE,WAAW,CAAA;IACvB,8DAA8D;IAC9D,SAAS,EAAE,OAAO,CAAA;IAClB;;;OAGG;IACH,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAA;IAC5B;;;;;OAKG;IACH,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;OAKG;IACH,aAAa,EAAE,OAAO,CAAA;IACtB,iEAAiE;IACjE,KAAK,EAAE,UAAU,EAAE,CAAA;IACnB;;;OAGG;IACH,OAAO,EAAE,OAAO,CAAA;IAChB;;;;;;;OAOG;IACH,SAAS,EAAE,kBAAkB,EAAE,CAAA;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,oDAAoD;IACpD,KAAK,EAAE,UAAU,EAAE,CAAA;IACnB,wDAAwD;IACxD,aAAa,EAAE,gBAAgB,EAAE,CAAA;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,qBAAqB,CAAA;CAC/B;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IACvD,wEAAwE;IACxE,QAAQ,EAAE,oBAAoB,EAAE,CAAA;CACjC;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAuB,SAAQ,aAAa;IAC3D,OAAO,EAAE,OAAO,CAAA;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,8BACf,SAAQ,8BAA8B;IACtC,OAAO,EAAE,OAAO,CAAA;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,uBAAuB,CAAC,CAAC,SAAS,cAAc;IAC/D,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,CAAC,CAAA;IACT,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,CAAA;CAC3B"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/types/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,eAAe,EACf,qBAAqB,IAAI,2BAA2B,EACpD,wBAAwB,IAAI,8BAA8B,EAC1D,eAAe,EACf,oBAAoB,IAAI,0BAA0B,EAClD,UAAU,EACV,aAAa,EACb,qBAAqB,EACrB,UAAU,EACV,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,SAAS,EACT,SAAS,EACT,qBAAqB,EACrB,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AACtE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAExD;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,kEAAkE;IAClE,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;IACvC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,mBAAmB,EAAE,CAAA;IACjC;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAA;IAC5C;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,KAAK,CAAA;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,2DAA2D;IAC3D,SAAS,CAAC,EAAE,mBAAmB,EAAE,CAAA;IACjC;;;;OAIG;IACH,WAAW,CAAC,EAAE,eAAe,CAAA;CAC9B;AAED;;;;;GAKG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,wCAAwC;IACxC,MAAM,EAAE,SAAS,CAAA;IACjB,IAAI,EAAE,SAAS,CAAA;IACf,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;IACxC,gDAAgD;IAChD,IAAI,EAAE,aAAa,CAAA;IACnB,4EAA4E;IAC5E,KAAK,EAAE,aAAa,CAAA;IACpB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;OAIG;IACH,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,8DAA8D;IAC9D,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,kEAAkE;IAClE,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,iBAAiB,CAAA;IAC9B,QAAQ,CAAC,EAAE,iBAAiB,CAAA;CAC7B;AAED;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,wCAAwC;IACxC,MAAM,EAAE,SAAS,CAAA;IACjB,IAAI,EAAE,SAAS,CAAA;IACf,UAAU,CAAC,EAAE,iBAAiB,CAAA;IAC9B,QAAQ,CAAC,EAAE,iBAAiB,CAAA;CAC7B;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAqB,SAAQ,0BAA0B;IACtE,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAsB,SAAQ,2BAA2B;IACxE,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,0EAA0E;IAC1E,UAAU,EAAE,gBAAgB,CAAA;CAC7B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,wGAAwG;IACxG,UAAU,EAAE,MAAM,CAAA;IAClB,gEAAgE;IAChE,SAAS,EAAE,MAAM,CAAA;IACjB,qEAAqE;IACrE,cAAc,EAAE,MAAM,CAAA;IACtB,oEAAoE;IACpE,MAAM,EAAE,aAAa,CAAA;CACtB;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,oGAAoG;IACpG,GAAG,EAAE,MAAM,EAAE,CAAA;IACb,mFAAmF;IACnF,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,6CAA6C;IAC7C,aAAa,EAAE,gBAAgB,EAAE,CAAA;CAClC;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,qBAAqB,CAAA;CAC7B;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,qDAAqD;IACrD,UAAU,EAAE,WAAW,CAAA;IACvB,8DAA8D;IAC9D,SAAS,EAAE,OAAO,CAAA;IAClB;;;OAGG;IACH,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAA;IAC5B;;;;;OAKG;IACH,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;OAKG;IACH,aAAa,EAAE,OAAO,CAAA;IACtB,iEAAiE;IACjE,KAAK,EAAE,UAAU,EAAE,CAAA;IACnB;;;OAGG;IACH,OAAO,EAAE,OAAO,CAAA;IAChB;;;;;;;OAOG;IACH,SAAS,EAAE,kBAAkB,EAAE,CAAA;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,oDAAoD;IACpD,KAAK,EAAE,UAAU,EAAE,CAAA;IACnB,wDAAwD;IACxD,aAAa,EAAE,gBAAgB,EAAE,CAAA;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,qBAAqB,CAAA;CAC/B;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IACvD,wEAAwE;IACxE,QAAQ,EAAE,oBAAoB,EAAE,CAAA;CACjC;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAuB,SAAQ,aAAa;IAC3D,OAAO,EAAE,OAAO,CAAA;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,8BACf,SAAQ,8BAA8B;IACtC,OAAO,EAAE,OAAO,CAAA;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,uBAAuB,CAAC,CAAC,SAAS,cAAc;IAC/D,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,CAAC,CAAA;IACT,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,CAAA;CAC3B"}
@@ -472,7 +472,7 @@ export interface PerpsProviderPlugin {
472
472
  * @throws {PerpsError} `ValidationError` when a `Position` decimal that the
473
473
  * venue formula reads is malformed.
474
474
  */
475
- positionRemovableMargin(position: Position): string | undefined;
475
+ positionRemovableMargin(position: Position): DecimalString | undefined;
476
476
  /**
477
477
  * Project a typed {@link AccountConfig} against the provider's `setup`
478
478
  * descriptors into `AccountConfigSetting[]`. Used by
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/types/provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/types/provider.ts"],"names":[],"mappings":"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"}
@@ -9,5 +9,5 @@ export declare const name = "@lifi/perps-sdk";
9
9
  *
10
10
  * @public
11
11
  */
12
- export declare const version = "21.1.0";
12
+ export declare const version = "22.0.0";
13
13
  //# sourceMappingURL=version.d.ts.map
@@ -1,4 +1,4 @@
1
- import { type DecimalString, type Market } from '@lifi/perps-types';
1
+ import type { DecimalString, Market } from '@lifi/perps-types';
2
2
  import type { PerpsSDKClient } from '../types/provider.js';
3
3
  /** @public */
4
4
  export interface OrderAmountsInput {
@@ -9,46 +9,32 @@ export interface OrderAmountsInput {
9
9
  amount: DecimalString;
10
10
  leverage: number;
11
11
  price: DecimalString;
12
- /** Decimals for the quote-asset amounts (margin, notional). Default 2. */
13
- quoteDecimals?: number;
14
12
  }
15
13
  /** @public */
16
14
  export interface OrderAmounts {
17
15
  /**
18
- * On the `quoteDecimals` grid: rounded up when derived, so it funds `size`
19
- * at the requested leverage, and truncated when the user holds it.
16
+ * The held `amount`, byte-identical, when the user holds the margin;
17
+ * otherwise `notional ÷ leverage`, a display and comparison value that
18
+ * never reaches a venue.
20
19
  */
21
20
  margin: DecimalString;
22
- /** Snapped onto the venue lot grid. */
21
+ /** Snapped onto the venue lot grid; the one amount an order sends. */
23
22
  size: DecimalString;
24
- /** Truncated to `quoteDecimals`. */
23
+ /** Exactly `size × price`, from the snapped size. */
25
24
  notional: DecimalString;
26
25
  }
27
26
  /**
28
27
  * The three order-entry amounts, derived from whichever one the user typed.
28
+ * Only `size` snaps, onto the market's venue lot grid, because an order sends
29
+ * size alone; no quote amount has a grid. A held margin returns byte-identical,
30
+ * `notional` is the snapped size × price, and a derived margin is
31
+ * `notional ÷ leverage` in `DivBig` (40 places, half-up).
29
32
  *
30
- * The held field is normalised first — truncated to `quoteDecimals` for a
31
- * margin or notional, snapped onto the venue lot grid for a size — and the
32
- * other two are then derived from that normalised value, so the three agree
33
- * with each other rather than with an input the user cannot see.
34
- *
35
- * Rounding is directional, so the result always funds itself:
36
- * `size × price ≤ margin × leverage`. A derived size truncates onto the lot
37
- * grid and a derived notional truncates onto the quote grid, but a derived
38
- * margin rounds **up** onto the quote grid, because it is the one amount that
39
- * has to cover the others rather than cap them.
40
- *
41
- * Formulas: `size = margin × leverage ÷ price`,
42
- * `margin = size × price ÷ leverage`, `notional = size × price`
43
- * (or `margin × leverage` when the margin is held).
44
- *
45
- * @returns `null` when `amount` or `price` is not a positive decimal string,
46
- * when `leverage` is not a positive finite number, or when the venue and
47
- * quote grids snap the result to a non-positive amount — a sub-lot size or
48
- * a sub-cent quote amount describes no order a venue can take.
49
- * @throws {PerpsError} `ValidationError` when `quoteDecimals` is not a
50
- * non-negative integer, or `SDKError` when `market.providerId` names no
51
- * registered provider plugin.
33
+ * @returns `null` when `amount` or `price` is not a positive
34
+ * {@link DecimalString}, when `leverage` is not a positive finite number, or
35
+ * when the snapped size is zero (below one lot).
36
+ * @throws {PerpsError} `SDKError` when `market.providerId` names no registered
37
+ * provider plugin.
52
38
  * @public
53
39
  */
54
40
  export declare function calculateOrderAmounts(input: OrderAmountsInput): OrderAmounts | null;
@@ -1 +1 @@
1
- {"version":3,"file":"orderAmounts.d.ts","sourceRoot":"","sources":["../../../src/wire/orderAmounts.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAElB,KAAK,MAAM,EAEZ,MAAM,mBAAmB,CAAA;AAI1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAG1D,cAAc;AACd,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,cAAc,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,sEAAsE;IACtE,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAA;IACpC,MAAM,EAAE,aAAa,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,aAAa,CAAA;IACpB,0EAA0E;IAC1E,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,cAAc;AACd,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,MAAM,EAAE,aAAa,CAAA;IACrB,uCAAuC;IACvC,IAAI,EAAE,aAAa,CAAA;IACnB,oCAAoC;IACpC,QAAQ,EAAE,aAAa,CAAA;CACxB;AAqDD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,iBAAiB,GACvB,YAAY,GAAG,IAAI,CAqDrB"}
1
+ {"version":3,"file":"orderAmounts.d.ts","sourceRoot":"","sources":["../../../src/wire/orderAmounts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAI9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAG1D,cAAc;AACd,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,cAAc,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,sEAAsE;IACtE,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAA;IACpC,MAAM,EAAE,aAAa,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,aAAa,CAAA;CACrB;AAED,cAAc;AACd,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,MAAM,EAAE,aAAa,CAAA;IACrB,sEAAsE;IACtE,IAAI,EAAE,aAAa,CAAA;IACnB,qDAAqD;IACrD,QAAQ,EAAE,aAAa,CAAA;CACxB;AAUD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,iBAAiB,GACvB,YAAY,GAAG,IAAI,CAiCrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"withdraw.d.ts","sourceRoot":"","sources":["../../../src/wire/withdraw.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAGjE;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,IAAI,CACP,mBAAmB,EACnB,WAAW,GAAG,eAAe,GAAG,eAAe,CAChD,GACA,aAAa,CASf"}
1
+ {"version":3,"file":"withdraw.d.ts","sourceRoot":"","sources":["../../../src/wire/withdraw.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAEjE;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,IAAI,CACP,mBAAmB,EACnB,WAAW,GAAG,eAAe,GAAG,eAAe,CAChD,GACA,aAAa,CASf"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lifi/perps-sdk",
3
- "version": "21.1.0",
3
+ "version": "22.0.0",
4
4
  "description": "LI.FI Perps SDK for perpetuals trading",
5
5
  "homepage": "https://github.com/lifinance/perps-sdk",
6
6
  "bugs": {
@@ -46,7 +46,7 @@
46
46
  "big.js": "^7.0.1",
47
47
  "partysocket": "^1.1.19",
48
48
  "viem": "^2.55.18",
49
- "@lifi/perps-types": "^19.0.0"
49
+ "@lifi/perps-types": "^20.0.0"
50
50
  },
51
51
  "publishConfig": {
52
52
  "access": "public"
@@ -7,6 +7,7 @@ import type {
7
7
  ActionStep,
8
8
  AvailableToTrade,
9
9
  CreateActionResponse,
10
+ DecimalString,
10
11
  ExecuteActionResponse,
11
12
  MarketRef,
12
13
  MarketSettings,
@@ -753,7 +754,7 @@ export class PerpsClient {
753
754
  * venue formula reads is malformed.
754
755
  * @public
755
756
  */
756
- getPositionRemovableMargin(position: Position): string | undefined {
757
+ getPositionRemovableMargin(position: Position): DecimalString | undefined {
757
758
  return this.requireProvider(
758
759
  position.market.providerId
759
760
  ).positionRemovableMargin(position)
@@ -1448,7 +1449,7 @@ export class PerpsClient {
1448
1449
  address: Address
1449
1450
  market: MarketRef
1450
1451
  action: 'add' | 'remove'
1451
- amount: string
1452
+ amount: DecimalString
1452
1453
  }): Promise<ExecuteActionResponse> {
1453
1454
  return this.execute({
1454
1455
  ...params,
@@ -2,7 +2,7 @@ import { type DecimalString, PerpsErrorCode } from '@lifi/perps-types'
2
2
  import Big from 'big.js'
3
3
  import { formatUnits } from 'viem'
4
4
  import { PerpsError } from '../errors/PerpsError.js'
5
- import { parseDecimal } from './parse.js'
5
+ import { requireDecimal } from './requireDecimal.js'
6
6
 
7
7
  /**
8
8
  * Off-grid resolution for {@link decimalToBaseUnits}:
@@ -14,19 +14,14 @@ import { parseDecimal } from './parse.js'
14
14
  */
15
15
  export type BaseUnitsRounding = 'truncate' | 'round'
16
16
 
17
- /**
18
- * @deprecated Use `BaseUnitsRounding`. Removed in the next major.
19
- */
20
- export type ScaleToIntegerPolicy = BaseUnitsRounding
21
-
22
17
  /**
23
18
  * Scale a decimal string to a scaled integer in exact decimal arithmetic — an
24
19
  * on-grid input maps to its exact scaled integer with no binary float
25
20
  * artifacts (`'0.29'` at 2 decimals is 29, never 28). Off-grid input resolves
26
21
  * per `rounding`; there is no silent default.
27
22
  *
28
- * @throws {PerpsError} `ValidationError` when `value` is not a decimal
29
- * numeric string, `decimals` is not a non-negative integer, or the scaled
23
+ * @throws {PerpsError} `ValidationError` when `value` is not a
24
+ * {@link DecimalString}, `decimals` is not a non-negative integer, or the scaled
30
25
  * result's magnitude exceeds `Number.MAX_SAFE_INTEGER`.
31
26
  * @public
32
27
  */
@@ -41,16 +36,7 @@ export const decimalToBaseUnits = (
41
36
  `Invalid decimals for integer scaling: ${decimals}`
42
37
  )
43
38
  }
44
- let parsed: Big
45
- try {
46
- parsed = new Big(value)
47
- } catch {
48
- throw new PerpsError(
49
- PerpsErrorCode.ValidationError,
50
- `Invalid decimal string for integer scaling: '${value}'`
51
- )
52
- }
53
- const scaled = parsed
39
+ const scaled = requireDecimal(value, 'decimalToBaseUnits(value)')
54
40
  .times(new Big(10).pow(decimals))
55
41
  .round(0, rounding === 'truncate' ? Big.roundDown : Big.roundHalfUp)
56
42
  if (scaled.abs().gt(Number.MAX_SAFE_INTEGER)) {
@@ -62,17 +48,15 @@ export const decimalToBaseUnits = (
62
48
  return scaled.toNumber()
63
49
  }
64
50
 
65
- /**
66
- * @deprecated Use `decimalToBaseUnits`. Removed in the next major.
67
- */
68
- export const scaleToInteger = decimalToBaseUnits
51
+ const BASE_UNITS_PATTERN = /^-?\d+$/
69
52
 
70
53
  /**
71
- * Convert a base-unit amount (bigint string) to a decimal string.
54
+ * Convert a base-unit amount (integer string) to a decimal string.
72
55
  *
73
56
  * @param amount - Amount in base units (e.g. "1000000" for 1 USDC)
74
57
  * @param decimals - Token decimals (e.g. 6 for USDC)
75
- * @returns Decimal string; `"0"` when `amount` is not a valid bigint
58
+ * @throws {PerpsError} `ValidationError` when `amount` is not an integer
59
+ * string, or `decimals` is not a non-negative integer.
76
60
  * @example
77
61
  * ```ts
78
62
  * baseUnitsToDecimal('1000000', 6) // '1'
@@ -80,27 +64,22 @@ export const scaleToInteger = decimalToBaseUnits
80
64
  * @public
81
65
  */
82
66
  export function baseUnitsToDecimal(
83
- amount: string,
67
+ amount: DecimalString,
84
68
  decimals: number
85
69
  ): DecimalString {
86
- try {
87
- return formatUnits(BigInt(amount), decimals)
88
- } catch {
89
- return '0'
70
+ if (!Number.isInteger(decimals) || decimals < 0) {
71
+ throw new PerpsError(
72
+ PerpsErrorCode.ValidationError,
73
+ `Invalid \`baseUnitsToDecimal(decimals)\`: ${decimals} is not a non-negative integer.`
74
+ )
90
75
  }
91
- }
92
-
93
- /**
94
- * @deprecated Use `baseUnitsToDecimal`. Removed in the next major.
95
- */
96
- export const fromBaseUnits = baseUnitsToDecimal
97
-
98
- /**
99
- * @deprecated Compose `parseDecimal(baseUnitsToDecimal(...))`. Removed in the
100
- * next major.
101
- */
102
- export function fromBaseUnitsNumber(amount: string, decimals: number): number {
103
- return parseDecimal(baseUnitsToDecimal(amount, decimals)) ?? 0
76
+ if (!BASE_UNITS_PATTERN.test(amount)) {
77
+ throw new PerpsError(
78
+ PerpsErrorCode.ValidationError,
79
+ `Invalid \`baseUnitsToDecimal(amount)\`: '${amount}' is not an integer base-unit string.`
80
+ )
81
+ }
82
+ return formatUnits(BigInt(amount), decimals)
104
83
  }
105
84
 
106
85
  /**
@@ -114,8 +93,8 @@ export function fromBaseUnitsNumber(amount: string, decimals: number): number {
114
93
  * float artifact: `'0.01'` at 18 decimals gives
115
94
  * `'0.010000000000000000'`, which `Number#toFixed` cannot.
116
95
  *
117
- * @throws {PerpsError} `ValidationError` when `value` is not a decimal
118
- * numeric string, or `decimals` is not a non-negative integer.
96
+ * @throws {PerpsError} `ValidationError` when `value` is not a
97
+ * {@link DecimalString}, or `decimals` is not a non-negative integer.
119
98
  * @public
120
99
  */
121
100
  export function truncateDecimal(
@@ -128,16 +107,10 @@ export function truncateDecimal(
128
107
  `Invalid decimals for truncation: ${decimals}`
129
108
  )
130
109
  }
131
- let parsed: Big
132
- try {
133
- parsed = new Big(value)
134
- } catch {
135
- throw new PerpsError(
136
- PerpsErrorCode.ValidationError,
137
- `Invalid decimal string for truncation: '${value}'`
138
- )
139
- }
140
- const truncated = parsed.round(decimals, Big.roundDown)
110
+ const truncated = requireDecimal(value, 'truncateDecimal(value)').round(
111
+ decimals,
112
+ Big.roundDown
113
+ )
141
114
  // big.js carries the sign through a round to zero; '-0.00' is not a spelling.
142
115
  return (truncated.eq(0) ? new Big(0) : truncated).toFixed(decimals)
143
116
  }
@@ -1,3 +1,5 @@
1
+ import type { DecimalString } from '@lifi/perps-types'
2
+
1
3
  /**
2
4
  * Options shared by the human-facing display formatters.
3
5
  *
@@ -28,7 +30,7 @@ export type RoundingMode = 'halfUp' | 'floor'
28
30
 
29
31
  const DEFAULT_PLACEHOLDER = '—'
30
32
 
31
- type FormatInput = number | string | null | undefined
33
+ type FormatInput = number | DecimalString | string | null | undefined
32
34
 
33
35
  /**
34
36
  * Extra decimal places used to normalise IEEE-754 representation noise before
@@ -1,4 +1,4 @@
1
- import type { DecimalString } from '@lifi/perps-types'
1
+ import { DECIMAL_PATTERN, type DecimalString } from '@lifi/perps-types'
2
2
 
3
3
  /**
4
4
  * Parse a string to a float, stripping common formatting artefacts.
@@ -24,11 +24,6 @@ function toFloat(value: string): number {
24
24
  return parseFloat(cleaned)
25
25
  }
26
26
 
27
- /**
28
- * @deprecated Use `parseDecimal`. Removed in the next major.
29
- */
30
- export const stringToFloat = toFloat
31
-
32
27
  const FORMATTED_NUMBER =
33
28
  /^(?:[+-]\s*)?(?:\$\s*)?(?:(?:\d{1,3}(?:,\d{3})+|\d+)(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?(?:\s*(?:%|USD))?$/i
34
29
 
@@ -54,3 +49,12 @@ export function parseDecimal(
54
49
  const parsed = toFloat(value)
55
50
  return Number.isFinite(parsed) ? parsed : undefined
56
51
  }
52
+
53
+ /**
54
+ * Narrows an unknown value to a {@link DecimalString}.
55
+ *
56
+ * @public
57
+ */
58
+ export function isDecimalString(value: unknown): value is DecimalString {
59
+ return typeof value === 'string' && DECIMAL_PATTERN.test(value)
60
+ }
@@ -1,13 +1,10 @@
1
- import {
2
- type DecimalString,
3
- isDecimalString,
4
- PerpsErrorCode,
5
- } from '@lifi/perps-types'
1
+ import { type DecimalString, PerpsErrorCode } from '@lifi/perps-types'
6
2
  import Big from 'big.js'
7
3
  import { PerpsError } from '../errors/PerpsError.js'
4
+ import { isDecimalString } from './parse.js'
8
5
 
9
6
  /**
10
- * Parse a wire-tier decimal input, naming the field it came from when the
7
+ * Parse a decimal input, naming the field it came from when the
11
8
  * value breaks the {@link DecimalString} contract, so a malformed amount
12
9
  * fails at the SDK boundary instead of inside big.js.
13
10
  *
package/src/index.ts CHANGED
@@ -17,17 +17,11 @@ export {
17
17
  } from './client/createPerpsClient.js'
18
18
  export { PerpsClient } from './client/PerpsClient.js'
19
19
  export { requireProvider } from './client/requireProvider.js'
20
- export type {
21
- BaseUnitsRounding,
22
- ScaleToIntegerPolicy,
23
- } from './decimal/convert.js'
20
+ export type { BaseUnitsRounding } from './decimal/convert.js'
24
21
  export {
25
22
  baseUnitsToDecimal,
26
23
  decimalToBaseUnits,
27
- fromBaseUnits,
28
- fromBaseUnitsNumber,
29
24
  numberToDecimalString,
30
- scaleToInteger,
31
25
  truncateDecimal,
32
26
  } from './decimal/convert.js'
33
27
  export type { FormatOptions, RoundingMode } from './decimal/format.js'
@@ -39,7 +33,7 @@ export {
39
33
  formatSignedUsd,
40
34
  formatUsd,
41
35
  } from './decimal/format.js'
42
- export { parseDecimal, stringToFloat } from './decimal/parse.js'
36
+ export { isDecimalString, parseDecimal } from './decimal/parse.js'
43
37
  export { PerpsErrorMessage } from './errors/constants.js'
44
38
  export { PerpsError } from './errors/PerpsError.js'
45
39
  export {
@@ -52,18 +46,13 @@ export {
52
46
  applySlippage,
53
47
  buildQuote,
54
48
  calculateExpectedPnl,
55
- calculatePositionSize,
56
49
  calculateRealizedPnlPercent,
57
50
  calculateSize,
58
51
  calculateTriggerPercent,
59
52
  calculateTriggerPrice,
60
53
  estimateFees,
61
54
  estimateRealizedPnl,
62
- expectedRealizedPnlForOpenOrder,
63
- expectedRealizedPnlForTriggerOrder,
64
55
  findMatchingPosition,
65
- percentFromPrice,
66
- priceFromPercent,
67
56
  resolveCloseSize,
68
57
  walkOrderbook,
69
58
  } from './math/order.js'
@@ -75,18 +64,12 @@ export {
75
64
  calculateRequiredMargin,
76
65
  calculateRoe,
77
66
  calculateUnrealizedPnl,
78
- directionSign,
79
- effectiveLeverage,
80
67
  estimateAverageEntryPrice,
81
- estimateIsolatedLiquidationPrice,
82
68
  estimateLiquidationPrice,
83
69
  estimateNewLeverage,
84
70
  estimateUnrealizedPnl,
85
- liquidationDistancePercent,
86
- predictAverageEntryPrice,
87
- predictNewLeverage,
88
- predictUnrealizedPnl,
89
- realizedPnlOnClose,
71
+ positionSupportsMarginAdjustment,
72
+ positionSupportsMarginRemoval,
90
73
  wouldImmediatelyLiquidate,
91
74
  } from './math/position.js'
92
75
  // Registries