@lifi/perps-sdk 24.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.
Files changed (163) hide show
  1. package/README.md +34 -28
  2. package/dist/cjs/decimal/arithmetic.d.ts +2 -0
  3. package/dist/cjs/decimal/arithmetic.d.ts.map +1 -1
  4. package/dist/cjs/decimal/arithmetic.js +6 -1
  5. package/dist/cjs/decimal/arithmetic.js.map +1 -1
  6. package/dist/cjs/decimal/convert.d.ts +0 -2
  7. package/dist/cjs/decimal/convert.d.ts.map +1 -1
  8. package/dist/cjs/decimal/convert.js +2 -11
  9. package/dist/cjs/decimal/convert.js.map +1 -1
  10. package/dist/cjs/decimal/decimalStringToBig.d.ts.map +1 -1
  11. package/dist/cjs/decimal/decimalStringToBig.js +3 -5
  12. package/dist/cjs/decimal/decimalStringToBig.js.map +1 -1
  13. package/dist/cjs/decimal/parse.d.ts +1 -0
  14. package/dist/cjs/decimal/parse.d.ts.map +1 -1
  15. package/dist/cjs/decimal/parse.js +2 -1
  16. package/dist/cjs/decimal/parse.js.map +1 -1
  17. package/dist/cjs/errors/invalidInput.d.ts +3 -0
  18. package/dist/cjs/errors/invalidInput.d.ts.map +1 -0
  19. package/dist/cjs/errors/invalidInput.js +9 -0
  20. package/dist/cjs/errors/invalidInput.js.map +1 -0
  21. package/dist/cjs/index.d.ts +5 -4
  22. package/dist/cjs/index.d.ts.map +1 -1
  23. package/dist/cjs/index.js +10 -6
  24. package/dist/cjs/index.js.map +1 -1
  25. package/dist/cjs/math/order.d.ts +4 -4
  26. package/dist/cjs/math/order.d.ts.map +1 -1
  27. package/dist/cjs/math/order.js +31 -18
  28. package/dist/cjs/math/order.js.map +1 -1
  29. package/dist/cjs/math/position.d.ts +3 -3
  30. package/dist/cjs/math/position.d.ts.map +1 -1
  31. package/dist/cjs/math/position.js +13 -11
  32. package/dist/cjs/math/position.js.map +1 -1
  33. package/dist/cjs/types/provider.d.ts.map +1 -1
  34. package/dist/cjs/utils/warnOnce.d.ts +6 -2
  35. package/dist/cjs/utils/warnOnce.d.ts.map +1 -1
  36. package/dist/cjs/utils/warnOnce.js +12 -6
  37. package/dist/cjs/utils/warnOnce.js.map +1 -1
  38. package/dist/cjs/version.d.ts +1 -1
  39. package/dist/cjs/version.js +1 -1
  40. package/dist/cjs/websocket/wsLog.d.ts +1 -1
  41. package/dist/cjs/websocket/wsLog.d.ts.map +1 -1
  42. package/dist/cjs/websocket/wsLog.js +4 -3
  43. package/dist/cjs/websocket/wsLog.js.map +1 -1
  44. package/dist/cjs/wire/orderAmounts.d.ts +3 -2
  45. package/dist/cjs/wire/orderAmounts.d.ts.map +1 -1
  46. package/dist/cjs/wire/orderAmounts.js +17 -13
  47. package/dist/cjs/wire/orderAmounts.js.map +1 -1
  48. package/dist/cjs/wire/refuel.js +2 -2
  49. package/dist/cjs/wire/refuel.js.map +1 -1
  50. package/dist/esm/decimal/arithmetic.d.ts +24 -10
  51. package/dist/esm/decimal/arithmetic.d.ts.map +1 -1
  52. package/dist/esm/decimal/arithmetic.js +26 -10
  53. package/dist/esm/decimal/arithmetic.js.map +1 -1
  54. package/dist/esm/decimal/compare.d.ts +3 -3
  55. package/dist/esm/decimal/compare.js +3 -3
  56. package/dist/esm/decimal/convert.d.ts +2 -24
  57. package/dist/esm/decimal/convert.d.ts.map +1 -1
  58. package/dist/esm/decimal/convert.js +3 -32
  59. package/dist/esm/decimal/convert.js.map +1 -1
  60. package/dist/esm/decimal/decimalStringToBig.d.ts +4 -5
  61. package/dist/esm/decimal/decimalStringToBig.d.ts.map +1 -1
  62. package/dist/esm/decimal/decimalStringToBig.js +7 -10
  63. package/dist/esm/decimal/decimalStringToBig.js.map +1 -1
  64. package/dist/esm/decimal/format.js +3 -3
  65. package/dist/esm/decimal/parse.d.ts +8 -1
  66. package/dist/esm/decimal/parse.d.ts.map +1 -1
  67. package/dist/esm/decimal/parse.js +8 -1
  68. package/dist/esm/decimal/parse.js.map +1 -1
  69. package/dist/esm/errors/invalidInput.d.ts +4 -0
  70. package/dist/esm/errors/invalidInput.d.ts.map +1 -0
  71. package/dist/esm/errors/invalidInput.js +7 -0
  72. package/dist/esm/errors/invalidInput.js.map +1 -0
  73. package/dist/esm/index.d.ts +5 -4
  74. package/dist/esm/index.d.ts.map +1 -1
  75. package/dist/esm/index.js +5 -4
  76. package/dist/esm/index.js.map +1 -1
  77. package/dist/esm/math/fills.d.ts +4 -4
  78. package/dist/esm/math/fills.js +4 -4
  79. package/dist/esm/math/order.d.ts +24 -26
  80. package/dist/esm/math/order.d.ts.map +1 -1
  81. package/dist/esm/math/order.js +52 -41
  82. package/dist/esm/math/order.js.map +1 -1
  83. package/dist/esm/math/position.d.ts +27 -27
  84. package/dist/esm/math/position.d.ts.map +1 -1
  85. package/dist/esm/math/position.js +38 -36
  86. package/dist/esm/math/position.js.map +1 -1
  87. package/dist/esm/services/resolveSubscribeQuote.d.ts +1 -1
  88. package/dist/esm/services/resolveSubscribeQuote.js +1 -1
  89. package/dist/esm/types/provider.d.ts +4 -3
  90. package/dist/esm/types/provider.d.ts.map +1 -1
  91. package/dist/esm/utils/createSafeFunction.d.ts +1 -1
  92. package/dist/esm/utils/createSafeFunction.js +1 -1
  93. package/dist/esm/utils/warnOnce.d.ts +17 -6
  94. package/dist/esm/utils/warnOnce.d.ts.map +1 -1
  95. package/dist/esm/utils/warnOnce.js +22 -10
  96. package/dist/esm/utils/warnOnce.js.map +1 -1
  97. package/dist/esm/version.d.ts +1 -1
  98. package/dist/esm/version.js +1 -1
  99. package/dist/esm/websocket/wsLog.d.ts +4 -4
  100. package/dist/esm/websocket/wsLog.d.ts.map +1 -1
  101. package/dist/esm/websocket/wsLog.js +8 -7
  102. package/dist/esm/websocket/wsLog.js.map +1 -1
  103. package/dist/esm/wire/orderAmounts.d.ts +9 -7
  104. package/dist/esm/wire/orderAmounts.d.ts.map +1 -1
  105. package/dist/esm/wire/orderAmounts.js +22 -18
  106. package/dist/esm/wire/orderAmounts.js.map +1 -1
  107. package/dist/esm/wire/refuel.d.ts +1 -1
  108. package/dist/esm/wire/refuel.js +4 -4
  109. package/dist/esm/wire/refuel.js.map +1 -1
  110. package/dist/esm/wire/transferable.d.ts +2 -2
  111. package/dist/esm/wire/transferable.js +2 -2
  112. package/dist/types/decimal/arithmetic.d.ts +24 -10
  113. package/dist/types/decimal/arithmetic.d.ts.map +1 -1
  114. package/dist/types/decimal/compare.d.ts +3 -3
  115. package/dist/types/decimal/convert.d.ts +2 -24
  116. package/dist/types/decimal/convert.d.ts.map +1 -1
  117. package/dist/types/decimal/decimalStringToBig.d.ts +4 -5
  118. package/dist/types/decimal/decimalStringToBig.d.ts.map +1 -1
  119. package/dist/types/decimal/parse.d.ts +8 -1
  120. package/dist/types/decimal/parse.d.ts.map +1 -1
  121. package/dist/types/errors/invalidInput.d.ts +4 -0
  122. package/dist/types/errors/invalidInput.d.ts.map +1 -0
  123. package/dist/types/index.d.ts +5 -4
  124. package/dist/types/index.d.ts.map +1 -1
  125. package/dist/types/math/fills.d.ts +4 -4
  126. package/dist/types/math/order.d.ts +24 -26
  127. package/dist/types/math/order.d.ts.map +1 -1
  128. package/dist/types/math/position.d.ts +27 -27
  129. package/dist/types/math/position.d.ts.map +1 -1
  130. package/dist/types/services/resolveSubscribeQuote.d.ts +1 -1
  131. package/dist/types/types/provider.d.ts +4 -3
  132. package/dist/types/types/provider.d.ts.map +1 -1
  133. package/dist/types/utils/createSafeFunction.d.ts +1 -1
  134. package/dist/types/utils/warnOnce.d.ts +17 -6
  135. package/dist/types/utils/warnOnce.d.ts.map +1 -1
  136. package/dist/types/version.d.ts +1 -1
  137. package/dist/types/websocket/wsLog.d.ts +4 -4
  138. package/dist/types/websocket/wsLog.d.ts.map +1 -1
  139. package/dist/types/wire/orderAmounts.d.ts +9 -7
  140. package/dist/types/wire/orderAmounts.d.ts.map +1 -1
  141. package/dist/types/wire/refuel.d.ts +1 -1
  142. package/dist/types/wire/transferable.d.ts +2 -2
  143. package/package.json +2 -2
  144. package/src/decimal/arithmetic.ts +36 -10
  145. package/src/decimal/compare.ts +3 -3
  146. package/src/decimal/convert.ts +3 -40
  147. package/src/decimal/decimalStringToBig.ts +7 -12
  148. package/src/decimal/format.ts +3 -3
  149. package/src/decimal/parse.ts +12 -1
  150. package/src/errors/invalidInput.ts +10 -0
  151. package/src/index.ts +8 -3
  152. package/src/math/fills.ts +4 -4
  153. package/src/math/order.ts +56 -48
  154. package/src/math/position.ts +43 -42
  155. package/src/services/resolveSubscribeQuote.ts +1 -1
  156. package/src/types/provider.ts +4 -3
  157. package/src/utils/createSafeFunction.ts +1 -1
  158. package/src/utils/warnOnce.ts +28 -12
  159. package/src/version.ts +1 -1
  160. package/src/websocket/wsLog.ts +22 -9
  161. package/src/wire/orderAmounts.ts +42 -24
  162. package/src/wire/refuel.ts +4 -4
  163. package/src/wire/transferable.ts +2 -2
