@lifi/perps-sdk-provider-lighter 22.0.0 → 22.1.1

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 (91) hide show
  1. package/README.md +20 -1
  2. package/dist/cjs/LighterProvider.d.ts.map +1 -1
  3. package/dist/cjs/LighterProvider.js +11 -6
  4. package/dist/cjs/LighterProvider.js.map +1 -1
  5. package/dist/cjs/accountConfig.js +3 -4
  6. package/dist/cjs/accountConfig.js.map +1 -1
  7. package/dist/cjs/constants.d.ts +2 -1
  8. package/dist/cjs/constants.d.ts.map +1 -1
  9. package/dist/cjs/constants.js +3 -1
  10. package/dist/cjs/constants.js.map +1 -1
  11. package/dist/cjs/signers/generated/wasmExecRuntime.d.ts +4 -1
  12. package/dist/cjs/signers/generated/wasmExecRuntime.d.ts.map +1 -1
  13. package/dist/cjs/signers/generated/wasmExecRuntime.js +470 -566
  14. package/dist/cjs/signers/generated/wasmExecRuntime.js.map +1 -1
  15. package/dist/cjs/signers/wasmLoader.d.ts.map +1 -1
  16. package/dist/cjs/signers/wasmLoader.js +1 -3
  17. package/dist/cjs/signers/wasmLoader.js.map +1 -1
  18. package/dist/cjs/types/account.d.ts +3 -3
  19. package/dist/cjs/types/account.d.ts.map +1 -1
  20. package/dist/cjs/types/action.d.ts +2 -0
  21. package/dist/cjs/types/action.d.ts.map +1 -1
  22. package/dist/cjs/types/action.js +3 -1
  23. package/dist/cjs/types/action.js.map +1 -1
  24. package/dist/cjs/types/fill.d.ts +2 -2
  25. package/dist/cjs/types/fill.d.ts.map +1 -1
  26. package/dist/cjs/utils/apiClient.d.ts.map +1 -1
  27. package/dist/cjs/utils/apiClient.js +8 -3
  28. package/dist/cjs/utils/apiClient.js.map +1 -1
  29. package/dist/cjs/utils/mapFill.d.ts.map +1 -1
  30. package/dist/cjs/utils/mapFill.js +2 -2
  31. package/dist/cjs/utils/mapFill.js.map +1 -1
  32. package/dist/cjs/utils/mapPosition.js +1 -1
  33. package/dist/cjs/utils/mapPosition.js.map +1 -1
  34. package/dist/esm/LighterProvider.d.ts.map +1 -1
  35. package/dist/esm/LighterProvider.js +16 -7
  36. package/dist/esm/LighterProvider.js.map +1 -1
  37. package/dist/esm/accountConfig.js +5 -7
  38. package/dist/esm/accountConfig.js.map +1 -1
  39. package/dist/esm/constants.d.ts +10 -1
  40. package/dist/esm/constants.d.ts.map +1 -1
  41. package/dist/esm/constants.js +10 -1
  42. package/dist/esm/constants.js.map +1 -1
  43. package/dist/esm/signers/generated/wasmExecRuntime.d.ts +5 -7
  44. package/dist/esm/signers/generated/wasmExecRuntime.d.ts.map +1 -1
  45. package/dist/esm/signers/generated/wasmExecRuntime.js +507 -571
  46. package/dist/esm/signers/generated/wasmExecRuntime.js.map +1 -1
  47. package/dist/esm/signers/wasmLoader.d.ts.map +1 -1
  48. package/dist/esm/signers/wasmLoader.js +2 -11
  49. package/dist/esm/signers/wasmLoader.js.map +1 -1
  50. package/dist/esm/types/account.d.ts +15 -4
  51. package/dist/esm/types/account.d.ts.map +1 -1
  52. package/dist/esm/types/action.d.ts +13 -0
  53. package/dist/esm/types/action.d.ts.map +1 -1
  54. package/dist/esm/types/action.js +13 -0
  55. package/dist/esm/types/action.js.map +1 -1
  56. package/dist/esm/types/fill.d.ts +2 -2
  57. package/dist/esm/types/fill.d.ts.map +1 -1
  58. package/dist/esm/utils/apiClient.d.ts.map +1 -1
  59. package/dist/esm/utils/apiClient.js +9 -4
  60. package/dist/esm/utils/apiClient.js.map +1 -1
  61. package/dist/esm/utils/mapFill.d.ts.map +1 -1
  62. package/dist/esm/utils/mapFill.js +3 -2
  63. package/dist/esm/utils/mapFill.js.map +1 -1
  64. package/dist/esm/utils/mapPosition.js +1 -1
  65. package/dist/esm/utils/mapPosition.js.map +1 -1
  66. package/dist/types/LighterProvider.d.ts.map +1 -1
  67. package/dist/types/constants.d.ts +10 -1
  68. package/dist/types/constants.d.ts.map +1 -1
  69. package/dist/types/signers/generated/wasmExecRuntime.d.ts +5 -7
  70. package/dist/types/signers/generated/wasmExecRuntime.d.ts.map +1 -1
  71. package/dist/types/signers/wasmLoader.d.ts.map +1 -1
  72. package/dist/types/types/account.d.ts +15 -4
  73. package/dist/types/types/account.d.ts.map +1 -1
  74. package/dist/types/types/action.d.ts +13 -0
  75. package/dist/types/types/action.d.ts.map +1 -1
  76. package/dist/types/types/fill.d.ts +2 -2
  77. package/dist/types/types/fill.d.ts.map +1 -1
  78. package/dist/types/utils/apiClient.d.ts.map +1 -1
  79. package/dist/types/utils/mapFill.d.ts.map +1 -1
  80. package/package.json +1 -1
  81. package/src/LighterProvider.ts +26 -7
  82. package/src/accountConfig.ts +8 -8
  83. package/src/constants.ts +11 -0
  84. package/src/signers/generated/wasmExecRuntime.ts +570 -572
  85. package/src/signers/wasmLoader.ts +2 -17
  86. package/src/types/account.ts +15 -4
  87. package/src/types/action.ts +15 -0
  88. package/src/types/fill.ts +3 -2
  89. package/src/utils/apiClient.ts +11 -4
  90. package/src/utils/mapFill.ts +5 -3
  91. package/src/utils/mapPosition.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"fill.d.ts","sourceRoot":"","sources":["../../../src/types/fill.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,OAAO,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IAIjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAGlB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,gBAAgB,EAAE,MAAM,CAAA;IAGxB,0BAA0B,EAAE,MAAM,CAAA;IAClC,0BAA0B,EAAE,MAAM,CAAA;IAKlC,wBAAwB,CAAC,EAAE,MAAM,CAAA;IACjC,wBAAwB,CAAC,EAAE,MAAM,CAAA;IAKjC,oCAAoC,CAAC,EAAE,MAAM,CAAA;IAC7C,oCAAoC,CAAC,EAAE,MAAM,CAAA;IAC7C,kEAAkE;IAClE,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,kEAAkE;IAClE,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;CACzB"}
