tapimo 0.14.0 → 0.15.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1160) hide show
  1. package/README.md +7 -4
  2. package/dist/ApiKey.js +1 -1
  3. package/dist/ApiKey.js.map +1 -1
  4. package/dist/ApiKeys.d.ts +95 -14
  5. package/dist/ApiKeys.d.ts.map +1 -1
  6. package/dist/ApiKeys.js +360 -49
  7. package/dist/ApiKeys.js.map +1 -1
  8. package/dist/App.d.ts +12466 -10374
  9. package/dist/App.d.ts.map +1 -1
  10. package/dist/App.js +300 -22
  11. package/dist/App.js.map +1 -1
  12. package/dist/Assets.d.ts.map +1 -1
  13. package/dist/Assets.js +2 -1
  14. package/dist/Assets.js.map +1 -1
  15. package/dist/Handler.d.ts +0 -1
  16. package/dist/Handler.d.ts.map +1 -1
  17. package/dist/Handler.js +0 -1
  18. package/dist/Handler.js.map +1 -1
  19. package/dist/Scope.d.ts +13 -5
  20. package/dist/Scope.d.ts.map +1 -1
  21. package/dist/Scope.js +16 -5
  22. package/dist/Scope.js.map +1 -1
  23. package/dist/Webhooks.js +1 -1
  24. package/dist/Webhooks.js.map +1 -1
  25. package/dist/admin/App.d.ts +3057 -546
  26. package/dist/admin/App.d.ts.map +1 -1
  27. package/dist/admin/App.js +26 -5
  28. package/dist/admin/App.js.map +1 -1
  29. package/dist/admin/apps/api-keys.d.ts +179 -27
  30. package/dist/admin/apps/api-keys.d.ts.map +1 -1
  31. package/dist/admin/apps/api-keys.js +95 -43
  32. package/dist/admin/apps/api-keys.js.map +1 -1
  33. package/dist/admin/apps/earn-vaults.d.ts +1398 -0
  34. package/dist/admin/apps/earn-vaults.d.ts.map +1 -1
  35. package/dist/admin/apps/earn-vaults.js +463 -7
  36. package/dist/admin/apps/earn-vaults.js.map +1 -1
  37. package/dist/admin/apps/organizations.d.ts +267 -15
  38. package/dist/admin/apps/organizations.d.ts.map +1 -1
  39. package/dist/admin/apps/organizations.js +241 -25
  40. package/dist/admin/apps/organizations.js.map +1 -1
  41. package/dist/admin/apps/routes-support.d.ts +95 -0
  42. package/dist/admin/apps/routes-support.d.ts.map +1 -0
  43. package/dist/admin/apps/routes-support.js +151 -0
  44. package/dist/admin/apps/routes-support.js.map +1 -0
  45. package/dist/admin/apps/routes.d.ts +2764 -0
  46. package/dist/admin/apps/routes.d.ts.map +1 -0
  47. package/dist/admin/apps/routes.js +728 -0
  48. package/dist/admin/apps/routes.js.map +1 -0
  49. package/dist/admin/apps/subsidies.d.ts +501 -0
  50. package/dist/admin/apps/subsidies.d.ts.map +1 -0
  51. package/dist/admin/apps/subsidies.js +384 -0
  52. package/dist/admin/apps/subsidies.js.map +1 -0
  53. package/dist/admin/apps/verified-tokens.d.ts +166 -160
  54. package/dist/admin/apps/verified-tokens.d.ts.map +1 -1
  55. package/dist/admin/apps/verified-tokens.js +27 -7
  56. package/dist/admin/apps/verified-tokens.js.map +1 -1
  57. package/dist/admin/ui.generated.d.ts +1 -1
  58. package/dist/admin/ui.generated.d.ts.map +1 -1
  59. package/dist/admin/ui.generated.js +201 -149
  60. package/dist/admin/ui.generated.js.map +1 -1
  61. package/dist/analytics/Analytics.d.ts +5 -2
  62. package/dist/analytics/Analytics.d.ts.map +1 -1
  63. package/dist/analytics/Analytics.js +31 -1
  64. package/dist/analytics/Analytics.js.map +1 -1
  65. package/dist/analytics/tables/requestEvents.d.ts +2 -1
  66. package/dist/analytics/tables/requestEvents.d.ts.map +1 -1
  67. package/dist/analytics/tables/requestEvents.js +10 -1
  68. package/dist/analytics/tables/requestEvents.js.map +1 -1
  69. package/dist/analytics/tables/routesLifecycleIntervals.d.ts +72 -0
  70. package/dist/analytics/tables/routesLifecycleIntervals.d.ts.map +1 -0
  71. package/dist/analytics/tables/routesLifecycleIntervals.js +56 -0
  72. package/dist/analytics/tables/routesLifecycleIntervals.js.map +1 -0
  73. package/dist/apps/Zones.d.ts +21 -12526
  74. package/dist/apps/Zones.d.ts.map +1 -1
  75. package/dist/apps/Zones.js +37 -5
  76. package/dist/apps/Zones.js.map +1 -1
  77. package/dist/apps/data/App.d.ts +3971 -2595
  78. package/dist/apps/data/App.d.ts.map +1 -1
  79. package/dist/apps/data/App.js +76 -21
  80. package/dist/apps/data/App.js.map +1 -1
  81. package/dist/apps/data/routes/activities.d.ts +629 -299
  82. package/dist/apps/data/routes/activities.d.ts.map +1 -1
  83. package/dist/apps/data/routes/activities.js +495 -190
  84. package/dist/apps/data/routes/activities.js.map +1 -1
  85. package/dist/apps/data/routes/addresses.d.ts +72 -0
  86. package/dist/apps/data/routes/addresses.d.ts.map +1 -1
  87. package/dist/apps/data/routes/blocks.d.ts +116 -116
  88. package/dist/apps/data/routes/coingecko.d.ts.map +1 -1
  89. package/dist/apps/data/routes/coingecko.js +47 -21
  90. package/dist/apps/data/routes/coingecko.js.map +1 -1
  91. package/dist/apps/data/routes/earn.d.ts +1450 -337
  92. package/dist/apps/data/routes/earn.d.ts.map +1 -1
  93. package/dist/apps/data/routes/earn.js +1226 -144
  94. package/dist/apps/data/routes/earn.js.map +1 -1
  95. package/dist/apps/data/routes/fee-amm.d.ts +113 -108
  96. package/dist/apps/data/routes/fee-amm.d.ts.map +1 -1
  97. package/dist/apps/data/routes/fee-amm.js +41 -21
  98. package/dist/apps/data/routes/fee-amm.js.map +1 -1
  99. package/dist/apps/data/routes/indexer.d.ts +142 -17
  100. package/dist/apps/data/routes/indexer.d.ts.map +1 -1
  101. package/dist/apps/data/routes/indexer.js +83 -27
  102. package/dist/apps/data/routes/indexer.js.map +1 -1
  103. package/dist/apps/data/routes/receipts.d.ts +235 -235
  104. package/dist/apps/data/routes/rpc.d.ts +507 -33
  105. package/dist/apps/data/routes/rpc.d.ts.map +1 -1
  106. package/dist/apps/data/routes/rpc.js +309 -165
  107. package/dist/apps/data/routes/rpc.js.map +1 -1
  108. package/dist/apps/data/routes/tokenlist.d.ts +47 -15
  109. package/dist/apps/data/routes/tokenlist.d.ts.map +1 -1
  110. package/dist/apps/data/routes/tokenlist.js +68 -11
  111. package/dist/apps/data/routes/tokenlist.js.map +1 -1
  112. package/dist/apps/data/routes/tokens.d.ts +2 -0
  113. package/dist/apps/data/routes/tokens.d.ts.map +1 -1
  114. package/dist/apps/data/routes/tokens.js +26 -14
  115. package/dist/apps/data/routes/tokens.js.map +1 -1
  116. package/dist/apps/data/routes/transfers.d.ts +93 -77
  117. package/dist/apps/data/routes/transfers.d.ts.map +1 -1
  118. package/dist/apps/data/routes/transfers.js +9 -7
  119. package/dist/apps/data/routes/transfers.js.map +1 -1
  120. package/dist/apps/data/routes/valuation.d.ts +32 -32
  121. package/dist/apps/data/routes/verified-tokens.d.ts +88 -88
  122. package/dist/apps/data/routes/verified-tokens.d.ts.map +1 -1
  123. package/dist/apps/data/routes/verified-tokens.js +64 -20
  124. package/dist/apps/data/routes/verified-tokens.js.map +1 -1
  125. package/dist/apps/data/routes/webhooks.d.ts +614 -177
  126. package/dist/apps/data/routes/webhooks.d.ts.map +1 -1
  127. package/dist/apps/data/routes/webhooks.js +308 -205
  128. package/dist/apps/data/routes/webhooks.js.map +1 -1
  129. package/dist/apps/data/routes/zones.d.ts +31 -31
  130. package/dist/apps/data/routes/zones.d.ts.map +1 -1
  131. package/dist/apps/data/routes/zones.js +20 -12
  132. package/dist/apps/data/routes/zones.js.map +1 -1
  133. package/dist/apps/docs/reference.js +2 -2
  134. package/dist/apps/docs/reference.js.map +1 -1
  135. package/dist/apps/index.d.ts +1 -1
  136. package/dist/apps/index.d.ts.map +1 -1
  137. package/dist/apps/index.js +1 -1
  138. package/dist/apps/index.js.map +1 -1
  139. package/dist/apps/management/App.d.ts +3780 -3402
  140. package/dist/apps/management/App.d.ts.map +1 -1
  141. package/dist/apps/management/App.js +5 -14
  142. package/dist/apps/management/App.js.map +1 -1
  143. package/dist/apps/management/Billing.d.ts +48 -7
  144. package/dist/apps/management/Billing.d.ts.map +1 -1
  145. package/dist/apps/management/Billing.js +204 -25
  146. package/dist/apps/management/Billing.js.map +1 -1
  147. package/dist/apps/management/routes/api-keys.d.ts +317 -215
  148. package/dist/apps/management/routes/api-keys.d.ts.map +1 -1
  149. package/dist/apps/management/routes/api-keys.js +43 -15
  150. package/dist/apps/management/routes/api-keys.js.map +1 -1
  151. package/dist/apps/management/routes/billing.d.ts +290 -4
  152. package/dist/apps/management/routes/billing.d.ts.map +1 -1
  153. package/dist/apps/management/routes/billing.js +274 -49
  154. package/dist/apps/management/routes/billing.js.map +1 -1
  155. package/dist/apps/management/routes/faucet.d.ts +6 -6
  156. package/dist/apps/management/routes/faucet.js +1 -1
  157. package/dist/apps/management/routes/faucet.js.map +1 -1
  158. package/dist/apps/management/routes/invitations.d.ts +213 -138
  159. package/dist/apps/management/routes/invitations.d.ts.map +1 -1
  160. package/dist/apps/management/routes/invitations.js +117 -13
  161. package/dist/apps/management/routes/invitations.js.map +1 -1
  162. package/dist/apps/management/routes/invite-links.d.ts +166 -166
  163. package/dist/apps/management/routes/me.d.ts.map +1 -1
  164. package/dist/apps/management/routes/me.js +6 -2
  165. package/dist/apps/management/routes/me.js.map +1 -1
  166. package/dist/apps/management/routes/members.d.ts +30 -30
  167. package/dist/apps/management/routes/orgs.d.ts +103 -87
  168. package/dist/apps/management/routes/orgs.d.ts.map +1 -1
  169. package/dist/apps/management/routes/orgs.js +52 -12
  170. package/dist/apps/management/routes/orgs.js.map +1 -1
  171. package/dist/apps/management/routes/projects.d.ts +125 -125
  172. package/dist/apps/management/routes/projects.d.ts.map +1 -1
  173. package/dist/apps/management/routes/projects.js +6 -1
  174. package/dist/apps/management/routes/projects.js.map +1 -1
  175. package/dist/apps/management/routes/scopes.d.ts.map +1 -1
  176. package/dist/apps/management/routes/scopes.js +4 -1
  177. package/dist/apps/management/routes/scopes.js.map +1 -1
  178. package/dist/apps/management/routes/usage.d.ts +24 -24
  179. package/dist/apps/management/routes/usage.js +21 -4
  180. package/dist/apps/management/routes/usage.js.map +1 -1
  181. package/dist/apps/management/routes/verified-token-requests.d.ts +95 -95
  182. package/dist/apps/management/routes/verified-token-requests.d.ts.map +1 -1
  183. package/dist/apps/management/routes/verified-token-requests.js +7 -9
  184. package/dist/apps/management/routes/verified-token-requests.js.map +1 -1
  185. package/dist/apps/management/routes/webhooks.d.ts +682 -616
  186. package/dist/apps/management/routes/webhooks.d.ts.map +1 -1
  187. package/dist/apps/management/routes/webhooks.js +58 -12
  188. package/dist/apps/management/routes/webhooks.js.map +1 -1
  189. package/dist/apps/mcp.d.ts +1 -1
  190. package/dist/apps/mcp.d.ts.map +1 -1
  191. package/dist/apps/mcp.js +23 -10
  192. package/dist/apps/mcp.js.map +1 -1
  193. package/dist/apps/mpp/App.d.ts +44 -44
  194. package/dist/apps/mpp/App.d.ts.map +1 -1
  195. package/dist/apps/mpp/App.js +35 -7
  196. package/dist/apps/mpp/App.js.map +1 -1
  197. package/dist/apps/mpp/internal/Adapter.d.ts +2 -0
  198. package/dist/apps/mpp/internal/Adapter.d.ts.map +1 -1
  199. package/dist/apps/mpp/internal/Adapter.js +30 -1
  200. package/dist/apps/mpp/internal/Adapter.js.map +1 -1
  201. package/dist/apps/mpp/internal/Policy.d.ts +22 -4
  202. package/dist/apps/mpp/internal/Policy.d.ts.map +1 -1
  203. package/dist/apps/mpp/internal/Policy.js +24 -6
  204. package/dist/apps/mpp/internal/Policy.js.map +1 -1
  205. package/dist/apps/mpp/internal/Sponsorship.d.ts +3 -0
  206. package/dist/apps/mpp/internal/Sponsorship.d.ts.map +1 -1
  207. package/dist/apps/mpp/internal/Sponsorship.js +6 -3
  208. package/dist/apps/mpp/internal/Sponsorship.js.map +1 -1
  209. package/dist/apps/relay/App.d.ts +2 -0
  210. package/dist/apps/relay/App.d.ts.map +1 -1
  211. package/dist/apps/relay/App.js +134 -75
  212. package/dist/apps/relay/App.js.map +1 -1
  213. package/dist/apps/relay/Sponsorships.d.ts +5 -3
  214. package/dist/apps/relay/Sponsorships.d.ts.map +1 -1
  215. package/dist/apps/relay/Sponsorships.js +209 -28
  216. package/dist/apps/relay/Sponsorships.js.map +1 -1
  217. package/dist/apps/{funding → routes}/Access.d.ts +4 -4
  218. package/dist/apps/routes/Access.d.ts.map +1 -0
  219. package/dist/apps/{funding → routes}/Access.js +4 -4
  220. package/dist/apps/routes/Access.js.map +1 -0
  221. package/dist/apps/{funding → routes}/App.d.ts +418 -124
  222. package/dist/apps/{funding → routes}/App.d.ts.map +1 -1
  223. package/dist/apps/{funding → routes}/App.js +16 -16
  224. package/dist/apps/routes/App.js.map +1 -0
  225. package/dist/apps/routes/Inventory.d.ts.map +1 -0
  226. package/dist/apps/{funding → routes}/Inventory.js +2 -2
  227. package/dist/apps/routes/Inventory.js.map +1 -0
  228. package/dist/apps/routes/index.d.ts +2 -0
  229. package/dist/apps/routes/index.d.ts.map +1 -0
  230. package/dist/apps/routes/index.js +2 -0
  231. package/dist/apps/routes/index.js.map +1 -0
  232. package/dist/apps/{funding → routes}/routes/chains.d.ts +32 -32
  233. package/dist/apps/routes/routes/chains.d.ts.map +1 -0
  234. package/dist/apps/{funding → routes}/routes/chains.js +25 -25
  235. package/dist/apps/routes/routes/chains.js.map +1 -0
  236. package/dist/apps/{funding → routes}/routes/deposit-addresses.d.ts +107 -43
  237. package/dist/apps/routes/routes/deposit-addresses.d.ts.map +1 -0
  238. package/dist/apps/{funding → routes}/routes/deposit-addresses.js +497 -222
  239. package/dist/apps/routes/routes/deposit-addresses.js.map +1 -0
  240. package/dist/apps/{funding → routes}/routes/providers.d.ts +8 -8
  241. package/dist/apps/routes/routes/providers.d.ts.map +1 -0
  242. package/dist/apps/routes/routes/providers.js +57 -0
  243. package/dist/apps/routes/routes/providers.js.map +1 -0
  244. package/dist/apps/{funding → routes}/routes/quotes.d.ts +106 -103
  245. package/dist/apps/routes/routes/quotes.d.ts.map +1 -0
  246. package/dist/apps/{funding → routes}/routes/quotes.js +55 -38
  247. package/dist/apps/routes/routes/quotes.js.map +1 -0
  248. package/dist/apps/{funding → routes}/routes/transfers.d.ts +733 -428
  249. package/dist/apps/routes/routes/transfers.d.ts.map +1 -0
  250. package/dist/apps/routes/routes/transfers.js +1140 -0
  251. package/dist/apps/routes/routes/transfers.js.map +1 -0
  252. package/dist/cli/Cli.d.ts +30 -0
  253. package/dist/cli/Cli.d.ts.map +1 -1
  254. package/dist/cli/commands/admin.d.ts +36 -0
  255. package/dist/cli/commands/admin.d.ts.map +1 -1
  256. package/dist/cli/commands/admin.js +273 -0
  257. package/dist/cli/commands/admin.js.map +1 -1
  258. package/dist/cloudflare.d.ts +16 -14
  259. package/dist/cloudflare.d.ts.map +1 -1
  260. package/dist/cloudflare.js +26 -21
  261. package/dist/cloudflare.js.map +1 -1
  262. package/dist/db/Db.d.ts +63 -21
  263. package/dist/db/Db.d.ts.map +1 -1
  264. package/dist/db/Db.js +1035 -15
  265. package/dist/db/Db.js.map +1 -1
  266. package/dist/db/Schema.d.ts +780 -133
  267. package/dist/db/Schema.d.ts.map +1 -1
  268. package/dist/db/Schema.js +575 -162
  269. package/dist/db/Schema.js.map +1 -1
  270. package/dist/db/tables/apiKeyAdmissionBootstraps.d.ts +4 -0
  271. package/dist/db/tables/apiKeyAdmissionBootstraps.d.ts.map +1 -0
  272. package/dist/db/tables/apiKeyAdmissionBootstraps.js +2 -0
  273. package/dist/db/tables/apiKeyAdmissionBootstraps.js.map +1 -0
  274. package/dist/db/tables/apiKeyAdmissions.d.ts +73 -0
  275. package/dist/db/tables/apiKeyAdmissions.d.ts.map +1 -0
  276. package/dist/db/tables/apiKeyAdmissions.js +142 -0
  277. package/dist/db/tables/apiKeyAdmissions.js.map +1 -0
  278. package/dist/db/tables/apiKeyOwnerAdmissions.d.ts +4 -0
  279. package/dist/db/tables/apiKeyOwnerAdmissions.d.ts.map +1 -0
  280. package/dist/db/tables/apiKeyOwnerAdmissions.js +2 -0
  281. package/dist/db/tables/apiKeyOwnerAdmissions.js.map +1 -0
  282. package/dist/db/tables/apiKeyOwnerTombstones.d.ts +20 -0
  283. package/dist/db/tables/apiKeyOwnerTombstones.d.ts.map +1 -0
  284. package/dist/db/tables/apiKeyOwnerTombstones.js +57 -0
  285. package/dist/db/tables/apiKeyOwnerTombstones.js.map +1 -0
  286. package/dist/db/tables/apiKeyRevocations.d.ts +21 -0
  287. package/dist/db/tables/apiKeyRevocations.d.ts.map +1 -0
  288. package/dist/db/tables/apiKeyRevocations.js +98 -0
  289. package/dist/db/tables/apiKeyRevocations.js.map +1 -0
  290. package/dist/db/tables/authAccounts.d.ts +47 -0
  291. package/dist/db/tables/authAccounts.d.ts.map +1 -0
  292. package/dist/db/tables/authAccounts.js +72 -0
  293. package/dist/db/tables/authAccounts.js.map +1 -0
  294. package/dist/db/tables/authSessions.d.ts +12 -0
  295. package/dist/db/tables/authSessions.d.ts.map +1 -0
  296. package/dist/db/tables/authSessions.js +2 -0
  297. package/dist/db/tables/authSessions.js.map +1 -0
  298. package/dist/db/tables/authVerifications.d.ts +12 -0
  299. package/dist/db/tables/authVerifications.d.ts.map +1 -0
  300. package/dist/db/tables/authVerifications.js +2 -0
  301. package/dist/db/tables/authVerifications.js.map +1 -0
  302. package/dist/db/tables/invitations.d.ts +17 -1
  303. package/dist/db/tables/invitations.d.ts.map +1 -1
  304. package/dist/db/tables/invitations.js +123 -43
  305. package/dist/db/tables/invitations.js.map +1 -1
  306. package/dist/db/tables/memberships.d.ts +8 -0
  307. package/dist/db/tables/memberships.d.ts.map +1 -1
  308. package/dist/db/tables/memberships.js +51 -2
  309. package/dist/db/tables/memberships.js.map +1 -1
  310. package/dist/db/tables/organizations.d.ts +32 -10
  311. package/dist/db/tables/organizations.d.ts.map +1 -1
  312. package/dist/db/tables/organizations.js +110 -49
  313. package/dist/db/tables/organizations.js.map +1 -1
  314. package/dist/db/tables/projects.d.ts +2 -0
  315. package/dist/db/tables/projects.d.ts.map +1 -1
  316. package/dist/db/tables/projects.js +12 -3
  317. package/dist/db/tables/projects.js.map +1 -1
  318. package/dist/db/tables/requestUsage.d.ts.map +1 -1
  319. package/dist/db/tables/requestUsage.js.map +1 -1
  320. package/dist/db/tables/rewardAccounts.d.ts +86 -0
  321. package/dist/db/tables/rewardAccounts.d.ts.map +1 -0
  322. package/dist/db/tables/rewardAccounts.js +88 -0
  323. package/dist/db/tables/rewardAccounts.js.map +1 -0
  324. package/dist/db/tables/rewardCampaignDistributors.d.ts +36 -0
  325. package/dist/db/tables/rewardCampaignDistributors.d.ts.map +1 -0
  326. package/dist/db/tables/rewardCampaignDistributors.js +30 -0
  327. package/dist/db/tables/rewardCampaignDistributors.js.map +1 -0
  328. package/dist/db/tables/rewardCampaigns.d.ts +171 -0
  329. package/dist/db/tables/rewardCampaigns.d.ts.map +1 -0
  330. package/dist/db/tables/rewardCampaigns.js +392 -0
  331. package/dist/db/tables/rewardCampaigns.js.map +1 -0
  332. package/dist/db/tables/rewardCredits.d.ts +53 -0
  333. package/dist/db/tables/rewardCredits.d.ts.map +1 -0
  334. package/dist/db/tables/rewardCredits.js +63 -0
  335. package/dist/db/tables/rewardCredits.js.map +1 -0
  336. package/dist/db/tables/rewardEligibilityAssociations.d.ts +61 -0
  337. package/dist/db/tables/rewardEligibilityAssociations.d.ts.map +1 -0
  338. package/dist/db/tables/rewardEligibilityAssociations.js +103 -0
  339. package/dist/db/tables/rewardEligibilityAssociations.js.map +1 -0
  340. package/dist/db/tables/rewardRuns.d.ts +188 -0
  341. package/dist/db/tables/rewardRuns.d.ts.map +1 -0
  342. package/dist/db/tables/rewardRuns.js +278 -0
  343. package/dist/db/tables/rewardRuns.js.map +1 -0
  344. package/dist/db/tables/rewardTransactionAttempts.d.ts +100 -0
  345. package/dist/db/tables/rewardTransactionAttempts.d.ts.map +1 -0
  346. package/dist/db/tables/rewardTransactionAttempts.js +163 -0
  347. package/dist/db/tables/rewardTransactionAttempts.js.map +1 -0
  348. package/dist/db/tables/routesCatalog.d.ts +58 -0
  349. package/dist/db/tables/routesCatalog.d.ts.map +1 -0
  350. package/dist/db/tables/{fundingCatalog.js → routesCatalog.js} +19 -19
  351. package/dist/db/tables/routesCatalog.js.map +1 -0
  352. package/dist/db/tables/routesDepositAddresses.d.ts +476 -0
  353. package/dist/db/tables/routesDepositAddresses.d.ts.map +1 -0
  354. package/dist/db/tables/routesDepositAddresses.js +587 -0
  355. package/dist/db/tables/routesDepositAddresses.js.map +1 -0
  356. package/dist/db/tables/{fundingDepositRequestObservations.d.ts → routesDepositRequestObservations.d.ts} +6 -6
  357. package/dist/db/tables/routesDepositRequestObservations.d.ts.map +1 -0
  358. package/dist/db/tables/{fundingDepositRequestObservations.js → routesDepositRequestObservations.js} +6 -6
  359. package/dist/db/tables/routesDepositRequestObservations.js.map +1 -0
  360. package/dist/db/tables/{fundingDeposits.d.ts → routesDeposits.d.ts} +210 -22
  361. package/dist/db/tables/routesDeposits.d.ts.map +1 -0
  362. package/dist/db/tables/routesDeposits.js +576 -0
  363. package/dist/db/tables/routesDeposits.js.map +1 -0
  364. package/dist/db/tables/routesIdempotency.d.ts +166 -0
  365. package/dist/db/tables/routesIdempotency.d.ts.map +1 -0
  366. package/dist/db/tables/routesIdempotency.js +330 -0
  367. package/dist/db/tables/routesIdempotency.js.map +1 -0
  368. package/dist/db/tables/routesSubsidies.d.ts +27 -0
  369. package/dist/db/tables/routesSubsidies.d.ts.map +1 -0
  370. package/dist/db/tables/routesSubsidies.js +45 -0
  371. package/dist/db/tables/routesSubsidies.js.map +1 -0
  372. package/dist/db/tables/{fundingTransferEvents.d.ts → routesTransferEvents.d.ts} +3 -3
  373. package/dist/db/tables/routesTransferEvents.d.ts.map +1 -0
  374. package/dist/db/tables/{fundingTransferEvents.js → routesTransferEvents.js} +3 -3
  375. package/dist/db/tables/routesTransferEvents.js.map +1 -0
  376. package/dist/db/tables/routesTransferSubsidies.d.ts +19 -0
  377. package/dist/db/tables/routesTransferSubsidies.d.ts.map +1 -0
  378. package/dist/db/tables/routesTransferSubsidies.js +17 -0
  379. package/dist/db/tables/routesTransferSubsidies.js.map +1 -0
  380. package/dist/db/tables/routesTransferSubsidyNonces.d.ts +51 -0
  381. package/dist/db/tables/routesTransferSubsidyNonces.d.ts.map +1 -0
  382. package/dist/db/tables/routesTransferSubsidyNonces.js +82 -0
  383. package/dist/db/tables/routesTransferSubsidyNonces.js.map +1 -0
  384. package/dist/db/tables/routesTransferTransactions.d.ts +77 -0
  385. package/dist/db/tables/routesTransferTransactions.d.ts.map +1 -0
  386. package/dist/db/tables/{fundingTransferTransactions.js → routesTransferTransactions.js} +31 -13
  387. package/dist/db/tables/routesTransferTransactions.js.map +1 -0
  388. package/dist/db/tables/routesTransfers.d.ts +319 -0
  389. package/dist/db/tables/routesTransfers.d.ts.map +1 -0
  390. package/dist/db/tables/routesTransfers.js +372 -0
  391. package/dist/db/tables/routesTransfers.js.map +1 -0
  392. package/dist/db/tables/sponsoredTransactions.d.ts +75 -20
  393. package/dist/db/tables/sponsoredTransactions.d.ts.map +1 -1
  394. package/dist/db/tables/sponsoredTransactions.js +124 -54
  395. package/dist/db/tables/sponsoredTransactions.js.map +1 -1
  396. package/dist/db/tables/sponsorshipAttributions.d.ts +69 -0
  397. package/dist/db/tables/sponsorshipAttributions.d.ts.map +1 -0
  398. package/dist/db/tables/sponsorshipAttributions.js +77 -0
  399. package/dist/db/tables/sponsorshipAttributions.js.map +1 -0
  400. package/dist/db/tables/sponsorshipReconciliationCursors.d.ts +22 -0
  401. package/dist/db/tables/sponsorshipReconciliationCursors.d.ts.map +1 -0
  402. package/dist/db/tables/sponsorshipReconciliationCursors.js +45 -0
  403. package/dist/db/tables/sponsorshipReconciliationCursors.js.map +1 -0
  404. package/dist/db/tables/stripeCustomers.d.ts +11 -0
  405. package/dist/db/tables/stripeCustomers.d.ts.map +1 -1
  406. package/dist/db/tables/stripeCustomers.js +13 -0
  407. package/dist/db/tables/stripeCustomers.js.map +1 -1
  408. package/dist/db/tables/users.d.ts +17 -1
  409. package/dist/db/tables/users.d.ts.map +1 -1
  410. package/dist/db/tables/users.js +47 -2
  411. package/dist/db/tables/users.js.map +1 -1
  412. package/dist/db/tables/verifiedTokenRequests.d.ts +21 -4
  413. package/dist/db/tables/verifiedTokenRequests.d.ts.map +1 -1
  414. package/dist/db/tables/verifiedTokenRequests.js +65 -44
  415. package/dist/db/tables/verifiedTokenRequests.js.map +1 -1
  416. package/dist/db/tables/webhookQueueEvents.d.ts.map +1 -1
  417. package/dist/db/tables/webhookQueueEvents.js +5 -1
  418. package/dist/db/tables/webhookQueueEvents.js.map +1 -1
  419. package/dist/db/tables/webhookSubscriptions.d.ts +19 -11
  420. package/dist/db/tables/webhookSubscriptions.d.ts.map +1 -1
  421. package/dist/db/tables/webhookSubscriptions.js +45 -13
  422. package/dist/db/tables/webhookSubscriptions.js.map +1 -1
  423. package/dist/handlers/internal/executionError.d.ts +2 -2
  424. package/dist/handlers/internal/executionError.d.ts.map +1 -1
  425. package/dist/handlers/internal/executionError.js +1 -2
  426. package/dist/handlers/internal/executionError.js.map +1 -1
  427. package/dist/handlers/internal/multisig.d.ts +4 -232
  428. package/dist/handlers/internal/multisig.d.ts.map +1 -1
  429. package/dist/handlers/internal/multisig.js +11 -537
  430. package/dist/handlers/internal/multisig.js.map +1 -1
  431. package/dist/handlers/internal/sponsorship.d.ts +19 -8
  432. package/dist/handlers/internal/sponsorship.d.ts.map +1 -1
  433. package/dist/handlers/internal/sponsorship.js +13 -9
  434. package/dist/handlers/internal/sponsorship.js.map +1 -1
  435. package/dist/handlers/relay.d.ts +9 -12
  436. package/dist/handlers/relay.d.ts.map +1 -1
  437. package/dist/handlers/relay.js +81 -85
  438. package/dist/handlers/relay.js.map +1 -1
  439. package/dist/index.d.ts +0 -17
  440. package/dist/index.d.ts.map +1 -1
  441. package/dist/index.js +0 -17
  442. package/dist/index.js.map +1 -1
  443. package/dist/internal/AssetResponse.d.ts +12 -0
  444. package/dist/internal/AssetResponse.d.ts.map +1 -0
  445. package/dist/internal/AssetResponse.js +21 -0
  446. package/dist/internal/AssetResponse.js.map +1 -0
  447. package/dist/internal/Auth.d.ts +64 -12
  448. package/dist/internal/Auth.d.ts.map +1 -1
  449. package/dist/internal/Auth.js +631 -180
  450. package/dist/internal/Auth.js.map +1 -1
  451. package/dist/internal/BetterAuth.d.ts +1488 -0
  452. package/dist/internal/BetterAuth.d.ts.map +1 -0
  453. package/dist/internal/BetterAuth.js +253 -0
  454. package/dist/internal/BetterAuth.js.map +1 -0
  455. package/dist/internal/Cache.d.ts +2 -0
  456. package/dist/internal/Cache.d.ts.map +1 -1
  457. package/dist/internal/Cache.js +2 -0
  458. package/dist/internal/Cache.js.map +1 -1
  459. package/dist/internal/EarnRates.d.ts +26 -3
  460. package/dist/internal/EarnRates.d.ts.map +1 -1
  461. package/dist/internal/EarnRates.js +84 -19
  462. package/dist/internal/EarnRates.js.map +1 -1
  463. package/dist/internal/EarnSharePrices.d.ts +120 -0
  464. package/dist/internal/EarnSharePrices.d.ts.map +1 -0
  465. package/dist/internal/EarnSharePrices.js +179 -0
  466. package/dist/internal/EarnSharePrices.js.map +1 -0
  467. package/dist/internal/EarnVaults.d.ts +4 -0
  468. package/dist/internal/EarnVaults.d.ts.map +1 -1
  469. package/dist/internal/EarnVaults.js +27 -10
  470. package/dist/internal/EarnVaults.js.map +1 -1
  471. package/dist/internal/Email.d.ts +37 -0
  472. package/dist/internal/Email.d.ts.map +1 -0
  473. package/dist/internal/Email.js +16 -0
  474. package/dist/internal/Email.js.map +1 -0
  475. package/dist/internal/Log.d.ts +32 -28
  476. package/dist/internal/Log.d.ts.map +1 -1
  477. package/dist/internal/Log.js +18 -11
  478. package/dist/internal/Log.js.map +1 -1
  479. package/dist/internal/MetricSink.d.ts +3 -0
  480. package/dist/internal/MetricSink.d.ts.map +1 -1
  481. package/dist/internal/MetricSink.js +67 -8
  482. package/dist/internal/MetricSink.js.map +1 -1
  483. package/dist/internal/Mpp.d.ts.map +1 -1
  484. package/dist/internal/Mpp.js +20 -25
  485. package/dist/internal/Mpp.js.map +1 -1
  486. package/dist/internal/OpenApi.d.ts +26 -3
  487. package/dist/internal/OpenApi.d.ts.map +1 -1
  488. package/dist/internal/OpenApi.js +25 -10
  489. package/dist/internal/OpenApi.js.map +1 -1
  490. package/dist/internal/Provider.d.ts +1 -1
  491. package/dist/internal/Provider.d.ts.map +1 -1
  492. package/dist/internal/RateLimit.d.ts.map +1 -1
  493. package/dist/internal/RateLimit.js +13 -1
  494. package/dist/internal/RateLimit.js.map +1 -1
  495. package/dist/internal/Store.d.ts +16 -0
  496. package/dist/internal/Store.d.ts.map +1 -1
  497. package/dist/internal/Store.js +59 -8
  498. package/dist/internal/Store.js.map +1 -1
  499. package/dist/internal/Tidx.d.ts +9 -2
  500. package/dist/internal/Tidx.d.ts.map +1 -1
  501. package/dist/internal/Tidx.js +78 -11
  502. package/dist/internal/Tidx.js.map +1 -1
  503. package/dist/internal/Timing.d.ts +26 -0
  504. package/dist/internal/Timing.d.ts.map +1 -1
  505. package/dist/internal/Timing.js +63 -5
  506. package/dist/internal/Timing.js.map +1 -1
  507. package/dist/internal/VercelOidc.d.ts +94 -0
  508. package/dist/internal/VercelOidc.d.ts.map +1 -0
  509. package/dist/internal/VercelOidc.js +128 -0
  510. package/dist/internal/VercelOidc.js.map +1 -0
  511. package/dist/internal/VerifiedTokens.d.ts +2 -8
  512. package/dist/internal/VerifiedTokens.d.ts.map +1 -1
  513. package/dist/internal/VerifiedTokens.js +24 -24
  514. package/dist/internal/VerifiedTokens.js.map +1 -1
  515. package/dist/internal/Viem.d.ts +30 -2067
  516. package/dist/internal/Viem.d.ts.map +1 -1
  517. package/dist/internal/Viem.js +167 -17
  518. package/dist/internal/Viem.js.map +1 -1
  519. package/dist/internal/Webhooks.d.ts +12 -4
  520. package/dist/internal/Webhooks.d.ts.map +1 -1
  521. package/dist/internal/Webhooks.js +9 -3
  522. package/dist/internal/Webhooks.js.map +1 -1
  523. package/dist/internal/ZoneRpc.d.ts +7 -0
  524. package/dist/internal/ZoneRpc.d.ts.map +1 -0
  525. package/dist/internal/ZoneRpc.js +49 -0
  526. package/dist/internal/ZoneRpc.js.map +1 -0
  527. package/dist/internal/index.d.ts +3 -1
  528. package/dist/internal/index.d.ts.map +1 -1
  529. package/dist/internal/index.js +3 -1
  530. package/dist/internal/index.js.map +1 -1
  531. package/dist/internal/rewards/Audit.d.ts +88 -0
  532. package/dist/internal/rewards/Audit.d.ts.map +1 -0
  533. package/dist/internal/rewards/Audit.js +134 -0
  534. package/dist/internal/rewards/Audit.js.map +1 -0
  535. package/dist/internal/rewards/Campaigns.d.ts +572 -0
  536. package/dist/internal/rewards/Campaigns.d.ts.map +1 -0
  537. package/dist/internal/rewards/Campaigns.js +531 -0
  538. package/dist/internal/rewards/Campaigns.js.map +1 -0
  539. package/dist/internal/rewards/Credits.d.ts +76 -0
  540. package/dist/internal/rewards/Credits.d.ts.map +1 -0
  541. package/dist/internal/rewards/Credits.js +95 -0
  542. package/dist/internal/rewards/Credits.js.map +1 -0
  543. package/dist/internal/rewards/Events.d.ts +100 -0
  544. package/dist/internal/rewards/Events.d.ts.map +1 -0
  545. package/dist/internal/rewards/Events.js +340 -0
  546. package/dist/internal/rewards/Events.js.map +1 -0
  547. package/dist/internal/rewards/Projection.d.ts +237 -0
  548. package/dist/internal/rewards/Projection.d.ts.map +1 -0
  549. package/dist/internal/rewards/Projection.js +616 -0
  550. package/dist/internal/rewards/Projection.js.map +1 -0
  551. package/dist/internal/rewards/Rates.d.ts +44 -0
  552. package/dist/internal/rewards/Rates.d.ts.map +1 -0
  553. package/dist/internal/rewards/Rates.js +60 -0
  554. package/dist/internal/rewards/Rates.js.map +1 -0
  555. package/dist/internal/rewards/Read.d.ts +158 -0
  556. package/dist/internal/rewards/Read.d.ts.map +1 -0
  557. package/dist/internal/rewards/Read.js +292 -0
  558. package/dist/internal/rewards/Read.js.map +1 -0
  559. package/dist/internal/rewards/Runner.d.ts +164 -0
  560. package/dist/internal/rewards/Runner.d.ts.map +1 -0
  561. package/dist/internal/rewards/Runner.js +1778 -0
  562. package/dist/internal/rewards/Runner.js.map +1 -0
  563. package/dist/internal/rewards/Signer.d.ts +224 -0
  564. package/dist/internal/rewards/Signer.d.ts.map +1 -0
  565. package/dist/internal/rewards/Signer.js +135 -0
  566. package/dist/internal/rewards/Signer.js.map +1 -0
  567. package/dist/internal/rewards/index.d.ts +15 -0
  568. package/dist/internal/rewards/index.d.ts.map +1 -0
  569. package/dist/internal/rewards/index.js +15 -0
  570. package/dist/internal/rewards/index.js.map +1 -0
  571. package/dist/internal/{funding → routes}/Action.d.ts +12 -1
  572. package/dist/internal/routes/Action.d.ts.map +1 -0
  573. package/dist/internal/{funding → routes}/Action.js +17 -9
  574. package/dist/internal/routes/Action.js.map +1 -0
  575. package/dist/internal/{funding → routes}/Catalog.d.ts +20 -20
  576. package/dist/internal/routes/Catalog.d.ts.map +1 -0
  577. package/dist/internal/{funding → routes}/Catalog.js +29 -29
  578. package/dist/internal/routes/Catalog.js.map +1 -0
  579. package/dist/internal/{funding → routes}/Chain.d.ts +10 -10
  580. package/dist/internal/routes/Chain.d.ts.map +1 -0
  581. package/dist/internal/{funding → routes}/Chain.js +3 -3
  582. package/dist/internal/routes/Chain.js.map +1 -0
  583. package/dist/internal/{funding → routes}/Deposit.d.ts +45 -23
  584. package/dist/internal/routes/Deposit.d.ts.map +1 -0
  585. package/dist/internal/{funding → routes}/Deposit.js +60 -27
  586. package/dist/internal/routes/Deposit.js.map +1 -0
  587. package/dist/internal/{funding → routes}/DepositAddress.d.ts +56 -27
  588. package/dist/internal/routes/DepositAddress.d.ts.map +1 -0
  589. package/dist/internal/{funding → routes}/DepositAddress.js +95 -33
  590. package/dist/internal/routes/DepositAddress.js.map +1 -0
  591. package/dist/internal/{funding → routes}/DepositWebhook.d.ts +4 -4
  592. package/dist/internal/routes/DepositWebhook.d.ts.map +1 -0
  593. package/dist/internal/{funding → routes}/DepositWebhook.js +4 -4
  594. package/dist/internal/routes/DepositWebhook.js.map +1 -0
  595. package/dist/internal/routes/Economics.d.ts +25 -0
  596. package/dist/internal/routes/Economics.d.ts.map +1 -0
  597. package/dist/internal/routes/Economics.js +28 -0
  598. package/dist/internal/routes/Economics.js.map +1 -0
  599. package/dist/internal/{funding → routes}/Evidence.d.ts +3 -3
  600. package/dist/internal/routes/Evidence.d.ts.map +1 -0
  601. package/dist/internal/{funding → routes}/Evidence.js +7 -7
  602. package/dist/internal/routes/Evidence.js.map +1 -0
  603. package/dist/internal/routes/Observability.d.ts +154 -0
  604. package/dist/internal/routes/Observability.d.ts.map +1 -0
  605. package/dist/internal/routes/Observability.js +389 -0
  606. package/dist/internal/routes/Observability.js.map +1 -0
  607. package/dist/internal/{funding → routes}/Provider.d.ts +311 -105
  608. package/dist/internal/routes/Provider.d.ts.map +1 -0
  609. package/dist/internal/{funding → routes}/Provider.js +229 -98
  610. package/dist/internal/routes/Provider.js.map +1 -0
  611. package/dist/internal/{funding → routes}/Reconciliation.d.ts +11 -6
  612. package/dist/internal/routes/Reconciliation.d.ts.map +1 -0
  613. package/dist/internal/{funding → routes}/Reconciliation.js +408 -158
  614. package/dist/internal/routes/Reconciliation.js.map +1 -0
  615. package/dist/internal/routes/Route.d.ts +21 -0
  616. package/dist/internal/routes/Route.d.ts.map +1 -0
  617. package/dist/internal/{funding → routes}/Route.js +1 -1
  618. package/dist/internal/routes/Route.js.map +1 -0
  619. package/dist/internal/{funding → routes}/SourceObservation.d.ts +6 -6
  620. package/dist/internal/routes/SourceObservation.d.ts.map +1 -0
  621. package/dist/internal/{funding → routes}/SourceObservation.js +8 -8
  622. package/dist/internal/routes/SourceObservation.js.map +1 -0
  623. package/dist/internal/{funding → routes}/Subsidy.d.ts +48 -3
  624. package/dist/internal/routes/Subsidy.d.ts.map +1 -0
  625. package/dist/internal/{funding → routes}/Subsidy.js +43 -3
  626. package/dist/internal/routes/Subsidy.js.map +1 -0
  627. package/dist/internal/{funding → routes}/Token.d.ts +4 -4
  628. package/dist/internal/routes/Token.d.ts.map +1 -0
  629. package/dist/internal/{funding → routes}/Token.js +3 -3
  630. package/dist/internal/routes/Token.js.map +1 -0
  631. package/dist/internal/{funding → routes}/Transfer.d.ts +241 -46
  632. package/dist/internal/routes/Transfer.d.ts.map +1 -0
  633. package/dist/internal/routes/Transfer.js +728 -0
  634. package/dist/internal/routes/Transfer.js.map +1 -0
  635. package/dist/internal/{funding → routes}/TransferReconciliation.d.ts +13 -10
  636. package/dist/internal/routes/TransferReconciliation.d.ts.map +1 -0
  637. package/dist/internal/routes/TransferReconciliation.js +422 -0
  638. package/dist/internal/routes/TransferReconciliation.js.map +1 -0
  639. package/dist/internal/routes/TransferSubsidy.d.ts +201 -0
  640. package/dist/internal/routes/TransferSubsidy.d.ts.map +1 -0
  641. package/dist/internal/routes/TransferSubsidy.js +256 -0
  642. package/dist/internal/routes/TransferSubsidy.js.map +1 -0
  643. package/dist/internal/{funding → routes}/TransferWebhook.d.ts +5 -5
  644. package/dist/internal/routes/TransferWebhook.d.ts.map +1 -0
  645. package/dist/internal/{funding → routes}/TransferWebhook.js +3 -3
  646. package/dist/internal/routes/TransferWebhook.js.map +1 -0
  647. package/dist/internal/{funding → routes}/index.d.ts +2 -0
  648. package/dist/internal/routes/index.d.ts.map +1 -0
  649. package/dist/internal/{funding → routes}/index.js +2 -0
  650. package/dist/internal/routes/index.js.map +1 -0
  651. package/dist/internal/{funding → routes}/providers/across.d.ts +4 -4
  652. package/dist/internal/routes/providers/across.d.ts.map +1 -0
  653. package/dist/internal/{funding → routes}/providers/across.js +13 -13
  654. package/dist/internal/routes/providers/across.js.map +1 -0
  655. package/dist/internal/{funding → routes}/providers/relay.d.ts +21 -12
  656. package/dist/internal/routes/providers/relay.d.ts.map +1 -0
  657. package/dist/internal/{funding → routes}/providers/relay.js +194 -110
  658. package/dist/internal/routes/providers/relay.js.map +1 -0
  659. package/dist/internal/{funding → routes}/providers/rhino.d.ts +4 -4
  660. package/dist/internal/routes/providers/rhino.d.ts.map +1 -0
  661. package/dist/internal/{funding → routes}/providers/rhino.js +10 -10
  662. package/dist/internal/routes/providers/rhino.js.map +1 -0
  663. package/dist/internal/{funding → routes}/providers/squid.d.ts +4 -4
  664. package/dist/internal/routes/providers/squid.d.ts.map +1 -0
  665. package/dist/internal/{funding → routes}/providers/squid.js +14 -14
  666. package/dist/internal/routes/providers/squid.js.map +1 -0
  667. package/dist/internal/{funding → routes}/providers/stargate.d.ts +46 -18
  668. package/dist/internal/routes/providers/stargate.d.ts.map +1 -0
  669. package/dist/internal/routes/providers/stargate.js +898 -0
  670. package/dist/internal/routes/providers/stargate.js.map +1 -0
  671. package/dist/internal/{funding → routes}/providers/symbiosis.d.ts +4 -4
  672. package/dist/internal/routes/providers/symbiosis.d.ts.map +1 -0
  673. package/dist/internal/{funding → routes}/providers/symbiosis.js +30 -20
  674. package/dist/internal/routes/providers/symbiosis.js.map +1 -0
  675. package/dist/internal/webhookDestinations/slack.js +12 -12
  676. package/dist/internal/webhookDestinations/slack.js.map +1 -1
  677. package/dist/providers/index.d.ts +12 -12
  678. package/dist/providers/index.d.ts.map +1 -1
  679. package/dist/providers/index.js +12 -12
  680. package/dist/providers/index.js.map +1 -1
  681. package/dist/server.d.ts +19 -0
  682. package/dist/server.d.ts.map +1 -0
  683. package/dist/server.js +19 -0
  684. package/dist/server.js.map +1 -0
  685. package/package.json +15 -4
  686. package/src/ApiKey.ts +1 -1
  687. package/src/ApiKeys.test.ts +1033 -3
  688. package/src/ApiKeys.ts +489 -48
  689. package/src/App.test-d.ts +1 -1
  690. package/src/App.test.ts +216 -25
  691. package/src/App.ts +334 -31
  692. package/src/Assets.test.ts +2 -2
  693. package/src/Assets.ts +3 -1
  694. package/src/Auth.test-d.ts +1 -1
  695. package/src/Client.test-d.ts +539 -110
  696. package/src/Handler.ts +0 -1
  697. package/src/OpenApi.contract.test.ts +195 -0
  698. package/src/Scope.ts +17 -5
  699. package/src/Webhooks.ts +1 -1
  700. package/src/admin/App.test.ts +30 -2
  701. package/src/admin/App.ts +42 -6
  702. package/src/admin/apps/api-keys.test.ts +267 -5
  703. package/src/admin/apps/api-keys.ts +100 -50
  704. package/src/admin/apps/earn-vaults.test.ts +158 -0
  705. package/src/admin/apps/earn-vaults.ts +679 -6
  706. package/src/admin/apps/organizations.test.ts +306 -17
  707. package/src/admin/apps/organizations.ts +299 -24
  708. package/src/admin/apps/routes-support.test.ts +200 -0
  709. package/src/admin/apps/routes-support.ts +201 -0
  710. package/src/admin/apps/routes.test.ts +450 -0
  711. package/src/admin/apps/routes.ts +896 -0
  712. package/src/admin/apps/scopes.test.ts +15 -5
  713. package/src/admin/apps/subsidies.test.ts +306 -0
  714. package/src/admin/apps/subsidies.ts +457 -0
  715. package/src/admin/apps/verified-tokens.test.ts +40 -3
  716. package/src/admin/apps/verified-tokens.ts +33 -7
  717. package/src/admin/ui/plugin.ts +1 -2
  718. package/src/admin/ui/src/components/RewardCampaignForm.tsx +1009 -0
  719. package/src/admin/ui/src/lib/config.ts +11 -2
  720. package/src/admin/ui/src/lib/earn-vaults.ts +2 -2
  721. package/src/admin/ui/src/lib/organizations.test.ts +83 -50
  722. package/src/admin/ui/src/lib/organizations.ts +106 -25
  723. package/src/admin/ui/src/lib/query-client.ts +1 -1
  724. package/src/admin/ui/src/lib/reward-campaigns.ts +136 -0
  725. package/src/admin/ui/src/lib/routes.test.ts +88 -0
  726. package/src/admin/ui/src/lib/routes.ts +304 -0
  727. package/src/admin/ui/src/lib/subsidies.ts +75 -0
  728. package/src/admin/ui/src/lib/verified-tokens.ts +24 -9
  729. package/src/admin/ui/src/routeTree.gen.ts +63 -0
  730. package/src/admin/ui/src/routes/__root.tsx +13 -2
  731. package/src/admin/ui/src/routes/api-keys.tsx +196 -84
  732. package/src/admin/ui/src/routes/earn.vaults_.$vaultId.edit.tsx +105 -70
  733. package/src/admin/ui/src/routes/organizations.tsx +34 -4
  734. package/src/admin/ui/src/routes/organizations_.$orgId.tsx +239 -23
  735. package/src/admin/ui/src/routes/routes.tsx +1615 -0
  736. package/src/admin/ui/src/routes/routes_.support.tsx +248 -0
  737. package/src/admin/ui/src/routes/subsidies.tsx +799 -0
  738. package/src/admin/ui/src/routes/verified-tokens.tsx +64 -20
  739. package/src/admin/ui.generated.ts +202 -188
  740. package/src/analytics/Analytics.test.ts +108 -18
  741. package/src/analytics/Analytics.ts +38 -6
  742. package/src/analytics/tables/requestEvents.test.ts +100 -0
  743. package/src/analytics/tables/requestEvents.ts +10 -1
  744. package/src/analytics/tables/routesLifecycleIntervals.ts +140 -0
  745. package/src/apps/Zones.test.ts +15 -0
  746. package/src/apps/Zones.ts +52 -5
  747. package/src/apps/composition.test.ts +68 -60
  748. package/src/apps/data/App.test.ts +180 -2
  749. package/src/apps/data/App.ts +88 -28
  750. package/src/apps/data/routes/activities.test.ts +419 -7
  751. package/src/apps/data/routes/activities.ts +683 -216
  752. package/src/apps/data/routes/balances.test.ts +2 -2
  753. package/src/apps/data/routes/blocks.test.ts +46 -1
  754. package/src/apps/data/routes/coingecko.test.ts +419 -1
  755. package/src/apps/data/routes/coingecko.ts +309 -253
  756. package/src/apps/data/routes/earn.discovery.test.ts +274 -0
  757. package/src/apps/data/routes/earn.test.ts +1294 -17
  758. package/src/apps/data/routes/earn.ts +1838 -321
  759. package/src/apps/data/routes/exchanges.test.ts +12 -15
  760. package/src/apps/data/routes/fee-amm.test.ts +243 -0
  761. package/src/apps/data/routes/fee-amm.ts +201 -162
  762. package/src/apps/data/routes/indexer.test.ts +389 -0
  763. package/src/apps/data/routes/indexer.ts +165 -69
  764. package/src/apps/data/routes/receipts.test.ts +1 -1
  765. package/src/apps/data/routes/rpc.test.ts +384 -8
  766. package/src/apps/data/routes/rpc.ts +452 -227
  767. package/src/apps/data/routes/rpc.zone.test.ts +340 -0
  768. package/src/apps/data/routes/tokenlist.test.ts +285 -0
  769. package/src/apps/data/routes/tokenlist.ts +173 -88
  770. package/src/apps/data/routes/tokens.test.ts +93 -3
  771. package/src/apps/data/routes/tokens.ts +39 -23
  772. package/src/apps/data/routes/transactions.test.ts +1 -1
  773. package/src/apps/data/routes/transfers.test.ts +56 -24
  774. package/src/apps/data/routes/transfers.ts +19 -8
  775. package/src/apps/data/routes/valuation.test.ts +1 -1
  776. package/src/apps/data/routes/verified-tokens.test.ts +345 -0
  777. package/src/apps/data/routes/verified-tokens.ts +99 -29
  778. package/src/apps/data/routes/webhooks.scan.test.ts +29 -0
  779. package/src/apps/data/routes/webhooks.test.ts +651 -83
  780. package/src/apps/data/routes/webhooks.ts +1113 -868
  781. package/src/apps/data/routes/zones.test.ts +148 -71
  782. package/src/apps/data/routes/zones.ts +71 -55
  783. package/src/apps/docs/reference.ts +2 -2
  784. package/src/apps/index.ts +1 -1
  785. package/src/apps/management/App.ts +9 -51
  786. package/src/apps/management/Billing.test.ts +375 -14
  787. package/src/apps/management/Billing.ts +265 -29
  788. package/src/apps/management/routes/api-keys.test.ts +269 -7
  789. package/src/apps/management/routes/api-keys.ts +61 -20
  790. package/src/apps/management/routes/billing.test.ts +477 -15
  791. package/src/apps/management/routes/billing.ts +377 -50
  792. package/src/apps/management/routes/faucet.test.ts +1 -1
  793. package/src/apps/management/routes/faucet.ts +1 -1
  794. package/src/apps/management/routes/invitations.test.ts +270 -3
  795. package/src/apps/management/routes/invitations.ts +185 -15
  796. package/src/apps/management/routes/invoicePreview.test.ts +549 -0
  797. package/src/apps/management/routes/me.test.ts +246 -5
  798. package/src/apps/management/routes/me.ts +7 -2
  799. package/src/apps/management/routes/members.test.ts +108 -0
  800. package/src/apps/management/routes/orgs.test.ts +191 -3
  801. package/src/apps/management/routes/orgs.ts +58 -11
  802. package/src/apps/management/routes/projects.test.ts +33 -3
  803. package/src/apps/management/routes/projects.ts +6 -1
  804. package/src/apps/management/routes/scopes.test.ts +30 -2
  805. package/src/apps/management/routes/scopes.ts +4 -1
  806. package/src/apps/management/routes/usage.test.ts +32 -0
  807. package/src/apps/management/routes/usage.ts +22 -4
  808. package/src/apps/management/routes/verified-token-requests.test.ts +16 -2
  809. package/src/apps/management/routes/verified-token-requests.ts +7 -10
  810. package/src/apps/management/routes/webhooks.test.ts +49 -26
  811. package/src/apps/management/routes/webhooks.ts +78 -22
  812. package/src/apps/mcp.test.ts +113 -30
  813. package/src/apps/mcp.ts +22 -10
  814. package/src/apps/mpp/App.ts +37 -7
  815. package/src/apps/mpp/Mpp.test.ts +49 -8
  816. package/src/apps/mpp/Mpp.zone.test.ts +219 -0
  817. package/src/apps/mpp/internal/Adapter.ts +34 -0
  818. package/src/apps/mpp/internal/Policy.test.ts +86 -31
  819. package/src/apps/mpp/internal/Policy.ts +49 -7
  820. package/src/apps/mpp/internal/Sponsorship.test.ts +207 -0
  821. package/src/apps/mpp/internal/Sponsorship.ts +9 -3
  822. package/src/apps/relay/App.test.ts +839 -64
  823. package/src/apps/relay/App.ts +148 -81
  824. package/src/apps/relay/App.zone-billing.test.ts +257 -0
  825. package/src/apps/relay/Sponsorships.test.ts +67 -4
  826. package/src/apps/relay/Sponsorships.ts +233 -32
  827. package/src/apps/relay/Sponsorships.zone.test.ts +102 -0
  828. package/src/apps/{funding → routes}/Access.ts +6 -6
  829. package/src/apps/routes/App.test.ts +165 -0
  830. package/src/apps/routes/App.ts +96 -0
  831. package/src/apps/{funding → routes}/Inventory.ts +2 -2
  832. package/src/apps/routes/index.ts +1 -0
  833. package/src/apps/{funding → routes}/routes/chains.test.ts +66 -66
  834. package/src/apps/{funding → routes}/routes/chains.ts +23 -23
  835. package/src/apps/{funding → routes}/routes/deposit-addresses.test.ts +1358 -458
  836. package/src/apps/{funding → routes}/routes/deposit-addresses.ts +566 -246
  837. package/src/apps/{funding → routes}/routes/providers.test.ts +27 -33
  838. package/src/apps/{funding → routes}/routes/providers.ts +23 -23
  839. package/src/apps/{funding → routes}/routes/quotes.test.ts +298 -41
  840. package/src/apps/{funding → routes}/routes/quotes.ts +57 -40
  841. package/src/apps/{funding → routes}/routes/transfers.test.ts +1100 -353
  842. package/src/apps/routes/routes/transfers.ts +1332 -0
  843. package/src/cli/Cli.test.ts +1 -1
  844. package/src/cli/commands/admin.test.ts +748 -1
  845. package/src/cli/commands/admin.ts +278 -0
  846. package/src/cloudflare.ts +52 -47
  847. package/src/db/Db.test.ts +245 -2
  848. package/src/db/Db.ts +1485 -34
  849. package/src/db/Schema.ts +729 -228
  850. package/src/db/tables/apiKeyAdmissionBootstraps.ts +4 -0
  851. package/src/db/tables/apiKeyAdmissions.ts +218 -0
  852. package/src/db/tables/apiKeyOwnerAdmissions.ts +4 -0
  853. package/src/db/tables/apiKeyOwnerTombstones.ts +81 -0
  854. package/src/db/tables/apiKeyRevocations.test.ts +74 -0
  855. package/src/db/tables/apiKeyRevocations.ts +121 -0
  856. package/src/db/tables/authAccounts.ts +105 -0
  857. package/src/db/tables/authSessions.ts +13 -0
  858. package/src/db/tables/authVerifications.ts +13 -0
  859. package/src/db/tables/invitations.ts +142 -45
  860. package/src/db/tables/memberships.ts +79 -3
  861. package/src/db/tables/organizations.test.ts +690 -13
  862. package/src/db/tables/organizations.ts +139 -55
  863. package/src/db/tables/projects.test.ts +16 -0
  864. package/src/db/tables/projects.ts +13 -3
  865. package/src/db/tables/requestUsage.ts +4 -1
  866. package/src/db/tables/rewardAccounts.ts +178 -0
  867. package/src/db/tables/rewardCampaignDistributors.ts +68 -0
  868. package/src/db/tables/rewardCampaigns.test.ts +1388 -0
  869. package/src/db/tables/rewardCampaigns.ts +647 -0
  870. package/src/db/tables/rewardCredits.ts +110 -0
  871. package/src/db/tables/rewardEligibilityAssociations.test.ts +271 -0
  872. package/src/db/tables/rewardEligibilityAssociations.ts +184 -0
  873. package/src/db/tables/rewardRuns.ts +514 -0
  874. package/src/db/tables/rewardTransactionAttempts.ts +272 -0
  875. package/src/db/tables/routesCatalog.test.ts +185 -0
  876. package/src/db/tables/routesCatalog.ts +163 -0
  877. package/src/db/tables/routesDepositAddresses.test.ts +1048 -0
  878. package/src/db/tables/routesDepositAddresses.ts +1008 -0
  879. package/src/db/tables/{fundingDepositRequestObservations.test.ts → routesDepositRequestObservations.test.ts} +13 -14
  880. package/src/db/tables/{fundingDepositRequestObservations.ts → routesDepositRequestObservations.ts} +10 -10
  881. package/src/db/tables/{fundingDeposits.test.ts → routesDeposits.test.ts} +388 -46
  882. package/src/db/tables/routesDeposits.ts +1062 -0
  883. package/src/db/tables/routesIdempotency.test.ts +796 -0
  884. package/src/db/tables/routesIdempotency.ts +496 -0
  885. package/src/db/tables/routesSubsidies.test.ts +120 -0
  886. package/src/db/tables/routesSubsidies.ts +71 -0
  887. package/src/db/tables/{fundingTransferEvents.ts → routesTransferEvents.ts} +4 -4
  888. package/src/db/tables/routesTransferSubsidies.ts +38 -0
  889. package/src/db/tables/routesTransferSubsidyNonces.ts +124 -0
  890. package/src/db/tables/routesTransferTransactions.test.ts +195 -0
  891. package/src/db/tables/{fundingTransferTransactions.ts → routesTransferTransactions.ts} +63 -18
  892. package/src/db/tables/routesTransfers.test.ts +338 -0
  893. package/src/db/tables/routesTransfers.ts +662 -0
  894. package/src/db/tables/sponsoredTransactions.test.ts +269 -45
  895. package/src/db/tables/sponsoredTransactions.ts +225 -65
  896. package/src/db/tables/sponsorshipAttributions.test.ts +160 -0
  897. package/src/db/tables/sponsorshipAttributions.ts +168 -0
  898. package/src/db/tables/sponsorshipReconciliationCursors.test.ts +115 -0
  899. package/src/db/tables/sponsorshipReconciliationCursors.ts +67 -0
  900. package/src/db/tables/stripeCustomers.test.ts +85 -0
  901. package/src/db/tables/stripeCustomers.ts +24 -0
  902. package/src/db/tables/users.test.ts +129 -0
  903. package/src/db/tables/users.ts +49 -3
  904. package/src/db/tables/verifiedTokenRequests.test.ts +39 -20
  905. package/src/db/tables/verifiedTokenRequests.ts +80 -44
  906. package/src/db/tables/webhookQueueEvents.ts +8 -1
  907. package/src/db/tables/webhookSubscriptions.ts +95 -20
  908. package/src/handlers/internal/executionError.ts +3 -4
  909. package/src/handlers/internal/multisig.ts +13 -816
  910. package/src/handlers/internal/sponsorship.ts +26 -10
  911. package/src/handlers/relay.test-d.ts +9 -1
  912. package/src/handlers/relay.test.ts +823 -3
  913. package/src/handlers/relay.ts +127 -107
  914. package/src/index.test-d.ts +7 -0
  915. package/src/index.ts +0 -17
  916. package/src/internal/AssetResponse.ts +26 -0
  917. package/src/internal/Auth.test.ts +1656 -9
  918. package/src/internal/Auth.ts +880 -244
  919. package/src/internal/BetterAuth.test.ts +242 -0
  920. package/src/internal/BetterAuth.ts +349 -0
  921. package/src/internal/Cache.ts +2 -0
  922. package/src/internal/EarnRates.test.ts +17 -0
  923. package/src/internal/EarnRates.ts +124 -31
  924. package/src/internal/EarnSharePrices.test.ts +182 -0
  925. package/src/internal/EarnSharePrices.ts +313 -0
  926. package/src/internal/EarnVaults.test.ts +21 -0
  927. package/src/internal/EarnVaults.ts +33 -11
  928. package/src/internal/Email.ts +54 -0
  929. package/src/internal/Idempotency.test.ts +2 -2
  930. package/src/internal/Log.test-d.ts +8 -7
  931. package/src/internal/Log.test.ts +114 -16
  932. package/src/internal/Log.ts +53 -40
  933. package/src/internal/MetricSink.test.ts +313 -26
  934. package/src/internal/MetricSink.ts +73 -8
  935. package/src/internal/Mpp.test.ts +31 -0
  936. package/src/internal/Mpp.ts +21 -24
  937. package/src/internal/OpenApi.ts +45 -12
  938. package/src/internal/Provider.test.ts +1 -1
  939. package/src/internal/Provider.ts +1 -1
  940. package/src/internal/RateLimit.test.ts +21 -3
  941. package/src/internal/RateLimit.ts +12 -1
  942. package/src/internal/Store.test-d.ts +1 -1
  943. package/src/internal/Store.test.ts +151 -8
  944. package/src/internal/Store.ts +76 -9
  945. package/src/internal/Tidx.test.ts +59 -8
  946. package/src/internal/Tidx.ts +86 -14
  947. package/src/internal/Timing.test.ts +77 -0
  948. package/src/internal/Timing.ts +83 -6
  949. package/src/internal/VercelOidc.test.ts +188 -0
  950. package/src/internal/VercelOidc.ts +193 -0
  951. package/src/internal/VerifiedTokens.test.ts +60 -6
  952. package/src/internal/VerifiedTokens.ts +21 -24
  953. package/src/internal/Viem.batch.test.ts +80 -0
  954. package/src/internal/Viem.test.ts +201 -2
  955. package/src/internal/Viem.ts +221 -25
  956. package/src/internal/Webhooks.test.ts +85 -6
  957. package/src/internal/Webhooks.ts +22 -4
  958. package/src/internal/ZoneRpc.ts +50 -0
  959. package/src/internal/exchange/Provider.test.ts +2 -2
  960. package/src/internal/index.test.ts +3 -1
  961. package/src/internal/index.ts +3 -1
  962. package/src/internal/rewards/Audit.ts +231 -0
  963. package/src/internal/rewards/Campaigns.test.ts +1234 -0
  964. package/src/internal/rewards/Campaigns.ts +1205 -0
  965. package/src/internal/rewards/Credits.ts +165 -0
  966. package/src/internal/rewards/Events.local.test.ts +113 -0
  967. package/src/internal/rewards/Events.test.ts +152 -0
  968. package/src/internal/rewards/Events.ts +468 -0
  969. package/src/internal/rewards/Projection.test.ts +681 -0
  970. package/src/internal/rewards/Projection.ts +987 -0
  971. package/src/internal/rewards/Rates.test.ts +171 -0
  972. package/src/internal/rewards/Rates.ts +110 -0
  973. package/src/internal/rewards/Read.test.ts +501 -0
  974. package/src/internal/rewards/Read.ts +476 -0
  975. package/src/internal/rewards/Runner.checkpoint.test.ts +80 -0
  976. package/src/internal/rewards/Runner.states.test.ts +188 -0
  977. package/src/internal/rewards/Runner.test.ts +90 -0
  978. package/src/internal/rewards/Runner.ts +2229 -0
  979. package/src/internal/rewards/Signer.test.ts +79 -0
  980. package/src/internal/rewards/Signer.ts +180 -0
  981. package/src/internal/rewards/index.ts +14 -0
  982. package/src/internal/{funding → routes}/Action.test.ts +63 -14
  983. package/src/internal/{funding → routes}/Action.ts +35 -8
  984. package/src/internal/{funding → routes}/Catalog.test.ts +3 -3
  985. package/src/internal/{funding → routes}/Catalog.ts +39 -39
  986. package/src/internal/{funding → routes}/Chain.test.ts +1 -1
  987. package/src/internal/{funding → routes}/Chain.ts +11 -11
  988. package/src/internal/{funding → routes}/Deposit.test.ts +1 -1
  989. package/src/internal/{funding → routes}/Deposit.ts +93 -45
  990. package/src/internal/{funding → routes}/DepositAddress.test.ts +11 -3
  991. package/src/internal/{funding → routes}/DepositAddress.ts +132 -53
  992. package/src/internal/{funding → routes}/DepositWebhook.test.ts +61 -18
  993. package/src/internal/{funding → routes}/DepositWebhook.ts +9 -9
  994. package/src/internal/routes/Economics.test.ts +42 -0
  995. package/src/internal/routes/Economics.ts +47 -0
  996. package/src/internal/{funding → routes}/Evidence.test.ts +6 -6
  997. package/src/internal/{funding → routes}/Evidence.ts +9 -9
  998. package/src/internal/routes/Observability.test.ts +636 -0
  999. package/src/internal/routes/Observability.ts +668 -0
  1000. package/src/internal/{funding → routes}/Provider.test.ts +489 -153
  1001. package/src/internal/{funding → routes}/Provider.ts +489 -186
  1002. package/src/internal/{funding → routes}/Reconciliation.local.test.ts +84 -12
  1003. package/src/internal/{funding → routes}/Reconciliation.test.ts +1213 -279
  1004. package/src/internal/{funding → routes}/Reconciliation.ts +501 -203
  1005. package/src/internal/routes/Reconciliation.unattributed.test.ts +250 -0
  1006. package/src/internal/{funding → routes}/Route.ts +7 -7
  1007. package/src/internal/{funding → routes}/SourceObservation.test.ts +13 -14
  1008. package/src/internal/{funding → routes}/SourceObservation.ts +13 -13
  1009. package/src/internal/{funding → routes}/Subsidy.local.test.ts +7 -7
  1010. package/src/internal/routes/Subsidy.test.ts +169 -0
  1011. package/src/internal/{funding → routes}/Subsidy.ts +86 -6
  1012. package/src/internal/{funding → routes}/Token.test.ts +1 -1
  1013. package/src/internal/{funding → routes}/Token.ts +5 -5
  1014. package/src/internal/routes/Transfer.test.ts +1199 -0
  1015. package/src/internal/routes/Transfer.ts +1206 -0
  1016. package/src/internal/routes/TransferReconciliation.test.ts +731 -0
  1017. package/src/internal/routes/TransferReconciliation.ts +527 -0
  1018. package/src/internal/routes/TransferSubsidy.test.ts +172 -0
  1019. package/src/internal/routes/TransferSubsidy.ts +447 -0
  1020. package/src/internal/{funding → routes}/TransferWebhook.test.ts +13 -13
  1021. package/src/internal/{funding → routes}/TransferWebhook.ts +7 -7
  1022. package/src/internal/{funding → routes}/index.test.ts +5 -3
  1023. package/src/internal/{funding → routes}/index.ts +2 -0
  1024. package/src/internal/{funding → routes}/providers/across.ts +16 -16
  1025. package/src/internal/{funding → routes}/providers/index.test.ts +157 -44
  1026. package/src/internal/{funding → routes}/providers/relay.test.ts +224 -32
  1027. package/src/internal/{funding → routes}/providers/relay.ts +228 -121
  1028. package/src/internal/{funding → routes}/providers/rhino.ts +16 -16
  1029. package/src/internal/{funding → routes}/providers/squid.ts +17 -17
  1030. package/src/internal/routes/providers/stargate.test.ts +728 -0
  1031. package/src/internal/routes/providers/stargate.ts +1276 -0
  1032. package/src/internal/{funding → routes}/providers/symbiosis.ts +64 -24
  1033. package/src/internal/webhookDestinations/slack.ts +10 -10
  1034. package/src/providers/index.ts +13 -13
  1035. package/src/server.ts +18 -0
  1036. package/dist/apps/funding/Access.d.ts.map +0 -1
  1037. package/dist/apps/funding/Access.js.map +0 -1
  1038. package/dist/apps/funding/App.js.map +0 -1
  1039. package/dist/apps/funding/Inventory.d.ts.map +0 -1
  1040. package/dist/apps/funding/Inventory.js.map +0 -1
  1041. package/dist/apps/funding/ProviderAttempts.d.ts +0 -5
  1042. package/dist/apps/funding/ProviderAttempts.d.ts.map +0 -1
  1043. package/dist/apps/funding/ProviderAttempts.js +0 -24
  1044. package/dist/apps/funding/ProviderAttempts.js.map +0 -1
  1045. package/dist/apps/funding/index.d.ts +0 -2
  1046. package/dist/apps/funding/index.d.ts.map +0 -1
  1047. package/dist/apps/funding/index.js +0 -2
  1048. package/dist/apps/funding/index.js.map +0 -1
  1049. package/dist/apps/funding/routes/chains.d.ts.map +0 -1
  1050. package/dist/apps/funding/routes/chains.js.map +0 -1
  1051. package/dist/apps/funding/routes/deposit-addresses.d.ts.map +0 -1
  1052. package/dist/apps/funding/routes/deposit-addresses.js.map +0 -1
  1053. package/dist/apps/funding/routes/providers.d.ts.map +0 -1
  1054. package/dist/apps/funding/routes/providers.js +0 -57
  1055. package/dist/apps/funding/routes/providers.js.map +0 -1
  1056. package/dist/apps/funding/routes/quotes.d.ts.map +0 -1
  1057. package/dist/apps/funding/routes/quotes.js.map +0 -1
  1058. package/dist/apps/funding/routes/transfers.d.ts.map +0 -1
  1059. package/dist/apps/funding/routes/transfers.js +0 -828
  1060. package/dist/apps/funding/routes/transfers.js.map +0 -1
  1061. package/dist/db/tables/fundingCatalog.d.ts +0 -58
  1062. package/dist/db/tables/fundingCatalog.d.ts.map +0 -1
  1063. package/dist/db/tables/fundingCatalog.js.map +0 -1
  1064. package/dist/db/tables/fundingDepositAddresses.d.ts +0 -192
  1065. package/dist/db/tables/fundingDepositAddresses.d.ts.map +0 -1
  1066. package/dist/db/tables/fundingDepositAddresses.js +0 -235
  1067. package/dist/db/tables/fundingDepositAddresses.js.map +0 -1
  1068. package/dist/db/tables/fundingDepositRequestObservations.d.ts.map +0 -1
  1069. package/dist/db/tables/fundingDepositRequestObservations.js.map +0 -1
  1070. package/dist/db/tables/fundingDeposits.d.ts.map +0 -1
  1071. package/dist/db/tables/fundingDeposits.js +0 -295
  1072. package/dist/db/tables/fundingDeposits.js.map +0 -1
  1073. package/dist/db/tables/fundingIdempotency.d.ts +0 -91
  1074. package/dist/db/tables/fundingIdempotency.d.ts.map +0 -1
  1075. package/dist/db/tables/fundingIdempotency.js +0 -103
  1076. package/dist/db/tables/fundingIdempotency.js.map +0 -1
  1077. package/dist/db/tables/fundingTransferEvents.d.ts.map +0 -1
  1078. package/dist/db/tables/fundingTransferEvents.js.map +0 -1
  1079. package/dist/db/tables/fundingTransferTransactions.d.ts +0 -53
  1080. package/dist/db/tables/fundingTransferTransactions.d.ts.map +0 -1
  1081. package/dist/db/tables/fundingTransferTransactions.js.map +0 -1
  1082. package/dist/db/tables/fundingTransfers.d.ts +0 -99
  1083. package/dist/db/tables/fundingTransfers.d.ts.map +0 -1
  1084. package/dist/db/tables/fundingTransfers.js +0 -110
  1085. package/dist/db/tables/fundingTransfers.js.map +0 -1
  1086. package/dist/internal/funding/Action.d.ts.map +0 -1
  1087. package/dist/internal/funding/Action.js.map +0 -1
  1088. package/dist/internal/funding/Catalog.d.ts.map +0 -1
  1089. package/dist/internal/funding/Catalog.js.map +0 -1
  1090. package/dist/internal/funding/Chain.d.ts.map +0 -1
  1091. package/dist/internal/funding/Chain.js.map +0 -1
  1092. package/dist/internal/funding/Deposit.d.ts.map +0 -1
  1093. package/dist/internal/funding/Deposit.js.map +0 -1
  1094. package/dist/internal/funding/DepositAddress.d.ts.map +0 -1
  1095. package/dist/internal/funding/DepositAddress.js.map +0 -1
  1096. package/dist/internal/funding/DepositWebhook.d.ts.map +0 -1
  1097. package/dist/internal/funding/DepositWebhook.js.map +0 -1
  1098. package/dist/internal/funding/Evidence.d.ts.map +0 -1
  1099. package/dist/internal/funding/Evidence.js.map +0 -1
  1100. package/dist/internal/funding/Provider.d.ts.map +0 -1
  1101. package/dist/internal/funding/Provider.js.map +0 -1
  1102. package/dist/internal/funding/Reconciliation.d.ts.map +0 -1
  1103. package/dist/internal/funding/Reconciliation.js.map +0 -1
  1104. package/dist/internal/funding/Route.d.ts +0 -21
  1105. package/dist/internal/funding/Route.d.ts.map +0 -1
  1106. package/dist/internal/funding/Route.js.map +0 -1
  1107. package/dist/internal/funding/SourceObservation.d.ts.map +0 -1
  1108. package/dist/internal/funding/SourceObservation.js.map +0 -1
  1109. package/dist/internal/funding/Subsidy.d.ts.map +0 -1
  1110. package/dist/internal/funding/Subsidy.js.map +0 -1
  1111. package/dist/internal/funding/Token.d.ts.map +0 -1
  1112. package/dist/internal/funding/Token.js.map +0 -1
  1113. package/dist/internal/funding/Transfer.d.ts.map +0 -1
  1114. package/dist/internal/funding/Transfer.js +0 -462
  1115. package/dist/internal/funding/Transfer.js.map +0 -1
  1116. package/dist/internal/funding/TransferReconciliation.d.ts.map +0 -1
  1117. package/dist/internal/funding/TransferReconciliation.js +0 -192
  1118. package/dist/internal/funding/TransferReconciliation.js.map +0 -1
  1119. package/dist/internal/funding/TransferWebhook.d.ts.map +0 -1
  1120. package/dist/internal/funding/TransferWebhook.js.map +0 -1
  1121. package/dist/internal/funding/index.d.ts.map +0 -1
  1122. package/dist/internal/funding/index.js.map +0 -1
  1123. package/dist/internal/funding/providers/across.d.ts.map +0 -1
  1124. package/dist/internal/funding/providers/across.js.map +0 -1
  1125. package/dist/internal/funding/providers/relay.d.ts.map +0 -1
  1126. package/dist/internal/funding/providers/relay.js.map +0 -1
  1127. package/dist/internal/funding/providers/rhino.d.ts.map +0 -1
  1128. package/dist/internal/funding/providers/rhino.js.map +0 -1
  1129. package/dist/internal/funding/providers/squid.d.ts.map +0 -1
  1130. package/dist/internal/funding/providers/squid.js.map +0 -1
  1131. package/dist/internal/funding/providers/stargate.d.ts.map +0 -1
  1132. package/dist/internal/funding/providers/stargate.js +0 -579
  1133. package/dist/internal/funding/providers/stargate.js.map +0 -1
  1134. package/dist/internal/funding/providers/symbiosis.d.ts.map +0 -1
  1135. package/dist/internal/funding/providers/symbiosis.js.map +0 -1
  1136. package/src/apps/funding/App.test.ts +0 -78
  1137. package/src/apps/funding/App.ts +0 -88
  1138. package/src/apps/funding/ProviderAttempts.ts +0 -26
  1139. package/src/apps/funding/index.ts +0 -1
  1140. package/src/apps/funding/routes/transfers.ts +0 -987
  1141. package/src/db/tables/fundingCatalog.test.ts +0 -122
  1142. package/src/db/tables/fundingCatalog.ts +0 -163
  1143. package/src/db/tables/fundingDepositAddresses.test.ts +0 -608
  1144. package/src/db/tables/fundingDepositAddresses.ts +0 -443
  1145. package/src/db/tables/fundingDeposits.ts +0 -572
  1146. package/src/db/tables/fundingIdempotency.test.ts +0 -182
  1147. package/src/db/tables/fundingIdempotency.ts +0 -180
  1148. package/src/db/tables/fundingTransferTransactions.test.ts +0 -112
  1149. package/src/db/tables/fundingTransfers.test.ts +0 -115
  1150. package/src/db/tables/fundingTransfers.ts +0 -189
  1151. package/src/handlers/internal/multisig.test.ts +0 -818
  1152. package/src/internal/funding/Subsidy.test.ts +0 -75
  1153. package/src/internal/funding/Transfer.test.ts +0 -524
  1154. package/src/internal/funding/Transfer.ts +0 -762
  1155. package/src/internal/funding/TransferReconciliation.test.ts +0 -147
  1156. package/src/internal/funding/TransferReconciliation.ts +0 -264
  1157. package/src/internal/funding/providers/stargate.test.ts +0 -328
  1158. package/src/internal/funding/providers/stargate.ts +0 -856
  1159. /package/dist/apps/{funding → routes}/Inventory.d.ts +0 -0
  1160. /package/src/internal/{funding → routes}/Route.test.ts +0 -0
