tapimo 0.15.1 → 0.18.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 (709) hide show
  1. package/README.md +137 -0
  2. package/dist/ApiKey.d.ts +1 -0
  3. package/dist/ApiKey.d.ts.map +1 -1
  4. package/dist/ApiKey.js +4 -2
  5. package/dist/ApiKey.js.map +1 -1
  6. package/dist/ApiKeys.d.ts +37 -11
  7. package/dist/ApiKeys.d.ts.map +1 -1
  8. package/dist/ApiKeys.js +163 -10
  9. package/dist/ApiKeys.js.map +1 -1
  10. package/dist/App.d.ts +13085 -11974
  11. package/dist/App.d.ts.map +1 -1
  12. package/dist/App.js +46 -15
  13. package/dist/App.js.map +1 -1
  14. package/dist/Scope.d.ts +1 -1
  15. package/dist/Scope.d.ts.map +1 -1
  16. package/dist/Scope.js +1 -1
  17. package/dist/Scope.js.map +1 -1
  18. package/dist/admin/App.d.ts +893 -191
  19. package/dist/admin/App.d.ts.map +1 -1
  20. package/dist/admin/App.js +5 -1
  21. package/dist/admin/App.js.map +1 -1
  22. package/dist/admin/apps/api-keys.d.ts +70 -70
  23. package/dist/admin/apps/api-keys.d.ts.map +1 -1
  24. package/dist/admin/apps/api-keys.js +8 -3
  25. package/dist/admin/apps/api-keys.js.map +1 -1
  26. package/dist/admin/apps/earn-vaults.d.ts +66 -27
  27. package/dist/admin/apps/earn-vaults.d.ts.map +1 -1
  28. package/dist/admin/apps/earn-vaults.js +36 -7
  29. package/dist/admin/apps/earn-vaults.js.map +1 -1
  30. package/dist/admin/apps/organizations.d.ts +25 -25
  31. package/dist/admin/apps/organizations.d.ts.map +1 -1
  32. package/dist/admin/apps/organizations.js +5 -4
  33. package/dist/admin/apps/organizations.js.map +1 -1
  34. package/dist/admin/apps/route-policies.d.ts +632 -0
  35. package/dist/admin/apps/route-policies.d.ts.map +1 -0
  36. package/dist/admin/apps/route-policies.js +257 -0
  37. package/dist/admin/apps/route-policies.js.map +1 -0
  38. package/dist/admin/apps/routes-support.js +39 -3
  39. package/dist/admin/apps/routes-support.js.map +1 -1
  40. package/dist/admin/apps/routes.d.ts +529 -76
  41. package/dist/admin/apps/routes.d.ts.map +1 -1
  42. package/dist/admin/apps/routes.js +82 -1
  43. package/dist/admin/apps/routes.js.map +1 -1
  44. package/dist/admin/apps/verified-tokens.d.ts +157 -157
  45. package/dist/admin/index.d.ts +0 -1
  46. package/dist/admin/index.d.ts.map +1 -1
  47. package/dist/admin/index.js +0 -1
  48. package/dist/admin/index.js.map +1 -1
  49. package/dist/admin/ui.generated.d.ts +1 -1
  50. package/dist/admin/ui.generated.d.ts.map +1 -1
  51. package/dist/admin/ui.generated.js +205 -201
  52. package/dist/admin/ui.generated.js.map +1 -1
  53. package/dist/analytics/Analytics.d.ts.map +1 -1
  54. package/dist/analytics/Analytics.js +65 -1
  55. package/dist/analytics/Analytics.js.map +1 -1
  56. package/dist/analytics/tables/requestEvents.d.ts +1 -1
  57. package/dist/analytics/tables/requestEvents.d.ts.map +1 -1
  58. package/dist/analytics/tables/requestEvents.js +58 -59
  59. package/dist/analytics/tables/requestEvents.js.map +1 -1
  60. package/dist/apps/data/App.d.ts +2709 -2670
  61. package/dist/apps/data/App.d.ts.map +1 -1
  62. package/dist/apps/data/routes/activities.d.ts +357 -357
  63. package/dist/apps/data/routes/activities.d.ts.map +1 -1
  64. package/dist/apps/data/routes/activities.js +50 -0
  65. package/dist/apps/data/routes/activities.js.map +1 -1
  66. package/dist/apps/data/routes/addresses.d.ts +248 -248
  67. package/dist/apps/data/routes/balances.d.ts +22 -22
  68. package/dist/apps/data/routes/balances.d.ts.map +1 -1
  69. package/dist/apps/data/routes/balances.js +5 -7
  70. package/dist/apps/data/routes/balances.js.map +1 -1
  71. package/dist/apps/data/routes/blocks.d.ts +125 -125
  72. package/dist/apps/data/routes/coingecko.d.ts +54 -54
  73. package/dist/apps/data/routes/earn.d.ts +103 -12
  74. package/dist/apps/data/routes/earn.d.ts.map +1 -1
  75. package/dist/apps/data/routes/earn.js +456 -220
  76. package/dist/apps/data/routes/earn.js.map +1 -1
  77. package/dist/apps/data/routes/exchanges.d.ts.map +1 -1
  78. package/dist/apps/data/routes/exchanges.js +267 -97
  79. package/dist/apps/data/routes/exchanges.js.map +1 -1
  80. package/dist/apps/data/routes/fee-amm.d.ts +109 -127
  81. package/dist/apps/data/routes/fee-amm.d.ts.map +1 -1
  82. package/dist/apps/data/routes/fee-amm.js +83 -54
  83. package/dist/apps/data/routes/fee-amm.js.map +1 -1
  84. package/dist/apps/data/routes/indexer.d.ts +43 -43
  85. package/dist/apps/data/routes/receipts.d.ts +235 -235
  86. package/dist/apps/data/routes/rpc.d.ts +30 -30
  87. package/dist/apps/data/routes/tokens.d.ts.map +1 -1
  88. package/dist/apps/data/routes/tokens.js +11 -6
  89. package/dist/apps/data/routes/tokens.js.map +1 -1
  90. package/dist/apps/data/routes/transactions.d.ts +2 -0
  91. package/dist/apps/data/routes/transactions.d.ts.map +1 -1
  92. package/dist/apps/data/routes/transactions.js +30 -22
  93. package/dist/apps/data/routes/transactions.js.map +1 -1
  94. package/dist/apps/data/routes/transfers.d.ts +77 -77
  95. package/dist/apps/data/routes/valuation.d.ts +32 -32
  96. package/dist/apps/data/routes/verified-tokens.d.ts +86 -86
  97. package/dist/apps/data/routes/webhooks.d.ts.map +1 -1
  98. package/dist/apps/data/routes/webhooks.js +1 -1
  99. package/dist/apps/data/routes/webhooks.js.map +1 -1
  100. package/dist/apps/data/routes/zones.d.ts +31 -31
  101. package/dist/apps/management/App.d.ts +2909 -2064
  102. package/dist/apps/management/App.d.ts.map +1 -1
  103. package/dist/apps/management/App.js +2 -0
  104. package/dist/apps/management/App.js.map +1 -1
  105. package/dist/apps/management/Billing.d.ts +2 -4
  106. package/dist/apps/management/Billing.d.ts.map +1 -1
  107. package/dist/apps/management/Billing.js +65 -26
  108. package/dist/apps/management/Billing.js.map +1 -1
  109. package/dist/apps/management/routes/api-keys.d.ts +257 -245
  110. package/dist/apps/management/routes/api-keys.d.ts.map +1 -1
  111. package/dist/apps/management/routes/api-keys.js +70 -11
  112. package/dist/apps/management/routes/api-keys.js.map +1 -1
  113. package/dist/apps/management/routes/billing.d.ts +84 -84
  114. package/dist/apps/management/routes/cli.d.ts +912 -0
  115. package/dist/apps/management/routes/cli.d.ts.map +1 -0
  116. package/dist/apps/management/routes/cli.js +416 -0
  117. package/dist/apps/management/routes/cli.js.map +1 -0
  118. package/dist/apps/management/routes/faucet.d.ts +8 -8
  119. package/dist/apps/management/routes/invitations.d.ts +138 -138
  120. package/dist/apps/management/routes/invite-links.d.ts +172 -172
  121. package/dist/apps/management/routes/members.d.ts +16 -16
  122. package/dist/apps/management/routes/orgs.d.ts +104 -104
  123. package/dist/apps/management/routes/orgs.d.ts.map +1 -1
  124. package/dist/apps/management/routes/orgs.js +8 -2
  125. package/dist/apps/management/routes/orgs.js.map +1 -1
  126. package/dist/apps/management/routes/projects.d.ts +125 -125
  127. package/dist/apps/management/routes/usage.d.ts +8 -8
  128. package/dist/apps/management/routes/verified-token-requests.d.ts +86 -86
  129. package/dist/apps/management/routes/webhooks.d.ts +485 -485
  130. package/dist/apps/mpp/App.d.ts +44 -44
  131. package/dist/apps/mpp/internal/Policy.d.ts.map +1 -1
  132. package/dist/apps/mpp/internal/Policy.js +4 -2
  133. package/dist/apps/mpp/internal/Policy.js.map +1 -1
  134. package/dist/apps/mpp/internal/Sponsorship.d.ts.map +1 -1
  135. package/dist/apps/mpp/internal/Sponsorship.js +6 -4
  136. package/dist/apps/mpp/internal/Sponsorship.js.map +1 -1
  137. package/dist/apps/relay/App.d.ts +8 -0
  138. package/dist/apps/relay/App.d.ts.map +1 -1
  139. package/dist/apps/relay/App.js +16 -4
  140. package/dist/apps/relay/App.js.map +1 -1
  141. package/dist/apps/relay/Sponsorships.d.ts +4 -6
  142. package/dist/apps/relay/Sponsorships.d.ts.map +1 -1
  143. package/dist/apps/relay/Sponsorships.js +71 -60
  144. package/dist/apps/relay/Sponsorships.js.map +1 -1
  145. package/dist/apps/routes/Access.d.ts +53 -0
  146. package/dist/apps/routes/Access.d.ts.map +1 -1
  147. package/dist/apps/routes/Access.js +121 -0
  148. package/dist/apps/routes/Access.js.map +1 -1
  149. package/dist/apps/routes/App.d.ts +397 -158
  150. package/dist/apps/routes/App.d.ts.map +1 -1
  151. package/dist/apps/routes/App.js.map +1 -1
  152. package/dist/apps/routes/routes/chains.d.ts +25 -25
  153. package/dist/apps/routes/routes/deposit-addresses.d.ts +169 -61
  154. package/dist/apps/routes/routes/deposit-addresses.d.ts.map +1 -1
  155. package/dist/apps/routes/routes/deposit-addresses.js +217 -32
  156. package/dist/apps/routes/routes/deposit-addresses.js.map +1 -1
  157. package/dist/apps/routes/routes/quotes.d.ts +171 -81
  158. package/dist/apps/routes/routes/quotes.d.ts.map +1 -1
  159. package/dist/apps/routes/routes/quotes.js +101 -27
  160. package/dist/apps/routes/routes/quotes.js.map +1 -1
  161. package/dist/apps/routes/routes/transfers.d.ts +532 -480
  162. package/dist/apps/routes/routes/transfers.d.ts.map +1 -1
  163. package/dist/apps/routes/routes/transfers.js +182 -37
  164. package/dist/apps/routes/routes/transfers.js.map +1 -1
  165. package/dist/cli/ApiKeys.d.ts +120 -0
  166. package/dist/cli/ApiKeys.d.ts.map +1 -0
  167. package/dist/cli/ApiKeys.js +138 -0
  168. package/dist/cli/ApiKeys.js.map +1 -0
  169. package/dist/cli/Cli.d.ts +92 -34
  170. package/dist/cli/Cli.d.ts.map +1 -1
  171. package/dist/cli/Cli.js +188 -11
  172. package/dist/cli/Cli.js.map +1 -1
  173. package/dist/cli/Credentials.d.ts +95 -0
  174. package/dist/cli/Credentials.d.ts.map +1 -0
  175. package/dist/cli/Credentials.js +110 -0
  176. package/dist/cli/Credentials.js.map +1 -0
  177. package/dist/cli/Spec.d.ts +59 -0
  178. package/dist/cli/Spec.d.ts.map +1 -0
  179. package/dist/cli/Spec.js +77 -0
  180. package/dist/cli/Spec.js.map +1 -0
  181. package/dist/cli/bin.js +5 -1
  182. package/dist/cli/bin.js.map +1 -1
  183. package/dist/cli/commands/admin.d.ts +5 -5
  184. package/dist/cli/commands/admin.d.ts.map +1 -1
  185. package/dist/cli/commands/auth.d.ts +73 -0
  186. package/dist/cli/commands/auth.d.ts.map +1 -0
  187. package/dist/cli/commands/auth.js +204 -0
  188. package/dist/cli/commands/auth.js.map +1 -0
  189. package/dist/cli/commands/keys.d.ts +17 -0
  190. package/dist/cli/commands/keys.d.ts.map +1 -0
  191. package/dist/cli/commands/keys.js +109 -0
  192. package/dist/cli/commands/keys.js.map +1 -0
  193. package/dist/cloudflare.d.ts +27 -2
  194. package/dist/cloudflare.d.ts.map +1 -1
  195. package/dist/cloudflare.js +144 -17
  196. package/dist/cloudflare.js.map +1 -1
  197. package/dist/db/Db.d.ts +23 -0
  198. package/dist/db/Db.d.ts.map +1 -1
  199. package/dist/db/Db.js +413 -1
  200. package/dist/db/Db.js.map +1 -1
  201. package/dist/db/Schema.d.ts +44 -1
  202. package/dist/db/Schema.d.ts.map +1 -1
  203. package/dist/db/Schema.js +56 -3
  204. package/dist/db/Schema.js.map +1 -1
  205. package/dist/db/tables/apiKeyAdmissions.d.ts +28 -2
  206. package/dist/db/tables/apiKeyAdmissions.d.ts.map +1 -1
  207. package/dist/db/tables/apiKeyAdmissions.js +65 -9
  208. package/dist/db/tables/apiKeyAdmissions.js.map +1 -1
  209. package/dist/db/tables/apiKeyOwnerTombstones.d.ts +2 -0
  210. package/dist/db/tables/apiKeyOwnerTombstones.d.ts.map +1 -1
  211. package/dist/db/tables/apiKeyOwnerTombstones.js +2 -2
  212. package/dist/db/tables/apiKeyOwnerTombstones.js.map +1 -1
  213. package/dist/db/tables/authAccounts.d.ts.map +1 -1
  214. package/dist/db/tables/authAccounts.js +1 -0
  215. package/dist/db/tables/authAccounts.js.map +1 -1
  216. package/dist/db/tables/earnVaults.d.ts +5 -1
  217. package/dist/db/tables/earnVaults.d.ts.map +1 -1
  218. package/dist/db/tables/earnVaults.js +12 -1
  219. package/dist/db/tables/earnVaults.js.map +1 -1
  220. package/dist/db/tables/organizations.d.ts +4 -2
  221. package/dist/db/tables/organizations.d.ts.map +1 -1
  222. package/dist/db/tables/organizations.js +8 -34
  223. package/dist/db/tables/organizations.js.map +1 -1
  224. package/dist/db/tables/requestUsage.d.ts +5 -1
  225. package/dist/db/tables/requestUsage.d.ts.map +1 -1
  226. package/dist/db/tables/requestUsage.js +10 -2
  227. package/dist/db/tables/requestUsage.js.map +1 -1
  228. package/dist/db/tables/rewardEligibilityAssociations.d.ts +13 -0
  229. package/dist/db/tables/rewardEligibilityAssociations.d.ts.map +1 -1
  230. package/dist/db/tables/rewardEligibilityAssociations.js +11 -0
  231. package/dist/db/tables/rewardEligibilityAssociations.js.map +1 -1
  232. package/dist/db/tables/rewardRuns.d.ts.map +1 -1
  233. package/dist/db/tables/rewardRuns.js +4 -0
  234. package/dist/db/tables/rewardRuns.js.map +1 -1
  235. package/dist/db/tables/rewardTransactionAttempts.d.ts.map +1 -1
  236. package/dist/db/tables/rewardTransactionAttempts.js +2 -0
  237. package/dist/db/tables/rewardTransactionAttempts.js.map +1 -1
  238. package/dist/db/tables/routesDepositAddresses.d.ts +29 -0
  239. package/dist/db/tables/routesDepositAddresses.d.ts.map +1 -1
  240. package/dist/db/tables/routesDepositAddresses.js +84 -31
  241. package/dist/db/tables/routesDepositAddresses.js.map +1 -1
  242. package/dist/db/tables/routesDeposits.d.ts.map +1 -1
  243. package/dist/db/tables/routesDeposits.js +31 -21
  244. package/dist/db/tables/routesDeposits.js.map +1 -1
  245. package/dist/db/tables/routesIdempotency.d.ts.map +1 -1
  246. package/dist/db/tables/routesIdempotency.js +2 -0
  247. package/dist/db/tables/routesIdempotency.js.map +1 -1
  248. package/dist/db/tables/routesPolicies.d.ts +58 -0
  249. package/dist/db/tables/routesPolicies.d.ts.map +1 -0
  250. package/dist/db/tables/routesPolicies.js +198 -0
  251. package/dist/db/tables/routesPolicies.js.map +1 -0
  252. package/dist/db/tables/routesTransferSubsidies.d.ts +22 -0
  253. package/dist/db/tables/routesTransferSubsidies.d.ts.map +1 -1
  254. package/dist/db/tables/routesTransferSubsidies.js +41 -0
  255. package/dist/db/tables/routesTransferSubsidies.js.map +1 -1
  256. package/dist/db/tables/routesTransferSubsidyNonces.d.ts.map +1 -1
  257. package/dist/db/tables/routesTransferSubsidyNonces.js +12 -4
  258. package/dist/db/tables/routesTransferSubsidyNonces.js.map +1 -1
  259. package/dist/db/tables/routesTransfers.d.ts +26 -1
  260. package/dist/db/tables/routesTransfers.d.ts.map +1 -1
  261. package/dist/db/tables/routesTransfers.js +36 -6
  262. package/dist/db/tables/routesTransfers.js.map +1 -1
  263. package/dist/db/tables/sponsoredTransactions.d.ts +45 -13
  264. package/dist/db/tables/sponsoredTransactions.d.ts.map +1 -1
  265. package/dist/db/tables/sponsoredTransactions.js +144 -33
  266. package/dist/db/tables/sponsoredTransactions.js.map +1 -1
  267. package/dist/db/tables/users.d.ts +2 -0
  268. package/dist/db/tables/users.d.ts.map +1 -1
  269. package/dist/db/tables/users.js +11 -0
  270. package/dist/db/tables/users.js.map +1 -1
  271. package/dist/handlers/internal/multisig.d.ts +1 -1
  272. package/dist/handlers/internal/multisig.d.ts.map +1 -1
  273. package/dist/handlers/internal/multisig.js +3 -2
  274. package/dist/handlers/internal/multisig.js.map +1 -1
  275. package/dist/handlers/relay.d.ts +2 -0
  276. package/dist/handlers/relay.d.ts.map +1 -1
  277. package/dist/handlers/relay.js +34 -15
  278. package/dist/handlers/relay.js.map +1 -1
  279. package/dist/internal/Auth.d.ts +57 -6
  280. package/dist/internal/Auth.d.ts.map +1 -1
  281. package/dist/internal/Auth.js +182 -78
  282. package/dist/internal/Auth.js.map +1 -1
  283. package/dist/internal/BetterAuth.d.ts +22 -0
  284. package/dist/internal/BetterAuth.d.ts.map +1 -1
  285. package/dist/internal/BetterAuth.js +17 -14
  286. package/dist/internal/BetterAuth.js.map +1 -1
  287. package/dist/internal/Cache.d.ts +5 -0
  288. package/dist/internal/Cache.d.ts.map +1 -1
  289. package/dist/internal/Cache.js +3 -1
  290. package/dist/internal/Cache.js.map +1 -1
  291. package/dist/internal/CliAuth.d.ts +243 -0
  292. package/dist/internal/CliAuth.d.ts.map +1 -0
  293. package/dist/internal/CliAuth.js +249 -0
  294. package/dist/internal/CliAuth.js.map +1 -0
  295. package/dist/internal/EarnSharePrices.d.ts +1 -1
  296. package/dist/internal/EarnSharePrices.d.ts.map +1 -1
  297. package/dist/internal/EarnSharePrices.js +7 -3
  298. package/dist/internal/EarnSharePrices.js.map +1 -1
  299. package/dist/internal/EarnVaults.d.ts +47 -0
  300. package/dist/internal/EarnVaults.d.ts.map +1 -1
  301. package/dist/internal/EarnVaults.js +188 -4
  302. package/dist/internal/EarnVaults.js.map +1 -1
  303. package/dist/internal/EarnWithdrawals.d.ts +73 -0
  304. package/dist/internal/EarnWithdrawals.d.ts.map +1 -0
  305. package/dist/internal/EarnWithdrawals.js +189 -0
  306. package/dist/internal/EarnWithdrawals.js.map +1 -0
  307. package/dist/internal/ExecutionContext.d.ts +21 -0
  308. package/dist/internal/ExecutionContext.d.ts.map +1 -0
  309. package/dist/internal/ExecutionContext.js +16 -0
  310. package/dist/internal/ExecutionContext.js.map +1 -0
  311. package/dist/internal/Log.d.ts +7 -3
  312. package/dist/internal/Log.d.ts.map +1 -1
  313. package/dist/internal/Log.js +163 -130
  314. package/dist/internal/Log.js.map +1 -1
  315. package/dist/internal/MetricSink.d.ts.map +1 -1
  316. package/dist/internal/MetricSink.js +26 -1
  317. package/dist/internal/MetricSink.js.map +1 -1
  318. package/dist/internal/RateLimit.d.ts +67 -0
  319. package/dist/internal/RateLimit.d.ts.map +1 -1
  320. package/dist/internal/RateLimit.js +174 -27
  321. package/dist/internal/RateLimit.js.map +1 -1
  322. package/dist/internal/Store.d.ts +6 -0
  323. package/dist/internal/Store.d.ts.map +1 -1
  324. package/dist/internal/Store.js +4 -5
  325. package/dist/internal/Store.js.map +1 -1
  326. package/dist/internal/Timing.d.ts +6 -0
  327. package/dist/internal/Timing.d.ts.map +1 -1
  328. package/dist/internal/Timing.js +21 -1
  329. package/dist/internal/Timing.js.map +1 -1
  330. package/dist/internal/Tron.d.ts +124 -0
  331. package/dist/internal/Tron.d.ts.map +1 -0
  332. package/dist/internal/Tron.js +202 -0
  333. package/dist/internal/Tron.js.map +1 -0
  334. package/dist/internal/Viem.d.ts +4 -0
  335. package/dist/internal/Viem.d.ts.map +1 -1
  336. package/dist/internal/Viem.js +25 -6
  337. package/dist/internal/Viem.js.map +1 -1
  338. package/dist/internal/rewards/Read.d.ts +2 -2
  339. package/dist/internal/rewards/Read.d.ts.map +1 -1
  340. package/dist/internal/rewards/Read.js +11 -2
  341. package/dist/internal/rewards/Read.js.map +1 -1
  342. package/dist/internal/routes/Action.d.ts +27 -0
  343. package/dist/internal/routes/Action.d.ts.map +1 -1
  344. package/dist/internal/routes/Action.js +49 -1
  345. package/dist/internal/routes/Action.js.map +1 -1
  346. package/dist/internal/routes/Chain.d.ts +2 -0
  347. package/dist/internal/routes/Chain.d.ts.map +1 -1
  348. package/dist/internal/routes/Chain.js +4 -0
  349. package/dist/internal/routes/Chain.js.map +1 -1
  350. package/dist/internal/routes/DepositAddress.d.ts.map +1 -1
  351. package/dist/internal/routes/DepositAddress.js +5 -0
  352. package/dist/internal/routes/DepositAddress.js.map +1 -1
  353. package/dist/internal/routes/Evidence.d.ts.map +1 -1
  354. package/dist/internal/routes/Evidence.js +6 -2
  355. package/dist/internal/routes/Evidence.js.map +1 -1
  356. package/dist/internal/routes/EvmTransferSettlement.d.ts +17 -0
  357. package/dist/internal/routes/EvmTransferSettlement.d.ts.map +1 -0
  358. package/dist/internal/routes/EvmTransferSettlement.js +196 -0
  359. package/dist/internal/routes/EvmTransferSettlement.js.map +1 -0
  360. package/dist/internal/routes/Policy.d.ts +161 -0
  361. package/dist/internal/routes/Policy.d.ts.map +1 -0
  362. package/dist/internal/routes/Policy.js +249 -0
  363. package/dist/internal/routes/Policy.js.map +1 -0
  364. package/dist/internal/routes/Provider.d.ts +66 -3
  365. package/dist/internal/routes/Provider.d.ts.map +1 -1
  366. package/dist/internal/routes/Provider.js +106 -27
  367. package/dist/internal/routes/Provider.js.map +1 -1
  368. package/dist/internal/routes/Quota.d.ts +57 -0
  369. package/dist/internal/routes/Quota.d.ts.map +1 -0
  370. package/dist/internal/routes/Quota.js +144 -0
  371. package/dist/internal/routes/Quota.js.map +1 -0
  372. package/dist/internal/routes/Reconciliation.d.ts.map +1 -1
  373. package/dist/internal/routes/Reconciliation.js +163 -47
  374. package/dist/internal/routes/Reconciliation.js.map +1 -1
  375. package/dist/internal/routes/SolanaTransferSettlement.d.ts +12 -0
  376. package/dist/internal/routes/SolanaTransferSettlement.d.ts.map +1 -0
  377. package/dist/internal/routes/SolanaTransferSettlement.js +220 -0
  378. package/dist/internal/routes/SolanaTransferSettlement.js.map +1 -0
  379. package/dist/internal/routes/SolanaTransferSubsidy.d.ts +172 -0
  380. package/dist/internal/routes/SolanaTransferSubsidy.d.ts.map +1 -0
  381. package/dist/internal/routes/SolanaTransferSubsidy.js +564 -0
  382. package/dist/internal/routes/SolanaTransferSubsidy.js.map +1 -0
  383. package/dist/internal/routes/Subsidy.d.ts +2 -2
  384. package/dist/internal/routes/Subsidy.d.ts.map +1 -1
  385. package/dist/internal/routes/Subsidy.js +2 -2
  386. package/dist/internal/routes/Subsidy.js.map +1 -1
  387. package/dist/internal/routes/Transfer.d.ts +229 -1
  388. package/dist/internal/routes/Transfer.d.ts.map +1 -1
  389. package/dist/internal/routes/Transfer.js +644 -7
  390. package/dist/internal/routes/Transfer.js.map +1 -1
  391. package/dist/internal/routes/TransferReconciliation.d.ts +6 -0
  392. package/dist/internal/routes/TransferReconciliation.d.ts.map +1 -1
  393. package/dist/internal/routes/TransferReconciliation.js +83 -159
  394. package/dist/internal/routes/TransferReconciliation.js.map +1 -1
  395. package/dist/internal/routes/TransferSettlement.d.ts +45 -0
  396. package/dist/internal/routes/TransferSettlement.d.ts.map +1 -0
  397. package/dist/internal/routes/TransferSettlement.js +2 -0
  398. package/dist/internal/routes/TransferSettlement.js.map +1 -0
  399. package/dist/internal/routes/TransferSubsidy.d.ts +23 -8
  400. package/dist/internal/routes/TransferSubsidy.d.ts.map +1 -1
  401. package/dist/internal/routes/TransferSubsidy.js +64 -5
  402. package/dist/internal/routes/TransferSubsidy.js.map +1 -1
  403. package/dist/internal/routes/TronTransferSettlement.d.ts +12 -0
  404. package/dist/internal/routes/TronTransferSettlement.d.ts.map +1 -0
  405. package/dist/internal/routes/TronTransferSettlement.js +201 -0
  406. package/dist/internal/routes/TronTransferSettlement.js.map +1 -0
  407. package/dist/internal/routes/TronTransferSubsidy.d.ts +174 -0
  408. package/dist/internal/routes/TronTransferSubsidy.d.ts.map +1 -0
  409. package/dist/internal/routes/TronTransferSubsidy.js +439 -0
  410. package/dist/internal/routes/TronTransferSubsidy.js.map +1 -0
  411. package/dist/internal/routes/index.d.ts +3 -0
  412. package/dist/internal/routes/index.d.ts.map +1 -1
  413. package/dist/internal/routes/index.js +3 -0
  414. package/dist/internal/routes/index.js.map +1 -1
  415. package/dist/internal/routes/providers/across.d.ts +3 -0
  416. package/dist/internal/routes/providers/across.d.ts.map +1 -1
  417. package/dist/internal/routes/providers/across.js +11 -0
  418. package/dist/internal/routes/providers/across.js.map +1 -1
  419. package/dist/internal/routes/providers/legacyMesh.d.ts +29 -0
  420. package/dist/internal/routes/providers/legacyMesh.d.ts.map +1 -0
  421. package/dist/internal/routes/providers/legacyMesh.js +474 -0
  422. package/dist/internal/routes/providers/legacyMesh.js.map +1 -0
  423. package/dist/internal/routes/providers/legacyMeshDelivery.d.ts +59 -0
  424. package/dist/internal/routes/providers/legacyMeshDelivery.d.ts.map +1 -0
  425. package/dist/internal/routes/providers/legacyMeshDelivery.js +229 -0
  426. package/dist/internal/routes/providers/legacyMeshDelivery.js.map +1 -0
  427. package/dist/internal/routes/providers/legacyMeshOutbound.d.ts +19 -0
  428. package/dist/internal/routes/providers/legacyMeshOutbound.d.ts.map +1 -0
  429. package/dist/internal/routes/providers/legacyMeshOutbound.js +457 -0
  430. package/dist/internal/routes/providers/legacyMeshOutbound.js.map +1 -0
  431. package/dist/internal/routes/providers/legacyMeshOutboundDelivery.d.ts +123 -0
  432. package/dist/internal/routes/providers/legacyMeshOutboundDelivery.d.ts.map +1 -0
  433. package/dist/internal/routes/providers/legacyMeshOutboundDelivery.js +333 -0
  434. package/dist/internal/routes/providers/legacyMeshOutboundDelivery.js.map +1 -0
  435. package/dist/internal/routes/providers/propAmm.d.ts +70 -0
  436. package/dist/internal/routes/providers/propAmm.d.ts.map +1 -0
  437. package/dist/internal/routes/providers/propAmm.js +524 -0
  438. package/dist/internal/routes/providers/propAmm.js.map +1 -0
  439. package/dist/internal/routes/providers/relay.d.ts +3 -0
  440. package/dist/internal/routes/providers/relay.d.ts.map +1 -1
  441. package/dist/internal/routes/providers/relay.js +352 -41
  442. package/dist/internal/routes/providers/relay.js.map +1 -1
  443. package/dist/internal/routes/providers/rhino.d.ts +3 -0
  444. package/dist/internal/routes/providers/rhino.d.ts.map +1 -1
  445. package/dist/internal/routes/providers/rhino.js +11 -0
  446. package/dist/internal/routes/providers/rhino.js.map +1 -1
  447. package/dist/internal/routes/providers/squid.d.ts +3 -0
  448. package/dist/internal/routes/providers/squid.d.ts.map +1 -1
  449. package/dist/internal/routes/providers/squid.js +19 -0
  450. package/dist/internal/routes/providers/squid.js.map +1 -1
  451. package/dist/internal/routes/providers/stargate.d.ts.map +1 -1
  452. package/dist/internal/routes/providers/stargate.js +22 -9
  453. package/dist/internal/routes/providers/stargate.js.map +1 -1
  454. package/dist/internal/routes/providers/symbiosis.d.ts.map +1 -1
  455. package/dist/internal/routes/providers/symbiosis.js +13 -17
  456. package/dist/internal/routes/providers/symbiosis.js.map +1 -1
  457. package/dist/providers/index.d.ts +14 -0
  458. package/dist/providers/index.d.ts.map +1 -1
  459. package/dist/providers/index.js +6 -0
  460. package/dist/providers/index.js.map +1 -1
  461. package/package.json +16 -6
  462. package/src/ApiKey.ts +7 -3
  463. package/src/ApiKeys.test.ts +652 -8
  464. package/src/ApiKeys.ts +191 -11
  465. package/src/App.test.ts +405 -18
  466. package/src/App.ts +51 -15
  467. package/src/Client.test-d.ts +157 -10
  468. package/src/Client.test.ts +4 -4
  469. package/src/Scope.ts +1 -2
  470. package/src/admin/App.ts +11 -5
  471. package/src/admin/apps/api-keys.test.ts +98 -2
  472. package/src/admin/apps/api-keys.ts +21 -12
  473. package/src/admin/apps/earn-vaults.test.ts +76 -7
  474. package/src/admin/apps/earn-vaults.ts +47 -8
  475. package/src/admin/apps/organizations.test.ts +147 -31
  476. package/src/admin/apps/organizations.ts +5 -4
  477. package/src/admin/apps/route-policies.test.ts +220 -0
  478. package/src/admin/apps/route-policies.ts +322 -0
  479. package/src/admin/apps/routes-support.test.ts +107 -2
  480. package/src/admin/apps/routes-support.ts +43 -3
  481. package/src/admin/apps/routes.test.ts +150 -0
  482. package/src/admin/apps/routes.ts +97 -1
  483. package/src/admin/apps/scopes.test.ts +1 -1
  484. package/src/admin/index.ts +0 -1
  485. package/src/admin/ui/plugin.ts +2 -1
  486. package/src/admin/ui/src/components/Dialog.tsx +1 -1
  487. package/src/admin/ui/src/components/EarnVaultForm.tsx +45 -0
  488. package/src/admin/ui/src/components/RoutePicker.tsx +79 -0
  489. package/src/admin/ui/src/lib/earn-vaults.ts +1 -1
  490. package/src/admin/ui/src/lib/route-policies.test.ts +452 -0
  491. package/src/admin/ui/src/lib/route-policies.ts +232 -0
  492. package/src/admin/ui/src/lib/routes.ts +34 -0
  493. package/src/admin/ui/src/routeTree.gen.ts +21 -0
  494. package/src/admin/ui/src/routes/api-keys.tsx +21 -2
  495. package/src/admin/ui/src/routes/early-access.tsx +1 -0
  496. package/src/admin/ui/src/routes/earn.vaults.tsx +1 -0
  497. package/src/admin/ui/src/routes/earn.vaults_.$vaultId.edit.tsx +22 -0
  498. package/src/admin/ui/src/routes/earn.vaults_.new.tsx +10 -0
  499. package/src/admin/ui/src/routes/organizations.tsx +1 -0
  500. package/src/admin/ui/src/routes/organizations_.$orgId.tsx +18 -3
  501. package/src/admin/ui/src/routes/route-policies.tsx +678 -0
  502. package/src/admin/ui/src/routes/routes.tsx +85 -2
  503. package/src/admin/ui/src/routes/routes_.support.tsx +6 -22
  504. package/src/admin/ui/src/routes/subsidies.tsx +1 -0
  505. package/src/admin/ui/src/routes/verified-tokens.tsx +1 -0
  506. package/src/admin/ui.generated.ts +258 -202
  507. package/src/analytics/Analytics.test.ts +4 -50
  508. package/src/analytics/Analytics.ts +65 -1
  509. package/src/analytics/tables/requestEvents.test.ts +402 -1
  510. package/src/analytics/tables/requestEvents.ts +62 -93
  511. package/src/apps/data/routes/activities.test.ts +315 -14
  512. package/src/apps/data/routes/activities.ts +60 -0
  513. package/src/apps/data/routes/balances.ts +5 -7
  514. package/src/apps/data/routes/earn.bench.ts +18 -0
  515. package/src/apps/data/routes/earn.local.test.ts +507 -0
  516. package/src/apps/data/routes/earn.test.ts +405 -127
  517. package/src/apps/data/routes/earn.ts +660 -270
  518. package/src/apps/data/routes/exchanges.bench.ts +3 -1
  519. package/src/apps/data/routes/exchanges.test.ts +166 -2
  520. package/src/apps/data/routes/exchanges.ts +308 -101
  521. package/src/apps/data/routes/fee-amm.test.ts +134 -2
  522. package/src/apps/data/routes/fee-amm.ts +122 -60
  523. package/src/apps/data/routes/receipts.test.ts +21 -18
  524. package/src/apps/data/routes/rpc.test.ts +2 -2
  525. package/src/apps/data/routes/tokens.provenance.test.ts +157 -0
  526. package/src/apps/data/routes/tokens.test.ts +4 -4
  527. package/src/apps/data/routes/tokens.ts +11 -6
  528. package/src/apps/data/routes/transactions.test.ts +29 -0
  529. package/src/apps/data/routes/transactions.ts +33 -22
  530. package/src/apps/data/routes/webhooks.test.ts +12 -3
  531. package/src/apps/data/routes/webhooks.ts +2 -1
  532. package/src/apps/management/App.ts +4 -0
  533. package/src/apps/management/Billing.test.ts +253 -27
  534. package/src/apps/management/Billing.ts +83 -29
  535. package/src/apps/management/routes/api-keys.test.ts +1 -1
  536. package/src/apps/management/routes/api-keys.ts +85 -11
  537. package/src/apps/management/routes/billing.test.ts +68 -4
  538. package/src/apps/management/routes/cli.test.ts +370 -0
  539. package/src/apps/management/routes/cli.ts +533 -0
  540. package/src/apps/management/routes/me.test.ts +14 -4
  541. package/src/apps/management/routes/orgs.test.ts +108 -4
  542. package/src/apps/management/routes/orgs.ts +7 -2
  543. package/src/apps/management/routes/usage.test.ts +2 -2
  544. package/src/apps/mpp/internal/Policy.test.ts +51 -4
  545. package/src/apps/mpp/internal/Policy.ts +6 -2
  546. package/src/apps/mpp/internal/Sponsorship.test.ts +29 -0
  547. package/src/apps/mpp/internal/Sponsorship.ts +6 -4
  548. package/src/apps/relay/App.test.ts +85 -1
  549. package/src/apps/relay/App.ts +28 -4
  550. package/src/apps/relay/Sponsorships.test.ts +97 -1
  551. package/src/apps/relay/Sponsorships.ts +77 -66
  552. package/src/apps/routes/Access.test.ts +319 -0
  553. package/src/apps/routes/Access.ts +147 -0
  554. package/src/apps/routes/App.ts +10 -0
  555. package/src/apps/routes/routes/chains.test.ts +3 -2
  556. package/src/apps/routes/routes/deposit-addresses.test.ts +978 -34
  557. package/src/apps/routes/routes/deposit-addresses.ts +243 -32
  558. package/src/apps/routes/routes/propAmm.local.test.ts +951 -0
  559. package/src/apps/routes/routes/quotes.test.ts +81 -8
  560. package/src/apps/routes/routes/quotes.ts +109 -27
  561. package/src/apps/routes/routes/transfers.test.ts +252 -15
  562. package/src/apps/routes/routes/transfers.ts +212 -33
  563. package/src/cli/ApiKeys.test.ts +265 -0
  564. package/src/cli/ApiKeys.ts +189 -0
  565. package/src/cli/Cli.test.ts +188 -0
  566. package/src/cli/Cli.ts +280 -12
  567. package/src/cli/Credentials.test.ts +122 -0
  568. package/src/cli/Credentials.ts +144 -0
  569. package/src/cli/Spec.test.ts +133 -0
  570. package/src/cli/Spec.ts +132 -0
  571. package/src/cli/bin.test.ts +49 -0
  572. package/src/cli/bin.ts +5 -1
  573. package/src/cli/commands/auth.test.ts +138 -0
  574. package/src/cli/commands/auth.ts +254 -0
  575. package/src/cli/commands/keys.test.ts +68 -0
  576. package/src/cli/commands/keys.ts +125 -0
  577. package/src/cloudflare.ts +184 -36
  578. package/src/db/Db.test.ts +877 -0
  579. package/src/db/Db.ts +498 -1
  580. package/src/db/Schema.ts +75 -4
  581. package/src/db/tables/apiKeyAdmissions.test.ts +57 -0
  582. package/src/db/tables/apiKeyAdmissions.ts +101 -11
  583. package/src/db/tables/apiKeyOwnerTombstones.ts +2 -2
  584. package/src/db/tables/authAccounts.test.ts +30 -0
  585. package/src/db/tables/authAccounts.ts +1 -0
  586. package/src/db/tables/earnVaults.test.ts +34 -0
  587. package/src/db/tables/earnVaults.ts +17 -2
  588. package/src/db/tables/organizations.test.ts +148 -84
  589. package/src/db/tables/organizations.ts +11 -43
  590. package/src/db/tables/requestUsage.ts +13 -2
  591. package/src/db/tables/rewardCampaigns.test.ts +163 -0
  592. package/src/db/tables/rewardEligibilityAssociations.test.ts +14 -0
  593. package/src/db/tables/rewardEligibilityAssociations.ts +24 -0
  594. package/src/db/tables/rewardRuns.ts +4 -0
  595. package/src/db/tables/rewardTransactionAttempts.ts +2 -0
  596. package/src/db/tables/routesDepositAddresses.test.ts +263 -0
  597. package/src/db/tables/routesDepositAddresses.ts +118 -34
  598. package/src/db/tables/routesDeposits.test.ts +66 -5
  599. package/src/db/tables/routesDeposits.ts +47 -26
  600. package/src/db/tables/routesIdempotency.test.ts +80 -0
  601. package/src/db/tables/routesIdempotency.ts +2 -0
  602. package/src/db/tables/routesPolicies.test.ts +143 -0
  603. package/src/db/tables/routesPolicies.ts +251 -0
  604. package/src/db/tables/routesTransferSubsidies.ts +64 -0
  605. package/src/db/tables/routesTransferSubsidyNonces.ts +16 -4
  606. package/src/db/tables/routesTransfers.test.ts +183 -2
  607. package/src/db/tables/routesTransfers.ts +65 -6
  608. package/src/db/tables/sponsoredTransactions.test.ts +351 -76
  609. package/src/db/tables/sponsoredTransactions.ts +182 -38
  610. package/src/db/tables/users.test.ts +51 -0
  611. package/src/db/tables/users.ts +12 -0
  612. package/src/handlers/internal/multisig.store.test.ts +120 -0
  613. package/src/handlers/internal/multisig.test.ts +389 -0
  614. package/src/handlers/internal/multisig.ts +13 -10
  615. package/src/handlers/relay.test.ts +259 -83
  616. package/src/handlers/relay.ts +36 -17
  617. package/src/internal/Auth.test.ts +291 -8
  618. package/src/internal/Auth.ts +227 -96
  619. package/src/internal/BetterAuth.test.ts +58 -22
  620. package/src/internal/BetterAuth.ts +23 -17
  621. package/src/internal/Cache.ts +3 -1
  622. package/src/internal/CliAuth.test.ts +279 -0
  623. package/src/internal/CliAuth.ts +319 -0
  624. package/src/internal/EarnSharePrices.test.ts +25 -0
  625. package/src/internal/EarnSharePrices.ts +9 -2
  626. package/src/internal/EarnVaults.test.ts +67 -0
  627. package/src/internal/EarnVaults.ts +299 -4
  628. package/src/internal/EarnWithdrawals.test.ts +315 -0
  629. package/src/internal/EarnWithdrawals.ts +266 -0
  630. package/src/internal/ExecutionContext.ts +31 -0
  631. package/src/internal/Log.test.ts +210 -0
  632. package/src/internal/Log.ts +180 -142
  633. package/src/internal/MetricSink.test.ts +190 -15
  634. package/src/internal/MetricSink.ts +27 -1
  635. package/src/internal/RateLimit.test.ts +144 -8
  636. package/src/internal/RateLimit.ts +254 -26
  637. package/src/internal/Store.ts +4 -5
  638. package/src/internal/Timing.test.ts +32 -0
  639. package/src/internal/Timing.ts +20 -1
  640. package/src/internal/Tron.test-d.ts +22 -0
  641. package/src/internal/Tron.test.ts +94 -0
  642. package/src/internal/Tron.ts +289 -0
  643. package/src/internal/Viem.rpc.test.ts +76 -0
  644. package/src/internal/Viem.ts +29 -6
  645. package/src/internal/rewards/Read.test.ts +109 -0
  646. package/src/internal/rewards/Read.ts +13 -4
  647. package/src/internal/routes/Action.test.ts +70 -0
  648. package/src/internal/routes/Action.ts +76 -1
  649. package/src/internal/routes/Chain.test.ts +18 -0
  650. package/src/internal/routes/Chain.ts +5 -0
  651. package/src/internal/routes/DepositAddress.ts +5 -0
  652. package/src/internal/routes/Evidence.test.ts +64 -0
  653. package/src/internal/routes/Evidence.ts +11 -3
  654. package/src/internal/routes/EvmTransferSettlement.ts +213 -0
  655. package/src/internal/routes/Policy.test.ts +316 -0
  656. package/src/internal/routes/Policy.ts +399 -0
  657. package/src/internal/routes/Provider.test.ts +103 -2
  658. package/src/internal/routes/Provider.ts +149 -27
  659. package/src/internal/routes/Quota.test.ts +149 -0
  660. package/src/internal/routes/Quota.ts +226 -0
  661. package/src/internal/routes/Reconciliation.local.test.ts +285 -0
  662. package/src/internal/routes/Reconciliation.test.ts +371 -13
  663. package/src/internal/routes/Reconciliation.ts +193 -42
  664. package/src/internal/routes/SolanaTransferSettlement.ts +232 -0
  665. package/src/internal/routes/SolanaTransferSubsidy.test.ts +471 -0
  666. package/src/internal/routes/SolanaTransferSubsidy.ts +760 -0
  667. package/src/internal/routes/SourceObservation.test.ts +221 -0
  668. package/src/internal/routes/Subsidy.local.test.ts +46 -0
  669. package/src/internal/routes/Subsidy.ts +4 -2
  670. package/src/internal/routes/Transfer.solana.test.ts +389 -0
  671. package/src/internal/routes/Transfer.test.ts +130 -1
  672. package/src/internal/routes/Transfer.tron.test.ts +172 -0
  673. package/src/internal/routes/Transfer.ts +866 -8
  674. package/src/internal/routes/TransferReconciliation.test.ts +26 -4
  675. package/src/internal/routes/TransferReconciliation.ts +91 -166
  676. package/src/internal/routes/TransferSettlement.ts +48 -0
  677. package/src/internal/routes/TransferSubsidy.local.test.ts +143 -0
  678. package/src/internal/routes/TransferSubsidy.test.ts +34 -4
  679. package/src/internal/routes/TransferSubsidy.ts +87 -12
  680. package/src/internal/routes/TronTransferSettlement.ts +212 -0
  681. package/src/internal/routes/TronTransferSubsidy.test.ts +109 -0
  682. package/src/internal/routes/TronTransferSubsidy.ts +619 -0
  683. package/src/internal/routes/index.test.ts +3 -0
  684. package/src/internal/routes/index.ts +3 -0
  685. package/src/internal/routes/providers/across.ts +13 -0
  686. package/src/internal/routes/providers/index.test.ts +141 -0
  687. package/src/internal/routes/providers/legacyMesh.test.ts +484 -0
  688. package/src/internal/routes/providers/legacyMesh.ts +633 -0
  689. package/src/internal/routes/providers/legacyMeshDelivery.test.ts +306 -0
  690. package/src/internal/routes/providers/legacyMeshDelivery.ts +320 -0
  691. package/src/internal/routes/providers/legacyMeshOutbound.test.ts +401 -0
  692. package/src/internal/routes/providers/legacyMeshOutbound.ts +566 -0
  693. package/src/internal/routes/providers/legacyMeshOutboundDelivery.ts +473 -0
  694. package/src/internal/routes/providers/propAmm.ts +640 -0
  695. package/src/internal/routes/providers/relay.test.ts +1263 -41
  696. package/src/internal/routes/providers/relay.ts +423 -38
  697. package/src/internal/routes/providers/rhino.ts +14 -1
  698. package/src/internal/routes/providers/squid.ts +21 -0
  699. package/src/internal/routes/providers/stargate.test.ts +105 -1
  700. package/src/internal/routes/providers/stargate.ts +22 -9
  701. package/src/internal/routes/providers/symbiosis.ts +13 -47
  702. package/src/providers/index.test.ts +2 -0
  703. package/src/providers/index.ts +18 -0
  704. package/dist/admin/Access.d.ts +0 -39
  705. package/dist/admin/Access.d.ts.map +0 -1
  706. package/dist/admin/Access.js +0 -73
  707. package/dist/admin/Access.js.map +0 -1
  708. package/src/admin/Access.test.ts +0 -130
  709. package/src/admin/Access.ts +0 -85