package/dist/esm/index.js CHANGED
@@ -12,11 +12,11 @@ export * from '@lifi/perps-types';
12
12
  export { createPerpsClient, DEFAULT_API_URL, } from './client/createPerpsClient.js';
13
13
  export { PerpsClient } from './client/PerpsClient.js';
14
14
  export { requireProvider } from './client/requireProvider.js';
15
- export { absDecimalString, addDecimalString, divideDecimalString, divideDecimalStringRoundDown, multiplyDecimalString, safeAbsDecimalString, safeAddDecimalString, safeDivideDecimalString, safeDivideDecimalStringRoundDown, safeMultiplyDecimalString, safeSubtractDecimalString, subtractDecimalString, } from './decimal/arithmetic.js';
15
+ export { absDecimalString, addDecimalString, addDecimalStrings, divideDecimalString, divideDecimalStringRoundDown, multiplyDecimalString, safeAbsDecimalString, safeAddDecimalString, safeAddDecimalStrings, safeDivideDecimalString, safeDivideDecimalStringRoundDown, safeMultiplyDecimalString, safeSubtractDecimalString, subtractDecimalString, } from './decimal/arithmetic.js';
16
16
  export { compareDecimalStrings, isDecimalStringGreaterThan, isDecimalStringZero, safeCompareDecimalStrings, safeIsDecimalStringGreaterThan, safeIsDecimalStringZero, } from './decimal/compare.js';