@@ -1,39 +1,43 @@
1
1
  import { Hono } from 'hono';
2
+ import { bodyLimit } from 'hono/body-limit';
2
3
  import { etag } from 'hono/etag';
3
4
  import * as z from 'zod/mini';
4
5
  import * as Db from '../../../db/Db.js';
5
- import * as FundingDepositAddresses from '../../../db/tables/fundingDepositAddresses.js';
6
- import * as FundingDeposits from '../../../db/tables/fundingDeposits.js';
7
- import * as FundingIdempotency from '../../../db/tables/fundingIdempotency.js';
6
+ import * as RoutesDepositAddresses from '../../../db/tables/routesDepositAddresses.js';
7
+ import * as RoutesDeposits from '../../../db/tables/routesDeposits.js';
8
+ import * as RoutesIdempotency from '../../../db/tables/routesIdempotency.js';
8
9
  import * as Auth from '../../../internal/Auth.js';
9
10
  import * as Cache from '../../../internal/Cache.js';
10
11
  import * as Cursor from '../../../internal/Cursor.js';
11
- import * as FundingCatalog from '../../../internal/funding/Catalog.js';
12
- import * as FundingDeposit from '../../../internal/funding/Deposit.js';
13
- import * as FundingDepositAddress from '../../../internal/funding/DepositAddress.js';
14
- import * as FundingProvider from '../../../internal/funding/Provider.js';
15
- import * as FundingTransfer from '../../../internal/funding/Transfer.js';
12
+ import * as RoutesCatalog from '../../../internal/routes/Catalog.js';
13
+ import * as RoutesDeposit from '../../../internal/routes/Deposit.js';
14
+ import * as RoutesDepositAddress from '../../../internal/routes/DepositAddress.js';
15
+ import * as RoutesObservability from '../../../internal/routes/Observability.js';
16
+ import * as RoutesProvider from '../../../internal/routes/Provider.js';
17
+ import * as RoutesSubsidy from '../../../internal/routes/Subsidy.js';
18
+ import * as RoutesTransfer from '../../../internal/routes/Transfer.js';
16
19
  import * as Idempotency from '../../../internal/Idempotency.js';