@@ -1,11 +1,11 @@
1
1
  import { Hono } from 'hono'
2
2
  import * as z from 'zod/mini'
3
- import { base, mainnet } from 'viem/chains'
4
3
  import { tempo } from 'viem/tempo/chains'
5
4
 
6
5
  import * as Db from '../../db/Db.js'
7
6
  import * as OpenApi from '../../internal/OpenApi.js'
8
7
  import * as RoutesCatalog from '../../internal/routes/Catalog.js'
8
+ import * as RoutesTransferSubsidy from '../../internal/routes/TransferSubsidy.js'
9
9
  import type * as App from '../App.js'
10
10
 
11
11
  /** Zod schemas owned by the admin route support matrix. */
@@ -159,6 +159,7 @@ function summarize(routes: readonly RoutesCatalog.ProviderRoute[]) {
159
159
  const rows = new Map<string, Row>()
160
160
  for (const providerRoute of routes) {
161
161
  const { capabilities, providerId, route } = providerRoute
162
+ if (!isPartnerRoute(route)) continue
162
163
  const id = `${route.source.chain.id}/${route.source.slug}-${route.destination.chain.id}/${route.destination.slug}`
163
164
  const row = rows.get(id) ?? {
164
165
  depositAddressProviders: [],
@@ -183,8 +184,11 @@ function summarize(routes: readonly RoutesCatalog.ProviderRoute[]) {
183
184
  row.walletTransferProviders.push({ modes: [...capabilities.transfer.modes], providerId })
184
185
  row.subsidies.walletTransfer ||=
185
186
  capabilities.transfer.modes.includes('exactSource') &&
186
- route.source.chain.id === `eip155:${tempo.id}` &&
187
- [`eip155:${base.id}`, `eip155:${mainnet.id}`].includes(route.destination.chain.id) &&
187
+ RoutesTransferSubsidy.supportsRoute({
188
+ destinationChainId: route.destination.chain.id,
189
+ sourceChainId: route.source.chain.id,
190
+ tempoChainId: tempo.id,
191
+ }) &&
188
192
  usdPair
189
193
  }
190
194
  rows.set(id, row)
@@ -192,6 +196,42 @@ function summarize(routes: readonly RoutesCatalog.ProviderRoute[]) {
192
196
  return [...rows.values()]
193
197
  }
194
198
 
199
+ function isPartnerRoute(route: RoutesCatalog.ProviderRoute['route']) {
200
+ const { destination, source } = route
201
+ if (destination.chain.slug === 'tempo') {
202
+ if (source.chain.slug === 'tempo') return false
203
+ if (source.slug === 'usdc') {
204
+ if (['pathusd', 'whishusd'].includes(destination.slug)) return true
205
+ return (
206
+ ['base', 'ethereum', 'solana'].includes(source.chain.slug) &&
207
+ ['ousd', 'usdce', 'usdt0'].includes(destination.slug)
208
+ )
209
+ }
210
+ return (
211
+ source.chain.slug === 'tron' &&
212
+ source.slug === 'usdt' &&
213
+ ['ousd', 'pathusd', 'usdce', 'usdt0', 'whishusd'].includes(destination.slug)
214
+ )
215
+ }
216
+
217
+ if (source.chain.slug !== 'tempo') return false
218
+ if (destination.chain.slug === 'tempo') return false
219
+ if (destination.slug === 'usdc') {
220
+ if (['pathusd', 'whishusd'].includes(source.slug)) return true
221
+ if (source.slug === 'usdt0')
222
+ return ['base', 'ethereum', 'solana'].includes(destination.chain.slug)
223
+ return (
224
+ ['ousd', 'usdce'].includes(source.slug) &&
225
+ ['base', 'ethereum', 'solana'].includes(destination.chain.slug)
226
+ )
227
+ }
228
+ return (
229
+ destination.chain.slug === 'tron' &&
230
+ destination.slug === 'usdt' &&
231
+ ['ousd', 'pathusd', 'usdce', 'usdt0', 'whishusd'].includes(source.slug)
232
+ )
233
+ }
234
+
195
235
  function pickChain(chain: RoutesCatalog.ProviderRoute['route']['source']['chain']) {
196
236
  return { id: chain.id, name: chain.name, slug: chain.slug }
197
237
  }
@@ -137,6 +137,127 @@ describe('GET /routes/transfers/:id', () => {
137
137
  ])
138
138
  expect(body).not.toHaveProperty('providerState')
139
139
  })
140
+
141
+ test.each([
142
+ { provider: 'relay', requestId: `0x${'ab'.repeat(32)}`, expected: [`0x${'ab'.repeat(32)}`] },
143
+ { provider: 'stargate', requestId: `0x${'ab'.repeat(32)}`, expected: [] },
144
+ { provider: 'relay', requestId: undefined, expected: [] },
145
+ { provider: 'relay', requestId: 42, expected: [] },
146
+ ])(
147
+ 'exposes only Relay request identifiers: $provider/$requestId',
148
+ async ({ provider, requestId, expected }) => {
149
+ const { client, db } = TestAdmin.setup()
150
+ const { organization, project } = await seedAttribution(db)
151
+ const record = await Transfer.create(db, {
152
+ apiKeyId: 'key_admin_routes',
153
+ environment: 'production',
154
+ orgId: organization.id,
155
+ projectId: project.id,
156
+ providerState: { checkEndpoint: '/private/check', requestId, secret: 'hidden' },
157
+ snapshot: TestRoutes.transferSnapshot({ provider: { id: provider, name: provider } }),
158
+ })
159
+
160
+ const response = await client.routes.transfers[':id'].$get({ param: { id: record.id } })
161
+ const body = await response.json()
162
+ expect(response.status).toBe(200)
163
+ expect(body).toHaveProperty('providerRequestIds', expected)
164
+ expect(body).not.toHaveProperty('providerState')
165
+ expect(JSON.stringify(body)).not.toContain('/private/check')
166
+ expect(JSON.stringify(body)).not.toContain('hidden')
167
+ },
168
+ )
169
+ })
170
+
171
+ describe('POST /routes/transfers/:id/retry', () => {
172
+ test('returns an action-required transfer to processing and records the event', async () => {
173
+ const { client, db } = TestAdmin.setup()
174
+ const { organization, project } = await seedAttribution(db)
175
+ const record = await seedActionRequiredTransfer(db, organization.id, project.id)
176
+
177
+ const response = await client.routes.transfers[':id'].retry.$post({
178
+ json: { version: record.version },
179
+ param: { id: record.id },
180
+ })
181
+ const body = await TestApp.json(response, AdminRoutes.schema.retryRoutesTransfer.Response)
182
+
183
+ expect(response.status).toBe(200)
184
+ expect(body).toMatchObject({ id: record.id, status: 'processing', version: record.version + 1 })
185
+ expect(body).not.toHaveProperty('statusReason')
186
+ const detail = await client.routes.transfers[':id'].$get({ param: { id: record.id } })
187
+ const { events } = await TestApp.json(detail, AdminRoutes.schema.getRoutesTransfer.Response)
188
+ expect(events.map(({ status }) => status)).toEqual([
189
+ 'awaiting-source',
190
+ 'processing',
191
+ 'action-required',
192
+ 'processing',
193
+ ])
194
+ })
195
+
196
+ test('rejects a stale version', async () => {
197
+ const { client, db } = TestAdmin.setup()
198
+ const { organization, project } = await seedAttribution(db)
199
+ const record = await seedActionRequiredTransfer(db, organization.id, project.id)
200
+
201
+ const response = await client.routes.transfers[':id'].retry.$post({
202
+ json: { version: record.version - 1 },
203
+ param: { id: record.id },
204
+ })
205
+
206
+ expect(response.status).toBe(409)
207
+ expect(await response.json()).toMatchObject({ error: { code: 'version_conflict' } })
208
+ })
209
+
210
+ test('rejects a transfer that is not action-required', async () => {
211
+ const { client, db } = TestAdmin.setup()
212
+ const { organization, project } = await seedAttribution(db)
213
+ const { record } = await seedTransfer(db, organization.id, project.id)
214
+
215
+ const response = await client.routes.transfers[':id'].retry.$post({
216
+ json: { version: record.version + 1 },
217
+ param: { id: record.id },
218
+ })
219
+
220
+ expect(response.status).toBe(409)
221
+ expect(await response.json()).toMatchObject({
222
+ error: { code: 'routes_transfer_not_retryable' },
223
+ })
224
+ })
225
+
226
+ test.each([
227
+ { providerState: { transferSubsidy: { hash: `0x${'cd'.repeat(32)}` } } },
228
+ { providerState: { solanaTransferSubsidyPrepared: '{}' } },
229
+ { providerState: { tronTransferSubsidyPrepared: '{}' } },
230
+ ])(
231
+ 'rejects a transfer with a prepared or signed subsidy: $providerState',
232
+ async ({ providerState }) => {
233
+ const { client, db } = TestAdmin.setup()
234
+ const { organization, project } = await seedAttribution(db)
235
+ const record = await seedActionRequiredTransfer(db, organization.id, project.id, {
236
+ providerState,
237
+ })
238
+
239
+ const response = await client.routes.transfers[':id'].retry.$post({
240
+ json: { version: record.version },
241
+ param: { id: record.id },
242
+ })
243
+
244
+ expect(response.status).toBe(409)
245
+ expect(await response.json()).toMatchObject({
246
+ error: { code: 'routes_transfer_subsidy_pending' },
247
+ })
248
+ },
249
+ )
250
+
251
+ test('returns 404 for an unknown transfer', async () => {
252
+ const { client } = TestAdmin.setup()
253
+
254
+ const response = await client.routes.transfers[':id'].retry.$post({
255
+ json: { version: 1 },
256
+ param: { id: 'rtr_001785792000000_2ZPE2gvateYEQ0dQslgvkhjx' },
257
+ })
258
+
259
+ expect(response.status).toBe(404)
260
+ })
140
261
  })
