@polyester/sdk 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (316) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/README.md +63 -17
  3. package/dist/_virtual/_rolldown/runtime.js +15 -1
  4. package/dist/account-signer/types.d.ts.map +1 -1
  5. package/dist/account-signer/types.js +6 -3
  6. package/dist/account-signer/types.js.map +1 -1
  7. package/dist/browser-client.d.ts +4 -2
  8. package/dist/browser-client.d.ts.map +1 -1
  9. package/dist/browser-client.js +3 -4
  10. package/dist/browser-client.js.map +1 -1
  11. package/dist/catalogs/client-catalog.d.ts.map +1 -1
  12. package/dist/catalogs/client-catalog.js +11 -4
  13. package/dist/catalogs/client-catalog.js.map +1 -1
  14. package/dist/catalogs/index.js +1 -1
  15. package/dist/catalogs/readers.d.ts.map +1 -1
  16. package/dist/catalogs/readers.js +3 -1
  17. package/dist/catalogs/readers.js.map +1 -1
  18. package/dist/catalogs/snapshot-validation.js +132 -0
  19. package/dist/catalogs/snapshot-validation.js.map +1 -0
  20. package/dist/catalogs/snapshot.d.ts.map +1 -1
  21. package/dist/catalogs/snapshot.js +16 -7
  22. package/dist/catalogs/snapshot.js.map +1 -1
  23. package/dist/catalogs/zipper-supply.d.ts.map +1 -1
  24. package/dist/catalogs/zipper-supply.js +10 -7
  25. package/dist/catalogs/zipper-supply.js.map +1 -1
  26. package/dist/core-client.d.ts +24 -17
  27. package/dist/core-client.d.ts.map +1 -1
  28. package/dist/core-client.js +21 -3
  29. package/dist/core-client.js.map +1 -1
  30. package/dist/environment.d.ts.map +1 -1
  31. package/dist/environment.js +32 -1
  32. package/dist/environment.js.map +1 -1
  33. package/dist/gen/marketoverview/v1/marketoverview_pb.d.ts +7 -0
  34. package/dist/gen/marketoverview/v1/marketoverview_pb.d.ts.map +1 -1
  35. package/dist/gen/marketoverview/v1/marketoverview_pb.js +1 -1
  36. package/dist/gen/marketoverview/v1/marketoverview_pb.js.map +1 -1
  37. package/dist/index.js +3 -3
  38. package/dist/realtime/client.js +13 -2
  39. package/dist/realtime/client.js.map +1 -1
  40. package/dist/realtime/snapshot-then-stream.js +1 -1
  41. package/dist/realtime/snapshot-then-stream.js.map +1 -1
  42. package/dist/realtime/types.d.ts +2 -0
  43. package/dist/realtime/types.d.ts.map +1 -1
  44. package/dist/server-client.d.ts +17 -8
  45. package/dist/server-client.d.ts.map +1 -1
  46. package/dist/server-client.js +8 -11
  47. package/dist/server-client.js.map +1 -1
  48. package/dist/services/accounts/accounts.js +3 -3
  49. package/dist/services/accounts/accounts.js.map +1 -1
  50. package/dist/services/accounts/accounts.schemas.d.ts +13 -13
  51. package/dist/services/accounts/accounts.schemas.d.ts.map +1 -1
  52. package/dist/services/accounts/accounts.schemas.js +11 -11
  53. package/dist/services/accounts/accounts.schemas.js.map +1 -1
  54. package/dist/services/address-book/address-book.js +28 -28
  55. package/dist/services/address-book/address-book.js.map +1 -1
  56. package/dist/services/address-book/address-book.schemas.d.ts +751 -751
  57. package/dist/services/address-book/address-book.schemas.d.ts.map +1 -1
  58. package/dist/services/address-book/address-book.schemas.js +160 -160
  59. package/dist/services/address-book/address-book.schemas.js.map +1 -1
  60. package/dist/services/api-keys/api-keys.d.ts +6 -6
  61. package/dist/services/api-keys/api-keys.d.ts.map +1 -1
  62. package/dist/services/api-keys/api-keys.js +12 -12
  63. package/dist/services/api-keys/api-keys.js.map +1 -1
  64. package/dist/services/api-keys/api-keys.schemas.d.ts +62 -62
  65. package/dist/services/api-keys/api-keys.schemas.d.ts.map +1 -1
  66. package/dist/services/api-keys/api-keys.schemas.js +34 -34
  67. package/dist/services/api-keys/api-keys.schemas.js.map +1 -1
  68. package/dist/services/auth/auth.d.ts +46 -40
  69. package/dist/services/auth/auth.d.ts.map +1 -1
  70. package/dist/services/auth/auth.js +28 -25
  71. package/dist/services/auth/auth.js.map +1 -1
  72. package/dist/services/auth/profile/profile.d.ts +2 -2
  73. package/dist/services/auth/profile/profile.d.ts.map +1 -1
  74. package/dist/services/auth/profile/profile.js +7 -7
  75. package/dist/services/auth/profile/profile.js.map +1 -1
  76. package/dist/services/auth/profile/profile.schemas.d.ts +41 -41
  77. package/dist/services/auth/profile/profile.schemas.d.ts.map +1 -1
  78. package/dist/services/auth/profile/profile.schemas.js +27 -27
  79. package/dist/services/auth/profile/profile.schemas.js.map +1 -1
  80. package/dist/services/auth/session.d.ts +1 -1
  81. package/dist/services/auth/session.d.ts.map +1 -1
  82. package/dist/services/auth/session.js +6 -2
  83. package/dist/services/auth/session.js.map +1 -1
  84. package/dist/services/auth/session.schemas.js +17 -17
  85. package/dist/services/auth/session.schemas.js.map +1 -1
  86. package/dist/services/auth/session.types.d.ts +3 -2
  87. package/dist/services/auth/session.types.d.ts.map +1 -1
  88. package/dist/services/balances/balances.d.ts +1 -1
  89. package/dist/services/balances/balances.js +9 -9
  90. package/dist/services/balances/balances.js.map +1 -1
  91. package/dist/services/balances/balances.schemas.d.ts +95 -95
  92. package/dist/services/balances/balances.schemas.d.ts.map +1 -1
  93. package/dist/services/balances/balances.schemas.js +61 -61
  94. package/dist/services/balances/balances.schemas.js.map +1 -1
  95. package/dist/services/candles/candles.js +12 -12
  96. package/dist/services/candles/candles.js.map +1 -1
  97. package/dist/services/candles/candles.schemas.d.ts +64 -64
  98. package/dist/services/candles/candles.schemas.d.ts.map +1 -1
  99. package/dist/services/candles/candles.schemas.js +47 -48
  100. package/dist/services/candles/candles.schemas.js.map +1 -1
  101. package/dist/services/chain-analytics/chain-analytics.js +7 -7
  102. package/dist/services/chain-analytics/chain-analytics.js.map +1 -1
  103. package/dist/services/chain-analytics/chain-analytics.schemas.d.ts +68 -68
  104. package/dist/services/chain-analytics/chain-analytics.schemas.d.ts.map +1 -1
  105. package/dist/services/chain-analytics/chain-analytics.schemas.js +29 -29
  106. package/dist/services/chain-analytics/chain-analytics.schemas.js.map +1 -1
  107. package/dist/services/deposit/deposit.js +5 -5
  108. package/dist/services/deposit/deposit.js.map +1 -1
  109. package/dist/services/deposit/deposit.schemas.d.ts +17 -17
  110. package/dist/services/deposit/deposit.schemas.d.ts.map +1 -1
  111. package/dist/services/deposit/deposit.schemas.js +11 -11
  112. package/dist/services/deposit/deposit.schemas.js.map +1 -1
  113. package/dist/services/guard-signer/guard-signer.js +13 -13
  114. package/dist/services/guard-signer/guard-signer.js.map +1 -1
  115. package/dist/services/guard-signer/guard-signer.schemas.d.ts +75 -75
  116. package/dist/services/guard-signer/guard-signer.schemas.d.ts.map +1 -1
  117. package/dist/services/guard-signer/guard-signer.schemas.js +42 -42
  118. package/dist/services/guard-signer/guard-signer.schemas.js.map +1 -1
  119. package/dist/services/heatmap/heatmap.js +9 -9
  120. package/dist/services/heatmap/heatmap.js.map +1 -1
  121. package/dist/services/heatmap/heatmap.schemas.d.ts +141 -141
  122. package/dist/services/heatmap/heatmap.schemas.d.ts.map +1 -1
  123. package/dist/services/heatmap/heatmap.schemas.js +47 -47
  124. package/dist/services/heatmap/heatmap.schemas.js.map +1 -1
  125. package/dist/services/internal-transfers/internal-transfers.js +3 -3
  126. package/dist/services/internal-transfers/internal-transfers.js.map +1 -1
  127. package/dist/services/internal-transfers/internal-transfers.schemas.d.ts +53 -53
  128. package/dist/services/internal-transfers/internal-transfers.schemas.d.ts.map +1 -1
  129. package/dist/services/internal-transfers/internal-transfers.schemas.js +27 -27
  130. package/dist/services/internal-transfers/internal-transfers.schemas.js.map +1 -1
  131. package/dist/services/lifecycle/lifecycle.js +10 -10
  132. package/dist/services/lifecycle/lifecycle.js.map +1 -1
  133. package/dist/services/lifecycle/lifecycle.schemas.d.ts +614 -614
  134. package/dist/services/lifecycle/lifecycle.schemas.d.ts.map +1 -1
  135. package/dist/services/lifecycle/lifecycle.schemas.js +146 -146
  136. package/dist/services/lifecycle/lifecycle.schemas.js.map +1 -1
  137. package/dist/services/market-data/market-data.js +6 -6
  138. package/dist/services/market-data/market-data.js.map +1 -1
  139. package/dist/services/market-data/market-data.schemas.d.ts +20 -20
  140. package/dist/services/market-data/market-data.schemas.d.ts.map +1 -1
  141. package/dist/services/market-data/market-data.schemas.js +51 -55
  142. package/dist/services/market-data/market-data.schemas.js.map +1 -1
  143. package/dist/services/market-overview/market-overview.d.ts +1 -1
  144. package/dist/services/market-overview/market-overview.js +5 -5
  145. package/dist/services/market-overview/market-overview.js.map +1 -1
  146. package/dist/services/market-overview/market-overview.schemas.d.ts +39 -36
  147. package/dist/services/market-overview/market-overview.schemas.d.ts.map +1 -1
  148. package/dist/services/market-overview/market-overview.schemas.js +34 -32
  149. package/dist/services/market-overview/market-overview.schemas.js.map +1 -1
  150. package/dist/services/mfa/mfa.js +27 -27
  151. package/dist/services/mfa/mfa.js.map +1 -1
  152. package/dist/services/mfa/mfa.schemas.d.ts +206 -206
  153. package/dist/services/mfa/mfa.schemas.d.ts.map +1 -1
  154. package/dist/services/mfa/mfa.schemas.js +83 -83
  155. package/dist/services/mfa/mfa.schemas.js.map +1 -1
  156. package/dist/services/orderbook/orderbook.d.ts +2 -2
  157. package/dist/services/orderbook/orderbook.d.ts.map +1 -1
  158. package/dist/services/orderbook/orderbook.js +5 -5
  159. package/dist/services/orderbook/orderbook.js.map +1 -1
  160. package/dist/services/orderbook/orderbook.schemas.d.ts +23 -23
  161. package/dist/services/orderbook/orderbook.schemas.d.ts.map +1 -1
  162. package/dist/services/orderbook/orderbook.schemas.js +15 -15
  163. package/dist/services/orderbook/orderbook.schemas.js.map +1 -1
  164. package/dist/services/orders/order-errors.schemas.d.ts +18 -18
  165. package/dist/services/orders/order-errors.schemas.d.ts.map +1 -1
  166. package/dist/services/orders/order-errors.schemas.js +8 -8
  167. package/dist/services/orders/order-errors.schemas.js.map +1 -1
  168. package/dist/services/orders/orders-batch.schemas.d.ts +492 -492
  169. package/dist/services/orders/orders-batch.schemas.d.ts.map +1 -1
  170. package/dist/services/orders/orders-batch.schemas.js +118 -118
  171. package/dist/services/orders/orders-batch.schemas.js.map +1 -1
  172. package/dist/services/orders/orders-identifiers.schemas.js +5 -5
  173. package/dist/services/orders/orders-identifiers.schemas.js.map +1 -1
  174. package/dist/services/orders/orders-input.schemas.d.ts +657 -648
  175. package/dist/services/orders/orders-input.schemas.d.ts.map +1 -1
  176. package/dist/services/orders/orders-input.schemas.js +100 -96
  177. package/dist/services/orders/orders-input.schemas.js.map +1 -1
  178. package/dist/services/orders/orders-modify.schemas.d.ts +370 -351
  179. package/dist/services/orders/orders-modify.schemas.d.ts.map +1 -1
  180. package/dist/services/orders/orders-modify.schemas.js +48 -44
  181. package/dist/services/orders/orders-modify.schemas.js.map +1 -1
  182. package/dist/services/orders/orders-output.schemas.d.ts +179 -179
  183. package/dist/services/orders/orders-output.schemas.d.ts.map +1 -1
  184. package/dist/services/orders/orders-output.schemas.js +49 -49
  185. package/dist/services/orders/orders-output.schemas.js.map +1 -1
  186. package/dist/services/orders/orders-risk.schemas.d.ts +226 -226
  187. package/dist/services/orders/orders-risk.schemas.d.ts.map +1 -1
  188. package/dist/services/orders/orders-risk.schemas.js +69 -69
  189. package/dist/services/orders/orders-risk.schemas.js.map +1 -1
  190. package/dist/services/orders/orders.d.ts +8 -8
  191. package/dist/services/orders/orders.d.ts.map +1 -1
  192. package/dist/services/orders/orders.js +44 -32
  193. package/dist/services/orders/orders.js.map +1 -1
  194. package/dist/services/policies/api-key-policies/api-key-policies.d.ts +6 -6
  195. package/dist/services/policies/api-key-policies/api-key-policies.d.ts.map +1 -1
  196. package/dist/services/policies/api-key-policies/api-key-policies.js +11 -11
  197. package/dist/services/policies/api-key-policies/api-key-policies.js.map +1 -1
  198. package/dist/services/policies/api-key-policies/api-key-policies.schemas.d.ts +105 -105
  199. package/dist/services/policies/api-key-policies/api-key-policies.schemas.d.ts.map +1 -1
  200. package/dist/services/policies/api-key-policies/api-key-policies.schemas.js +49 -49
  201. package/dist/services/policies/api-key-policies/api-key-policies.schemas.js.map +1 -1
  202. package/dist/services/policies/shared.d.ts +5 -5
  203. package/dist/services/policies/shared.d.ts.map +1 -1
  204. package/dist/services/policies/shared.js +10 -10
  205. package/dist/services/policies/shared.js.map +1 -1
  206. package/dist/services/policies/subaccount-policies/subaccount-policies.d.ts +6 -6
  207. package/dist/services/policies/subaccount-policies/subaccount-policies.d.ts.map +1 -1
  208. package/dist/services/policies/subaccount-policies/subaccount-policies.js +13 -13
  209. package/dist/services/policies/subaccount-policies/subaccount-policies.js.map +1 -1
  210. package/dist/services/policies/subaccount-policies/subaccount-policies.schemas.d.ts +124 -124
  211. package/dist/services/policies/subaccount-policies/subaccount-policies.schemas.d.ts.map +1 -1
  212. package/dist/services/policies/subaccount-policies/subaccount-policies.schemas.js +75 -75
  213. package/dist/services/policies/subaccount-policies/subaccount-policies.schemas.js.map +1 -1
  214. package/dist/services/shared.js +11 -11
  215. package/dist/services/shared.js.map +1 -1
  216. package/dist/services/social-verification/social-verification.d.ts +3 -3
  217. package/dist/services/social-verification/social-verification.d.ts.map +1 -1
  218. package/dist/services/social-verification/social-verification.js +7 -7
  219. package/dist/services/social-verification/social-verification.js.map +1 -1
  220. package/dist/services/social-verification/social-verification.schemas.d.ts +54 -54
  221. package/dist/services/social-verification/social-verification.schemas.d.ts.map +1 -1
  222. package/dist/services/social-verification/social-verification.schemas.js +28 -28
  223. package/dist/services/social-verification/social-verification.schemas.js.map +1 -1
  224. package/dist/services/subaccount-resolver.js +5 -3
  225. package/dist/services/subaccount-resolver.js.map +1 -1
  226. package/dist/services/subaccounts/subaccounts.d.ts +15 -15
  227. package/dist/services/subaccounts/subaccounts.d.ts.map +1 -1
  228. package/dist/services/subaccounts/subaccounts.js +35 -35
  229. package/dist/services/subaccounts/subaccounts.js.map +1 -1
  230. package/dist/services/subaccounts/subaccounts.schemas.d.ts +137 -137
  231. package/dist/services/subaccounts/subaccounts.schemas.d.ts.map +1 -1
  232. package/dist/services/subaccounts/subaccounts.schemas.js +72 -72
  233. package/dist/services/subaccounts/subaccounts.schemas.js.map +1 -1
  234. package/dist/services/trades/trades.d.ts +2 -2
  235. package/dist/services/trades/trades.d.ts.map +1 -1
  236. package/dist/services/trades/trades.js +5 -5
  237. package/dist/services/trades/trades.js.map +1 -1
  238. package/dist/services/trades/trades.schemas.d.ts +31 -31
  239. package/dist/services/trades/trades.schemas.d.ts.map +1 -1
  240. package/dist/services/trades/trades.schemas.js +24 -24
  241. package/dist/services/trades/trades.schemas.js.map +1 -1
  242. package/dist/services/trading-withdraws/trading-withdraws.js +8 -8
  243. package/dist/services/trading-withdraws/trading-withdraws.js.map +1 -1
  244. package/dist/services/trading-withdraws/trading-withdraws.schemas.d.ts +45 -45
  245. package/dist/services/trading-withdraws/trading-withdraws.schemas.d.ts.map +1 -1
  246. package/dist/services/trading-withdraws/trading-withdraws.schemas.js +36 -36
  247. package/dist/services/trading-withdraws/trading-withdraws.schemas.js.map +1 -1
  248. package/dist/services/transfers/transfers.d.ts +1 -1
  249. package/dist/services/transfers/transfers.d.ts.map +1 -1
  250. package/dist/services/transfers/transfers.js +5 -5
  251. package/dist/services/transfers/transfers.js.map +1 -1
  252. package/dist/services/transfers/transfers.schemas.d.ts +42 -42
  253. package/dist/services/transfers/transfers.schemas.d.ts.map +1 -1
  254. package/dist/services/transfers/transfers.schemas.js +30 -30
  255. package/dist/services/transfers/transfers.schemas.js.map +1 -1
  256. package/dist/services/triggers/trigger-child-order.schemas.js +23 -23
  257. package/dist/services/triggers/trigger-child-order.schemas.js.map +1 -1
  258. package/dist/services/triggers/trigger-input.schemas.d.ts +226 -226
  259. package/dist/services/triggers/trigger-input.schemas.d.ts.map +1 -1
  260. package/dist/services/triggers/trigger-input.schemas.js +53 -53
  261. package/dist/services/triggers/trigger-input.schemas.js.map +1 -1
  262. package/dist/services/triggers/triggers-output.schemas.d.ts +218 -218
  263. package/dist/services/triggers/triggers-output.schemas.d.ts.map +1 -1
  264. package/dist/services/triggers/triggers-output.schemas.js +152 -152
  265. package/dist/services/triggers/triggers-output.schemas.js.map +1 -1
  266. package/dist/services/triggers/triggers.js +21 -21
  267. package/dist/services/triggers/triggers.js.map +1 -1
  268. package/dist/services/whiteboard/whiteboard.js +15 -15
  269. package/dist/services/whiteboard/whiteboard.js.map +1 -1
  270. package/dist/services/whiteboard/whiteboard.schemas.d.ts +379 -379
  271. package/dist/services/whiteboard/whiteboard.schemas.d.ts.map +1 -1
  272. package/dist/services/whiteboard/whiteboard.schemas.js +71 -71
  273. package/dist/services/whiteboard/whiteboard.schemas.js.map +1 -1
  274. package/dist/services/zipper/zipper.js +3 -3
  275. package/dist/services/zipper/zipper.js.map +1 -1
  276. package/dist/services/zipper/zipper.schemas.d.ts +1 -1
  277. package/dist/services/zipper/zipper.schemas.js +54 -54
  278. package/dist/services/zipper/zipper.schemas.js.map +1 -1
  279. package/dist/shared/account-scope.d.ts +6 -6
  280. package/dist/shared/account-scope.d.ts.map +1 -1
  281. package/dist/shared/account-scope.js +3 -3
  282. package/dist/shared/account-scope.js.map +1 -1
  283. package/dist/shared/connect-error-mapping.d.ts +1 -1
  284. package/dist/shared/connect-error-mapping.js +29 -3
  285. package/dist/shared/connect-error-mapping.js.map +1 -1
  286. package/dist/shared/rate-limit.schemas.d.ts +12 -12
  287. package/dist/shared/rate-limit.schemas.d.ts.map +1 -1
  288. package/dist/shared/rate-limit.schemas.js +7 -7
  289. package/dist/shared/rate-limit.schemas.js.map +1 -1
  290. package/dist/shared/schemas.js +26 -26
  291. package/dist/shared/schemas.js.map +1 -1
  292. package/dist/shared/transports.js +7 -12
  293. package/dist/shared/transports.js.map +1 -1
  294. package/dist/shared/types.d.ts +12 -0
  295. package/dist/shared/types.d.ts.map +1 -1
  296. package/dist/shared/validation.d.ts +14 -0
  297. package/dist/shared/validation.d.ts.map +1 -0
  298. package/dist/shared/validation.js +24 -0
  299. package/dist/shared/validation.js.map +1 -0
  300. package/dist/utils/connect-order-errors.js +2 -2
  301. package/dist/utils/connect-order-errors.js.map +1 -1
  302. package/dist/utils/cookies.d.ts +8 -3
  303. package/dist/utils/cookies.d.ts.map +1 -1
  304. package/dist/utils/cookies.js +7 -1
  305. package/dist/utils/cookies.js.map +1 -1
  306. package/dist/utils/event-emitter.d.ts +1 -1
  307. package/dist/utils/event-emitter.d.ts.map +1 -1
  308. package/dist/utils/event-emitter.js +4 -2
  309. package/dist/utils/event-emitter.js.map +1 -1
  310. package/dist/utils/evm.js +2 -2
  311. package/dist/utils/evm.js.map +1 -1
  312. package/dist/utils/jwt.d.ts +2 -2
  313. package/dist/utils/jwt.d.ts.map +1 -1
  314. package/dist/utils/jwt.js +2 -2
  315. package/dist/utils/jwt.js.map +1 -1
  316. package/package.json +1 -1
