@lifi/perps-sdk 26.0.0 → 27.1.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 (62) hide show
  1. package/README.md +19 -5
  2. package/dist/cjs/client/PerpsClient.d.ts.map +1 -1
  3. package/dist/cjs/client/PerpsClient.js +4 -7
  4. package/dist/cjs/client/PerpsClient.js.map +1 -1
  5. package/dist/cjs/index.d.ts +3 -2
  6. package/dist/cjs/index.d.ts.map +1 -1
  7. package/dist/cjs/index.js +8 -4
  8. package/dist/cjs/index.js.map +1 -1
  9. package/dist/cjs/math/fills.d.ts +2 -1
  10. package/dist/cjs/math/fills.d.ts.map +1 -1
  11. package/dist/cjs/math/fills.js +12 -0
  12. package/dist/cjs/math/fills.js.map +1 -1
  13. package/dist/cjs/utils/actionResult.d.ts +3 -0
  14. package/dist/cjs/utils/actionResult.d.ts.map +1 -0
  15. package/dist/cjs/utils/actionResult.js +9 -0
  16. package/dist/cjs/utils/actionResult.js.map +1 -0
  17. package/dist/cjs/version.d.ts +1 -1
  18. package/dist/cjs/version.js +1 -1
  19. package/dist/cjs/wire/snap.d.ts +1 -0
  20. package/dist/cjs/wire/snap.d.ts.map +1 -1
  21. package/dist/cjs/wire/snap.js +12 -0
  22. package/dist/cjs/wire/snap.js.map +1 -1
  23. package/dist/esm/client/PerpsClient.d.ts +5 -4
  24. package/dist/esm/client/PerpsClient.d.ts.map +1 -1
  25. package/dist/esm/client/PerpsClient.js +10 -12
  26. package/dist/esm/client/PerpsClient.js.map +1 -1
  27. package/dist/esm/index.d.ts +3 -2
  28. package/dist/esm/index.d.ts.map +1 -1
  29. package/dist/esm/index.js +3 -2
  30. package/dist/esm/index.js.map +1 -1
  31. package/dist/esm/math/fills.d.ts +10 -1
  32. package/dist/esm/math/fills.d.ts.map +1 -1
  33. package/dist/esm/math/fills.js +19 -0
  34. package/dist/esm/math/fills.js.map +1 -1
  35. package/dist/esm/utils/actionResult.d.ts +4 -0
  36. package/dist/esm/utils/actionResult.d.ts.map +1 -0
  37. package/dist/esm/utils/actionResult.js +7 -0
  38. package/dist/esm/utils/actionResult.js.map +1 -0
  39. package/dist/esm/version.d.ts +1 -1
  40. package/dist/esm/version.js +1 -1
  41. package/dist/esm/wire/snap.d.ts +7 -0
  42. package/dist/esm/wire/snap.d.ts.map +1 -1
  43. package/dist/esm/wire/snap.js +17 -0
  44. package/dist/esm/wire/snap.js.map +1 -1
  45. package/dist/types/client/PerpsClient.d.ts +5 -4
  46. package/dist/types/client/PerpsClient.d.ts.map +1 -1
  47. package/dist/types/index.d.ts +3 -2
  48. package/dist/types/index.d.ts.map +1 -1
  49. package/dist/types/math/fills.d.ts +10 -1
  50. package/dist/types/math/fills.d.ts.map +1 -1
  51. package/dist/types/utils/actionResult.d.ts +4 -0
  52. package/dist/types/utils/actionResult.d.ts.map +1 -0
  53. package/dist/types/version.d.ts +1 -1
  54. package/dist/types/wire/snap.d.ts +7 -0
  55. package/dist/types/wire/snap.d.ts.map +1 -1
  56. package/package.json +2 -2
  57. package/src/client/PerpsClient.ts +11 -15
  58. package/src/index.ts +7 -1
  59. package/src/math/fills.ts +31 -0
  60. package/src/utils/actionResult.ts +10 -0
  61. package/src/version.ts +1 -1
  62. package/src/wire/snap.ts +25 -0
