tapimo 0.15.0 → 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 (734) 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 +896 -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 +33 -33
  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 +454 -1
  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 +10 -4
  45. package/dist/admin/apps/verified-tokens.d.ts.map +1 -1
  46. package/dist/admin/apps/verified-tokens.js +24 -4
  47. package/dist/admin/apps/verified-tokens.js.map +1 -1
  48. package/dist/admin/index.d.ts +0 -1
  49. package/dist/admin/index.d.ts.map +1 -1
  50. package/dist/admin/index.js +0 -1
  51. package/dist/admin/index.js.map +1 -1
  52. package/dist/admin/ui.generated.d.ts +1 -1
  53. package/dist/admin/ui.generated.d.ts.map +1 -1
  54. package/dist/admin/ui.generated.js +99 -103
  55. package/dist/admin/ui.generated.js.map +1 -1
  56. package/dist/analytics/Analytics.d.ts.map +1 -1
  57. package/dist/analytics/Analytics.js +65 -1
  58. package/dist/analytics/Analytics.js.map +1 -1
  59. package/dist/analytics/tables/requestEvents.d.ts +1 -1
  60. package/dist/analytics/tables/requestEvents.d.ts.map +1 -1
  61. package/dist/analytics/tables/requestEvents.js +58 -59
  62. package/dist/analytics/tables/requestEvents.js.map +1 -1
  63. package/dist/apps/data/App.d.ts +2709 -2670
  64. package/dist/apps/data/App.d.ts.map +1 -1
  65. package/dist/apps/data/routes/activities.d.ts +5 -5
  66. package/dist/apps/data/routes/activities.d.ts.map +1 -1
  67. package/dist/apps/data/routes/activities.js +50 -0
  68. package/dist/apps/data/routes/activities.js.map +1 -1
  69. package/dist/apps/data/routes/addresses.d.ts +248 -248
  70. package/dist/apps/data/routes/balances.d.ts +22 -22
  71. package/dist/apps/data/routes/balances.d.ts.map +1 -1
  72. package/dist/apps/data/routes/balances.js +5 -7
  73. package/dist/apps/data/routes/balances.js.map +1 -1
  74. package/dist/apps/data/routes/coingecko.d.ts +54 -54
  75. package/dist/apps/data/routes/earn.d.ts +103 -12
  76. package/dist/apps/data/routes/earn.d.ts.map +1 -1
  77. package/dist/apps/data/routes/earn.js +456 -220
  78. package/dist/apps/data/routes/earn.js.map +1 -1
  79. package/dist/apps/data/routes/exchanges.d.ts.map +1 -1
  80. package/dist/apps/data/routes/exchanges.js +267 -97
  81. package/dist/apps/data/routes/exchanges.js.map +1 -1
  82. package/dist/apps/data/routes/fee-amm.d.ts +1 -19
  83. package/dist/apps/data/routes/fee-amm.d.ts.map +1 -1
  84. package/dist/apps/data/routes/fee-amm.js +93 -56
  85. package/dist/apps/data/routes/fee-amm.js.map +1 -1
  86. package/dist/apps/data/routes/indexer.d.ts +10 -10
  87. package/dist/apps/data/routes/rpc.d.ts +30 -30
  88. package/dist/apps/data/routes/rpc.js +45 -11
  89. package/dist/apps/data/routes/rpc.js.map +1 -1
  90. package/dist/apps/data/routes/tokens.d.ts.map +1 -1
  91. package/dist/apps/data/routes/tokens.js +11 -6
  92. package/dist/apps/data/routes/tokens.js.map +1 -1
  93. package/dist/apps/data/routes/transactions.d.ts +2 -0
  94. package/dist/apps/data/routes/transactions.d.ts.map +1 -1
  95. package/dist/apps/data/routes/transactions.js +30 -22
  96. package/dist/apps/data/routes/transactions.js.map +1 -1
  97. package/dist/apps/data/routes/transfers.d.ts +12 -12
  98. package/dist/apps/data/routes/valuation.d.ts +30 -30
  99. package/dist/apps/data/routes/verified-tokens.d.ts +5 -5
  100. package/dist/apps/data/routes/webhooks.d.ts +1 -1
  101. package/dist/apps/data/routes/webhooks.d.ts.map +1 -1
  102. package/dist/apps/data/routes/webhooks.js +18 -11
  103. package/dist/apps/data/routes/webhooks.js.map +1 -1
  104. package/dist/apps/data/routes/zones.d.ts +3 -3
  105. package/dist/apps/management/App.d.ts +3043 -2198
  106. package/dist/apps/management/App.d.ts.map +1 -1
  107. package/dist/apps/management/App.js +2 -0
  108. package/dist/apps/management/App.js.map +1 -1
  109. package/dist/apps/management/Billing.d.ts +2 -4
  110. package/dist/apps/management/Billing.d.ts.map +1 -1
  111. package/dist/apps/management/Billing.js +65 -26
  112. package/dist/apps/management/Billing.js.map +1 -1
  113. package/dist/apps/management/routes/api-keys.d.ts +16 -4
  114. package/dist/apps/management/routes/api-keys.d.ts.map +1 -1
  115. package/dist/apps/management/routes/api-keys.js +70 -11
  116. package/dist/apps/management/routes/api-keys.js.map +1 -1
  117. package/dist/apps/management/routes/billing.d.ts +84 -84
  118. package/dist/apps/management/routes/cli.d.ts +912 -0
  119. package/dist/apps/management/routes/cli.d.ts.map +1 -0
  120. package/dist/apps/management/routes/cli.js +416 -0
  121. package/dist/apps/management/routes/cli.js.map +1 -0
  122. package/dist/apps/management/routes/faucet.d.ts +8 -8
  123. package/dist/apps/management/routes/invitations.d.ts +24 -24
  124. package/dist/apps/management/routes/invite-links.d.ts +66 -66
  125. package/dist/apps/management/routes/members.d.ts +16 -16
  126. package/dist/apps/management/routes/orgs.d.ts +20 -20
  127. package/dist/apps/management/routes/orgs.d.ts.map +1 -1
  128. package/dist/apps/management/routes/orgs.js +8 -2
  129. package/dist/apps/management/routes/orgs.js.map +1 -1
  130. package/dist/apps/management/routes/projects.d.ts +76 -76
  131. package/dist/apps/management/routes/usage.d.ts +8 -8
  132. package/dist/apps/management/routes/verified-token-requests.d.ts +42 -42
  133. package/dist/apps/management/routes/verified-token-requests.d.ts.map +1 -1
  134. package/dist/apps/management/routes/verified-token-requests.js +7 -9
  135. package/dist/apps/management/routes/verified-token-requests.js.map +1 -1
  136. package/dist/apps/management/routes/webhooks.d.ts +119 -119
  137. package/dist/apps/mcp.d.ts.map +1 -1
  138. package/dist/apps/mcp.js +16 -3
  139. package/dist/apps/mcp.js.map +1 -1
  140. package/dist/apps/mpp/internal/Policy.d.ts.map +1 -1
  141. package/dist/apps/mpp/internal/Policy.js +4 -2
  142. package/dist/apps/mpp/internal/Policy.js.map +1 -1
  143. package/dist/apps/mpp/internal/Sponsorship.d.ts.map +1 -1
  144. package/dist/apps/mpp/internal/Sponsorship.js +6 -4
  145. package/dist/apps/mpp/internal/Sponsorship.js.map +1 -1
  146. package/dist/apps/relay/App.d.ts +8 -0
  147. package/dist/apps/relay/App.d.ts.map +1 -1
  148. package/dist/apps/relay/App.js +16 -4
  149. package/dist/apps/relay/App.js.map +1 -1
  150. package/dist/apps/relay/Sponsorships.d.ts +4 -6
  151. package/dist/apps/relay/Sponsorships.d.ts.map +1 -1
  152. package/dist/apps/relay/Sponsorships.js +71 -60
  153. package/dist/apps/relay/Sponsorships.js.map +1 -1
  154. package/dist/apps/routes/Access.d.ts +53 -0
  155. package/dist/apps/routes/Access.d.ts.map +1 -1
  156. package/dist/apps/routes/Access.js +121 -0
  157. package/dist/apps/routes/Access.js.map +1 -1
  158. package/dist/apps/routes/App.d.ts +397 -158
  159. package/dist/apps/routes/App.d.ts.map +1 -1
  160. package/dist/apps/routes/App.js.map +1 -1
  161. package/dist/apps/routes/routes/deposit-addresses.d.ts +169 -61
  162. package/dist/apps/routes/routes/deposit-addresses.d.ts.map +1 -1
  163. package/dist/apps/routes/routes/deposit-addresses.js +217 -32
  164. package/dist/apps/routes/routes/deposit-addresses.js.map +1 -1
  165. package/dist/apps/routes/routes/quotes.d.ts +90 -0
  166. package/dist/apps/routes/routes/quotes.d.ts.map +1 -1
  167. package/dist/apps/routes/routes/quotes.js +101 -27
  168. package/dist/apps/routes/routes/quotes.js.map +1 -1
  169. package/dist/apps/routes/routes/transfers.d.ts +187 -135
  170. package/dist/apps/routes/routes/transfers.d.ts.map +1 -1
  171. package/dist/apps/routes/routes/transfers.js +182 -37
  172. package/dist/apps/routes/routes/transfers.js.map +1 -1
  173. package/dist/cli/ApiKeys.d.ts +120 -0
  174. package/dist/cli/ApiKeys.d.ts.map +1 -0
  175. package/dist/cli/ApiKeys.js +138 -0
  176. package/dist/cli/ApiKeys.js.map +1 -0
  177. package/dist/cli/Cli.d.ts +92 -34
  178. package/dist/cli/Cli.d.ts.map +1 -1
  179. package/dist/cli/Cli.js +188 -11
  180. package/dist/cli/Cli.js.map +1 -1
  181. package/dist/cli/Credentials.d.ts +95 -0
  182. package/dist/cli/Credentials.d.ts.map +1 -0
  183. package/dist/cli/Credentials.js +110 -0
  184. package/dist/cli/Credentials.js.map +1 -0
  185. package/dist/cli/Spec.d.ts +59 -0
  186. package/dist/cli/Spec.d.ts.map +1 -0
  187. package/dist/cli/Spec.js +77 -0
  188. package/dist/cli/Spec.js.map +1 -0
  189. package/dist/cli/bin.js +5 -1
  190. package/dist/cli/bin.js.map +1 -1
  191. package/dist/cli/commands/admin.d.ts +5 -5
  192. package/dist/cli/commands/admin.d.ts.map +1 -1
  193. package/dist/cli/commands/auth.d.ts +73 -0
  194. package/dist/cli/commands/auth.d.ts.map +1 -0
  195. package/dist/cli/commands/auth.js +204 -0
  196. package/dist/cli/commands/auth.js.map +1 -0
  197. package/dist/cli/commands/keys.d.ts +17 -0
  198. package/dist/cli/commands/keys.d.ts.map +1 -0
  199. package/dist/cli/commands/keys.js +109 -0
  200. package/dist/cli/commands/keys.js.map +1 -0
  201. package/dist/cloudflare.d.ts +27 -2
  202. package/dist/cloudflare.d.ts.map +1 -1
  203. package/dist/cloudflare.js +144 -17
  204. package/dist/cloudflare.js.map +1 -1
  205. package/dist/db/Db.d.ts +23 -0
  206. package/dist/db/Db.d.ts.map +1 -1
  207. package/dist/db/Db.js +418 -1
  208. package/dist/db/Db.js.map +1 -1
  209. package/dist/db/Schema.d.ts +44 -1
  210. package/dist/db/Schema.d.ts.map +1 -1
  211. package/dist/db/Schema.js +56 -3
  212. package/dist/db/Schema.js.map +1 -1
  213. package/dist/db/tables/apiKeyAdmissions.d.ts +28 -2
  214. package/dist/db/tables/apiKeyAdmissions.d.ts.map +1 -1
  215. package/dist/db/tables/apiKeyAdmissions.js +65 -9
  216. package/dist/db/tables/apiKeyAdmissions.js.map +1 -1
  217. package/dist/db/tables/apiKeyOwnerTombstones.d.ts +2 -0
  218. package/dist/db/tables/apiKeyOwnerTombstones.d.ts.map +1 -1
  219. package/dist/db/tables/apiKeyOwnerTombstones.js +2 -2
  220. package/dist/db/tables/apiKeyOwnerTombstones.js.map +1 -1
  221. package/dist/db/tables/authAccounts.d.ts.map +1 -1
  222. package/dist/db/tables/authAccounts.js +1 -0
  223. package/dist/db/tables/authAccounts.js.map +1 -1
  224. package/dist/db/tables/earnVaults.d.ts +5 -1
  225. package/dist/db/tables/earnVaults.d.ts.map +1 -1
  226. package/dist/db/tables/earnVaults.js +12 -1
  227. package/dist/db/tables/earnVaults.js.map +1 -1
  228. package/dist/db/tables/organizations.d.ts +4 -2
  229. package/dist/db/tables/organizations.d.ts.map +1 -1
  230. package/dist/db/tables/organizations.js +8 -34
  231. package/dist/db/tables/organizations.js.map +1 -1
  232. package/dist/db/tables/requestUsage.d.ts +5 -1
  233. package/dist/db/tables/requestUsage.d.ts.map +1 -1
  234. package/dist/db/tables/requestUsage.js +10 -2
  235. package/dist/db/tables/requestUsage.js.map +1 -1
  236. package/dist/db/tables/rewardEligibilityAssociations.d.ts +13 -0
  237. package/dist/db/tables/rewardEligibilityAssociations.d.ts.map +1 -1
  238. package/dist/db/tables/rewardEligibilityAssociations.js +11 -0
  239. package/dist/db/tables/rewardEligibilityAssociations.js.map +1 -1
  240. package/dist/db/tables/rewardRuns.d.ts.map +1 -1
  241. package/dist/db/tables/rewardRuns.js +4 -0
  242. package/dist/db/tables/rewardRuns.js.map +1 -1
  243. package/dist/db/tables/rewardTransactionAttempts.d.ts.map +1 -1
  244. package/dist/db/tables/rewardTransactionAttempts.js +2 -0
  245. package/dist/db/tables/rewardTransactionAttempts.js.map +1 -1
  246. package/dist/db/tables/routesDepositAddresses.d.ts +29 -0
  247. package/dist/db/tables/routesDepositAddresses.d.ts.map +1 -1
  248. package/dist/db/tables/routesDepositAddresses.js +84 -31
  249. package/dist/db/tables/routesDepositAddresses.js.map +1 -1
  250. package/dist/db/tables/routesDeposits.d.ts.map +1 -1
  251. package/dist/db/tables/routesDeposits.js +31 -21
  252. package/dist/db/tables/routesDeposits.js.map +1 -1
  253. package/dist/db/tables/routesIdempotency.d.ts.map +1 -1
  254. package/dist/db/tables/routesIdempotency.js +2 -0
  255. package/dist/db/tables/routesIdempotency.js.map +1 -1
  256. package/dist/db/tables/routesPolicies.d.ts +58 -0
  257. package/dist/db/tables/routesPolicies.d.ts.map +1 -0
  258. package/dist/db/tables/routesPolicies.js +198 -0
  259. package/dist/db/tables/routesPolicies.js.map +1 -0
  260. package/dist/db/tables/routesTransferSubsidies.d.ts +22 -0
  261. package/dist/db/tables/routesTransferSubsidies.d.ts.map +1 -1
  262. package/dist/db/tables/routesTransferSubsidies.js +41 -0
  263. package/dist/db/tables/routesTransferSubsidies.js.map +1 -1
  264. package/dist/db/tables/routesTransferSubsidyNonces.d.ts.map +1 -1
  265. package/dist/db/tables/routesTransferSubsidyNonces.js +12 -4
  266. package/dist/db/tables/routesTransferSubsidyNonces.js.map +1 -1
  267. package/dist/db/tables/routesTransfers.d.ts +26 -1
  268. package/dist/db/tables/routesTransfers.d.ts.map +1 -1
  269. package/dist/db/tables/routesTransfers.js +36 -6
  270. package/dist/db/tables/routesTransfers.js.map +1 -1
  271. package/dist/db/tables/sponsoredTransactions.d.ts +45 -13
  272. package/dist/db/tables/sponsoredTransactions.d.ts.map +1 -1
  273. package/dist/db/tables/sponsoredTransactions.js +144 -33
  274. package/dist/db/tables/sponsoredTransactions.js.map +1 -1
  275. package/dist/db/tables/users.d.ts +2 -0
  276. package/dist/db/tables/users.d.ts.map +1 -1
  277. package/dist/db/tables/users.js +11 -0
  278. package/dist/db/tables/users.js.map +1 -1
  279. package/dist/db/tables/verifiedTokenRequests.d.ts +21 -4
  280. package/dist/db/tables/verifiedTokenRequests.d.ts.map +1 -1
  281. package/dist/db/tables/verifiedTokenRequests.js +65 -44
  282. package/dist/db/tables/verifiedTokenRequests.js.map +1 -1
  283. package/dist/handlers/internal/multisig.d.ts +1 -1
  284. package/dist/handlers/internal/multisig.d.ts.map +1 -1
  285. package/dist/handlers/internal/multisig.js +3 -2
  286. package/dist/handlers/internal/multisig.js.map +1 -1
  287. package/dist/handlers/relay.d.ts +2 -0
  288. package/dist/handlers/relay.d.ts.map +1 -1
  289. package/dist/handlers/relay.js +34 -15
  290. package/dist/handlers/relay.js.map +1 -1
  291. package/dist/internal/Auth.d.ts +73 -6
  292. package/dist/internal/Auth.d.ts.map +1 -1
  293. package/dist/internal/Auth.js +212 -85
  294. package/dist/internal/Auth.js.map +1 -1
  295. package/dist/internal/BetterAuth.d.ts +22 -0
  296. package/dist/internal/BetterAuth.d.ts.map +1 -1
  297. package/dist/internal/BetterAuth.js +17 -14
  298. package/dist/internal/BetterAuth.js.map +1 -1
  299. package/dist/internal/Cache.d.ts +5 -0
  300. package/dist/internal/Cache.d.ts.map +1 -1
  301. package/dist/internal/Cache.js +3 -1
  302. package/dist/internal/Cache.js.map +1 -1
  303. package/dist/internal/CliAuth.d.ts +243 -0
  304. package/dist/internal/CliAuth.d.ts.map +1 -0
  305. package/dist/internal/CliAuth.js +249 -0
  306. package/dist/internal/CliAuth.js.map +1 -0
  307. package/dist/internal/EarnSharePrices.d.ts +1 -1
  308. package/dist/internal/EarnSharePrices.d.ts.map +1 -1
  309. package/dist/internal/EarnSharePrices.js +7 -3
  310. package/dist/internal/EarnSharePrices.js.map +1 -1
  311. package/dist/internal/EarnVaults.d.ts +47 -0
  312. package/dist/internal/EarnVaults.d.ts.map +1 -1
  313. package/dist/internal/EarnVaults.js +188 -4
  314. package/dist/internal/EarnVaults.js.map +1 -1
  315. package/dist/internal/EarnWithdrawals.d.ts +73 -0
  316. package/dist/internal/EarnWithdrawals.d.ts.map +1 -0
  317. package/dist/internal/EarnWithdrawals.js +189 -0
  318. package/dist/internal/EarnWithdrawals.js.map +1 -0
  319. package/dist/internal/ExecutionContext.d.ts +21 -0
  320. package/dist/internal/ExecutionContext.d.ts.map +1 -0
  321. package/dist/internal/ExecutionContext.js +16 -0
  322. package/dist/internal/ExecutionContext.js.map +1 -0
  323. package/dist/internal/Log.d.ts +7 -3
  324. package/dist/internal/Log.d.ts.map +1 -1
  325. package/dist/internal/Log.js +163 -130
  326. package/dist/internal/Log.js.map +1 -1
  327. package/dist/internal/MetricSink.d.ts.map +1 -1
  328. package/dist/internal/MetricSink.js +26 -1
  329. package/dist/internal/MetricSink.js.map +1 -1
  330. package/dist/internal/RateLimit.d.ts +67 -0
  331. package/dist/internal/RateLimit.d.ts.map +1 -1
  332. package/dist/internal/RateLimit.js +174 -27
  333. package/dist/internal/RateLimit.js.map +1 -1
  334. package/dist/internal/Store.d.ts +6 -0
  335. package/dist/internal/Store.d.ts.map +1 -1
  336. package/dist/internal/Store.js +4 -5
  337. package/dist/internal/Store.js.map +1 -1
  338. package/dist/internal/Timing.d.ts +6 -0
  339. package/dist/internal/Timing.d.ts.map +1 -1
  340. package/dist/internal/Timing.js +21 -1
  341. package/dist/internal/Timing.js.map +1 -1
  342. package/dist/internal/Tron.d.ts +124 -0
  343. package/dist/internal/Tron.d.ts.map +1 -0
  344. package/dist/internal/Tron.js +202 -0
  345. package/dist/internal/Tron.js.map +1 -0
  346. package/dist/internal/Viem.d.ts +4 -0
  347. package/dist/internal/Viem.d.ts.map +1 -1
  348. package/dist/internal/Viem.js +25 -6
  349. package/dist/internal/Viem.js.map +1 -1
  350. package/dist/internal/rewards/Read.d.ts +2 -2
  351. package/dist/internal/rewards/Read.d.ts.map +1 -1
  352. package/dist/internal/rewards/Read.js +11 -2
  353. package/dist/internal/rewards/Read.js.map +1 -1
  354. package/dist/internal/routes/Action.d.ts +27 -0
  355. package/dist/internal/routes/Action.d.ts.map +1 -1
  356. package/dist/internal/routes/Action.js +49 -1
  357. package/dist/internal/routes/Action.js.map +1 -1
  358. package/dist/internal/routes/Chain.d.ts +2 -0
  359. package/dist/internal/routes/Chain.d.ts.map +1 -1
  360. package/dist/internal/routes/Chain.js +4 -0
  361. package/dist/internal/routes/Chain.js.map +1 -1
  362. package/dist/internal/routes/DepositAddress.d.ts.map +1 -1
  363. package/dist/internal/routes/DepositAddress.js +5 -0
  364. package/dist/internal/routes/DepositAddress.js.map +1 -1
  365. package/dist/internal/routes/Evidence.d.ts.map +1 -1
  366. package/dist/internal/routes/Evidence.js +6 -2
  367. package/dist/internal/routes/Evidence.js.map +1 -1
  368. package/dist/internal/routes/EvmTransferSettlement.d.ts +17 -0
  369. package/dist/internal/routes/EvmTransferSettlement.d.ts.map +1 -0
  370. package/dist/internal/routes/EvmTransferSettlement.js +196 -0
  371. package/dist/internal/routes/EvmTransferSettlement.js.map +1 -0
  372. package/dist/internal/routes/Policy.d.ts +161 -0
  373. package/dist/internal/routes/Policy.d.ts.map +1 -0
  374. package/dist/internal/routes/Policy.js +249 -0
  375. package/dist/internal/routes/Policy.js.map +1 -0
  376. package/dist/internal/routes/Provider.d.ts +66 -3
  377. package/dist/internal/routes/Provider.d.ts.map +1 -1
  378. package/dist/internal/routes/Provider.js +106 -27
  379. package/dist/internal/routes/Provider.js.map +1 -1
  380. package/dist/internal/routes/Quota.d.ts +57 -0
  381. package/dist/internal/routes/Quota.d.ts.map +1 -0
  382. package/dist/internal/routes/Quota.js +144 -0
  383. package/dist/internal/routes/Quota.js.map +1 -0
  384. package/dist/internal/routes/Reconciliation.d.ts.map +1 -1
  385. package/dist/internal/routes/Reconciliation.js +163 -47
  386. package/dist/internal/routes/Reconciliation.js.map +1 -1
  387. package/dist/internal/routes/SolanaTransferSettlement.d.ts +12 -0
  388. package/dist/internal/routes/SolanaTransferSettlement.d.ts.map +1 -0
  389. package/dist/internal/routes/SolanaTransferSettlement.js +220 -0
  390. package/dist/internal/routes/SolanaTransferSettlement.js.map +1 -0
  391. package/dist/internal/routes/SolanaTransferSubsidy.d.ts +172 -0
  392. package/dist/internal/routes/SolanaTransferSubsidy.d.ts.map +1 -0
  393. package/dist/internal/routes/SolanaTransferSubsidy.js +564 -0
  394. package/dist/internal/routes/SolanaTransferSubsidy.js.map +1 -0
  395. package/dist/internal/routes/Subsidy.d.ts +2 -2
  396. package/dist/internal/routes/Subsidy.d.ts.map +1 -1
  397. package/dist/internal/routes/Subsidy.js +2 -2
  398. package/dist/internal/routes/Subsidy.js.map +1 -1
  399. package/dist/internal/routes/Transfer.d.ts +229 -1
  400. package/dist/internal/routes/Transfer.d.ts.map +1 -1
  401. package/dist/internal/routes/Transfer.js +644 -7
  402. package/dist/internal/routes/Transfer.js.map +1 -1
  403. package/dist/internal/routes/TransferReconciliation.d.ts +6 -0
  404. package/dist/internal/routes/TransferReconciliation.d.ts.map +1 -1
  405. package/dist/internal/routes/TransferReconciliation.js +83 -159
  406. package/dist/internal/routes/TransferReconciliation.js.map +1 -1
  407. package/dist/internal/routes/TransferSettlement.d.ts +45 -0
  408. package/dist/internal/routes/TransferSettlement.d.ts.map +1 -0
  409. package/dist/internal/routes/TransferSettlement.js +2 -0
  410. package/dist/internal/routes/TransferSettlement.js.map +1 -0
  411. package/dist/internal/routes/TransferSubsidy.d.ts +23 -8
  412. package/dist/internal/routes/TransferSubsidy.d.ts.map +1 -1
  413. package/dist/internal/routes/TransferSubsidy.js +64 -5
  414. package/dist/internal/routes/TransferSubsidy.js.map +1 -1
  415. package/dist/internal/routes/TronTransferSettlement.d.ts +12 -0
  416. package/dist/internal/routes/TronTransferSettlement.d.ts.map +1 -0
  417. package/dist/internal/routes/TronTransferSettlement.js +201 -0
  418. package/dist/internal/routes/TronTransferSettlement.js.map +1 -0
  419. package/dist/internal/routes/TronTransferSubsidy.d.ts +174 -0
  420. package/dist/internal/routes/TronTransferSubsidy.d.ts.map +1 -0
  421. package/dist/internal/routes/TronTransferSubsidy.js +439 -0
  422. package/dist/internal/routes/TronTransferSubsidy.js.map +1 -0
  423. package/dist/internal/routes/index.d.ts +3 -0
  424. package/dist/internal/routes/index.d.ts.map +1 -1
  425. package/dist/internal/routes/index.js +3 -0
  426. package/dist/internal/routes/index.js.map +1 -1
  427. package/dist/internal/routes/providers/across.d.ts +3 -0
  428. package/dist/internal/routes/providers/across.d.ts.map +1 -1
  429. package/dist/internal/routes/providers/across.js +11 -0
  430. package/dist/internal/routes/providers/across.js.map +1 -1
  431. package/dist/internal/routes/providers/legacyMesh.d.ts +29 -0
  432. package/dist/internal/routes/providers/legacyMesh.d.ts.map +1 -0
  433. package/dist/internal/routes/providers/legacyMesh.js +474 -0
  434. package/dist/internal/routes/providers/legacyMesh.js.map +1 -0
  435. package/dist/internal/routes/providers/legacyMeshDelivery.d.ts +59 -0
  436. package/dist/internal/routes/providers/legacyMeshDelivery.d.ts.map +1 -0
  437. package/dist/internal/routes/providers/legacyMeshDelivery.js +229 -0
  438. package/dist/internal/routes/providers/legacyMeshDelivery.js.map +1 -0
  439. package/dist/internal/routes/providers/legacyMeshOutbound.d.ts +19 -0
  440. package/dist/internal/routes/providers/legacyMeshOutbound.d.ts.map +1 -0
  441. package/dist/internal/routes/providers/legacyMeshOutbound.js +457 -0
  442. package/dist/internal/routes/providers/legacyMeshOutbound.js.map +1 -0
  443. package/dist/internal/routes/providers/legacyMeshOutboundDelivery.d.ts +123 -0
  444. package/dist/internal/routes/providers/legacyMeshOutboundDelivery.d.ts.map +1 -0
  445. package/dist/internal/routes/providers/legacyMeshOutboundDelivery.js +333 -0
  446. package/dist/internal/routes/providers/legacyMeshOutboundDelivery.js.map +1 -0
  447. package/dist/internal/routes/providers/propAmm.d.ts +70 -0
  448. package/dist/internal/routes/providers/propAmm.d.ts.map +1 -0
  449. package/dist/internal/routes/providers/propAmm.js +524 -0
  450. package/dist/internal/routes/providers/propAmm.js.map +1 -0
  451. package/dist/internal/routes/providers/relay.d.ts +4 -1
  452. package/dist/internal/routes/providers/relay.d.ts.map +1 -1
  453. package/dist/internal/routes/providers/relay.js +353 -42
  454. package/dist/internal/routes/providers/relay.js.map +1 -1
  455. package/dist/internal/routes/providers/rhino.d.ts +3 -0
  456. package/dist/internal/routes/providers/rhino.d.ts.map +1 -1
  457. package/dist/internal/routes/providers/rhino.js +11 -0
  458. package/dist/internal/routes/providers/rhino.js.map +1 -1
  459. package/dist/internal/routes/providers/squid.d.ts +3 -0
  460. package/dist/internal/routes/providers/squid.d.ts.map +1 -1
  461. package/dist/internal/routes/providers/squid.js +19 -0
  462. package/dist/internal/routes/providers/squid.js.map +1 -1
  463. package/dist/internal/routes/providers/stargate.d.ts.map +1 -1
  464. package/dist/internal/routes/providers/stargate.js +22 -9
  465. package/dist/internal/routes/providers/stargate.js.map +1 -1
  466. package/dist/internal/routes/providers/symbiosis.d.ts.map +1 -1
  467. package/dist/internal/routes/providers/symbiosis.js +13 -17
  468. package/dist/internal/routes/providers/symbiosis.js.map +1 -1
  469. package/dist/providers/index.d.ts +14 -0
  470. package/dist/providers/index.d.ts.map +1 -1
  471. package/dist/providers/index.js +6 -0
  472. package/dist/providers/index.js.map +1 -1
  473. package/package.json +16 -6
  474. package/src/ApiKey.ts +7 -3
  475. package/src/ApiKeys.test.ts +652 -8
  476. package/src/ApiKeys.ts +191 -11
  477. package/src/App.test.ts +405 -18
  478. package/src/App.ts +51 -15
  479. package/src/Client.test-d.ts +157 -10
  480. package/src/Client.test.ts +4 -4
  481. package/src/Scope.ts +1 -2
  482. package/src/admin/App.ts +11 -5
  483. package/src/admin/apps/api-keys.test.ts +98 -2
  484. package/src/admin/apps/api-keys.ts +21 -12
  485. package/src/admin/apps/earn-vaults.test.ts +76 -7
  486. package/src/admin/apps/earn-vaults.ts +47 -8
  487. package/src/admin/apps/organizations.test.ts +147 -31
  488. package/src/admin/apps/organizations.ts +5 -4
  489. package/src/admin/apps/route-policies.test.ts +220 -0
  490. package/src/admin/apps/route-policies.ts +322 -0
  491. package/src/admin/apps/routes-support.test.ts +107 -2
  492. package/src/admin/apps/routes-support.ts +43 -3
  493. package/src/admin/apps/routes.test.ts +150 -0
  494. package/src/admin/apps/routes.ts +97 -1
  495. package/src/admin/apps/scopes.test.ts +1 -1
  496. package/src/admin/apps/verified-tokens.test.ts +32 -0
  497. package/src/admin/apps/verified-tokens.ts +30 -4
  498. package/src/admin/index.ts +0 -1
  499. package/src/admin/ui/plugin.ts +2 -1
  500. package/src/admin/ui/src/components/Dialog.tsx +1 -1
  501. package/src/admin/ui/src/components/EarnVaultForm.tsx +45 -0
  502. package/src/admin/ui/src/components/RoutePicker.tsx +79 -0
  503. package/src/admin/ui/src/lib/earn-vaults.ts +1 -1
  504. package/src/admin/ui/src/lib/route-policies.test.ts +452 -0
  505. package/src/admin/ui/src/lib/route-policies.ts +232 -0
  506. package/src/admin/ui/src/lib/routes.ts +34 -0
  507. package/src/admin/ui/src/lib/verified-tokens.ts +24 -9
  508. package/src/admin/ui/src/routeTree.gen.ts +21 -0
  509. package/src/admin/ui/src/routes/__root.tsx +1 -1
  510. package/src/admin/ui/src/routes/api-keys.tsx +21 -2
  511. package/src/admin/ui/src/routes/early-access.tsx +1 -0
  512. package/src/admin/ui/src/routes/earn.vaults.tsx +1 -0
  513. package/src/admin/ui/src/routes/earn.vaults_.$vaultId.edit.tsx +22 -0
  514. package/src/admin/ui/src/routes/earn.vaults_.new.tsx +10 -0
  515. package/src/admin/ui/src/routes/organizations.tsx +35 -4
  516. package/src/admin/ui/src/routes/organizations_.$orgId.tsx +18 -3
  517. package/src/admin/ui/src/routes/route-policies.tsx +678 -0
  518. package/src/admin/ui/src/routes/routes.tsx +85 -2
  519. package/src/admin/ui/src/routes/routes_.support.tsx +6 -22
  520. package/src/admin/ui/src/routes/subsidies.tsx +1 -0
  521. package/src/admin/ui/src/routes/verified-tokens.tsx +65 -20
  522. package/src/admin/ui.generated.ts +99 -104
  523. package/src/analytics/Analytics.test.ts +4 -50
  524. package/src/analytics/Analytics.ts +65 -1
  525. package/src/analytics/tables/requestEvents.test.ts +402 -1
  526. package/src/analytics/tables/requestEvents.ts +62 -93
  527. package/src/apps/data/App.test.ts +26 -0
  528. package/src/apps/data/routes/activities.test.ts +315 -14
  529. package/src/apps/data/routes/activities.ts +60 -0
  530. package/src/apps/data/routes/balances.ts +5 -7
  531. package/src/apps/data/routes/earn.bench.ts +18 -0
  532. package/src/apps/data/routes/earn.local.test.ts +507 -0
  533. package/src/apps/data/routes/earn.test.ts +405 -127
  534. package/src/apps/data/routes/earn.ts +660 -270
  535. package/src/apps/data/routes/exchanges.bench.ts +3 -1
  536. package/src/apps/data/routes/exchanges.test.ts +166 -2
  537. package/src/apps/data/routes/exchanges.ts +308 -101
  538. package/src/apps/data/routes/fee-amm.test.ts +153 -2
  539. package/src/apps/data/routes/fee-amm.ts +132 -62
  540. package/src/apps/data/routes/receipts.test.ts +21 -18
  541. package/src/apps/data/routes/rpc.test.ts +34 -2
  542. package/src/apps/data/routes/rpc.ts +47 -10
  543. package/src/apps/data/routes/tokens.provenance.test.ts +157 -0
  544. package/src/apps/data/routes/tokens.test.ts +4 -4
  545. package/src/apps/data/routes/tokens.ts +11 -6
  546. package/src/apps/data/routes/transactions.test.ts +29 -0
  547. package/src/apps/data/routes/transactions.ts +33 -22
  548. package/src/apps/data/routes/webhooks.scan.test.ts +29 -0
  549. package/src/apps/data/routes/webhooks.test.ts +18 -3
  550. package/src/apps/data/routes/webhooks.ts +27 -13
  551. package/src/apps/management/App.ts +4 -0
  552. package/src/apps/management/Billing.test.ts +253 -27
  553. package/src/apps/management/Billing.ts +83 -29
  554. package/src/apps/management/routes/api-keys.test.ts +1 -1
  555. package/src/apps/management/routes/api-keys.ts +85 -11
  556. package/src/apps/management/routes/billing.test.ts +68 -4
  557. package/src/apps/management/routes/cli.test.ts +370 -0
  558. package/src/apps/management/routes/cli.ts +533 -0
  559. package/src/apps/management/routes/me.test.ts +14 -4
  560. package/src/apps/management/routes/orgs.test.ts +108 -4
  561. package/src/apps/management/routes/orgs.ts +7 -2
  562. package/src/apps/management/routes/usage.test.ts +2 -2
  563. package/src/apps/management/routes/verified-token-requests.test.ts +16 -2
  564. package/src/apps/management/routes/verified-token-requests.ts +7 -10
  565. package/src/apps/mcp.test.ts +108 -25
  566. package/src/apps/mcp.ts +15 -3
  567. package/src/apps/mpp/internal/Policy.test.ts +51 -4
  568. package/src/apps/mpp/internal/Policy.ts +6 -2
  569. package/src/apps/mpp/internal/Sponsorship.test.ts +29 -0
  570. package/src/apps/mpp/internal/Sponsorship.ts +6 -4
  571. package/src/apps/relay/App.test.ts +85 -1
  572. package/src/apps/relay/App.ts +28 -4
  573. package/src/apps/relay/Sponsorships.test.ts +97 -1
  574. package/src/apps/relay/Sponsorships.ts +77 -66
  575. package/src/apps/routes/Access.test.ts +319 -0
  576. package/src/apps/routes/Access.ts +147 -0
  577. package/src/apps/routes/App.ts +10 -0
  578. package/src/apps/routes/routes/chains.test.ts +3 -2
  579. package/src/apps/routes/routes/deposit-addresses.test.ts +978 -34
  580. package/src/apps/routes/routes/deposit-addresses.ts +243 -32
  581. package/src/apps/routes/routes/propAmm.local.test.ts +951 -0
  582. package/src/apps/routes/routes/quotes.test.ts +81 -8
  583. package/src/apps/routes/routes/quotes.ts +109 -27
  584. package/src/apps/routes/routes/transfers.test.ts +252 -15
  585. package/src/apps/routes/routes/transfers.ts +212 -33
  586. package/src/cli/ApiKeys.test.ts +265 -0
  587. package/src/cli/ApiKeys.ts +189 -0
  588. package/src/cli/Cli.test.ts +188 -0
  589. package/src/cli/Cli.ts +280 -12
  590. package/src/cli/Credentials.test.ts +122 -0
  591. package/src/cli/Credentials.ts +144 -0
  592. package/src/cli/Spec.test.ts +133 -0
  593. package/src/cli/Spec.ts +132 -0
  594. package/src/cli/bin.test.ts +49 -0
  595. package/src/cli/bin.ts +5 -1
  596. package/src/cli/commands/auth.test.ts +138 -0
  597. package/src/cli/commands/auth.ts +254 -0
  598. package/src/cli/commands/keys.test.ts +68 -0
  599. package/src/cli/commands/keys.ts +125 -0
  600. package/src/cloudflare.ts +184 -36
  601. package/src/db/Db.test.ts +877 -0
  602. package/src/db/Db.ts +507 -1
  603. package/src/db/Schema.ts +75 -4
  604. package/src/db/tables/apiKeyAdmissions.test.ts +57 -0
  605. package/src/db/tables/apiKeyAdmissions.ts +101 -11
  606. package/src/db/tables/apiKeyOwnerTombstones.ts +2 -2
  607. package/src/db/tables/authAccounts.test.ts +30 -0
  608. package/src/db/tables/authAccounts.ts +1 -0
  609. package/src/db/tables/earnVaults.test.ts +34 -0
  610. package/src/db/tables/earnVaults.ts +17 -2
  611. package/src/db/tables/organizations.test.ts +148 -84
  612. package/src/db/tables/organizations.ts +11 -43
  613. package/src/db/tables/requestUsage.ts +13 -2
  614. package/src/db/tables/rewardCampaigns.test.ts +163 -0
  615. package/src/db/tables/rewardEligibilityAssociations.test.ts +14 -0
  616. package/src/db/tables/rewardEligibilityAssociations.ts +24 -0
  617. package/src/db/tables/rewardRuns.ts +4 -0
  618. package/src/db/tables/rewardTransactionAttempts.ts +2 -0
  619. package/src/db/tables/routesDepositAddresses.test.ts +263 -0
  620. package/src/db/tables/routesDepositAddresses.ts +118 -34
  621. package/src/db/tables/routesDeposits.test.ts +133 -0
  622. package/src/db/tables/routesDeposits.ts +47 -26
  623. package/src/db/tables/routesIdempotency.test.ts +80 -0
  624. package/src/db/tables/routesIdempotency.ts +2 -0
  625. package/src/db/tables/routesPolicies.test.ts +143 -0
  626. package/src/db/tables/routesPolicies.ts +251 -0
  627. package/src/db/tables/routesTransferSubsidies.ts +64 -0
  628. package/src/db/tables/routesTransferSubsidyNonces.ts +16 -4
  629. package/src/db/tables/routesTransfers.test.ts +183 -2
  630. package/src/db/tables/routesTransfers.ts +65 -6
  631. package/src/db/tables/sponsoredTransactions.test.ts +351 -76
  632. package/src/db/tables/sponsoredTransactions.ts +182 -38
  633. package/src/db/tables/users.test.ts +51 -0
  634. package/src/db/tables/users.ts +12 -0
  635. package/src/db/tables/verifiedTokenRequests.test.ts +39 -20
  636. package/src/db/tables/verifiedTokenRequests.ts +80 -44
  637. package/src/handlers/internal/multisig.store.test.ts +120 -0
  638. package/src/handlers/internal/multisig.test.ts +389 -0
  639. package/src/handlers/internal/multisig.ts +13 -10
  640. package/src/handlers/relay.test.ts +259 -83
  641. package/src/handlers/relay.ts +36 -17
  642. package/src/internal/Auth.test.ts +383 -8
  643. package/src/internal/Auth.ts +272 -99
  644. package/src/internal/BetterAuth.test.ts +58 -22
  645. package/src/internal/BetterAuth.ts +23 -17
  646. package/src/internal/Cache.ts +3 -1
  647. package/src/internal/CliAuth.test.ts +279 -0
  648. package/src/internal/CliAuth.ts +319 -0
  649. package/src/internal/EarnSharePrices.test.ts +25 -0
  650. package/src/internal/EarnSharePrices.ts +9 -2
  651. package/src/internal/EarnVaults.test.ts +67 -0
  652. package/src/internal/EarnVaults.ts +299 -4
  653. package/src/internal/EarnWithdrawals.test.ts +315 -0
  654. package/src/internal/EarnWithdrawals.ts +266 -0
  655. package/src/internal/ExecutionContext.ts +31 -0
  656. package/src/internal/Log.test.ts +210 -0
  657. package/src/internal/Log.ts +180 -142
  658. package/src/internal/MetricSink.test.ts +190 -15
  659. package/src/internal/MetricSink.ts +27 -1
  660. package/src/internal/RateLimit.test.ts +144 -8
  661. package/src/internal/RateLimit.ts +254 -26
  662. package/src/internal/Store.ts +4 -5
  663. package/src/internal/Timing.test.ts +32 -0
  664. package/src/internal/Timing.ts +20 -1
  665. package/src/internal/Tron.test-d.ts +22 -0
  666. package/src/internal/Tron.test.ts +94 -0
  667. package/src/internal/Tron.ts +289 -0
  668. package/src/internal/Viem.rpc.test.ts +76 -0
  669. package/src/internal/Viem.ts +29 -6
  670. package/src/internal/rewards/Read.test.ts +109 -0
  671. package/src/internal/rewards/Read.ts +13 -4
  672. package/src/internal/routes/Action.test.ts +70 -0
  673. package/src/internal/routes/Action.ts +76 -1
  674. package/src/internal/routes/Chain.test.ts +18 -0
  675. package/src/internal/routes/Chain.ts +5 -0
  676. package/src/internal/routes/DepositAddress.ts +5 -0
  677. package/src/internal/routes/Evidence.test.ts +64 -0
  678. package/src/internal/routes/Evidence.ts +11 -3
  679. package/src/internal/routes/EvmTransferSettlement.ts +213 -0
  680. package/src/internal/routes/Policy.test.ts +316 -0
  681. package/src/internal/routes/Policy.ts +399 -0
  682. package/src/internal/routes/Provider.test.ts +103 -2
  683. package/src/internal/routes/Provider.ts +149 -27
  684. package/src/internal/routes/Quota.test.ts +149 -0
  685. package/src/internal/routes/Quota.ts +226 -0
  686. package/src/internal/routes/Reconciliation.local.test.ts +285 -0
  687. package/src/internal/routes/Reconciliation.test.ts +371 -13
  688. package/src/internal/routes/Reconciliation.ts +193 -42
  689. package/src/internal/routes/SolanaTransferSettlement.ts +232 -0
  690. package/src/internal/routes/SolanaTransferSubsidy.test.ts +471 -0
  691. package/src/internal/routes/SolanaTransferSubsidy.ts +760 -0
  692. package/src/internal/routes/SourceObservation.test.ts +221 -0
  693. package/src/internal/routes/Subsidy.local.test.ts +46 -0
  694. package/src/internal/routes/Subsidy.ts +4 -2
  695. package/src/internal/routes/Transfer.solana.test.ts +389 -0
  696. package/src/internal/routes/Transfer.test.ts +130 -1
  697. package/src/internal/routes/Transfer.tron.test.ts +172 -0
  698. package/src/internal/routes/Transfer.ts +866 -8
  699. package/src/internal/routes/TransferReconciliation.test.ts +26 -4
  700. package/src/internal/routes/TransferReconciliation.ts +91 -166
  701. package/src/internal/routes/TransferSettlement.ts +48 -0
  702. package/src/internal/routes/TransferSubsidy.local.test.ts +143 -0
  703. package/src/internal/routes/TransferSubsidy.test.ts +34 -4
  704. package/src/internal/routes/TransferSubsidy.ts +87 -12
  705. package/src/internal/routes/TronTransferSettlement.ts +212 -0
  706. package/src/internal/routes/TronTransferSubsidy.test.ts +109 -0
  707. package/src/internal/routes/TronTransferSubsidy.ts +619 -0
  708. package/src/internal/routes/index.test.ts +3 -0
  709. package/src/internal/routes/index.ts +3 -0
  710. package/src/internal/routes/providers/across.ts +13 -0
  711. package/src/internal/routes/providers/index.test.ts +141 -0
  712. package/src/internal/routes/providers/legacyMesh.test.ts +484 -0
  713. package/src/internal/routes/providers/legacyMesh.ts +633 -0
  714. package/src/internal/routes/providers/legacyMeshDelivery.test.ts +306 -0
  715. package/src/internal/routes/providers/legacyMeshDelivery.ts +320 -0
  716. package/src/internal/routes/providers/legacyMeshOutbound.test.ts +401 -0
  717. package/src/internal/routes/providers/legacyMeshOutbound.ts +566 -0
  718. package/src/internal/routes/providers/legacyMeshOutboundDelivery.ts +473 -0
  719. package/src/internal/routes/providers/propAmm.ts +640 -0
  720. package/src/internal/routes/providers/relay.test.ts +1299 -18
  721. package/src/internal/routes/providers/relay.ts +424 -39
  722. package/src/internal/routes/providers/rhino.ts +14 -1
  723. package/src/internal/routes/providers/squid.ts +21 -0
  724. package/src/internal/routes/providers/stargate.test.ts +105 -1
  725. package/src/internal/routes/providers/stargate.ts +22 -9
  726. package/src/internal/routes/providers/symbiosis.ts +13 -47
  727. package/src/providers/index.test.ts +2 -0
  728. package/src/providers/index.ts +18 -0
  729. package/dist/admin/Access.d.ts +0 -39
  730. package/dist/admin/Access.d.ts.map +0 -1
  731. package/dist/admin/Access.js +0 -73
  732. package/dist/admin/Access.js.map +0 -1
  733. package/src/admin/Access.test.ts +0 -130
  734. package/src/admin/Access.ts +0 -85
