@lifi/perps-sdk-provider-ondo 0.0.0-preview-7ff840c

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 (280) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +38 -0
  3. package/dist/cjs/OndoProvider.d.ts +8 -0
  4. package/dist/cjs/OndoProvider.d.ts.map +1 -0
  5. package/dist/cjs/OndoProvider.js +338 -0
  6. package/dist/cjs/OndoProvider.js.map +1 -0
  7. package/dist/cjs/accountConfig.d.ts +3 -0
  8. package/dist/cjs/accountConfig.d.ts.map +1 -0
  9. package/dist/cjs/accountConfig.js +59 -0
  10. package/dist/cjs/accountConfig.js.map +1 -0
  11. package/dist/cjs/accountSummary.d.ts +3 -0
  12. package/dist/cjs/accountSummary.d.ts.map +1 -0
  13. package/dist/cjs/accountSummary.js +8 -0
  14. package/dist/cjs/accountSummary.js.map +1 -0
  15. package/dist/cjs/auth/OndoTokenStore.d.ts +13 -0
  16. package/dist/cjs/auth/OndoTokenStore.d.ts.map +1 -0
  17. package/dist/cjs/auth/OndoTokenStore.js +53 -0
  18. package/dist/cjs/auth/OndoTokenStore.js.map +1 -0
  19. package/dist/cjs/auth/completeSiweLogin.d.ts +13 -0
  20. package/dist/cjs/auth/completeSiweLogin.d.ts.map +1 -0
  21. package/dist/cjs/auth/completeSiweLogin.js +15 -0
  22. package/dist/cjs/auth/completeSiweLogin.js.map +1 -0
  23. package/dist/cjs/auth/index.d.ts +4 -0
  24. package/dist/cjs/auth/index.d.ts.map +1 -0
  25. package/dist/cjs/auth/index.js +11 -0
  26. package/dist/cjs/auth/index.js.map +1 -0
  27. package/dist/cjs/auth/signActions.d.ts +13 -0
  28. package/dist/cjs/auth/signActions.d.ts.map +1 -0
  29. package/dist/cjs/auth/signActions.js +86 -0
  30. package/dist/cjs/auth/signActions.js.map +1 -0
  31. package/dist/cjs/constants.d.ts +9 -0
  32. package/dist/cjs/constants.d.ts.map +1 -0
  33. package/dist/cjs/constants.js +12 -0
  34. package/dist/cjs/constants.js.map +1 -0
  35. package/dist/cjs/index.d.ts +9 -0
  36. package/dist/cjs/index.d.ts.map +1 -0
  37. package/dist/cjs/index.js +37 -0
  38. package/dist/cjs/index.js.map +1 -0
  39. package/dist/cjs/package.json +1 -0
  40. package/dist/cjs/types/auth.d.ts +16 -0
  41. package/dist/cjs/types/auth.d.ts.map +1 -0
  42. package/dist/cjs/types/auth.js +3 -0
  43. package/dist/cjs/types/auth.js.map +1 -0
  44. package/dist/cjs/types/index.d.ts +4 -0
  45. package/dist/cjs/types/index.d.ts.map +1 -0
  46. package/dist/cjs/types/index.js +3 -0
  47. package/dist/cjs/types/index.js.map +1 -0
  48. package/dist/cjs/types/wire.d.ts +154 -0
  49. package/dist/cjs/types/wire.d.ts.map +1 -0
  50. package/dist/cjs/types/wire.js +3 -0
  51. package/dist/cjs/types/wire.js.map +1 -0
  52. package/dist/cjs/types/ws.d.ts +92 -0
  53. package/dist/cjs/types/ws.d.ts.map +1 -0
  54. package/dist/cjs/types/ws.js +3 -0
  55. package/dist/cjs/types/ws.js.map +1 -0
  56. package/dist/cjs/utils/activityCursor.d.ts +9 -0
  57. package/dist/cjs/utils/activityCursor.d.ts.map +1 -0
  58. package/dist/cjs/utils/activityCursor.js +79 -0
  59. package/dist/cjs/utils/activityCursor.js.map +1 -0
  60. package/dist/cjs/utils/apiClient.d.ts +43 -0
  61. package/dist/cjs/utils/apiClient.d.ts.map +1 -0
  62. package/dist/cjs/utils/apiClient.js +134 -0
  63. package/dist/cjs/utils/apiClient.js.map +1 -0
  64. package/dist/cjs/utils/index.d.ts +11 -0
  65. package/dist/cjs/utils/index.d.ts.map +1 -0
  66. package/dist/cjs/utils/index.js +39 -0
  67. package/dist/cjs/utils/index.js.map +1 -0
  68. package/dist/cjs/utils/liquidation.d.ts +4 -0
  69. package/dist/cjs/utils/liquidation.d.ts.map +1 -0
  70. package/dist/cjs/utils/liquidation.js +16 -0
  71. package/dist/cjs/utils/liquidation.js.map +1 -0
  72. package/dist/cjs/utils/mapActivity.d.ts +5 -0
  73. package/dist/cjs/utils/mapActivity.d.ts.map +1 -0
  74. package/dist/cjs/utils/mapActivity.js +34 -0
  75. package/dist/cjs/utils/mapActivity.js.map +1 -0
  76. package/dist/cjs/utils/mapFill.d.ts +4 -0
  77. package/dist/cjs/utils/mapFill.d.ts.map +1 -0
  78. package/dist/cjs/utils/mapFill.js +36 -0
  79. package/dist/cjs/utils/mapFill.js.map +1 -0
  80. package/dist/cjs/utils/mapOrder.d.ts +16 -0
  81. package/dist/cjs/utils/mapOrder.d.ts.map +1 -0
  82. package/dist/cjs/utils/mapOrder.js +135 -0
  83. package/dist/cjs/utils/mapOrder.js.map +1 -0
  84. package/dist/cjs/utils/mapPosition.d.ts +5 -0
  85. package/dist/cjs/utils/mapPosition.d.ts.map +1 -0
  86. package/dist/cjs/utils/mapPosition.js +26 -0
  87. package/dist/cjs/utils/mapPosition.js.map +1 -0
  88. package/dist/cjs/utils/ohlcvInterval.d.ts +4 -0
  89. package/dist/cjs/utils/ohlcvInterval.d.ts.map +1 -0
  90. package/dist/cjs/utils/ohlcvInterval.js +49 -0
  91. package/dist/cjs/utils/ohlcvInterval.js.map +1 -0
  92. package/dist/cjs/utils/ondoAsset.d.ts +3 -0
  93. package/dist/cjs/utils/ondoAsset.d.ts.map +1 -0
  94. package/dist/cjs/utils/ondoAsset.js +12 -0
  95. package/dist/cjs/utils/ondoAsset.js.map +1 -0
  96. package/dist/cjs/utils/orderFormatting.d.ts +4 -0
  97. package/dist/cjs/utils/orderFormatting.d.ts.map +1 -0
  98. package/dist/cjs/utils/orderFormatting.js +40 -0
  99. package/dist/cjs/utils/orderFormatting.js.map +1 -0
  100. package/dist/cjs/websocket/OndoWsProvider.d.ts +56 -0
  101. package/dist/cjs/websocket/OndoWsProvider.d.ts.map +1 -0
  102. package/dist/cjs/websocket/OndoWsProvider.js +515 -0
  103. package/dist/cjs/websocket/OndoWsProvider.js.map +1 -0
  104. package/dist/esm/OndoProvider.d.ts +39 -0
  105. package/dist/esm/OndoProvider.d.ts.map +1 -0
  106. package/dist/esm/OndoProvider.js +366 -0
  107. package/dist/esm/OndoProvider.js.map +1 -0
  108. package/dist/esm/accountConfig.d.ts +13 -0
  109. package/dist/esm/accountConfig.d.ts.map +1 -0
  110. package/dist/esm/accountConfig.js +77 -0
  111. package/dist/esm/accountConfig.js.map +1 -0
  112. package/dist/esm/accountSummary.d.ts +12 -0
  113. package/dist/esm/accountSummary.d.ts.map +1 -0
  114. package/dist/esm/accountSummary.js +14 -0
  115. package/dist/esm/accountSummary.js.map +1 -0
  116. package/dist/esm/auth/OndoTokenStore.d.ts +20 -0
  117. package/dist/esm/auth/OndoTokenStore.d.ts.map +1 -0
  118. package/dist/esm/auth/OndoTokenStore.js +61 -0
  119. package/dist/esm/auth/OndoTokenStore.js.map +1 -0
  120. package/dist/esm/auth/completeSiweLogin.d.ts +28 -0
  121. package/dist/esm/auth/completeSiweLogin.d.ts.map +1 -0
  122. package/dist/esm/auth/completeSiweLogin.js +21 -0
  123. package/dist/esm/auth/completeSiweLogin.js.map +1 -0
  124. package/dist/esm/auth/index.d.ts +4 -0
  125. package/dist/esm/auth/index.d.ts.map +1 -0
  126. package/dist/esm/auth/index.js +5 -0
  127. package/dist/esm/auth/index.js.map +1 -0
  128. package/dist/esm/auth/signActions.d.ts +35 -0
  129. package/dist/esm/auth/signActions.d.ts.map +1 -0
  130. package/dist/esm/auth/signActions.js +103 -0
  131. package/dist/esm/auth/signActions.js.map +1 -0
  132. package/dist/esm/constants.d.ts +35 -0
  133. package/dist/esm/constants.d.ts.map +1 -0
  134. package/dist/esm/constants.js +35 -0
  135. package/dist/esm/constants.js.map +1 -0
  136. package/dist/esm/index.d.ts +19 -0
  137. package/dist/esm/index.d.ts.map +1 -0
  138. package/dist/esm/index.js +21 -0
  139. package/dist/esm/index.js.map +1 -0
  140. package/dist/esm/package.json +1 -0
  141. package/dist/esm/types/auth.d.ts +32 -0
  142. package/dist/esm/types/auth.d.ts.map +1 -0
  143. package/dist/esm/types/auth.js +2 -0
  144. package/dist/esm/types/auth.js.map +1 -0
  145. package/dist/esm/types/index.d.ts +4 -0
  146. package/dist/esm/types/index.d.ts.map +1 -0
  147. package/dist/esm/types/index.js +3 -0
  148. package/dist/esm/types/index.js.map +1 -0
  149. package/dist/esm/types/wire.d.ts +195 -0
  150. package/dist/esm/types/wire.d.ts.map +1 -0
  151. package/dist/esm/types/wire.js +7 -0
  152. package/dist/esm/types/wire.js.map +1 -0
  153. package/dist/esm/types/ws.d.ts +108 -0
  154. package/dist/esm/types/ws.d.ts.map +1 -0
  155. package/dist/esm/types/ws.js +7 -0
  156. package/dist/esm/types/ws.js.map +1 -0
  157. package/dist/esm/utils/activityCursor.d.ts +47 -0
  158. package/dist/esm/utils/activityCursor.d.ts.map +1 -0
  159. package/dist/esm/utils/activityCursor.js +93 -0
  160. package/dist/esm/utils/activityCursor.js.map +1 -0
  161. package/dist/esm/utils/apiClient.d.ts +90 -0
  162. package/dist/esm/utils/apiClient.d.ts.map +1 -0
  163. package/dist/esm/utils/apiClient.js +169 -0
  164. package/dist/esm/utils/apiClient.js.map +1 -0
  165. package/dist/esm/utils/index.d.ts +11 -0
  166. package/dist/esm/utils/index.d.ts.map +1 -0
  167. package/dist/esm/utils/index.js +12 -0
  168. package/dist/esm/utils/index.js.map +1 -0
  169. package/dist/esm/utils/liquidation.d.ts +20 -0
  170. package/dist/esm/utils/liquidation.d.ts.map +1 -0
  171. package/dist/esm/utils/liquidation.js +29 -0
  172. package/dist/esm/utils/liquidation.js.map +1 -0
  173. package/dist/esm/utils/mapActivity.d.ts +21 -0
  174. package/dist/esm/utils/mapActivity.d.ts.map +1 -0
  175. package/dist/esm/utils/mapActivity.js +45 -0
  176. package/dist/esm/utils/mapActivity.js.map +1 -0
  177. package/dist/esm/utils/mapFill.d.ts +12 -0
  178. package/dist/esm/utils/mapFill.d.ts.map +1 -0
  179. package/dist/esm/utils/mapFill.js +37 -0
  180. package/dist/esm/utils/mapFill.js.map +1 -0
  181. package/dist/esm/utils/mapOrder.d.ts +50 -0
  182. package/dist/esm/utils/mapOrder.d.ts.map +1 -0
  183. package/dist/esm/utils/mapOrder.js +155 -0
  184. package/dist/esm/utils/mapOrder.js.map +1 -0
  185. package/dist/esm/utils/mapPosition.d.ts +19 -0
  186. package/dist/esm/utils/mapPosition.d.ts.map +1 -0
  187. package/dist/esm/utils/mapPosition.js +32 -0
  188. package/dist/esm/utils/mapPosition.js.map +1 -0
  189. package/dist/esm/utils/ohlcvInterval.d.ts +11 -0
  190. package/dist/esm/utils/ohlcvInterval.d.ts.map +1 -0
  191. package/dist/esm/utils/ohlcvInterval.js +59 -0
  192. package/dist/esm/utils/ohlcvInterval.js.map +1 -0
  193. package/dist/esm/utils/ondoAsset.d.ts +4 -0
  194. package/dist/esm/utils/ondoAsset.d.ts.map +1 -0
  195. package/dist/esm/utils/ondoAsset.js +9 -0
  196. package/dist/esm/utils/ondoAsset.js.map +1 -0
  197. package/dist/esm/utils/orderFormatting.d.ts +33 -0
  198. package/dist/esm/utils/orderFormatting.d.ts.map +1 -0
  199. package/dist/esm/utils/orderFormatting.js +62 -0
  200. package/dist/esm/utils/orderFormatting.js.map +1 -0
  201. package/dist/esm/websocket/OndoWsProvider.d.ts +122 -0
  202. package/dist/esm/websocket/OndoWsProvider.d.ts.map +1 -0
  203. package/dist/esm/websocket/OndoWsProvider.js +591 -0
  204. package/dist/esm/websocket/OndoWsProvider.js.map +1 -0
  205. package/dist/types/OndoProvider.d.ts +39 -0
  206. package/dist/types/OndoProvider.d.ts.map +1 -0
  207. package/dist/types/accountConfig.d.ts +13 -0
  208. package/dist/types/accountConfig.d.ts.map +1 -0
  209. package/dist/types/accountSummary.d.ts +12 -0
  210. package/dist/types/accountSummary.d.ts.map +1 -0
  211. package/dist/types/auth/OndoTokenStore.d.ts +20 -0
  212. package/dist/types/auth/OndoTokenStore.d.ts.map +1 -0
  213. package/dist/types/auth/completeSiweLogin.d.ts +28 -0
  214. package/dist/types/auth/completeSiweLogin.d.ts.map +1 -0
  215. package/dist/types/auth/index.d.ts +4 -0
  216. package/dist/types/auth/index.d.ts.map +1 -0
  217. package/dist/types/auth/signActions.d.ts +35 -0
  218. package/dist/types/auth/signActions.d.ts.map +1 -0
  219. package/dist/types/constants.d.ts +35 -0
  220. package/dist/types/constants.d.ts.map +1 -0
  221. package/dist/types/index.d.ts +19 -0
  222. package/dist/types/index.d.ts.map +1 -0
  223. package/dist/types/types/auth.d.ts +32 -0
  224. package/dist/types/types/auth.d.ts.map +1 -0
  225. package/dist/types/types/index.d.ts +4 -0
  226. package/dist/types/types/index.d.ts.map +1 -0
  227. package/dist/types/types/wire.d.ts +195 -0
  228. package/dist/types/types/wire.d.ts.map +1 -0
  229. package/dist/types/types/ws.d.ts +108 -0
  230. package/dist/types/types/ws.d.ts.map +1 -0
  231. package/dist/types/utils/activityCursor.d.ts +47 -0
  232. package/dist/types/utils/activityCursor.d.ts.map +1 -0
  233. package/dist/types/utils/apiClient.d.ts +90 -0
  234. package/dist/types/utils/apiClient.d.ts.map +1 -0
  235. package/dist/types/utils/index.d.ts +11 -0
  236. package/dist/types/utils/index.d.ts.map +1 -0
  237. package/dist/types/utils/liquidation.d.ts +20 -0
  238. package/dist/types/utils/liquidation.d.ts.map +1 -0
  239. package/dist/types/utils/mapActivity.d.ts +21 -0
  240. package/dist/types/utils/mapActivity.d.ts.map +1 -0
  241. package/dist/types/utils/mapFill.d.ts +12 -0
  242. package/dist/types/utils/mapFill.d.ts.map +1 -0
  243. package/dist/types/utils/mapOrder.d.ts +50 -0
  244. package/dist/types/utils/mapOrder.d.ts.map +1 -0
  245. package/dist/types/utils/mapPosition.d.ts +19 -0
  246. package/dist/types/utils/mapPosition.d.ts.map +1 -0
  247. package/dist/types/utils/ohlcvInterval.d.ts +11 -0
  248. package/dist/types/utils/ohlcvInterval.d.ts.map +1 -0
  249. package/dist/types/utils/ondoAsset.d.ts +4 -0
  250. package/dist/types/utils/ondoAsset.d.ts.map +1 -0
  251. package/dist/types/utils/orderFormatting.d.ts +33 -0
  252. package/dist/types/utils/orderFormatting.d.ts.map +1 -0
  253. package/dist/types/websocket/OndoWsProvider.d.ts +122 -0
  254. package/dist/types/websocket/OndoWsProvider.d.ts.map +1 -0
  255. package/package.json +64 -0
  256. package/src/OndoProvider.ts +635 -0
  257. package/src/accountConfig.ts +105 -0
  258. package/src/accountSummary.ts +22 -0
  259. package/src/auth/OndoTokenStore.ts +83 -0
  260. package/src/auth/completeSiweLogin.ts +43 -0
  261. package/src/auth/index.ts +12 -0
  262. package/src/auth/signActions.ts +160 -0
  263. package/src/constants.ts +38 -0
  264. package/src/index.ts +36 -0
  265. package/src/types/auth.ts +32 -0
  266. package/src/types/index.ts +5 -0
  267. package/src/types/wire.ts +228 -0
  268. package/src/types/ws.ts +79 -0
  269. package/src/utils/activityCursor.ts +140 -0
  270. package/src/utils/apiClient.ts +257 -0
  271. package/src/utils/index.ts +35 -0
  272. package/src/utils/liquidation.ts +37 -0
  273. package/src/utils/mapActivity.ts +61 -0
  274. package/src/utils/mapFill.ts +47 -0
  275. package/src/utils/mapOrder.ts +201 -0
  276. package/src/utils/mapPosition.ts +44 -0
  277. package/src/utils/ohlcvInterval.ts +69 -0
  278. package/src/utils/ondoAsset.ts +10 -0
  279. package/src/utils/orderFormatting.ts +70 -0
  280. package/src/websocket/OndoWsProvider.ts +752 -0