17
- export { decimalStringToScaledInteger, numberToDecimalString, roundDecimalString, safeDecimalStringToScaledInteger, safeNumberToDecimalString, safeRoundDecimalString, safeScaledIntegerToDecimalString, safeTruncateDecimal, scaledIntegerToDecimalString, truncateDecimal, } from './decimal/convert.js';
17
+ export { decimalStringToScaledInteger, numberToDecimalString, roundDecimalString, safeDecimalStringToScaledInteger, safeNumberToDecimalString, safeRoundDecimalString, safeScaledIntegerToDecimalString, scaledIntegerToDecimalString, } from './decimal/convert.js';
18
18
  export { formatCompactUsd, formatNumber, formatPrice, formatSignedPercent, formatSignedUsd, formatUsd, } from './decimal/format.js';
19
- export { decimalStringToNumber, isDecimalString, safeDecimalStringToNumber, unknownToDecimalString, } from './decimal/parse.js';
19
+ export { decimalStringToNumber, isDecimalString, safeDecimalStringToNumber, safeUnknownToDecimalString, unknownToDecimalString, } from './decimal/parse.js';
20
20
  export { PerpsErrorMessage } from './errors/constants.js';
21
21
  export { PerpsError } from './errors/PerpsError.js';
22
22
  export { classifyFill, classifyFillFromPosition, FillClassification, } from './math/fills.js';
@@ -55,6 +55,7 @@ export { errorCodeFromStatus } from './transport/errorCodeFromStatus.js';
55
55
  export { fetchWithRetry, isAbortError } from './transport/fetchWithRetry.js';
56
56
  export { DISABLED_RETRY, LIFI_REQUEST_KEY, LIFI_RETRY_DEFAULTS, resolveRetryPolicy, } from './transport/retryPolicy.js';
57
57
  export { paginateActivity } from './utils/activityPaging.js';
58
+ export { createSafeFunction } from './utils/createSafeFunction.js';
58
59
  export { ETHEREUM_NATIVE_GAS, ETHEREUM_USDC, HYPERLIQUID_USDC, LIGHTER_USDC, ROBINHOOD_NATIVE_GAS, ROBINHOOD_USDG, } from './utils/depositAssets.js';
59
60
  export { ExplorerChainId, explorerTxUrl, explorerTxUrlFromBase, } from './utils/explorer.js';
60
61
  export { ACTIVE_ORDER_STATUSES, isActiveOrderStatus, isRegularOrder, isStopLossOrder, isTakeProfitOrder, isTpSlOrder, isTriggerOrder, isTwapOrder, triggerConditionFor, } from './utils/orderClassification.js';
@@ -70,7 +71,7 @@ export { PerpsWsClient } from './websocket/PerpsWsClient.js';
70
71
  export { ReconnectingWebSocket } from './websocket/ReconnectingWebSocket.js';
71
72
  export { WS_CHANNEL_TEARDOWN_LINGER_MS, WsProviderBase, } from './websocket/WsProviderBase.js';
72
73
  export { wsLog } from './websocket/wsLog.js';
73
- export { calculateOrderAmounts } from './wire/orderAmounts.js';
74
+ export { calculateOrderAmounts, safeCalculateOrderAmounts, } from './wire/orderAmounts.js';
74
75
  export { calculateRefuelAmount, REFUEL_FEE_MARGIN_PERCENT, } from './wire/refuel.js';
75
76
  export { snapOrderPrice, snapOrderSize } from './wire/snap.js';
76
77
  export { calculateTransferable } from './wire/transferable.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -12,8 +12,8 @@ export { FillClassification };
