tapimo 0.7.1 → 0.8.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 (786) hide show
  1. package/README.md +10 -7
  2. package/dist/ApiKey.d.ts +3 -0
  3. package/dist/ApiKey.d.ts.map +1 -1
  4. package/dist/ApiKey.js +10 -0
  5. package/dist/ApiKey.js.map +1 -1
  6. package/dist/ApiKeys.d.ts +29 -8
  7. package/dist/ApiKeys.d.ts.map +1 -1
  8. package/dist/ApiKeys.js +24 -5
  9. package/dist/ApiKeys.js.map +1 -1
  10. package/dist/App.d.ts +20680 -15487
  11. package/dist/App.d.ts.map +1 -1
  12. package/dist/App.js +250 -129
  13. package/dist/App.js.map +1 -1
  14. package/dist/Assets.d.ts +10 -0
  15. package/dist/Assets.d.ts.map +1 -1
  16. package/dist/Assets.js +17 -4
  17. package/dist/Assets.js.map +1 -1
  18. package/dist/Scope.d.ts +19 -8
  19. package/dist/Scope.d.ts.map +1 -1
  20. package/dist/Scope.js +25 -9
  21. package/dist/Scope.js.map +1 -1
  22. package/dist/Webhooks.d.ts +1 -1
  23. package/dist/admin/App.d.ts +667 -76
  24. package/dist/admin/App.d.ts.map +1 -1
  25. package/dist/admin/App.js +12 -2
  26. package/dist/admin/App.js.map +1 -1
  27. package/dist/admin/apps/api-keys.d.ts +107 -11
  28. package/dist/admin/apps/api-keys.d.ts.map +1 -1
  29. package/dist/admin/apps/api-keys.js +145 -32
  30. package/dist/admin/apps/api-keys.js.map +1 -1
  31. package/dist/admin/apps/earn-vaults.d.ts +1069 -0
  32. package/dist/admin/apps/earn-vaults.d.ts.map +1 -0
  33. package/dist/admin/apps/earn-vaults.js +409 -0
  34. package/dist/admin/apps/earn-vaults.js.map +1 -0
  35. package/dist/admin/apps/organizations.d.ts +2 -0
  36. package/dist/admin/apps/organizations.d.ts.map +1 -1
  37. package/dist/admin/apps/verified-tokens.d.ts +74 -74
  38. package/dist/admin/ui.generated.d.ts +1 -1
  39. package/dist/admin/ui.generated.d.ts.map +1 -1
  40. package/dist/admin/ui.generated.js +99 -43
  41. package/dist/admin/ui.generated.js.map +1 -1
  42. package/dist/analytics/Analytics.d.ts +4 -0
  43. package/dist/analytics/Analytics.d.ts.map +1 -1
  44. package/dist/analytics/Analytics.js +21 -2
  45. package/dist/analytics/Analytics.js.map +1 -1
  46. package/dist/analytics/tables/requestEvents.d.ts +22 -1
  47. package/dist/analytics/tables/requestEvents.d.ts.map +1 -1
  48. package/dist/analytics/tables/requestEvents.js +59 -39
  49. package/dist/analytics/tables/requestEvents.js.map +1 -1
  50. package/dist/apps/Zones.d.ts +8335 -0
  51. package/dist/apps/Zones.d.ts.map +1 -0
  52. package/dist/apps/Zones.js +38 -0
  53. package/dist/apps/Zones.js.map +1 -0
  54. package/dist/apps/data/App.d.ts +5666 -3934
  55. package/dist/apps/data/App.d.ts.map +1 -1
  56. package/dist/apps/data/App.js +90 -22
  57. package/dist/apps/data/App.js.map +1 -1
  58. package/dist/apps/data/FxOracle.d.ts +1 -1
  59. package/dist/apps/data/FxOracle.d.ts.map +1 -1
  60. package/dist/apps/data/index.d.ts +0 -1
  61. package/dist/apps/data/index.d.ts.map +1 -1
  62. package/dist/apps/data/index.js +0 -1
  63. package/dist/apps/data/index.js.map +1 -1
  64. package/dist/apps/data/routes/activities.d.ts +56 -56
  65. package/dist/apps/data/routes/activities.d.ts.map +1 -1
  66. package/dist/apps/data/routes/activities.js +130 -65
  67. package/dist/apps/data/routes/activities.js.map +1 -1
  68. package/dist/apps/data/routes/addresses.d.ts +65 -65
  69. package/dist/apps/data/routes/balances.d.ts +14 -14
  70. package/dist/apps/data/routes/balances.js +5 -5
  71. package/dist/apps/data/routes/balances.js.map +1 -1
  72. package/dist/apps/data/routes/blocks.d.ts +39 -39
  73. package/dist/apps/data/routes/coingecko.d.ts +54 -54
  74. package/dist/apps/data/routes/coingecko.d.ts.map +1 -1
  75. package/dist/apps/data/routes/coingecko.js +62 -35
  76. package/dist/apps/data/routes/coingecko.js.map +1 -1
  77. package/dist/apps/data/routes/earn.d.ts +2574 -0
  78. package/dist/apps/data/routes/earn.d.ts.map +1 -0
  79. package/dist/apps/data/routes/earn.js +1574 -0
  80. package/dist/apps/data/routes/earn.js.map +1 -0
  81. package/dist/apps/data/routes/exchanges.d.ts +1626 -719
  82. package/dist/apps/data/routes/exchanges.d.ts.map +1 -1
  83. package/dist/apps/data/routes/exchanges.js +656 -193
  84. package/dist/apps/data/routes/exchanges.js.map +1 -1
  85. package/dist/apps/data/routes/fee-amm.d.ts +108 -108
  86. package/dist/apps/data/routes/fee-amm.d.ts.map +1 -1
  87. package/dist/apps/data/routes/fee-amm.js +59 -8
  88. package/dist/apps/data/routes/fee-amm.js.map +1 -1
  89. package/dist/apps/data/routes/indexer.d.ts +35 -35
  90. package/dist/apps/data/routes/indexer.d.ts.map +1 -1
  91. package/dist/apps/data/routes/indexer.js +23 -3
  92. package/dist/apps/data/routes/indexer.js.map +1 -1
  93. package/dist/apps/data/routes/receipts.d.ts +33 -33
  94. package/dist/apps/data/routes/receipts.d.ts.map +1 -1
  95. package/dist/apps/data/routes/receipts.js +11 -11
  96. package/dist/apps/data/routes/receipts.js.map +1 -1
  97. package/dist/apps/data/routes/rpc.d.ts +6 -6
  98. package/dist/apps/data/routes/rpc.d.ts.map +1 -1
  99. package/dist/apps/data/routes/rpc.js +214 -22
  100. package/dist/apps/data/routes/rpc.js.map +1 -1
  101. package/dist/apps/data/routes/tokenlist.d.ts +1 -1
  102. package/dist/apps/data/routes/tokenlist.d.ts.map +1 -1
  103. package/dist/apps/data/routes/tokenlist.js +39 -8
  104. package/dist/apps/data/routes/tokenlist.js.map +1 -1
  105. package/dist/apps/data/routes/tokens.d.ts +115 -87
  106. package/dist/apps/data/routes/tokens.d.ts.map +1 -1
  107. package/dist/apps/data/routes/tokens.js +194 -91
  108. package/dist/apps/data/routes/tokens.js.map +1 -1
  109. package/dist/apps/data/routes/transactions.d.ts +54 -54
  110. package/dist/apps/data/routes/transactions.d.ts.map +1 -1
  111. package/dist/apps/data/routes/transactions.js +78 -39
  112. package/dist/apps/data/routes/transactions.js.map +1 -1
  113. package/dist/apps/data/routes/transfers.d.ts +76 -27
  114. package/dist/apps/data/routes/transfers.d.ts.map +1 -1
  115. package/dist/apps/data/routes/transfers.js +165 -67
  116. package/dist/apps/data/routes/transfers.js.map +1 -1
  117. package/dist/apps/data/routes/valuation.d.ts +42 -42
  118. package/dist/apps/data/routes/valuation.js +2 -2
  119. package/dist/apps/data/routes/valuation.js.map +1 -1
  120. package/dist/apps/data/routes/verified-tokens.d.ts +36 -36
  121. package/dist/apps/data/routes/webhooks.d.ts +370 -368
  122. package/dist/apps/data/routes/webhooks.d.ts.map +1 -1
  123. package/dist/apps/data/routes/webhooks.js +161 -59
  124. package/dist/apps/data/routes/webhooks.js.map +1 -1
  125. package/dist/apps/data/routes/zones.d.ts +281 -0
  126. package/dist/apps/data/routes/zones.d.ts.map +1 -0
  127. package/dist/apps/data/routes/zones.js +252 -0
  128. package/dist/apps/data/routes/zones.js.map +1 -0
  129. package/dist/apps/docs/reference.js +6 -5
  130. package/dist/apps/docs/reference.js.map +1 -1
  131. package/dist/apps/funding/Access.d.ts +16 -0
  132. package/dist/apps/funding/Access.d.ts.map +1 -0
  133. package/dist/apps/funding/Access.js +22 -0
  134. package/dist/apps/funding/Access.js.map +1 -0
  135. package/dist/apps/funding/App.d.ts +3183 -0
  136. package/dist/apps/funding/App.d.ts.map +1 -0
  137. package/dist/apps/funding/App.js +46 -0
  138. package/dist/apps/funding/App.js.map +1 -0
  139. package/dist/apps/funding/Inventory.d.ts +5 -0
  140. package/dist/apps/funding/Inventory.d.ts.map +1 -0
  141. package/dist/apps/funding/Inventory.js +25 -0
  142. package/dist/apps/funding/Inventory.js.map +1 -0
  143. package/dist/apps/funding/ProviderAttempts.d.ts +5 -0
  144. package/dist/apps/funding/ProviderAttempts.d.ts.map +1 -0
  145. package/dist/apps/funding/ProviderAttempts.js +24 -0
  146. package/dist/apps/funding/ProviderAttempts.js.map +1 -0
  147. package/dist/apps/funding/index.d.ts +2 -0
  148. package/dist/apps/funding/index.d.ts.map +1 -0
  149. package/dist/apps/funding/index.js +2 -0
  150. package/dist/apps/funding/index.js.map +1 -0
  151. package/dist/apps/funding/routes/chains.d.ts +169 -0
  152. package/dist/apps/funding/routes/chains.d.ts.map +1 -0
  153. package/dist/apps/funding/routes/chains.js +80 -0
  154. package/dist/apps/funding/routes/chains.js.map +1 -0
  155. package/dist/apps/funding/routes/deposit-addresses.d.ts +2388 -0
  156. package/dist/apps/funding/routes/deposit-addresses.d.ts.map +1 -0
  157. package/dist/apps/funding/routes/deposit-addresses.js +860 -0
  158. package/dist/apps/funding/routes/deposit-addresses.js.map +1 -0
  159. package/dist/apps/funding/routes/providers.d.ts +91 -0
  160. package/dist/apps/funding/routes/providers.d.ts.map +1 -0
  161. package/dist/apps/funding/routes/providers.js +56 -0
  162. package/dist/apps/funding/routes/providers.js.map +1 -0
  163. package/dist/apps/{data/routes/funding.d.ts → funding/routes/quotes.d.ts} +26 -396
  164. package/dist/apps/funding/routes/quotes.d.ts.map +1 -0
  165. package/dist/apps/funding/routes/quotes.js +188 -0
  166. package/dist/apps/funding/routes/quotes.js.map +1 -0
  167. package/dist/apps/funding/routes/transfers.d.ts +1999 -0
  168. package/dist/apps/funding/routes/transfers.d.ts.map +1 -0
  169. package/dist/apps/funding/routes/transfers.js +614 -0
  170. package/dist/apps/funding/routes/transfers.js.map +1 -0
  171. package/dist/apps/index.d.ts +3 -1
  172. package/dist/apps/index.d.ts.map +1 -1
  173. package/dist/apps/index.js +3 -1
  174. package/dist/apps/index.js.map +1 -1
  175. package/dist/apps/management/App.d.ts +839 -574
  176. package/dist/apps/management/App.d.ts.map +1 -1
  177. package/dist/apps/management/Billing.d.ts +8 -0
  178. package/dist/apps/management/Billing.d.ts.map +1 -1
  179. package/dist/apps/management/Billing.js +12 -0
  180. package/dist/apps/management/Billing.js.map +1 -1
  181. package/dist/apps/management/Error.d.ts +12 -0
  182. package/dist/apps/management/Error.d.ts.map +1 -0
  183. package/dist/apps/management/Error.js +10 -0
  184. package/dist/apps/management/Error.js.map +1 -0
  185. package/dist/apps/management/routes/api-keys.d.ts +296 -19
  186. package/dist/apps/management/routes/api-keys.d.ts.map +1 -1
  187. package/dist/apps/management/routes/api-keys.js +77 -9
  188. package/dist/apps/management/routes/api-keys.js.map +1 -1
  189. package/dist/apps/management/routes/billing.d.ts +119 -119
  190. package/dist/apps/management/routes/faucet.d.ts +35 -35
  191. package/dist/apps/management/routes/invitations.d.ts +17 -17
  192. package/dist/apps/management/routes/invitations.d.ts.map +1 -1
  193. package/dist/apps/management/routes/invitations.js +4 -10
  194. package/dist/apps/management/routes/invitations.js.map +1 -1
  195. package/dist/apps/management/routes/invite-links.d.ts +38 -38
  196. package/dist/apps/management/routes/me.d.ts +6 -6
  197. package/dist/apps/management/routes/members.d.ts +69 -69
  198. package/dist/apps/management/routes/orgs.d.ts +16 -16
  199. package/dist/apps/management/routes/orgs.d.ts.map +1 -1
  200. package/dist/apps/management/routes/orgs.js +2 -8
  201. package/dist/apps/management/routes/orgs.js.map +1 -1
  202. package/dist/apps/management/routes/projects.d.ts +19 -19
  203. package/dist/apps/management/routes/scopes.d.ts +1 -1
  204. package/dist/apps/management/routes/scopes.js +2 -2
  205. package/dist/apps/management/routes/scopes.js.map +1 -1
  206. package/dist/apps/management/routes/usage.d.ts +72 -72
  207. package/dist/apps/management/routes/verified-token-requests.d.ts +18 -18
  208. package/dist/apps/management/routes/webhooks.d.ts +122 -122
  209. package/dist/apps/management/routes/webhooks.d.ts.map +1 -1
  210. package/dist/apps/management/routes/webhooks.js +15 -3
  211. package/dist/apps/management/routes/webhooks.js.map +1 -1
  212. package/dist/apps/mcp.d.ts +2 -3
  213. package/dist/apps/mcp.d.ts.map +1 -1
  214. package/dist/apps/mcp.js +16 -14
  215. package/dist/apps/mcp.js.map +1 -1
  216. package/dist/apps/metadata.d.ts +4 -0
  217. package/dist/apps/metadata.d.ts.map +1 -1
  218. package/dist/apps/metadata.js +10 -0
  219. package/dist/apps/metadata.js.map +1 -1
  220. package/dist/apps/mpp/App.d.ts +57 -58
  221. package/dist/apps/mpp/App.d.ts.map +1 -1
  222. package/dist/apps/mpp/App.js +192 -27
  223. package/dist/apps/mpp/App.js.map +1 -1
  224. package/dist/apps/mpp/Mpp.d.ts +0 -20
  225. package/dist/apps/mpp/Mpp.d.ts.map +1 -1
  226. package/dist/apps/mpp/Mpp.js +0 -24
  227. package/dist/apps/mpp/Mpp.js.map +1 -1
  228. package/dist/apps/mpp/internal/Adapter.d.ts +40 -0
  229. package/dist/apps/mpp/internal/Adapter.d.ts.map +1 -0
  230. package/dist/apps/mpp/internal/Adapter.js +66 -0
  231. package/dist/apps/mpp/internal/Adapter.js.map +1 -0
  232. package/dist/apps/mpp/internal/Error.d.ts +4 -0
  233. package/dist/apps/mpp/internal/Error.d.ts.map +1 -0
  234. package/dist/apps/mpp/internal/Error.js +41 -0
  235. package/dist/apps/mpp/internal/Error.js.map +1 -0
  236. package/dist/apps/mpp/internal/Idempotency.d.ts +33 -0
  237. package/dist/apps/mpp/internal/Idempotency.d.ts.map +1 -0
  238. package/dist/apps/mpp/internal/Idempotency.js +28 -0
  239. package/dist/apps/mpp/internal/Idempotency.js.map +1 -0
  240. package/dist/apps/mpp/internal/Policy.d.ts +46 -0
  241. package/dist/apps/mpp/internal/Policy.d.ts.map +1 -0
  242. package/dist/apps/mpp/internal/Policy.js +57 -0
  243. package/dist/apps/mpp/internal/Policy.js.map +1 -0
  244. package/dist/apps/mpp/internal/ScreenManager.d.ts +27 -0
  245. package/dist/apps/mpp/internal/ScreenManager.d.ts.map +1 -0
  246. package/dist/apps/mpp/internal/ScreenManager.js +18 -0
  247. package/dist/apps/mpp/internal/ScreenManager.js.map +1 -0
  248. package/dist/apps/mpp/internal/Screening.d.ts +35 -0
  249. package/dist/apps/mpp/internal/Screening.d.ts.map +1 -0
  250. package/dist/apps/mpp/internal/Screening.js +20 -0
  251. package/dist/apps/mpp/internal/Screening.js.map +1 -0
  252. package/dist/apps/mpp/internal/Sponsorship.d.ts +36 -0
  253. package/dist/apps/mpp/internal/Sponsorship.d.ts.map +1 -0
  254. package/dist/apps/mpp/internal/Sponsorship.js +103 -0
  255. package/dist/apps/mpp/internal/Sponsorship.js.map +1 -0
  256. package/dist/apps/mpp/internal/Utils.d.ts +7 -0
  257. package/dist/apps/mpp/internal/Utils.d.ts.map +1 -0
  258. package/dist/apps/mpp/internal/Utils.js +24 -0
  259. package/dist/apps/mpp/internal/Utils.js.map +1 -0
  260. package/dist/apps/relay/App.js +183 -23
  261. package/dist/apps/relay/App.js.map +1 -1
  262. package/dist/apps/relay/Sponsorships.d.ts +4 -0
  263. package/dist/apps/relay/Sponsorships.d.ts.map +1 -1
  264. package/dist/apps/relay/Sponsorships.js +15 -6
  265. package/dist/apps/relay/Sponsorships.js.map +1 -1
  266. package/dist/cloudflare.d.ts +50 -0
  267. package/dist/cloudflare.d.ts.map +1 -1
  268. package/dist/cloudflare.js +178 -0
  269. package/dist/cloudflare.js.map +1 -1
  270. package/dist/db/Db.d.ts +22 -0
  271. package/dist/db/Db.d.ts.map +1 -1
  272. package/dist/db/Db.js +379 -0
  273. package/dist/db/Db.js.map +1 -1
  274. package/dist/db/Schema.d.ts +933 -1
  275. package/dist/db/Schema.d.ts.map +1 -1
  276. package/dist/db/Schema.js +289 -1
  277. package/dist/db/Schema.js.map +1 -1
  278. package/dist/db/tables/earnVaults.d.ts +68 -0
  279. package/dist/db/tables/earnVaults.d.ts.map +1 -0
  280. package/dist/db/tables/earnVaults.js +72 -0
  281. package/dist/db/tables/earnVaults.js.map +1 -0
  282. package/dist/db/tables/fundingCatalog.d.ts +56 -0
  283. package/dist/db/tables/fundingCatalog.d.ts.map +1 -0
  284. package/dist/db/tables/fundingCatalog.js +85 -0
  285. package/dist/db/tables/fundingCatalog.js.map +1 -0
  286. package/dist/db/tables/fundingDepositAddresses.d.ts +172 -0
  287. package/dist/db/tables/fundingDepositAddresses.d.ts.map +1 -0
  288. package/dist/db/tables/fundingDepositAddresses.js +218 -0
  289. package/dist/db/tables/fundingDepositAddresses.js.map +1 -0
  290. package/dist/db/tables/fundingDepositRequestObservations.d.ts +45 -0
  291. package/dist/db/tables/fundingDepositRequestObservations.d.ts.map +1 -0
  292. package/dist/db/tables/fundingDepositRequestObservations.js +46 -0
  293. package/dist/db/tables/fundingDepositRequestObservations.js.map +1 -0
  294. package/dist/db/tables/fundingDeposits.d.ts +171 -0
  295. package/dist/db/tables/fundingDeposits.d.ts.map +1 -0
  296. package/dist/db/tables/fundingDeposits.js +182 -0
  297. package/dist/db/tables/fundingDeposits.js.map +1 -0
  298. package/dist/db/tables/fundingIdempotency.d.ts +91 -0
  299. package/dist/db/tables/fundingIdempotency.d.ts.map +1 -0
  300. package/dist/db/tables/fundingIdempotency.js +103 -0
  301. package/dist/db/tables/fundingIdempotency.js.map +1 -0
  302. package/dist/db/tables/fundingTransferEvents.d.ts +12 -0
  303. package/dist/db/tables/fundingTransferEvents.d.ts.map +1 -0
  304. package/dist/db/tables/fundingTransferEvents.js +18 -0
  305. package/dist/db/tables/fundingTransferEvents.js.map +1 -0
  306. package/dist/db/tables/fundingTransferTransactions.d.ts +15 -0
  307. package/dist/db/tables/fundingTransferTransactions.d.ts.map +1 -0
  308. package/dist/db/tables/fundingTransferTransactions.js +27 -0
  309. package/dist/db/tables/fundingTransferTransactions.js.map +1 -0
  310. package/dist/db/tables/fundingTransfers.d.ts +82 -0
  311. package/dist/db/tables/fundingTransfers.d.ts.map +1 -0
  312. package/dist/db/tables/fundingTransfers.js +89 -0
  313. package/dist/db/tables/fundingTransfers.js.map +1 -0
  314. package/dist/db/tables/organizations.d.ts +8 -0
  315. package/dist/db/tables/organizations.d.ts.map +1 -1
  316. package/dist/db/tables/organizations.js +16 -0
  317. package/dist/db/tables/organizations.js.map +1 -1
  318. package/dist/db/tables/projects.d.ts +8 -0
  319. package/dist/db/tables/projects.d.ts.map +1 -1
  320. package/dist/db/tables/projects.js +16 -0
  321. package/dist/db/tables/projects.js.map +1 -1
  322. package/dist/db/tables/requestUsage.d.ts +13 -0
  323. package/dist/db/tables/requestUsage.d.ts.map +1 -1
  324. package/dist/db/tables/requestUsage.js +16 -0
  325. package/dist/db/tables/requestUsage.js.map +1 -1
  326. package/dist/db/tables/sponsoredTransactions.d.ts +2 -2
  327. package/dist/db/tables/sponsoredTransactions.d.ts.map +1 -1
  328. package/dist/db/tables/sponsoredTransactions.js +1 -1
  329. package/dist/db/tables/sponsoredTransactions.js.map +1 -1
  330. package/dist/db/tables/users.d.ts +8 -0
  331. package/dist/db/tables/users.d.ts.map +1 -1
  332. package/dist/db/tables/users.js +16 -0
  333. package/dist/db/tables/users.js.map +1 -1
  334. package/dist/db/tables/verifiedTokens.d.ts +14 -7
  335. package/dist/db/tables/verifiedTokens.d.ts.map +1 -1
  336. package/dist/db/tables/verifiedTokens.js +9 -7
  337. package/dist/db/tables/verifiedTokens.js.map +1 -1
  338. package/dist/db/tables/webhookSubscriptions.d.ts +31 -1
  339. package/dist/db/tables/webhookSubscriptions.d.ts.map +1 -1
  340. package/dist/db/tables/webhookSubscriptions.js +24 -3
  341. package/dist/db/tables/webhookSubscriptions.js.map +1 -1
  342. package/dist/handlers/relay.js +108 -108
  343. package/dist/handlers/relay.js.map +1 -1
  344. package/dist/internal/Auth.d.ts +37 -11
  345. package/dist/internal/Auth.d.ts.map +1 -1
  346. package/dist/internal/Auth.js +75 -16
  347. package/dist/internal/Auth.js.map +1 -1
  348. package/dist/internal/Cache.d.ts.map +1 -1
  349. package/dist/internal/Cache.js +17 -11
  350. package/dist/internal/Cache.js.map +1 -1
  351. package/dist/internal/Cursor.js +1 -1
  352. package/dist/internal/Cursor.js.map +1 -1
  353. package/dist/internal/EarnRates.d.ts +89 -0
  354. package/dist/internal/EarnRates.d.ts.map +1 -0
  355. package/dist/internal/EarnRates.js +266 -0
  356. package/dist/internal/EarnRates.js.map +1 -0
  357. package/dist/internal/EarnVaults.d.ts +171 -0
  358. package/dist/internal/EarnVaults.d.ts.map +1 -0
  359. package/dist/internal/EarnVaults.js +547 -0
  360. package/dist/internal/EarnVaults.js.map +1 -0
  361. package/dist/internal/EdgeCache.d.ts +10 -3
  362. package/dist/internal/EdgeCache.d.ts.map +1 -1
  363. package/dist/internal/EdgeCache.js +43 -11
  364. package/dist/internal/EdgeCache.js.map +1 -1
  365. package/dist/internal/Id.d.ts +11 -0
  366. package/dist/internal/Id.d.ts.map +1 -1
  367. package/dist/internal/Id.js +13 -0
  368. package/dist/internal/Id.js.map +1 -1
  369. package/dist/internal/Idempotency.d.ts +83 -0
  370. package/dist/internal/Idempotency.d.ts.map +1 -0
  371. package/dist/internal/Idempotency.js +113 -0
  372. package/dist/internal/Idempotency.js.map +1 -0
  373. package/dist/internal/IpAllowlist.d.ts +15 -0
  374. package/dist/internal/IpAllowlist.d.ts.map +1 -0
  375. package/dist/internal/IpAllowlist.js +27 -0
  376. package/dist/internal/IpAllowlist.js.map +1 -0
  377. package/dist/internal/Log.d.ts +64 -9
  378. package/dist/internal/Log.d.ts.map +1 -1
  379. package/dist/internal/Log.js +29 -7
  380. package/dist/internal/Log.js.map +1 -1
  381. package/dist/internal/MetricSink.d.ts.map +1 -1
  382. package/dist/internal/MetricSink.js +47 -1
  383. package/dist/internal/MetricSink.js.map +1 -1
  384. package/dist/internal/OpenApi.d.ts +2 -2
  385. package/dist/internal/OpenApi.d.ts.map +1 -1
  386. package/dist/internal/OpenApi.js +4 -1
  387. package/dist/internal/OpenApi.js.map +1 -1
  388. package/dist/internal/Provider.d.ts +14 -0
  389. package/dist/internal/Provider.d.ts.map +1 -0
  390. package/dist/internal/Provider.js +5 -0
  391. package/dist/internal/Provider.js.map +1 -0
  392. package/dist/internal/Schema.d.ts +6 -1
  393. package/dist/internal/Schema.d.ts.map +1 -1
  394. package/dist/internal/Schema.js +20 -11
  395. package/dist/internal/Schema.js.map +1 -1
  396. package/dist/internal/Store.d.ts +6 -0
  397. package/dist/internal/Store.d.ts.map +1 -1
  398. package/dist/internal/Store.js +35 -0
  399. package/dist/internal/Store.js.map +1 -1
  400. package/dist/internal/Tidx.d.ts +49 -24
  401. package/dist/internal/Tidx.d.ts.map +1 -1
  402. package/dist/internal/Tidx.js +90 -12
  403. package/dist/internal/Tidx.js.map +1 -1
  404. package/dist/internal/Viem.d.ts +90 -65
  405. package/dist/internal/Viem.d.ts.map +1 -1
  406. package/dist/internal/Viem.js +90 -12
  407. package/dist/internal/Viem.js.map +1 -1
  408. package/dist/internal/WebhookDestination.d.ts.map +1 -1
  409. package/dist/internal/WebhookDestination.js +34 -28
  410. package/dist/internal/WebhookDestination.js.map +1 -1
  411. package/dist/internal/Webhooks.d.ts +9 -0
  412. package/dist/internal/Webhooks.d.ts.map +1 -1
  413. package/dist/internal/Webhooks.js +15 -10
  414. package/dist/internal/Webhooks.js.map +1 -1
  415. package/dist/internal/exchange/Provider.d.ts +219 -0
  416. package/dist/internal/exchange/Provider.d.ts.map +1 -0
  417. package/dist/internal/exchange/Provider.js +117 -0
  418. package/dist/internal/exchange/Provider.js.map +1 -0
  419. package/dist/internal/exchange/index.d.ts +2 -0
  420. package/dist/internal/exchange/index.d.ts.map +1 -0
  421. package/dist/internal/exchange/index.js +2 -0
  422. package/dist/internal/exchange/index.js.map +1 -0
  423. package/dist/internal/exchange/providers/uniswap.d.ts +57 -0
  424. package/dist/internal/exchange/providers/uniswap.d.ts.map +1 -0
  425. package/dist/internal/exchange/providers/uniswap.js +553 -0
  426. package/dist/internal/exchange/providers/uniswap.js.map +1 -0
  427. package/dist/internal/funding/Action.d.ts +55 -0
  428. package/dist/internal/funding/Action.d.ts.map +1 -0
  429. package/dist/internal/funding/Action.js +74 -0
  430. package/dist/internal/funding/Action.js.map +1 -0
  431. package/dist/internal/funding/Catalog.d.ts +107 -0
  432. package/dist/internal/funding/Catalog.d.ts.map +1 -0
  433. package/dist/internal/funding/Catalog.js +270 -0
  434. package/dist/internal/funding/Catalog.js.map +1 -0
  435. package/dist/internal/funding/Chain.d.ts +76 -0
  436. package/dist/internal/funding/Chain.d.ts.map +1 -0
  437. package/dist/internal/funding/Chain.js +38 -0
  438. package/dist/internal/funding/Chain.js.map +1 -0
  439. package/dist/internal/funding/Deposit.d.ts +408 -0
  440. package/dist/internal/funding/Deposit.d.ts.map +1 -0
  441. package/dist/internal/funding/Deposit.js +318 -0
  442. package/dist/internal/funding/Deposit.js.map +1 -0
  443. package/dist/internal/funding/DepositAddress.d.ts +345 -0
  444. package/dist/internal/funding/DepositAddress.d.ts.map +1 -0
  445. package/dist/internal/funding/DepositAddress.js +189 -0
  446. package/dist/internal/funding/DepositAddress.js.map +1 -0
  447. package/dist/internal/funding/Evidence.d.ts +48 -0
  448. package/dist/internal/funding/Evidence.d.ts.map +1 -0
  449. package/dist/internal/funding/Evidence.js +315 -0
  450. package/dist/internal/funding/Evidence.js.map +1 -0
  451. package/dist/internal/funding/Provider.d.ts +1288 -0
  452. package/dist/internal/funding/Provider.d.ts.map +1 -0
  453. package/dist/internal/funding/Provider.js +1086 -0
  454. package/dist/internal/funding/Provider.js.map +1 -0
  455. package/dist/internal/funding/Reconciliation.d.ts +127 -0
  456. package/dist/internal/funding/Reconciliation.d.ts.map +1 -0
  457. package/dist/internal/funding/Reconciliation.js +885 -0
  458. package/dist/internal/funding/Reconciliation.js.map +1 -0
  459. package/dist/internal/funding/Route.d.ts +21 -0
  460. package/dist/internal/funding/Route.d.ts.map +1 -0
  461. package/dist/internal/funding/Route.js +5 -0
  462. package/dist/internal/funding/Route.js.map +1 -0
  463. package/dist/internal/funding/SourceObservation.d.ts +108 -0
  464. package/dist/internal/funding/SourceObservation.d.ts.map +1 -0
  465. package/dist/internal/funding/SourceObservation.js +143 -0
  466. package/dist/internal/funding/SourceObservation.js.map +1 -0
  467. package/dist/internal/funding/Subsidy.d.ts +113 -0
  468. package/dist/internal/funding/Subsidy.d.ts.map +1 -0
  469. package/dist/internal/funding/Subsidy.js +138 -0
  470. package/dist/internal/funding/Subsidy.js.map +1 -0
  471. package/dist/internal/funding/Token.d.ts +41 -0
  472. package/dist/internal/funding/Token.d.ts.map +1 -0
  473. package/dist/internal/funding/Token.js +22 -0
  474. package/dist/internal/funding/Token.js.map +1 -0
  475. package/dist/internal/funding/Transfer.d.ts +643 -0
  476. package/dist/internal/funding/Transfer.d.ts.map +1 -0
  477. package/dist/internal/funding/Transfer.js +332 -0
  478. package/dist/internal/funding/Transfer.js.map +1 -0
  479. package/dist/internal/funding/index.d.ts +14 -0
  480. package/dist/internal/funding/index.d.ts.map +1 -0
  481. package/dist/internal/funding/index.js +14 -0
  482. package/dist/internal/funding/index.js.map +1 -0
  483. package/dist/internal/funding/providers/across.d.ts +21 -0
  484. package/dist/internal/funding/providers/across.d.ts.map +1 -0
  485. package/dist/internal/funding/providers/across.js +117 -0
  486. package/dist/internal/funding/providers/across.js.map +1 -0
  487. package/dist/internal/funding/providers/relay.d.ts +88 -0
  488. package/dist/internal/funding/providers/relay.d.ts.map +1 -0
  489. package/dist/internal/funding/providers/relay.js +871 -0
  490. package/dist/internal/funding/providers/relay.js.map +1 -0
  491. package/dist/internal/funding/providers/rhino.d.ts +15 -0
  492. package/dist/internal/funding/providers/rhino.d.ts.map +1 -0
  493. package/dist/internal/funding/providers/rhino.js +116 -0
  494. package/dist/internal/funding/providers/rhino.js.map +1 -0
  495. package/dist/internal/funding/providers/squid.d.ts +19 -0
  496. package/dist/internal/funding/providers/squid.d.ts.map +1 -0
  497. package/dist/internal/funding/providers/squid.js +120 -0
  498. package/dist/internal/funding/providers/squid.js.map +1 -0
  499. package/dist/internal/funding/providers/symbiosis.d.ts +20 -0
  500. package/dist/internal/funding/providers/symbiosis.d.ts.map +1 -0
  501. package/dist/internal/funding/providers/symbiosis.js +176 -0
  502. package/dist/internal/funding/providers/symbiosis.js.map +1 -0
  503. package/dist/internal/index.d.ts +5 -1
  504. package/dist/internal/index.d.ts.map +1 -1
  505. package/dist/internal/index.js +5 -1
  506. package/dist/internal/index.js.map +1 -1
  507. package/dist/internal/webhookDestinations/url.js +61 -57
  508. package/dist/internal/webhookDestinations/url.js.map +1 -1
  509. package/dist/providers/index.d.ts +43 -0
  510. package/dist/providers/index.d.ts.map +1 -0
  511. package/dist/providers/index.js +19 -0
  512. package/dist/providers/index.js.map +1 -0
  513. package/package.json +10 -5
  514. package/src/ApiKey.test.ts +35 -0
  515. package/src/ApiKey.ts +27 -0
  516. package/src/ApiKeys.test.ts +40 -7
  517. package/src/ApiKeys.ts +46 -10
  518. package/src/App.test.ts +108 -15
  519. package/src/App.ts +296 -138
  520. package/src/Assets.ts +29 -4
  521. package/src/Client.test-d.ts +809 -37
  522. package/src/Scope.test.ts +19 -0
  523. package/src/Scope.ts +28 -11
  524. package/src/Webhooks.test.ts +25 -0
  525. package/src/Webhooks.ts +1 -1
  526. package/src/admin/App.test.ts +9 -2
  527. package/src/admin/App.ts +32 -9
  528. package/src/admin/apps/api-keys.test.ts +190 -22
  529. package/src/admin/apps/api-keys.ts +170 -28
  530. package/src/admin/apps/earn-vaults.test.ts +338 -0
  531. package/src/admin/apps/earn-vaults.ts +572 -0
  532. package/src/admin/apps/scopes.test.ts +16 -1
  533. package/src/admin/ui/plugin.ts +2 -2
  534. package/src/admin/ui/src/components/EarnVaultForm.tsx +137 -0
  535. package/src/admin/ui/src/components/MobileProfile.tsx +2 -2
  536. package/src/admin/ui/src/components/Page.tsx +1 -1
  537. package/src/admin/ui/src/components/ThemeToggle.tsx +1 -1
  538. package/src/admin/ui/src/lib/api-keys.ts +37 -7
  539. package/src/admin/ui/src/lib/client.ts +1 -1
  540. package/src/admin/ui/src/lib/config.ts +1 -1
  541. package/src/admin/ui/src/lib/early-access.ts +8 -9
  542. package/src/admin/ui/src/lib/earn-vaults.ts +207 -0
  543. package/src/admin/ui/src/lib/format.ts +13 -0
  544. package/src/admin/ui/src/lib/organizations.test.ts +14 -4
  545. package/src/admin/ui/src/lib/organizations.ts +7 -1
  546. package/src/admin/ui/src/lib/response.ts +22 -0
  547. package/src/admin/ui/src/lib/scopes.test.ts +19 -11
  548. package/src/admin/ui/src/lib/scopes.ts +28 -7
  549. package/src/admin/ui/src/lib/verified-tokens.ts +10 -9
  550. package/src/admin/ui/src/routeTree.gen.ts +70 -7
  551. package/src/admin/ui/src/router.tsx +2 -2
  552. package/src/admin/ui/src/routes/__root.tsx +9 -8
  553. package/src/admin/ui/src/routes/api-keys.tsx +475 -64
  554. package/src/admin/ui/src/routes/early-access.tsx +5 -12
  555. package/src/admin/ui/src/routes/earn.vaults.tsx +348 -0
  556. package/src/admin/ui/src/routes/earn.vaults_.$vaultId.edit.tsx +154 -0
  557. package/src/admin/ui/src/routes/earn.vaults_.new.tsx +190 -0
  558. package/src/admin/ui/src/routes/organizations.tsx +4 -7
  559. package/src/admin/ui/src/routes/organizations_.$orgId.tsx +56 -54
  560. package/src/admin/ui/src/routes/verified-tokens.tsx +4 -4
  561. package/src/admin/ui/vite.config.ts +4 -1
  562. package/src/admin/ui.generated.ts +113 -43
  563. package/src/analytics/Analytics.test.ts +69 -10
  564. package/src/analytics/Analytics.ts +24 -1
  565. package/src/analytics/tables/requestEvents.ts +79 -37
  566. package/src/apps/Zones.test.ts +33 -0
  567. package/src/apps/Zones.ts +40 -0
  568. package/src/apps/composition.test.ts +184 -3
  569. package/src/apps/data/App.test.ts +28 -23
  570. package/src/apps/data/App.ts +95 -36
  571. package/src/apps/data/FxOracle.ts +1 -1
  572. package/src/apps/data/index.ts +0 -1
  573. package/src/apps/data/routes/activities.test.ts +82 -6
  574. package/src/apps/data/routes/activities.ts +131 -71
  575. package/src/apps/data/routes/balances.test.ts +50 -37
  576. package/src/apps/data/routes/balances.ts +5 -5
  577. package/src/apps/data/routes/blocks.test.ts +2 -0
  578. package/src/apps/data/routes/coingecko.test.ts +22 -0
  579. package/src/apps/data/routes/coingecko.ts +84 -48
  580. package/src/apps/data/routes/earn.test.ts +1391 -0
  581. package/src/apps/data/routes/earn.ts +2188 -0
  582. package/src/apps/data/routes/exchanges.test.ts +82 -33
  583. package/src/apps/data/routes/exchanges.ts +842 -227
  584. package/src/apps/data/routes/fee-amm.test.ts +4 -6
  585. package/src/apps/data/routes/fee-amm.ts +69 -12
  586. package/src/apps/data/routes/indexer.test.ts +43 -34
  587. package/src/apps/data/routes/indexer.ts +21 -3
  588. package/src/apps/data/routes/receipts.test.ts +5 -3
  589. package/src/apps/data/routes/receipts.ts +13 -11
  590. package/src/apps/data/routes/rpc.test.ts +446 -28
  591. package/src/apps/data/routes/rpc.ts +245 -25
  592. package/src/apps/data/routes/tokenlist.ts +72 -19
  593. package/src/apps/data/routes/tokens.test.ts +6 -8
  594. package/src/apps/data/routes/tokens.ts +258 -86
  595. package/src/apps/data/routes/transactions.test.ts +2 -0
  596. package/src/apps/data/routes/transactions.ts +77 -42
  597. package/src/apps/data/routes/transfers.test.ts +166 -4
  598. package/src/apps/data/routes/transfers.ts +216 -78
  599. package/src/apps/data/routes/valuation.test.ts +62 -9
  600. package/src/apps/data/routes/valuation.ts +2 -2
  601. package/src/apps/data/routes/webhooks.test.ts +386 -43
  602. package/src/apps/data/routes/webhooks.ts +172 -71
  603. package/src/apps/data/routes/zones.test.ts +473 -0
  604. package/src/apps/data/routes/zones.ts +338 -0
  605. package/src/apps/docs/reference.ts +8 -6
  606. package/src/apps/funding/Access.ts +26 -0
  607. package/src/apps/funding/App.test.ts +78 -0
  608. package/src/apps/funding/App.ts +63 -0
  609. package/src/apps/funding/Inventory.ts +30 -0
  610. package/src/apps/funding/ProviderAttempts.ts +26 -0
  611. package/src/apps/funding/index.ts +1 -0
  612. package/src/apps/funding/routes/chains.test.ts +78 -0
  613. package/src/apps/funding/routes/chains.ts +101 -0
  614. package/src/apps/funding/routes/deposit-addresses.test.ts +1628 -0
  615. package/src/apps/funding/routes/deposit-addresses.ts +1015 -0
  616. package/src/apps/funding/routes/providers.test.ts +165 -0
  617. package/src/apps/funding/routes/providers.ts +73 -0
  618. package/src/apps/funding/routes/quotes.test.ts +511 -0
  619. package/src/apps/funding/routes/quotes.ts +205 -0
  620. package/src/apps/funding/routes/transfers.test.ts +1255 -0
  621. package/src/apps/funding/routes/transfers.ts +704 -0
  622. package/src/apps/index.ts +3 -1
  623. package/src/apps/management/Billing.test.ts +29 -0
  624. package/src/apps/management/Billing.ts +23 -0
  625. package/src/apps/management/Error.ts +12 -0
  626. package/src/apps/management/routes/api-keys.test.ts +103 -3
  627. package/src/apps/management/routes/api-keys.ts +98 -10
  628. package/src/apps/management/routes/invitations.ts +4 -11
  629. package/src/apps/management/routes/orgs.ts +2 -9
  630. package/src/apps/management/routes/scopes.test.ts +7 -2
  631. package/src/apps/management/routes/scopes.ts +2 -2
  632. package/src/apps/management/routes/webhooks.test.ts +6 -1
  633. package/src/apps/management/routes/webhooks.ts +15 -3
  634. package/src/apps/mcp.test.ts +17 -2
  635. package/src/apps/mcp.ts +18 -13
  636. package/src/apps/metadata.ts +12 -0
  637. package/src/apps/mpp/App.ts +276 -29
  638. package/src/apps/mpp/Mpp.test.ts +631 -26
  639. package/src/apps/mpp/Mpp.ts +0 -42
  640. package/src/apps/mpp/internal/Adapter.ts +108 -3
  641. package/src/apps/mpp/internal/Error.test.ts +33 -0
  642. package/src/apps/mpp/internal/Error.ts +44 -6
  643. package/src/apps/mpp/internal/Idempotency.test.ts +213 -0
  644. package/src/apps/mpp/internal/Idempotency.ts +59 -5
  645. package/src/apps/mpp/internal/Policy.test.ts +128 -0
  646. package/src/apps/mpp/internal/Policy.ts +98 -0
  647. package/src/apps/mpp/internal/ScreenManager.test.ts +68 -0
  648. package/src/apps/mpp/internal/ScreenManager.ts +41 -0
  649. package/src/apps/mpp/internal/Screening.ts +40 -3
  650. package/src/apps/mpp/internal/Sponsorship.ts +144 -0
  651. package/src/apps/mpp/internal/Utils.ts +30 -0
  652. package/src/apps/relay/App.test.ts +493 -62
  653. package/src/apps/relay/App.ts +233 -23
  654. package/src/apps/relay/Sponsorships.test.ts +49 -0
  655. package/src/apps/relay/Sponsorships.ts +18 -6
  656. package/src/cloudflare.ts +279 -0
  657. package/src/db/Db.ts +501 -0
  658. package/src/db/Schema.ts +349 -2
  659. package/src/db/tables/earnVaults.test.ts +185 -0
  660. package/src/db/tables/earnVaults.ts +151 -0
  661. package/src/db/tables/fundingCatalog.test.ts +108 -0
  662. package/src/db/tables/fundingCatalog.ts +157 -0
  663. package/src/db/tables/fundingDepositAddresses.test.ts +580 -0
  664. package/src/db/tables/fundingDepositAddresses.ts +404 -0
  665. package/src/db/tables/fundingDepositRequestObservations.test.ts +106 -0
  666. package/src/db/tables/fundingDepositRequestObservations.ts +99 -0
  667. package/src/db/tables/fundingDeposits.test.ts +399 -0
  668. package/src/db/tables/fundingDeposits.ts +373 -0
  669. package/src/db/tables/fundingIdempotency.test.ts +182 -0
  670. package/src/db/tables/fundingIdempotency.ts +180 -0
  671. package/src/db/tables/fundingTransferEvents.ts +28 -0
  672. package/src/db/tables/fundingTransferTransactions.test.ts +69 -0
  673. package/src/db/tables/fundingTransferTransactions.ts +37 -0
  674. package/src/db/tables/fundingTransfers.test.ts +89 -0
  675. package/src/db/tables/fundingTransfers.ts +153 -0
  676. package/src/db/tables/organizations.ts +16 -0
  677. package/src/db/tables/projects.ts +16 -0
  678. package/src/db/tables/requestUsage.ts +23 -0
  679. package/src/db/tables/sponsoredTransactions.test.ts +11 -0
  680. package/src/db/tables/sponsoredTransactions.ts +3 -3
  681. package/src/db/tables/users.ts +16 -0
  682. package/src/db/tables/verifiedTokens.ts +19 -14
  683. package/src/db/tables/webhookSubscriptions.ts +58 -3
  684. package/src/handlers/relay.test.ts +2 -0
  685. package/src/handlers/relay.ts +95 -99
  686. package/src/internal/Auth.test.ts +225 -5
  687. package/src/internal/Auth.ts +109 -20
  688. package/src/internal/Cache.test.ts +37 -3
  689. package/src/internal/Cache.ts +14 -10
  690. package/src/internal/Cursor.test.ts +2 -2
  691. package/src/internal/Cursor.ts +1 -1
  692. package/src/internal/EarnRates.test.ts +125 -0
  693. package/src/internal/EarnRates.ts +409 -0
  694. package/src/internal/EarnVaults.test.ts +195 -0
  695. package/src/internal/EarnVaults.ts +876 -0
  696. package/src/internal/EdgeCache.test.ts +26 -7
  697. package/src/internal/EdgeCache.ts +48 -9
  698. package/src/internal/Id.ts +14 -0
  699. package/src/internal/Idempotency.test.ts +109 -0
  700. package/src/internal/Idempotency.ts +237 -0
  701. package/src/internal/IpAllowlist.test.ts +52 -0
  702. package/src/internal/IpAllowlist.ts +39 -0
  703. package/src/internal/Log.test-d.ts +41 -8
  704. package/src/internal/Log.test.ts +196 -9
  705. package/src/internal/Log.ts +124 -17
  706. package/src/internal/MetricSink.test.ts +244 -4
  707. package/src/internal/MetricSink.ts +51 -1
  708. package/src/internal/OpenApi.ts +4 -1
  709. package/src/internal/Provider.test.ts +17 -0
  710. package/src/internal/Provider.ts +17 -0
  711. package/src/internal/Schema.ts +27 -17
  712. package/src/internal/Store.test.ts +25 -0
  713. package/src/internal/Store.ts +46 -0
  714. package/src/internal/Tidx.local.test.ts +78 -3
  715. package/src/internal/Tidx.test.ts +240 -18
  716. package/src/internal/Tidx.ts +129 -33
  717. package/src/internal/VerifiedTokens.test.ts +15 -0
  718. package/src/internal/Viem.test.ts +198 -17
  719. package/src/internal/Viem.ts +127 -28
  720. package/src/internal/WebhookDestination.ts +25 -23
  721. package/src/internal/Webhooks.test.ts +59 -0
  722. package/src/internal/Webhooks.ts +34 -10
  723. package/src/internal/exchange/Provider.test.ts +216 -0
  724. package/src/internal/exchange/Provider.ts +326 -0
  725. package/src/internal/exchange/index.test.ts +6 -0
  726. package/src/internal/exchange/index.ts +1 -0
  727. package/src/internal/exchange/providers/uniswap.test.ts +122 -0
  728. package/src/internal/exchange/providers/uniswap.ts +682 -0
  729. package/src/internal/funding/Action.test.ts +138 -0
  730. package/src/internal/funding/Action.ts +117 -0
  731. package/src/internal/funding/Catalog.test.ts +311 -0
  732. package/src/internal/funding/Catalog.ts +347 -0
  733. package/src/internal/funding/Chain.test.ts +79 -0
  734. package/src/internal/funding/Chain.ts +120 -0
  735. package/src/internal/funding/Deposit.test.ts +26 -0
  736. package/src/internal/funding/Deposit.ts +522 -0
  737. package/src/internal/funding/DepositAddress.test.ts +18 -0
  738. package/src/internal/funding/DepositAddress.ts +312 -0
  739. package/src/internal/funding/Evidence.test.ts +297 -0
  740. package/src/internal/funding/Evidence.ts +425 -0
  741. package/src/internal/funding/Provider.test.ts +1328 -0
  742. package/src/internal/funding/Provider.ts +1911 -0
  743. package/src/internal/funding/Reconciliation.local.test.ts +511 -0
  744. package/src/internal/funding/Reconciliation.test.ts +3037 -0
  745. package/src/internal/funding/Reconciliation.ts +1202 -0
  746. package/src/internal/funding/Route.test.ts +66 -0
  747. package/src/internal/funding/Route.ts +29 -0
  748. package/src/internal/funding/SourceObservation.test.ts +301 -0
  749. package/src/internal/funding/SourceObservation.ts +267 -0
  750. package/src/internal/funding/Subsidy.local.test.ts +152 -0
  751. package/src/internal/funding/Subsidy.test.ts +75 -0
  752. package/src/internal/funding/Subsidy.ts +260 -0
  753. package/src/internal/funding/Token.test.ts +47 -0
  754. package/src/internal/funding/Token.ts +59 -0
  755. package/src/internal/funding/Transfer.test.ts +369 -0
  756. package/src/internal/funding/Transfer.ts +522 -0
  757. package/src/internal/funding/index.test.ts +21 -0
  758. package/src/internal/funding/index.ts +13 -0
  759. package/src/internal/funding/providers/across.ts +149 -0
  760. package/src/{apps/data/FundingQuoteProviders.test.ts → internal/funding/providers/index.test.ts} +178 -157
  761. package/src/internal/funding/providers/relay.test.ts +564 -0
  762. package/src/internal/funding/providers/relay.ts +1060 -0
  763. package/src/internal/funding/providers/rhino.ts +139 -0
  764. package/src/internal/funding/providers/squid.ts +151 -0
  765. package/src/internal/funding/providers/symbiosis.ts +221 -0
  766. package/src/internal/index.test.ts +5 -1
  767. package/src/internal/index.ts +5 -1
  768. package/src/internal/webhookDestinations/url.ts +49 -45
  769. package/src/providers/index.test.ts +14 -0
  770. package/src/providers/index.ts +54 -0
  771. package/dist/apps/data/FundingQuoteProviders.d.ts +0 -174
  772. package/dist/apps/data/FundingQuoteProviders.d.ts.map +0 -1
  773. package/dist/apps/data/FundingQuoteProviders.js +0 -775
  774. package/dist/apps/data/FundingQuoteProviders.js.map +0 -1
  775. package/dist/apps/data/routes/funding.d.ts.map +0 -1
  776. package/dist/apps/data/routes/funding.js +0 -410
  777. package/dist/apps/data/routes/funding.js.map +0 -1
  778. package/dist/internal/FundingQuotes.d.ts +0 -864
  779. package/dist/internal/FundingQuotes.d.ts.map +0 -1
  780. package/dist/internal/FundingQuotes.js +0 -672
  781. package/dist/internal/FundingQuotes.js.map +0 -1
  782. package/src/apps/data/FundingQuoteProviders.ts +0 -1043
  783. package/src/apps/data/routes/funding.test.ts +0 -503
  784. package/src/apps/data/routes/funding.ts +0 -604
  785. package/src/internal/FundingQuotes.test.ts +0 -456
  786. package/src/internal/FundingQuotes.ts +0 -944