141
262
 
142
263
  describe('GET /routes/deposit-addresses', () => {
@@ -371,6 +492,35 @@ async function seedTransfer(db: Db.Db, orgId: string, projectId: string) {
371
492
  return { record, transactionRef }
372
493
  }
373
494
 
495
+ async function seedActionRequiredTransfer(
496
+ db: Db.Db,
497
+ orgId: string,
498
+ projectId: string,
499
+ options: seedActionRequiredTransfer.Options = {},
500
+ ) {
501
+ const { record } = await seedTransfer(db, orgId, projectId)
502
+ const result = await Transfer.transition(db, {
503
+ expectedVersion: record.version + 1,
504
+ id: record.id,
505
+ ...(options.providerState ? { providerState: options.providerState } : {}),
506
+ status: 'action-required',
507
+ statusReason: {
508
+ code: 'subsidy_failed',
509
+ message: 'Destination subsidy settlement is unavailable.',
510
+ },
511
+ })
512
+ if (result.type !== 'applied') throw new Error('Failed to seed action-required transfer.')
513
+ return result.record
514
+ }
515
+
516
+ declare namespace seedActionRequiredTransfer {
517
+ /** Private state attached while entering `action-required`. */
518
+ type Options = {
519
+ /** Replacement provider state, such as a persisted subsidy transaction. */
520
+ providerState?: Transfer.ProviderState | undefined
521
+ }
522
+ }
523
+
374
524
  async function seedDeposit(
375
525
  db: Db.Db,
376
526
  orgId: string,
@@ -13,6 +13,7 @@ import * as Cursor from '../../internal/Cursor.js'
13
13
  import * as Deposit from '../../internal/routes/Deposit.js'
14
14
  import * as DepositAddress from '../../internal/routes/DepositAddress.js'
15
15
  import * as Provider from '../../internal/routes/Provider.js'
16
+ import * as Observability from '../../internal/routes/Observability.js'
16
17
  import * as Transfer from '../../internal/routes/Transfer.js'
17
18
  import * as OpenApi from '../../internal/OpenApi.js'
18
19
  import * as Response from '../../internal/Response.js'
@@ -323,6 +324,7 @@ export namespace schema {
323
324
  }),
324
325
  )
325
326
  .check(z.describe('Material lifecycle events, oldest first.')),
327
+ providerRequestIds: correlationIds,
326
328
  transactions: z
327
329
  .array(
328
330
  z.object({
@@ -344,6 +346,24 @@ export namespace schema {
344
346
  )
345
347
  }
346
348
 
349
+ /** Schemas for retrying one stuck route transfer. */
350
+ export namespace retryRoutesTransfer {
351
+ /** Transfer path parameters. */
352
+ export const Params = getRoutesTransfer.Params
353
+
354
+ /** Expected transfer version. */
355
+ export const Body = z
356
+ .strictObject({
357
+ version: z
358
+ .number()
359
+ .check(z.int(), z.minimum(1), z.describe('Transfer version the operator reviewed.'), z.meta({ examples: [22] })), // prettier-ignore
360
+ })
361
+ .check(z.describe('Route transfer retry request.'))
362
+
363
+ /** Retried route transfer, back in `processing`. */
364
+ export const Response = RoutesTransfer
365
+ }
366
+
347
367
  /** Schemas for listing deposit addresses. */
348
368
  export namespace listRoutesDepositAddresses {
349
369
  /** Deposit-address filters and pagination. */
@@ -438,7 +458,7 @@ export namespace schema {
438
458
  }
439
459
  }
440
460
 
441
- /** Read-only routes operations for authenticated administrators. */
461
+ /** Routes operations for authenticated administrators. */
442
462
  export function routes() {
443
463
  return new Hono<App.Environment>()
444
464
  .get(
@@ -601,6 +621,12 @@ export function routes() {
601
621
  ...(event.snapshot.statusReason ? { statusReason: event.snapshot.statusReason } : {}),
602
622
  version: event.version,
603
623
  })),
624
+ providerRequestIds:
625
+ record.snapshot.provider.id === 'relay' &&
626
+ typeof record.providerState?.['requestId'] === 'string' &&
627
+ record.providerState['requestId'].length > 0
628
+ ? [record.providerState['requestId']]
629
+ : [],
604
630
  transactions: transactions.map(({ chainId, createdAt, role, transactionRef }) => ({
605
631
  chainId,
606
632
  createdAt,
@@ -612,6 +638,76 @@ export function routes() {
612
638
  )
613
639
  },
614
640
  )
641
+ .post(
642
+ '/transfers/:id/retry',
643
+ OpenApi.validate('param', schema.retryRoutesTransfer.Params, {
644
+ code: 'param_invalid',
645
+ message: 'Invalid path parameters',
646
+ }),
647
+ OpenApi.validate('json', schema.retryRoutesTransfer.Body, {
648
+ code: 'body_invalid',
649
+ message: 'Invalid request body',
650
+ }),
651
+ OpenApi.describeRoute({
652
+ operationId: 'retryAdminRoutesTransfer',
653
+ responses: OpenApi.responses({
654
+ errors: {
655
+ 404: 'Route transfer not found.',
656
+ 409: 'Route transfer changed or cannot be retried.',
657
+ },
658
+ success: {
659
+ description: 'The retried route transfer.',
660
+ schema: schema.retryRoutesTransfer.Response,
661
+ },
662
+ }),
663
+ summary: 'Retry route transfer',
664
+ tags: ['Routes'],
665
+ }),
666
+ async (c) => {
667
+ const db = Db.get(c.get('db'))
668
+ // The worker's reconciliation sweep dispatches every `processing` transfer on its next tick.
669
+ const result = await Transfer.retry(db, {
670
+ expectedVersion: c.req.valid('json').version,
671
+ id: c.req.valid('param').id,
672
+ })
673
+ if (result.type === 'not_found')
674
+ return Response.error(c, {
675
+ code: 'routes_transfer_not_found',
676
+ message: 'Route transfer not found.',
677
+ status: 404,
678
+ })
679
+ if (result.type === 'stale')
680
+ return Response.error(c, {
681
+ code: 'version_conflict',
682
+ message: 'Route transfer version is stale.',
683
+ status: 409,
684
+ })
685
+ if (result.type === 'invalid')
686
+ return Response.error(c, {
687
+ code: 'routes_transfer_not_retryable',
688
+ message: 'Only action-required transfers can be retried.',
689
+ status: 409,
690
+ })
691
+ if (result.type === 'subsidy_pending')
692
+ return Response.error(c, {
693
+ code: 'routes_transfer_subsidy_pending',
694
+ message: 'Route transfer has a prepared or signed subsidy; verify it on chain first.',
695
+ status: 409,
696
+ })
697
+ Observability.recordTransfer(c.get('metrics'), {
698
+ previous: result.previous,
699
+ record: result.record,
700
+ })
701
+ const attribution = await loadAttribution(db, [result.record])
702
+ return c.json(
703
+ Response.validated(
704
+ schema.retryRoutesTransfer.Response,
705
+ serializeTransfer(result.record, attribution),
706
+ ),
707
+ 200,
708
+ )
709
+ },
710
+ )
615
711
  .get(
616
712
  '/deposit-addresses',
617
713
  OpenApi.validate('query', schema.listRoutesDepositAddresses.Query, {
@@ -55,7 +55,7 @@ describe('GET /scopes', () => {
55
55
  "selfServe": false,
56
56
  },
57
57
  {
58
- "description": "Legacy reward eligibility write scope retained for existing keys; registration requires wildcard access.",
58
+ "description": "Register wallet and Earn vault reward eligibility associations.",
59
59
  "scope": "rewards:write",
60
60
  "selfServe": false,
61
61
  },
@@ -1,2 +1 @@
1
- export * as Access from './Access.js'
2
1
  export * as App from './App.js'
@@ -23,7 +23,8 @@ const outFile = path.join(here, '..', 'ui.generated.ts')
23
23
  // Total gzipped budget for the whole UI; the React + TanStack + Regen baseline
24
24
  // is heavier than a hand-rolled SPA, so fail loudly before it bloats the
25
25
  // package. Raise deliberately (and revisit code-splitting) if it trips.
26
- const maxGzipBytes = 486_000
26
+ // Includes the independently added route-policy and route-support screens.
27
+ const maxGzipBytes = 500_000
27
28
 
28
29
  const contentTypes: Record<string, string> = {
29
30
  '.css': 'text/css; charset=utf-8',
@@ -9,7 +9,7 @@ function Popup(props: { children: ReactNode; className?: string | undefined }) {
9
9
  <Base.Backdrop className="fixed inset-0 z-40 bg-black/60 transition-opacity duration-150 data-[ending-style]:opacity-0 data-[starting-style]:opacity-0" />
10
10
  <Base.Popup
11
11
  className={cx(
12
- 'fixed left-1/2 top-1/2 z-50 w-[calc(100vw-2rem)] max-w-md -translate-x-1/2 -translate-y-1/2 border border-border bg-surface p-6 shadow-lg outline-none transition-opacity duration-150 data-[ending-style]:opacity-0 data-[starting-style]:opacity-0',
12
+ 'fixed left-1/2 top-1/2 z-50 w-[calc(100vw-2rem)] max-w-3xl -translate-x-1/2 -translate-y-1/2 border border-border bg-surface p-6 shadow-lg outline-none transition-opacity duration-150 data-[ending-style]:opacity-0 data-[starting-style]:opacity-0',
13
13
  props.className,
14
14
  )}
15
15
  >
@@ -30,6 +30,51 @@ export function EarnVaultForm(options: EarnVaultForm.Props) {
30
30
  }
31
31
 
32
32
  export namespace EarnVaultForm {
33
+ /** Per-vault incoming reward counterparties. */
34
+ export function Earnings(options: Earnings.Props) {
35
+ return (
36
+ <fieldset className="group flex min-w-0 flex-col gap-3 border-t border-border pt-5 max-sm:[&_textarea]:text-copy-16">
37
+ <legend className="text-label-14 text-foreground">Earnings accounting</legend>
38
+ <label className="flex items-center gap-2 text-label-13 text-foreground">
39
+ <input
40
+ className="size-5 shrink-0 sm:size-4"
41
+ defaultChecked={options.value === null}
42
+ name="inheritEarnings"
43
+ type="checkbox"
44
+ />
45
+ Use recorded campaign distributors only
46
+ </label>
47
+ <p className="text-copy-16 text-foreground-secondary sm:text-copy-14">
48
+ Recorded campaign distributors are always included. Outgoing shares count as withdrawals
49
+ for every recipient or spender, with no configuration required.
50
+ </p>
51
+ <div className="flex flex-col gap-3 group-has-checked:hidden">
52
+ <p className="text-copy-16 text-foreground-secondary sm:text-copy-14">
53
+ Add dedicated reward distributors for this vault. You do not need to copy recorded
54
+ campaign distributors, including historical ones.
55
+ </p>
56
+ <Textarea
57
+ defaultValue={options.value?.rewardDistributors.join('\n')}
58
+ label="Additional reward distributors"
59
+ name="rewardDistributors"
60
+ placeholder="One address per line"
61
+ rows={5}
62
+ spellCheck={false}
63
+ />
64
+ <p className="text-copy-16 text-foreground-secondary sm:text-copy-14">
65
+ Shares received from these addresses count as earnings. Do not add card spenders or
66
+ refund handlers: returned shares could be incorrectly counted as rewards.
67
+ </p>
68
+ </div>
69
+ </fieldset>
70
+ )
71
+ }
72
+
73
+ export namespace Earnings {
74
+ /** Saved settings, or null for campaign defaults. */
75
+ export type Props = { value: EarnVaults.Vault['earnings'] }
76
+ }
77
+
33
78
  /** Props for the verified-vault form shell. */
34
79
  export type Props = {
35
80
  /** Primary form action. */
@@ -0,0 +1,79 @@
1
+ import { useState } from 'react'
2
+ import { Button, Select, cx } from 'regen-ui'
3
+
4
+ import * as Policies from '../lib/route-policies.js'
5
+
6
+ /** Adds complete catalog routes through mutually filtered network, token, and provider choices. */
7
+ export function RoutePicker(options: RoutePicker.Props) {
8
+ const [selection, setSelection] = useState<Policies.RouteSelection>({})
9
+ const rule = selection.providerId ? Policies.selectedRoute(selection) : undefined
10
+ const duplicate =
11
+ rule &&
12
+ options.selected.some((selected) =>
13
+ fields.every(({ field }) => selected[field] === rule[field]),
14
+ )
15
+ return (
16
+ <fieldset
17
+ aria-label={`Add ${options.label.toLowerCase()} route`}
18
+ className={cx('@container flex min-w-0 flex-col gap-3', options.className)}
19
+ >
20
+ <div className="grid gap-3 @sm:grid-cols-2 @3xl:grid-cols-5">
21
+ {fields.map(({ field, label, placeholder }) => (
22
+ <label
23
+ className="flex min-w-0 flex-col gap-2 text-label-12 text-foreground-secondary"
24
+ key={field}
25
+ >
26
+ {label}
27
+ <Select
28
+ aria-label={label}
29
+ className="w-full min-w-0"
30
+ items={[
31
+ { label: placeholder, value: '' },
32
+ ...Policies.routeOptions(options.routes, selection, field),
33
+ ]}
34
+ onChange={(value) =>
35
+ setSelection((current) => ({ ...current, [field]: value || undefined }))
36
+ }
37
+ value={selection[field] ?? ''}
38
+ />
39
+ </label>
40
+ ))}
41
+ </div>
42
+ <div className="flex flex-wrap items-center justify-between gap-3">
43
+ <p className="text-copy-16 text-foreground-secondary sm:text-copy-14">
44
+ {duplicate
45
+ ? 'This route is already included.'
46
+ : 'Choose in any order. Clear a field to broaden the other choices.'}
47
+ </p>
48
+ <Button
49
+ disabled={!rule || duplicate}
50
+ onClick={() => {
51
+ if (!rule) return
52
+ options.onAdd(rule)
53
+ }}
54
+ type="button"
55
+ >
56
+ Add route
57
+ </Button>
58
+ </div>
59
+ </fieldset>
60
+ )
61
+ }
62
+
63
+ declare namespace RoutePicker {
64
+ type Props = {
65
+ className?: string | undefined
66
+ label: string
67
+ onAdd: (rule: Policies.Rule) => void
68
+ routes: Policies.Payload['routes']
69
+ selected: readonly Policies.Rule[]
70
+ }
71
+ }
72
+
73
+ const fields = [
74
+ { field: 'sourceChainId', label: 'Source network', placeholder: 'Choose network' },
75
+ { field: 'sourceTokenId', label: 'Source token', placeholder: 'Choose token' },
76
+ { field: 'destinationChainId', label: 'Destination network', placeholder: 'Choose network' },
77
+ { field: 'destinationTokenId', label: 'Destination token', placeholder: 'Choose token' },
78
+ { field: 'providerId', label: 'Provider', placeholder: 'Choose provider' },
79
+ ] as const
@@ -18,7 +18,7 @@ export type Vault = DetailResponse &
18
18
  type ListResponse = Omit<BaseListResponse, 'data'> & { data: readonly Vault[] }
19
19
 
20
20
  type InsertRequest = InferRequestType<(typeof client)['earn']['verified-vaults']['$put']>['json']
21
- const include = 'access,capabilities,zone' as const
21
+ const include = 'access,capabilities,zone,zones' as const
22
22
 
23
23
  /** A chain id managed by the Earn registry UI. */
24
24
  export type ChainId = typeof mainnet.id | typeof testnet.id