@@ -5,7 +5,7 @@ import { Hash, Hex, Secp256k1 } from 'ox'
5
5
  import { ZoneRpcAuthentication } from 'ox/tempo'
6
6
  import { createClient, http } from 'viem'
7
7
  import { prepareTransactionRequest, sendRawTransactionSync, signTransaction } from 'viem/actions'
8
- import { Account as TempoAccount, Actions, Transaction, withRelay } from 'viem/tempo'
8
+ import { Account as TempoAccount, Actions, Addresses, Transaction, withRelay } from 'viem/tempo'
9
9
 
10
10
  import * as TestApp from '../../../test/App.js'
11
11
  import * as Containers from '../../../test/containers.js'
@@ -25,6 +25,7 @@ import * as SponsoredTransactions from '../../db/tables/sponsoredTransactions.js
25
25
  import * as StripeCustomers from '../../db/tables/stripeCustomers.js'
26
26
  import * as core_Billing from '../management/Billing.js'
27
27
  import * as RequestListener from '../../handlers/internal/requestListener.js'
28
+ import * as Store from '../../internal/Store.js'
28
29
  import * as Tidx from '../../internal/Tidx.js'
29
30
  import * as Viem from '../../internal/Viem.js'
30
31
  import * as Sponsorships from './Sponsorships.js'
