tapimo 0.15.1 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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
@@ -239,48 +239,9 @@ export declare namespace schema {
239
239
  export declare function feeAmm(): import("hono/hono-base").HonoBase<App.Environment, {
240
240
  "/v1/fee-amm/pools": {
241
241
  $get: {
242
- output: {
243
- data: {
244
- createdAt: string;
245
- id: `0x${string}`;
246
- lastMintAt: string;
247
- mintCount: number;
248
- poolId: `0x${string}`;
249
- userAmount?: {
250
- baseUnits: string;
251
- currency: string;
252
- decimals: number;
253
- formatted: string;
254
- } | undefined;
255
- userToken: {
256
- address: `0x${string}`;
257
- currency: string;
258
- decimals: number;
259
- logoUri?: string | undefined;
260
- name: string;
261
- symbol: string;
262
- verified?: boolean | undefined;
263
- };
264
- validatorAmount?: {
265
- baseUnits: string;
266
- currency: string;
267
- decimals: number;
268
- formatted: string;
269
- } | undefined;
270
- validatorToken: {
271
- address: `0x${string}`;
272
- currency: string;
273
- decimals: number;
274
- logoUri?: string | undefined;
275
- name: string;
276
- symbol: string;
277
- verified?: boolean | undefined;
278
- };
279
- }[];
280
- nextCursor: string | null;
281
- };
282
- outputFormat: "json";
283
- status: 200;
242
+ output: null;
243
+ outputFormat: "body";
244
+ status: 402;
284
245
  input: {
285
246
  query?: {
286
247
  chainId?: string | string[];
@@ -313,14 +274,14 @@ export declare function feeAmm(): import("hono/hono-base").HonoBase<App.Environm
313
274
  } | {
314
275
  output: {
315
276
  error: {
316
- code: "query_invalid";
277
+ code: "api_key_invalid" | "api_key_missing";
317
278
  details?: readonly Response.error.Detail[] | undefined;
318
279
  message: string;
319
280
  };
320
281
  requestId: string;
321
282
  };
322
283
  outputFormat: "json";
323
- status: 400;
284
+ status: 401;
324
285
  input: {
325
286
  query?: {
326
287
  chainId?: string | string[];
@@ -333,27 +294,14 @@ export declare function feeAmm(): import("hono/hono-base").HonoBase<App.Environm
333
294
  } | {
334
295
  output: {
335
296
  error: {
336
- code: "api_key_invalid" | "api_key_missing";
297
+ code: "api_key_forbidden" | "api_key_ip_forbidden";
337
298
  details?: readonly Response.error.Detail[] | undefined;
338
299
  message: string;
339
300
  };
340
301
  requestId: string;
341
302
  };
342
303
  outputFormat: "json";
343
- status: 401;
344
- input: {
345
- query?: {
346
- chainId?: string | string[];
347
- cursor?: string | string[];
348
- include?: string | string[];
349
- limit?: string | string[];
350
- page?: string | string[];
351
- } | undefined;
352
- };
353
- } | {
354
- output: null;
355
- outputFormat: "body";
356
- status: 402;
304
+ status: 403;
357
305
  input: {
358
306
  query?: {
359
307
  chainId?: string | string[];
@@ -366,14 +314,14 @@ export declare function feeAmm(): import("hono/hono-base").HonoBase<App.Environm
366
314
  } | {
367
315
  output: {
368
316
  error: {
369
- code: "api_key_forbidden" | "api_key_ip_forbidden";
317
+ code: "payment_required" | "rate_limit_exceeded";
370
318
  details?: readonly Response.error.Detail[] | undefined;
371
319
  message: string;
372
320
  };
373
321
  requestId: string;
374
322
  };
375
323
  outputFormat: "json";
376
- status: 403;
324
+ status: 429;
377
325
  input: {
378
326
  query?: {
379
327
  chainId?: string | string[];
@@ -386,14 +334,14 @@ export declare function feeAmm(): import("hono/hono-base").HonoBase<App.Environm
386
334
  } | {
387
335
  output: {
388
336
  error: {
389
- code: "payment_required" | "rate_limit_exceeded";
337
+ code: "query_invalid";
390
338
  details?: readonly Response.error.Detail[] | undefined;
391
339
  message: string;
392
340
  };
393
341
  requestId: string;
394
342
  };
395
343
  outputFormat: "json";
396
- status: 429;
344
+ status: 400;
397
345
  input: {
398
346
  query?: {
399
347
  chainId?: string | string[];
@@ -423,50 +371,66 @@ export declare function feeAmm(): import("hono/hono-base").HonoBase<App.Environm
423
371
  page?: string | string[];
424
372
  } | undefined;
425
373
  };
426
- };
427
- };
428
- } & {
429
- "/v1/fee-amm/mints": {
430
- $get: {
374
+ } | {
431
375
  output: {
432
376
  data: {
433
- amountUserToken?: string | undefined;
434
- amountValidatorToken: string;
435
- blockNumber: number;
436
- id: string;
437
- liquidity: string;
438
- logIndex: number;
439
- minter: `0x${string}`;
440
- recipient?: `0x${string}` | undefined;
441
- timestamp: string;
442
- transactionHash: `0x${string}`;
377
+ createdAt: string;
378
+ id: `0x${string}`;
379
+ lastMintAt: string;
380
+ mintCount: number;
381
+ poolId: `0x${string}`;
382
+ userAmount?: {
383
+ baseUnits: string;
384
+ currency: string;
385
+ decimals: number;
386
+ formatted: string;
387
+ } | undefined;
443
388
  userToken: {
444
389
  address: `0x${string}`;
445
- currency?: string | undefined;
446
- decimals?: number | undefined;
390
+ currency: string;
391
+ decimals: number;
447
392
  logoUri?: string | undefined;
448
- name?: string | undefined;
449
- symbol?: string | undefined;
393
+ name: string;
394
+ symbol: string;
450
395
  verified?: boolean | undefined;
451
396
  };
397
+ validatorAmount?: {
398
+ baseUnits: string;
399
+ currency: string;
400
+ decimals: number;
401
+ formatted: string;
402
+ } | undefined;
452
403
  validatorToken: {
453
404
  address: `0x${string}`;
454
- currency?: string | undefined;
455
- decimals?: number | undefined;
405
+ currency: string;
406
+ decimals: number;
456
407
  logoUri?: string | undefined;
457
- name?: string | undefined;
458
- symbol?: string | undefined;
408
+ name: string;
409
+ symbol: string;
459
410
  verified?: boolean | undefined;
460
411
  };
461
412
  }[];
462
- meta?: {
463
- totalCountCapped: boolean;
464
- totalCount: number;
465
- } | undefined;
466
413
  nextCursor: string | null;
467
414
  };
468
415
  outputFormat: "json";
469
416
  status: 200;
417
+ input: {
418
+ query?: {
419
+ chainId?: string | string[];
420
+ cursor?: string | string[];
421
+ include?: string | string[];
422
+ limit?: string | string[];
423
+ page?: string | string[];
424
+ } | undefined;
425
+ };
426
+ };
427
+ };
428
+ } & {
429
+ "/v1/fee-amm/mints": {
430
+ $get: {
431
+ output: null;
432
+ outputFormat: "body";
433
+ status: 402;
470
434
  input: {
471
435
  query?: {
472
436
  chainId?: string | string[];
@@ -505,14 +469,14 @@ export declare function feeAmm(): import("hono/hono-base").HonoBase<App.Environm
505
469
  } | {
506
470
  output: {
507
471
  error: {
508
- code: "query_invalid";
472
+ code: "api_key_invalid" | "api_key_missing";
509
473
  details?: readonly Response.error.Detail[] | undefined;
510
474
  message: string;
511
475
  };
512
476
  requestId: string;
513
477
  };
514
478
  outputFormat: "json";
515
- status: 400;
479
+ status: 401;
516
480
  input: {
517
481
  query?: {
518
482
  chainId?: string | string[];
@@ -528,14 +492,14 @@ export declare function feeAmm(): import("hono/hono-base").HonoBase<App.Environm
528
492
  } | {
529
493
  output: {
530
494
  error: {
531
- code: "api_key_invalid" | "api_key_missing";
495
+ code: "api_key_forbidden" | "api_key_ip_forbidden";
532
496
  details?: readonly Response.error.Detail[] | undefined;
533
497
  message: string;
534
498
  };
535
499
  requestId: string;
536
500
  };
537
501
  outputFormat: "json";
538
- status: 401;
502
+ status: 403;
539
503
  input: {
540
504
  query?: {
541
505
  chainId?: string | string[];
@@ -549,9 +513,16 @@ export declare function feeAmm(): import("hono/hono-base").HonoBase<App.Environm
549
513
  } | undefined;
550
514
  };
551
515
  } | {
552
- output: null;
553
- outputFormat: "body";
554
- status: 402;
516
+ output: {
517
+ error: {
518
+ code: "payment_required" | "rate_limit_exceeded";
519
+ details?: readonly Response.error.Detail[] | undefined;
520
+ message: string;
521
+ };
522
+ requestId: string;
523
+ };
524
+ outputFormat: "json";
525
+ status: 429;
555
526
  input: {
556
527
  query?: {
557
528
  chainId?: string | string[];
@@ -567,14 +538,14 @@ export declare function feeAmm(): import("hono/hono-base").HonoBase<App.Environm
567
538
  } | {
568
539
  output: {
569
540
  error: {
570
- code: "api_key_forbidden" | "api_key_ip_forbidden";
541
+ code: "query_invalid";
571
542
  details?: readonly Response.error.Detail[] | undefined;
572
543
  message: string;
573
544
  };
574
545
  requestId: string;
575
546
  };
576
547
  outputFormat: "json";
577
- status: 403;
548
+ status: 400;
578
549
  input: {
579
550
  query?: {
580
551
  chainId?: string | string[];
@@ -590,14 +561,14 @@ export declare function feeAmm(): import("hono/hono-base").HonoBase<App.Environm
590
561
  } | {
591
562
  output: {
592
563
  error: {
593
- code: "payment_required" | "rate_limit_exceeded";
564
+ code: "upstream_error";
594
565
  details?: readonly Response.error.Detail[] | undefined;
595
566
  message: string;
596
567
  };
597
568
  requestId: string;
598
569
  };
599
570
  outputFormat: "json";
600
- status: 429;
571
+ status: 502;
601
572
  input: {
602
573
  query?: {
603
574
  chainId?: string | string[];
@@ -612,15 +583,44 @@ export declare function feeAmm(): import("hono/hono-base").HonoBase<App.Environm
612
583
  };
613
584
  } | {
614
585
  output: {
615
- error: {
616
- code: "upstream_error";
617
- details?: readonly Response.error.Detail[] | undefined;
618
- message: string;
619
- };
620
- requestId: string;
586
+ data: {
587
+ amountUserToken?: string | undefined;
588
+ amountValidatorToken: string;
589
+ blockNumber: number;
590
+ id: string;
591
+ liquidity: string;
592
+ logIndex: number;
593
+ minter: `0x${string}`;
594
+ recipient?: `0x${string}` | undefined;
595
+ timestamp: string;
596
+ transactionHash: `0x${string}`;
597
+ userToken: {
598
+ address: `0x${string}`;
599
+ currency?: string | undefined;
600
+ decimals?: number | undefined;
601
+ logoUri?: string | undefined;
602
+ name?: string | undefined;
603
+ symbol?: string | undefined;
604
+ verified?: boolean | undefined;
605
+ };
606
+ validatorToken: {
607
+ address: `0x${string}`;
608
+ currency?: string | undefined;
609
+ decimals?: number | undefined;
610
+ logoUri?: string | undefined;
611
+ name?: string | undefined;
612
+ symbol?: string | undefined;
613
+ verified?: boolean | undefined;
614
+ };
615
+ }[];
616
+ meta?: {
617
+ totalCountCapped: boolean;
618
+ totalCount: number;
619
+ } | undefined;
620
+ nextCursor: string | null;
621
621
  };
622
622
  outputFormat: "json";
623
- status: 502;
623
+ status: 200;
624
624
  input: {
625
625
  query?: {
626
626
  chainId?: string | string[];
@@ -636,24 +636,6 @@ export declare function feeAmm(): import("hono/hono-base").HonoBase<App.Environm
636
636
  };
637
637
  };
638
638
  }, "/", "/v1/fee-amm/mints">;
639
- /**
640
- * The set of token addresses usable to pay transaction fees on a chain: the
641
- * curated verified tokens that have at least one Fee AMM pool (i.e. appear as a
642
- * `userToken` / topic2 in the FeeManager's `Mint` logs), plus the protocol
643
- * default fee token (`pathUSD`), which pays fees without needing a pool.
644
- * Addresses are lowercased to match the indexer's stored casing.
645
- *
646
- * The set is intentionally gated to the verified list rather than every pooled
647
- * token: anyone can mint a single-mint spam pool, so the raw set of pool
648
- * `userToken`s is unbounded (tens of thousands on busy chains) and those
649
- * liquidity-less pools can't actually settle fees. Restricting to verified
650
- * tokens keeps the set small (a handful of USD stablecoins), bounds the scan
651
- * (the `topic2 IN (…)` candidate list is the verified list), and matches the
652
- * tokens fees are realistically paid in.
653
- *
654
- * Memoized per chain and verified-snapshot version (the only inputs), so
655
- * callers — e.g. the address balances endpoint — can flag which holdings are
656
- * fee-usable without a second `/fee-amm/pools` query.
657
- */
639
+ /** Returns lowercased verified tokens currently usable for transaction fees. The protocol default (`pathUSD`) is always included. */
658
640
  export declare function feeTokenSet(c: Context<App.Environment>, chainId: z.output<typeof Schema.ChainId>): Promise<Set<string>>;
659
641
  //# sourceMappingURL=fee-amm.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fee-amm.d.ts","sourceRoot":"","sources":["../../../../src/apps/data/routes/fee-amm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,OAAO,EAAE,MAAM,MAAM,CAAA;AAGzC,OAAO,KAAK,CAAC,MAAM,UAAU,CAAA;AAE7B,OAAO,KAAK,KAAK,GAAG,MAAM,iBAAiB,CAAA;AAK3C,OAAO,KAAK,QAAQ,MAAM,+BAA+B,CAAA;AACzD,OAAO,KAAK,MAAM,MAAM,6BAA6B,CAAA;AA4CrD,iDAAiD;AACjD,yBAAiB,MAAM,CAAC;IACtB;;;;OAIG;IACI,MAAM,SAAS;;;;;;;;qBA8CrB,CAAA;IAED,gDAAgD;IAChD,UAAiB,cAAc,CAAC;QAC9B,yEAAyE;QAClE,MAAM,OAAO;;;UAE4D,CAAA;QAEhF;;;WAGG;QACI,MAAM,YAAY;;;YAGxB,CAAA;QAED,sDAAsD;QAC/C,MAAM,KAAK;;;;;;;;;;;;0BAQyE,CAAA;QAE3F,+EAA+E;QACxE,MAAM,KAAK;;;;;;;;yBAMjB,CAAA;QAED,yDAAyD;QAClD,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBA4ChB,CAAA;QAED,oEAAoE;QAC7D,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAUpB,CAAA;KACF;IAED,gDAAgD;IAChD,UAAiB,cAAc,CAAC;QAC9B,uDAAuD;QAChD,MAAM,KAAK;;;;;;;;;;;;;;;;;0BAkBf,CAAA;QAEH,+CAA+C;QACxC,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBA8DhB,CAAA;QAED,4EAA4E;QACrE,MAAM,IAAI;;;yBAA4D,CAAA;QAE7E,+DAA+D;QACxD,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAapB,CAAA;KACF;CACF;AAED,gCAAgC;AAChC,wBAAgB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAyOrB;AAmJD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,WAAW,CAC/B,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAC3B,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,GACvC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CA4CtB"}
1
+ {"version":3,"file":"fee-amm.d.ts","sourceRoot":"","sources":["../../../../src/apps/data/routes/fee-amm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,OAAO,EAAE,MAAM,MAAM,CAAA;AAIzC,OAAO,KAAK,CAAC,MAAM,UAAU,CAAA;AAE7B,OAAO,KAAK,KAAK,GAAG,MAAM,iBAAiB,CAAA;AAM3C,OAAO,KAAK,QAAQ,MAAM,+BAA+B,CAAA;AACzD,OAAO,KAAK,MAAM,MAAM,6BAA6B,CAAA;AA4CrD,iDAAiD;AACjD,yBAAiB,MAAM,CAAC;IACtB;;;;OAIG;IACI,MAAM,SAAS;;;;;;;;qBA8CrB,CAAA;IAED,gDAAgD;IAChD,UAAiB,cAAc,CAAC;QAC9B,yEAAyE;QAClE,MAAM,OAAO;;;UAE4D,CAAA;QAEhF;;;WAGG;QACI,MAAM,YAAY;;;YAGxB,CAAA;QAED,sDAAsD;QAC/C,MAAM,KAAK;;;;;;;;;;;;0BAQyE,CAAA;QAE3F,+EAA+E;QACxE,MAAM,KAAK;;;;;;;;yBAMjB,CAAA;QAED,yDAAyD;QAClD,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBA4ChB,CAAA;QAED,oEAAoE;QAC7D,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAUpB,CAAA;KACF;IAED,gDAAgD;IAChD,UAAiB,cAAc,CAAC;QAC9B,uDAAuD;QAChD,MAAM,KAAK;;;;;;;;;;;;;;;;;0BAkBf,CAAA;QAEH,+CAA+C;QACxC,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBA8DhB,CAAA;QAED,4EAA4E;QACrE,MAAM,IAAI;;;yBAA4D,CAAA;QAE7E,+DAA+D;QACxD,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAapB,CAAA;KACF;CACF;AAED,gCAAgC;AAChC,wBAAgB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAyOrB;AAmJD,qIAAqI;AACrI,wBAAsB,WAAW,CAC/B,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAC3B,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,GACvC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAwEtB"}
@@ -1,5 +1,6 @@
1
1
  import { Hono } from 'hono';
2
2
  import { AbiEvent, AbiParameters, Hash } from 'ox';
3
+ import { zeroAddress } from 'viem';
3
4
  import { Abis, Addresses } from 'viem/tempo';
4
5
  import * as z from 'zod/mini';
5
6
  import * as Auth from '../../../internal/Auth.js';
@@ -498,32 +499,13 @@ function listPools(c, options) {
498
499
  ttl: Ttl.minutes(1),
499
500
  }));
500
501
  }
501
- /**
502
- * The set of token addresses usable to pay transaction fees on a chain: the
503
- * curated verified tokens that have at least one Fee AMM pool (i.e. appear as a
504
- * `userToken` / topic2 in the FeeManager's `Mint` logs), plus the protocol
505
- * default fee token (`pathUSD`), which pays fees without needing a pool.
506
- * Addresses are lowercased to match the indexer's stored casing.
507
- *
508
- * The set is intentionally gated to the verified list rather than every pooled
509
- * token: anyone can mint a single-mint spam pool, so the raw set of pool
510
- * `userToken`s is unbounded (tens of thousands on busy chains) and those
511
- * liquidity-less pools can't actually settle fees. Restricting to verified
512
- * tokens keeps the set small (a handful of USD stablecoins), bounds the scan
513
- * (the `topic2 IN (…)` candidate list is the verified list), and matches the
514
- * tokens fees are realistically paid in.
515
- *
516
- * Memoized per chain and verified-snapshot version (the only inputs), so
517
- * callers — e.g. the address balances endpoint — can flag which holdings are
518
- * fee-usable without a second `/fee-amm/pools` query.
519
- */
502
+ /** Returns lowercased verified tokens currently usable for transaction fees. The protocol default (`pathUSD`) is always included. */
520
503
  export async function feeTokenSet(c, chainId) {
521
504
  const store = c.get('store');
522
- const tidx = c.get('getTidx')(chainId);
523
505
  const snapshot = await VerifiedTokens.snapshot(c, chainId);
524
506
  // pathUSD is always fee-usable; the verified tokens are the only other
525
507
  // candidates we probe for a pool. With no verified candidates there is
526
- // nothing to query — pathUSD stands alone.
508
+ // nothing to query, so pathUSD stands alone.
527
509
  const candidates = snapshot.list.map((token) => token.address.toLowerCase());
528
510
  if (candidates.length === 0)
529
511
  return new Set([pathUsd]);
@@ -531,33 +513,77 @@ export async function feeTokenSet(c, chainId) {
531
513
  // the `Set` per call (cheap; the list is a handful of stablecoins).
532
514
  const addresses = await Timing.time(c, 'fee_token_set', () => Store.memoize(async () => {
533
515
  const tokens = new Set([pathUsd]);
534
- // PostgreSQL's `topic2` index proves negative lookups without scanning
535
- // FeeManager history. Probe serially so an uncapped verified list
536
- // cannot fan out indexer load.
537
- for (const address of candidates) {
538
- const topic = padTopic(address);
539
- const result = await tidx.fetch({
516
+ const validatorTokens = await getValidatorTokens(c, { chainId });
517
+ // Verified candidates prevent permissionless spam pools from expanding
518
+ // the lookup. Small batches also bound RPC fan-out for Zone clients.
519
+ const probes = candidates
520
+ .filter((address) => {
521
+ if (!validatorTokens.includes(address))
522
+ return true;
523
+ tokens.add(address);
524
+ return false;
525
+ })
526
+ .flatMap((userToken) => validatorTokens.map((validatorToken) => ({ userToken, validatorToken })));
527
+ const unresolved = new Map();
528
+ for (let index = 0; index < probes.length; index += 8) {
529
+ const group = probes.slice(index, index + 8);
530
+ const results = await Promise.allSettled(group.map(({ userToken, validatorToken }) => readPoolReserves(c, {
540
531
  chainId,
541
- engine: 'postgres',
542
- query: `
543
- SELECT 1 AS present
544
- FROM logs
545
- WHERE address = '${feeManager}' AND selector IN ('${mintTopic}', '${legacyMintTopic}')
546
- AND topic2 = '${topic}'
547
- LIMIT 1
548
- `,
549
- });
550
- if (result.rows.length > 0)
551
- tokens.add(address);
532
+ userToken: userToken,
533
+ validatorToken: validatorToken,
534
+ })));
535
+ for (const [offset, result] of results.entries()) {
536
+ const userToken = group[offset].userToken;
537
+ if (result.status === 'rejected') {
538
+ unresolved.set(userToken, result.reason);
539
+ continue;
540
+ }
541
+ if (BigInt(result.value.userToken) > 0n && BigInt(result.value.validatorToken) > 0n) {
542
+ tokens.add(userToken);
543
+ unresolved.delete(userToken);
544
+ }
545
+ }
552
546
  }
547
+ const failure = Array.from(unresolved).find(([address]) => !tokens.has(address));
548
+ if (failure)
549
+ throw failure[1];
553
550
  return Array.from(tokens);
554
551
  }, {
555
- key: `feeamm:v2:${chainId}:fee-token-set:v:${snapshot.version}`,
552
+ key: `feeamm:v3:${chainId}:fee-token-set:v:${snapshot.version}`,
556
553
  store,
557
- ttl: Ttl.minutes(5),
558
- }));
554
+ ttl: Ttl.seconds(30),
555
+ })).catch((cause) => {
556
+ const failure = {
557
+ chainId,
558
+ failure: 'unknown',
559
+ id: 'rpc',
560
+ operation: 'feeTokenSet',
561
+ };
562
+ c.set('providerFailures', [...(c.get('providerFailures') ?? []), failure]);
563
+ throw cause;
564
+ });
559
565
  return new Set(addresses);
560
566
  }
567
+ /** Resolves the distinct fee tokens preferred by active validators. */
568
+ async function getValidatorTokens(c, options) {
569
+ const { chainId } = options;
570
+ const client = c.get('getClient')(chainId);
571
+ const validators = await client.readContract({
572
+ abi: Abis.validatorConfig,
573
+ address: Addresses.validator,
574
+ functionName: 'getValidators',
575
+ });
576
+ const active = validators.filter((validator) => validator.active);
577
+ if (active.length === 0)
578
+ return [pathUsd];
579
+ const preferred = await Promise.all(active.map((validator) => client.readContract({
580
+ abi: Abis.feeManager,
581
+ address: Addresses.feeManager,
582
+ args: [validator.validatorAddress],
583
+ functionName: 'validatorTokens',
584
+ })));
585
+ return Array.from(new Set(preferred.map((address) => address.toLowerCase() === zeroAddress ? pathUsd : address.toLowerCase())));
586
+ }
561
587
  /**
562
588
  * Reads a pool's current on-chain reserves via `FeeManager.getPool`, memoized
563
589
  * briefly per pool. Reserves are best-effort decoration on the pool listing:
@@ -567,25 +593,28 @@ export async function feeTokenSet(c, chainId) {
567
593
  */
568
594
  function getPoolReserves(c, options) {
569
595
  const { chainId, userToken, validatorToken } = options;
570
- const client = c.get('getClient')(chainId);
571
596
  const store = c.get('store');
572
- return Store.memoize(async () => {
573
- const pool = await client.readContract({
574
- abi: Abis.feeAmm,
575
- address: Addresses.feeManager,
576
- args: [userToken, validatorToken],
577
- functionName: 'getPool',
578
- });
579
- return {
580
- userToken: pool.reserveUserToken.toString(),
581
- validatorToken: pool.reserveValidatorToken.toString(),
582
- };
583
- }, {
597
+ return Store.memoize(() => readPoolReserves(c, { chainId, userToken, validatorToken }), {
584
598
  key: `feeamm:v1:${chainId}:pool:${userToken}:${validatorToken}:reserves`,
585
599
  store,
586
600
  ttl: Ttl.seconds(30),
587
601
  }).catch(() => null);
588
602
  }
603
+ /** Reads a pool's current on-chain reserves and propagates RPC failures. */
604
+ async function readPoolReserves(c, options) {
605
+ const { chainId, userToken, validatorToken } = options;
606
+ const client = c.get('getClient')(chainId);
607
+ const pool = await client.readContract({
608
+ abi: Abis.feeAmm,
609
+ address: Addresses.feeManager,
610
+ args: [userToken, validatorToken],
611
+ functionName: 'getPool',
612
+ });
613
+ return {
614
+ userToken: pool.reserveUserToken.toString(),
615
+ validatorToken: pool.reserveValidatorToken.toString(),
616
+ };
617
+ }
589
618
  /**
590
619
  * Lists `Mint` logs as a keyset-paginated page on `(block_num, log_idx)`,
591
620
  * optionally filtered by the pool's tokens. Runs on ClickHouse: the postgres