@@ -20,7 +20,7 @@ export { decimalStringToNumber, isDecimalString, safeDecimalStringToNumber, safe
20
20
  export { PerpsErrorMessage } from './errors/constants.js';
21
21
  export { PerpsError } from './errors/PerpsError.js';
22
22
  export { PerpsExecutionError, rethrowWithKnownResults, } from './errors/PerpsExecutionError.js';
23
- export { classifyFillFromPosition, FillClassification, } from './math/fills.js';
23
+ export { calculateAverageFillPrice, classifyFillFromPosition, FillClassification, } from './math/fills.js';
24
24
  export type { ExpectedPnl } from './math/order.js';
25
25
  export { buildQuote, calculateExpectedPnl, calculateOrderbookWalk, calculateRealizedPnlPercent, calculateSize, calculateSlippagePrice, calculateTriggerPercent, calculateTriggerPrice, estimateFees, estimateRealizedPnl, resolveCloseSize, resolveMatchingPosition, safeBuildQuote, safeCalculateExpectedPnl, safeCalculateOrderbookWalk, safeCalculateRealizedPnlPercent, safeCalculateSize, safeCalculateSlippagePrice, safeCalculateTriggerPercent, safeCalculateTriggerPrice, safeEstimateFees, safeEstimateRealizedPnl, safeResolveCloseSize, } from './math/order.js';
26
26
  export { calculateEffectiveLeverage, calculateLiquidationDistance, calculateNotionalValue, calculateRealizedPnl, calculateRequiredMargin, calculateRoe, calculateUnrealizedPnl, estimateAverageEntryPrice, estimateLiquidationPrice, estimateLiquidationPriceAtMarketRate, estimateNewLeverage, estimateUnrealizedPnl, isPositionMarginAdjustable, isPositionMarginRemovable, safeCalculateEffectiveLeverage, safeCalculateLiquidationDistance, safeCalculateNotionalValue, safeCalculateRealizedPnl, safeCalculateRequiredMargin, safeCalculateRoe, safeCalculateUnrealizedPnl, safeEstimateAverageEntryPrice, safeEstimateLiquidationPrice, safeEstimateLiquidationPriceAtMarketRate, safeEstimateNewLeverage, safeEstimateUnrealizedPnl, safeWouldImmediatelyLiquidate, wouldImmediatelyLiquidate, } from './math/position.js';
@@ -82,6 +82,7 @@ export type { PerpsBaseConfig, PerpsClientSigner, RequestInterceptor, SDKRequest
82
82
  export type { DeclaredDepositAsset, DepositFlow, DepositFlowFirstDepositPipeline, DepositFlowLifiSwap, DepositFlowSetupRequired, } from './types/deposit.js';
83
83
  export type { ActionSignerContribution, LiquidationEstimateParams, PerpsProvider, PerpsProviderPlugin, PerpsSDKClient, ProviderAccountExistsParams, ProviderGetAccountParams, ProviderGetActivityParams, ProviderGetAvailableToTradeParams, ProviderGetDepositFlowParams, ProviderGetFillsParams, ProviderGetMarketSettingsParams, ProviderGetOrderParams, ProviderGetOrdersParams, ProviderGetPortfolioHistoryParams, ProviderGetPositionsParams, ProviderGetQuoteParams, ProviderGetWithdrawableBalancesParams, ProviderGetWithdrawalTypesParams, ProviderGetWithdrawFlowParams, QuoteListener, SignActionProgress, SignActionsContext, SignActionsResult, } from './types/provider.js';
84
84
  export type { ProviderWithdrawableBalance, WithdrawableBalance, WithdrawalSourceTypes, WithdrawalTypeOption, WithdrawFlow, WithdrawFlowReady, WithdrawFlowSetupRequired, } from './types/withdrawal.js';
85
+ export { isSubmittedOrAccepted } from './utils/actionResult.js';
85
86
  export { paginateActivity } from './utils/activityPaging.js';
86
87
  export { createSafeFunction } from './utils/createSafeFunction.js';
87
88
  export { ETHEREUM_NATIVE_GAS, ETHEREUM_USDC, HYPERLIQUID_USDC, LIGHTER_USDC, ROBINHOOD_NATIVE_GAS, ROBINHOOD_USDG, } from './utils/depositAssets.js';
@@ -106,7 +107,7 @@ export type { OrderAmounts, OrderAmountsInput, } from './wire/orderAmounts.js';
106
107
  export { calculateOrderAmounts, safeCalculateOrderAmounts, } from './wire/orderAmounts.js';
107
108
  export type { RefuelAmountInput } from './wire/refuel.js';
108
109
  export { calculateRefuelAmount, REFUEL_FEE_MARGIN_PERCENT, } from './wire/refuel.js';
109
- export { snapOrderPrice, snapOrderSize } from './wire/snap.js';
110
+ export { safeSnapOrderPrice, snapOrderPrice, snapOrderSize, } from './wire/snap.js';
110
111
  export { calculateTransferable } from './wire/transferable.js';
111
112
  export { calculateWithdrawMax } from './wire/withdraw.js';
112
113
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { type DecimalString, FillClassification, OrderSide } from '@lifi/perps-types';
1
+ import { type DecimalString, type Fill, FillClassification, OrderSide } from '@lifi/perps-types';
2
2
  /**
3
3
  * Re-exported fill taxonomy used by {@link classifyFillFromPosition}.
4
4
  *
@@ -17,4 +17,13 @@ export { FillClassification };
17
17
  * @public
18
18
  */
19
19
  export declare function classifyFillFromPosition(startPosition: DecimalString, side: OrderSide, sz: DecimalString): FillClassification;
20
+ /**
21
+ * Size-weighted average price of `fills`, Σ(size × price) / Σ size, to the
22
+ * 40 decimal places of division with no display rounding. A fill whose `size`
23
+ * or `price` does not match the decimal pattern is skipped.
24
+ *
25
+ * @returns `undefined` when the summed size is not above zero.
26
+ * @public
27
+ */
28
+ export declare function calculateAverageFillPrice(fills: readonly Fill[]): DecimalString | undefined;
20
29
  //# sourceMappingURL=fills.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fills.d.ts","sourceRoot":"","sources":["../../../src/math/fills.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAClB,kBAAkB,EAClB,SAAS,EACV,MAAM,mBAAmB,CAAA;AAI1B;;;;GAIG;AACH,OAAO,EAAE,kBAAkB,EAAE,CAAA;AAE7B;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,aAAa,EAAE,aAAa,EAC5B,IAAI,EAAE,SAAS,EACf,EAAE,EAAE,aAAa,GAChB,kBAAkB,CAuCpB"}
1
+ {"version":3,"file":"fills.d.ts","sourceRoot":"","sources":["../../../src/math/fills.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,IAAI,EACT,kBAAkB,EAClB,SAAS,EACV,MAAM,mBAAmB,CAAA;AAU1B;;;;GAIG;AACH,OAAO,EAAE,kBAAkB,EAAE,CAAA;AAE7B;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,aAAa,EAAE,aAAa,EAC5B,IAAI,EAAE,SAAS,EACf,EAAE,EAAE,aAAa,GAChB,kBAAkB,CAuCpB;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,SAAS,IAAI,EAAE,GACrB,aAAa,GAAG,SAAS,CAY3B"}
@@ -0,0 +1,4 @@
1
+ import type { ActionResult } from '@lifi/perps-types';
2
+ /** Whether the action took effect: its status is `Submitted` or `Accepted`. */
3
+ export declare function isSubmittedOrAccepted(result: ActionResult): boolean;
4
+ //# sourceMappingURL=actionResult.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actionResult.d.ts","sourceRoot":"","sources":["../../../src/utils/actionResult.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAGrD,+EAA+E;AAC/E,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAKnE"}
@@ -9,5 +9,5 @@ export declare const name = "@lifi/perps-sdk";
9
9
  *
10
10
  * @public
11
11
  */
12
- export declare const version = "26.0.0";
12
+ export declare const version = "27.1.0";
13
13
  //# sourceMappingURL=version.d.ts.map
@@ -21,4 +21,11 @@ export declare function snapOrderSize(sdk: PerpsSDKClient, market: Market, size:
21
21
  * @public
22
22
  */
23
23
  export declare function snapOrderPrice(sdk: PerpsSDKClient, market: Market, price: DecimalString): DecimalString;
24
+ /**
25
+ * {@link snapOrderPrice}, or `undefined` where it throws. A display calls it
26
+ * on each render, so it writes one warning per market, not one per call.
27
+ *
28
+ * @public
29
+ */
30
+ export declare function safeSnapOrderPrice(sdk: PerpsSDKClient, market: Market, price: DecimalString): DecimalString | undefined;
24
31
  //# sourceMappingURL=snap.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"snap.d.ts","sourceRoot":"","sources":["../../../src/wire/snap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAE1D;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,aAAa,GAClB,aAAa,CAEf;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,aAAa,GACnB,aAAa,CAEf"}
1
+ {"version":3,"file":"snap.d.ts","sourceRoot":"","sources":["../../../src/wire/snap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAK1D;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,aAAa,GAClB,aAAa,CAEf;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,aAAa,GACnB,aAAa,CAEf;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,aAAa,GACnB,aAAa,GAAG,SAAS,CAU3B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lifi/perps-sdk",
3
- "version": "26.0.0",
3
+ "version": "27.1.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": "^23.0.0"
49
+ "@lifi/perps-types": "^24.0.0"
50
50
  },
51
51
  "publishConfig": {
52
52
  "access": "public"
@@ -30,7 +30,6 @@ import {
30
30
  PerpsErrorCode,
31
31
  PerpsSigner,
32
32
  SigningMethod,
33
- UserActionStatus,
34
33
  } from '@lifi/perps-types'
35
34
  import type { Address } from 'viem'
36
35
  import { isDecimalStringGreaterThan } from '../decimal/compare.js'
@@ -94,6 +93,7 @@ import type {
94
93
  WithdrawalSourceTypes,
95
94
  WithdrawFlow,
96
95
  } from '../types/withdrawal.js'
96
+ import { isSubmittedOrAccepted } from '../utils/actionResult.js'
97
97
  import { isUserFacingSetupStep } from '../utils/setupActions.js'
98
98
  import { signTypedDataWithSigner } from '../utils/signTypedData.js'
99
99
  import {
@@ -214,13 +214,6 @@ function currentChoiceValue(
214
214
  return value === null ? null : String(value)
215
215
  }
216
216
 
217
- function isAcknowledged(result: ActionResult): boolean {
218
- return (
219
- result.status === UserActionStatus.Submitted ||
220
- result.status === UserActionStatus.Accepted
221
- )
222
- }
223
-
224
217
  function isNonNegativeDecimal(value: string): boolean {
225
218
  try {
226
219
  return !isDecimalStringGreaterThan(
@@ -490,7 +483,7 @@ export class PerpsClient {
490
483
  } catch (error) {
491
484
  rethrowWithKnownResults(executed, error)
492
485
  }
493
- if (!executed.every(isAcknowledged)) {
486
+ if (!executed.every(isSubmittedOrAccepted)) {
494
487
  break
495
488
  }
496
489
  }
@@ -514,7 +507,7 @@ export class PerpsClient {
514
507
  { signed, executed }: SignActionsResult
515
508
  ): Promise<ActionResult[]> {
516
509
  let results = executed
517
- if (signed.length > 0 && executed.every(isAcknowledged)) {
510
+ if (signed.length > 0 && executed.every(isSubmittedOrAccepted)) {
518
511
  try {
519
512
  const response = await executeAction(this.sdkClient, {
520
513
  provider,
@@ -1243,7 +1236,9 @@ export class PerpsClient {
1243
1236
  address,
1244
1237
  step
1245
1238
  )
1246
- const failure = results.find((result) => !isAcknowledged(result))
1239
+ const failure = results.find(
1240
+ (result) => !isSubmittedOrAccepted(result)
1241
+ )
1247
1242
  if (failure !== undefined) {
1248
1243
  console.debug(
1249
1244
  `[perps-sdk] setup step '${descriptor.type}' for '${provider}' reported '${failure.status}'; will retry on the next checkSetup.`,
@@ -1336,8 +1331,8 @@ export class PerpsClient {
1336
1331
  * prerequisites against that same snapshot, without another `createAction`
1337
1332
  * round-trip.
1338
1333
  *
1339
- * Resolves to the step's execution report. A refused or indeterminate step
1340
- * is a result in the report, not an exception.
1334
+ * Resolves to the execution report. A `Failed` or `Indeterminate` action is
1335
+ * a result in the report, not an exception.
1341
1336
  *
1342
1337
  * @throws {PerpsError} When the step's action is not in the provider's
1343
1338
  * `setup` descriptors, when a lower-`sequence` step on the same
@@ -1385,8 +1380,9 @@ export class PerpsClient {
1385
1380
  * Hyperliquid `ACCOUNT_MODE`) end-to-end with its bound `{ type, params }`,
1386
1381
  * through the same {@link execute} pipeline as a trade.
1387
1382
  *
1388
- * Resolves to the execution report. Read each result's `status`: a refused
1389
- * selection is a `Failed` result, not an exception.
1383
+ * Resolves to the execution report. Read each result's `status`: a `Failed`
1384
+ * or `Indeterminate` selection is a result, not an exception. `Submitted` and
1385
+ * `Accepted` mean the selection took effect.
1390
1386
  *
1391
1387
  * @throws {PerpsError} The errors {@link execute} throws.
1392
1388
  * @public
package/src/index.ts CHANGED
@@ -75,6 +75,7 @@ export {
75
75
  rethrowWithKnownResults,
76
76
  } from './errors/PerpsExecutionError.js'
77
77
  export {
78
+ calculateAverageFillPrice,
78
79
  classifyFillFromPosition,
79
80
  FillClassification,
80
81
  } from './math/fills.js'
@@ -297,6 +298,7 @@ export type {
297
298
  WithdrawFlowReady,
298
299
  WithdrawFlowSetupRequired,
299
300
  } from './types/withdrawal.js'
301
+ export { isSubmittedOrAccepted } from './utils/actionResult.js'
300
302
  export { paginateActivity } from './utils/activityPaging.js'
301
303
  export { createSafeFunction } from './utils/createSafeFunction.js'
302
304
  export {
@@ -374,6 +376,10 @@ export {
374
376
  calculateRefuelAmount,
375
377
  REFUEL_FEE_MARGIN_PERCENT,
376
378
  } from './wire/refuel.js'
377
- export { snapOrderPrice, snapOrderSize } from './wire/snap.js'
379
+ export {
380
+ safeSnapOrderPrice,
381
+ snapOrderPrice,
382
+ snapOrderSize,
383
+ } from './wire/snap.js'
378
384
  export { calculateTransferable } from './wire/transferable.js'
379
385
  export { calculateWithdrawMax } from './wire/withdraw.js'
package/src/math/fills.ts CHANGED
@@ -1,9 +1,16 @@
1
1
  import {
2
2
  type DecimalString,
3
+ type Fill,
3
4
  FillClassification,
4
5
  OrderSide,
5
6
  } from '@lifi/perps-types'
6
7
  import Big from 'big.js'
8
+ import {
9
+ addDecimalStrings,
10
+ divideDecimalString,
11
+ multiplyDecimalString,
12
+ } from '../decimal/arithmetic.js'
13
+ import { isDecimalStringGreaterThan } from '../decimal/compare.js'
7
14
  import { isDecimalString } from '../decimal/parse.js'
8
15
 
9
16
  /**
@@ -68,3 +75,27 @@ export function classifyFillFromPosition(
68
75
  }
69
76
  return FillClassification.REDUCED_SHORT
70
77
  }
78
+
79
+ /**
80
+ * Size-weighted average price of `fills`, Σ(size × price) / Σ size, to the
81
+ * 40 decimal places of division with no display rounding. A fill whose `size`
82
+ * or `price` does not match the decimal pattern is skipped.
83
+ *
84
+ * @returns `undefined` when the summed size is not above zero.
85
+ * @public
86
+ */
87
+ export function calculateAverageFillPrice(
88
+ fills: readonly Fill[]
89
+ ): DecimalString | undefined {
90
+ const priced = fills.filter(
91
+ (fill) => isDecimalString(fill.size) && isDecimalString(fill.price)
92
+ )
93
+ const totalSize = addDecimalStrings(priced.map((fill) => fill.size))
94
+ if (!isDecimalStringGreaterThan(totalSize, '0')) {
95
+ return undefined
96
+ }
97
+ const notional = addDecimalStrings(
98
+ priced.map((fill) => multiplyDecimalString(fill.size, fill.price))
99
+ )
100
+ return divideDecimalString(notional, totalSize)
101
+ }
@@ -0,0 +1,10 @@
1
+ import type { ActionResult } from '@lifi/perps-types'
2
+ import { UserActionStatus } from '@lifi/perps-types'
3
+
4
+ /** Whether the action took effect: its status is `Submitted` or `Accepted`. */
5
+ export function isSubmittedOrAccepted(result: ActionResult): boolean {
6
+ return (
7
+ result.status === UserActionStatus.Submitted ||
8
+ result.status === UserActionStatus.Accepted
9
+ )
10
+ }
package/src/version.ts CHANGED
@@ -10,4 +10,4 @@ export const name = '@lifi/perps-sdk'
10
10
  *
11
11
  * @public
12
12
  */
13
- export const version = '26.0.0'
13
+ export const version = '27.1.0'
package/src/wire/snap.ts CHANGED
@@ -1,6 +1,9 @@
1
1
  import type { DecimalString, Market } from '@lifi/perps-types'
2
2
  import { requireProvider } from '../client/requireProvider.js'
3
3
  import type { PerpsSDKClient } from '../types/provider.js'
4
+ import { createWarnOnce } from '../utils/warnOnce.js'
5
+
6
+ const warnSnapOrderPriceFailureOnce = createWarnOnce()
4
7
 
5
8
  /**
6
9
  * Snap `size` onto the lot grid of `market`'s venue, truncating toward zero,
@@ -36,3 +39,25 @@ export function snapOrderPrice(
36
39
  ): DecimalString {
37
40
  return requireProvider(sdk, market.providerId).snapOrderPrice(market, price)
38
41
  }
42
+
43
+ /**
44
+ * {@link snapOrderPrice}, or `undefined` where it throws. A display calls it
45
+ * on each render, so it writes one warning per market, not one per call.
46
+ *
47
+ * @public
48
+ */
49
+ export function safeSnapOrderPrice(
50
+ sdk: PerpsSDKClient,
51
+ market: Market,
52
+ price: DecimalString
53
+ ): DecimalString | undefined {
54
+ try {
55
+ return snapOrderPrice(sdk, market, price)
56
+ } catch (error) {
57
+ warnSnapOrderPriceFailureOnce(
58
+ `${market.providerId}|${market.id}`,
59
+ `[perps-sdk] snapOrderPrice failed on market '${market.id}' (${market.providerId}): ${error instanceof Error ? error.message : String(error)}`
60
+ )
61
+ return undefined
62
+ }
63
+ }