@@ -1,130 +1,130 @@
1
+ import { validation_exports } from "../../shared/validation.js";
1
2
  import { MFAFactorType, SessionLevel } from "../../gen/auth/v1/mfa_pb.js";
2
3
  import { requiredEnumLabel } from "../../shared/proto-enum-codec.js";
3
4
  import { JsonObjectSchema, OptionalTimestampMsSchema } from "../../shared/schemas.js";
4
5
  import { MFA_CHALLENGE_PURPOSE_VALUES, MfaChallengePurposeCodec, MfaFactorTypeCodec, SessionLevelCodec } from "./mfa.codecs.js";
5
- import * as v from "valibot";
6
6
  //#region src/services/mfa/mfa.schemas.ts
7
- const MfaSessionInfoSchema = v.pipe(v.object({
8
- sessionId: v.string(),
9
- sessionLevel: v.pipe(v.enum(SessionLevel), v.transform((v) => requiredEnumLabel(SessionLevelCodec.protoToOutput, v, "PolyesterClient.MfaSessionInfoSchema", "sessionLevel"))),
10
- authenticationMethods: v.optional(v.array(v.string()), []),
7
+ const MfaSessionInfoSchema = validation_exports.pipe(validation_exports.object({
8
+ sessionId: validation_exports.string(),
9
+ sessionLevel: validation_exports.pipe(validation_exports.enum(SessionLevel), validation_exports.transform((v) => requiredEnumLabel(SessionLevelCodec.protoToOutput, v, "PolyesterClient.MfaSessionInfoSchema", "sessionLevel"))),
10
+ authenticationMethods: validation_exports.optional(validation_exports.array(validation_exports.string()), []),
11
11
  authTime: OptionalTimestampMsSchema
12
- }), v.transform(({ sessionId, sessionLevel, authenticationMethods, authTime }) => ({
12
+ }), validation_exports.transform(({ sessionId, sessionLevel, authenticationMethods, authTime }) => ({
13
13
  sessionId,
14
14
  sessionLevel,
15
15
  authenticationMethods,
16
16
  authTimeMs: authTime
17
17
  })));
18
- const MfaFactorSchema = v.pipe(v.object({
19
- factorId: v.string(),
20
- factorType: v.pipe(v.enum(MFAFactorType), v.transform((v) => requiredEnumLabel(MfaFactorTypeCodec.protoToOutput, v, "PolyesterClient.MfaFactorSchema", "factorType"))),
21
- label: v.string(),
18
+ const MfaFactorSchema = validation_exports.pipe(validation_exports.object({
19
+ factorId: validation_exports.string(),
20
+ factorType: validation_exports.pipe(validation_exports.enum(MFAFactorType), validation_exports.transform((v) => requiredEnumLabel(MfaFactorTypeCodec.protoToOutput, v, "PolyesterClient.MfaFactorSchema", "factorType"))),
21
+ label: validation_exports.string(),
22
22
  createdAt: OptionalTimestampMsSchema,
23
23
  lastUsedAt: OptionalTimestampMsSchema
24
- }), v.transform(({ factorId, factorType, label, createdAt, lastUsedAt }) => ({
24
+ }), validation_exports.transform(({ factorId, factorType, label, createdAt, lastUsedAt }) => ({
25
25
  factorId,
26
26
  factorType,
27
27
  label,
28
28
  createdAtMs: createdAt,
29
29
  lastUsedAtMs: lastUsedAt
30
30
  })));
31
- const ListMfaFactorsResponseSchema = v.object({
32
- factors: v.optional(v.array(MfaFactorSchema), []),
33
- hasRecoveryCodes: v.optional(v.boolean(), false)
34
- });
35
- const BeginTotpEnrollmentInputSchema = v.strictObject({ label: v.pipe(v.string(), v.trim(), v.minLength(1)) });
36
- const BeginTotpEnrollmentResultSchema = v.object({
37
- enrollmentId: v.string(),
38
- secret: v.string(),
39
- otpauthUri: v.string(),
31
+ const ListMfaFactorsResponseSchema = validation_exports.object({
32
+ factors: validation_exports.optional(validation_exports.array(MfaFactorSchema), []),
33
+ hasRecoveryCodes: validation_exports.optional(validation_exports.boolean(), false)
34
+ });
35
+ const BeginTotpEnrollmentInputSchema = validation_exports.strictObject({ label: validation_exports.pipe(validation_exports.string(), validation_exports.trim(), validation_exports.minLength(1)) });
36
+ const BeginTotpEnrollmentResultSchema = validation_exports.object({
37
+ enrollmentId: validation_exports.string(),
38
+ secret: validation_exports.string(),
39
+ otpauthUri: validation_exports.string(),
40
40
  expiresAt: OptionalTimestampMsSchema
41
41
  });
42
- const FinishTotpEnrollmentInputSchema = v.strictObject({
43
- enrollmentId: v.pipe(v.string(), v.trim(), v.minLength(1)),
44
- code: v.pipe(v.string(), v.trim(), v.minLength(1))
42
+ const FinishTotpEnrollmentInputSchema = validation_exports.strictObject({
43
+ enrollmentId: validation_exports.pipe(validation_exports.string(), validation_exports.trim(), validation_exports.minLength(1)),
44
+ code: validation_exports.pipe(validation_exports.string(), validation_exports.trim(), validation_exports.minLength(1))
45
45
  });
46
- const FinishTotpEnrollmentResultSchema = v.object({
47
- factor: v.optional(MfaFactorSchema),
48
- recoveryCodes: v.optional(v.array(v.string()), [])
46
+ const FinishTotpEnrollmentResultSchema = validation_exports.object({
47
+ factor: validation_exports.optional(MfaFactorSchema),
48
+ recoveryCodes: validation_exports.optional(validation_exports.array(validation_exports.string()), [])
49
49
  });
50
- const BeginPasskeyEnrollmentInputSchema = v.strictObject({ label: v.pipe(v.string(), v.trim(), v.minLength(1)) });
51
- const BeginPasskeyEnrollmentResultSchema = v.object({
52
- enrollmentId: v.string(),
53
- publicKey: v.optional(JsonObjectSchema),
50
+ const BeginPasskeyEnrollmentInputSchema = validation_exports.strictObject({ label: validation_exports.pipe(validation_exports.string(), validation_exports.trim(), validation_exports.minLength(1)) });
51
+ const BeginPasskeyEnrollmentResultSchema = validation_exports.object({
52
+ enrollmentId: validation_exports.string(),
53
+ publicKey: validation_exports.optional(JsonObjectSchema),
54
54
  expiresAt: OptionalTimestampMsSchema
55
55
  });
56
- const FinishPasskeyEnrollmentInputSchema = v.strictObject({
57
- enrollmentId: v.pipe(v.string(), v.trim(), v.minLength(1)),
56
+ const FinishPasskeyEnrollmentInputSchema = validation_exports.strictObject({
57
+ enrollmentId: validation_exports.pipe(validation_exports.string(), validation_exports.trim(), validation_exports.minLength(1)),
58
58
  credential: JsonObjectSchema
59
59
  });
60
- const FinishPasskeyEnrollmentResultSchema = v.object({
61
- factor: v.optional(MfaFactorSchema),
62
- recoveryCodes: v.optional(v.array(v.string()), [])
60
+ const FinishPasskeyEnrollmentResultSchema = validation_exports.object({
61
+ factor: validation_exports.optional(MfaFactorSchema),
62
+ recoveryCodes: validation_exports.optional(validation_exports.array(validation_exports.string()), [])
63
63
  });
64
- const BeginMfaChallengeInputSchema = v.pipe(v.strictObject({ purpose: v.picklist(MFA_CHALLENGE_PURPOSE_VALUES) }), v.transform((data) => ({ purpose: MfaChallengePurposeCodec.inputToProto[data.purpose] })));
65
- const BeginMfaChallengeResultSchema = v.object({
66
- challengeId: v.string(),
67
- allowedFactorTypes: v.pipe(v.array(v.enum(MFAFactorType)), v.transform((arr) => arr.map((t) => requiredEnumLabel(MfaFactorTypeCodec.protoToOutput, t, "PolyesterClient.BeginMfaChallengeResultSchema", "allowed factor type")))),
68
- publicKey: v.optional(JsonObjectSchema),
64
+ const BeginMfaChallengeInputSchema = validation_exports.pipe(validation_exports.strictObject({ purpose: validation_exports.picklist(MFA_CHALLENGE_PURPOSE_VALUES) }), validation_exports.transform((data) => ({ purpose: MfaChallengePurposeCodec.inputToProto[data.purpose] })));
65
+ const BeginMfaChallengeResultSchema = validation_exports.object({
66
+ challengeId: validation_exports.string(),
67
+ allowedFactorTypes: validation_exports.pipe(validation_exports.array(validation_exports.enum(MFAFactorType)), validation_exports.transform((arr) => arr.map((t) => requiredEnumLabel(MfaFactorTypeCodec.protoToOutput, t, "PolyesterClient.BeginMfaChallengeResultSchema", "allowed factor type")))),
68
+ publicKey: validation_exports.optional(JsonObjectSchema),
69
69
  expiresAt: OptionalTimestampMsSchema
70
70
  });
71
- const VerifyTotpChallengeInputSchema = v.strictObject({
72
- challengeId: v.pipe(v.string(), v.trim(), v.minLength(1)),
73
- code: v.pipe(v.string(), v.trim(), v.minLength(1))
71
+ const VerifyTotpChallengeInputSchema = validation_exports.strictObject({
72
+ challengeId: validation_exports.pipe(validation_exports.string(), validation_exports.trim(), validation_exports.minLength(1)),
73
+ code: validation_exports.pipe(validation_exports.string(), validation_exports.trim(), validation_exports.minLength(1))
74
74
  });
75
- const FinishPasskeyChallengeInputSchema = v.strictObject({
76
- challengeId: v.pipe(v.string(), v.trim(), v.minLength(1)),
75
+ const FinishPasskeyChallengeInputSchema = validation_exports.strictObject({
76
+ challengeId: validation_exports.pipe(validation_exports.string(), validation_exports.trim(), validation_exports.minLength(1)),
77
77
  credential: JsonObjectSchema
78
78
  });
79
- const VerifyRecoveryCodeChallengeInputSchema = v.strictObject({
80
- challengeId: v.pipe(v.string(), v.trim(), v.minLength(1)),
81
- recoveryCode: v.pipe(v.string(), v.trim(), v.minLength(1))
79
+ const VerifyRecoveryCodeChallengeInputSchema = validation_exports.strictObject({
80
+ challengeId: validation_exports.pipe(validation_exports.string(), validation_exports.trim(), validation_exports.minLength(1)),
81
+ recoveryCode: validation_exports.pipe(validation_exports.string(), validation_exports.trim(), validation_exports.minLength(1))
82
82
  });
83
- const CompleteMfaChallengeResultSchema = v.pipe(v.object({
84
- session: v.optional(MfaSessionInfoSchema),
85
- accessToken: v.string(),
83
+ const CompleteMfaChallengeResultSchema = validation_exports.pipe(validation_exports.object({
84
+ session: validation_exports.optional(MfaSessionInfoSchema),
85
+ accessToken: validation_exports.string(),
86
86
  accessTokenExpiresAt: OptionalTimestampMsSchema,
87
- stepUpToken: v.string(),
87
+ stepUpToken: validation_exports.string(),
88
88
  stepUpExpiresAt: OptionalTimestampMsSchema
89
- }), v.transform(({ session, accessToken, accessTokenExpiresAt, stepUpToken, stepUpExpiresAt }) => ({
89
+ }), validation_exports.transform(({ session, accessToken, accessTokenExpiresAt, stepUpToken, stepUpExpiresAt }) => ({
90
90
  session,
91
91
  accessToken: accessToken.trim() || void 0,
92
92
  accessTokenExpiresAtMs: accessTokenExpiresAt,
93
93
  stepUpToken: stepUpToken.trim() || void 0,
94
94
  stepUpExpiresAtMs: stepUpExpiresAt
95
95
  })));
96
- const DeleteMfaFactorInputSchema = v.strictObject({ factorId: v.pipe(v.string(), v.trim(), v.minLength(1)) });
97
- const UpdateMfaFactorInputSchema = v.strictObject({
98
- factorId: v.pipe(v.string(), v.trim(), v.minLength(1)),
99
- label: v.pipe(v.string(), v.maxLength(128))
100
- });
101
- const UpdateMfaFactorResultSchema = v.object({ factor: v.optional(MfaFactorSchema) });
102
- const RegenerateRecoveryCodesInputSchema = v.strictObject({});
103
- const RegenerateRecoveryCodesResultSchema = v.object({ recoveryCodes: v.optional(v.array(v.string()), []) });
104
- const ClaimFreshStepUpInputSchema = v.strictObject({
105
- requestId: v.pipe(v.string(), v.trim(), v.minLength(1)),
106
- actionType: v.pipe(v.string(), v.trim(), v.minLength(1)),
107
- subject: v.pipe(v.string(), v.trim(), v.minLength(1))
108
- });
109
- const ClaimFreshStepUpResultSchema = v.object({
110
- stepUpId: v.string(),
111
- claimNonce: v.string(),
96
+ const DeleteMfaFactorInputSchema = validation_exports.strictObject({ factorId: validation_exports.pipe(validation_exports.string(), validation_exports.trim(), validation_exports.minLength(1)) });
97
+ const UpdateMfaFactorInputSchema = validation_exports.strictObject({
98
+ factorId: validation_exports.pipe(validation_exports.string(), validation_exports.trim(), validation_exports.minLength(1)),
99
+ label: validation_exports.pipe(validation_exports.string(), validation_exports.maxLength(128))
100
+ });
101
+ const UpdateMfaFactorResultSchema = validation_exports.object({ factor: validation_exports.optional(MfaFactorSchema) });
102
+ const RegenerateRecoveryCodesInputSchema = validation_exports.strictObject({});
103
+ const RegenerateRecoveryCodesResultSchema = validation_exports.object({ recoveryCodes: validation_exports.optional(validation_exports.array(validation_exports.string()), []) });
104
+ const ClaimFreshStepUpInputSchema = validation_exports.strictObject({
105
+ requestId: validation_exports.pipe(validation_exports.string(), validation_exports.trim(), validation_exports.minLength(1)),
106
+ actionType: validation_exports.pipe(validation_exports.string(), validation_exports.trim(), validation_exports.minLength(1)),
107
+ subject: validation_exports.pipe(validation_exports.string(), validation_exports.trim(), validation_exports.minLength(1))
108
+ });
109
+ const ClaimFreshStepUpResultSchema = validation_exports.object({
110
+ stepUpId: validation_exports.string(),
111
+ claimNonce: validation_exports.string(),
112
112
  claimExpiresAt: OptionalTimestampMsSchema
113
113
  });
114
- const ConsumeFreshStepUpInputSchema = v.strictObject({
115
- stepUpId: v.pipe(v.string(), v.trim(), v.minLength(1)),
116
- requestId: v.pipe(v.string(), v.trim(), v.minLength(1)),
117
- actionType: v.pipe(v.string(), v.trim(), v.minLength(1)),
118
- subject: v.pipe(v.string(), v.trim(), v.minLength(1)),
119
- claimNonce: v.pipe(v.string(), v.trim(), v.minLength(1))
120
- });
121
- const ReleaseFreshStepUpInputSchema = v.strictObject({
122
- stepUpId: v.pipe(v.string(), v.trim(), v.minLength(1)),
123
- requestId: v.pipe(v.string(), v.trim(), v.minLength(1)),
124
- actionType: v.pipe(v.string(), v.trim(), v.minLength(1)),
125
- subject: v.pipe(v.string(), v.trim(), v.minLength(1)),
126
- claimNonce: v.pipe(v.string(), v.trim(), v.minLength(1)),
127
- reason: v.pipe(v.string(), v.trim(), v.minLength(1))
114
+ const ConsumeFreshStepUpInputSchema = validation_exports.strictObject({
115
+ stepUpId: validation_exports.pipe(validation_exports.string(), validation_exports.trim(), validation_exports.minLength(1)),
116
+ requestId: validation_exports.pipe(validation_exports.string(), validation_exports.trim(), validation_exports.minLength(1)),
117
+ actionType: validation_exports.pipe(validation_exports.string(), validation_exports.trim(), validation_exports.minLength(1)),
118
+ subject: validation_exports.pipe(validation_exports.string(), validation_exports.trim(), validation_exports.minLength(1)),
119
+ claimNonce: validation_exports.pipe(validation_exports.string(), validation_exports.trim(), validation_exports.minLength(1))
120
+ });
121
+ const ReleaseFreshStepUpInputSchema = validation_exports.strictObject({
122
+ stepUpId: validation_exports.pipe(validation_exports.string(), validation_exports.trim(), validation_exports.minLength(1)),
123
+ requestId: validation_exports.pipe(validation_exports.string(), validation_exports.trim(), validation_exports.minLength(1)),
124
+ actionType: validation_exports.pipe(validation_exports.string(), validation_exports.trim(), validation_exports.minLength(1)),
125
+ subject: validation_exports.pipe(validation_exports.string(), validation_exports.trim(), validation_exports.minLength(1)),
126
+ claimNonce: validation_exports.pipe(validation_exports.string(), validation_exports.trim(), validation_exports.minLength(1)),
127
+ reason: validation_exports.pipe(validation_exports.string(), validation_exports.trim(), validation_exports.minLength(1))
128
128
  });
129
129
  //#endregion
130
130
  export { BeginMfaChallengeInputSchema, BeginMfaChallengeResultSchema, BeginPasskeyEnrollmentInputSchema, BeginPasskeyEnrollmentResultSchema, BeginTotpEnrollmentInputSchema, BeginTotpEnrollmentResultSchema, ClaimFreshStepUpInputSchema, ClaimFreshStepUpResultSchema, CompleteMfaChallengeResultSchema, ConsumeFreshStepUpInputSchema, DeleteMfaFactorInputSchema, FinishPasskeyChallengeInputSchema, FinishPasskeyEnrollmentInputSchema, FinishPasskeyEnrollmentResultSchema, FinishTotpEnrollmentInputSchema, FinishTotpEnrollmentResultSchema, ListMfaFactorsResponseSchema, MfaFactorSchema, MfaSessionInfoSchema, RegenerateRecoveryCodesInputSchema, RegenerateRecoveryCodesResultSchema, ReleaseFreshStepUpInputSchema, UpdateMfaFactorInputSchema, UpdateMfaFactorResultSchema, VerifyRecoveryCodeChallengeInputSchema, VerifyTotpChallengeInputSchema };
@@ -1 +1 @@
1
- {"version":3,"file":"mfa.schemas.js","names":["Proto.SessionLevel","Proto.MFAFactorType"],"sources":["../../../src/services/mfa/mfa.schemas.ts"],"sourcesContent":["import * as v from \"valibot\";\nimport * as Proto from \"../../gen/auth/v1/mfa_pb.js\";\nimport { JsonObjectSchema, OptionalTimestampMsSchema } from \"../../shared/schemas.js\";\nimport { requiredEnumLabel } from \"../../shared/proto-enum-codec.js\";\nimport {\n MfaChallengePurposeCodec,\n MfaFactorTypeCodec,\n MFA_CHALLENGE_PURPOSE_VALUES,\n SessionLevelCodec,\n} from \"./mfa.codecs.js\";\n\nexport const MfaSessionInfoSchema = v.pipe(\n v.object({\n sessionId: v.string(),\n sessionLevel: v.pipe(\n v.enum(Proto.SessionLevel),\n v.transform((v) =>\n requiredEnumLabel(\n SessionLevelCodec.protoToOutput,\n v,\n \"PolyesterClient.MfaSessionInfoSchema\",\n \"sessionLevel\",\n ),\n ),\n ),\n authenticationMethods: v.optional(v.array(v.string()), []),\n authTime: OptionalTimestampMsSchema,\n }),\n v.transform(({ sessionId, sessionLevel, authenticationMethods, authTime }) => ({\n sessionId,\n sessionLevel,\n authenticationMethods,\n authTimeMs: authTime,\n })),\n);\n\nexport type MfaSessionInfo = v.InferOutput<typeof MfaSessionInfoSchema>;\n\nexport const MfaFactorSchema = v.pipe(\n v.object({\n factorId: v.string(),\n factorType: v.pipe(\n v.enum(Proto.MFAFactorType),\n v.transform((v) =>\n requiredEnumLabel(\n MfaFactorTypeCodec.protoToOutput,\n v,\n \"PolyesterClient.MfaFactorSchema\",\n \"factorType\",\n ),\n ),\n ),\n label: v.string(),\n createdAt: OptionalTimestampMsSchema,\n lastUsedAt: OptionalTimestampMsSchema,\n }),\n v.transform(({ factorId, factorType, label, createdAt, lastUsedAt }) => ({\n factorId,\n factorType,\n label,\n createdAtMs: createdAt,\n lastUsedAtMs: lastUsedAt,\n })),\n);\n\nexport type MfaFactor = v.InferOutput<typeof MfaFactorSchema>;\n\nexport const ListMfaFactorsResponseSchema = v.object({\n factors: v.optional(v.array(MfaFactorSchema), []),\n hasRecoveryCodes: v.optional(v.boolean(), false),\n});\n\nexport type ListMfaFactorsResult = v.InferOutput<typeof ListMfaFactorsResponseSchema>;\n\nexport const BeginTotpEnrollmentInputSchema = v.strictObject({\n label: v.pipe(v.string(), v.trim(), v.minLength(1)),\n});\n\nexport type BeginTotpEnrollmentInput = v.InferInput<typeof BeginTotpEnrollmentInputSchema>;\n\nexport const BeginTotpEnrollmentResultSchema = v.object({\n enrollmentId: v.string(),\n secret: v.string(),\n otpauthUri: v.string(),\n expiresAt: OptionalTimestampMsSchema,\n});\n\nexport type BeginTotpEnrollmentResult = v.InferOutput<typeof BeginTotpEnrollmentResultSchema>;\n\nexport const FinishTotpEnrollmentInputSchema = v.strictObject({\n enrollmentId: v.pipe(v.string(), v.trim(), v.minLength(1)),\n code: v.pipe(v.string(), v.trim(), v.minLength(1)),\n});\n\nexport type FinishTotpEnrollmentInput = v.InferInput<typeof FinishTotpEnrollmentInputSchema>;\n\nexport const FinishTotpEnrollmentResultSchema = v.object({\n factor: v.optional(MfaFactorSchema),\n recoveryCodes: v.optional(v.array(v.string()), []),\n});\n\nexport type FinishTotpEnrollmentResult = v.InferOutput<typeof FinishTotpEnrollmentResultSchema>;\n\nexport const BeginPasskeyEnrollmentInputSchema = v.strictObject({\n label: v.pipe(v.string(), v.trim(), v.minLength(1)),\n});\n\nexport type BeginPasskeyEnrollmentInput = v.InferInput<typeof BeginPasskeyEnrollmentInputSchema>;\n\nexport const BeginPasskeyEnrollmentResultSchema = v.object({\n enrollmentId: v.string(),\n publicKey: v.optional(JsonObjectSchema),\n expiresAt: OptionalTimestampMsSchema,\n});\n\nexport type BeginPasskeyEnrollmentResult = v.InferOutput<typeof BeginPasskeyEnrollmentResultSchema>;\n\nexport const FinishPasskeyEnrollmentInputSchema = v.strictObject({\n enrollmentId: v.pipe(v.string(), v.trim(), v.minLength(1)),\n credential: JsonObjectSchema,\n});\n\nexport type FinishPasskeyEnrollmentInput = v.InferInput<typeof FinishPasskeyEnrollmentInputSchema>;\n\nexport const FinishPasskeyEnrollmentResultSchema = v.object({\n factor: v.optional(MfaFactorSchema),\n recoveryCodes: v.optional(v.array(v.string()), []),\n});\n\nexport type FinishPasskeyEnrollmentResult = v.InferOutput<\n typeof FinishPasskeyEnrollmentResultSchema\n>;\n\nexport const BeginMfaChallengeInputSchema = v.pipe(\n v.strictObject({\n purpose: v.picklist(MFA_CHALLENGE_PURPOSE_VALUES),\n }),\n v.transform((data) => ({\n purpose: MfaChallengePurposeCodec.inputToProto[data.purpose],\n })),\n);\n\nexport type BeginMfaChallengeInput = v.InferInput<typeof BeginMfaChallengeInputSchema>;\n\nexport const BeginMfaChallengeResultSchema = v.object({\n challengeId: v.string(),\n allowedFactorTypes: v.pipe(\n v.array(v.enum(Proto.MFAFactorType)),\n v.transform((arr) =>\n arr.map((t) =>\n requiredEnumLabel(\n MfaFactorTypeCodec.protoToOutput,\n t,\n \"PolyesterClient.BeginMfaChallengeResultSchema\",\n \"allowed factor type\",\n ),\n ),\n ),\n ),\n publicKey: v.optional(JsonObjectSchema),\n expiresAt: OptionalTimestampMsSchema,\n});\n\nexport type BeginMfaChallengeResult = v.InferOutput<typeof BeginMfaChallengeResultSchema>;\n\nexport const VerifyTotpChallengeInputSchema = v.strictObject({\n challengeId: v.pipe(v.string(), v.trim(), v.minLength(1)),\n code: v.pipe(v.string(), v.trim(), v.minLength(1)),\n});\n\nexport type VerifyTotpChallengeInput = v.InferInput<typeof VerifyTotpChallengeInputSchema>;\n\nexport const FinishPasskeyChallengeInputSchema = v.strictObject({\n challengeId: v.pipe(v.string(), v.trim(), v.minLength(1)),\n credential: JsonObjectSchema,\n});\n\nexport type FinishPasskeyChallengeInput = v.InferInput<typeof FinishPasskeyChallengeInputSchema>;\n\nexport const VerifyRecoveryCodeChallengeInputSchema = v.strictObject({\n challengeId: v.pipe(v.string(), v.trim(), v.minLength(1)),\n recoveryCode: v.pipe(v.string(), v.trim(), v.minLength(1)),\n});\n\nexport type VerifyRecoveryCodeChallengeInput = v.InferInput<\n typeof VerifyRecoveryCodeChallengeInputSchema\n>;\n\nexport const CompleteMfaChallengeResultSchema = v.pipe(\n v.object({\n session: v.optional(MfaSessionInfoSchema),\n accessToken: v.string(),\n accessTokenExpiresAt: OptionalTimestampMsSchema,\n stepUpToken: v.string(),\n stepUpExpiresAt: OptionalTimestampMsSchema,\n }),\n v.transform(({ session, accessToken, accessTokenExpiresAt, stepUpToken, stepUpExpiresAt }) => ({\n session,\n accessToken: accessToken.trim() || undefined,\n accessTokenExpiresAtMs: accessTokenExpiresAt,\n stepUpToken: stepUpToken.trim() || undefined,\n stepUpExpiresAtMs: stepUpExpiresAt,\n })),\n);\n\nexport type CompleteMfaChallengeResult = v.InferOutput<typeof CompleteMfaChallengeResultSchema>;\n\nexport const DeleteMfaFactorInputSchema = v.strictObject({\n factorId: v.pipe(v.string(), v.trim(), v.minLength(1)),\n});\n\nexport type DeleteMfaFactorInput = v.InferInput<typeof DeleteMfaFactorInputSchema>;\n\nexport const UpdateMfaFactorInputSchema = v.strictObject({\n factorId: v.pipe(v.string(), v.trim(), v.minLength(1)),\n label: v.pipe(v.string(), v.maxLength(128)),\n});\n\nexport type UpdateMfaFactorInput = v.InferInput<typeof UpdateMfaFactorInputSchema>;\n\nexport const UpdateMfaFactorResultSchema = v.object({\n factor: v.optional(MfaFactorSchema),\n});\n\nexport type UpdateMfaFactorResult = v.InferOutput<typeof UpdateMfaFactorResultSchema>;\n\nexport const RegenerateRecoveryCodesInputSchema = v.strictObject({});\n\nexport type RegenerateRecoveryCodesInput = v.InferInput<typeof RegenerateRecoveryCodesInputSchema>;\n\nexport const RegenerateRecoveryCodesResultSchema = v.object({\n recoveryCodes: v.optional(v.array(v.string()), []),\n});\n\nexport type RegenerateRecoveryCodesResult = v.InferOutput<\n typeof RegenerateRecoveryCodesResultSchema\n>;\n\nexport const ClaimFreshStepUpInputSchema = v.strictObject({\n requestId: v.pipe(v.string(), v.trim(), v.minLength(1)),\n actionType: v.pipe(v.string(), v.trim(), v.minLength(1)),\n subject: v.pipe(v.string(), v.trim(), v.minLength(1)),\n});\n\nexport type ClaimFreshStepUpInput = v.InferInput<typeof ClaimFreshStepUpInputSchema>;\n\nexport const ClaimFreshStepUpResultSchema = v.object({\n stepUpId: v.string(),\n claimNonce: v.string(),\n claimExpiresAt: OptionalTimestampMsSchema,\n});\n\nexport type ClaimFreshStepUpResult = v.InferOutput<typeof ClaimFreshStepUpResultSchema>;\n\nexport const ConsumeFreshStepUpInputSchema = v.strictObject({\n stepUpId: v.pipe(v.string(), v.trim(), v.minLength(1)),\n requestId: v.pipe(v.string(), v.trim(), v.minLength(1)),\n actionType: v.pipe(v.string(), v.trim(), v.minLength(1)),\n subject: v.pipe(v.string(), v.trim(), v.minLength(1)),\n claimNonce: v.pipe(v.string(), v.trim(), v.minLength(1)),\n});\n\nexport type ConsumeFreshStepUpInput = v.InferInput<typeof ConsumeFreshStepUpInputSchema>;\n\nexport const ReleaseFreshStepUpInputSchema = v.strictObject({\n stepUpId: v.pipe(v.string(), v.trim(), v.minLength(1)),\n requestId: v.pipe(v.string(), v.trim(), v.minLength(1)),\n actionType: v.pipe(v.string(), v.trim(), v.minLength(1)),\n subject: v.pipe(v.string(), v.trim(), v.minLength(1)),\n claimNonce: v.pipe(v.string(), v.trim(), v.minLength(1)),\n reason: v.pipe(v.string(), v.trim(), v.minLength(1)),\n});\n\nexport type ReleaseFreshStepUpInput = v.InferInput<typeof ReleaseFreshStepUpInputSchema>;\n"],"mappings":"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"}
1
+ {"version":3,"file":"mfa.schemas.js","names":["v","Proto.SessionLevel","Proto.MFAFactorType"],"sources":["../../../src/services/mfa/mfa.schemas.ts"],"sourcesContent":["import * as v from \"../../shared/validation.js\";\nimport * as Proto from \"../../gen/auth/v1/mfa_pb.js\";\nimport { JsonObjectSchema, OptionalTimestampMsSchema } from \"../../shared/schemas.js\";\nimport { requiredEnumLabel } from \"../../shared/proto-enum-codec.js\";\nimport {\n MfaChallengePurposeCodec,\n MfaFactorTypeCodec,\n MFA_CHALLENGE_PURPOSE_VALUES,\n SessionLevelCodec,\n} from \"./mfa.codecs.js\";\n\nexport const MfaSessionInfoSchema = v.pipe(\n v.object({\n sessionId: v.string(),\n sessionLevel: v.pipe(\n v.enum(Proto.SessionLevel),\n v.transform((v) =>\n requiredEnumLabel(\n SessionLevelCodec.protoToOutput,\n v,\n \"PolyesterClient.MfaSessionInfoSchema\",\n \"sessionLevel\",\n ),\n ),\n ),\n authenticationMethods: v.optional(v.array(v.string()), []),\n authTime: OptionalTimestampMsSchema,\n }),\n v.transform(({ sessionId, sessionLevel, authenticationMethods, authTime }) => ({\n sessionId,\n sessionLevel,\n authenticationMethods,\n authTimeMs: authTime,\n })),\n);\n\nexport type MfaSessionInfo = v.InferOutput<typeof MfaSessionInfoSchema>;\n\nexport const MfaFactorSchema = v.pipe(\n v.object({\n factorId: v.string(),\n factorType: v.pipe(\n v.enum(Proto.MFAFactorType),\n v.transform((v) =>\n requiredEnumLabel(\n MfaFactorTypeCodec.protoToOutput,\n v,\n \"PolyesterClient.MfaFactorSchema\",\n \"factorType\",\n ),\n ),\n ),\n label: v.string(),\n createdAt: OptionalTimestampMsSchema,\n lastUsedAt: OptionalTimestampMsSchema,\n }),\n v.transform(({ factorId, factorType, label, createdAt, lastUsedAt }) => ({\n factorId,\n factorType,\n label,\n createdAtMs: createdAt,\n lastUsedAtMs: lastUsedAt,\n })),\n);\n\nexport type MfaFactor = v.InferOutput<typeof MfaFactorSchema>;\n\nexport const ListMfaFactorsResponseSchema = v.object({\n factors: v.optional(v.array(MfaFactorSchema), []),\n hasRecoveryCodes: v.optional(v.boolean(), false),\n});\n\nexport type ListMfaFactorsResult = v.InferOutput<typeof ListMfaFactorsResponseSchema>;\n\nexport const BeginTotpEnrollmentInputSchema = v.strictObject({\n label: v.pipe(v.string(), v.trim(), v.minLength(1)),\n});\n\nexport type BeginTotpEnrollmentInput = v.InferInput<typeof BeginTotpEnrollmentInputSchema>;\n\nexport const BeginTotpEnrollmentResultSchema = v.object({\n enrollmentId: v.string(),\n secret: v.string(),\n otpauthUri: v.string(),\n expiresAt: OptionalTimestampMsSchema,\n});\n\nexport type BeginTotpEnrollmentResult = v.InferOutput<typeof BeginTotpEnrollmentResultSchema>;\n\nexport const FinishTotpEnrollmentInputSchema = v.strictObject({\n enrollmentId: v.pipe(v.string(), v.trim(), v.minLength(1)),\n code: v.pipe(v.string(), v.trim(), v.minLength(1)),\n});\n\nexport type FinishTotpEnrollmentInput = v.InferInput<typeof FinishTotpEnrollmentInputSchema>;\n\nexport const FinishTotpEnrollmentResultSchema = v.object({\n factor: v.optional(MfaFactorSchema),\n recoveryCodes: v.optional(v.array(v.string()), []),\n});\n\nexport type FinishTotpEnrollmentResult = v.InferOutput<typeof FinishTotpEnrollmentResultSchema>;\n\nexport const BeginPasskeyEnrollmentInputSchema = v.strictObject({\n label: v.pipe(v.string(), v.trim(), v.minLength(1)),\n});\n\nexport type BeginPasskeyEnrollmentInput = v.InferInput<typeof BeginPasskeyEnrollmentInputSchema>;\n\nexport const BeginPasskeyEnrollmentResultSchema = v.object({\n enrollmentId: v.string(),\n publicKey: v.optional(JsonObjectSchema),\n expiresAt: OptionalTimestampMsSchema,\n});\n\nexport type BeginPasskeyEnrollmentResult = v.InferOutput<typeof BeginPasskeyEnrollmentResultSchema>;\n\nexport const FinishPasskeyEnrollmentInputSchema = v.strictObject({\n enrollmentId: v.pipe(v.string(), v.trim(), v.minLength(1)),\n credential: JsonObjectSchema,\n});\n\nexport type FinishPasskeyEnrollmentInput = v.InferInput<typeof FinishPasskeyEnrollmentInputSchema>;\n\nexport const FinishPasskeyEnrollmentResultSchema = v.object({\n factor: v.optional(MfaFactorSchema),\n recoveryCodes: v.optional(v.array(v.string()), []),\n});\n\nexport type FinishPasskeyEnrollmentResult = v.InferOutput<\n typeof FinishPasskeyEnrollmentResultSchema\n>;\n\nexport const BeginMfaChallengeInputSchema = v.pipe(\n v.strictObject({\n purpose: v.picklist(MFA_CHALLENGE_PURPOSE_VALUES),\n }),\n v.transform((data) => ({\n purpose: MfaChallengePurposeCodec.inputToProto[data.purpose],\n })),\n);\n\nexport type BeginMfaChallengeInput = v.InferInput<typeof BeginMfaChallengeInputSchema>;\n\nexport const BeginMfaChallengeResultSchema = v.object({\n challengeId: v.string(),\n allowedFactorTypes: v.pipe(\n v.array(v.enum(Proto.MFAFactorType)),\n v.transform((arr) =>\n arr.map((t) =>\n requiredEnumLabel(\n MfaFactorTypeCodec.protoToOutput,\n t,\n \"PolyesterClient.BeginMfaChallengeResultSchema\",\n \"allowed factor type\",\n ),\n ),\n ),\n ),\n publicKey: v.optional(JsonObjectSchema),\n expiresAt: OptionalTimestampMsSchema,\n});\n\nexport type BeginMfaChallengeResult = v.InferOutput<typeof BeginMfaChallengeResultSchema>;\n\nexport const VerifyTotpChallengeInputSchema = v.strictObject({\n challengeId: v.pipe(v.string(), v.trim(), v.minLength(1)),\n code: v.pipe(v.string(), v.trim(), v.minLength(1)),\n});\n\nexport type VerifyTotpChallengeInput = v.InferInput<typeof VerifyTotpChallengeInputSchema>;\n\nexport const FinishPasskeyChallengeInputSchema = v.strictObject({\n challengeId: v.pipe(v.string(), v.trim(), v.minLength(1)),\n credential: JsonObjectSchema,\n});\n\nexport type FinishPasskeyChallengeInput = v.InferInput<typeof FinishPasskeyChallengeInputSchema>;\n\nexport const VerifyRecoveryCodeChallengeInputSchema = v.strictObject({\n challengeId: v.pipe(v.string(), v.trim(), v.minLength(1)),\n recoveryCode: v.pipe(v.string(), v.trim(), v.minLength(1)),\n});\n\nexport type VerifyRecoveryCodeChallengeInput = v.InferInput<\n typeof VerifyRecoveryCodeChallengeInputSchema\n>;\n\nexport const CompleteMfaChallengeResultSchema = v.pipe(\n v.object({\n session: v.optional(MfaSessionInfoSchema),\n accessToken: v.string(),\n accessTokenExpiresAt: OptionalTimestampMsSchema,\n stepUpToken: v.string(),\n stepUpExpiresAt: OptionalTimestampMsSchema,\n }),\n v.transform(({ session, accessToken, accessTokenExpiresAt, stepUpToken, stepUpExpiresAt }) => ({\n session,\n accessToken: accessToken.trim() || undefined,\n accessTokenExpiresAtMs: accessTokenExpiresAt,\n stepUpToken: stepUpToken.trim() || undefined,\n stepUpExpiresAtMs: stepUpExpiresAt,\n })),\n);\n\nexport type CompleteMfaChallengeResult = v.InferOutput<typeof CompleteMfaChallengeResultSchema>;\n\nexport const DeleteMfaFactorInputSchema = v.strictObject({\n factorId: v.pipe(v.string(), v.trim(), v.minLength(1)),\n});\n\nexport type DeleteMfaFactorInput = v.InferInput<typeof DeleteMfaFactorInputSchema>;\n\nexport const UpdateMfaFactorInputSchema = v.strictObject({\n factorId: v.pipe(v.string(), v.trim(), v.minLength(1)),\n label: v.pipe(v.string(), v.maxLength(128)),\n});\n\nexport type UpdateMfaFactorInput = v.InferInput<typeof UpdateMfaFactorInputSchema>;\n\nexport const UpdateMfaFactorResultSchema = v.object({\n factor: v.optional(MfaFactorSchema),\n});\n\nexport type UpdateMfaFactorResult = v.InferOutput<typeof UpdateMfaFactorResultSchema>;\n\nexport const RegenerateRecoveryCodesInputSchema = v.strictObject({});\n\nexport type RegenerateRecoveryCodesInput = v.InferInput<typeof RegenerateRecoveryCodesInputSchema>;\n\nexport const RegenerateRecoveryCodesResultSchema = v.object({\n recoveryCodes: v.optional(v.array(v.string()), []),\n});\n\nexport type RegenerateRecoveryCodesResult = v.InferOutput<\n typeof RegenerateRecoveryCodesResultSchema\n>;\n\nexport const ClaimFreshStepUpInputSchema = v.strictObject({\n requestId: v.pipe(v.string(), v.trim(), v.minLength(1)),\n actionType: v.pipe(v.string(), v.trim(), v.minLength(1)),\n subject: v.pipe(v.string(), v.trim(), v.minLength(1)),\n});\n\nexport type ClaimFreshStepUpInput = v.InferInput<typeof ClaimFreshStepUpInputSchema>;\n\nexport const ClaimFreshStepUpResultSchema = v.object({\n stepUpId: v.string(),\n claimNonce: v.string(),\n claimExpiresAt: OptionalTimestampMsSchema,\n});\n\nexport type ClaimFreshStepUpResult = v.InferOutput<typeof ClaimFreshStepUpResultSchema>;\n\nexport const ConsumeFreshStepUpInputSchema = v.strictObject({\n stepUpId: v.pipe(v.string(), v.trim(), v.minLength(1)),\n requestId: v.pipe(v.string(), v.trim(), v.minLength(1)),\n actionType: v.pipe(v.string(), v.trim(), v.minLength(1)),\n subject: v.pipe(v.string(), v.trim(), v.minLength(1)),\n claimNonce: v.pipe(v.string(), v.trim(), v.minLength(1)),\n});\n\nexport type ConsumeFreshStepUpInput = v.InferInput<typeof ConsumeFreshStepUpInputSchema>;\n\nexport const ReleaseFreshStepUpInputSchema = v.strictObject({\n stepUpId: v.pipe(v.string(), v.trim(), v.minLength(1)),\n requestId: v.pipe(v.string(), v.trim(), v.minLength(1)),\n actionType: v.pipe(v.string(), v.trim(), v.minLength(1)),\n subject: v.pipe(v.string(), v.trim(), v.minLength(1)),\n claimNonce: v.pipe(v.string(), v.trim(), v.minLength(1)),\n reason: v.pipe(v.string(), v.trim(), v.minLength(1)),\n});\n\nexport type ReleaseFreshStepUpInput = v.InferInput<typeof ReleaseFreshStepUpInputSchema>;\n"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
+ import { validation_d_exports } from "../../shared/validation.js";
1
2
  import { PolyesterRequestOptions } from "../../shared/request-options.js";
2
3
  import { PolyesterRealtime } from "../../realtime/types.js";
3
4
  import { BaseSubscribeInput } from "../../shared/types.js";
4
5
  import { SdkScales } from "../../shared/decimal-surface.js";
5
6
  import { GetOrderbookInputSchema, OrderbookData } from "./orderbook.schemas.js";
6
7
  import { Transport } from "@connectrpc/connect";
7
- import * as v from "valibot";
8
8
  //#region src/services/orderbook/orderbook.d.ts
9
9
  interface SubscribeOrderbookInput extends BaseSubscribeInput<OrderbookData> {
10
10
  symbol: string;
@@ -27,7 +27,7 @@ declare class OrderbookService {
27
27
  /**
28
28
  * Fetches a spot order book depth snapshot for a symbol and requested depth, returning best bids and asks with the backend book sequence.
29
29
  */
30
- get(input: v.InferInput<typeof GetOrderbookInputSchema>, options?: PolyesterRequestOptions): Promise<OrderbookData>;
30
+ get(input: validation_d_exports.InferInput<typeof GetOrderbookInputSchema>, options?: PolyesterRequestOptions): Promise<OrderbookData>;
31
31
  /**
32
32
  * Subscribes to the managed order book stream for a symbol and forwards reconstructed snapshots to onEvent. This is a convenience wrapper around createSubscription().unsubscribe.
33
33
  */
@@ -1 +1 @@
1
- {"version":3,"file":"orderbook.d.ts","names":[],"sources":["../../../src/services/orderbook/orderbook.ts"],"mappings":";;;;;;;;UA8BU,gCAAgC,mBAAmB;EACzD;EACA;EACA;EACA;;UAGa,gCAAgC,mBAAmB;UAEnD;EACb;EACA,YAAY;;UAGC,yCAET,yBACA,KAAK;;;;cAOA;;EAKG,YAAA,WAAW,WAAW,UAAU,mBAAmB,QAAQ;;;;EASjE,IACF,OAAO,EAAE,kBAAkB,0BAC3B,UAAU,0BACX,QAAQ;;;;EAmBX,UAAU,OAAO;;;;EAOjB,mBAAmB,OAAO,mCAAmC"}
1
+ {"version":3,"file":"orderbook.d.ts","names":[],"sources":["../../../src/services/orderbook/orderbook.ts"],"mappings":";;;;;;;;UA8BU,gCAAgC,mBAAmB;EACzD;EACA;EACA;EACA;;UAGa,gCAAgC,mBAAmB;UAEnD;EACb;EACA,YAAY;;UAGC,yCAET,yBACA,KAAK;;;;cAOA;;EAKG,YAAA,WAAW,WAAW,UAAU,mBAAmB,QAAQ;;;;EASjE,IACF,OAAO,qBAAE,kBAAkB,0BAC3B,UAAU,0BACX,QAAQ;;;;EAmBX,UAAU,OAAO;;;;EAOjB,mBAAmB,OAAO,mCAAmC"}
@@ -1,3 +1,4 @@
1
+ import { parse, validation_exports } from "../../shared/validation.js";
1
2
  import { toConnectCallOptions } from "../../shared/request-options.js";
2
3
  import { publicationHandlerErrorContext } from "../../shared/subscription-errors.js";
3
4
  import { createReadyGate, decimalInputToScaled } from "../../shared/decimal-surface.js";
@@ -8,7 +9,6 @@ import { GetOrderbookInputSchema, createOrderbookDataSchema, formatOrderbookLeve
8
9
  import { toBig } from "../../utils/u128.js";
9
10
  import { create } from "@bufbuild/protobuf";
10
11
  import { createClient } from "@connectrpc/connect";
11
- import * as v from "valibot";
12
12
  //#region src/services/orderbook/orderbook.ts
13
13
  /**
14
14
  * Reads spot order book snapshots and maintains realtime local order book state from public delta channels.
@@ -26,13 +26,13 @@ var OrderbookService = class {
26
26
  * Fetches a spot order book depth snapshot for a symbol and requested depth, returning best bids and asks with the backend book sequence.
27
27
  */
28
28
  async get(input, options) {
29
- const validated = v.parse(GetOrderbookInputSchema, input);
29
+ const validated = parse(GetOrderbookInputSchema, input);
30
30
  await this.#scales.ready();
31
31
  const res = await this.#client.getOrderBook({
32
32
  symbol: validated.symbol,
33
33
  depth: validated.protoDepth
34
34
  }, toConnectCallOptions(options));
35
- return v.parse(createOrderbookDataSchema(this.#scales, validated.symbol), {
35
+ return parse(createOrderbookDataSchema(this.#scales, validated.symbol), {
36
36
  symbol: validated.symbol,
37
37
  depth: validated.depth,
38
38
  bookSeq: res.bookSeq,
@@ -50,7 +50,7 @@ var OrderbookService = class {
50
50
  * Creates a stateful order book subscription that first fetches a snapshot, buffers proto deltas from public:spot:orderbook:deltas:depth:{depth}:{symbolId}:proto, applies sequence-checked updates, and refetches on gaps or reconnects. The returned handle can unsubscribe or change local price bucket aggregation without reconnecting.
51
51
  */
52
52
  createSubscription(input) {
53
- const symbolId = v.parse(v.pipe(v.number(), v.integer(), v.gtValue(0)), input.symbolId);
53
+ const symbolId = parse(validation_exports.pipe(validation_exports.number(), validation_exports.integer(), validation_exports.gtValue(0)), input.symbolId);
54
54
  const wsDepth = Math.min(500, Math.max(1, Math.trunc(input.depth ?? 50)));
55
55
  const channel = `public:spot:orderbook:deltas:depth:${wsDepth}:${symbolId}:proto`;
56
56
  const client = this.#client;
@@ -115,7 +115,7 @@ var OrderbookService = class {
115
115
  if (stream?.isReady()) emit();
116
116
  }
117
117
  async function inputServiceFetch() {
118
- const validated = v.parse(GetOrderbookInputSchema, {
118
+ const validated = parse(GetOrderbookInputSchema, {
119
119
  symbol: input.symbol,
120
120
  depth: wsDepth
121
121
  });
@@ -1 +1 @@
1
- {"version":3,"file":"orderbook.js","names":["#client","Proto.OrderbookService","#realtime","#scales","Proto.GetOrderBookResponseSchema","Proto.OrderBookDeltaSchema"],"sources":["../../../src/services/orderbook/orderbook.ts"],"sourcesContent":["import { create } from \"@bufbuild/protobuf\";\nimport * as Proto from \"../../gen/orderbook/v1/orderbook_pb.js\";\nimport { createClient, type Client, type Transport } from \"@connectrpc/connect\";\nimport { publicationHandlerErrorContext } from \"../../shared/subscription-errors.js\";\nimport type { PolyesterRealtime } from \"../../realtime/types.js\";\nimport {\n snapshotThenStream,\n type SnapshotThenStreamSubscription,\n} from \"../../realtime/snapshot-then-stream.js\";\nimport type { BaseSubscribeInput } from \"../../shared/types.js\";\nimport {\n toConnectCallOptions,\n type PolyesterRequestOptions,\n} from \"../../shared/request-options.js\";\nimport {\n createReadyGate,\n decimalInputToScaled,\n type SdkScales,\n} from \"../../shared/decimal-surface.js\";\nimport {\n formatOrderbookLevel,\n GetOrderbookInputSchema,\n createOrderbookDataSchema,\n type OrderbookLevel,\n type OrderbookData,\n} from \"./orderbook.schemas.js\";\nimport { toBig } from \"../../utils/u128.js\";\nimport { isResourceNotFoundError } from \"../../utils/errors.js\";\nimport * as v from \"valibot\";\n\ninterface SubscribeOrderbookInput extends BaseSubscribeInput<OrderbookData> {\n symbol: string;\n symbolId: number;\n depth?: number;\n bucket?: string | null;\n}\n\nexport interface OrderbookStreamHandlers extends BaseSubscribeInput<OrderbookData> {}\n\nexport interface OrderbookSubscription {\n unsubscribe: () => void;\n setBucket: (bucket: string | null | undefined) => void;\n}\n\nexport interface CreateOrderbookSubscriptionInput\n extends\n OrderbookStreamHandlers,\n Pick<SubscribeOrderbookInput, \"symbol\" | \"symbolId\" | \"depth\" | \"bucket\"> {}\n\ntype BookSide = Map<bigint, bigint>;\n\n/**\n * Reads spot order book snapshots and maintains realtime local order book state from public delta channels.\n */\nexport class OrderbookService {\n #client: Client<typeof Proto.OrderbookService>;\n #realtime: PolyesterRealtime;\n #scales: SdkScales;\n\n constructor(transport: Transport, realtime: PolyesterRealtime, scales: SdkScales) {\n this.#client = createClient(Proto.OrderbookService, transport);\n this.#realtime = realtime;\n this.#scales = scales;\n }\n\n /**\n * Fetches a spot order book depth snapshot for a symbol and requested depth, returning best bids and asks with the backend book sequence.\n */\n async get(\n input: v.InferInput<typeof GetOrderbookInputSchema>,\n options?: PolyesterRequestOptions,\n ): Promise<OrderbookData> {\n const validated = v.parse(GetOrderbookInputSchema, input);\n await this.#scales.ready();\n const res = await this.#client.getOrderBook(\n { symbol: validated.symbol, depth: validated.protoDepth },\n toConnectCallOptions(options),\n );\n return v.parse(createOrderbookDataSchema(this.#scales, validated.symbol), {\n symbol: validated.symbol,\n depth: validated.depth,\n bookSeq: res.bookSeq,\n bids: res.bids,\n asks: res.asks,\n });\n }\n\n /**\n * Subscribes to the managed order book stream for a symbol and forwards reconstructed snapshots to onEvent. This is a convenience wrapper around createSubscription().unsubscribe.\n */\n subscribe(input: SubscribeOrderbookInput): () => void {\n return this.createSubscription(input).unsubscribe;\n }\n\n /**\n * Creates a stateful order book subscription that first fetches a snapshot, buffers proto deltas from public:spot:orderbook:deltas:depth:{depth}:{symbolId}:proto, applies sequence-checked updates, and refetches on gaps or reconnects. The returned handle can unsubscribe or change local price bucket aggregation without reconnecting.\n */\n createSubscription(input: CreateOrderbookSubscriptionInput): OrderbookSubscription {\n const symbolId = v.parse(v.pipe(v.number(), v.integer(), v.gtValue(0)), input.symbolId);\n const wsDepth = Math.min(500, Math.max(1, Math.trunc(input.depth ?? 50)));\n const channel = `public:spot:orderbook:deltas:depth:${wsDepth}:${symbolId}:proto`;\n\n const client = this.#client;\n const scales = this.#scales;\n const gate = createReadyGate(\n () => scales.ready(),\n (error) => input.onError?.(publicationHandlerErrorContext(channel, error)),\n );\n\n let bidsMap: BookSide = new Map();\n let asksMap: BookSide = new Map();\n let currentBookSeq = 0n;\n let bucketTicks: bigint | null = null;\n let stream: SnapshotThenStreamSubscription | undefined;\n\n function levelsToMap(levels: Proto.PriceLevel[] | undefined): BookSide {\n const map: BookSide = new Map();\n for (const l of levels ?? []) {\n if (l.qtyScaled === 0n) continue;\n map.set(l.priceTicks, l.qtyScaled);\n }\n return map;\n }\n\n function applySideDelta(map: BookSide, levels: Proto.PriceLevel[] | undefined): void {\n for (const l of levels ?? []) {\n if (l.qtyScaled === 0n) map.delete(l.priceTicks);\n else map.set(l.priceTicks, l.qtyScaled);\n }\n }\n\n function sideToUI(map: BookSide, side: \"bids\" | \"asks\", limit: number): OrderbookLevel[] {\n const entries = Array.from(map.entries());\n entries.sort(([pa], [pb]) => {\n if (pa === pb) return 0;\n return side === \"bids\" ? (pa > pb ? -1 : 1) : pa < pb ? -1 : 1;\n });\n return entries\n .slice(0, limit)\n .map(([priceTicks, qtyScaled]) =>\n formatOrderbookLevel({ priceTicks, qtyScaled }, scales, symbolId),\n );\n }\n\n function sideToUIBucketed(\n map: BookSide,\n side: \"bids\" | \"asks\",\n limit: number,\n bucket: bigint | null,\n ): OrderbookLevel[] {\n if (!bucket || bucket <= 0n) return sideToUI(map, side, limit);\n\n const agg: BookSide = new Map();\n for (const [priceTicks, qtyScaled] of map.entries()) {\n if (qtyScaled <= 0n) continue;\n const bucketPrice = (priceTicks / bucket) * bucket;\n agg.set(bucketPrice, (agg.get(bucketPrice) ?? 0n) + qtyScaled);\n }\n return sideToUI(agg, side, limit);\n }\n\n function emit(): void {\n gate.run(() => {\n input.onEvent({\n symbol: input.symbol,\n depth: wsDepth,\n bookSeq: currentBookSeq.toString(),\n bids: sideToUIBucketed(bidsMap, \"bids\", wsDepth, bucketTicks),\n asks: sideToUIBucketed(asksMap, \"asks\", wsDepth, bucketTicks),\n });\n });\n }\n\n function setBucket(bucket: string | null | undefined): void {\n if (!bucket) {\n bucketTicks = null;\n } else {\n try {\n bucketTicks = decimalInputToScaled(\"bucket\", bucket, scales.price());\n } catch {\n bucketTicks = null;\n }\n }\n if (stream?.isReady()) emit();\n }\n\n async function inputServiceFetch(): Promise<Proto.GetOrderBookResponse> {\n const validated = v.parse(GetOrderbookInputSchema, {\n symbol: input.symbol,\n depth: wsDepth,\n });\n try {\n return await client.getOrderBook({\n symbol: validated.symbol,\n depth: validated.protoDepth,\n });\n } catch (error: unknown) {\n if (!isResourceNotFoundError(error)) throw error;\n\n return create(Proto.GetOrderBookResponseSchema, {\n bookSeq: 0n,\n bids: [],\n asks: [],\n });\n }\n }\n\n function handleDelta(delta: Proto.OrderBookDelta): void {\n if (delta.reset) {\n bidsMap.clear();\n asksMap.clear();\n currentBookSeq = 0n;\n }\n\n if (currentBookSeq !== 0n && delta.bookSeqStart > currentBookSeq + 1n) {\n stream?.refreshSnapshot();\n return;\n }\n\n if (delta.bookSeqEnd <= currentBookSeq) return;\n\n applySideDelta(bidsMap, delta.bids);\n applySideDelta(asksMap, delta.asks);\n\n currentBookSeq = delta.bookSeqEnd > currentBookSeq ? delta.bookSeqEnd : currentBookSeq;\n emit();\n }\n\n setBucket(input.bucket);\n stream = snapshotThenStream({\n realtime: this.#realtime,\n channel,\n schema: Proto.OrderBookDeltaSchema,\n maxBufferedPublications: 200,\n snapshotErrorLog: \"Failed to fetch orderbook\",\n fetchSnapshot: inputServiceFetch,\n readPublication: (delta) => [delta],\n applySnapshot: (snapshot, bufferedDeltas) => {\n bidsMap = levelsToMap(snapshot.bids);\n asksMap = levelsToMap(snapshot.asks);\n currentBookSeq = toBig(snapshot.bookSeq);\n emit();\n for (const delta of bufferedDeltas) {\n if (stream?.isDisposed()) return;\n handleDelta(delta);\n }\n },\n applyLivePublications: (deltas) => {\n for (const delta of deltas) {\n if (stream?.isDisposed()) return;\n handleDelta(delta);\n }\n },\n onOpen: input.onOpen,\n onClose: input.onClose,\n onError: input.onError,\n });\n\n function dispose(): void {\n stream?.unsubscribe();\n }\n\n return { unsubscribe: dispose, setBucket };\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"orderbook.js","names":["#client","Proto.OrderbookService","#realtime","#scales","v.parse","v","Proto.GetOrderBookResponseSchema","Proto.OrderBookDeltaSchema"],"sources":["../../../src/services/orderbook/orderbook.ts"],"sourcesContent":["import { create } from \"@bufbuild/protobuf\";\nimport * as Proto from \"../../gen/orderbook/v1/orderbook_pb.js\";\nimport { createClient, type Client, type Transport } from \"@connectrpc/connect\";\nimport { publicationHandlerErrorContext } from \"../../shared/subscription-errors.js\";\nimport type { PolyesterRealtime } from \"../../realtime/types.js\";\nimport {\n snapshotThenStream,\n type SnapshotThenStreamSubscription,\n} from \"../../realtime/snapshot-then-stream.js\";\nimport type { BaseSubscribeInput } from \"../../shared/types.js\";\nimport {\n toConnectCallOptions,\n type PolyesterRequestOptions,\n} from \"../../shared/request-options.js\";\nimport {\n createReadyGate,\n decimalInputToScaled,\n type SdkScales,\n} from \"../../shared/decimal-surface.js\";\nimport {\n formatOrderbookLevel,\n GetOrderbookInputSchema,\n createOrderbookDataSchema,\n type OrderbookLevel,\n type OrderbookData,\n} from \"./orderbook.schemas.js\";\nimport { toBig } from \"../../utils/u128.js\";\nimport { isResourceNotFoundError } from \"../../utils/errors.js\";\nimport * as v from \"../../shared/validation.js\";\n\ninterface SubscribeOrderbookInput extends BaseSubscribeInput<OrderbookData> {\n symbol: string;\n symbolId: number;\n depth?: number;\n bucket?: string | null;\n}\n\nexport interface OrderbookStreamHandlers extends BaseSubscribeInput<OrderbookData> {}\n\nexport interface OrderbookSubscription {\n unsubscribe: () => void;\n setBucket: (bucket: string | null | undefined) => void;\n}\n\nexport interface CreateOrderbookSubscriptionInput\n extends\n OrderbookStreamHandlers,\n Pick<SubscribeOrderbookInput, \"symbol\" | \"symbolId\" | \"depth\" | \"bucket\"> {}\n\ntype BookSide = Map<bigint, bigint>;\n\n/**\n * Reads spot order book snapshots and maintains realtime local order book state from public delta channels.\n */\nexport class OrderbookService {\n #client: Client<typeof Proto.OrderbookService>;\n #realtime: PolyesterRealtime;\n #scales: SdkScales;\n\n constructor(transport: Transport, realtime: PolyesterRealtime, scales: SdkScales) {\n this.#client = createClient(Proto.OrderbookService, transport);\n this.#realtime = realtime;\n this.#scales = scales;\n }\n\n /**\n * Fetches a spot order book depth snapshot for a symbol and requested depth, returning best bids and asks with the backend book sequence.\n */\n async get(\n input: v.InferInput<typeof GetOrderbookInputSchema>,\n options?: PolyesterRequestOptions,\n ): Promise<OrderbookData> {\n const validated = v.parse(GetOrderbookInputSchema, input);\n await this.#scales.ready();\n const res = await this.#client.getOrderBook(\n { symbol: validated.symbol, depth: validated.protoDepth },\n toConnectCallOptions(options),\n );\n return v.parse(createOrderbookDataSchema(this.#scales, validated.symbol), {\n symbol: validated.symbol,\n depth: validated.depth,\n bookSeq: res.bookSeq,\n bids: res.bids,\n asks: res.asks,\n });\n }\n\n /**\n * Subscribes to the managed order book stream for a symbol and forwards reconstructed snapshots to onEvent. This is a convenience wrapper around createSubscription().unsubscribe.\n */\n subscribe(input: SubscribeOrderbookInput): () => void {\n return this.createSubscription(input).unsubscribe;\n }\n\n /**\n * Creates a stateful order book subscription that first fetches a snapshot, buffers proto deltas from public:spot:orderbook:deltas:depth:{depth}:{symbolId}:proto, applies sequence-checked updates, and refetches on gaps or reconnects. The returned handle can unsubscribe or change local price bucket aggregation without reconnecting.\n */\n createSubscription(input: CreateOrderbookSubscriptionInput): OrderbookSubscription {\n const symbolId = v.parse(v.pipe(v.number(), v.integer(), v.gtValue(0)), input.symbolId);\n const wsDepth = Math.min(500, Math.max(1, Math.trunc(input.depth ?? 50)));\n const channel = `public:spot:orderbook:deltas:depth:${wsDepth}:${symbolId}:proto`;\n\n const client = this.#client;\n const scales = this.#scales;\n const gate = createReadyGate(\n () => scales.ready(),\n (error) => input.onError?.(publicationHandlerErrorContext(channel, error)),\n );\n\n let bidsMap: BookSide = new Map();\n let asksMap: BookSide = new Map();\n let currentBookSeq = 0n;\n let bucketTicks: bigint | null = null;\n let stream: SnapshotThenStreamSubscription | undefined;\n\n function levelsToMap(levels: Proto.PriceLevel[] | undefined): BookSide {\n const map: BookSide = new Map();\n for (const l of levels ?? []) {\n if (l.qtyScaled === 0n) continue;\n map.set(l.priceTicks, l.qtyScaled);\n }\n return map;\n }\n\n function applySideDelta(map: BookSide, levels: Proto.PriceLevel[] | undefined): void {\n for (const l of levels ?? []) {\n if (l.qtyScaled === 0n) map.delete(l.priceTicks);\n else map.set(l.priceTicks, l.qtyScaled);\n }\n }\n\n function sideToUI(map: BookSide, side: \"bids\" | \"asks\", limit: number): OrderbookLevel[] {\n const entries = Array.from(map.entries());\n entries.sort(([pa], [pb]) => {\n if (pa === pb) return 0;\n return side === \"bids\" ? (pa > pb ? -1 : 1) : pa < pb ? -1 : 1;\n });\n return entries\n .slice(0, limit)\n .map(([priceTicks, qtyScaled]) =>\n formatOrderbookLevel({ priceTicks, qtyScaled }, scales, symbolId),\n );\n }\n\n function sideToUIBucketed(\n map: BookSide,\n side: \"bids\" | \"asks\",\n limit: number,\n bucket: bigint | null,\n ): OrderbookLevel[] {\n if (!bucket || bucket <= 0n) return sideToUI(map, side, limit);\n\n const agg: BookSide = new Map();\n for (const [priceTicks, qtyScaled] of map.entries()) {\n if (qtyScaled <= 0n) continue;\n const bucketPrice = (priceTicks / bucket) * bucket;\n agg.set(bucketPrice, (agg.get(bucketPrice) ?? 0n) + qtyScaled);\n }\n return sideToUI(agg, side, limit);\n }\n\n function emit(): void {\n gate.run(() => {\n input.onEvent({\n symbol: input.symbol,\n depth: wsDepth,\n bookSeq: currentBookSeq.toString(),\n bids: sideToUIBucketed(bidsMap, \"bids\", wsDepth, bucketTicks),\n asks: sideToUIBucketed(asksMap, \"asks\", wsDepth, bucketTicks),\n });\n });\n }\n\n function setBucket(bucket: string | null | undefined): void {\n if (!bucket) {\n bucketTicks = null;\n } else {\n try {\n bucketTicks = decimalInputToScaled(\"bucket\", bucket, scales.price());\n } catch {\n bucketTicks = null;\n }\n }\n if (stream?.isReady()) emit();\n }\n\n async function inputServiceFetch(): Promise<Proto.GetOrderBookResponse> {\n const validated = v.parse(GetOrderbookInputSchema, {\n symbol: input.symbol,\n depth: wsDepth,\n });\n try {\n return await client.getOrderBook({\n symbol: validated.symbol,\n depth: validated.protoDepth,\n });\n } catch (error: unknown) {\n if (!isResourceNotFoundError(error)) throw error;\n\n return create(Proto.GetOrderBookResponseSchema, {\n bookSeq: 0n,\n bids: [],\n asks: [],\n });\n }\n }\n\n function handleDelta(delta: Proto.OrderBookDelta): void {\n if (delta.reset) {\n bidsMap.clear();\n asksMap.clear();\n currentBookSeq = 0n;\n }\n\n if (currentBookSeq !== 0n && delta.bookSeqStart > currentBookSeq + 1n) {\n stream?.refreshSnapshot();\n return;\n }\n\n if (delta.bookSeqEnd <= currentBookSeq) return;\n\n applySideDelta(bidsMap, delta.bids);\n applySideDelta(asksMap, delta.asks);\n\n currentBookSeq = delta.bookSeqEnd > currentBookSeq ? delta.bookSeqEnd : currentBookSeq;\n emit();\n }\n\n setBucket(input.bucket);\n stream = snapshotThenStream({\n realtime: this.#realtime,\n channel,\n schema: Proto.OrderBookDeltaSchema,\n maxBufferedPublications: 200,\n snapshotErrorLog: \"Failed to fetch orderbook\",\n fetchSnapshot: inputServiceFetch,\n readPublication: (delta) => [delta],\n applySnapshot: (snapshot, bufferedDeltas) => {\n bidsMap = levelsToMap(snapshot.bids);\n asksMap = levelsToMap(snapshot.asks);\n currentBookSeq = toBig(snapshot.bookSeq);\n emit();\n for (const delta of bufferedDeltas) {\n if (stream?.isDisposed()) return;\n handleDelta(delta);\n }\n },\n applyLivePublications: (deltas) => {\n for (const delta of deltas) {\n if (stream?.isDisposed()) return;\n handleDelta(delta);\n }\n },\n onOpen: input.onOpen,\n onClose: input.onClose,\n onError: input.onError,\n });\n\n function dispose(): void {\n stream?.unsubscribe();\n }\n\n return { unsubscribe: dispose, setBucket };\n }\n}\n"],"mappings":"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"}
@@ -1,43 +1,43 @@
1
+ import { validation_d_exports } from "../../shared/validation.js";
1
2
  import { PairCatalogKey } from "../../catalogs/types.js";
2
3
  import { Depth } from "../../gen/orderbook/v1/orderbook_pb.js";
3
4
  import { SdkScales } from "../../shared/decimal-surface.js";
4
- import * as v from "valibot";
5
5
  //#region src/services/orderbook/orderbook.schemas.d.ts
6
- declare const GetOrderbookInputSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
7
- readonly symbol: v.StringSchema<undefined>;
8
- readonly depth: v.OptionalSchema<v.NumberSchema<undefined>, 50>;
9
- }, undefined>, v.TransformAction<{
6
+ declare const GetOrderbookInputSchema: validation_d_exports.SchemaWithPipe<readonly [validation_d_exports.ObjectSchema<{
7
+ readonly symbol: validation_d_exports.StringSchema<undefined>;
8
+ readonly depth: validation_d_exports.OptionalSchema<validation_d_exports.NumberSchema<undefined>, 50>;
9
+ }, undefined>, validation_d_exports.TransformAction<{
10
10
  symbol: string;
11
11
  depth: number;
12
12
  }, {
13
13
  symbol: string;
14
- depth: 5 | 10 | 20 | 1 | 200 | 500 | 1000 | 50 | 100;
14
+ depth: 5 | 10 | 20 | 1 | 200 | 500 | 50 | 100 | 1000;
15
15
  protoDepth: Depth;
16
16
  }>]>;
17
- type GetOrderbookInput = v.InferInput<typeof GetOrderbookInputSchema>;
18
- declare const OrderbookLevelInputSchema: v.ObjectSchema<{
19
- readonly priceTicks: v.BigintSchema<undefined>;
20
- readonly qtyScaled: v.BigintSchema<undefined>;
17
+ type GetOrderbookInput = validation_d_exports.InferInput<typeof GetOrderbookInputSchema>;
18
+ declare const OrderbookLevelInputSchema: validation_d_exports.ObjectSchema<{
19
+ readonly priceTicks: validation_d_exports.BigintSchema<undefined>;
20
+ readonly qtyScaled: validation_d_exports.BigintSchema<undefined>;
21
21
  }, undefined>;
22
- type OrderbookLevelInput = v.InferOutput<typeof OrderbookLevelInputSchema>;
22
+ type OrderbookLevelInput = validation_d_exports.InferOutput<typeof OrderbookLevelInputSchema>;
23
23
  declare function formatOrderbookLevel(level: OrderbookLevelInput, scales: SdkScales, pair: PairCatalogKey): {
24
24
  price: string;
25
25
  qty: string;
26
26
  };
27
27
  type OrderbookLevel = ReturnType<typeof formatOrderbookLevel>;
28
- declare function createOrderbookDataSchema(scales: SdkScales, pair: PairCatalogKey): v.SchemaWithPipe<readonly [v.ObjectSchema<{
29
- readonly symbol: v.StringSchema<undefined>;
30
- readonly depth: v.NumberSchema<undefined>;
31
- readonly bookSeq: v.BigintSchema<undefined>;
32
- readonly bids: v.ArraySchema<v.ObjectSchema<{
33
- readonly priceTicks: v.BigintSchema<undefined>;
34
- readonly qtyScaled: v.BigintSchema<undefined>;
28
+ declare function createOrderbookDataSchema(scales: SdkScales, pair: PairCatalogKey): validation_d_exports.SchemaWithPipe<readonly [validation_d_exports.ObjectSchema<{
29
+ readonly symbol: validation_d_exports.StringSchema<undefined>;
30
+ readonly depth: validation_d_exports.NumberSchema<undefined>;
31
+ readonly bookSeq: validation_d_exports.BigintSchema<undefined>;
32
+ readonly bids: validation_d_exports.ArraySchema<validation_d_exports.ObjectSchema<{
33
+ readonly priceTicks: validation_d_exports.BigintSchema<undefined>;
34
+ readonly qtyScaled: validation_d_exports.BigintSchema<undefined>;
35
35
  }, undefined>, undefined>;
36
- readonly asks: v.ArraySchema<v.ObjectSchema<{
37
- readonly priceTicks: v.BigintSchema<undefined>;
38
- readonly qtyScaled: v.BigintSchema<undefined>;
36
+ readonly asks: validation_d_exports.ArraySchema<validation_d_exports.ObjectSchema<{
37
+ readonly priceTicks: validation_d_exports.BigintSchema<undefined>;
38
+ readonly qtyScaled: validation_d_exports.BigintSchema<undefined>;
39
39
  }, undefined>, undefined>;
40
- }, undefined>, v.TransformAction<{
40
+ }, undefined>, validation_d_exports.TransformAction<{
41
41
  symbol: string;
42
42
  depth: number;
43
43
  bookSeq: bigint;
@@ -62,7 +62,7 @@ declare function createOrderbookDataSchema(scales: SdkScales, pair: PairCatalogK
62
62
  symbol: string;
63
63
  depth: number;
64
64
  }>]>;
65
- type OrderbookData = v.InferOutput<ReturnType<typeof createOrderbookDataSchema>>;
65
+ type OrderbookData = validation_d_exports.InferOutput<ReturnType<typeof createOrderbookDataSchema>>;
66
66
  //#endregion
67
67
  export { GetOrderbookInput, GetOrderbookInputSchema, OrderbookData, OrderbookLevel, OrderbookLevelInput, createOrderbookDataSchema, formatOrderbookLevel };
68
68
  //# sourceMappingURL=orderbook.schemas.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"orderbook.schemas.d.ts","names":[],"sources":["../../../src/services/orderbook/orderbook.schemas.ts"],"mappings":";;;;;cAKa,yBAAuB,EAAA,yBAAA,EAAA;;;;;;;;;cAAA;;KAexB,oBAAoB,EAAE,kBAAkB;cAE9C,2BAAyB,EAAA;;;;KAKnB,sBAAsB,EAAE,mBAAmB;iBAEvC,qBACZ,OAAO,qBACP,QAAQ,WACR,MAAM;;;;KAQE,iBAAiB,kBAAkB;iBAE/B,0BAA0B,QAAQ,WAAW,MAAM,iBAAc,EAAA,yBAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAkBrE,gBAAgB,EAAE,YAAY,kBAAkB"}
1
+ {"version":3,"file":"orderbook.schemas.d.ts","names":[],"sources":["../../../src/services/orderbook/orderbook.schemas.ts"],"mappings":";;;;;cAKa,yBAAuB,qBAAA,yBAAA,qBAAA;;;;;;;;;cAAA;;KAexB,oBAAoB,qBAAE,kBAAkB;cAE9C,2BAAyB,qBAAA;;;;KAKnB,sBAAsB,qBAAE,mBAAmB;iBAEvC,qBACZ,OAAO,qBACP,QAAQ,WACR,MAAM;;;;KAQE,iBAAiB,kBAAkB;iBAE/B,0BAA0B,QAAQ,WAAW,MAAM,iBAAc,qBAAA,yBAAA,qBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAkBrE,gBAAgB,qBAAE,YAAY,kBAAkB"}
@@ -1,11 +1,11 @@
1
+ import { validation_exports } from "../../shared/validation.js";
1
2
  import { scaledToDecimalOutput } from "../../shared/decimal-surface.js";
2
3
  import { normalizeOrderbookDepth } from "./orderbook.codecs.js";
3
- import * as v from "valibot";
4
4
  //#region src/services/orderbook/orderbook.schemas.ts
5
- const GetOrderbookInputSchema = v.pipe(v.object({
6
- symbol: v.string(),
7
- depth: v.optional(v.number(), 50)
8
- }), v.transform((input) => {
5
+ const GetOrderbookInputSchema = validation_exports.pipe(validation_exports.object({
6
+ symbol: validation_exports.string(),
7
+ depth: validation_exports.optional(validation_exports.number(), 50)
8
+ }), validation_exports.transform((input) => {
9
9
  const depth = normalizeOrderbookDepth(input.depth);
10
10
  return {
11
11
  symbol: input.symbol,
@@ -13,9 +13,9 @@ const GetOrderbookInputSchema = v.pipe(v.object({
13
13
  protoDepth: depth.protoDepth
14
14
  };
15
15
  }));
16
- const OrderbookLevelInputSchema = v.object({
17
- priceTicks: v.bigint(),
18
- qtyScaled: v.bigint()
16
+ const OrderbookLevelInputSchema = validation_exports.object({
17
+ priceTicks: validation_exports.bigint(),
18
+ qtyScaled: validation_exports.bigint()
19
19
  });
20
20
  function formatOrderbookLevel(level, scales, pair) {
21
21
  return {
@@ -24,13 +24,13 @@ function formatOrderbookLevel(level, scales, pair) {
24
24
  };
25
25
  }
26
26
  function createOrderbookDataSchema(scales, pair) {
27
- return v.pipe(v.object({
28
- symbol: v.string(),
29
- depth: v.number(),
30
- bookSeq: v.bigint(),
31
- bids: v.array(OrderbookLevelInputSchema),
32
- asks: v.array(OrderbookLevelInputSchema)
33
- }), v.transform((d) => ({
27
+ return validation_exports.pipe(validation_exports.object({
28
+ symbol: validation_exports.string(),
29
+ depth: validation_exports.number(),
30
+ bookSeq: validation_exports.bigint(),
31
+ bids: validation_exports.array(OrderbookLevelInputSchema),
32
+ asks: validation_exports.array(OrderbookLevelInputSchema)
33
+ }), validation_exports.transform((d) => ({
34
34
  ...d,
35
35
  bookSeq: d.bookSeq.toString(),
36
36
  bids: d.bids.map((level) => formatOrderbookLevel(level, scales, pair)),
@@ -1 +1 @@
1
- {"version":3,"file":"orderbook.schemas.js","names":[],"sources":["../../../src/services/orderbook/orderbook.schemas.ts"],"sourcesContent":["import * as v from \"valibot\";\nimport type { PairCatalogKey } from \"../../catalogs/types.js\";\nimport { scaledToDecimalOutput, type SdkScales } from \"../../shared/decimal-surface.js\";\nimport { normalizeOrderbookDepth } from \"./orderbook.codecs.js\";\n\nexport const GetOrderbookInputSchema = v.pipe(\n v.object({\n symbol: v.string(),\n depth: v.optional(v.number(), 50),\n }),\n v.transform((input) => {\n const depth = normalizeOrderbookDepth(input.depth);\n return {\n symbol: input.symbol,\n depth: depth.levels,\n protoDepth: depth.protoDepth,\n };\n }),\n);\n\nexport type GetOrderbookInput = v.InferInput<typeof GetOrderbookInputSchema>;\n\nconst OrderbookLevelInputSchema = v.object({\n priceTicks: v.bigint(),\n qtyScaled: v.bigint(),\n});\n\nexport type OrderbookLevelInput = v.InferOutput<typeof OrderbookLevelInputSchema>;\n\nexport function formatOrderbookLevel(\n level: OrderbookLevelInput,\n scales: SdkScales,\n pair: PairCatalogKey,\n) {\n return {\n price: scaledToDecimalOutput(level.priceTicks, scales.price()),\n qty: scaledToDecimalOutput(level.qtyScaled, scales.baseQty(pair)),\n };\n}\n\nexport type OrderbookLevel = ReturnType<typeof formatOrderbookLevel>;\n\nexport function createOrderbookDataSchema(scales: SdkScales, pair: PairCatalogKey) {\n return v.pipe(\n v.object({\n symbol: v.string(),\n depth: v.number(),\n bookSeq: v.bigint(),\n bids: v.array(OrderbookLevelInputSchema),\n asks: v.array(OrderbookLevelInputSchema),\n }),\n v.transform((d) => ({\n ...d,\n bookSeq: d.bookSeq.toString(),\n bids: d.bids.map((level) => formatOrderbookLevel(level, scales, pair)),\n asks: d.asks.map((level) => formatOrderbookLevel(level, scales, pair)),\n })),\n );\n}\n\nexport type OrderbookData = v.InferOutput<ReturnType<typeof createOrderbookDataSchema>>;\n"],"mappings":";;;;AAKA,MAAa,0BAA0B,EAAE,KACrC,EAAE,OAAO;CACL,QAAQ,EAAE,OAAO;CACjB,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,EAAE;AACpC,CAAC,GACD,EAAE,WAAW,UAAU;CACnB,MAAM,QAAQ,wBAAwB,MAAM,KAAK;CACjD,OAAO;EACH,QAAQ,MAAM;EACd,OAAO,MAAM;EACb,YAAY,MAAM;CACtB;AACJ,CAAC,CACL;AAIA,MAAM,4BAA4B,EAAE,OAAO;CACvC,YAAY,EAAE,OAAO;CACrB,WAAW,EAAE,OAAO;AACxB,CAAC;AAID,SAAgB,qBACZ,OACA,QACA,MACF;CACE,OAAO;EACH,OAAO,sBAAsB,MAAM,YAAY,OAAO,MAAM,CAAC;EAC7D,KAAK,sBAAsB,MAAM,WAAW,OAAO,QAAQ,IAAI,CAAC;CACpE;AACJ;AAIA,SAAgB,0BAA0B,QAAmB,MAAsB;CAC/E,OAAO,EAAE,KACL,EAAE,OAAO;EACL,QAAQ,EAAE,OAAO;EACjB,OAAO,EAAE,OAAO;EAChB,SAAS,EAAE,OAAO;EAClB,MAAM,EAAE,MAAM,yBAAyB;EACvC,MAAM,EAAE,MAAM,yBAAyB;CAC3C,CAAC,GACD,EAAE,WAAW,OAAO;EAChB,GAAG;EACH,SAAS,EAAE,QAAQ,SAAS;EAC5B,MAAM,EAAE,KAAK,KAAK,UAAU,qBAAqB,OAAO,QAAQ,IAAI,CAAC;EACrE,MAAM,EAAE,KAAK,KAAK,UAAU,qBAAqB,OAAO,QAAQ,IAAI,CAAC;CACzE,EAAE,CACN;AACJ"}
1
+ {"version":3,"file":"orderbook.schemas.js","names":["v"],"sources":["../../../src/services/orderbook/orderbook.schemas.ts"],"sourcesContent":["import * as v from \"../../shared/validation.js\";\nimport type { PairCatalogKey } from \"../../catalogs/types.js\";\nimport { scaledToDecimalOutput, type SdkScales } from \"../../shared/decimal-surface.js\";\nimport { normalizeOrderbookDepth } from \"./orderbook.codecs.js\";\n\nexport const GetOrderbookInputSchema = v.pipe(\n v.object({\n symbol: v.string(),\n depth: v.optional(v.number(), 50),\n }),\n v.transform((input) => {\n const depth = normalizeOrderbookDepth(input.depth);\n return {\n symbol: input.symbol,\n depth: depth.levels,\n protoDepth: depth.protoDepth,\n };\n }),\n);\n\nexport type GetOrderbookInput = v.InferInput<typeof GetOrderbookInputSchema>;\n\nconst OrderbookLevelInputSchema = v.object({\n priceTicks: v.bigint(),\n qtyScaled: v.bigint(),\n});\n\nexport type OrderbookLevelInput = v.InferOutput<typeof OrderbookLevelInputSchema>;\n\nexport function formatOrderbookLevel(\n level: OrderbookLevelInput,\n scales: SdkScales,\n pair: PairCatalogKey,\n) {\n return {\n price: scaledToDecimalOutput(level.priceTicks, scales.price()),\n qty: scaledToDecimalOutput(level.qtyScaled, scales.baseQty(pair)),\n };\n}\n\nexport type OrderbookLevel = ReturnType<typeof formatOrderbookLevel>;\n\nexport function createOrderbookDataSchema(scales: SdkScales, pair: PairCatalogKey) {\n return v.pipe(\n v.object({\n symbol: v.string(),\n depth: v.number(),\n bookSeq: v.bigint(),\n bids: v.array(OrderbookLevelInputSchema),\n asks: v.array(OrderbookLevelInputSchema),\n }),\n v.transform((d) => ({\n ...d,\n bookSeq: d.bookSeq.toString(),\n bids: d.bids.map((level) => formatOrderbookLevel(level, scales, pair)),\n asks: d.asks.map((level) => formatOrderbookLevel(level, scales, pair)),\n })),\n );\n}\n\nexport type OrderbookData = v.InferOutput<ReturnType<typeof createOrderbookDataSchema>>;\n"],"mappings":";;;;AAKA,MAAa,0BAA0BA,mBAAE,KACrCA,mBAAE,OAAO;CACL,QAAQA,mBAAE,OAAO;CACjB,OAAOA,mBAAE,SAASA,mBAAE,OAAO,GAAG,EAAE;AACpC,CAAC,GACDA,mBAAE,WAAW,UAAU;CACnB,MAAM,QAAQ,wBAAwB,MAAM,KAAK;CACjD,OAAO;EACH,QAAQ,MAAM;EACd,OAAO,MAAM;EACb,YAAY,MAAM;CACtB;AACJ,CAAC,CACL;AAIA,MAAM,4BAA4BA,mBAAE,OAAO;CACvC,YAAYA,mBAAE,OAAO;CACrB,WAAWA,mBAAE,OAAO;AACxB,CAAC;AAID,SAAgB,qBACZ,OACA,QACA,MACF;CACE,OAAO;EACH,OAAO,sBAAsB,MAAM,YAAY,OAAO,MAAM,CAAC;EAC7D,KAAK,sBAAsB,MAAM,WAAW,OAAO,QAAQ,IAAI,CAAC;CACpE;AACJ;AAIA,SAAgB,0BAA0B,QAAmB,MAAsB;CAC/E,OAAOA,mBAAE,KACLA,mBAAE,OAAO;EACL,QAAQA,mBAAE,OAAO;EACjB,OAAOA,mBAAE,OAAO;EAChB,SAASA,mBAAE,OAAO;EAClB,MAAMA,mBAAE,MAAM,yBAAyB;EACvC,MAAMA,mBAAE,MAAM,yBAAyB;CAC3C,CAAC,GACDA,mBAAE,WAAW,OAAO;EAChB,GAAG;EACH,SAAS,EAAE,QAAQ,SAAS;EAC5B,MAAM,EAAE,KAAK,KAAK,UAAU,qBAAqB,OAAO,QAAQ,IAAI,CAAC;EACrE,MAAM,EAAE,KAAK,KAAK,UAAU,qBAAqB,OAAO,QAAQ,IAAI,CAAC;CACzE,EAAE,CACN;AACJ"}