12
12
  * @param startPosition Signed position held BEFORE this fill (`> 0` long,
13
13
  * `< 0` short, `0` flat).
14
14
  * @param sz Unsigned fill size.
15
- * @returns `BUY` or `SELL` when `startPosition` or `sz` is not a decimal
16
- * string, so one malformed venue fill still maps.
15
+ * @returns `BUY` or `SELL` when `startPosition` or `sz` does not match the
16
+ * decimal pattern, so one malformed venue fill still maps.
17
17
  * @public
18
18
  */
19
19
  export declare function classifyFillFromPosition(startPosition: DecimalString, side: OrderSide, sz: DecimalString): FillClassification;
@@ -21,8 +21,8 @@ export declare function classifyFillFromPosition(startPosition: DecimalString, s
21
21
  * Classify a fill as open or close based on realizedPnl.
22
22
  * @deprecated Use `Fill.classification` instead — it uses startPosition
23
23
  * for accurate open/increase/reduce/close/reverse classification.
24
- * @returns `BUY` or `SELL` when `realizedPnl` is a string that is not a
25
- * decimal string.
24
+ * @returns `BUY` or `SELL` when `realizedPnl` is a string that does not match the
25
+ * decimal pattern.
26
26
  * @public
27
27
  */
28
28
  export declare function classifyFill(side: OrderSide, realizedPnl: DecimalString | null | undefined): FillClassification;
@@ -15,8 +15,8 @@ export { FillClassification };
15
15
  * @param startPosition Signed position held BEFORE this fill (`> 0` long,
16
16
  * `< 0` short, `0` flat).
17
17
  * @param sz Unsigned fill size.
18
- * @returns `BUY` or `SELL` when `startPosition` or `sz` is not a decimal
19
- * string, so one malformed venue fill still maps.
18
+ * @returns `BUY` or `SELL` when `startPosition` or `sz` does not match the
19
+ * decimal pattern, so one malformed venue fill still maps.
20
20
  * @public
21
21
  */
22
22
  export function classifyFillFromPosition(startPosition, side, sz) {
@@ -60,8 +60,8 @@ export function classifyFillFromPosition(startPosition, side, sz) {
60
60
  * Classify a fill as open or close based on realizedPnl.
61
61
  * @deprecated Use `Fill.classification` instead — it uses startPosition
62
62
  * for accurate open/increase/reduce/close/reverse classification.
63
- * @returns `BUY` or `SELL` when `realizedPnl` is a string that is not a
64
- * decimal string.
63
+ * @returns `BUY` or `SELL` when `realizedPnl` is a string that does not match the
64
+ * decimal pattern.
65
65
  * @public
66
66
  */
67
67
  export function classifyFill(side, realizedPnl) {
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Display-tier order formulas. Every function takes and gives decimal
3
3
  * strings; arithmetic is exact Big.js, with division to 40 decimal places.
4
- * Each formula throws `ValidationError` on an input that is not a decimal
5
- * string and has a `safe*` pair that gives `undefined` in place of the throw.
4
+ * Each formula throws `ValidationError` on an input that does not match the
5
+ * decimal pattern and has a `safe*` pair that gives `undefined` in place of the throw.
6
6
  */
7
7
  import { type FeeTier, type Market, type MarketContext, type Order, type OrderbookLevel, type Position, type Quote, type QuoteSide, type TradeType } from '@lifi/perps-types';
8
8
  /**
@@ -12,7 +12,7 @@ import { type FeeTier, type Market, type MarketContext, type Order, type Orderbo
12
12
  * ```ts
13
13
  * calculateSize('100', '10', '2000') // '0.5' (ETH at $2000)
14
14
  * ```
15
- * @throws {PerpsError} `ValidationError` when an input is not a decimal string
15
+ * @throws {PerpsError} `ValidationError` when an input does not match the decimal pattern
16
16
  * or `price` is zero.
17
17
  * @public
18
18
  */
@@ -23,7 +23,7 @@ export declare const safeCalculateSize: (marginUsd: string, leverage: string, pr
23
23
  * Estimated trading fee in USD: `sizeUsd × feeRate`.
24
24
  *
25
25
  * @param feeRate - Fee rate as a fraction (`'0.00035'` for 0.035%).
26
- * @throws {PerpsError} `ValidationError` when an input is not a decimal string.
26
+ * @throws {PerpsError} `ValidationError` when an input does not match the decimal pattern.
27
27
  * @public
28
28
  */
29
29
  export declare function estimateFees(sizeUsd: string, feeRate: string): string;
@@ -35,8 +35,8 @@ export declare const safeEstimateFees: (sizeUsd: string, feeRate: string) => str
35
35
  * is not rounded; snap it to the market tick before it goes to a venue.
36
36
  *
37
37
  * @param slippagePercent - Slippage tolerance as a percentage (`'0.5'` is 0.5%).
38
- * @throws {PerpsError} `ValidationError` when an input is not a decimal
39
- * string, or `slippagePercent` is -100 or less.
38
+ * @throws {PerpsError} `ValidationError` when an input does not match the
39
+ * decimal pattern, or `slippagePercent` is -100 or less.
40
40
  * @public
41
41
  */
42
42
  export declare function applySlippageToPrice(price: string, slippagePercent: string, isBuy: boolean): string;
@@ -59,31 +59,28 @@ export interface ExpectedPnl {
59
59
  *
60
60
  * @param entryPrice - Position entry or current market price.
61
61
  * @param margin - Margin amount in USD.
62
- * @returns The expected PnL, or `null` when `triggerPrice`, `entryPrice` or
63
- * `margin` is zero.
64
- * @throws {PerpsError} `ValidationError` when an input is not a decimal string.
62
+ * @throws {PerpsError} `ValidationError` when an input does not match the
63
+ * decimal pattern, or `triggerPrice`, `entryPrice` or `margin` is zero.
65
64
  * @public
66
65
  */
67
- export declare function calculateExpectedPnl(triggerPrice: string, entryPrice: string, leverage: string, isLong: boolean, margin: string): ExpectedPnl | null;
66
+ export declare function calculateExpectedPnl(triggerPrice: string, entryPrice: string, leverage: string, isLong: boolean, margin: string): ExpectedPnl;
68
67
  /** @public */
69
- export declare const safeCalculateExpectedPnl: (triggerPrice: string, entryPrice: string, leverage: string, isLong: boolean, margin: string) => ExpectedPnl | null | undefined;
68
+ export declare const safeCalculateExpectedPnl: (triggerPrice: string, entryPrice: string, leverage: string, isLong: boolean, margin: string) => ExpectedPnl | undefined;
70
69
  /**
71
- * Trigger price that realises a percentage gain or loss. A zero `entryPrice`
72
- * or `leverage` gives `'0'`.
70
+ * Trigger price that realises a percentage gain or loss.
73
71
  *
74
72
  * @param percent - Target gain or loss percentage (positive = profitable
75
73
  * direction).
76
- * @throws {PerpsError} `ValidationError` when an input is not a decimal string.
74
+ * @throws {PerpsError} `ValidationError` when an input does not match the decimal pattern.
77
75
  * @public
78
76
  */
79
77
  export declare function calculateTriggerPrice(percent: string, entryPrice: string, leverage: string, isLong: boolean): string;
80
78
  /** @public */
81
79
  export declare const safeCalculateTriggerPrice: (percent: string, entryPrice: string, leverage: string, isLong: boolean) => string | undefined;
82
80
  /**
83
- * Percentage gain or loss that a trigger price realises. A zero `entryPrice`
84
- * or `leverage` gives `'0'`.
81
+ * Percentage gain or loss that a trigger price realises.
85
82
  *
86
- * @throws {PerpsError} `ValidationError` when an input is not a decimal string.
83
+ * @throws {PerpsError} `ValidationError` when an input does not match the decimal pattern.
87
84
  * @public
88
85
  */
89
86
  export declare function calculateTriggerPercent(price: string, entryPrice: string, leverage: string, isLong: boolean): string;
@@ -91,9 +88,10 @@ export declare function calculateTriggerPercent(price: string, entryPrice: strin
91
88
  export declare const safeCalculateTriggerPercent: (price: string, entryPrice: string, leverage: string, isLong: boolean) => string | undefined;
92
89
  /**
93
90
  * Realized PnL as a percentage of the position value at close:
94
- * `realizedPnl ÷ (|size| × price) × 100`. A zero position value gives `'0'`.
91
+ * `realizedPnl ÷ (|size| × price) × 100`.
95
92
  *
96
- * @throws {PerpsError} `ValidationError` when an input is not a decimal string.
93
+ * @throws {PerpsError} `ValidationError` when an input does not match the
94
+ * decimal pattern or `size × price` is zero.
97
95
  * @public
98
96
  */
99
97
  export declare function calculateRealizedPnlPercent(realizedPnl: string, size: string, price: string): string;
@@ -119,7 +117,7 @@ interface BookWalk {
119
117
  * returning the best obtainable fill.
120
118
  *
121
119
  * @throws {PerpsError} `ValidationError` when `sizeUsd` or a level's `price`
122
- * or `size` is not a decimal string.
120
+ * or `size` does not match the decimal pattern.
123
121
  * @public
124
122
  */
125
123
  export declare function walkOrderbook(levels: OrderbookLevel[], sizeUsd: string): BookWalk;
@@ -148,7 +146,7 @@ interface BuildQuoteInput {
148
146
  * the market's `funding` (`null` for spot, which has none).
149
147
  *
150
148
  * @throws {PerpsError} `ValidationError` when `sizeUsd`, the mark price, the
151
- * taker fee or a book level is not a decimal string.
149
+ * taker fee or a book level does not match the decimal pattern.
152
150
  * @public
153
151
  */
154
152
  export declare function buildQuote(input: BuildQuoteInput): Quote;
@@ -171,7 +169,7 @@ export declare function findMatchingPosition(marketId: string, positions: readon
171
169
  *
172
170
  * Inputs are non-negative magnitudes.
173
171
  *
174
- * @throws {PerpsError} `ValidationError` when an input is not a decimal string.
172
+ * @throws {PerpsError} `ValidationError` when an input does not match the decimal pattern.
175
173
  * @public
176
174
  */
177
175
  export declare function resolveCloseSize(orderSize: string, positionSize: string): string;
@@ -184,13 +182,13 @@ export declare const safeResolveCloseSize: (orderSize: string, positionSize: str
184
182
  * nothing.
185
183
  *
186
184
  * @returns Realised PnL if the order would reduce the position, otherwise
187
- * `null`.
185
+ * `undefined`.
188
186
  * @throws {PerpsError} `ValidationError` when a price or size on the order or
189
- * the position is not a decimal string.
187
+ * the position does not match the decimal pattern.
190
188
  * @public
191
189
  */
192
- export declare function estimateRealizedPnl(order: Order, position: Position | undefined): string | null;
190
+ export declare function estimateRealizedPnl(order: Order, position: Position | undefined): string | undefined;
193
191
  /** @public */
194
- export declare const safeEstimateRealizedPnl: (order: Order, position: Position | undefined) => string | null | undefined;
192
+ export declare const safeEstimateRealizedPnl: (order: Order, position: Position | undefined) => string | undefined;
195
193
  export {};
196
194
  //# sourceMappingURL=order.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"order.d.ts","sourceRoot":"","sources":["../../../src/math/order.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"order.d.ts","sourceRoot":"","sources":["../../../src/math/order.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,13 @@
1
1
  /**
2
2
  * Display-tier order formulas. Every function takes and gives decimal
3
3
  * strings; arithmetic is exact Big.js, with division to 40 decimal places.
4
- * Each formula throws `ValidationError` on an input that is not a decimal
5
- * string and has a `safe*` pair that gives `undefined` in place of the throw.
4
+ * Each formula throws `ValidationError` on an input that does not match the
5
+ * decimal pattern and has a `safe*` pair that gives `undefined` in place of the throw.
6
6
  */
7
7
  import { OrderSide, OrderStatus, PerpsErrorCode, PositionSide, } from '@lifi/perps-types';
8
8
  import { DivBig } from '../decimal/big.js';
9
9
  import { bigToDecimalString, decimalStringToBig, decimalStringToDivBig, } from '../decimal/decimalStringToBig.js';
10
+ import { invalidInput } from '../errors/invalidInput.js';
10
11
  import { PerpsError } from '../errors/PerpsError.js';
11
12
  import { createSafeFunction } from '../utils/createSafeFunction.js';
12
13
  import { isActiveOrderStatus, isRegularOrder, isTriggerOrder, } from '../utils/orderClassification.js';
@@ -18,7 +19,7 @@ import { calculateRealizedPnl } from './position.js';
18
19
  * ```ts
19
20
  * calculateSize('100', '10', '2000') // '0.5' (ETH at $2000)
20
21
  * ```
21
- * @throws {PerpsError} `ValidationError` when an input is not a decimal string
22
+ * @throws {PerpsError} `ValidationError` when an input does not match the decimal pattern
22
23
  * or `price` is zero.
23
24
  * @public
24
25
  */
@@ -26,7 +27,7 @@ export function calculateSize(marginUsd, leverage, price) {
26
27
  const notional = decimalStringToDivBig(marginUsd).times(decimalStringToBig(leverage));
27
28
  const priceBig = decimalStringToBig(price);
28
29
  if (priceBig.eq(0)) {
29
- throw new PerpsError(PerpsErrorCode.ValidationError, 'Price must not be zero.');
30
+ throw invalidInput('price', 'must not be zero');
30
31
  }
31
32
  return bigToDecimalString(notional.div(priceBig));
32
33
  }
@@ -36,7 +37,7 @@ export const safeCalculateSize = createSafeFunction('calculateSize', calculateSi
36
37
  * Estimated trading fee in USD: `sizeUsd × feeRate`.
37
38
  *
38
39
  * @param feeRate - Fee rate as a fraction (`'0.00035'` for 0.035%).
39
- * @throws {PerpsError} `ValidationError` when an input is not a decimal string.
40
+ * @throws {PerpsError} `ValidationError` when an input does not match the decimal pattern.
40
41
  * @public
41
42
  */
42
43
  export function estimateFees(sizeUsd, feeRate) {
@@ -50,8 +51,8 @@ export const safeEstimateFees = createSafeFunction('estimateFees', estimateFees)
50
51
  * is not rounded; snap it to the market tick before it goes to a venue.
51
52
  *
52
53
  * @param slippagePercent - Slippage tolerance as a percentage (`'0.5'` is 0.5%).
53
- * @throws {PerpsError} `ValidationError` when an input is not a decimal
54
- * string, or `slippagePercent` is -100 or less.
54
+ * @throws {PerpsError} `ValidationError` when an input does not match the
55
+ * decimal pattern, or `slippagePercent` is -100 or less.
55
56
  * @public
56
57
  */
57
58
  export function applySlippageToPrice(price, slippagePercent, isBuy) {
@@ -71,9 +72,8 @@ export const safeApplySlippageToPrice = createSafeFunction('applySlippageToPrice
71
72
  *
72
73
  * @param entryPrice - Position entry or current market price.
73
74
  * @param margin - Margin amount in USD.
74
- * @returns The expected PnL, or `null` when `triggerPrice`, `entryPrice` or
75
- * `margin` is zero.
76
- * @throws {PerpsError} `ValidationError` when an input is not a decimal string.
75
+ * @throws {PerpsError} `ValidationError` when an input does not match the
76
+ * decimal pattern, or `triggerPrice`, `entryPrice` or `margin` is zero.
77
77
  * @public
78
78
  */
79
79
  export function calculateExpectedPnl(triggerPrice, entryPrice, leverage, isLong, margin) {
@@ -81,8 +81,14 @@ export function calculateExpectedPnl(triggerPrice, entryPrice, leverage, isLong,
81
81
  const entry = decimalStringToBig(entryPrice);
82
82
  const leverageBig = decimalStringToBig(leverage);
83
83
  const marginBig = decimalStringToBig(margin);
84
- if (trigger.eq(0) || entry.eq(0) || marginBig.eq(0)) {
85
- return null;
84
+ if (trigger.eq(0)) {
85
+ throw invalidInput('triggerPrice', 'must not be zero');
86
+ }
87
+ if (entry.eq(0)) {
88
+ throw invalidInput('entryPrice', 'must not be zero');
89
+ }
90
+ if (marginBig.eq(0)) {
91
+ throw invalidInput('margin', 'must not be zero');
86
92
  }
87
93
  const priceDiff = isLong
88
94
  ? trigger.minus(entry)
@@ -97,20 +103,22 @@ export function calculateExpectedPnl(triggerPrice, entryPrice, leverage, isLong,
97
103
  /** @public */
98
104
  export const safeCalculateExpectedPnl = createSafeFunction('calculateExpectedPnl', calculateExpectedPnl);
99
105
  /**
100
- * Trigger price that realises a percentage gain or loss. A zero `entryPrice`
101
- * or `leverage` gives `'0'`.
106
+ * Trigger price that realises a percentage gain or loss.
102
107
  *
103
108
  * @param percent - Target gain or loss percentage (positive = profitable
104
109
  * direction).
105
- * @throws {PerpsError} `ValidationError` when an input is not a decimal string.
110
+ * @throws {PerpsError} `ValidationError` when an input does not match the decimal pattern.
106
111
  * @public
107
112
  */
108
113
  export function calculateTriggerPrice(percent, entryPrice, leverage, isLong) {
109
114
  const percentBig = decimalStringToDivBig(percent);
110
115
  const entry = decimalStringToBig(entryPrice);
111
116
  const leverageBig = decimalStringToBig(leverage);
112
- if (entry.eq(0) || leverageBig.eq(0)) {
113
- return '0';
117
+ if (entry.eq(0)) {
118
+ throw invalidInput('entryPrice', 'must not be zero');
119
+ }
120
+ if (leverageBig.eq(0)) {
121
+ throw invalidInput('leverage', 'must not be zero');
114
122
  }
115
123
  const priceDelta = percentBig.times(entry).div(leverageBig.times(100));
116
124
  return bigToDecimalString(isLong ? entry.plus(priceDelta) : entry.minus(priceDelta));
@@ -118,18 +126,20 @@ export function calculateTriggerPrice(percent, entryPrice, leverage, isLong) {
118
126
  /** @public */
119
127
  export const safeCalculateTriggerPrice = createSafeFunction('calculateTriggerPrice', calculateTriggerPrice);
120
128
  /**
121
- * Percentage gain or loss that a trigger price realises. A zero `entryPrice`
122
- * or `leverage` gives `'0'`.
129
+ * Percentage gain or loss that a trigger price realises.
123
130
  *
124
- * @throws {PerpsError} `ValidationError` when an input is not a decimal string.
131
+ * @throws {PerpsError} `ValidationError` when an input does not match the decimal pattern.
125
132
  * @public
126
133
  */
127
134
  export function calculateTriggerPercent(price, entryPrice, leverage, isLong) {
128
135
  const priceBig = decimalStringToDivBig(price);
129
136
  const entry = decimalStringToBig(entryPrice);
130
137
  const leverageBig = decimalStringToBig(leverage);
131
- if (entry.eq(0) || leverageBig.eq(0)) {
132
- return '0';
138
+ if (entry.eq(0)) {
139
+ throw invalidInput('entryPrice', 'must not be zero');
140
+ }
141
+ if (leverageBig.eq(0)) {
142
+ throw invalidInput('leverage', 'must not be zero');
133
143
  }
134
144
  const priceDiff = isLong
135
145
  ? priceBig.minus(entry)
@@ -140,9 +150,10 @@ export function calculateTriggerPercent(price, entryPrice, leverage, isLong) {
140
150
  export const safeCalculateTriggerPercent = createSafeFunction('calculateTriggerPercent', calculateTriggerPercent);
141
151
  /**
142
152
  * Realized PnL as a percentage of the position value at close:
143
- * `realizedPnl ÷ (|size| × price) × 100`. A zero position value gives `'0'`.
153
+ * `realizedPnl ÷ (|size| × price) × 100`.
144
154
  *
145
- * @throws {PerpsError} `ValidationError` when an input is not a decimal string.
155
+ * @throws {PerpsError} `ValidationError` when an input does not match the
156
+ * decimal pattern or `size × price` is zero.
146
157
  * @public
147
158
  */
148
159
  export function calculateRealizedPnlPercent(realizedPnl, size, price) {
@@ -151,7 +162,7 @@ export function calculateRealizedPnlPercent(realizedPnl, size, price) {
151
162
  .abs()
152
163
  .times(decimalStringToBig(price));
153
164
  if (positionValue.eq(0)) {
154
- return '0';
165
+ throw invalidInput('size × price', 'must not be zero');
155
166
  }
156
167
  return bigToDecimalString(pnl.div(positionValue).times(100));
157
168
  }
@@ -166,7 +177,7 @@ export const safeCalculateRealizedPnlPercent = createSafeFunction('calculateReal
166
177
  * returning the best obtainable fill.
167
178
  *
168
179
  * @throws {PerpsError} `ValidationError` when `sizeUsd` or a level's `price`
169
- * or `size` is not a decimal string.
180
+ * or `size` does not match the decimal pattern.
170
181
  * @public
171
182
  */
172
183
  export function walkOrderbook(levels, sizeUsd) {
@@ -206,7 +217,7 @@ export const safeWalkOrderbook = createSafeFunction('walkOrderbook', walkOrderbo
206
217
  * the market's `funding` (`null` for spot, which has none).
207
218
  *
208
219
  * @throws {PerpsError} `ValidationError` when `sizeUsd`, the mark price, the
209
- * taker fee or a book level is not a decimal string.
220
+ * taker fee or a book level does not match the decimal pattern.
210
221
  * @public
211
222
  */
212
223
  export function buildQuote(input) {
@@ -258,7 +269,7 @@ export function findMatchingPosition(marketId, positions) {
258
269
  *
259
270
  * Inputs are non-negative magnitudes.
260
271
  *
261
- * @throws {PerpsError} `ValidationError` when an input is not a decimal string.
272
+ * @throws {PerpsError} `ValidationError` when an input does not match the decimal pattern.
262
273
  * @public
263
274
  */
264
275
  export function resolveCloseSize(orderSize, positionSize) {
@@ -275,34 +286,34 @@ export const safeResolveCloseSize = createSafeFunction('resolveCloseSize', resol
275
286
  * Expected rPnL for a resting limit order against a matching position.
276
287
  *
277
288
  * Reducing requires opposite sides (long position + SELL, short position +
278
- * BUY). Same-side orders add to the position and have no rPnL → `null`.
289
+ * BUY). Same-side orders add to the position and have no rPnL → `undefined`.
279
290
  * Projects `remainingSize`, because an already-filled quantity has realised
280
291
  * its PnL at the fill price rather than at this order's limit price. A
281
292
  * `remainingSize` of zero leaves nothing to project.
282
293
  */
283
294
  function regularOrderRealizedPnl(order, position) {
284
295
  if (!position || !isActiveOrderStatus(order.status)) {
285
- return null;
296
+ return undefined;
286
297
  }
287
298
  const isLong = position.side === PositionSide.LONG;
288
299
  const reducesPosition = (isLong && order.side === OrderSide.SELL) ||
289
300
  (!isLong && order.side === OrderSide.BUY);
290
301
  if (!reducesPosition) {
291
- return null;
302
+ return undefined;
292
303
  }
293
304
  if (order.price === undefined) {
294
- return null;
305
+ return undefined;
295
306
  }
296
307
  const orderSize = decimalStringToBig(order.remainingSize).abs();
297
308
  const positionSize = decimalStringToBig(position.size).abs();
298
309
  if (positionSize.lte(0)) {
299
- return null;
310
+ return undefined;
300
311
  }
301
312
  // `resolveCloseSize` reads a zero size as "close the whole position", a
302
313
  // convention that belongs to an order's submitted size. `remainingSize` is
303
314
  // the unfilled quantity, so zero means nothing is left to fill.
304
315
  if (orderSize.eq(0)) {
305
- return null;
316
+ return undefined;
306
317
  }
307
318
  return calculateRealizedPnl({
308
319
  entryPrice: position.entryPrice,
@@ -317,21 +328,21 @@ function triggerOrderRealizedPnl(order, position) {
317
328
  order.triggerPrice === undefined ||
318
329
  !isActiveOrderStatus(order.status) ||
319
330
  order.status === OrderStatus.PENDING) {
320
- return null;
331
+ return undefined;
321
332
  }
322
333
  const isLong = position.side === PositionSide.LONG;
323
334
  if ((isLong && order.side !== OrderSide.SELL) ||
324
335
  (!isLong && order.side !== OrderSide.BUY)) {
325
- return null;
336
+ return undefined;
326
337
  }
327
338
  const orderSize = decimalStringToBig(order.remainingSize).abs();
328
339
  const positionSize = decimalStringToBig(position.size).abs();
329
340
  if (positionSize.lte(0)) {
330
- return null;
341
+ return undefined;
331
342
  }
332
343
  if (orderSize.eq(0) &&
333
344
  (!decimalStringToBig(order.originalSize).eq(0) || !order.reduceOnly)) {
334
- return null;
345
+ return undefined;
335
346
  }
336
347
  return calculateRealizedPnl({
337
348
  entryPrice: position.entryPrice,
@@ -347,9 +358,9 @@ function triggerOrderRealizedPnl(order, position) {
347
358
  * nothing.
348
359
  *
349
360
  * @returns Realised PnL if the order would reduce the position, otherwise
350
- * `null`.
361
+ * `undefined`.
351
362
  * @throws {PerpsError} `ValidationError` when a price or size on the order or
352
- * the position is not a decimal string.
363
+ * the position does not match the decimal pattern.
353
364
  * @public
354
365
  */
355
366
  export function estimateRealizedPnl(order, position) {
@@ -359,7 +370,7 @@ export function estimateRealizedPnl(order, position) {
359
370
  if (isRegularOrder(order)) {
360
371
  return regularOrderRealizedPnl(order, position);
361
372
  }
362
- return null;
373
+ return undefined;
363
374
  }
364
375
  /** @public */
365
376
  export const safeEstimateRealizedPnl = createSafeFunction('estimateRealizedPnl', estimateRealizedPnl);
@@ -1 +1 @@
1
- {"version":3,"file":"order.js","sourceRoot":"","sources":["../../../src/math/order.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"order.js","sourceRoot":"","sources":["../../../src/math/order.ts"],"names":[],"mappings":"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"}