@@ -0,0 +1,522 @@
1
+ import * as z from 'zod/mini'
2
+
3
+ import type * as Db from '../../db/Db.js'
4
+ import * as FundingDepositAddresses from '../../db/tables/fundingDepositAddresses.js'
5
+ import * as FundingDeposits from '../../db/tables/fundingDeposits.js'
6
+ import * as Id from '../Id.js'
7
+ import * as Schema from '../Schema.js'
8
+ import * as Provider from './Provider.js'
9
+
10
+ /** Mechanisms that can first detect a funding deposit. */
11
+ export const detectionTriggers = ['chain', 'manual', 'poll', 'webhook'] as const
12
+
13
+ /** Mechanism that first detected a funding deposit. */
14
+ export type DetectionTrigger = (typeof detectionTriggers)[number]
15
+
16
+ /**
17
+ * Public funding deposit statuses:
18
+ *
19
+ * - `action-required`: Automatic processing stopped and requires recovery or operator action.
20
+ * - `bridging`: The provider is moving the source funds to Tempo.
21
+ * - `completed`: The full required amount reached the recipient.
22
+ * - `detected`: The provider reported a source transfer that awaits chain verification.
23
+ * - `refunded`: A verified refund reached the configured refund address.
24
+ * - `refunding`: A refund started but is not yet verified.
25
+ * - `settling`: Tempo is completing the required destination amount after provider delivery.
26
+ */
27
+ export const statuses = [
28
+ 'action-required',
29
+ 'bridging',
30
+ 'completed',
31
+ 'detected',
32
+ 'refunded',
33
+ 'refunding',
34
+ 'settling',
35
+ ] as const
36
+
37
+ /** Lifecycle status of a detected funding deposit. */
38
+ export type Status = (typeof statuses)[number]
39
+
40
+ /** Statuses that never change after verified chain evidence. */
41
+ export const terminalStatuses = ['completed', 'refunded'] as const satisfies readonly Status[]
42
+
43
+ /**
44
+ * Customer-safe codes explaining a deposit that needs attention:
45
+ *
46
+ * - `delivery_failed`: The provider or Tempo could not complete destination delivery.
47
+ * - `delivery_liquidity_unavailable`: The selected strategy cannot obtain the required destination amount.
48
+ * - `manual_recovery_required`: Automatic processing cannot safely continue.
49
+ * - `refund_failed`: The provider could not refund the source funds.
50
+ * - `source_amount_not_supported`: The source amount is outside the supported limits.
51
+ * - `source_token_mismatch`: The transfer used a token other than the configured source token.
52
+ * - `subsidy_balance_unavailable`: Tempo lacks enough pathUSD for the required subsidy.
53
+ * - `subsidy_failed`: Tempo could not deliver the required subsidy.
54
+ */
55
+ export const statusReasonCodes = [
56
+ 'delivery_failed',
57
+ 'delivery_liquidity_unavailable',
58
+ 'manual_recovery_required',
59
+ 'refund_failed',
60
+ 'source_amount_not_supported',
61
+ 'source_token_mismatch',
62
+ 'subsidy_balance_unavailable',
63
+ 'subsidy_failed',
64
+ ] as const
65
+
66
+ /** Stable customer-safe deposit status reason code. */
67
+ export type StatusReasonCode = (typeof statusReasonCodes)[number]
68
+
69
+ /** Bounded private state used by deposit reconciliation. */
70
+ export type PrivateState = Record<string, unknown>
71
+
72
+ const transitions: Record<Status, readonly Status[]> = {
73
+ 'action-required': ['bridging', 'completed', 'refunded', 'refunding', 'settling'],
74
+ bridging: ['action-required', 'completed', 'refunding', 'settling'],
75
+ completed: [],
76
+ detected: ['action-required', 'bridging', 'completed', 'refunding', 'settling'],
77
+ refunded: [],
78
+ refunding: ['action-required', 'refunded'],
79
+ settling: ['action-required', 'completed', 'refunding'],
80
+ }
81
+
82
+ /** Returns whether a deposit status is terminal. */
83
+ export function isTerminal(status: Status): boolean {
84
+ return (terminalStatuses as readonly Status[]).includes(status)
85
+ }
86
+
87
+ /** Returns whether the lifecycle allows moving between deposit statuses. */
88
+ export function canTransition(from: Status, to: Status): boolean {
89
+ return transitions[from].includes(to)
90
+ }
91
+
92
+ /** Generates a funding deposit id (`fdp_…`, lexically time-ordered). */
93
+ export function generateId(now: Date = new Date()): string {
94
+ return Id.generateSortable('fdp', now)
95
+ }
96
+
97
+ /** Zod schemas owned by the funding deposit resource. */
98
+ export namespace schema {
99
+ const transactionHashes = (description: string) =>
100
+ z
101
+ .readonly(z.array(z.string()))
102
+ .check(z.describe(description), z.meta({ examples: [[`0x${'aa'.repeat(32)}`]] }))
103
+
104
+ /** Mechanism that first detected a funding deposit. */
105
+ export const DetectionTrigger = z
106
+ .enum(detectionTriggers)
107
+ .check(z.describe('How the deposit was first detected.'), z.meta({ examples: ['webhook'] }))
108
+
109
+ /** Funding deposit lifecycle status. */
110
+ export const Status = z
111
+ .enum(statuses)
112
+ .check(
113
+ z.describe('Current delivery status of the deposit.'),
114
+ z.meta({ examples: ['detected'] }),
115
+ )
116
+
117
+ /** Customer-safe explanation of a deposit status. */
118
+ export const StatusReason = z
119
+ .object({
120
+ code: z
121
+ .enum(statusReasonCodes)
122
+ .check(
123
+ z.describe('Stable machine-readable reason code.'),
124
+ z.meta({ examples: ['delivery_liquidity_unavailable'] }),
125
+ ),
126
+ message: z
127
+ .string()
128
+ .check(
129
+ z.describe('Human-readable explanation of the current status.'),
130
+ z.meta({ examples: ['The required destination amount is not currently available.'] }),
131
+ ),
132
+ })
133
+ .check(z.describe('Why a deposit needs attention or recovery.'))
134
+
135
+ /** Public fields persisted as the deposit snapshot. */
136
+ export const Snapshot = z
137
+ .object({
138
+ depositAddressId: z
139
+ .string()
140
+ .check(
141
+ z.regex(/^fda_[A-Za-z0-9_-]+$/),
142
+ z.describe('Funding deposit address that detected the transfer.'),
143
+ z.meta({ examples: ['fda_001785792000000_2ZPE2gvateYEQ0dQslgvkhjx'] }),
144
+ ),
145
+ destinationAmount: z.optional(Schema.TokenAmount),
146
+ destinationAmountRequired: z
147
+ .optional(Schema.TokenAmount)
148
+ .check(z.describe('Destination amount required for completion, when known.')),
149
+ destinationChain: Provider.schema.ChainRef,
150
+ destinationToken: Provider.schema.TokenRef,
151
+ destinationTransactionHashes: z.optional(
152
+ transactionHashes('Verified destination transaction references.'),
153
+ ),
154
+ provider: Provider.schema.ProviderRef,
155
+ recipient: z
156
+ .string()
157
+ .check(
158
+ z.regex(/^0x[0-9a-fA-F]{40}$/),
159
+ z.describe('Tempo account that receives the completed deposit.'),
160
+ z.meta({ examples: [`0x${'11'.repeat(20)}`] }),
161
+ ),
162
+ refundAddress: z
163
+ .string()
164
+ .check(
165
+ z.describe('Source-chain address that receives a refund.'),
166
+ z.meta({ examples: ['TJRabPrwbZy45sbavfcjinPJC18kjpRTv8'] }),
167
+ ),
168
+ refundAmount: z.optional(Schema.TokenAmount),
169
+ refundTransactionHashes: z.optional(
170
+ transactionHashes('Verified source-chain refund transaction references.'),
171
+ ),
172
+ sender: z
173
+ .optional(z.string())
174
+ .check(
175
+ z.describe('Observed source-chain sender, when available.'),
176
+ z.meta({ examples: ['TJRabPrwbZy45sbavfcjinPJC18kjpRTv8'] }),
177
+ ),
178
+ sourceAmount: z
179
+ .optional(Schema.TokenAmount)
180
+ .check(z.describe('Verified source amount, when source evidence is available.')),
181
+ sourceChain: Provider.schema.ChainRef,
182
+ sourceToken: Provider.schema.TokenRef,
183
+ sourceTransactionHashes: transactionHashes(
184
+ 'Provider-observed source transaction references.',
185
+ ),
186
+ })
187
+ .check(
188
+ z.describe('Public route, provider observations, and verified evidence for one deposit.'),
189
+ )
190
+
191
+ /** One detected funding deposit. */
192
+ export const FundingDeposit = z
193
+ .object({
194
+ createdAt: z
195
+ .string()
196
+ .check(
197
+ z.describe('When the deposit was first detected (ISO 8601).'),
198
+ z.meta({ examples: ['2026-08-04T00:01:00.000Z'] }),
199
+ ),
200
+ depositAddressId: Snapshot.shape.depositAddressId,
201
+ detectionTrigger: z.optional(DetectionTrigger),
202
+ destinationAmount: Snapshot.shape.destinationAmount,
203
+ destinationAmountRequired: Snapshot.shape.destinationAmountRequired,
204
+ destinationChain: Snapshot.shape.destinationChain,
205
+ destinationToken: Snapshot.shape.destinationToken,
206
+ destinationTransactionHashes: Snapshot.shape.destinationTransactionHashes,
207
+ id: z
208
+ .string()
209
+ .check(
210
+ z.regex(/^fdp_[A-Za-z0-9_-]+$/),
211
+ z.describe('Funding deposit id (`fdp_…`).'),
212
+ z.meta({ examples: ['fdp_001785792060000_2ZPE2gvateYEQ0dQslgvkhjx'] }),
213
+ ),
214
+ provider: Snapshot.shape.provider,
215
+ recipient: Snapshot.shape.recipient,
216
+ refundAddress: Snapshot.shape.refundAddress,
217
+ refundAmount: Snapshot.shape.refundAmount,
218
+ refundTransactionHashes: Snapshot.shape.refundTransactionHashes,
219
+ sender: Snapshot.shape.sender,
220
+ sourceAmount: Snapshot.shape.sourceAmount,
221
+ sourceChain: Snapshot.shape.sourceChain,
222
+ sourceToken: Snapshot.shape.sourceToken,
223
+ sourceTransactionHashes: Snapshot.shape.sourceTransactionHashes,
224
+ sourceTransferIndex: z
225
+ .optional(z.number().check(z.int(), z.minimum(0)))
226
+ .check(
227
+ z.describe('Verified transfer position within the source transaction.'),
228
+ z.meta({ examples: [0] }),
229
+ ),
230
+ status: Status,
231
+ statusReason: z.optional(StatusReason),
232
+ updatedAt: z
233
+ .string()
234
+ .check(
235
+ z.describe('When the deposit last materially changed (ISO 8601).'),
236
+ z.meta({ examples: ['2026-08-04T00:02:00.000Z'] }),
237
+ ),
238
+ })
239
+ .check(z.describe('One detected deposit and its delivery status.'))
240
+ }
241
+
242
+ /** Stored public snapshot of a funding deposit. */
243
+ export type Snapshot = z.output<typeof schema.Snapshot>
244
+
245
+ /** Customer-safe funding deposit status reason. */
246
+ export type StatusReason = z.output<typeof schema.StatusReason>
247
+
248
+ /** A funding deposit as returned by reads. */
249
+ export type Public = z.output<typeof schema.FundingDeposit>
250
+
251
+ /** Creates a durable record for one provider-observed source transaction. */
252
+ export async function create(db: Db.Db, input: create.Input): Promise<FundingDeposits.Record> {
253
+ return FundingDeposits.insert(db, await record(db, input))
254
+ }
255
+
256
+ /** Creates or returns the deposit for one verified chain transfer. */
257
+ export async function createFromSource(
258
+ db: Db.Db,
259
+ input: createFromSource.Input,
260
+ ): Promise<FundingDeposits.insertOrGetSource.Result> {
261
+ const stored = await record(db, {
262
+ detectionTrigger: 'chain',
263
+ now: input.now,
264
+ providerRequestId: null,
265
+ snapshot: input.snapshot,
266
+ sourceTransactionHash: input.sourceTransactionHash,
267
+ sourceTransferIndex: input.sourceTransferIndex,
268
+ })
269
+ return FundingDeposits.insertOrGetSource(db, {
270
+ ...stored,
271
+ sourceTransferIndex: input.sourceTransferIndex,
272
+ })
273
+ }
274
+
275
+ export declare namespace createFromSource {
276
+ /** Verified source transfer used to create a chain-detected deposit. */
277
+ type Input = {
278
+ /** Detection time override for deterministic tests. */
279
+ now?: Date | undefined
280
+ /** Public route and verified source amount. */
281
+ snapshot: Snapshot
282
+ /** Source transaction containing the deposited transfer. */
283
+ sourceTransactionHash: string
284
+ /** Verified transfer position within the source transaction. */
285
+ sourceTransferIndex: number
286
+ }
287
+ }
288
+
289
+ async function record(
290
+ db: Db.Db,
291
+ input: Omit<create.Input, 'providerRequestId'> & { providerRequestId: string | null },
292
+ ): Promise<FundingDeposits.Record> {
293
+ const now = input.now ?? new Date()
294
+ const depositAddressId = schema.Snapshot.shape.depositAddressId.parse(
295
+ input.snapshot.depositAddressId,
296
+ )
297
+ const address = await FundingDepositAddresses.get(db, depositAddressId)
298
+ if (!address) throw new DepositAddressNotFoundError(depositAddressId)
299
+ const snapshot = schema.Snapshot.parse({
300
+ ...input.snapshot,
301
+ depositAddressId: address.id,
302
+ destinationChain: address.snapshot.destinationChain,
303
+ destinationToken: address.snapshot.destinationToken,
304
+ provider: address.snapshot.provider,
305
+ recipient: address.snapshot.recipient,
306
+ refundAddress: address.snapshot.refundAddress,
307
+ sourceChain: address.snapshot.sourceChain,
308
+ sourceToken: address.snapshot.sourceToken,
309
+ sourceTransactionHashes: [input.sourceTransactionHash],
310
+ })
311
+ return {
312
+ createdAt: now.toISOString(),
313
+ depositAddressId: snapshot.depositAddressId,
314
+ detectionTrigger: input.detectionTrigger ?? null,
315
+ environment: address.environment,
316
+ id: input.id ?? generateId(now),
317
+ orgId: address.orgId,
318
+ pollObservedAt: input.pollObservedAt ?? null,
319
+ projectId: address.projectId,
320
+ providerOutputAmount: input.providerOutputAmount ?? null,
321
+ providerOutputToken: address.providerOutputToken,
322
+ providerRequestId: input.providerRequestId,
323
+ providerRequestIds: [
324
+ ...new Set([
325
+ ...(input.providerRequestId === null ? [] : [input.providerRequestId]),
326
+ ...(input.providerRequestIds ?? []),
327
+ ]),
328
+ ],
329
+ providerState: input.providerState ?? null,
330
+ providerTransactionHashes: input.providerTransactionHashes ?? [],
331
+ providerTransferIndex: input.providerTransferIndex ?? 0,
332
+ retryState: input.retryState ?? null,
333
+ settlementTransaction: input.settlementTransaction ?? null,
334
+ settlementTransactionHash: input.settlementTransactionHash ?? null,
335
+ snapshot,
336
+ sourceChainId: snapshot.sourceChain.id,
337
+ sourceTransactionHash: input.sourceTransactionHash,
338
+ sourceTransferIndex: input.sourceTransferIndex ?? null,
339
+ status: 'detected',
340
+ statusReason: null,
341
+ subsidyAmount: input.subsidyAmount ?? null,
342
+ tempoGasPaid: input.tempoGasPaid ?? null,
343
+ updatedAt: now.toISOString(),
344
+ version: 1,
345
+ webhookReceivedAt: input.webhookReceivedAt ?? null,
346
+ }
347
+ }
348
+
349
+ export declare namespace create {
350
+ /** Fields required to persist a provider-observed deposit. */
351
+ type Input = {
352
+ /** Mechanism that first detected the deposit. */
353
+ detectionTrigger?: DetectionTrigger | undefined
354
+ /** Deposit id override for deterministic tests. */
355
+ id?: string | undefined
356
+ /** Detection time override for deterministic tests. */
357
+ now?: Date | undefined
358
+ /** When polling first observed the provider request. */
359
+ pollObservedAt?: string | undefined
360
+ /** Provider output amount confirmed on Tempo. */
361
+ providerOutputAmount?: z.output<typeof Schema.TokenAmount> | undefined
362
+ /** Provider request that reported the source transaction. */
363
+ providerRequestId: string
364
+ /** Private provider request identifiers. */
365
+ providerRequestIds?: readonly string[] | undefined
366
+ /** Bounded private provider state. */
367
+ providerState?: PrivateState | undefined
368
+ /** Provider-leg transaction references. */
369
+ providerTransactionHashes?: readonly string[] | undefined
370
+ /** Deposit position within the provider request. */
371
+ providerTransferIndex?: number | undefined
372
+ /** Bounded private retry state. */
373
+ retryState?: PrivateState | undefined
374
+ /** Persisted settlement transaction bytes for exactly-once rebroadcast. */
375
+ settlementTransaction?: string | undefined
376
+ /** Persisted settlement transaction hash. */
377
+ settlementTransactionHash?: string | undefined
378
+ /** Public deposit snapshot. */
379
+ snapshot: Snapshot
380
+ /** Source transaction containing the deposited transfer. */
381
+ sourceTransactionHash: string
382
+ /** Verified transfer position within the source transaction. */
383
+ sourceTransferIndex?: number | undefined
384
+ /** Destination token amount supplied by Tempo. */
385
+ subsidyAmount?: z.output<typeof Schema.TokenAmount> | undefined
386
+ /** Tempo gas paid for settlement, in base units. */
387
+ tempoGasPaid?: string | undefined
388
+ /** When Tempo first received an authenticated provider webhook. */
389
+ webhookReceivedAt?: string | undefined
390
+ }
391
+ }
392
+
393
+ /** Applies a version-guarded material deposit change. */
394
+ export async function transition(
395
+ db: Db.Db,
396
+ options: transition.Options,
397
+ ): Promise<transition.Result> {
398
+ const current = await FundingDeposits.get(db, options.id)
399
+ if (!current) return { type: 'not_found' }
400
+ if (current.version !== options.expectedVersion) return { current, type: 'stale' }
401
+ const status = options.status ?? current.status
402
+ if (status !== current.status && !canTransition(current.status, status))
403
+ return { current, type: 'invalid' }
404
+ const snapshot =
405
+ options.snapshot === undefined
406
+ ? current.snapshot
407
+ : schema.Snapshot.parse({
408
+ ...options.snapshot,
409
+ depositAddressId: current.snapshot.depositAddressId,
410
+ destinationAmountRequired:
411
+ current.snapshot.destinationAmountRequired ??
412
+ options.snapshot.destinationAmountRequired,
413
+ destinationChain: current.snapshot.destinationChain,
414
+ destinationToken: current.snapshot.destinationToken,
415
+ provider: current.snapshot.provider,
416
+ recipient: current.snapshot.recipient,
417
+ refundAddress: current.snapshot.refundAddress,
418
+ sender: current.snapshot.sender ?? options.snapshot.sender,
419
+ sourceAmount: current.snapshot.sourceAmount ?? options.snapshot.sourceAmount,
420
+ sourceChain: current.snapshot.sourceChain,
421
+ sourceToken: current.snapshot.sourceToken,
422
+ sourceTransactionHashes: current.snapshot.sourceTransactionHashes,
423
+ })
424
+
425
+ const updated = await FundingDeposits.update(db, {
426
+ expectedVersion: options.expectedVersion,
427
+ id: options.id,
428
+ providerOutputAmount: options.providerOutputAmount ?? current.providerOutputAmount,
429
+ providerRequestId: current.providerRequestId ?? options.providerRequestId ?? null,
430
+ providerRequestIds: options.providerRequestIds ?? current.providerRequestIds,
431
+ providerState: options.providerState ?? current.providerState,
432
+ providerTransactionHashes:
433
+ options.providerTransactionHashes ?? current.providerTransactionHashes,
434
+ providerTransferIndex: options.providerTransferIndex ?? current.providerTransferIndex,
435
+ retryState: options.retryState ?? current.retryState,
436
+ settlementTransaction: options.settlementTransaction ?? current.settlementTransaction,
437
+ settlementTransactionHash:
438
+ options.settlementTransactionHash ?? current.settlementTransactionHash,
439
+ snapshot,
440
+ sourceTransferIndex: current.sourceTransferIndex ?? options.sourceTransferIndex ?? null,
441
+ status,
442
+ statusReason: options.statusReason ?? (status === current.status ? current.statusReason : null),
443
+ subsidyAmount: options.subsidyAmount ?? current.subsidyAmount,
444
+ tempoGasPaid: options.tempoGasPaid ?? current.tempoGasPaid,
445
+ updatedAt: new Date().toISOString(),
446
+ version: current.version + 1,
447
+ })
448
+ if (updated) return { record: updated, type: 'applied' }
449
+ const latest = await FundingDeposits.get(db, options.id)
450
+ return latest ? { current: latest, type: 'stale' } : { type: 'not_found' }
451
+ }
452
+
453
+ export declare namespace transition {
454
+ /** Fields describing a material deposit change. */
455
+ type Options = {
456
+ /** Version that the change was computed against. */
457
+ expectedVersion: number
458
+ /** Funding deposit id (`fdp_…`). */
459
+ id: string
460
+ /** Provider output amount confirmed on Tempo. */
461
+ providerOutputAmount?: z.output<typeof Schema.TokenAmount> | undefined
462
+ /** Provider request attached after chain-first detection. */
463
+ providerRequestId?: string | undefined
464
+ /** Private provider request identifiers. */
465
+ providerRequestIds?: readonly string[] | undefined
466
+ /** Bounded private provider state. */
467
+ providerState?: PrivateState | undefined
468
+ /** Provider-leg transaction references. */
469
+ providerTransactionHashes?: readonly string[] | undefined
470
+ /** Deposit position within the attached provider request. */
471
+ providerTransferIndex?: number | undefined
472
+ /** Bounded private retry state. */
473
+ retryState?: PrivateState | undefined
474
+ /** Persisted settlement transaction bytes for exactly-once rebroadcast. */
475
+ settlementTransaction?: string | undefined
476
+ /** Persisted settlement transaction hash. */
477
+ settlementTransactionHash?: string | undefined
478
+ /** Replacement public snapshot. */
479
+ snapshot?: Snapshot | undefined
480
+ /** Verified transfer position within the source transaction. */
481
+ sourceTransferIndex?: number | undefined
482
+ /** New lifecycle status. */
483
+ status?: Status | undefined
484
+ /** Customer-safe reason attached to the current status. */
485
+ statusReason?: StatusReason | undefined
486
+ /** Destination token amount supplied by Tempo. */
487
+ subsidyAmount?: z.output<typeof Schema.TokenAmount> | undefined
488
+ /** Tempo gas paid for settlement, in base units. */
489
+ tempoGasPaid?: string | undefined
490
+ }
491
+
492
+ /** Outcome of a guarded deposit transition. */
493
+ type Result =
494
+ | { record: FundingDeposits.Record; type: 'applied' }
495
+ | { current: FundingDeposits.Record; type: 'invalid' }
496
+ | { current: FundingDeposits.Record; type: 'stale' }
497
+ | { type: 'not_found' }
498
+ }
499
+
500
+ /** Serializes a stored deposit to the public read shape. */
501
+ export function toPublic(record: FundingDeposits.Record): Public {
502
+ return schema.FundingDeposit.parse({
503
+ ...record.snapshot,
504
+ createdAt: record.createdAt,
505
+ ...(record.detectionTrigger === null ? {} : { detectionTrigger: record.detectionTrigger }),
506
+ id: record.id,
507
+ ...(record.sourceTransferIndex === null
508
+ ? {}
509
+ : { sourceTransferIndex: record.sourceTransferIndex }),
510
+ status: record.status,
511
+ ...(record.statusReason === null ? {} : { statusReason: record.statusReason }),
512
+ updatedAt: record.updatedAt,
513
+ })
514
+ }
515
+
516
+ class DepositAddressNotFoundError extends Error {
517
+ override name = 'FundingDeposit.DepositAddressNotFoundError'
518
+
519
+ constructor(id: string) {
520
+ super(`Funding deposit address ${id} not found`)
521
+ }
522
+ }
@@ -0,0 +1,18 @@
1
+ import * as DepositAddress from './DepositAddress.js'
2
+
3
+ describe('generateId', () => {
4
+ test('generates a lexically time-ordered funding deposit address id', () => {
5
+ const earlier = DepositAddress.generateId(new Date('2026-01-01T00:00:00.000Z'))
6
+ const later = DepositAddress.generateId(new Date('2026-01-01T00:00:01.000Z'))
7
+ expect(earlier).toMatch(/^fda_\d{15}_[A-Za-z0-9]{24}$/)
8
+ expect(earlier < later).toBe(true)
9
+ })
10
+ })
11
+
12
+ describe('canTransition', () => {
13
+ test('allows disabling and restoring a reusable address', () => {
14
+ expect(DepositAddress.canTransition('active', 'action-required')).toBe(true)
15
+ expect(DepositAddress.canTransition('action-required', 'active')).toBe(true)
16
+ expect(DepositAddress.canTransition('active', 'active')).toBe(false)
17
+ })
18
+ })