@@ -125,6 +126,36 @@ const keys = [
125
126
  },
126
127
  ] as const satisfies readonly TestApp.kvStore.Key[]
127
128
 
129
+ describe('behavior: multisig coordination', () => {
130
+ test('uses configured state and reports coordinator failures', async () => {
131
+ const entries: Log.Entry[] = []
132
+ const store = Store.memory()
133
+ const app = TestApp.create({
134
+ auth: { keys },
135
+ logger: (entry) => void entries.push(entry),
136
+ relay: { multisig: { store } },
137
+ })
138
+ const hash = Hex.random(32)
139
+ const request = async () => {
140
+ const response = await app.request('/rpc/relay', {
141
+ body: JSON.stringify({
142
+ id: 1,
143
+ jsonrpc: '2.0',
144
+ method: 'multisig_getOperation',
145
+ params: [hash],
146
+ }),
147
+ headers: { 'content-type': 'application/json', 'tempo-api-key': 'secret_unscoped' },
148
+ method: 'POST',
149
+ })
150
+ return response.json()
151
+ }
152
+ expect(await request()).toMatchObject({ result: null })
153
+ await store.put(`multisig:v2:multisig:operation:${hash}`, 'invalid')
154
+ expect(await request()).toMatchObject({ error: { code: -32603 } })
155
+ expect(entries.at(-1)?.rpc).toMatchObject({ serverErrors: 1 })
156
+ })
157
+ })
158
+
128
159
  describe('behavior: Zone chain routing', () => {
129
160
  const zoneSelectors = [
130
161
  ['relay', 'path'],
@@ -712,6 +743,8 @@ describe.skipIf(runtime.mode !== 'localnet')('behavior: sponsorship', () => {
712
743
  "finalizationAttemptedAt": null,
713
744
  "finalizedAt": null,
714
745
  "id": "<id>",
746
+ "meterEventFirstAttemptedAt": null,
747
+ "meterReportAttemptedAt": null,
715
748
  "meterReportedAt": null,
716
749
  "orgId": "org_1",
717
750
  "projectId": "prj_1",
@@ -720,6 +753,7 @@ describe.skipIf(runtime.mode !== 'localnet')('behavior: sponsorship', () => {
720
753
  "status": "pending",
721
754
  "transaction": "<hex>",
722
755
  "transactionHash": "<hash>",
756
+ "transactionHashReconciled": false,
723
757
  }
724
758
  `)
725
759
  })
@@ -1239,6 +1273,56 @@ describe('behavior: mainnet billing gate', () => {
1239
1273
  await TestApp.verifiedSeed(db, Viem.chainId.mainnet)
1240
1274
  }
1241
1275
 
1276
+ test('behavior: uses the same sponsor fee token for each authenticated organization', async () => {
1277
+ const db = TestApp.database()
1278
+ const ousd = '0x20c0000000000000000000006a37DA5C996874BE'
1279
+ await activate(db, 'org_1')
1280
+ await activate(db, 'org_2')
1281
+ await TestApp.verifiedSeed(db, Viem.chainId.mainnet, {
1282
+ tokens: [Addresses.pathUsd, ousd].map((address) => ({
1283
+ address,
1284
+ currency: 'USD',
1285
+ decimals: 6,
1286
+ name: address === ousd ? 'OUSD' : 'pathUSD',
1287
+ symbol: address === ousd ? 'OUSD' : 'pathUSD',
1288
+ })),
1289
+ })
1290
+ const app = TestApp.create({
1291
+ auth: { keys },
1292
+ db,
1293
+ relay: {
1294
+ feePayer: {
1295
+ account: feePayerAccount,
1296
+ resolveFeeToken: ({ chainId }) => {
1297
+ expect(chainId).toBe(Viem.chainId.mainnet)
1298
+ return ousd
1299
+ },
1300
+ },
1301
+ },
1302
+ supportedChainIds: [Viem.chainId.mainnet],
1303
+ })
1304
+
1305
+ for (const [nonce, { orgId, token }] of [
1306
+ { orgId: 'org_1', token: 'secret_sponsor_prod' },
1307
+ { orgId: 'org_2', token: 'secret_wildcard_prod' },
1308
+ { orgId: 'org_1', token: 'secret_sponsor_prod' },
1309
+ ].entries()) {
1310
+ const body = await relayRequest(app, {
1311
+ method: 'eth_signRawTransaction',
1312
+ params: [await signSponsorable({ chainId: Viem.chainId.mainnet, nonce })],
1313
+ token,
1314
+ })
1315
+ expect(body.error).toBeUndefined()
1316
+ const signed = Transaction.deserialize(body.result as `0x76${string}`)
1317
+ expect(signed.feeToken?.toString().toLowerCase()).toBe(ousd.toLowerCase())
1318
+ const row = (await SponsoredTransactions.listPending(db)).find(
1319
+ (row) => row.transactionHash === Hash.keccak256(body.result!),
1320
+ )
1321
+ expect(row?.orgId).toBe(orgId)
1322
+ expect(row?.feeToken?.toLowerCase()).toBe(ousd.toLowerCase())
1323
+ }
1324
+ })
1325
+
1242
1326
  /** Configures one attributed project for Tempo-funded sponsorship. */
1243
1327
  async function configureSubsidy(db: ReturnType<typeof TestApp.database>) {
1244
1328
  await Organizations.create(db, { id: 'org_1', name: 'Privy' })
@@ -2,6 +2,7 @@ import { Hono } from 'hono'
2
2
  import { createMiddleware } from 'hono/factory'
3
3
  import { Hash, Hex, RpcResponse } from 'ox'
4
4
  import { ZoneRpcAuthentication } from 'ox/tempo'
5
+ import type { Address } from 'viem'
5
6
  import { Addresses, TokenId, Transaction } from 'viem/tempo'
6
7
 
7
8
  import type * as App from '../../App.js'
@@ -75,10 +76,19 @@ export declare namespace relay {
75
76
  NonNullable<Handler.relay.Options['feePayer']>,
76
77
  'account' | 'feeToken' | 'name' | 'url'
77
78
  > & {
79
+ /** Resolves the sponsor's fee token using the transaction chain. */
80
+ resolveFeeToken?:
81
+ | ((options: {
82
+ /** Transaction chain id. */
83
+ chainId: number
84
+ }) => Address | undefined)
85
+ | undefined
78
86
  /** Per-transaction fee cap (decimal USD string); orgs tighten it, never loosen. @default '1.00' */
79
87
  txFeeLimit?: string | undefined
80
88
  })
81
89
  | undefined
90
+ /** Native multisig coordination backed by authoritative atomic storage. */
91
+ multisig?: Handler.relay.Options['multisig'] | undefined
82
92
  }
83
93
  }
84
94
 
@@ -151,11 +161,18 @@ function middleware(options: middleware.Options) {
151
161
  principal?.type === 'api_key' &&
152
162
  (principal.apiKey.scopes.includes('rpc-relay:sponsor') ||
153
163
  principal.apiKey.scopes.includes(Scope.wildcard))
154
- // Lifted so validation and the sponsored-token default read one value.
155
- const feeToken_sponsor = options.feePayer.feeToken ?? Addresses.pathUsd
164
+ // Resolve against the transaction chain because one app serves mainnet,
165
+ // testnet, and hosted Zones concurrently.
166
+ const feeToken_sponsor = (chainId: number) => {
167
+ return (
168
+ options.feePayer?.resolveFeeToken?.({ chainId }) ??
169
+ options.feePayer?.feeToken ??
170
+ Addresses.pathUsd
171
+ )
172
+ }
156
173
  return {
157
174
  ...options.feePayer,
158
- feeToken: feeToken_sponsor,
175
+ resolveFeeToken: feeToken_sponsor,
159
176
  validate: async (transaction) => {
160
177
  // Allowlist the chains this deployment serves rather than denylisting
161
178
  // only mainnet: the relay resolves chainId from the request body, so
@@ -230,7 +247,7 @@ function middleware(options: middleware.Options) {
230
247
  }
231
248
  const feeToken = (() => {
232
249
  try {
233
- return TokenId.toAddress(transaction.feeToken ?? feeToken_sponsor)
250
+ return TokenId.toAddress(transaction.feeToken ?? feeToken_sponsor(id))
234
251
  } catch {
235
252
  return undefined
236
253
  }
@@ -388,6 +405,12 @@ function middleware(options: middleware.Options) {
388
405
  : await SponsoredTransactions.reserve(db, input, billingLimit)
389
406
  return { subsidized: !record.billable }
390
407
  } catch (error) {
408
+ if (error instanceof SponsoredTransactions.OrganizationDeletedError)
409
+ rejectSponsorship({
410
+ chainId: event.chainId,
411
+ message: 'Organization no longer exists.',
412
+ reason: 'billing_required',
413
+ })
391
414
  if (error instanceof SponsoredTransactions.AttributionConflictError)
392
415
  rejectSponsorship({
393
416
  chainId: event.chainId,
@@ -466,6 +489,7 @@ function middleware(options: middleware.Options) {
466
489
  cache: c.get('store'),
467
490
  ...(options.features ? { features: options.features } : {}),
468
491
  getClient,
492
+ ...(options.multisig ? { multisig: options.multisig } : {}),
469
493
  onRequest: async (request) => {
470
494
  const method = sponsorshipMethod(request.method)
471
495
  const params = 'params' in request && Array.isArray(request.params) ? request.params : []
@@ -339,6 +339,29 @@ describe('reconcile', () => {
339
339
  await db.close()
340
340
  })
341
341
 
342
+ test('behavior: replaces an unresolved recorded hash by sign payload', async () => {
343
+ const db = create()
344
+ await db.migrate()
345
+ const sponsorship = await SponsoredTransactions.upsert(db, {
346
+ ...input,
347
+ signPayload,
348
+ transactionHash: `0x${'cc'.repeat(32)}`,
349
+ })
350
+
351
+ const result = await Sponsorships.reconcile(db, {
352
+ feePayer: '0xFee0000000000000000000000000000000000000',
353
+ getClient: () => rpc,
354
+ getTidx: () => tidx([{ from: sender, hash: minedHash }]),
355
+ })
356
+
357
+ expect(result).toMatchObject({ matched: 1 })
358
+ expect(await SponsoredTransactions.get(db, sponsorship.id)).toMatchObject({
359
+ status: 'pending',
360
+ transactionHash: minedHash,
361
+ })
362
+ await db.close()
363
+ })
364
+
342
365
  test('behavior: recovers recently failed intents by sign payload', async () => {
343
366
  const db = create()
344
367
  await db.migrate()
@@ -373,6 +396,44 @@ describe('reconcile', () => {
373
396
  await db.close()
374
397
  })
375
398
 
399
+ test('behavior: recovers a failed recorded hash by sign payload without duplicating spend', async () => {
400
+ const db = create()
401
+ await db.migrate()
402
+ await Organizations.create(db, { id: 'org_1', name: 'One' })
403
+ const recordedHash = `0x${'cc'.repeat(32)}`
404
+ const sponsorship = await SponsoredTransactions.upsert(db, {
405
+ ...input,
406
+ signPayload,
407
+ transactionHash: recordedHash,
408
+ })
409
+ await SponsoredTransactions.fail(db, sponsorship.id, '2026-01-01T00:00:00.000Z')
410
+
411
+ vi.useFakeTimers({ now: new Date('2026-01-01T00:01:00.000Z') })
412
+ try {
413
+ const options = {
414
+ feePayer: '0xFee0000000000000000000000000000000000000' as const,
415
+ getClient: () => rpc,
416
+ getTidx: () => tidx([{ block_num: 1, from: sender, hash: minedHash, idx: 0 }]),
417
+ }
418
+ expect(await Sponsorships.reconcile(db, options)).toMatchObject({ matched: 1 })
419
+ expect(
420
+ await Sponsorships.finalize(db, {
421
+ getClient: () => client({ [minedHash]: { effectiveGasPrice: '0x3', gasUsed: '0x5208' } }),
422
+ }),
423
+ ).toMatchObject({ finalized: 1 })
424
+ expect(await Sponsorships.reconcile(db, options)).toMatchObject({ matched: 0 })
425
+ } finally {
426
+ vi.useRealTimers()
427
+ }
428
+
429
+ expect(await SponsoredTransactions.get(db, sponsorship.id)).toMatchObject({
430
+ status: 'finalized',
431
+ transactionHash: minedHash,
432
+ })
433
+ expect(await SponsoredTransactions.list(db, { limit: 10 })).toHaveLength(1)
434
+ await db.close()
435
+ })
436
+
376
437
  test('behavior: spend-limit refusals are not operational errors', async () => {
377
438
  const db = create()
378
439
  await db.migrate()
@@ -460,6 +521,41 @@ describe('reconcile', () => {
460
521
  await db.close()
461
522
  })
462
523
 
524
+ test('behavior: scans fill intents and submitted hashes from independent windows', async () => {
525
+ const db = create()
526
+ await db.migrate()
527
+ vi.useFakeTimers({ now: new Date('2026-01-01T00:00:00.000Z') })
528
+ try {
529
+ await SponsoredTransactions.upsert(db, {
530
+ ...input,
531
+ signPayload: `0x${'ee'.repeat(32)}`,
532
+ })
533
+ vi.setSystemTime(new Date('2026-01-01T01:00:00.000Z'))
534
+ const { transactionHash: _, ...intent } = input
535
+ await SponsoredTransactions.upsert(db, { ...intent, signPayload })
536
+ const queries: string[] = []
537
+
538
+ await Sponsorships.reconcile(db, {
539
+ feePayer: '0xFee0000000000000000000000000000000000000',
540
+ getClient: () => rpc,
541
+ getTidx: () =>
542
+ ({
543
+ fetch: async (options: { query: string }) => {
544
+ queries.push(options.query)
545
+ return { rows: [] }
546
+ },
547
+ }) as never,
548
+ })
549
+
550
+ expect(queries).toHaveLength(2)
551
+ expect(queries[0]).toContain("block_timestamp >= '2026-01-01 00:58:00'")
552
+ expect(queries[1]).toContain("block_timestamp >= '2025-12-31 23:58:00'")
553
+ } finally {
554
+ vi.useRealTimers()
555
+ await db.close()
556
+ }
557
+ })
558
+
463
559
  test('behavior: an indexer error leaves intents for the next pass', async () => {
464
560
  const db = create()
465
561
  await db.migrate()
@@ -483,7 +579,7 @@ describe('reconcile', () => {
483
579
  "scanned": 0,
484
580
  }
485
581
  `)
486
- expect(await SponsoredTransactions.listIntents(db)).toHaveLength(1)
582
+ expect(await SponsoredTransactions.listReconciliationCandidates(db)).toHaveLength(1)
487
583
  await db.close()
488
584
  })
489
585
  })
@@ -53,7 +53,9 @@ export async function finalize(db: Db.Db, options: finalize.Options): Promise<fi
53
53
  // here only the TTL can settle them.
54
54
  if (row.transactionHash === null) {
55
55
  if (Date.parse(row.createdAt) + pendingTtlMs <= now().getTime()) {
56
- await SponsoredTransactions.fail(db, row.id, now().toISOString())
56
+ await SponsoredTransactions.fail(db, row.id, now().toISOString(), {
57
+ transactionHash: row.transactionHash,
58
+ })
57
59
  result.failed++
58
60
  } else result.pending++
59
61
  continue
@@ -70,7 +72,9 @@ export async function finalize(db: Db.Db, options: finalize.Options): Promise<fi
70
72
  else {
71
73
  result.errors++
72
74
  if (Date.parse(row.createdAt) + receiptErrorTtlMs <= now().getTime()) {
73
- await SponsoredTransactions.fail(db, row.id, now().toISOString())
75
+ await SponsoredTransactions.fail(db, row.id, now().toISOString(), {
76
+ transactionHash: row.transactionHash,
77
+ })
74
78
  result.failed++
75
79
  } else result.pending++
76
80
  continue
@@ -83,10 +87,13 @@ export async function finalize(db: Db.Db, options: finalize.Options): Promise<fi
83
87
  await SponsoredTransactions.finalize(db, row.id, {
84
88
  feeAmount: feeAmount.toString(),
85
89
  finalizedAt: now().toISOString(),
90
+ transactionHash: row.transactionHash,
86
91
  })
87
92
  result.finalized++
88
93
  } else if (Date.parse(row.createdAt) + pendingTtlMs <= now().getTime()) {
89
- await SponsoredTransactions.fail(db, row.id, now().toISOString())
94
+ await SponsoredTransactions.fail(db, row.id, now().toISOString(), {
95
+ transactionHash: row.transactionHash,
96
+ })
90
97
  result.failed++
91
98
  } else result.pending++
92
99
  }
@@ -123,11 +130,9 @@ export declare namespace finalize {
123
130
  }
124
131
 
125
132
  /**
126
- * Runs one reconciliation pass over pending fill intents (rows with no
127
- * transaction hash): fetches the fee payer's recent on-chain transactions
128
- * from TIDX, recomputes each candidate's fee-payer sign payload, and fills
129
- * matching intents' hashes so the receipt pass can finalize them. Query or
130
- * candidate errors leave intents for the next pass.
133
+ * Reconciles pending fill intents and recently failed sponsorships against
134
+ * on-chain fee-payer sign payloads. Matches update their transaction hashes;
135
+ * errors leave sponsorships for the next pass.
131
136
  *
132
137
  * @param db - The database holding `sponsored_transactions`.
133
138
  * @param options - Reconciliation options.
@@ -147,74 +152,80 @@ export async function reconcile(db: Db.Db, options: reconcile.Options): Promise<
147
152
  const failedSince = new Date(Date.now() - failedIntentTtlMs).toISOString()
148
153
  // Old failed intents must not move the active scan behind its candidate cap.
149
154
  const [intents, recoveryWindows] = await Promise.all([
150
- SponsoredTransactions.listIntents(db, { limit: batchSize }),
155
+ SponsoredTransactions.listReconciliationCandidates(db, { limit: batchSize }),
151
156
  SponsoredTransactions.listRecoveryWindows(db, { failedSince }),
152
157
  ])
153
158
  const result = { errors: 0, matched: 0, scanned: 0 }
154
159
  if (intents.length === 0 && recoveryWindows.length === 0) return result
155
160
 
156
- const groups = new Map<number, SponsoredTransactions.Record[]>()
157
- for (const intent of intents)
158
- groups.set(intent.chainId, [...(groups.get(intent.chainId) ?? []), intent])
161
+ const groups = [
162
+ new Map<number, SponsoredTransactions.Record[]>(),
163
+ new Map<number, SponsoredTransactions.Record[]>(),
164
+ ]
165
+ for (const intent of intents) {
166
+ const group = groups[intent.transactionHash === null ? 0 : 1]!
167
+ group.set(intent.chainId, [...(group.get(intent.chainId) ?? []), intent])
168
+ }
159
169
 
160
- for (const [chainId, rows] of groups) {
161
- if (candidateCap <= 0) continue
162
- const bySignPayload = new Map(rows.map((row) => [row.signPayload, row]))
163
- const since = formatTidxTimestamp(
164
- Math.min(...rows.map((row) => Date.parse(row.createdAt))) - skewMs,
165
- )
170
+ for (const group of groups)
171
+ for (const [chainId, rows] of group) {
172
+ if (candidateCap <= 0) continue
173
+ const bySignPayload = new Map(rows.map((row) => [row.signPayload, row]))
174
+ const since = formatTidxTimestamp(
175
+ Math.min(...rows.map((row) => Date.parse(row.createdAt))) - skewMs,
176
+ )
166
177
 
167
- let candidates: readonly globalThis.Record<string, unknown>[]
168
- try {
169
- // Dynamic filter values; the tidx client's query type wants literals.
170
- const fetched = await getTidx(chainId).fetch({
171
- chainId,
172
- query:
173
- `SELECT hash, "from" FROM txs WHERE fee_payer = '${feePayer.toLowerCase()}' AND block_timestamp >= '${since}' ORDER BY block_timestamp ASC LIMIT ${candidateCap}` as string,
174
- })
175
- candidates = fetched.rows
176
- } catch {
177
- // Indexer outage must not fail intents; retry on the next pass.
178
- result.errors++
179
- continue
180
- }
181
-
182
- for (const candidate of candidates) {
183
- if (bySignPayload.size === 0) break
184
- const hash = candidate['hash'] as Hex.Hex | undefined
185
- const sender = candidate['from'] as Address | undefined
186
- if (!hash || !sender) continue
187
- result.scanned++
178
+ let candidates: readonly globalThis.Record<string, unknown>[]
188
179
  try {
189
- const serialized = await getRawTransaction(getClient(chainId), hash)
190
- if (!serialized) {
191
- result.errors++
192
- continue
180
+ // Dynamic filter values; the tidx client's query type wants literals.
181
+ const fetched = await getTidx(chainId).fetch({
182
+ chainId,
183
+ query:
184
+ `SELECT hash, "from" FROM txs WHERE fee_payer = '${feePayer.toLowerCase()}' AND block_timestamp >= '${since}' ORDER BY block_timestamp ASC LIMIT ${candidateCap}` as string,
185
+ })
186
+ candidates = fetched.rows
187
+ } catch {
188
+ // Indexer outage must not fail sponsorships; retry on the next pass.
189
+ result.errors++
190
+ continue
191
+ }
192
+
193
+ for (const candidate of candidates) {
194
+ if (bySignPayload.size === 0) break
195
+ const hash = candidate['hash'] as Hex.Hex | undefined
196
+ const sender = candidate['from'] as Address | undefined
197
+ if (!hash || !sender) continue
198
+ result.scanned++
199
+ try {
200
+ const serialized = await getRawTransaction(getClient(chainId), hash)
201
+ if (!serialized) {
202
+ result.errors++
203
+ continue
204
+ }
205
+ if (!serialized.startsWith(TxEnvelopeTempo.serializedType)) continue
206
+ const signPayload = TxEnvelopeTempo.getFeePayerSignPayload(
207
+ TxEnvelopeTempo.deserialize(serialized as TxEnvelopeTempo.Serialized),
208
+ { sender },
209
+ )
210
+ const intent = bySignPayload.get(signPayload)
211
+ if (!intent) continue
212
+ await SponsoredTransactions.assignTransactionHash(
213
+ db,
214
+ intent.id,
215
+ hash,
216
+ await options.limitFor?.(intent),
217
+ )
218
+ bySignPayload.delete(signPayload)
219
+ result.matched++
220
+ } catch (error) {
221
+ // Spend-limit enforcement is an expected policy refusal; dependency,
222
+ // lookup, and malformed-envelope failures remain operational errors.
223
+ if (!(error instanceof SponsoredTransactions.PeriodSpendLimitError)) result.errors++
193
224
  }
194
- if (!serialized.startsWith(TxEnvelopeTempo.serializedType)) continue
195
- const signPayload = TxEnvelopeTempo.getFeePayerSignPayload(
196
- TxEnvelopeTempo.deserialize(serialized as TxEnvelopeTempo.Serialized),
197
- { sender },
198
- )
199
- const intent = bySignPayload.get(signPayload)
200
- if (!intent) continue
201
- await SponsoredTransactions.assignTransactionHash(
202
- db,
203
- intent.id,
204
- hash,
205
- await options.limitFor?.(intent),
206
- )
207
- bySignPayload.delete(signPayload)
208
- result.matched++
209
- } catch (error) {
210
- // Spend-limit enforcement is an expected policy refusal; dependency,
211
- // lookup, and malformed-envelope failures remain operational errors.
212
- if (!(error instanceof SponsoredTransactions.PeriodSpendLimitError)) result.errors++
213
225
  }
226
+ // A truncated active scan cannot prove that the remaining sponsorships were never mined.
227
+ if (candidates.length === candidateCap && bySignPayload.size > 0) result.errors++
214
228
  }
215
- // A truncated active scan cannot prove that the remaining intents were never mined.
216
- if (candidates.length === candidateCap && bySignPayload.size > 0) result.errors++
217
- }
218
229
 
219
230
  const feePayer_lower = feePayer.toLowerCase() as Address
220
231
  for (const window of recoveryWindows) {
@@ -353,7 +364,7 @@ export async function reconcile(db: Db.Db, options: reconcile.Options): Promise<
353
364
  export declare namespace reconcile {
354
365
  /** Options for {@link reconcile}. */
355
366
  type Options = {
356
- /** Maximum active intents considered per pass. @default 100 */
367
+ /** Maximum pending sponsorships per transaction-hash state considered per pass. @default 100 */
357
368
  batchSize?: number | undefined
358
369
  /** Maximum candidates per chain in each active or recovery scan. @default 500 */
359
370
  candidateCap?: number | undefined