1
+ {"version":3,"file":"fill.d.ts","sourceRoot":"","sources":["../../../src/types/fill.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,OAAO,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IAIjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAGlB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,gBAAgB,EAAE,MAAM,CAAA;IAIxB,0BAA0B,CAAC,EAAE,MAAM,CAAA;IACnC,0BAA0B,CAAC,EAAE,MAAM,CAAA;IAKnC,wBAAwB,CAAC,EAAE,MAAM,CAAA;IACjC,wBAAwB,CAAC,EAAE,MAAM,CAAA;IAKjC,oCAAoC,CAAC,EAAE,MAAM,CAAA;IAC7C,oCAAoC,CAAC,EAAE,MAAM,CAAA;IAC7C,kEAAkE;IAClE,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,kEAAkE;IAClE,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;CACzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"apiClient.d.ts","sourceRoot":"","sources":["../../../src/utils/apiClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,UAAU,EACV,KAAK,mBAAmB,EACzB,MAAM,iBAAiB,CAAA;AASxB,gBAAgB;AAChB,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAA;AAejE;;;;GAIG;AACH,qBAAa,wBAAyB,SAAQ,UAAU;CAAG;AAE3D;;;;GAIG;AACH,qBAAa,wBAAyB,SAAQ,UAAU;CAAG;AAgC3D,gBAAgB;AAChB,eAAO,MAAM,sBAAsB,EAAE,mBAgBpC,CAAA;AAsBD;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,gBAAgB;AAChB,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,MAAM,CAAC,EAAE,mBAAmB,CAAA;IAC5B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;IACxB,aAAa,CAAC,EAAE,oBAAoB,CAAA;CACrC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;IAChD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;IACpD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAsB;IACpD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAc;gBAEhC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,uBAAuB;IAqB9D;;;;OAIG;IACH,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIxE,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,QAAQ;IAaV,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC;IAI1D,+EAA+E;IACzE,SAAS,CAAC,CAAC,EACf,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,MAAM,GAAE,SAAc,GACrB,OAAO,CAAC,CAAC,CAAC;IAoBb;;;;OAIG;IACG,aAAa,CAAC,CAAC,EACnB,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC;YAIzB,OAAO;IAqBrB;;;;;;OAMG;IACG,QAAQ,CAAC,CAAC,EACd,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC;YAmBzB,UAAU;IAMxB;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ;CAiBjB"}
1
+ {"version":3,"file":"apiClient.d.ts","sourceRoot":"","sources":["../../../src/utils/apiClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,UAAU,EACV,KAAK,mBAAmB,EACzB,MAAM,iBAAiB,CAAA;AAUxB,gBAAgB;AAChB,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAA;AAejE;;;;GAIG;AACH,qBAAa,wBAAyB,SAAQ,UAAU;CAAG;AAE3D;;;;GAIG;AACH,qBAAa,wBAAyB,SAAQ,UAAU;CAAG;AAsC3D,gBAAgB;AAChB,eAAO,MAAM,sBAAsB,EAAE,mBAgBpC,CAAA;AAsBD;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,gBAAgB;AAChB,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,MAAM,CAAC,EAAE,mBAAmB,CAAA;IAC5B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;IACxB,aAAa,CAAC,EAAE,oBAAoB,CAAA;CACrC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;IAChD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;IACpD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAsB;IACpD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAc;gBAEhC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,uBAAuB;IAqB9D;;;;OAIG;IACH,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIxE,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,QAAQ;IAaV,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC;IAI1D,+EAA+E;IACzE,SAAS,CAAC,CAAC,EACf,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,MAAM,GAAE,SAAc,GACrB,OAAO,CAAC,CAAC,CAAC;IAoBb;;;;OAIG;IACG,aAAa,CAAC,CAAC,EACnB,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC;YAIzB,OAAO;IAqBrB;;;;;;OAMG;IACG,QAAQ,CAAC,CAAC,EACd,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC;YAmBzB,UAAU;IAMxB;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ;CAiBjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"mapFill.d.ts","sourceRoot":"","sources":["../../../src/utils/mapFill.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAY5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AA2EhD;;;;;GAKG;AACH,eAAO,MAAM,OAAO,GAClB,OAAO,OAAO,EACd,cAAc,MAAM,EACpB,QAAQ,aAAa,KACpB,IA8DF,CAAA"}
1
+ {"version":3,"file":"mapFill.d.ts","sourceRoot":"","sources":["../../../src/utils/mapFill.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAY5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AA2EhD;;;;;GAKG;AACH,eAAO,MAAM,OAAO,GAClB,OAAO,OAAO,EACd,cAAc,MAAM,EACpB,QAAQ,aAAa,KACpB,IAgEF,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lifi/perps-sdk-provider-lighter",
3
- "version": "22.0.0",
3
+ "version": "22.1.1",
4
4
  "description": "Lighter provider plugin for @lifi/perps-sdk",
5
5
  "homepage": "https://github.com/lifinance/perps-sdk",
6
6
  "bugs": {
@@ -106,7 +106,11 @@ import type {
106
106
  LtWithdrawHistoryItem,
107
107
  LtWithdrawHistoryResponse,
108
108
  } from './types/index.js'
109
- import { LT_MARGIN_MODE_CROSS, LT_MARGIN_MODE_ISOLATED } from './types/index.js'
109
+ import {
110
+ LT_ACCOUNT_TRADING_MODE_SIMPLE,
111
+ LT_MARGIN_MODE_CROSS,
112
+ LT_MARGIN_MODE_ISOLATED,
113
+ } from './types/index.js'
110
114
  import {
111
115
  decodeActivityCursor,
112
116
  encodeActivityCursor,
@@ -265,6 +269,12 @@ interface CachedStandardToken {
265
269
  token: string
266
270
  /** Unix seconds — re-create when `Date.now()/1000 + renewBuffer >= expiresAt`. */
267
271
  expiresAt: number
272
+ /**
273
+ * Slot and key material that signed `token`, as
274
+ * `apiKeyIndex:accountIndex:apiKeyPrivateKey`. `REGISTER_API_KEY` rotates the
275
+ * stored key, and Lighter rejects a token the superseded key signed.
276
+ */
277
+ signingKey: string
268
278
  }
269
279
 
270
280
  /**
@@ -369,10 +379,12 @@ export const createLighterProvider = (
369
379
  indices: { apiKeyIndex: number; accountIndex: number }
370
380
  ): Promise<string> => {
371
381
  const cacheKey = address.toLowerCase()
382
+ const signingKey = `${indices.apiKeyIndex}:${indices.accountIndex}:${apiKeyPrivateKey}`
372
383
  const nowSec = Math.floor(Date.now() / 1000)
373
384
  const cached = standardTokenByAddress.get(cacheKey)
374
385
  if (
375
386
  cached !== undefined &&
387
+ cached.signingKey === signingKey &&
376
388
  cached.expiresAt - nowSec > tokenRenewBufferSeconds
377
389
  ) {
378
390
  return cached.token
@@ -387,7 +399,7 @@ export const createLighterProvider = (
387
399
  lifetimeSeconds: tokenLifetimeSeconds,
388
400
  })
389
401
  const expiresAt = nowSec + tokenLifetimeSeconds
390
- standardTokenByAddress.set(cacheKey, { token, expiresAt })
402
+ standardTokenByAddress.set(cacheKey, { token, expiresAt, signingKey })
391
403
  return token
392
404
  }
393
405
 
@@ -425,11 +437,17 @@ export const createLighterProvider = (
425
437
  return undefined
426
438
  }
427
439
 
428
- const standardToken = (): Promise<string> =>
429
- getStandardAuthToken(address, apiKey.apiKeyPrivateKey, {
430
- apiKeyIndex: apiKey.apiKeyIndex,
431
- accountIndex: apiKey.accountIndex,
440
+ // Sign with the key registered at call time, not the one read on entry:
441
+ // `REGISTER_API_KEY` can rotate the store while an await below is pending,
442
+ // and Lighter rejects a token the superseded key signed. The entry value
443
+ // stands in only when the record is gone, which no key can re-sign.
444
+ const standardToken = async (): Promise<string> => {
445
+ const current = (await keyStore.get(address)) ?? apiKey
446
+ return getStandardAuthToken(address, current.apiKeyPrivateKey, {
447
+ apiKeyIndex: current.apiKeyIndex,
448
+ accountIndex: current.accountIndex,
432
449
  })
450
+ }
433
451
 
434
452
  const stored = await readOnlyTokenManager.get(address, apiKey.accountIndex)
435
453
  if (stored !== undefined) {
@@ -887,7 +905,8 @@ export const createLighterProvider = (
887
905
  apiKeyRegistered,
888
906
  accountType: account.account_type,
889
907
  userTierName: limitsResult?.user_tier_name,
890
- accountTradingMode: account.account_trading_mode,
908
+ accountTradingMode:
909
+ account.account_trading_mode ?? LT_ACCOUNT_TRADING_MODE_SIMPLE,
891
910
  assetCollateral,
892
911
  // Satisfied when a non-expired read-only token is stored locally
893
912
  // (`readOnlyTokenManager.get` filters out expired ones).
@@ -5,6 +5,10 @@ import type {
5
5
  ProviderAction,
6
6
  } from '@lifi/perps-types'
7
7
  import { ActionType, PerpsErrorCode } from '@lifi/perps-types'
8
+ import {
9
+ LT_ACCOUNT_TRADING_MODE_SIMPLE,
10
+ LT_ACCOUNT_TRADING_MODE_UNIFIED,
11
+ } from './types/action.js'
8
12
 
9
13
  function assertNever(value: never): never {
10
14
  throw new Error(
@@ -27,15 +31,11 @@ const ACCOUNT_TYPE_INT_TO_WIRE: Readonly<Record<number, string>> = {
27
31
  [LIGHTER_ACCOUNT_TYPE_PREMIUM]: 'premium',
28
32
  }
29
33
 
30
- // `account_trading_mode` on `DetailedAccount`: 0 = Classic/Simple (segregated
31
- // margin), 1 = Unified Trading Account (cross-asset margin). Wire strings match
32
- // the backend descriptor's ParamOption values. An unmapped int projects to null.
33
- const LIGHTER_ACCOUNT_MODE_SIMPLE = 0
34
- const LIGHTER_ACCOUNT_MODE_UNIFIED = 1
35
-
34
+ // Wire strings match the backend descriptor's ParamOption values. An unmapped
35
+ // int projects to null.
36
36
  const ACCOUNT_MODE_INT_TO_WIRE: Readonly<Record<number, string>> = {
37
- [LIGHTER_ACCOUNT_MODE_SIMPLE]: 'simpleTradingAccount',
38
- [LIGHTER_ACCOUNT_MODE_UNIFIED]: 'unifiedTradingAccount',
37
+ [LT_ACCOUNT_TRADING_MODE_SIMPLE]: 'simpleTradingAccount',
38
+ [LT_ACCOUNT_TRADING_MODE_UNIFIED]: 'unifiedTradingAccount',
39
39
  }
40
40
 
41
41
  /**
package/src/constants.ts CHANGED
@@ -248,6 +248,16 @@ const LIGHTER_INVALID_AUTH_CODE = 20013
248
248
  */
249
249
  const LIGHTER_TOKEN_REVOKED_CODE = 61006
250
250
 
251
+ /**
252
+ * Lighter body `code` for the internal-error envelope it answers when a token's
253
+ * signature does not verify — the message reads `invalid signature`. Only the
254
+ * auth-gated read path treats it as an auth failure; a public read keeps the
255
+ * venue-error classification.
256
+ *
257
+ * @internal
258
+ */
259
+ const LIGHTER_INVALID_SIGNATURE_CODE = 29500
260
+
251
261
  /**
252
262
  * Lighter body `code` values that mean success. Lighter is inconsistent per
253
263
  * endpoint: `/api/v1/account` returns `code: 200`, most others return `code: 0`.
@@ -279,6 +289,7 @@ const LIGHTER_REFERRAL_ALREADY_USED_CODE = 41003
279
289
  export {
280
290
  LIGHTER_CODE_ACCOUNT_NOT_FOUND,
281
291
  LIGHTER_INVALID_AUTH_CODE,
292
+ LIGHTER_INVALID_SIGNATURE_CODE,
282
293
  LIGHTER_MUTATION_SUCCESS_CODE,
283
294
  LIGHTER_REFERRAL_ALREADY_USED_CODE,
284
295
  LIGHTER_SUCCESS_CODES,