@@ -0,0 +1,366 @@
1
+ import { getMarketRegistry, localStorageAdapter, PerpsError, resolveQuote, resolveRetryPolicy, toMarketDisplay, } from '@lifi/perps-sdk';
2
+ import { ActivityType, PerpsErrorCode } from '@lifi/perps-types';
3
+ import { projectOndoConfigSettings } from './accountConfig.js';
4
+ import { getAccountSummary } from './accountSummary.js';
5
+ import { OndoTokenStore } from './auth/OndoTokenStore.js';
6
+ import { executeOndoRestCallActions, ondoSignActions, } from './auth/signActions.js';
7
+ import { DEFAULT_ONDO_API_URL, ONDO_BASE_FEE_TIER, ONDO_PROVIDER_KEY, } from './constants.js';
8
+ import { decodeActivityCursor, encodeActivityCursor, } from './utils/activityCursor.js';
9
+ import { ONDO_RETRY_DEFAULTS, OndoApiClient, OndoSessionExpiredError, } from './utils/apiClient.js';
10
+ import { classifyAndMapOrders, estimateLiquidationPrice, formatOrderPrice, formatOrderSize, mapFill, mapFundingActivity, mapLiquidationActivity, mapOpenPositions, mapOrderDetail, ondoAsset, } from './utils/index.js';
11
+ /**
12
+ * Ondo provider plugin factory. Returns an object implementing
13
+ * {@link PerpsProviderPlugin}, mirroring `lighterProvider()`.
14
+ *
15
+ * Per-user reads call Ondo's REST API directly — every one requires the
16
+ * session JWT obtained through the SIWE login and stored in the token store.
17
+ * Without a stored token the reads degrade gracefully (empty pages,
18
+ * `loggedIn: false` config) instead of failing; `getOrder` throws because an
19
+ * empty result would be indistinguishable from "order not found".
20
+ *
21
+ * @example
22
+ * ```ts
23
+ * const client = createPerpsClient({
24
+ * integrator: 'my-app',
25
+ * providers: [ondoProvider()],
26
+ * })
27
+ * ```
28
+ * @public
29
+ */
30
+ export const ondoProvider = (options = {}) => {
31
+ // Late-bind slot: the factory runs before the client exists, so `bind`
32
+ // assigns this once during createPerpsClient and the read methods read it.
33
+ let boundClient;
34
+ const requireClient = () => {
35
+ if (boundClient === undefined) {
36
+ throw new PerpsError(PerpsErrorCode.SDKError, 'ondoProvider used before binding. Register it via ' +
37
+ 'createPerpsClient({ providers: [ondoProvider()] }).');
38
+ }
39
+ return boundClient;
40
+ };
41
+ const apiUrl = options.apiUrl ?? DEFAULT_ONDO_API_URL;
42
+ const tokenStore = new OndoTokenStore(options.storage ?? localStorageAdapter, apiUrl);
43
+ const apiClient = (opts) => {
44
+ const client = requireClient();
45
+ return new OndoApiClient(apiUrl, {
46
+ signal: opts?.signal,
47
+ policy: resolveRetryPolicy(ONDO_RETRY_DEFAULTS, client.config.retry, ONDO_PROVIDER_KEY),
48
+ fetchImpl: client.config.fetch,
49
+ });
50
+ };
51
+ const marketRegistry = () => getMarketRegistry(requireClient(), ONDO_PROVIDER_KEY);
52
+ const requireMarketDisplay = (marketId) => toMarketDisplay(marketRegistry().require(marketId));
53
+ const emptyConfig = {
54
+ provider: ONDO_PROVIDER_KEY,
55
+ loggedIn: false,
56
+ referralSet: false,
57
+ };
58
+ const loggedOutAccount = (address) => ({
59
+ provider: ONDO_PROVIDER_KEY,
60
+ address,
61
+ balances: [],
62
+ collateralBalances: [],
63
+ positions: [],
64
+ marginUsed: '0',
65
+ unrealizedPnl: '0',
66
+ feeTier: ONDO_BASE_FEE_TIER,
67
+ config: emptyConfig,
68
+ });
69
+ // Runs an authenticated read against a live session. An absent local token
70
+ // and a server-revoked one (surfaced mid-call as `OndoSessionExpiredError`)
71
+ // both evict any stale token and fall back to `loggedOut`, so a rotated
72
+ // session never soft-locks the UI behind a token that looks valid locally.
73
+ const withSession = async (address, loggedOut, fn) => {
74
+ const token = await tokenStore.get(address);
75
+ if (token === null) {
76
+ return loggedOut();
77
+ }
78
+ try {
79
+ return await fn(token);
80
+ }
81
+ catch (err) {
82
+ if (err instanceof OndoSessionExpiredError) {
83
+ await tokenStore.remove(address);
84
+ return loggedOut();
85
+ }
86
+ throw err;
87
+ }
88
+ };
89
+ return {
90
+ type: ONDO_PROVIDER_KEY,
91
+ bind(client) {
92
+ boundClient = client;
93
+ },
94
+ async getAccount(params, opts) {
95
+ return withSession(params.address, () => loggedOutAccount(params.address), async (token) => {
96
+ const client = apiClient(opts);
97
+ const [balance, rawPositions, referral] = await Promise.all([
98
+ client.get('/v1/perps/balance', {
99
+ authToken: token.token,
100
+ }),
101
+ client.get('/v1/perps/positions', {
102
+ authToken: token.token,
103
+ }),
104
+ client.get('/v1/account/referral', {
105
+ authToken: token.token,
106
+ }),
107
+ marketRegistry().sync(),
108
+ ]);
109
+ const positions = mapOpenPositions(rawPositions, requireMarketDisplay);
110
+ // Single USD collateral row: `walletBalance` is gross (locked margin
111
+ // included, unrealized PnL excluded — the positions carry it).
112
+ return {
113
+ provider: ONDO_PROVIDER_KEY,
114
+ address: params.address,
115
+ balances: [],
116
+ collateralBalances: [
117
+ {
118
+ categoryId: ONDO_PROVIDER_KEY,
119
+ asset: ondoAsset('USD', 'USD'),
120
+ units: balance.walletBalance,
121
+ valueUsd: balance.walletBalance,
122
+ },
123
+ ],
124
+ positions,
125
+ marginUsed: balance.usedMargin,
126
+ unrealizedPnl: balance.unrealizedPnl,
127
+ feeTier: ONDO_BASE_FEE_TIER,
128
+ config: {
129
+ provider: ONDO_PROVIDER_KEY,
130
+ loggedIn: true,
131
+ authTokenExpiry: token.expirationSecs,
132
+ referralSet: referral !== null && referral !== undefined,
133
+ },
134
+ };
135
+ });
136
+ },
137
+ async accountExists(params, opts) {
138
+ return withSession(params.address, () => false, async (token) => {
139
+ await apiClient(opts).get('/v1/account', { authToken: token.token });
140
+ return true;
141
+ });
142
+ },
143
+ async getPositions(params, opts) {
144
+ return withSession(params.address, () => ({
145
+ provider: ONDO_PROVIDER_KEY,
146
+ positions: [],
147
+ pagination: { limit: params.limit ?? 0, hasMore: false },
148
+ }), async (token) => {
149
+ const client = apiClient(opts);
150
+ const [rawPositions] = await Promise.all([
151
+ client.get('/v1/perps/positions', {
152
+ authToken: token.token,
153
+ }),
154
+ marketRegistry().sync(),
155
+ ]);
156
+ let positions = mapOpenPositions(rawPositions, requireMarketDisplay);
157
+ if (params.marketId !== undefined) {
158
+ positions = positions.filter((p) => p.market.id === params.marketId);
159
+ }
160
+ return {
161
+ provider: ONDO_PROVIDER_KEY,
162
+ positions,
163
+ pagination: {
164
+ limit: params.limit ?? positions.length,
165
+ hasMore: false,
166
+ },
167
+ };
168
+ });
169
+ },
170
+ async getOrders(params, opts) {
171
+ return withSession(params.address, () => ({
172
+ provider: ONDO_PROVIDER_KEY,
173
+ openOrders: [],
174
+ triggerOrders: [],
175
+ pagination: { limit: params.limit ?? 0, hasMore: false },
176
+ }), async (token) => {
177
+ const client = apiClient(opts);
178
+ const queryParams = {};
179
+ if (params.marketId !== undefined) {
180
+ queryParams.market = params.marketId;
181
+ }
182
+ if (params.limit !== undefined) {
183
+ queryParams.limit = params.limit;
184
+ }
185
+ if (params.cursor !== undefined) {
186
+ queryParams.cursor = params.cursor;
187
+ }
188
+ const [page] = await Promise.all([
189
+ client.getPage('/v1/perps/orders', {
190
+ params: queryParams,
191
+ authToken: token.token,
192
+ }),
193
+ marketRegistry().sync(),
194
+ ]);
195
+ const registry = marketRegistry();
196
+ const { openOrders, triggerOrders } = classifyAndMapOrders(page.result, (marketId) => {
197
+ const market = registry.get(marketId);
198
+ return market === undefined ? undefined : toMarketDisplay(market);
199
+ });
200
+ const nextCursor = page.pageInfo?.nextCursor;
201
+ return {
202
+ provider: ONDO_PROVIDER_KEY,
203
+ openOrders,
204
+ triggerOrders,
205
+ pagination: {
206
+ limit: params.limit ?? openOrders.length + triggerOrders.length,
207
+ hasMore: nextCursor !== undefined,
208
+ ...(nextCursor === undefined ? {} : { cursor: nextCursor }),
209
+ },
210
+ };
211
+ });
212
+ },
213
+ async getOrder(params, opts) {
214
+ return withSession(params.address, () => {
215
+ throw new PerpsError(PerpsErrorCode.SDKError, 'Ondo order lookup requires a session token. Run the SIWE login first.');
216
+ }, async (token) => {
217
+ const client = apiClient(opts);
218
+ const [order] = await Promise.all([
219
+ client.get(`/v1/perps/orders/${encodeURIComponent(params.id)}`, { authToken: token.token }),
220
+ marketRegistry().sync(),
221
+ ]);
222
+ return mapOrderDetail(order, requireMarketDisplay(order.market));
223
+ });
224
+ },
225
+ async getFills(params, opts) {
226
+ return withSession(params.address, () => ({
227
+ provider: ONDO_PROVIDER_KEY,
228
+ items: [],
229
+ pagination: { limit: params.limit ?? 0, hasMore: false },
230
+ }), async (token) => {
231
+ const client = apiClient(opts);
232
+ const queryParams = {};
233
+ if (params.limit !== undefined) {
234
+ queryParams.limit = params.limit;
235
+ }
236
+ if (params.cursor !== undefined) {
237
+ queryParams.cursor = params.cursor;
238
+ }
239
+ const [page] = await Promise.all([
240
+ client.getPage('/v1/perps/fills', {
241
+ params: queryParams,
242
+ authToken: token.token,
243
+ }),
244
+ marketRegistry().sync(),
245
+ ]);
246
+ const items = page.result.map((fill) => mapFill(fill, requireMarketDisplay(fill.market)));
247
+ const nextCursor = page.pageInfo?.nextCursor;
248
+ return {
249
+ provider: ONDO_PROVIDER_KEY,
250
+ items,
251
+ pagination: {
252
+ limit: params.limit ?? items.length,
253
+ hasMore: nextCursor !== undefined,
254
+ ...(nextCursor === undefined ? {} : { cursor: nextCursor }),
255
+ },
256
+ };
257
+ });
258
+ },
259
+ async getActivity(params, opts) {
260
+ return withSession(params.address, () => ({
261
+ provider: ONDO_PROVIDER_KEY,
262
+ items: [],
263
+ pagination: { limit: params.limit ?? 0, hasMore: false },
264
+ }), async (token) => {
265
+ const inputCursor = decodeActivityCursor(params.cursor);
266
+ const client = apiClient(opts);
267
+ const wantsType = (t) => params.type === undefined || params.type.includes(t);
268
+ const shouldFetch = (t, key) => {
269
+ if (!wantsType(t)) {
270
+ return false;
271
+ }
272
+ if (inputCursor === undefined) {
273
+ return true;
274
+ }
275
+ const v = inputCursor[key];
276
+ return typeof v === 'string' && v.length > 0;
277
+ };
278
+ const cursorParams = (key) => {
279
+ const v = inputCursor?.[key];
280
+ return typeof v === 'string' && v.length > 0 ? { cursor: v } : {};
281
+ };
282
+ const emptyPage = () => ({
283
+ result: [],
284
+ pageInfo: undefined,
285
+ });
286
+ const [fundings, liquidations] = await Promise.all([
287
+ shouldFetch(ActivityType.FUNDING, 'fundings')
288
+ ? client.getPage('/v1/perps/funding_fees', {
289
+ params: cursorParams('fundings'),
290
+ authToken: token.token,
291
+ })
292
+ : Promise.resolve(emptyPage()),
293
+ shouldFetch(ActivityType.LIQUIDATION, 'liquidations')
294
+ ? client.getPage('/v1/perps/liquidation_history', {
295
+ params: cursorParams('liquidations'),
296
+ authToken: token.token,
297
+ })
298
+ : Promise.resolve(emptyPage()),
299
+ marketRegistry().sync(),
300
+ ]);
301
+ const items = [
302
+ ...fundings.result.map((f) => mapFundingActivity(f, requireMarketDisplay(f.market))),
303
+ ...liquidations.result.map((l) => mapLiquidationActivity(l, requireMarketDisplay)),
304
+ ];
305
+ const merged = [...(inputCursor?.overflow ?? []), ...items];
306
+ const filtered = merged.filter((it) => {
307
+ const ts = new Date(it.timestamp).getTime();
308
+ if (params.startTime !== undefined && ts < params.startTime) {
309
+ return false;
310
+ }
311
+ if (params.endTime !== undefined && ts > params.endTime) {
312
+ return false;
313
+ }
314
+ return true;
315
+ });
316
+ filtered.sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());
317
+ const limit = params.limit ?? filtered.length;
318
+ const emitted = filtered.slice(0, limit);
319
+ const overflow = filtered.slice(limit);
320
+ const nextCursorEnvelope = {
321
+ fundings: fundings.pageInfo?.nextCursor,
322
+ liquidations: liquidations.pageInfo?.nextCursor,
323
+ overflow,
324
+ };
325
+ const responseCursor = encodeActivityCursor(nextCursorEnvelope);
326
+ const hasMore = responseCursor !== undefined;
327
+ return {
328
+ provider: ONDO_PROVIDER_KEY,
329
+ items: emitted,
330
+ pagination: {
331
+ limit,
332
+ hasMore,
333
+ ...(responseCursor === undefined
334
+ ? {}
335
+ : { cursor: responseCursor }),
336
+ },
337
+ };
338
+ });
339
+ },
340
+ getQuote(params, opts) {
341
+ return resolveQuote(requireClient(), ONDO_PROVIDER_KEY, params, ONDO_BASE_FEE_TIER, opts);
342
+ },
343
+ getAccountSummary(account, positions) {
344
+ return getAccountSummary(account, positions);
345
+ },
346
+ formatOrderPrice,
347
+ formatOrderSize,
348
+ estimateLiquidationPrice,
349
+ projectConfig(config, setup, configOptions) {
350
+ return projectOndoConfigSettings(config, setup, configOptions);
351
+ },
352
+ signActions(method, steps, address, ctx) {
353
+ return ondoSignActions({ client: apiClient(), tokenStore }, method, steps, address, ctx);
354
+ },
355
+ executeRestCallActions(steps, _address, opts) {
356
+ return executeOndoRestCallActions(apiClient(opts), steps);
357
+ },
358
+ };
359
+ };
360
+ /**
361
+ * Alias matching `@lifi/sdk`'s capitalised factory naming (`EVM()`, `Lighter`).
362
+ *
363
+ * @public
364
+ */
365
+ export const Ondo = ondoProvider;
366
+ //# sourceMappingURL=OndoProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OndoProvider.js","sourceRoot":"","sources":["../../src/OndoProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { AccountConfig, AccountConfigSetting, ProviderAction } from '@lifi/perps-types';
2
+ /**
3
+ * Project the union of Ondo setup + options descriptors against the typed
4
+ * `OndoAccountConfig`. Produces exactly one `AccountConfigSetting` per
5
+ * descriptor, in `setup`-then-`options` order.
6
+ *
7
+ * @param config Typed account state; a non-`ondo` config throws `SDKError`.
8
+ * @param setup `Provider.setup` array as emitted by `/providers`.
9
+ * @param options `Provider.options` array as emitted by `/providers`.
10
+ * @public
11
+ */
12
+ export declare function projectOndoConfigSettings(config: AccountConfig, setup: ProviderAction[], options: ProviderAction[]): AccountConfigSetting[];
13
+ //# sourceMappingURL=accountConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accountConfig.d.ts","sourceRoot":"","sources":["../../src/accountConfig.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EAEpB,cAAc,EACf,MAAM,mBAAmB,CAAA;AA0E1B;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,cAAc,EAAE,EACvB,OAAO,EAAE,cAAc,EAAE,GACxB,oBAAoB,EAAE,CAUxB"}
@@ -0,0 +1,77 @@
1
+ import { PerpsError } from '@lifi/perps-sdk';
2
+ import { ActionType, PerpsErrorCode } from '@lifi/perps-types';
3
+ function assertNever(value) {
4
+ throw new Error(`Unreachable: exhaustiveness check failed for value ${JSON.stringify(value)}`);
5
+ }
6
+ /**
7
+ * Project a single Ondo descriptor against the typed `OndoAccountConfig`
8
+ * into an `AccountConfigSetting`. Ondo has two setup descriptors:
9
+ * `SIWE_LOGIN`, satisfied by the presence of a live session token, and
10
+ * `SET_REFERRAL`, satisfied when a referral code is already applied to the
11
+ * account.
12
+ *
13
+ * The switch is exhaustive over `ActionType` so enum additions force a
14
+ * compile error in the `default` arm. ActionTypes that are not valid on
15
+ * `Provider.setup` / `Provider.options` throw at runtime.
16
+ */
17
+ function projectOndoDescriptor(descriptor, config) {
18
+ switch (descriptor.type) {
19
+ case ActionType.SIWE_LOGIN:
20
+ return {
21
+ type: descriptor.type,
22
+ values: [
23
+ { name: 'authTokenExpiry', value: config.authTokenExpiry ?? null },
24
+ ],
25
+ satisfied: config.loggedIn,
26
+ };
27
+ case ActionType.SET_REFERRAL:
28
+ return {
29
+ type: descriptor.type,
30
+ values: [],
31
+ satisfied: config.referralSet,
32
+ };
33
+ case ActionType.APPROVE_AGENT:
34
+ case ActionType.APPROVE_BUILDER_FEE:
35
+ case ActionType.APPROVE_INTEGRATOR:
36
+ case ActionType.ACCOUNT_MODE:
37
+ case ActionType.ACCOUNT_TYPE:
38
+ case ActionType.SEND_ASSET:
39
+ case ActionType.WITHDRAWAL:
40
+ case ActionType.TRANSFER:
41
+ case ActionType.PLACE_ORDER:
42
+ case ActionType.PLACE_TRIGGER_ORDER:
43
+ case ActionType.CANCEL_ORDER:
44
+ case ActionType.CANCEL_ALL_ORDERS:
45
+ case ActionType.MODIFY_ORDER:
46
+ case ActionType.UPDATE_LEVERAGE:
47
+ case ActionType.UPDATE_POSITION_MARGIN:
48
+ case ActionType.UPDATE_ASSET_COLLATERAL:
49
+ case ActionType.REGISTER_API_KEY:
50
+ case ActionType.APPROVE_READ_ONLY_TOKEN:
51
+ case ActionType.DEPOSIT:
52
+ case ActionType.META_VOTE:
53
+ case ActionType.META_ACCEPT_TERMS:
54
+ throw new PerpsError(PerpsErrorCode.SDKError, `Ondo account-config mapper has no projection for descriptor type ` +
55
+ `'${descriptor.type}' — this ActionType is not valid on ` +
56
+ `Provider.setup / Provider.options for Ondo.`);
57
+ default:
58
+ return assertNever(descriptor.type);
59
+ }
60
+ }
61
+ /**
62
+ * Project the union of Ondo setup + options descriptors against the typed
63
+ * `OndoAccountConfig`. Produces exactly one `AccountConfigSetting` per
64
+ * descriptor, in `setup`-then-`options` order.
65
+ *
66
+ * @param config Typed account state; a non-`ondo` config throws `SDKError`.
67
+ * @param setup `Provider.setup` array as emitted by `/providers`.
68
+ * @param options `Provider.options` array as emitted by `/providers`.
69
+ * @public
70
+ */
71
+ export function projectOndoConfigSettings(config, setup, options) {
72
+ if (config.provider !== 'ondo') {
73
+ throw new PerpsError(PerpsErrorCode.SDKError, `Ondo account-config mapper received a '${config.provider}' config.`);
74
+ }
75
+ return [...setup, ...options].map((descriptor) => projectOndoDescriptor(descriptor, config));
76
+ }
77
+ //# sourceMappingURL=accountConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accountConfig.js","sourceRoot":"","sources":["../../src/accountConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAO5C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAE9D,SAAS,WAAW,CAAC,KAAY;IAC/B,MAAM,IAAI,KAAK,CACb,sDAAsD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAC9E,CAAA;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,qBAAqB,CAC5B,UAA0B,EAC1B,MAAyB;IAEzB,QAAQ,UAAU,CAAC,IAAI,EAAE,CAAC;QACxB,KAAK,UAAU,CAAC,UAAU;YACxB,OAAO;gBACL,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,MAAM,EAAE;oBACN,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,CAAC,eAAe,IAAI,IAAI,EAAE;iBACnE;gBACD,SAAS,EAAE,MAAM,CAAC,QAAQ;aAC3B,CAAA;QAEH,KAAK,UAAU,CAAC,YAAY;YAC1B,OAAO;gBACL,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,MAAM,EAAE,EAAE;gBACV,SAAS,EAAE,MAAM,CAAC,WAAW;aAC9B,CAAA;QAEH,KAAK,UAAU,CAAC,aAAa,CAAC;QAC9B,KAAK,UAAU,CAAC,mBAAmB,CAAC;QACpC,KAAK,UAAU,CAAC,kBAAkB,CAAC;QACnC,KAAK,UAAU,CAAC,YAAY,CAAC;QAC7B,KAAK,UAAU,CAAC,YAAY,CAAC;QAC7B,KAAK,UAAU,CAAC,UAAU,CAAC;QAC3B,KAAK,UAAU,CAAC,UAAU,CAAC;QAC3B,KAAK,UAAU,CAAC,QAAQ,CAAC;QACzB,KAAK,UAAU,CAAC,WAAW,CAAC;QAC5B,KAAK,UAAU,CAAC,mBAAmB,CAAC;QACpC,KAAK,UAAU,CAAC,YAAY,CAAC;QAC7B,KAAK,UAAU,CAAC,iBAAiB,CAAC;QAClC,KAAK,UAAU,CAAC,YAAY,CAAC;QAC7B,KAAK,UAAU,CAAC,eAAe,CAAC;QAChC,KAAK,UAAU,CAAC,sBAAsB,CAAC;QACvC,KAAK,UAAU,CAAC,uBAAuB,CAAC;QACxC,KAAK,UAAU,CAAC,gBAAgB,CAAC;QACjC,KAAK,UAAU,CAAC,uBAAuB,CAAC;QACxC,KAAK,UAAU,CAAC,OAAO,CAAC;QACxB,KAAK,UAAU,CAAC,SAAS,CAAC;QAC1B,KAAK,UAAU,CAAC,iBAAiB;YAC/B,MAAM,IAAI,UAAU,CAClB,cAAc,CAAC,QAAQ,EACvB,mEAAmE;gBACjE,IAAI,UAAU,CAAC,IAAI,sCAAsC;gBACzD,6CAA6C,CAChD,CAAA;QAEH;YACE,OAAO,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;IACvC,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,yBAAyB,CACvC,MAAqB,EACrB,KAAuB,EACvB,OAAyB;IAEzB,IAAI,MAAM,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;QAC/B,MAAM,IAAI,UAAU,CAClB,cAAc,CAAC,QAAQ,EACvB,0CAA0C,MAAM,CAAC,QAAQ,WAAW,CACrE,CAAA;IACH,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAC/C,qBAAqB,CAAC,UAAU,EAAE,MAAM,CAAC,CAC1C,CAAA;AACH,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { AccountResponse, AccountSummary, Position } from '@lifi/perps-types';
2
+ /**
3
+ * Roll an Ondo {@link AccountResponse} up into an {@link AccountSummary}.
4
+ * Ondo's collateral row holds `walletBalance`, which includes locked margin
5
+ * but not unrealized PnL (the positions carry it) — gross semantics: the
6
+ * venue counts unrealized PnL toward buying power
7
+ * (`availableMargin = marginBalance − usedMargin`).
8
+ *
9
+ * @public
10
+ */
11
+ export declare function getAccountSummary(account: AccountResponse, positions: Position[]): AccountSummary;
12
+ //# sourceMappingURL=accountSummary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accountSummary.d.ts","sourceRoot":"","sources":["../../src/accountSummary.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,QAAQ,EACT,MAAM,mBAAmB,CAAA;AAE1B;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,QAAQ,EAAE,GACpB,cAAc,CAEhB"}
@@ -0,0 +1,14 @@
1
+ import { summarizeAccount } from '@lifi/perps-sdk';
2
+ /**
3
+ * Roll an Ondo {@link AccountResponse} up into an {@link AccountSummary}.
4
+ * Ondo's collateral row holds `walletBalance`, which includes locked margin
5
+ * but not unrealized PnL (the positions carry it) — gross semantics: the
6
+ * venue counts unrealized PnL toward buying power
7
+ * (`availableMargin = marginBalance − usedMargin`).
8
+ *
9
+ * @public
10
+ */
11
+ export function getAccountSummary(account, positions) {
12
+ return summarizeAccount(account, positions, 'gross');
13
+ }
14
+ //# sourceMappingURL=accountSummary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accountSummary.js","sourceRoot":"","sources":["../../src/accountSummary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAOlD;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAAwB,EACxB,SAAqB;IAErB,OAAO,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;AACtD,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { type StorageAdapter } from '@lifi/perps-sdk';
2
+ import type { Address } from 'viem';
3
+ import type { OndoAuthToken } from '../types/auth.js';
4
+ /**
5
+ * Persists the Ondo session token per wallet address and environment via a
6
+ * `StorageAdapter`. An expired token reads back as absent (and is evicted),
7
+ * so callers can treat `null` uniformly as "run the SIWE login".
8
+ *
9
+ * @public
10
+ */
11
+ export declare class OndoTokenStore {
12
+ private readonly storage;
13
+ private readonly host;
14
+ constructor(storage: StorageAdapter, baseUrl: string);
15
+ private storageKey;
16
+ get(address: Address): Promise<OndoAuthToken | null>;
17
+ set(address: Address, token: OndoAuthToken): Promise<void>;
18
+ remove(address: Address): Promise<void>;
19
+ }
20
+ //# sourceMappingURL=OndoTokenStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OndoTokenStore.d.ts","sourceRoot":"","sources":["../../../src/auth/OndoTokenStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAC1E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AACnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAsCrD;;;;;;GAMG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;gBAEjB,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM;IAKpD,OAAO,CAAC,UAAU;IAMZ,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAapD,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1D,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAG9C"}
@@ -0,0 +1,61 @@
1
+ import { readValidatedRecord } from '@lifi/perps-sdk';
2
+ // Keys are namespaced by environment host as well as address: a production
3
+ // JWT is meaningless against the sandbox, and both stores may share one
4
+ // localStorage.
5
+ const STORAGE_PREFIX = 'lifi-perps-ondo-session';
6
+ const isOnAuthToken = (value) => {
7
+ if (typeof value !== 'object' || value === null) {
8
+ return false;
9
+ }
10
+ const { identifier, authType, accountId, issuedAtSecs, expirationSecs, token, newAccount, } = value;
11
+ return (typeof identifier === 'string' &&
12
+ typeof authType === 'string' &&
13
+ typeof accountId === 'string' &&
14
+ typeof issuedAtSecs === 'number' &&
15
+ Number.isFinite(issuedAtSecs) &&
16
+ typeof expirationSecs === 'number' &&
17
+ Number.isFinite(expirationSecs) &&
18
+ typeof token === 'string' &&
19
+ token.length > 0 &&
20
+ typeof newAccount === 'boolean');
21
+ };
22
+ const isExpired = (token) => token.expirationSecs * 1000 <= Date.now();
23
+ /**
24
+ * Persists the Ondo session token per wallet address and environment via a
25
+ * `StorageAdapter`. An expired token reads back as absent (and is evicted),
26
+ * so callers can treat `null` uniformly as "run the SIWE login".
27
+ *
28
+ * @public
29
+ */
30
+ export class OndoTokenStore {
31
+ storage;
32
+ host;
33
+ constructor(storage, baseUrl) {
34
+ this.storage = storage;
35
+ this.host = new URL(baseUrl).host;
36
+ }
37
+ storageKey(address) {
38
+ return `${STORAGE_PREFIX}:${this.host}:${address.toLowerCase()}`;
39
+ }
40
+ // Reads go straight to storage — no in-memory cache — so every store
41
+ // instance sharing a storage backend observes evictions immediately.
42
+ async get(address) {
43
+ const key = this.storageKey(address);
44
+ const parsed = await readValidatedRecord(this.storage, key, isOnAuthToken);
45
+ if (!parsed) {
46
+ return null;
47
+ }
48
+ if (isExpired(parsed)) {
49
+ await this.remove(address);
50
+ return null;
51
+ }
52
+ return parsed;
53
+ }
54
+ async set(address, token) {
55
+ await this.storage.set(this.storageKey(address), JSON.stringify(token));
56
+ }
57
+ async remove(address) {
58
+ await this.storage.remove(this.storageKey(address));
59
+ }
60
+ }
61
+ //# sourceMappingURL=OndoTokenStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OndoTokenStore.js","sourceRoot":"","sources":["../../../src/auth/OndoTokenStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAuB,MAAM,iBAAiB,CAAA;AAI1E,2EAA2E;AAC3E,wEAAwE;AACxE,gBAAgB;AAEhB,MAAM,cAAc,GAAG,yBAAyB,CAAA;AAEhD,MAAM,aAAa,GAAG,CAAC,KAAc,EAA0B,EAAE;IAC/D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,KAAK,CAAA;IACd,CAAC;IACD,MAAM,EACJ,UAAU,EACV,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,cAAc,EACd,KAAK,EACL,UAAU,GACX,GAAG,KAAgC,CAAA;IACpC,OAAO,CACL,OAAO,UAAU,KAAK,QAAQ;QAC9B,OAAO,QAAQ,KAAK,QAAQ;QAC5B,OAAO,SAAS,KAAK,QAAQ;QAC7B,OAAO,YAAY,KAAK,QAAQ;QAChC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC7B,OAAO,cAAc,KAAK,QAAQ;QAClC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC;QAC/B,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,CAAC,MAAM,GAAG,CAAC;QAChB,OAAO,UAAU,KAAK,SAAS,CAChC,CAAA;AACH,CAAC,CAAA;AAED,MAAM,SAAS,GAAG,CAAC,KAAoB,EAAW,EAAE,CAClD,KAAK,CAAC,cAAc,GAAG,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,CAAA;AAE3C;;;;;;GAMG;AACH,MAAM,OAAO,cAAc;IACR,OAAO,CAAgB;IACvB,IAAI,CAAQ;IAE7B,YAAY,OAAuB,EAAE,OAAe;QAClD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAA;IACnC,CAAC;IAEO,UAAU,CAAC,OAAgB;QACjC,OAAO,GAAG,cAAc,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,WAAW,EAAE,EAAE,CAAA;IAClE,CAAC;IAED,qEAAqE;IACrE,qEAAqE;IACrE,KAAK,CAAC,GAAG,CAAC,OAAgB;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;QACpC,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,aAAa,CAAC,CAAA;QAC1E,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAA;QACb,CAAC;QACD,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YAC1B,OAAO,IAAI,CAAA;QACb,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,OAAgB,EAAE,KAAoB;QAC9C,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;IACzE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAgB;QAC3B,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAA;IACrD,CAAC;CACF"}
@@ -0,0 +1,28 @@
1
+ import type { PerpsClientSigner } from '@lifi/perps-sdk';
2
+ import type { Hex } from 'viem';
3
+ import type { OndoAuthToken } from '../types/auth.js';
4
+ import type { OndoApiClient } from '../utils/apiClient.js';
5
+ /**
6
+ * SIWE challenge to sign, as issued by Ondo's `get_challenge`.
7
+ *
8
+ * @public
9
+ */
10
+ export interface OndoSiweChallenge {
11
+ id: string;
12
+ /** Plain-text ERC-4361 message; signed as-is via `personal_sign`. */
13
+ message: string;
14
+ }
15
+ /**
16
+ * Sign a SIWE challenge with the user's wallet and exchange it for an Ondo
17
+ * session token, directly against Ondo — the returned JWT never transits the
18
+ * LI.FI backend. viem's `signMessage` performs the EIP-191 `personal_sign`
19
+ * encoding Ondo verifies against. The signature is returned alongside the
20
+ * token so callers can hand it back as a `SiweSignedActionStep`.
21
+ *
22
+ * @public
23
+ */
24
+ export declare function completeSiweLogin(client: OndoApiClient, signer: PerpsClientSigner, challenge: OndoSiweChallenge): Promise<{
25
+ token: OndoAuthToken;
26
+ signature: Hex;
27
+ }>;
28
+ //# sourceMappingURL=completeSiweLogin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completeSiweLogin.d.ts","sourceRoot":"","sources":["../../../src/auth/completeSiweLogin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAE1D;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,iBAAiB,EACzB,SAAS,EAAE,iBAAiB,GAC3B,OAAO,CAAC;IAAE,KAAK,EAAE,aAAa,CAAC;IAAC,SAAS,EAAE,GAAG,CAAA;CAAE,CAAC,CAanD"}