@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,90 @@
1
+ import { PerpsError, type ResolvedRetryPolicy } from '@lifi/perps-sdk';
2
+ import type { OndoPageInfo } from '../types/wire.js';
3
+ /** @internal */
4
+ export type ApiParams = Record<string, string | number | boolean>;
5
+ /** One page of a paginated Ondo response: `pageInfo` is a SIBLING of `result`. @public */
6
+ export interface OndoPage<T> {
7
+ result: T[];
8
+ pageInfo: OndoPageInfo | undefined;
9
+ }
10
+ /** @internal */
11
+ export type OndoHttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE';
12
+ /**
13
+ * Ondo request failure — a non-2xx HTTP status, a `success: false` envelope,
14
+ * or a body that is not a `GenericResponse` envelope at all. `errorCode`
15
+ * carries the wire `error_code` when the envelope advertised one.
16
+ *
17
+ * @public
18
+ */
19
+ export declare class OndoApiError extends PerpsError {
20
+ readonly errorCode: string | undefined;
21
+ constructor(message: string, errorCode?: string);
22
+ }
23
+ /**
24
+ * The Ondo session JWT was rejected (HTTP 401). Distinct from
25
+ * {@link OndoApiError} so callers can evict the stored token and re-run the
26
+ * SIWE login instead of surfacing a generic venue failure.
27
+ *
28
+ * @public
29
+ */
30
+ export declare class OndoSessionExpiredError extends PerpsError {
31
+ constructor(message: string);
32
+ }
33
+ /** @internal */
34
+ export declare const ONDO_RETRY_DEFAULTS: ResolvedRetryPolicy;
35
+ /** @internal */
36
+ export interface OndoApiClientOptions {
37
+ signal?: AbortSignal;
38
+ policy?: ResolvedRetryPolicy;
39
+ fetchImpl?: typeof fetch;
40
+ }
41
+ /** @internal */
42
+ export interface OndoRequestOptions {
43
+ params?: ApiParams;
44
+ /** Ondo session JWT, sent as `Authorization: Bearer <token>`. */
45
+ authToken?: string;
46
+ }
47
+ /**
48
+ * HTTP boundary against Ondo's REST API.
49
+ *
50
+ * Browser-direct by design: the session JWT lives client-side only, so
51
+ * credentialed calls (`authToken` option) go straight to Ondo — never through
52
+ * the LI.FI backend. Every response is an `OndoGenericResponse` envelope; the
53
+ * client unwraps `result` on success and throws {@link OndoApiError} (carrying
54
+ * the wire `error_code`) otherwise. An HTTP 401 throws
55
+ * {@link OndoSessionExpiredError} so callers can re-run the SIWE login.
56
+ * @public
57
+ */
58
+ export declare class OndoApiClient {
59
+ private readonly baseUrl;
60
+ private readonly signal;
61
+ private readonly policy;
62
+ private readonly fetchImpl;
63
+ constructor(baseUrl: string, options?: OndoApiClientOptions);
64
+ get<T>(path: string, options?: OndoRequestOptions): Promise<T>;
65
+ /**
66
+ * GET a paginated endpoint, preserving the `pageInfo` sibling that
67
+ * {@link get}'s envelope unwrap would otherwise drop.
68
+ */
69
+ getPage<T>(path: string, options?: OndoRequestOptions): Promise<OndoPage<T>>;
70
+ /**
71
+ * Arbitrary-method request with caller-prebuilt headers — the execution
72
+ * surface for credential-bearing `RestCallSignedActionStep`s, whose
73
+ * `Authorization` header is attached by `signActions` from the token store.
74
+ * Only GET is ever retried; writes are not idempotent.
75
+ */
76
+ send<T>(method: OndoHttpMethod, path: string, options?: {
77
+ body?: unknown;
78
+ headers?: Record<string, string>;
79
+ }): Promise<T>;
80
+ /**
81
+ * POSTs are never auto-retried regardless of policy: Ondo writes (order
82
+ * placement, login completion) are not idempotent, and a retried request
83
+ * whose first attempt landed would double-submit.
84
+ */
85
+ post<T>(path: string, body?: unknown, options?: Pick<OndoRequestOptions, 'authToken'>): Promise<T>;
86
+ private buildUrl;
87
+ private perform;
88
+ private unwrap;
89
+ }
90
+ //# sourceMappingURL=apiClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiClient.d.ts","sourceRoot":"","sources":["../../../src/utils/apiClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,EACV,KAAK,mBAAmB,EACzB,MAAM,iBAAiB,CAAA;AAGxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAEpD,gBAAgB;AAChB,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAA;AAEjE,0FAA0F;AAC1F,MAAM,WAAW,QAAQ,CAAC,CAAC;IACzB,MAAM,EAAE,CAAC,EAAE,CAAA;IACX,QAAQ,EAAE,YAAY,GAAG,SAAS,CAAA;CACnC;AAED,gBAAgB;AAChB,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAA;AAE9D;;;;;;GAMG;AACH,qBAAa,YAAa,SAAQ,UAAU;IAC1C,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;gBAE1B,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;CAIhD;AAED;;;;;;GAMG;AACH,qBAAa,uBAAwB,SAAQ,UAAU;gBACzC,OAAO,EAAE,MAAM;CAG5B;AAED,gBAAgB;AAChB,eAAO,MAAM,mBAAmB,EAAE,mBAmBjC,CAAA;AAED,gBAAgB;AAChB,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,MAAM,CAAC,EAAE,mBAAmB,CAAA;IAC5B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CACzB;AAED,gBAAgB;AAChB,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AASD;;;;;;;;;;GAUG;AACH,qBAAa,aAAa;IACxB,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;gBAExC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,oBAAoB;IAOrD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAUpE;;;OAGG;IACG,OAAO,CAAC,CAAC,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAYvB;;;;;OAKG;IACG,IAAI,CAAC,CAAC,EACV,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAC7D,OAAO,CAAC,CAAC,CAAC;IAUb;;;;OAIG;IACG,IAAI,CAAC,CAAC,EACV,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,WAAW,CAAC,GAC9C,OAAO,CAAC,CAAC,CAAC;IAUb,OAAO,CAAC,QAAQ;YAaF,OAAO;IAgCrB,OAAO,CAAC,MAAM;CAyBf"}
@@ -0,0 +1,11 @@
1
+ export { decodeActivityCursor, encodeActivityCursor, type OndoActivityCursor, } from './activityCursor.js';
2
+ export { type ApiParams, ONDO_RETRY_DEFAULTS, OndoApiClient, type OndoApiClientOptions, OndoApiError, type OndoHttpMethod, type OndoPage, type OndoRequestOptions, OndoSessionExpiredError, } from './apiClient.js';
3
+ export { estimateLiquidationPrice } from './liquidation.js';
4
+ export { mapFundingActivity, mapLiquidationActivity } from './mapActivity.js';
5
+ export { mapFill } from './mapFill.js';
6
+ export { classifyAndMapOrders, isTriggerOrder, mapOrder, mapOrderDetail, mapOrderStatus, mapOrderType, mapStatusReason, mapTriggerOrder, } from './mapOrder.js';
7
+ export { mapOpenPositions, mapPosition } from './mapPosition.js';
8
+ export { intervalFromBarSpan, mapInterval } from './ohlcvInterval.js';
9
+ export { ondoAsset } from './ondoAsset.js';
10
+ export { formatOrderPrice, formatOrderSize } from './orderFormatting.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,KAAK,kBAAkB,GACxB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,KAAK,SAAS,EACd,mBAAmB,EACnB,aAAa,EACb,KAAK,oBAAoB,EACzB,YAAY,EACZ,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,kBAAkB,EACvB,uBAAuB,GACxB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,QAAQ,EACR,cAAc,EACd,cAAc,EACd,YAAY,EACZ,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAChE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Ondo liquidation price estimation.
3
+ *
4
+ * The LI.FI backend surfaces Ondo's per-market maintenance margin rate on the
5
+ * generic {@link PerpsMarket} as `maintenanceMarginRate`. The estimate is the
6
+ * standard isolated-margin model parameterised by that rate.
7
+ */
8
+ import { type LiquidationEstimateParams } from '@lifi/perps-sdk';
9
+ import type { PerpsMarket } from '@lifi/perps-types';
10
+ /**
11
+ * Estimate the liquidation price of a new position on an Ondo market.
12
+ *
13
+ * @returns The estimated liquidation price, or `undefined` when
14
+ * `market.maintenanceMarginRate` is absent (the model cannot be evaluated
15
+ * without the venue's maintenance margin rate) or the inputs are
16
+ * degenerate.
17
+ * @public
18
+ */
19
+ export declare function estimateLiquidationPrice(market: PerpsMarket, params: LiquidationEstimateParams): number | undefined;
20
+ //# sourceMappingURL=liquidation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"liquidation.d.ts","sourceRoot":"","sources":["../../../src/utils/liquidation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEpD;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,yBAAyB,GAChC,MAAM,GAAG,SAAS,CAUpB"}
@@ -0,0 +1,21 @@
1
+ import type { FundingActivity, LiquidationActivity, MarketDisplay } from '@lifi/perps-types';
2
+ import type { OndoFundingFeeTransfer, OndoLiquidationEvent } from '../types/wire.js';
3
+ /**
4
+ * Map an Ondo funding-fee transfer to a {@link FundingActivity}. Ondo carries
5
+ * no transfer id on the wire, so a deterministic `funding:<market>:<ISO time>`
6
+ * id is synthesized — funding settles at most once per market per interval,
7
+ * so the pair is unique.
8
+ *
9
+ * @param market - Backend-resolved market identity for `transfer.market`.
10
+ * @public
11
+ */
12
+ export declare const mapFundingActivity: (transfer: OndoFundingFeeTransfer, market: MarketDisplay) => FundingActivity;
13
+ /**
14
+ * Map an Ondo liquidation event to a {@link LiquidationActivity}. Ondo does
15
+ * not report the account value at liquidation time, and its margin accounts
16
+ * are cross-only, so `accountValue` is `'0'` and `leverageType` is `'cross'`.
17
+ *
18
+ * @public
19
+ */
20
+ export declare const mapLiquidationActivity: (event: OndoLiquidationEvent, resolveMarket: (market: string) => MarketDisplay) => LiquidationActivity;
21
+ //# sourceMappingURL=mapActivity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapActivity.d.ts","sourceRoot":"","sources":["../../../src/utils/mapActivity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,aAAa,EACd,MAAM,mBAAmB,CAAA;AAG1B,OAAO,KAAK,EACV,sBAAsB,EACtB,oBAAoB,EACrB,MAAM,kBAAkB,CAAA;AAEzB;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,GAC7B,UAAU,sBAAsB,EAChC,QAAQ,aAAa,KACpB,eAYF,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,GACjC,OAAO,oBAAoB,EAC3B,eAAe,CAAC,MAAM,EAAE,MAAM,KAAK,aAAa,KAC/C,mBAYD,CAAA"}
@@ -0,0 +1,12 @@
1
+ import type { Fill, MarketDisplay } from '@lifi/perps-types';
2
+ import type { OndoFill } from '../types/wire.js';
3
+ /**
4
+ * Map a raw Ondo fill to the generic {@link Fill}. The fee is netted against
5
+ * Ondo's `feeRebate`; when the wire `direction` is absent the classification
6
+ * falls back to the fill side.
7
+ *
8
+ * @param market - Backend-resolved market identity for `fill.market`.
9
+ * @public
10
+ */
11
+ export declare const mapFill: (fill: OndoFill, market: MarketDisplay) => Fill;
12
+ //# sourceMappingURL=mapFill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapFill.d.ts","sourceRoot":"","sources":["../../../src/utils/mapFill.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAQ5D,OAAO,KAAK,EAAE,QAAQ,EAAqB,MAAM,kBAAkB,CAAA;AAYnE;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,GAAI,MAAM,QAAQ,EAAE,QAAQ,aAAa,KAAG,IAkB9D,CAAA"}
@@ -0,0 +1,50 @@
1
+ import type { MarketDisplay, OpenOrder, Order, TriggerOrder } from '@lifi/perps-types';
2
+ import { OrderStatus, OrderType } from '@lifi/perps-types';
3
+ import type { OndoOrder, OndoOrderStatus, OndoOrderType } from '../types/wire.js';
4
+ /** @public */
5
+ export declare const mapOrderType: (type: OndoOrderType) => OrderType;
6
+ /**
7
+ * Map Ondo's order status onto the generic enum. `untriggered` stop orders
8
+ * are active resting orders from the trader's point of view, so they map to
9
+ * OPEN.
10
+ * @public
11
+ */
12
+ export declare const mapOrderStatus: (status: OndoOrderStatus) => OrderStatus;
13
+ /**
14
+ * Plain-English `statusReason` for a cancelled order; `undefined` for every
15
+ * other status. Unknown wire reasons fall back to the generic sentence rather
16
+ * than leaking raw enum values into the UI.
17
+ * @public
18
+ */
19
+ export declare const mapStatusReason: (order: OndoOrder) => string | undefined;
20
+ /**
21
+ * Whether an order rests on a trigger. Checks `stopOrderType` and
22
+ * `triggerPrice` besides the type so a lagging `type` field cannot
23
+ * misclassify a trigger as a plain order.
24
+ * @public
25
+ */
26
+ export declare const isTriggerOrder: (order: OndoOrder) => boolean;
27
+ /** Map an active non-trigger Ondo order to an {@link OpenOrder}. @public */
28
+ export declare const mapOrder: (order: OndoOrder, market: MarketDisplay) => OpenOrder;
29
+ /** Map an active trigger Ondo order to a {@link TriggerOrder}. @public */
30
+ export declare const mapTriggerOrder: (order: OndoOrder, market: MarketDisplay) => TriggerOrder;
31
+ /**
32
+ * Bucket a venue order list into active open/trigger orders (mapped) and
33
+ * terminal order ids. Orders whose market the resolver does not know are
34
+ * skipped.
35
+ * @public
36
+ */
37
+ export declare const classifyAndMapOrders: (orders: OndoOrder[], resolveMarket: (market: string) => MarketDisplay | undefined) => {
38
+ openOrders: OpenOrder[];
39
+ triggerOrders: TriggerOrder[];
40
+ terminated: string[];
41
+ };
42
+ /**
43
+ * Map a single venue order onto the rich {@link Order} detail shape.
44
+ * `remainingSize` and `averagePrice` are derived (`size − filledSize`,
45
+ * `filledCost ÷ filledSize`); `updatedAt` is the latest transition timestamp
46
+ * Ondo exposes, falling back to `createdAt`.
47
+ * @public
48
+ */
49
+ export declare const mapOrderDetail: (order: OndoOrder, market: MarketDisplay) => Order;
50
+ //# sourceMappingURL=mapOrder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapOrder.d.ts","sourceRoot":"","sources":["../../../src/utils/mapOrder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,KAAK,EACL,YAAY,EACb,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAEL,WAAW,EACX,SAAS,EAEV,MAAM,mBAAmB,CAAA;AAE1B,OAAO,KAAK,EACV,SAAS,EACT,eAAe,EACf,aAAa,EACd,MAAM,kBAAkB,CAAA;AAOzB,cAAc;AACd,eAAO,MAAM,YAAY,GAAI,MAAM,aAAa,KAAG,SAWlD,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,eAAe,KAAG,WAYxD,CAAA;AASD;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAAI,OAAO,SAAS,KAAG,MAAM,GAAG,SAK3D,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,SAAS,KAAG,OAIhB,CAAA;AAElC,4EAA4E;AAC5E,eAAO,MAAM,QAAQ,GACnB,OAAO,SAAS,EAChB,QAAQ,aAAa,KACpB,SAUD,CAAA;AAEF,0EAA0E;AAC1E,eAAO,MAAM,eAAe,GAC1B,OAAO,SAAS,EAChB,QAAQ,aAAa,KACpB,YAOD,CAAA;AAOF;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,SAAS,EAAE,EACnB,eAAe,CAAC,MAAM,EAAE,MAAM,KAAK,aAAa,GAAG,SAAS,KAC3D;IACD,UAAU,EAAE,SAAS,EAAE,CAAA;IACvB,aAAa,EAAE,YAAY,EAAE,CAAA;IAC7B,UAAU,EAAE,MAAM,EAAE,CAAA;CAqBrB,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GACzB,OAAO,SAAS,EAChB,QAAQ,aAAa,KACpB,KA+BF,CAAA"}
@@ -0,0 +1,19 @@
1
+ import type { MarketDisplay, Position } from '@lifi/perps-types';
2
+ import type { OndoPosition } from '../types/wire.js';
3
+ /**
4
+ * Map a raw Ondo position to the generic Position type. Ondo margin accounts
5
+ * are cross-margined only.
6
+ *
7
+ * @param market - Backend-resolved market identity for `pos.market`.
8
+ * @public
9
+ */
10
+ export declare const mapPosition: (pos: OndoPosition, market: MarketDisplay) => Position;
11
+ /**
12
+ * Map raw Ondo positions to open {@link Position}s, dropping neutral and
13
+ * zero-quantity rows. Only valid for payloads carrying the full position
14
+ * set — dropping zeros from a partial frame would make closes unobservable.
15
+ *
16
+ * @public
17
+ */
18
+ export declare const mapOpenPositions: (positions: OndoPosition[], resolveMarket: (market: string) => MarketDisplay) => Position[];
19
+ //# sourceMappingURL=mapPosition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapPosition.d.ts","sourceRoot":"","sources":["../../../src/utils/mapPosition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAGhE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAEpD;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,GACtB,KAAK,YAAY,EACjB,QAAQ,aAAa,KACpB,QAWD,CAAA;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAC3B,WAAW,YAAY,EAAE,EACzB,eAAe,CAAC,MAAM,EAAE,MAAM,KAAK,aAAa,KAC/C,QAAQ,EAK6C,CAAA"}
@@ -0,0 +1,11 @@
1
+ import type { OhlcvInterval } from '@lifi/perps-types';
2
+ /** @public */
3
+ export declare const mapInterval: (interval: string) => string;
4
+ /**
5
+ * Recover the SDK interval from a kline frame's bar span in seconds. Ondo's
6
+ * kline updates carry no resolution field — only the interval start/end —
7
+ * so the span is the only way to route a frame to its subscription.
8
+ * @public
9
+ */
10
+ export declare const intervalFromBarSpan: (spanSecs: number) => OhlcvInterval | undefined;
11
+ //# sourceMappingURL=ohlcvInterval.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ohlcvInterval.d.ts","sourceRoot":"","sources":["../../../src/utils/ohlcvInterval.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAoCtD,cAAc;AACd,eAAO,MAAM,WAAW,GAAI,UAAU,MAAM,KAAG,MAU9C,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,GAC9B,UAAU,MAAM,KACf,aAAa,GAAG,SAUlB,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { Asset } from '@lifi/perps-types';
2
+ /** @public */
3
+ export declare const ondoAsset: (id: string, displaySymbol: string) => Asset;
4
+ //# sourceMappingURL=ondoAsset.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ondoAsset.d.ts","sourceRoot":"","sources":["../../../src/utils/ondoAsset.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAG9C,cAAc;AACd,eAAO,MAAM,SAAS,GAAI,IAAI,MAAM,EAAE,eAAe,MAAM,KAAG,KAK5D,CAAA"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Ondo order size and price formatting for exchange submission.
3
+ *
4
+ * Ondo's tick and lot grids are exact contract increments (`quoteIncrement` /
5
+ * `baseIncrement`) that need not be powers of ten. When the generic
6
+ * {@link Market} carries the raw increment (`priceIncrement` / `sizeIncrement`)
7
+ * these helpers snap onto that grid; otherwise they fall back to the
8
+ * power-of-ten grid implied by `priceDecimals` / `szDecimals`. Prices round
9
+ * half-up to the nearest tick; sizes truncate toward zero to the lot.
10
+ */
11
+ import { type Market } from '@lifi/perps-types';
12
+ /**
13
+ * Format a price onto an Ondo market's tick grid: snapped half-up to the
14
+ * nearest `priceIncrement` (or the grid implied by `priceDecimals`), trailing
15
+ * zeros stripped.
16
+ *
17
+ * @throws {PerpsError} `ValidationError` when the market carries neither
18
+ * `priceIncrement` nor `priceDecimals` — without the venue's tick grid no
19
+ * correct price can be produced.
20
+ * @public
21
+ */
22
+ export declare function formatOrderPrice(market: Market, price: number): string;
23
+ /**
24
+ * Format a size onto an Ondo market's lot grid: truncated toward zero (never
25
+ * rounded up, so the size cannot exceed the user's balance) to the market's
26
+ * `sizeIncrement` (or the grid implied by `szDecimals`), trailing zeros
27
+ * stripped.
28
+ *
29
+ * @param size - Size in base-asset units as a non-negative magnitude.
30
+ * @public
31
+ */
32
+ export declare function formatOrderSize(market: Market, size: number): string;
33
+ //# sourceMappingURL=orderFormatting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orderFormatting.d.ts","sourceRoot":"","sources":["../../../src/utils/orderFormatting.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,KAAK,MAAM,EAAkB,MAAM,mBAAmB,CAAA;AAmB/D;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAOtE;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAUpE"}
@@ -0,0 +1,122 @@
1
+ import { type PerpsSDKClient, type ProviderGetQuoteParams, type QuoteListener, type StorageAdapter, WsProviderBase, type WsProviderFactory } from '@lifi/perps-sdk';
2
+ import type { Subscription } from '@lifi/perps-types';
3
+ import type { Address } from 'viem';
4
+ interface SubState {
5
+ /** Subscribe payload minus `op` — re-sent verbatim on every (re)open. */
6
+ frame: {
7
+ channel: string;
8
+ markets?: string[];
9
+ resolution?: string;
10
+ };
11
+ needsAuth: boolean;
12
+ address?: Address;
13
+ }
14
+ /**
15
+ * Options for {@link ondoWsProvider} / {@link OndoWsProvider}.
16
+ *
17
+ * @public
18
+ */
19
+ export interface OndoWsProviderOptions {
20
+ /**
21
+ * Ondo REST base URL — namespaces the session-token lookup, so it must
22
+ * match the `apiUrl` the SIWE login stored the token under. Defaults to
23
+ * production.
24
+ */
25
+ apiUrl?: string;
26
+ /** Session-token persistence backend. Defaults to browser `localStorage`. */
27
+ storage?: StorageAdapter;
28
+ }
29
+ /**
30
+ * Ondo realtime WS provider (extends {@link WsProviderBase}): subscribes to
31
+ * Ondo's WS channels (orderbook, trades, candles, market context, orders,
32
+ * fills, positions), logging in with the stored SIWE session JWT for the
33
+ * account channels. Construct via {@link ondoWsProvider}.
34
+ *
35
+ * @public
36
+ */
37
+ export declare class OndoWsProvider extends WsProviderBase<SubState> {
38
+ private readonly tokenStore;
39
+ private readonly client;
40
+ private readonly registry;
41
+ private readonly apiUrl;
42
+ /**
43
+ * Ref count per shared authenticated wire channel (`positionsPerps`,
44
+ * `fillsPerps`, `ordersPerps`): `positions`/`fills` and the derived
45
+ * `accountSummary` ride the same wire subs, so neither's teardown may
46
+ * unsubscribe one the other still holds.
47
+ */
48
+ private readonly authWireRefs;
49
+ /**
50
+ * Running account-summary inputs while `accountSummary` is subscribed
51
+ * (`undefined` otherwise). `walletBalance` is REST-seeded and refreshed on
52
+ * fills; `marginUsed`/`unrealizedPnl` track the latest positions frame.
53
+ */
54
+ private accountSummary;
55
+ /** Complete (mark-price-bearing) contexts, keyed by venue market symbol. */
56
+ private contexts;
57
+ /** Funding seen before the market's first mark price. */
58
+ private pendingFunding;
59
+ /** The single address this connection's login is bound to. */
60
+ private accountAddress;
61
+ private loginPromise;
62
+ constructor(wsUrl?: string, providerKey?: string, options?: OndoWsProviderOptions, client?: PerpsSDKClient);
63
+ subscribeQuote(params: ProviderGetQuoteParams, onQuote: QuoteListener): Promise<() => void>;
64
+ protected toKey(sub: Subscription): string;
65
+ protected openChannel(sub: Subscription): Promise<() => void>;
66
+ /** Register a wire sub, ref-counting the shared authenticated channels. */
67
+ private acquireWire;
68
+ /** Mirror of {@link acquireWire}: drop the wire sub on its last release. */
69
+ private releaseWire;
70
+ protected sendSubscribe(state: SubState): Promise<void>;
71
+ protected onClose(): void;
72
+ /** Wire subs for `sub`, keyed uniquely for the base's replay registry. */
73
+ private resolveChannel;
74
+ /**
75
+ * Send the login op once per connection, before the first authenticated
76
+ * subscribe. Concurrent callers share one in-flight login; a failure
77
+ * clears the guard so a later subscribe (after a fresh SIWE login) retries.
78
+ */
79
+ private ensureLogin;
80
+ private restClient;
81
+ /**
82
+ * Seed the account-summary inputs from the REST balance so the first emit is
83
+ * complete before any positions frame lands. Throws {@link
84
+ * OndoSessionExpiredError} when the SIWE session is missing, matching the
85
+ * other authenticated channels.
86
+ */
87
+ private seedAccountSummary;
88
+ /** Re-pull the wallet balance (moved by the fill) and re-emit the summary. */
89
+ private refreshAccountSummaryBalance;
90
+ /**
91
+ * Emit the current account summary. Gross semantics: `walletBalance` is the
92
+ * collateral, the positions carry unrealized PnL, so it counts toward buying
93
+ * power (`availableMargin = walletBalance + unrealizedPnl − marginUsed`).
94
+ */
95
+ private emitAccountSummary;
96
+ protected handleMessage(raw: string): void;
97
+ private handleBooks;
98
+ private handleTrades;
99
+ private handleKline;
100
+ private handleMarkPrices;
101
+ private handleFundingRates;
102
+ private emitContexts;
103
+ /** Registry-backed market identity, or `undefined` off the tradable list. */
104
+ private resolveMarket;
105
+ private handleOrders;
106
+ private handleFills;
107
+ private handlePositions;
108
+ }
109
+ /**
110
+ * Factory for registering the Ondo WS provider with `PerpsWsClient`:
111
+ * `new PerpsWsClient(client, { wsProviders: { ondo: ondoWsProvider() } })`.
112
+ *
113
+ * Closes over the per-instance options (storage, apiUrl override) so
114
+ * `PerpsWsClient` can call the returned factory with just
115
+ * `({ provider, wsUrl, client })` at subscribe time. `markets` is unused —
116
+ * Ondo advertises a single venue, no sub-DEX filtering.
117
+ *
118
+ * @public
119
+ */
120
+ export declare const ondoWsProvider: (options?: OndoWsProviderOptions) => WsProviderFactory;
121
+ export {};
122
+ //# sourceMappingURL=OndoWsProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OndoWsProvider.d.ts","sourceRoot":"","sources":["../../../src/websocket/OndoWsProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAGlB,KAAK,cAAc,EAEnB,cAAc,EACd,KAAK,iBAAiB,EAEvB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAGV,YAAY,EACb,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAwDnC,UAAU,QAAQ;IAChB,yEAAyE;IACzE,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACnE,SAAS,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,6EAA6E;IAC7E,OAAO,CAAC,EAAE,cAAc,CAAA;CACzB;AAED;;;;;;;GAOG;AACH,qBAAa,cAAe,SAAQ,cAAc,CAAC,QAAQ,CAAC;IAC1D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IACnD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4B;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAE/B;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4B;IAEzD;;;;OAIG;IACH,OAAO,CAAC,cAAc,CAET;IAEb,4EAA4E;IAC5E,OAAO,CAAC,QAAQ,CAAoC;IACpD,yDAAyD;IACzD,OAAO,CAAC,cAAc,CAGnB;IAEH,8DAA8D;IAC9D,OAAO,CAAC,cAAc,CAAoB;IAC1C,OAAO,CAAC,YAAY,CAA2B;gBAG7C,KAAK,GAAE,MAA4B,EACnC,WAAW,SAAoB,EAC/B,OAAO,GAAE,qBAA0B,EACnC,MAAM,CAAC,EAAE,cAAc;IAmBnB,cAAc,CAClB,MAAM,EAAE,sBAAsB,EAC9B,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,IAAI,CAAC;IAkBtB,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM;cAqB1B,WAAW,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC;IAgDnE,2EAA2E;YAC7D,WAAW;IAsBzB,4EAA4E;IAC5E,OAAO,CAAC,WAAW;cAaH,aAAa,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;cAO1C,OAAO,IAAI,IAAI;IAMlC,0EAA0E;IAC1E,OAAO,CAAC,cAAc;IAyGtB;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAoBnB,OAAO,CAAC,UAAU;IAMlB;;;;;OAKG;YACW,kBAAkB;IAmBhC,8EAA8E;YAChE,4BAA4B;IAiB1C;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAkB1B,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IA+C1C,OAAO,CAAC,WAAW;IAoBnB,OAAO,CAAC,YAAY;IA0BpB,OAAO,CAAC,WAAW;IAkBnB,OAAO,CAAC,gBAAgB;IAmBxB,OAAO,CAAC,kBAAkB;IAiB1B,OAAO,CAAC,YAAY;IAgBpB,6EAA6E;IAC7E,OAAO,CAAC,aAAa,CAGpB;IAED,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,WAAW;IAoBnB,OAAO,CAAC,eAAe;CA2BxB;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,cAAc,GACxB,UAAU,qBAAqB,KAAG,iBAEmB,CAAA"}
package/package.json ADDED
@@ -0,0 +1,64 @@
1
+ {
2
+ "name": "@lifi/perps-sdk-provider-ondo",
3
+ "version": "0.0.0-preview-7ff840c",
4
+ "description": "Ondo Perps provider plugin for @lifi/perps-sdk",
5
+ "homepage": "https://github.com/lifinance/perps-sdk",
6
+ "bugs": {
7
+ "url": "https://github.com/lifinance/perps-sdk/issues"
8
+ },
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "https://github.com/lifinance/perps-sdk.git"
12
+ },
13
+ "license": "Apache-2.0",
14
+ "author": "Aaron Boyd <aaron@li.finance>",
15
+ "type": "module",
16
+ "main": "./dist/cjs/index.js",
17
+ "module": "./dist/esm/index.js",
18
+ "types": "./dist/types/index.d.ts",
19
+ "typings": "./dist/types/index.d.ts",
20
+ "sideEffects": false,
21
+ "exports": {
22
+ ".": {
23
+ "types": "./dist/types/index.d.ts",
24
+ "import": "./dist/esm/index.js",
25
+ "default": "./dist/cjs/index.js"
26
+ },
27
+ "./package.json": "./package.json"
28
+ },
29
+ "files": [
30
+ "dist/**",
31
+ "!dist/**/*.tsbuildinfo",
32
+ "src/**/*.ts",
33
+ "!src/**/*.spec.ts",
34
+ "!src/**/*.test.ts",
35
+ "!src/**/*.mock.ts",
36
+ "!src/**/*.handlers.ts",
37
+ "!src/**/*.tsbuildinfo",
38
+ "!**/__mocks__/**",
39
+ "!*.tmp",
40
+ "!*.env",
41
+ "!tsconfig.json"
42
+ ],
43
+ "dependencies": {
44
+ "big.js": "^7.0.1",
45
+ "viem": "^2.48.8",
46
+ "@lifi/perps-types": "^0.0.0-preview-7ff840c"
47
+ },
48
+ "peerDependencies": {
49
+ "@lifi/perps-sdk": "^0.0.0-preview-7ff840c"
50
+ },
51
+ "publishConfig": {
52
+ "access": "public"
53
+ },
54
+ "keywords": [
55
+ "perps",
56
+ "perpetuals",
57
+ "trading",
58
+ "defi",
59
+ "lifi",
60
+ "sdk",
61
+ "viem",
62
+ "ondo"
63
+ ]
64
+ }