17
20
  import * as OpenApi from '../../../internal/OpenApi.js';
18
21
  import * as Response from '../../../internal/Response.js';
19
22
  import * as Schema from '../../../internal/Schema.js';
20
23
  import * as Value from '../../../internal/Value.js';
21
24
  import * as Access from '../Access.js';
22
- import * as ProviderAttempts from '../ProviderAttempts.js';
23
- /** Zod schemas owned by funding deposit-address resources. */
25
+ /** Matches manual reconciliation's quota for another provider-backed address operation. */
26
+ const creationRateLimit = { limit: 10, period: 'minute' };
27
+ /** Zod schemas owned by route deposit-address resources. */
24
28
  export var schema;
25
29
  (function (schema) {
26
- /** One reusable funding deposit address. */
27
- schema.DepositAddress = FundingDepositAddress.schema.FundingDepositAddress;
28
- /** One detected funding deposit. */
29
- schema.Deposit = FundingDeposit.schema.FundingDeposit;
30
- /** Schemas for the createFundingDepositAddress operation. */
31
- let createFundingDepositAddress;
32
- (function (createFundingDepositAddress) {
33
- /** Funding deposit address creation request body. */
34
- createFundingDepositAddress.Body = OpenApi.component(z
30
+ /** One reusable route deposit address. */
31
+ schema.DepositAddress = RoutesDepositAddress.schema.RoutesDepositAddress;
32
+ /** One detected route deposit. */
33
+ schema.Deposit = RoutesDeposit.schema.RoutesDeposit;
34
+ /** Schemas for the createRoutesDepositAddress operation. */
35
+ let createRoutesDepositAddress;
36
+ (function (createRoutesDepositAddress) {
37
+ /** Route deposit address creation request body. */
38
+ createRoutesDepositAddress.Body = OpenApi.component(z
35
39
  .strictObject({
36
- amount: FundingTransfer.schema.CreateRequest.shape.amount,
40
+ amount: RoutesTransfer.schema.CreateRequest.shape.amount,
37
41
  destinationToken: z
38
42
  .string()
39
43
  .check(z.minLength(1), z.describe('Tempo destination token symbol, contract address, or token key.'), z.meta({ examples: ['usdt0'] })),
@@ -53,66 +57,66 @@ export var schema;
53
57
  .optional(z.boolean())
54
58
  .check(z.describe('Guarantees normalized 1:1 delivery through a Tempo-funded subsidy.'), z.meta({ examples: [false] })),
55
59
  })
56
- .check(z.describe('Reusable funding deposit address creation request.')), 'CreateFundingDepositAddressRequest');
57
- /** Required headers for funding deposit address creation. */
58
- createFundingDepositAddress.Headers = z.object({
60
+ .check(z.describe('Reusable route deposit address creation request.')), 'CreateRoutesDepositAddressRequest');
61
+ /** Required headers for route deposit address creation. */
62
+ createRoutesDepositAddress.Headers = z.object({
59
63
  'idempotency-key': z
60
64
  .string()
61
- .check(z.minLength(1), z.describe('Opaque retry key scoped to the API key. Matching requests replay successful responses for 24 hours; changed input conflicts, in-flight requests block, and failed attempts release the key.'), z.meta({ examples: ['funding_01k1c5j8q8p0be6j5v9m6d1e4r'] })),
65
+ .check(z.minLength(1), z.describe('Opaque retry key scoped to the API key. Matching requests replay successful responses for 24 hours; changed input conflicts, in-flight requests block, and failed attempts release the key.'), z.meta({ examples: ['routes_01k1c5j8q8p0be6j5v9m6d1e4r'] })),
62
66
  });
63
67
  /** The reusable address, with quoted terms only when the provider address was newly stored. */
64
- createFundingDepositAddress.Response = OpenApi.component(z
68
+ createRoutesDepositAddress.Response = OpenApi.component(z
65
69
  .union([
66
- FundingDepositAddress.schema.CreatedFundingDepositAddress,
67
- FundingDepositAddress.schema.FundingDepositAddress,
70
+ RoutesDepositAddress.schema.CreatedRoutesDepositAddress,
71
+ RoutesDepositAddress.schema.RoutesDepositAddress,
68
72
  ])
69
- .check(z.describe('A reusable funding deposit address, including terms sampled for a newly stored provider address.')), 'CreateFundingDepositAddressResponse');
70
- })(createFundingDepositAddress = schema.createFundingDepositAddress || (schema.createFundingDepositAddress = {}));
71
- /** Schemas for the getFundingDepositAddress operation. */
72
- let getFundingDepositAddress;
73
- (function (getFundingDepositAddress) {
74
- /** Path parameters for reading a funding deposit address. */
75
- getFundingDepositAddress.Params = z
73
+ .check(z.describe('A reusable route deposit address, including terms sampled for a newly stored provider address.')), 'CreateRoutesDepositAddressResponse');
74
+ })(createRoutesDepositAddress = schema.createRoutesDepositAddress || (schema.createRoutesDepositAddress = {}));
75
+ /** Schemas for the getRoutesDepositAddress operation. */
76
+ let getRoutesDepositAddress;
77
+ (function (getRoutesDepositAddress) {
78
+ /** Path parameters for reading a route deposit address. */
79
+ getRoutesDepositAddress.Params = z
76
80
  .object({
77
81
  id: z
78
82
  .string()
79
- .check(z.regex(/^fda_[A-Za-z0-9_-]+$/), z.describe('Funding deposit address ID (`fda_…`).'), z.meta({ examples: ['fda_001785792000000_2ZPE2gvateYEQ0dQslgvkhjx'] })),
83
+ .check(z.regex(/^rda_[A-Za-z0-9_-]+$/), z.describe('Route deposit address ID (`rda_…`).'), z.meta({ examples: ['rda_001785792000000_2ZPE2gvateYEQ0dQslgvkhjx'] })),
80
84
  })
81
- .check(z.describe('Path parameters for reading a funding deposit address.'));
82
- /** One reusable funding deposit address. */
83
- getFundingDepositAddress.Response = schema.DepositAddress;
84
- })(getFundingDepositAddress = schema.getFundingDepositAddress || (schema.getFundingDepositAddress = {}));
85
- /** Schemas for the listFundingDepositAddresses operation. */
86
- let listFundingDepositAddresses;
87
- (function (listFundingDepositAddresses) {
88
- /** Query parameters for listing funding deposit addresses. */
89
- listFundingDepositAddresses.Query = z
85
+ .check(z.describe('Path parameters for reading a route deposit address.'));
86
+ /** One reusable route deposit address. */
87
+ getRoutesDepositAddress.Response = schema.DepositAddress;
88
+ })(getRoutesDepositAddress = schema.getRoutesDepositAddress || (schema.getRoutesDepositAddress = {}));
89
+ /** Schemas for the listRoutesDepositAddresses operation. */
90
+ let listRoutesDepositAddresses;
91
+ (function (listRoutesDepositAddresses) {
92
+ /** Query parameters for listing route deposit addresses. */
93
+ listRoutesDepositAddresses.Query = z
90
94
  .object({
91
95
  cursor: Schema.Cursor,
92
96
  limit: Schema.Limit,
93
97
  })
94
- .check(z.describe('Paging parameters for listing funding deposit addresses.'));
95
- /** One page of reusable funding deposit addresses. */
96
- listFundingDepositAddresses.Response = OpenApi.component(z
98
+ .check(z.describe('Paging parameters for listing route deposit addresses.'));
99
+ /** One page of reusable route deposit addresses. */
100
+ listRoutesDepositAddresses.Response = OpenApi.component(z
97
101
  .object({
98
102
  data: z
99
103
  .array(schema.DepositAddress)
100
- .check(z.describe('Funding deposit addresses on this page, newest first.')),
104
+ .check(z.describe('Route deposit addresses on this page, newest first.')),
101
105
  nextCursor: Schema.NextCursor,
102
106
  })
103
- .check(z.describe('A page of reusable funding deposit addresses.')), 'FundingDepositAddressList');
104
- })(listFundingDepositAddresses = schema.listFundingDepositAddresses || (schema.listFundingDepositAddresses = {}));
105
- /** Schemas for the reconcileFundingDepositAddress operation. */
106
- let reconcileFundingDepositAddress;
107
- (function (reconcileFundingDepositAddress) {
108
- /** Path parameters for reconciling a funding deposit address. */
109
- reconcileFundingDepositAddress.Params = getFundingDepositAddress.Params;
110
- })(reconcileFundingDepositAddress = schema.reconcileFundingDepositAddress || (schema.reconcileFundingDepositAddress = {}));
111
- /** Schemas for the listFundingDeposits operation. */
112
- let listFundingDeposits;
113
- (function (listFundingDeposits) {
114
- /** Query parameters for listing funding deposits. */
115
- listFundingDeposits.Query = z
107
+ .check(z.describe('A page of reusable route deposit addresses.')), 'RoutesDepositAddressList');
108
+ })(listRoutesDepositAddresses = schema.listRoutesDepositAddresses || (schema.listRoutesDepositAddresses = {}));
109
+ /** Schemas for the reconcileRoutesDepositAddress operation. */
110
+ let reconcileRoutesDepositAddress;
111
+ (function (reconcileRoutesDepositAddress) {
112
+ /** Path parameters for reconciling a route deposit address. */
113
+ reconcileRoutesDepositAddress.Params = getRoutesDepositAddress.Params;
114
+ })(reconcileRoutesDepositAddress = schema.reconcileRoutesDepositAddress || (schema.reconcileRoutesDepositAddress = {}));
115
+ /** Schemas for the listRoutesDeposits operation. */
116
+ let listRoutesDeposits;
117
+ (function (listRoutesDeposits) {
118
+ /** Query parameters for listing route deposits. */
119
+ listRoutesDeposits.Query = z
116
120
  .object({
117
121
  depositAddress: z
118
122
  .optional(z.string().check(z.minLength(1)))
@@ -125,7 +129,7 @@ export var schema;
125
129
  limit: Schema.Limit,
126
130
  provider: z
127
131
  .optional(z.string().check(z.minLength(1)))
128
- .check(z.describe('Funding provider id.'), z.meta({ examples: ['relay'] })),
132
+ .check(z.describe('Route provider id.'), z.meta({ examples: ['relay'] })),
129
133
  recipient: z
130
134
  .optional(Schema.Address)
131
135
  .check(z.describe('Tempo account that received the deposits.'), z.meta({ examples: [`0x${'11'.repeat(20)}`] })),
@@ -135,11 +139,11 @@ export var schema;
135
139
  sourceToken: z
136
140
  .optional(z.string().check(z.minLength(1)))
137
141
  .check(z.describe('Source token symbol, contract address, or token key.'), z.meta({ examples: ['usdt'] })),
138
- status: z.optional(FundingDeposit.schema.Status),
142
+ status: z.optional(RoutesDeposit.schema.Status),
139
143
  })
140
144
  .check(z.describe('Optional deposit filters and paging parameters.'));
141
145
  /** One page of detected deposits. */
142
- listFundingDeposits.Response = OpenApi.component(z
146
+ listRoutesDeposits.Response = OpenApi.component(z
143
147
  .object({
144
148
  data: z.array(schema.Deposit).check(z.describe('Detected deposits on this page, newest first.')),
145
149
  meta: z
@@ -147,22 +151,22 @@ export var schema;
147
151
  .check(z.describe('Extra response metadata requested with `include`.')),
148
152
  nextCursor: Schema.NextCursor,
149
153
  })
150
- .check(z.describe('A page of visible funding deposits.')), 'FundingDepositList');
151
- })(listFundingDeposits = schema.listFundingDeposits || (schema.listFundingDeposits = {}));
152
- /** Schemas for the getFundingDeposit operation. */
153
- let getFundingDeposit;
154
- (function (getFundingDeposit) {
155
- /** Path parameters for reading a funding deposit. */
156
- getFundingDeposit.Params = z
154
+ .check(z.describe('A page of visible route deposits.')), 'RoutesDepositList');
155
+ })(listRoutesDeposits = schema.listRoutesDeposits || (schema.listRoutesDeposits = {}));
156
+ /** Schemas for the getRoutesDeposit operation. */
157
+ let getRoutesDeposit;
158
+ (function (getRoutesDeposit) {
159
+ /** Path parameters for reading a route deposit. */
160
+ getRoutesDeposit.Params = z
157
161
  .object({
158
162
  id: z
159
163
  .string()
160
- .check(z.regex(/^fdp_[A-Za-z0-9_-]+$/), z.describe('Funding deposit id (`fdp_…`).'), z.meta({ examples: ['fdp_001785792060000_2ZPE2gvateYEQ0dQslgvkhjx'] })),
164
+ .check(z.regex(/^rdp_[A-Za-z0-9_-]+$/), z.describe('Route deposit id (`rdp_…`).'), z.meta({ examples: ['rdp_001785792060000_2ZPE2gvateYEQ0dQslgvkhjx'] })),
161
165
  })
162
- .check(z.describe('Path parameters for reading a funding deposit.'));
163
- /** One detected funding deposit. */
164
- getFundingDeposit.Response = schema.Deposit;
165
- })(getFundingDeposit = schema.getFundingDeposit || (schema.getFundingDeposit = {}));
166
+ .check(z.describe('Path parameters for reading a route deposit.'));
167
+ /** One detected route deposit. */
168
+ getRoutesDeposit.Response = schema.Deposit;
169
+ })(getRoutesDeposit = schema.getRoutesDeposit || (schema.getRoutesDeposit = {}));
166
170
  })(schema || (schema = {}));
167
171
  const tronChainExample = {
168
172
  addressFormat: 'base58check',
@@ -196,12 +200,12 @@ const tempoUsdt0Example = {
196
200
  tokenKey: 'eip155:4217/erc20:0x20c00000000000000000000014f22ca97301eb73',
197
201
  verified: true,
198
202
  };
199
- const fundingDepositAddressExample = {
203
+ const routesDepositAddressExample = {
200
204
  address: 'TJRabPrwbZy45sbavfcjinPJC18kjpRTv8',
201
205
  createdAt: '2026-08-04T00:00:00.000Z',
202
206
  destinationChain: tempoChainExample,
203
207
  destinationToken: tempoUsdt0Example,
204
- id: 'fda_001785792000000_2ZPE2gvateYEQ0dQslgvkhjx',
208
+ id: 'rda_001785792000000_2ZPE2gvateYEQ0dQslgvkhjx',
205
209
  provider: { id: 'relay', name: 'Relay' },
206
210
  recipient: `0x${'11'.repeat(20)}`,
207
211
  refundAddress: 'TJRabPrwbZy45sbavfcjinPJC18kjpRTv8',
@@ -211,8 +215,8 @@ const fundingDepositAddressExample = {
211
215
  subsidize: false,
212
216
  updatedAt: '2026-08-04T00:00:00.000Z',
213
217
  };
214
- const createdFundingDepositAddressExample = {
215
- ...fundingDepositAddressExample,
218
+ const createdRoutesDepositAddressExample = {
219
+ ...routesDepositAddressExample,
216
220
  destinationAmount: Value.tokenAmount({ baseUnits: '1000000', currency: 'USD', decimals: 6 }),
217
221
  destinationAmountMin: Value.tokenAmount({
218
222
  baseUnits: '1000000',
@@ -223,29 +227,29 @@ const createdFundingDepositAddressExample = {
223
227
  quote: { sampledAt: '2026-08-04T00:00:00.000Z' },
224
228
  sourceAmount: Value.tokenAmount({ baseUnits: '1000000', currency: 'USD', decimals: 6 }),
225
229
  };
226
- const fundingDepositExample = {
230
+ const routesDepositExample = {
227
231
  createdAt: '2026-08-04T00:01:00.000Z',
228
- depositAddressId: fundingDepositAddressExample.id,
232
+ depositAddressId: routesDepositAddressExample.id,
229
233
  detectionTrigger: 'webhook',
230
234
  destinationChain: tempoChainExample,
231
235
  destinationToken: tempoUsdt0Example,
232
- id: 'fdp_001785792060000_2ZPE2gvateYEQ0dQslgvkhjx',
236
+ id: 'rdp_001785792060000_2ZPE2gvateYEQ0dQslgvkhjx',
233
237
  provider: { id: 'relay', name: 'Relay' },
234
- recipient: fundingDepositAddressExample.recipient,
235
- refundAddress: fundingDepositAddressExample.refundAddress,
238
+ recipient: routesDepositAddressExample.recipient,
239
+ refundAddress: routesDepositAddressExample.refundAddress,
236
240
  sourceChain: tronChainExample,
237
241
  sourceToken: tronUsdtExample,
238
242
  sourceTransactionHashes: ['9f2c4c80dbb468878baa8c07ff523e0464bf6437f2a486268508485d83f14d12'],
239
243
  status: 'detected',
240
244
  updatedAt: '2026-08-04T00:01:00.000Z',
241
245
  };
242
- const fundingDepositsExample = {
243
- data: [fundingDepositExample],
246
+ const routesDepositsExample = {
247
+ data: [routesDepositExample],
244
248
  meta: { totalCount: 1, totalCountCapped: false },
245
249
  nextCursor: null,
246
250
  };
247
- const fundingDepositAddressesExample = {
248
- data: [fundingDepositAddressExample],
251
+ const routesDepositAddressesExample = {
252
+ data: [routesDepositAddressExample],
249
253
  nextCursor: null,
250
254
  };
251
255
  function resolveDepositFilters(options) {
@@ -321,25 +325,25 @@ function tokenKey(token) {
321
325
  })();
322
326
  return `${token.chain.id}/${namespace}:${token.address}`;
323
327
  }
324
- const reconcileFundingDepositAddressResponses = (() => {
328
+ const reconcileRoutesDepositAddressResponses = (() => {
325
329
  const responses = OpenApi.responses({
326
330
  errors: {
327
331
  400: { codes: ['param_invalid'] },
328
332
  403: {
329
333
  codes: ['api_key_forbidden'],
330
- description: 'The API key does not grant funding write access.',
334
+ description: 'The API key does not grant routes write access.',
331
335
  },
332
336
  404: {
333
- codes: ['funding_deposit_address_not_found'],
334
- description: 'No visible funding deposit address exists for the identifier.',
337
+ codes: ['routes_deposit_address_not_found'],
338
+ description: 'No visible route deposit address exists for the identifier.',
335
339
  },
336
340
  409: {
337
- codes: ['funding_deposit_address_not_active'],
338
- description: 'The funding deposit address is not active.',
341
+ codes: ['routes_deposit_address_not_active'],
342
+ description: 'The route deposit address is not active.',
339
343
  },
340
344
  501: {
341
345
  codes: ['not_implemented'],
342
- description: 'Manual funding reconciliation is not configured.',
346
+ description: 'Manual routes reconciliation is not configured.',
343
347
  },
344
348
  502: {
345
349
  codes: ['upstream_error'],
@@ -355,7 +359,7 @@ const reconcileFundingDepositAddressResponses = (() => {
355
359
  void success;
356
360
  return {
357
361
  202: {
358
- description: 'The funding deposit address was queued for reconciliation.',
362
+ description: 'The route deposit address was queued for reconciliation.',
359
363
  headers: { ...OpenApi.successHeaders },
360
364
  },
361
365
  ...errors,
@@ -366,55 +370,85 @@ const idempotencyReplayTtlMs = 86_400_000;
366
370
  // Pending claims only cover the bounded provider preparation window.
367
371
  const idempotencyPendingTtlMs = 60_000;
368
372
  const depositAddressCheckpoint = Schema.describe(z.object({
373
+ amount: z.optional(RoutesTransfer.schema.CreateRequest.shape.amount),
369
374
  candidate: Schema.describe(z.object({
370
- destinationChain: FundingProvider.schema.ChainRef,
371
- destinationToken: FundingProvider.schema.TokenRef,
372
- sourceChain: FundingProvider.schema.ChainRef,
373
- sourceToken: FundingProvider.schema.TokenRef,
375
+ destinationChain: RoutesProvider.schema.ChainRef,
376
+ destinationToken: RoutesProvider.schema.TokenRef,
377
+ sourceChain: RoutesProvider.schema.ChainRef,
378
+ sourceToken: RoutesProvider.schema.TokenRef,
374
379
  }), 'Normalized route retained after provider provisioning.'),
375
- provider: FundingProvider.schema.ProviderRef,
380
+ provider: RoutesProvider.schema.ProviderRef,
376
381
  recipient: z.string().check(z.describe('Normalized Tempo recipient.')),
377
382
  refundAddress: z.string().check(z.describe('Normalized source-chain refund account.')),
378
- result: FundingProvider.schema.DepositAddressResult,
383
+ result: RoutesProvider.schema.DepositAddressResult,
379
384
  }), 'Provider result retained until deposit address creation completes.');
380
- const fundingEtag = etag();
385
+ const routesEtag = etag();
386
+ // Provider callbacks are small JSON documents; bound buffering before signature verification.
387
+ const maxProviderWebhookBodyBytes = 64 * 1_024;
381
388
  /** Mounts reusable deposit-address and detected-deposit routes. */
382
389
  export function depositAddresses(options = {}) {
383
390
  return new Hono()
384
- .post('/webhooks/funding/:providerId', async (c) => {
391
+ .post('/webhooks/routes/:providerId', async (c, next) => {
385
392
  const provider = c
386
393
  .get('providers')
387
- .filter(FundingProvider.is)
394
+ .filter(RoutesProvider.is)
388
395
  .find((candidate) => candidate.id === c.req.param('providerId'));
389
- if (!provider || !FundingProvider.canReceiveWebhook(provider))
396
+ if (!provider || !RoutesProvider.canReceiveWebhook(provider))
390
397
  return c.body(null, 404);
398
+ return next();
399
+ }, bodyLimit({
400
+ maxSize: maxProviderWebhookBodyBytes,
401
+ onError: (c) => c.body(null, 413),
402
+ }), async (c) => {
403
+ const provider = c
404
+ .get('providers')
405
+ .filter(RoutesProvider.is)
406
+ .find((candidate) => candidate.id === c.req.param('providerId'));
407
+ if (!provider || !RoutesProvider.canReceiveWebhook(provider))
408
+ return c.body(null, 404);
409
+ const body = await c.req.text();
391
410
  try {
392
- await provider.webhook.receive({
393
- body: await c.req.text(),
411
+ await RoutesProvider.observe(provider, () => provider.webhook.receive({
412
+ body,
394
413
  headers: c.req.raw.headers,
414
+ }), {
415
+ onAttempt: (result) => c.set('routesProviderAttempts', [result]),
416
+ operation: 'receiveWebhook',
395
417
  });
396
418
  return c.body(null, 204);
397
419
  }
398
420
  catch (cause) {
399
- if (cause instanceof FundingProvider.WebhookAuthenticationError)
421
+ if (cause instanceof RoutesProvider.WebhookAuthenticationError)
400
422
  return c.body(null, 401);
401
- if (cause instanceof FundingProvider.WebhookPayloadError)
423
+ if (cause instanceof RoutesProvider.WebhookPayloadError)
402
424
  return c.body(null, 400);
403
425
  throw cause;
404
426
  }
405
427
  })
406
- .post('/v1/funding/deposit-addresses', Auth.policy({ apiKey: { scopes: ['funding:write'] } }), OpenApi.validate('header', schema.createFundingDepositAddress.Headers, {
428
+ .post('/v1/routes/deposit-addresses', Auth.policy({
429
+ apiKey: { rateLimit: creationRateLimit, scopes: ['routes:write'] },
430
+ }), OpenApi.validate('header', schema.createRoutesDepositAddress.Headers, {
407
431
  code: 'idempotency_key_required',
408
- message: 'Funding deposit address creation requires an `Idempotency-Key` header.',
409
- }), OpenApi.validate('json', schema.createFundingDepositAddress.Body, {
432
+ message: 'Route deposit address creation requires an `Idempotency-Key` header.',
433
+ }), OpenApi.validate('json', schema.createRoutesDepositAddress.Body, {
410
434
  code: 'body_invalid',
411
435
  message: 'Check the request body and try again.',
412
436
  }), OpenApi.describeRoute({
413
- description: 'Creates or returns a reusable deposit address for funding a Tempo account.',
414
- operationId: 'createFundingDepositAddress',
437
+ description: 'Creates or returns a reusable deposit address for routes a Tempo account.',
438
+ operationId: 'createRoutesDepositAddress',
415
439
  responses: OpenApi.responses({
416
440
  errors: {
417
441
  400: { codes: ['body_invalid', 'idempotency_key_required'] },
442
+ 403: {
443
+ codes: [
444
+ 'billing_past_due',
445
+ 'billing_required',
446
+ 'routes_deposit_address_limit_exceeded',
447
+ 'routes_subsidy_not_enabled',
448
+ ],
449
+ description: 'The organization cannot create another address or is not eligible for a Tempo-funded Routes subsidy.',
450
+ name: 'CreateRoutesDepositAddressForbiddenError',
451
+ },
418
452
  404: {
419
453
  codes: ['deposit_address_not_available'],
420
454
  description: 'No provider can provision the requested reusable address route.',
@@ -429,9 +463,9 @@ export function depositAddresses(options = {}) {
429
463
  },
430
464
  },
431
465
  success: {
432
- description: 'The created or matching reusable funding deposit address and quote.',
433
- example: createdFundingDepositAddressExample,
434
- schema: schema.createFundingDepositAddress.Response,
466
+ description: 'The created or matching reusable route deposit address and quote.',
467
+ example: createdRoutesDepositAddressExample,
468
+ schema: schema.createRoutesDepositAddress.Response,
435
469
  },
436
470
  }),
437
471
  summary: 'Create deposit address',
@@ -454,16 +488,48 @@ export function depositAddresses(options = {}) {
454
488
  const db = Db.get(c.get('db'));
455
489
  const identity = {
456
490
  apiKeyId: principal.id,
491
+ compatibleRequestHashes: [
492
+ Idempotency.inputHash({
493
+ body,
494
+ endpoint: 'POST /v1/routes/deposit-addresses',
495
+ }),
496
+ ],
457
497
  keyHash: Idempotency.inputHash(c.req.valid('header')['idempotency-key']),
458
498
  requestHash: Idempotency.inputHash({
459
499
  body,
460
- endpoint: 'POST /v1/funding/deposit-addresses',
500
+ endpoint: 'POST /v1/routes/deposit-addresses',
501
+ owner,
461
502
  }),
462
503
  };
463
- const claim = await FundingIdempotency.claim(db, {
464
- ...identity,
465
- ttlMs: idempotencyPendingTtlMs,
466
- });
504
+ const claimed = await (async () => {
505
+ try {
506
+ return {
507
+ claim: await RoutesDepositAddresses.claimCreation(db, {
508
+ claim: {
509
+ ...identity,
510
+ irrevocable: false,
511
+ recoveredIrrevocable: subsidize,
512
+ ttlMs: idempotencyPendingTtlMs,
513
+ },
514
+ orgId: owner.orgId,
515
+ }),
516
+ type: 'success',
517
+ };
518
+ }
519
+ catch (cause) {
520
+ if (cause instanceof RoutesDepositAddresses.OwnerNotFoundError ||
521
+ RoutesIdempotency.isOwnerFenceError(cause))
522
+ return { type: 'ownerNotFound' };
523
+ throw cause;
524
+ }
525
+ })();
526
+ if (claimed.type === 'ownerNotFound')
527
+ return Response.error(c, {
528
+ code: 'api_key_forbidden',
529
+ message: 'API key organization no longer exists.',
530
+ status: 403,
531
+ });
532
+ const claim = claimed.claim;
467
533
  if (claim.type === 'mismatch')
468
534
  return Response.error(c, {
469
535
  code: 'idempotency_conflict',
@@ -473,19 +539,19 @@ export function depositAddresses(options = {}) {
473
539
  if (claim.type === 'pending')
474
540
  return Response.error(c, {
475
541
  code: 'idempotency_in_progress',
476
- message: 'An equivalent funding deposit address creation is still running.',
542
+ message: 'An equivalent route deposit address creation is still running.',
477
543
  status: 409,
478
544
  });
479
545
  if (claim.type === 'replay') {
480
546
  const response = JSON.parse(claim.response);
481
- return c.json(Response.validated(schema.createFundingDepositAddress.Response, {
547
+ return c.json(Response.validated(schema.createRoutesDepositAddress.Response, {
482
548
  ...response,
483
549
  subsidize: response['subsidize'] ?? false,
484
550
  }), 200);
485
551
  }
486
552
  const release = async () => {
487
553
  try {
488
- await FundingIdempotency.release(db, {
554
+ await RoutesIdempotency.release(db, {
489
555
  apiKeyId: identity.apiKeyId,
490
556
  createdAt: claim.createdAt,
491
557
  keyHash: identity.keyHash,
@@ -496,8 +562,8 @@ export function depositAddresses(options = {}) {
496
562
  }
497
563
  };
498
564
  const complete = async (database, response) => {
499
- const validated = Response.validated(schema.createFundingDepositAddress.Response, response);
500
- const completion = await FundingIdempotency.complete(database, {
565
+ const validated = Response.validated(schema.createRoutesDepositAddress.Response, response);
566
+ const completion = await RoutesIdempotency.complete(database, {
501
567
  apiKeyId: identity.apiKeyId,
502
568
  createdAt: claim.createdAt,
503
569
  keyHash: identity.keyHash,
@@ -505,18 +571,102 @@ export function depositAddresses(options = {}) {
505
571
  response: JSON.stringify(validated),
506
572
  });
507
573
  if (!completion)
508
- throw new IdempotencyLeaseLostError('Funding deposit address creation lease was lost.');
574
+ throw new IdempotencyLeaseLostError('Route deposit address creation lease was lost.');
509
575
  return validated;
510
576
  };
511
577
  const attempts = [];
512
578
  const provisioning = { succeeded: claim.type === 'resume' };
513
579
  try {
580
+ if (claim.type === 'claimed' && subsidize) {
581
+ const policy = await RoutesSubsidy.check(db, {
582
+ environment: owner.environment,
583
+ orgId: owner.orgId,
584
+ });
585
+ if (policy.type === 'denied') {
586
+ RoutesObservability.recordSubsidyRejection(c.get('metrics'), {
587
+ reason: policy.reason,
588
+ routesEnvironment: owner.environment,
589
+ });
590
+ await release();
591
+ return Response.error(c, {
592
+ code: policy.reason,
593
+ message: RoutesSubsidy.denialMessages[policy.reason],
594
+ status: 403,
595
+ });
596
+ }
597
+ }
514
598
  const selected = await (async () => {
515
599
  if (claim.type === 'resume')
516
- return depositAddressCheckpoint.parse(JSON.parse(claim.response));
517
- const catalog = await FundingCatalog.snapshot(c);
518
- const providers = c.get('providers').filter(FundingProvider.is);
519
- const provisioned = await FundingProvider.createDepositAddress({
600
+ return {
601
+ checkpoint: depositAddressCheckpoint.parse(JSON.parse(claim.response)),
602
+ checkpointFresh: claim.checkpointFresh,
603
+ ...(claim.recoveredClaim === undefined
604
+ ? {}
605
+ : { recoveredClaim: claim.recoveredClaim }),
606
+ quoteMatchesRequest: claim.checkpointFresh,
607
+ type: 'resume',
608
+ };
609
+ const catalog = await RoutesCatalog.snapshot(c);
610
+ const providers = c.get('providers').filter(RoutesProvider.is);
611
+ const selection = RoutesProvider.selectDepositAddress({
612
+ catalog,
613
+ destinationChainId: c.get('chainId'),
614
+ destinationToken: body.destinationToken,
615
+ providers,
616
+ recipient: body.recipient,
617
+ refundAddress: body.refundAddress,
618
+ sourceChain: body.sourceChain,
619
+ sourceToken: body.sourceToken,
620
+ });
621
+ if (!selection)
622
+ return undefined;
623
+ const match = {
624
+ destinationTokenKey: selection.candidate.destinationToken.tokenKey,
625
+ environment: owner.environment,
626
+ orgId: owner.orgId,
627
+ ...(owner.projectId === undefined ? {} : { projectId: owner.projectId }),
628
+ recipient: selection.recipient,
629
+ refundAddress: selection.refundAddress,
630
+ sourceChainId: selection.candidate.sourceChain.id,
631
+ sourceTokenKey: selection.candidate.sourceToken.tokenKey,
632
+ subsidize,
633
+ };
634
+ const capacity = await RoutesDepositAddresses.validateCreationCapacity(db, {
635
+ claim: {
636
+ apiKeyId: identity.apiKeyId,
637
+ createdAt: claim.createdAt,
638
+ keyHash: identity.keyHash,
639
+ },
640
+ match,
641
+ matchHash: Idempotency.inputHash(match),
642
+ maxPerCreator: RoutesDepositAddress.maximumPerCreator,
643
+ orgId: owner.orgId,
644
+ pendingTtlMs: idempotencyPendingTtlMs,
645
+ replayTtlMs: idempotencyReplayTtlMs,
646
+ serializeMatchingResponse: (record) => JSON.stringify(Response.validated(schema.createRoutesDepositAddress.Response, RoutesDepositAddress.toPublic(record))),
647
+ });
648
+ if (capacity.type === 'existing')
649
+ return { record: capacity.record, type: 'existing' };
650
+ if (capacity.type === 'resume')
651
+ return {
652
+ checkpoint: depositAddressCheckpoint.parse(JSON.parse(capacity.response)),
653
+ checkpointFresh: capacity.checkpointFresh,
654
+ quoteMatchesRequest: false,
655
+ recoveredClaim: capacity.claim,
656
+ type: 'resume',
657
+ };
658
+ if (subsidize) {
659
+ const marked = await RoutesIdempotency.markProviderAttempt(db, {
660
+ apiKeyId: identity.apiKeyId,
661
+ createdAt: claim.createdAt,
662
+ keyHash: identity.keyHash,
663
+ ttlMs: idempotencyPendingTtlMs,
664
+ });
665
+ if (!marked)
666
+ throw new IdempotencyLeaseLostError('Route deposit address creation lease was lost.');
667
+ provisioning.succeeded = true;
668
+ }
669
+ const provisioned = await RoutesProvider.createDepositAddress({
520
670
  amount: body.amount,
521
671
  catalog,
522
672
  destinationChainId: c.get('chainId'),
@@ -533,33 +683,93 @@ export function depositAddresses(options = {}) {
533
683
  return undefined;
534
684
  provisioning.succeeded = true;
535
685
  const checkpoint = depositAddressCheckpoint.parse({
686
+ amount: body.amount,
536
687
  candidate: provisioned.candidate,
537
688
  provider: provisioned.provider,
538
689
  recipient: provisioned.recipient,
539
690
  refundAddress: provisioned.refundAddress,
540
691
  result: provisioned.result,
541
692
  });
542
- const stored = await FundingIdempotency.checkpoint(db, {
693
+ return {
694
+ checkpoint,
695
+ checkpointFresh: true,
696
+ quoteMatchesRequest: true,
697
+ type: 'provisioned',
698
+ };
699
+ })();
700
+ if (attempts.length > 0)
701
+ c.set('routesProviderAttempts', attempts.map(RoutesProvider.formatAttempt));
702
+ if (!selected) {
703
+ await release();
704
+ return depositAddressNotAvailable(c);
705
+ }
706
+ if (selected.type === 'existing') {
707
+ const response = Response.validated(schema.createRoutesDepositAddress.Response, RoutesDepositAddress.toPublic(selected.record));
708
+ if (options.registerDepositAddress)
709
+ await options.registerDepositAddress(RoutesDepositAddress.schema.RoutesDepositAddress.parse(response));
710
+ return c.json(response, 200);
711
+ }
712
+ const resumed = await (async () => {
713
+ if (selected.type !== 'resume')
714
+ return { recoveredClaim: undefined, type: 'ready' };
715
+ const match = {
716
+ destinationTokenKey: selected.checkpoint.candidate.destinationToken.tokenKey,
717
+ environment: owner.environment,
718
+ orgId: owner.orgId,
719
+ ...(owner.projectId === undefined ? {} : { projectId: owner.projectId }),
720
+ recipient: selected.checkpoint.recipient,
721
+ refundAddress: selected.checkpoint.refundAddress,
722
+ sourceChainId: selected.checkpoint.candidate.sourceChain.id,
723
+ sourceTokenKey: selected.checkpoint.candidate.sourceToken.tokenKey,
724
+ subsidize,
725
+ };
726
+ const capacity = await RoutesDepositAddresses.validateCreationCapacity(db, {
727
+ claim: {
728
+ apiKeyId: identity.apiKeyId,
729
+ createdAt: claim.createdAt,
730
+ keyHash: identity.keyHash,
731
+ },
732
+ match,
733
+ matchHash: Idempotency.inputHash(match),
734
+ maxPerCreator: RoutesDepositAddress.maximumPerCreator,
735
+ orgId: owner.orgId,
736
+ pendingTtlMs: idempotencyPendingTtlMs,
737
+ ...(selected.recoveredClaim === undefined
738
+ ? {}
739
+ : { recoveredClaim: selected.recoveredClaim }),
740
+ replayTtlMs: idempotencyReplayTtlMs,
741
+ serializeMatchingResponse: (record) => JSON.stringify(Response.validated(schema.createRoutesDepositAddress.Response, RoutesDepositAddress.toPublic(record))),
742
+ });
743
+ if (capacity.type === 'existing')
744
+ return { record: capacity.record, type: 'existing' };
745
+ return {
746
+ recoveredClaim: capacity.type === 'resume' ? capacity.claim : selected.recoveredClaim,
747
+ type: 'ready',
748
+ };
749
+ })();
750
+ if (resumed.type === 'existing') {
751
+ const response = Response.validated(schema.createRoutesDepositAddress.Response, RoutesDepositAddress.toPublic(resumed.record));
752
+ if (options.registerDepositAddress)
753
+ await options.registerDepositAddress(RoutesDepositAddress.schema.RoutesDepositAddress.parse(response));
754
+ return c.json(response, 200);
755
+ }
756
+ if (selected.type === 'provisioned') {
757
+ const stored = await RoutesIdempotency.checkpoint(db, {
543
758
  apiKeyId: identity.apiKeyId,
544
759
  createdAt: claim.createdAt,
545
760
  keyHash: identity.keyHash,
546
761
  replayTtlMs: idempotencyReplayTtlMs,
547
- response: JSON.stringify(checkpoint),
762
+ response: JSON.stringify(selected.checkpoint),
548
763
  });
549
764
  if (!stored)
550
- throw new IdempotencyLeaseLostError('Funding deposit address creation lease was lost.');
551
- return checkpoint;
552
- })();
553
- if (attempts.length > 0)
554
- c.set('fundingProviderAttempts', attempts.map(ProviderAttempts.format));
555
- if (!selected) {
556
- await release();
557
- return depositAddressNotAvailable(c);
765
+ throw new IdempotencyLeaseLostError('Route deposit address creation lease was lost.');
558
766
  }
559
- const { candidate: selectedCandidate, provider, recipient, refundAddress, result, } = selected;
767
+ const { candidate: selectedCandidate, provider, recipient, refundAddress, result, } = selected.checkpoint;
560
768
  const created = await db.transaction(async (tx) => {
561
- const stored = await FundingDepositAddress.createOrGet(tx, {
562
- apiKeyId: principal.id,
769
+ const persist = selected.type === 'resume'
770
+ ? RoutesDepositAddress.recoverOrGet
771
+ : RoutesDepositAddress.createOrGet;
772
+ const stored = await persist(tx, {
563
773
  deliveryStrategy: 'provider',
564
774
  environment: owner.environment,
565
775
  orgId: owner.orgId,
@@ -581,10 +791,8 @@ export function depositAddresses(options = {}) {
581
791
  subsidize,
582
792
  },
583
793
  });
584
- const record = FundingDepositAddress.toPublic(stored.record);
585
- if (stored.type === 'existing')
586
- return complete(tx, record);
587
- return complete(tx, {
794
+ const record = RoutesDepositAddress.toPublic(stored.record);
795
+ const quoted = {
588
796
  ...record,
589
797
  destinationAmount: Value.tokenAmount({
590
798
  baseUnits: result.destinationAmount,
@@ -617,64 +825,124 @@ export function depositAddresses(options = {}) {
617
825
  sampledAt: result.sampledAt,
618
826
  },
619
827
  sourceAmount: Value.tokenAmount({
620
- baseUnits: body.amount,
828
+ baseUnits: selected.checkpoint.amount ?? body.amount,
621
829
  currency: selectedCandidate.sourceToken.currency,
622
830
  decimals: selectedCandidate.sourceToken.decimals,
623
831
  }),
624
- });
832
+ };
833
+ const response = await complete(tx, stored.type === 'existing' || !selected.quoteMatchesRequest ? record : quoted);
834
+ if (resumed.recoveredClaim)
835
+ await RoutesIdempotency.complete(tx, {
836
+ ...resumed.recoveredClaim,
837
+ replayTtlMs: idempotencyReplayTtlMs,
838
+ response: JSON.stringify(stored.type === 'existing' ||
839
+ !selected.checkpointFresh ||
840
+ (selected.checkpoint.amount === undefined && !selected.quoteMatchesRequest)
841
+ ? record
842
+ : quoted),
843
+ });
844
+ return { record: stored.record, response, type: stored.type };
625
845
  });
846
+ if (created.type === 'created') {
847
+ if ('sourceAmount' in created.response)
848
+ RoutesObservability.recordRouteQuote(c.get('metrics'), {
849
+ destinationAmount: created.response.destinationAmount,
850
+ destinationChain: created.response.destinationChain,
851
+ destinationToken: created.response.destinationToken,
852
+ feePayer: subsidize ? 'tempo' : 'customer',
853
+ fees: created.response.fees,
854
+ routesEnvironment: owner.environment,
855
+ method: 'deposit_address',
856
+ provider: created.response.provider,
857
+ sourceAmount: created.response.sourceAmount,
858
+ sourceChain: created.response.sourceChain,
859
+ sourceToken: created.response.sourceToken,
860
+ });
861
+ RoutesObservability.recordDepositAddress(c.get('metrics'), {
862
+ record: created.record,
863
+ });
864
+ }
626
865
  if (options.registerDepositAddress)
627
- await options.registerDepositAddress(FundingDepositAddress.schema.FundingDepositAddress.parse(created));
628
- return c.json(created, 200);
866
+ await options.registerDepositAddress(RoutesDepositAddress.schema.RoutesDepositAddress.parse(created.response));
867
+ return c.json(created.response, 200);
629
868
  }
630
869
  catch (cause) {
631
870
  if (!provisioning.succeeded)
632
871
  await release();
633
- if (cause instanceof FundingProvider.InvalidRefundAddressError)
872
+ if (cause instanceof RoutesProvider.InvalidRefundAddressError)
634
873
  return Response.error(c, {
635
874
  code: 'body_invalid',
636
875
  message: 'Invalid `refundAddress`.',
637
876
  status: 400,
638
877
  });
639
- if (cause instanceof FundingProvider.UnsupportedSourceChainError)
878
+ if (cause instanceof RoutesProvider.UnsupportedSourceChainError)
640
879
  return depositAddressNotAvailable(c);
641
- if (cause instanceof FundingDepositAddress.ConflictError ||
642
- cause instanceof FundingProvider.ProviderQuoteError) {
643
- if (cause instanceof FundingDepositAddress.ConflictError)
880
+ if (cause instanceof RoutesDepositAddress.OwnerNotFoundError ||
881
+ RoutesIdempotency.isOwnerFenceError(cause))
882
+ return Response.error(c, {
883
+ code: 'api_key_forbidden',
884
+ message: 'API key organization no longer exists.',
885
+ status: 403,
886
+ });
887
+ if (cause instanceof RoutesDepositAddresses.OwnerNotFoundError)
888
+ return Response.error(c, {
889
+ code: 'api_key_forbidden',
890
+ message: 'API key organization no longer exists.',
891
+ status: 403,
892
+ });
893
+ if (cause instanceof RoutesDepositAddresses.CapacityClaimNotFoundError ||
894
+ cause instanceof RoutesDepositAddresses.MatchInProgressError)
895
+ return Response.error(c, {
896
+ code: 'idempotency_in_progress',
897
+ message: 'An equivalent route deposit address creation is still running.',
898
+ status: 409,
899
+ });
900
+ if (cause instanceof RoutesDepositAddress.ConflictError ||
901
+ cause instanceof RoutesDepositAddress.LimitExceededError ||
902
+ cause instanceof RoutesDepositAddresses.LimitExceededError ||
903
+ cause instanceof RoutesProvider.ProviderQuoteError) {
904
+ if (cause instanceof RoutesDepositAddress.LimitExceededError ||
905
+ cause instanceof RoutesDepositAddresses.LimitExceededError) {
906
+ RoutesObservability.recordDepositAddressLimitRejection(c.get('metrics'), {
907
+ routesEnvironment: owner.environment,
908
+ });
909
+ return depositAddressLimitExceeded(c);
910
+ }
911
+ if (cause instanceof RoutesDepositAddress.ConflictError)
644
912
  return Response.error(c, {
645
913
  code: 'upstream_error',
646
- message: 'The funding provider returned a conflicting deposit address.',
914
+ message: 'The route provider returned a conflicting deposit address.',
647
915
  status: 502,
648
916
  });
649
- if (cause.fundingProviderAttempts.length > 0)
650
- c.set('fundingProviderAttempts', cause.fundingProviderAttempts);
917
+ if (cause.routesProviderAttempts.length > 0)
918
+ c.set('routesProviderAttempts', cause.routesProviderAttempts);
651
919
  if (cause.providerFailure)
652
920
  c.set('providerFailure', cause.providerFailure);
653
921
  if (cause.providerFailures)
654
922
  c.set('providerFailures', cause.providerFailures);
655
923
  return Response.error(c, {
656
924
  code: 'upstream_error',
657
- message: 'The funding provider could not provision the deposit address.',
925
+ message: 'The route provider could not provision the deposit address.',
658
926
  status: 502,
659
927
  });
660
928
  }
661
929
  throw cause;
662
930
  }
663
931
  })
664
- .get('/v1/funding/deposit-addresses', Auth.policy({ apiKey: { scopes: ['funding:read'] } }), OpenApi.validate('query', schema.listFundingDepositAddresses.Query, {
932
+ .get('/v1/routes/deposit-addresses', Auth.policy({ apiKey: { scopes: ['routes:read'] } }), OpenApi.validate('query', schema.listRoutesDepositAddresses.Query, {
665
933
  code: 'query_invalid',
666
934
  message: 'Check the query parameters and try again.',
667
935
  }), OpenApi.describeRoute({
668
- description: 'Lists reusable funding deposit addresses, newest first.',
669
- operationId: 'listFundingDepositAddresses',
936
+ description: 'Lists reusable route deposit addresses, newest first.',
937
+ operationId: 'listRoutesDepositAddresses',
670
938
  responses: OpenApi.responses({
671
939
  errors: {
672
940
  400: { codes: ['query_invalid'] },
673
941
  },
674
942
  success: {
675
- description: 'A page of reusable funding deposit addresses.',
676
- example: fundingDepositAddressesExample,
677
- schema: schema.listFundingDepositAddresses.Response,
943
+ description: 'A page of reusable route deposit addresses.',
944
+ example: routesDepositAddressesExample,
945
+ schema: schema.listRoutesDepositAddresses.Response,
678
946
  },
679
947
  }),
680
948
  summary: 'List deposit addresses',
@@ -694,7 +962,7 @@ export function depositAddresses(options = {}) {
694
962
  const { cursor, limit } = c.req.valid('query');
695
963
  const decoded = cursor ? Cursor.decode(cursor, ['timestamp', 'id']) : undefined;
696
964
  try {
697
- const rows = await FundingDepositAddresses.list(db, {
965
+ const rows = await RoutesDepositAddresses.listByOwner(db, {
698
966
  ...(decoded
699
967
  ? { cursor: { createdAt: String(decoded[0]), id: String(decoded[1]) } }
700
968
  : {}),
@@ -706,10 +974,10 @@ export function depositAddresses(options = {}) {
706
974
  limit,
707
975
  rows,
708
976
  });
709
- const data = page.rows.map(FundingDepositAddress.toPublic);
977
+ const data = page.rows.map(RoutesDepositAddress.toPublic);
710
978
  c.header('Cache-Control', Cache.policies.noStore);
711
979
  c.header('Vary', 'Accept-Encoding, Authorization, Tempo-API-Key, X-API-Key');
712
- return c.json(Response.validated(schema.listFundingDepositAddresses.Response, {
980
+ return c.json(Response.validated(schema.listRoutesDepositAddresses.Response, {
713
981
  data,
714
982
  nextCursor: page.nextCursor,
715
983
  }), 200);
@@ -718,24 +986,24 @@ export function depositAddresses(options = {}) {
718
986
  return Response.upstream(c, cause);
719
987
  }
720
988
  })
721
- .get('/v1/funding/deposit-addresses/:id{fda_[A-Za-z0-9_-]+}', Auth.policy({ apiKey: { scopes: ['funding:read'] } }), OpenApi.validate('param', schema.getFundingDepositAddress.Params, {
989
+ .get('/v1/routes/deposit-addresses/:id{rda_[A-Za-z0-9_-]+}', Auth.policy({ apiKey: { scopes: ['routes:read'] } }), OpenApi.validate('param', schema.getRoutesDepositAddress.Params, {
722
990
  code: 'param_invalid',
723
991
  message: 'Check the path parameters and try again.',
724
992
  }), OpenApi.describeRoute({
725
- description: 'Returns one reusable funding deposit address.',
726
- operationId: 'getFundingDepositAddress',
993
+ description: 'Returns one reusable route deposit address.',
994
+ operationId: 'getRoutesDepositAddress',
727
995
  responses: OpenApi.responses({
728
996
  errors: {
729
997
  400: { codes: ['param_invalid'] },
730
998
  404: {
731
- codes: ['funding_deposit_address_not_found'],
732
- description: 'No visible funding deposit address exists for the identifier.',
999
+ codes: ['routes_deposit_address_not_found'],
1000
+ description: 'No visible route deposit address exists for the identifier.',
733
1001
  },
734
1002
  },
735
1003
  success: {
736
- description: 'The requested funding deposit address.',
737
- example: fundingDepositAddressExample,
738
- schema: schema.getFundingDepositAddress.Response,
1004
+ description: 'The requested route deposit address.',
1005
+ example: routesDepositAddressExample,
1006
+ schema: schema.getRoutesDepositAddress.Response,
739
1007
  },
740
1008
  }),
741
1009
  summary: 'Get deposit address',
@@ -754,30 +1022,30 @@ export function depositAddresses(options = {}) {
754
1022
  const db = Db.get(c.get('db'));
755
1023
  const { id } = c.req.valid('param');
756
1024
  try {
757
- const record = await FundingDepositAddresses.getOwned(db, owner, id);
1025
+ const record = await RoutesDepositAddresses.getOwned(db, owner, id);
758
1026
  if (!record)
759
1027
  return Response.error(c, {
760
- code: 'funding_deposit_address_not_found',
761
- message: 'Funding deposit address not found',
1028
+ code: 'routes_deposit_address_not_found',
1029
+ message: 'Route deposit address not found',
762
1030
  status: 404,
763
1031
  });
764
1032
  c.header('Cache-Control', Cache.policies.noStore);
765
1033
  c.header('Vary', 'Accept-Encoding, Authorization, Tempo-API-Key, X-API-Key');
766
- return c.json(Response.validated(schema.getFundingDepositAddress.Response, FundingDepositAddress.toPublic(record)), 200);
1034
+ return c.json(Response.validated(schema.getRoutesDepositAddress.Response, RoutesDepositAddress.toPublic(record)), 200);
767
1035
  }
768
1036
  catch (cause) {
769
1037
  return Response.upstream(c, cause);
770
1038
  }
771
1039
  })
772
- .post('/v1/funding/deposit-addresses/:id{fda_[A-Za-z0-9_-]+}/reconcile', Auth.policy({
773
- apiKey: { rateLimit: { limit: 10, period: 'minute' }, scopes: ['funding:write'] },
774
- }), OpenApi.validate('param', schema.reconcileFundingDepositAddress.Params, {
1040
+ .post('/v1/routes/deposit-addresses/:id{rda_[A-Za-z0-9_-]+}/reconcile', Auth.policy({
1041
+ apiKey: { rateLimit: { limit: 10, period: 'minute' }, scopes: ['routes:write'] },
1042
+ }), OpenApi.validate('param', schema.reconcileRoutesDepositAddress.Params, {
775
1043
  code: 'param_invalid',
776
1044
  message: 'Check the path parameters and try again.',
777
1045
  }), OpenApi.describeRoute({
778
- description: 'Queues an immediate provider reconciliation for one reusable funding deposit address.',
779
- operationId: 'reconcileFundingDepositAddress',
780
- responses: reconcileFundingDepositAddressResponses,
1046
+ description: 'Queues an immediate provider reconciliation for one reusable route deposit address.',
1047
+ operationId: 'reconcileRoutesDepositAddress',
1048
+ responses: reconcileRoutesDepositAddressResponses,
781
1049
  summary: 'Reconcile deposit address',
782
1050
  tags: ['Deposit Addresses'],
783
1051
  }), async (c) => {
@@ -796,30 +1064,30 @@ export function depositAddresses(options = {}) {
796
1064
  const db = Db.get(c.get('db'));
797
1065
  const { id } = c.req.valid('param');
798
1066
  try {
799
- const record = await FundingDepositAddresses.getOwned(db, owner, id);
1067
+ const record = await RoutesDepositAddresses.getOwned(db, owner, id);
800
1068
  if (!record)
801
1069
  return Response.error(c, {
802
- code: 'funding_deposit_address_not_found',
803
- message: 'Funding deposit address not found',
1070
+ code: 'routes_deposit_address_not_found',
1071
+ message: 'Route deposit address not found',
804
1072
  status: 404,
805
1073
  });
806
1074
  if (record.status !== 'active')
807
1075
  return Response.error(c, {
808
- code: 'funding_deposit_address_not_active',
809
- message: 'Funding deposit address is not active',
1076
+ code: 'routes_deposit_address_not_active',
1077
+ message: 'Route deposit address is not active',
810
1078
  status: 409,
811
1079
  });
812
1080
  const dispatch = options.dispatchDepositReconciliation;
813
1081
  if (!dispatch)
814
1082
  return Response.error(c, {
815
1083
  code: 'not_implemented',
816
- message: 'Manual funding reconciliation is not configured',
1084
+ message: 'Manual routes reconciliation is not configured',
817
1085
  status: 501,
818
1086
  });
819
1087
  await dispatch({
820
1088
  addressId: record.id,
821
1089
  trigger: 'manual',
822
- type: 'funding:deposit-address:reconcile',
1090
+ type: 'routes:deposit-address:reconcile',
823
1091
  });
824
1092
  return c.body(null, 202);
825
1093
  }
@@ -827,20 +1095,20 @@ export function depositAddresses(options = {}) {
827
1095
  return Response.upstream(c, cause);
828
1096
  }
829
1097
  })
830
- .get('/v1/funding/deposits', Auth.policy({ apiKey: { scopes: ['funding:read'] } }), OpenApi.validate('query', schema.listFundingDeposits.Query, {
1098
+ .get('/v1/routes/deposits', Auth.policy({ apiKey: { scopes: ['routes:read'] } }), OpenApi.validate('query', schema.listRoutesDeposits.Query, {
831
1099
  code: 'query_invalid',
832
1100
  message: 'Check the query parameters and try again.',
833
1101
  }), OpenApi.describeRoute({
834
1102
  description: 'Lists visible deposits, optionally filtered, newest first.',
835
- operationId: 'listFundingDeposits',
1103
+ operationId: 'listRoutesDeposits',
836
1104
  responses: OpenApi.responses({
837
1105
  errors: {
838
1106
  400: { codes: ['query_invalid'] },
839
1107
  },
840
1108
  success: {
841
- description: 'A page of visible funding deposits.',
842
- example: fundingDepositsExample,
843
- schema: schema.listFundingDeposits.Response,
1109
+ description: 'A page of visible route deposits.',
1110
+ example: routesDepositsExample,
1111
+ schema: schema.listRoutesDeposits.Response,
844
1112
  },
845
1113
  }),
846
1114
  summary: 'List deposits',
@@ -864,18 +1132,18 @@ export function depositAddresses(options = {}) {
864
1132
  const catalog = parameters.destinationToken !== undefined ||
865
1133
  parameters.sourceChain !== undefined ||
866
1134
  parameters.sourceToken !== undefined
867
- ? await FundingCatalog.snapshot(c)
1135
+ ? await RoutesCatalog.snapshot(c)
868
1136
  : undefined;
869
1137
  const filters = resolveDepositFilters({ catalog, parameters });
870
1138
  // Counts are best-effort and share every ownership and filter predicate
871
1139
  // with the page query. A failure omits `meta` rather than failing the page.
872
1140
  const countPromise = include.includes('totalCount')
873
- ? FundingDeposits.count(db, {
1141
+ ? RoutesDeposits.count(db, {
874
1142
  ...filters,
875
1143
  cap: Schema.countCap,
876
1144
  owner,
877
1145
  }).catch(() => {
878
- c.set('fundingDepositCountFailed', true);
1146
+ c.set('routesDepositCountFailed', true);
879
1147
  return undefined;
880
1148
  })
881
1149
  : undefined;
@@ -887,17 +1155,17 @@ export function depositAddresses(options = {}) {
887
1155
  limit: limit + 1,
888
1156
  owner,
889
1157
  };
890
- const rows = await FundingDeposits.list(db, paging);
1158
+ const rows = await RoutesDeposits.listByOwner(db, paging);
891
1159
  const page = Cursor.paginate({
892
1160
  key: (record) => [record.createdAt, record.id],
893
1161
  limit,
894
1162
  rows,
895
1163
  });
896
- const data = page.rows.map(FundingDeposit.toPublic);
1164
+ const data = page.rows.map(RoutesDeposit.toPublic);
897
1165
  const count = await countPromise;
898
1166
  c.header('Cache-Control', Cache.policies.noStore);
899
1167
  c.header('Vary', 'Accept-Encoding, Authorization, Tempo-API-Key');
900
- return c.json(Response.validated(schema.listFundingDeposits.Response, {
1168
+ return c.json(Response.validated(schema.listRoutesDeposits.Response, {
901
1169
  data,
902
1170
  ...(count === undefined
903
1171
  ? {}
@@ -914,29 +1182,29 @@ export function depositAddresses(options = {}) {
914
1182
  return Response.upstream(c, cause);
915
1183
  }
916
1184
  })
917
- .get('/v1/funding/deposits/:id{fdp_[A-Za-z0-9_-]+}', Auth.policy({ apiKey: { scopes: ['funding:read'] } }), OpenApi.validate('param', schema.getFundingDeposit.Params, {
1185
+ .get('/v1/routes/deposits/:id{rdp_[A-Za-z0-9_-]+}', Auth.policy({ apiKey: { scopes: ['routes:read'] } }), OpenApi.validate('param', schema.getRoutesDeposit.Params, {
918
1186
  code: 'param_invalid',
919
1187
  message: 'Check the path parameters and try again.',
920
1188
  }), OpenApi.describeRoute({
921
1189
  description: 'Returns one detected deposit and its delivery status.',
922
- operationId: 'getFundingDeposit',
1190
+ operationId: 'getRoutesDeposit',
923
1191
  responses: OpenApi.responses({
924
1192
  errors: {
925
1193
  400: { codes: ['param_invalid'] },
926
1194
  404: {
927
- codes: ['funding_deposit_not_found'],
928
- description: 'No visible funding deposit exists for the identifier.',
1195
+ codes: ['routes_deposit_not_found'],
1196
+ description: 'No visible route deposit exists for the identifier.',
929
1197
  },
930
1198
  },
931
1199
  success: {
932
- description: 'The requested funding deposit.',
933
- example: fundingDepositExample,
934
- schema: schema.getFundingDeposit.Response,
1200
+ description: 'The requested route deposit.',
1201
+ example: routesDepositExample,
1202
+ schema: schema.getRoutesDeposit.Response,
935
1203
  },
936
1204
  }),
937
1205
  summary: 'Get deposit',
938
1206
  tags: ['Deposit Addresses'],
939
- }), fundingEtag, async (c) => {
1207
+ }), routesEtag, async (c) => {
940
1208
  if (Auth.narrowAccess)
941
1209
  return Auth.accessError(c);
942
1210
  if (OpenApi.narrowValidation)
@@ -950,16 +1218,16 @@ export function depositAddresses(options = {}) {
950
1218
  const db = Db.get(c.get('db'));
951
1219
  const { id } = c.req.valid('param');
952
1220
  try {
953
- const record = await FundingDeposits.getOwned(db, owner, id);
1221
+ const record = await RoutesDeposits.getOwned(db, owner, id);
954
1222
  if (!record)
955
1223
  return Response.error(c, {
956
- code: 'funding_deposit_not_found',
957
- message: 'Funding deposit not found',
1224
+ code: 'routes_deposit_not_found',
1225
+ message: 'Route deposit not found',
958
1226
  status: 404,
959
1227
  });
960
1228
  c.header('Cache-Control', Cache.policies.state);
961
1229
  c.header('Vary', 'Accept-Encoding, Authorization, Tempo-API-Key, X-API-Key');
962
- return c.json(Response.validated(schema.getFundingDeposit.Response, FundingDeposit.toPublic(record)), 200);
1230
+ return c.json(Response.validated(schema.getRoutesDeposit.Response, RoutesDeposit.toPublic(record)), 200);
963
1231
  }
964
1232
  catch (cause) {
965
1233
  return Response.upstream(c, cause);
@@ -973,7 +1241,14 @@ function depositAddressNotAvailable(c) {
973
1241
  status: 404,
974
1242
  });
975
1243
  }
1244
+ function depositAddressLimitExceeded(c) {
1245
+ return Response.error(c, {
1246
+ code: 'routes_deposit_address_limit_exceeded',
1247
+ message: `Route deposit address limit reached (${RoutesDepositAddress.maximumPerCreator}).`,
1248
+ status: 403,
1249
+ });
1250
+ }
976
1251
  class IdempotencyLeaseLostError extends Error {
977
- name = 'Funding.IdempotencyLeaseLostError';
1252
+ name = 'Routes.IdempotencyLeaseLostError';
978
1253
  }
979
1254
  //# sourceMappingURL=deposit-addresses.js.map