tapimo 0.7.1 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (786) hide show
  1. package/README.md +10 -7
  2. package/dist/ApiKey.d.ts +3 -0
  3. package/dist/ApiKey.d.ts.map +1 -1
  4. package/dist/ApiKey.js +10 -0
  5. package/dist/ApiKey.js.map +1 -1
  6. package/dist/ApiKeys.d.ts +29 -8
  7. package/dist/ApiKeys.d.ts.map +1 -1
  8. package/dist/ApiKeys.js +24 -5
  9. package/dist/ApiKeys.js.map +1 -1
  10. package/dist/App.d.ts +20680 -15487
  11. package/dist/App.d.ts.map +1 -1
  12. package/dist/App.js +250 -129
  13. package/dist/App.js.map +1 -1
  14. package/dist/Assets.d.ts +10 -0
  15. package/dist/Assets.d.ts.map +1 -1
  16. package/dist/Assets.js +17 -4
  17. package/dist/Assets.js.map +1 -1
  18. package/dist/Scope.d.ts +19 -8
  19. package/dist/Scope.d.ts.map +1 -1
  20. package/dist/Scope.js +25 -9
  21. package/dist/Scope.js.map +1 -1
  22. package/dist/Webhooks.d.ts +1 -1
  23. package/dist/admin/App.d.ts +667 -76
  24. package/dist/admin/App.d.ts.map +1 -1
  25. package/dist/admin/App.js +12 -2
  26. package/dist/admin/App.js.map +1 -1
  27. package/dist/admin/apps/api-keys.d.ts +107 -11
  28. package/dist/admin/apps/api-keys.d.ts.map +1 -1
  29. package/dist/admin/apps/api-keys.js +145 -32
  30. package/dist/admin/apps/api-keys.js.map +1 -1
  31. package/dist/admin/apps/earn-vaults.d.ts +1069 -0
  32. package/dist/admin/apps/earn-vaults.d.ts.map +1 -0
  33. package/dist/admin/apps/earn-vaults.js +409 -0
  34. package/dist/admin/apps/earn-vaults.js.map +1 -0
  35. package/dist/admin/apps/organizations.d.ts +2 -0
  36. package/dist/admin/apps/organizations.d.ts.map +1 -1
  37. package/dist/admin/apps/verified-tokens.d.ts +74 -74
  38. package/dist/admin/ui.generated.d.ts +1 -1
  39. package/dist/admin/ui.generated.d.ts.map +1 -1
  40. package/dist/admin/ui.generated.js +99 -43
  41. package/dist/admin/ui.generated.js.map +1 -1
  42. package/dist/analytics/Analytics.d.ts +4 -0
  43. package/dist/analytics/Analytics.d.ts.map +1 -1
  44. package/dist/analytics/Analytics.js +21 -2
  45. package/dist/analytics/Analytics.js.map +1 -1
  46. package/dist/analytics/tables/requestEvents.d.ts +22 -1
  47. package/dist/analytics/tables/requestEvents.d.ts.map +1 -1
  48. package/dist/analytics/tables/requestEvents.js +59 -39
  49. package/dist/analytics/tables/requestEvents.js.map +1 -1
  50. package/dist/apps/Zones.d.ts +8335 -0
  51. package/dist/apps/Zones.d.ts.map +1 -0
  52. package/dist/apps/Zones.js +38 -0
  53. package/dist/apps/Zones.js.map +1 -0
  54. package/dist/apps/data/App.d.ts +5666 -3934
  55. package/dist/apps/data/App.d.ts.map +1 -1
  56. package/dist/apps/data/App.js +90 -22
  57. package/dist/apps/data/App.js.map +1 -1
  58. package/dist/apps/data/FxOracle.d.ts +1 -1
  59. package/dist/apps/data/FxOracle.d.ts.map +1 -1
  60. package/dist/apps/data/index.d.ts +0 -1
  61. package/dist/apps/data/index.d.ts.map +1 -1
  62. package/dist/apps/data/index.js +0 -1
  63. package/dist/apps/data/index.js.map +1 -1
  64. package/dist/apps/data/routes/activities.d.ts +56 -56
  65. package/dist/apps/data/routes/activities.d.ts.map +1 -1
  66. package/dist/apps/data/routes/activities.js +130 -65
  67. package/dist/apps/data/routes/activities.js.map +1 -1
  68. package/dist/apps/data/routes/addresses.d.ts +65 -65
  69. package/dist/apps/data/routes/balances.d.ts +14 -14
  70. package/dist/apps/data/routes/balances.js +5 -5
  71. package/dist/apps/data/routes/balances.js.map +1 -1
  72. package/dist/apps/data/routes/blocks.d.ts +39 -39
  73. package/dist/apps/data/routes/coingecko.d.ts +54 -54
  74. package/dist/apps/data/routes/coingecko.d.ts.map +1 -1
  75. package/dist/apps/data/routes/coingecko.js +62 -35
  76. package/dist/apps/data/routes/coingecko.js.map +1 -1
  77. package/dist/apps/data/routes/earn.d.ts +2574 -0
  78. package/dist/apps/data/routes/earn.d.ts.map +1 -0
  79. package/dist/apps/data/routes/earn.js +1574 -0
  80. package/dist/apps/data/routes/earn.js.map +1 -0
  81. package/dist/apps/data/routes/exchanges.d.ts +1626 -719
  82. package/dist/apps/data/routes/exchanges.d.ts.map +1 -1
  83. package/dist/apps/data/routes/exchanges.js +656 -193
  84. package/dist/apps/data/routes/exchanges.js.map +1 -1
  85. package/dist/apps/data/routes/fee-amm.d.ts +108 -108
  86. package/dist/apps/data/routes/fee-amm.d.ts.map +1 -1
  87. package/dist/apps/data/routes/fee-amm.js +59 -8
  88. package/dist/apps/data/routes/fee-amm.js.map +1 -1
  89. package/dist/apps/data/routes/indexer.d.ts +35 -35
  90. package/dist/apps/data/routes/indexer.d.ts.map +1 -1
  91. package/dist/apps/data/routes/indexer.js +23 -3
  92. package/dist/apps/data/routes/indexer.js.map +1 -1
  93. package/dist/apps/data/routes/receipts.d.ts +33 -33
  94. package/dist/apps/data/routes/receipts.d.ts.map +1 -1
  95. package/dist/apps/data/routes/receipts.js +11 -11
  96. package/dist/apps/data/routes/receipts.js.map +1 -1
  97. package/dist/apps/data/routes/rpc.d.ts +6 -6
  98. package/dist/apps/data/routes/rpc.d.ts.map +1 -1
  99. package/dist/apps/data/routes/rpc.js +214 -22
  100. package/dist/apps/data/routes/rpc.js.map +1 -1
  101. package/dist/apps/data/routes/tokenlist.d.ts +1 -1
  102. package/dist/apps/data/routes/tokenlist.d.ts.map +1 -1
  103. package/dist/apps/data/routes/tokenlist.js +39 -8
  104. package/dist/apps/data/routes/tokenlist.js.map +1 -1
  105. package/dist/apps/data/routes/tokens.d.ts +115 -87
  106. package/dist/apps/data/routes/tokens.d.ts.map +1 -1
  107. package/dist/apps/data/routes/tokens.js +194 -91
  108. package/dist/apps/data/routes/tokens.js.map +1 -1
  109. package/dist/apps/data/routes/transactions.d.ts +54 -54
  110. package/dist/apps/data/routes/transactions.d.ts.map +1 -1
  111. package/dist/apps/data/routes/transactions.js +78 -39
  112. package/dist/apps/data/routes/transactions.js.map +1 -1
  113. package/dist/apps/data/routes/transfers.d.ts +76 -27
  114. package/dist/apps/data/routes/transfers.d.ts.map +1 -1
  115. package/dist/apps/data/routes/transfers.js +165 -67
  116. package/dist/apps/data/routes/transfers.js.map +1 -1
  117. package/dist/apps/data/routes/valuation.d.ts +42 -42
  118. package/dist/apps/data/routes/valuation.js +2 -2
  119. package/dist/apps/data/routes/valuation.js.map +1 -1
  120. package/dist/apps/data/routes/verified-tokens.d.ts +36 -36
  121. package/dist/apps/data/routes/webhooks.d.ts +370 -368
  122. package/dist/apps/data/routes/webhooks.d.ts.map +1 -1
  123. package/dist/apps/data/routes/webhooks.js +161 -59
  124. package/dist/apps/data/routes/webhooks.js.map +1 -1
  125. package/dist/apps/data/routes/zones.d.ts +281 -0
  126. package/dist/apps/data/routes/zones.d.ts.map +1 -0
  127. package/dist/apps/data/routes/zones.js +252 -0
  128. package/dist/apps/data/routes/zones.js.map +1 -0
  129. package/dist/apps/docs/reference.js +6 -5
  130. package/dist/apps/docs/reference.js.map +1 -1
  131. package/dist/apps/funding/Access.d.ts +16 -0
  132. package/dist/apps/funding/Access.d.ts.map +1 -0
  133. package/dist/apps/funding/Access.js +22 -0
  134. package/dist/apps/funding/Access.js.map +1 -0
  135. package/dist/apps/funding/App.d.ts +3183 -0
  136. package/dist/apps/funding/App.d.ts.map +1 -0
  137. package/dist/apps/funding/App.js +46 -0
  138. package/dist/apps/funding/App.js.map +1 -0
  139. package/dist/apps/funding/Inventory.d.ts +5 -0
  140. package/dist/apps/funding/Inventory.d.ts.map +1 -0
  141. package/dist/apps/funding/Inventory.js +25 -0
  142. package/dist/apps/funding/Inventory.js.map +1 -0
  143. package/dist/apps/funding/ProviderAttempts.d.ts +5 -0
  144. package/dist/apps/funding/ProviderAttempts.d.ts.map +1 -0
  145. package/dist/apps/funding/ProviderAttempts.js +24 -0
  146. package/dist/apps/funding/ProviderAttempts.js.map +1 -0
  147. package/dist/apps/funding/index.d.ts +2 -0
  148. package/dist/apps/funding/index.d.ts.map +1 -0
  149. package/dist/apps/funding/index.js +2 -0
  150. package/dist/apps/funding/index.js.map +1 -0
  151. package/dist/apps/funding/routes/chains.d.ts +169 -0
  152. package/dist/apps/funding/routes/chains.d.ts.map +1 -0
  153. package/dist/apps/funding/routes/chains.js +80 -0
  154. package/dist/apps/funding/routes/chains.js.map +1 -0
  155. package/dist/apps/funding/routes/deposit-addresses.d.ts +2388 -0
  156. package/dist/apps/funding/routes/deposit-addresses.d.ts.map +1 -0
  157. package/dist/apps/funding/routes/deposit-addresses.js +860 -0
  158. package/dist/apps/funding/routes/deposit-addresses.js.map +1 -0
  159. package/dist/apps/funding/routes/providers.d.ts +91 -0
  160. package/dist/apps/funding/routes/providers.d.ts.map +1 -0
  161. package/dist/apps/funding/routes/providers.js +56 -0
  162. package/dist/apps/funding/routes/providers.js.map +1 -0
  163. package/dist/apps/{data/routes/funding.d.ts → funding/routes/quotes.d.ts} +26 -396
  164. package/dist/apps/funding/routes/quotes.d.ts.map +1 -0
  165. package/dist/apps/funding/routes/quotes.js +188 -0
  166. package/dist/apps/funding/routes/quotes.js.map +1 -0
  167. package/dist/apps/funding/routes/transfers.d.ts +1999 -0
  168. package/dist/apps/funding/routes/transfers.d.ts.map +1 -0
  169. package/dist/apps/funding/routes/transfers.js +614 -0
  170. package/dist/apps/funding/routes/transfers.js.map +1 -0
  171. package/dist/apps/index.d.ts +3 -1
  172. package/dist/apps/index.d.ts.map +1 -1
  173. package/dist/apps/index.js +3 -1
  174. package/dist/apps/index.js.map +1 -1
  175. package/dist/apps/management/App.d.ts +839 -574
  176. package/dist/apps/management/App.d.ts.map +1 -1
  177. package/dist/apps/management/Billing.d.ts +8 -0
  178. package/dist/apps/management/Billing.d.ts.map +1 -1
  179. package/dist/apps/management/Billing.js +12 -0
  180. package/dist/apps/management/Billing.js.map +1 -1
  181. package/dist/apps/management/Error.d.ts +12 -0
  182. package/dist/apps/management/Error.d.ts.map +1 -0
  183. package/dist/apps/management/Error.js +10 -0
  184. package/dist/apps/management/Error.js.map +1 -0
  185. package/dist/apps/management/routes/api-keys.d.ts +296 -19
  186. package/dist/apps/management/routes/api-keys.d.ts.map +1 -1
  187. package/dist/apps/management/routes/api-keys.js +77 -9
  188. package/dist/apps/management/routes/api-keys.js.map +1 -1
  189. package/dist/apps/management/routes/billing.d.ts +119 -119
  190. package/dist/apps/management/routes/faucet.d.ts +35 -35
  191. package/dist/apps/management/routes/invitations.d.ts +17 -17
  192. package/dist/apps/management/routes/invitations.d.ts.map +1 -1
  193. package/dist/apps/management/routes/invitations.js +4 -10
  194. package/dist/apps/management/routes/invitations.js.map +1 -1
  195. package/dist/apps/management/routes/invite-links.d.ts +38 -38
  196. package/dist/apps/management/routes/me.d.ts +6 -6
  197. package/dist/apps/management/routes/members.d.ts +69 -69
  198. package/dist/apps/management/routes/orgs.d.ts +16 -16
  199. package/dist/apps/management/routes/orgs.d.ts.map +1 -1
  200. package/dist/apps/management/routes/orgs.js +2 -8
  201. package/dist/apps/management/routes/orgs.js.map +1 -1
  202. package/dist/apps/management/routes/projects.d.ts +19 -19
  203. package/dist/apps/management/routes/scopes.d.ts +1 -1
  204. package/dist/apps/management/routes/scopes.js +2 -2
  205. package/dist/apps/management/routes/scopes.js.map +1 -1
  206. package/dist/apps/management/routes/usage.d.ts +72 -72
  207. package/dist/apps/management/routes/verified-token-requests.d.ts +18 -18
  208. package/dist/apps/management/routes/webhooks.d.ts +122 -122
  209. package/dist/apps/management/routes/webhooks.d.ts.map +1 -1
  210. package/dist/apps/management/routes/webhooks.js +15 -3
  211. package/dist/apps/management/routes/webhooks.js.map +1 -1
  212. package/dist/apps/mcp.d.ts +2 -3
  213. package/dist/apps/mcp.d.ts.map +1 -1
  214. package/dist/apps/mcp.js +16 -14
  215. package/dist/apps/mcp.js.map +1 -1
  216. package/dist/apps/metadata.d.ts +4 -0
  217. package/dist/apps/metadata.d.ts.map +1 -1
  218. package/dist/apps/metadata.js +10 -0
  219. package/dist/apps/metadata.js.map +1 -1
  220. package/dist/apps/mpp/App.d.ts +57 -58
  221. package/dist/apps/mpp/App.d.ts.map +1 -1
  222. package/dist/apps/mpp/App.js +192 -27
  223. package/dist/apps/mpp/App.js.map +1 -1
  224. package/dist/apps/mpp/Mpp.d.ts +0 -20
  225. package/dist/apps/mpp/Mpp.d.ts.map +1 -1
  226. package/dist/apps/mpp/Mpp.js +0 -24
  227. package/dist/apps/mpp/Mpp.js.map +1 -1
  228. package/dist/apps/mpp/internal/Adapter.d.ts +40 -0
  229. package/dist/apps/mpp/internal/Adapter.d.ts.map +1 -0
  230. package/dist/apps/mpp/internal/Adapter.js +66 -0
  231. package/dist/apps/mpp/internal/Adapter.js.map +1 -0
  232. package/dist/apps/mpp/internal/Error.d.ts +4 -0
  233. package/dist/apps/mpp/internal/Error.d.ts.map +1 -0
  234. package/dist/apps/mpp/internal/Error.js +41 -0
  235. package/dist/apps/mpp/internal/Error.js.map +1 -0
  236. package/dist/apps/mpp/internal/Idempotency.d.ts +33 -0
  237. package/dist/apps/mpp/internal/Idempotency.d.ts.map +1 -0
  238. package/dist/apps/mpp/internal/Idempotency.js +28 -0
  239. package/dist/apps/mpp/internal/Idempotency.js.map +1 -0
  240. package/dist/apps/mpp/internal/Policy.d.ts +46 -0
  241. package/dist/apps/mpp/internal/Policy.d.ts.map +1 -0
  242. package/dist/apps/mpp/internal/Policy.js +57 -0
  243. package/dist/apps/mpp/internal/Policy.js.map +1 -0
  244. package/dist/apps/mpp/internal/ScreenManager.d.ts +27 -0
  245. package/dist/apps/mpp/internal/ScreenManager.d.ts.map +1 -0
  246. package/dist/apps/mpp/internal/ScreenManager.js +18 -0
  247. package/dist/apps/mpp/internal/ScreenManager.js.map +1 -0
  248. package/dist/apps/mpp/internal/Screening.d.ts +35 -0
  249. package/dist/apps/mpp/internal/Screening.d.ts.map +1 -0
  250. package/dist/apps/mpp/internal/Screening.js +20 -0
  251. package/dist/apps/mpp/internal/Screening.js.map +1 -0
  252. package/dist/apps/mpp/internal/Sponsorship.d.ts +36 -0
  253. package/dist/apps/mpp/internal/Sponsorship.d.ts.map +1 -0
  254. package/dist/apps/mpp/internal/Sponsorship.js +103 -0
  255. package/dist/apps/mpp/internal/Sponsorship.js.map +1 -0
  256. package/dist/apps/mpp/internal/Utils.d.ts +7 -0
  257. package/dist/apps/mpp/internal/Utils.d.ts.map +1 -0
  258. package/dist/apps/mpp/internal/Utils.js +24 -0
  259. package/dist/apps/mpp/internal/Utils.js.map +1 -0
  260. package/dist/apps/relay/App.js +183 -23
  261. package/dist/apps/relay/App.js.map +1 -1
  262. package/dist/apps/relay/Sponsorships.d.ts +4 -0
  263. package/dist/apps/relay/Sponsorships.d.ts.map +1 -1
  264. package/dist/apps/relay/Sponsorships.js +15 -6
  265. package/dist/apps/relay/Sponsorships.js.map +1 -1
  266. package/dist/cloudflare.d.ts +50 -0
  267. package/dist/cloudflare.d.ts.map +1 -1
  268. package/dist/cloudflare.js +178 -0
  269. package/dist/cloudflare.js.map +1 -1
  270. package/dist/db/Db.d.ts +22 -0
  271. package/dist/db/Db.d.ts.map +1 -1
  272. package/dist/db/Db.js +379 -0
  273. package/dist/db/Db.js.map +1 -1
  274. package/dist/db/Schema.d.ts +933 -1
  275. package/dist/db/Schema.d.ts.map +1 -1
  276. package/dist/db/Schema.js +289 -1
  277. package/dist/db/Schema.js.map +1 -1
  278. package/dist/db/tables/earnVaults.d.ts +68 -0
  279. package/dist/db/tables/earnVaults.d.ts.map +1 -0
  280. package/dist/db/tables/earnVaults.js +72 -0
  281. package/dist/db/tables/earnVaults.js.map +1 -0
  282. package/dist/db/tables/fundingCatalog.d.ts +56 -0
  283. package/dist/db/tables/fundingCatalog.d.ts.map +1 -0
  284. package/dist/db/tables/fundingCatalog.js +85 -0
  285. package/dist/db/tables/fundingCatalog.js.map +1 -0
  286. package/dist/db/tables/fundingDepositAddresses.d.ts +172 -0
  287. package/dist/db/tables/fundingDepositAddresses.d.ts.map +1 -0
  288. package/dist/db/tables/fundingDepositAddresses.js +218 -0
  289. package/dist/db/tables/fundingDepositAddresses.js.map +1 -0
  290. package/dist/db/tables/fundingDepositRequestObservations.d.ts +45 -0
  291. package/dist/db/tables/fundingDepositRequestObservations.d.ts.map +1 -0
  292. package/dist/db/tables/fundingDepositRequestObservations.js +46 -0
  293. package/dist/db/tables/fundingDepositRequestObservations.js.map +1 -0
  294. package/dist/db/tables/fundingDeposits.d.ts +171 -0
  295. package/dist/db/tables/fundingDeposits.d.ts.map +1 -0
  296. package/dist/db/tables/fundingDeposits.js +182 -0
  297. package/dist/db/tables/fundingDeposits.js.map +1 -0
  298. package/dist/db/tables/fundingIdempotency.d.ts +91 -0
  299. package/dist/db/tables/fundingIdempotency.d.ts.map +1 -0
  300. package/dist/db/tables/fundingIdempotency.js +103 -0
  301. package/dist/db/tables/fundingIdempotency.js.map +1 -0
  302. package/dist/db/tables/fundingTransferEvents.d.ts +12 -0
  303. package/dist/db/tables/fundingTransferEvents.d.ts.map +1 -0
  304. package/dist/db/tables/fundingTransferEvents.js +18 -0
  305. package/dist/db/tables/fundingTransferEvents.js.map +1 -0
  306. package/dist/db/tables/fundingTransferTransactions.d.ts +15 -0
  307. package/dist/db/tables/fundingTransferTransactions.d.ts.map +1 -0
  308. package/dist/db/tables/fundingTransferTransactions.js +27 -0
  309. package/dist/db/tables/fundingTransferTransactions.js.map +1 -0
  310. package/dist/db/tables/fundingTransfers.d.ts +82 -0
  311. package/dist/db/tables/fundingTransfers.d.ts.map +1 -0
  312. package/dist/db/tables/fundingTransfers.js +89 -0
  313. package/dist/db/tables/fundingTransfers.js.map +1 -0
  314. package/dist/db/tables/organizations.d.ts +8 -0
  315. package/dist/db/tables/organizations.d.ts.map +1 -1
  316. package/dist/db/tables/organizations.js +16 -0
  317. package/dist/db/tables/organizations.js.map +1 -1
  318. package/dist/db/tables/projects.d.ts +8 -0
  319. package/dist/db/tables/projects.d.ts.map +1 -1
  320. package/dist/db/tables/projects.js +16 -0
  321. package/dist/db/tables/projects.js.map +1 -1
  322. package/dist/db/tables/requestUsage.d.ts +13 -0
  323. package/dist/db/tables/requestUsage.d.ts.map +1 -1
  324. package/dist/db/tables/requestUsage.js +16 -0
  325. package/dist/db/tables/requestUsage.js.map +1 -1
  326. package/dist/db/tables/sponsoredTransactions.d.ts +2 -2
  327. package/dist/db/tables/sponsoredTransactions.d.ts.map +1 -1
  328. package/dist/db/tables/sponsoredTransactions.js +1 -1
  329. package/dist/db/tables/sponsoredTransactions.js.map +1 -1
  330. package/dist/db/tables/users.d.ts +8 -0
  331. package/dist/db/tables/users.d.ts.map +1 -1
  332. package/dist/db/tables/users.js +16 -0
  333. package/dist/db/tables/users.js.map +1 -1
  334. package/dist/db/tables/verifiedTokens.d.ts +14 -7
  335. package/dist/db/tables/verifiedTokens.d.ts.map +1 -1
  336. package/dist/db/tables/verifiedTokens.js +9 -7
  337. package/dist/db/tables/verifiedTokens.js.map +1 -1
  338. package/dist/db/tables/webhookSubscriptions.d.ts +31 -1
  339. package/dist/db/tables/webhookSubscriptions.d.ts.map +1 -1
  340. package/dist/db/tables/webhookSubscriptions.js +24 -3
  341. package/dist/db/tables/webhookSubscriptions.js.map +1 -1
  342. package/dist/handlers/relay.js +108 -108
  343. package/dist/handlers/relay.js.map +1 -1
  344. package/dist/internal/Auth.d.ts +37 -11
  345. package/dist/internal/Auth.d.ts.map +1 -1
  346. package/dist/internal/Auth.js +75 -16
  347. package/dist/internal/Auth.js.map +1 -1
  348. package/dist/internal/Cache.d.ts.map +1 -1
  349. package/dist/internal/Cache.js +17 -11
  350. package/dist/internal/Cache.js.map +1 -1
  351. package/dist/internal/Cursor.js +1 -1
  352. package/dist/internal/Cursor.js.map +1 -1
  353. package/dist/internal/EarnRates.d.ts +89 -0
  354. package/dist/internal/EarnRates.d.ts.map +1 -0
  355. package/dist/internal/EarnRates.js +266 -0
  356. package/dist/internal/EarnRates.js.map +1 -0
  357. package/dist/internal/EarnVaults.d.ts +171 -0
  358. package/dist/internal/EarnVaults.d.ts.map +1 -0
  359. package/dist/internal/EarnVaults.js +547 -0
  360. package/dist/internal/EarnVaults.js.map +1 -0
  361. package/dist/internal/EdgeCache.d.ts +10 -3
  362. package/dist/internal/EdgeCache.d.ts.map +1 -1
  363. package/dist/internal/EdgeCache.js +43 -11
  364. package/dist/internal/EdgeCache.js.map +1 -1
  365. package/dist/internal/Id.d.ts +11 -0
  366. package/dist/internal/Id.d.ts.map +1 -1
  367. package/dist/internal/Id.js +13 -0
  368. package/dist/internal/Id.js.map +1 -1
  369. package/dist/internal/Idempotency.d.ts +83 -0
  370. package/dist/internal/Idempotency.d.ts.map +1 -0
  371. package/dist/internal/Idempotency.js +113 -0
  372. package/dist/internal/Idempotency.js.map +1 -0
  373. package/dist/internal/IpAllowlist.d.ts +15 -0
  374. package/dist/internal/IpAllowlist.d.ts.map +1 -0
  375. package/dist/internal/IpAllowlist.js +27 -0
  376. package/dist/internal/IpAllowlist.js.map +1 -0
  377. package/dist/internal/Log.d.ts +64 -9
  378. package/dist/internal/Log.d.ts.map +1 -1
  379. package/dist/internal/Log.js +29 -7
  380. package/dist/internal/Log.js.map +1 -1
  381. package/dist/internal/MetricSink.d.ts.map +1 -1
  382. package/dist/internal/MetricSink.js +47 -1
  383. package/dist/internal/MetricSink.js.map +1 -1
  384. package/dist/internal/OpenApi.d.ts +2 -2
  385. package/dist/internal/OpenApi.d.ts.map +1 -1
  386. package/dist/internal/OpenApi.js +4 -1
  387. package/dist/internal/OpenApi.js.map +1 -1
  388. package/dist/internal/Provider.d.ts +14 -0
  389. package/dist/internal/Provider.d.ts.map +1 -0
  390. package/dist/internal/Provider.js +5 -0
  391. package/dist/internal/Provider.js.map +1 -0
  392. package/dist/internal/Schema.d.ts +6 -1
  393. package/dist/internal/Schema.d.ts.map +1 -1
  394. package/dist/internal/Schema.js +20 -11
  395. package/dist/internal/Schema.js.map +1 -1
  396. package/dist/internal/Store.d.ts +6 -0
  397. package/dist/internal/Store.d.ts.map +1 -1
  398. package/dist/internal/Store.js +35 -0
  399. package/dist/internal/Store.js.map +1 -1
  400. package/dist/internal/Tidx.d.ts +49 -24
  401. package/dist/internal/Tidx.d.ts.map +1 -1
  402. package/dist/internal/Tidx.js +90 -12
  403. package/dist/internal/Tidx.js.map +1 -1
  404. package/dist/internal/Viem.d.ts +90 -65
  405. package/dist/internal/Viem.d.ts.map +1 -1
  406. package/dist/internal/Viem.js +90 -12
  407. package/dist/internal/Viem.js.map +1 -1
  408. package/dist/internal/WebhookDestination.d.ts.map +1 -1
  409. package/dist/internal/WebhookDestination.js +34 -28
  410. package/dist/internal/WebhookDestination.js.map +1 -1
  411. package/dist/internal/Webhooks.d.ts +9 -0
  412. package/dist/internal/Webhooks.d.ts.map +1 -1
  413. package/dist/internal/Webhooks.js +15 -10
  414. package/dist/internal/Webhooks.js.map +1 -1
  415. package/dist/internal/exchange/Provider.d.ts +219 -0
  416. package/dist/internal/exchange/Provider.d.ts.map +1 -0
  417. package/dist/internal/exchange/Provider.js +117 -0
  418. package/dist/internal/exchange/Provider.js.map +1 -0
  419. package/dist/internal/exchange/index.d.ts +2 -0
  420. package/dist/internal/exchange/index.d.ts.map +1 -0
  421. package/dist/internal/exchange/index.js +2 -0
  422. package/dist/internal/exchange/index.js.map +1 -0
  423. package/dist/internal/exchange/providers/uniswap.d.ts +57 -0
  424. package/dist/internal/exchange/providers/uniswap.d.ts.map +1 -0
  425. package/dist/internal/exchange/providers/uniswap.js +553 -0
  426. package/dist/internal/exchange/providers/uniswap.js.map +1 -0
  427. package/dist/internal/funding/Action.d.ts +55 -0
  428. package/dist/internal/funding/Action.d.ts.map +1 -0
  429. package/dist/internal/funding/Action.js +74 -0
  430. package/dist/internal/funding/Action.js.map +1 -0
  431. package/dist/internal/funding/Catalog.d.ts +107 -0
  432. package/dist/internal/funding/Catalog.d.ts.map +1 -0
  433. package/dist/internal/funding/Catalog.js +270 -0
  434. package/dist/internal/funding/Catalog.js.map +1 -0
  435. package/dist/internal/funding/Chain.d.ts +76 -0
  436. package/dist/internal/funding/Chain.d.ts.map +1 -0
  437. package/dist/internal/funding/Chain.js +38 -0
  438. package/dist/internal/funding/Chain.js.map +1 -0
  439. package/dist/internal/funding/Deposit.d.ts +408 -0
  440. package/dist/internal/funding/Deposit.d.ts.map +1 -0
  441. package/dist/internal/funding/Deposit.js +318 -0
  442. package/dist/internal/funding/Deposit.js.map +1 -0
  443. package/dist/internal/funding/DepositAddress.d.ts +345 -0
  444. package/dist/internal/funding/DepositAddress.d.ts.map +1 -0
  445. package/dist/internal/funding/DepositAddress.js +189 -0
  446. package/dist/internal/funding/DepositAddress.js.map +1 -0
  447. package/dist/internal/funding/Evidence.d.ts +48 -0
  448. package/dist/internal/funding/Evidence.d.ts.map +1 -0
  449. package/dist/internal/funding/Evidence.js +315 -0
  450. package/dist/internal/funding/Evidence.js.map +1 -0
  451. package/dist/internal/funding/Provider.d.ts +1288 -0
  452. package/dist/internal/funding/Provider.d.ts.map +1 -0
  453. package/dist/internal/funding/Provider.js +1086 -0
  454. package/dist/internal/funding/Provider.js.map +1 -0
  455. package/dist/internal/funding/Reconciliation.d.ts +127 -0
  456. package/dist/internal/funding/Reconciliation.d.ts.map +1 -0
  457. package/dist/internal/funding/Reconciliation.js +885 -0
  458. package/dist/internal/funding/Reconciliation.js.map +1 -0
  459. package/dist/internal/funding/Route.d.ts +21 -0
  460. package/dist/internal/funding/Route.d.ts.map +1 -0
  461. package/dist/internal/funding/Route.js +5 -0
  462. package/dist/internal/funding/Route.js.map +1 -0
  463. package/dist/internal/funding/SourceObservation.d.ts +108 -0
  464. package/dist/internal/funding/SourceObservation.d.ts.map +1 -0
  465. package/dist/internal/funding/SourceObservation.js +143 -0
  466. package/dist/internal/funding/SourceObservation.js.map +1 -0
  467. package/dist/internal/funding/Subsidy.d.ts +113 -0
  468. package/dist/internal/funding/Subsidy.d.ts.map +1 -0
  469. package/dist/internal/funding/Subsidy.js +138 -0
  470. package/dist/internal/funding/Subsidy.js.map +1 -0
  471. package/dist/internal/funding/Token.d.ts +41 -0
  472. package/dist/internal/funding/Token.d.ts.map +1 -0
  473. package/dist/internal/funding/Token.js +22 -0
  474. package/dist/internal/funding/Token.js.map +1 -0
  475. package/dist/internal/funding/Transfer.d.ts +643 -0
  476. package/dist/internal/funding/Transfer.d.ts.map +1 -0
  477. package/dist/internal/funding/Transfer.js +332 -0
  478. package/dist/internal/funding/Transfer.js.map +1 -0
  479. package/dist/internal/funding/index.d.ts +14 -0
  480. package/dist/internal/funding/index.d.ts.map +1 -0
  481. package/dist/internal/funding/index.js +14 -0
  482. package/dist/internal/funding/index.js.map +1 -0
  483. package/dist/internal/funding/providers/across.d.ts +21 -0
  484. package/dist/internal/funding/providers/across.d.ts.map +1 -0
  485. package/dist/internal/funding/providers/across.js +117 -0
  486. package/dist/internal/funding/providers/across.js.map +1 -0
  487. package/dist/internal/funding/providers/relay.d.ts +88 -0
  488. package/dist/internal/funding/providers/relay.d.ts.map +1 -0
  489. package/dist/internal/funding/providers/relay.js +871 -0
  490. package/dist/internal/funding/providers/relay.js.map +1 -0
  491. package/dist/internal/funding/providers/rhino.d.ts +15 -0
  492. package/dist/internal/funding/providers/rhino.d.ts.map +1 -0
  493. package/dist/internal/funding/providers/rhino.js +116 -0
  494. package/dist/internal/funding/providers/rhino.js.map +1 -0
  495. package/dist/internal/funding/providers/squid.d.ts +19 -0
  496. package/dist/internal/funding/providers/squid.d.ts.map +1 -0
  497. package/dist/internal/funding/providers/squid.js +120 -0
  498. package/dist/internal/funding/providers/squid.js.map +1 -0
  499. package/dist/internal/funding/providers/symbiosis.d.ts +20 -0
  500. package/dist/internal/funding/providers/symbiosis.d.ts.map +1 -0
  501. package/dist/internal/funding/providers/symbiosis.js +176 -0
  502. package/dist/internal/funding/providers/symbiosis.js.map +1 -0
  503. package/dist/internal/index.d.ts +5 -1
  504. package/dist/internal/index.d.ts.map +1 -1
  505. package/dist/internal/index.js +5 -1
  506. package/dist/internal/index.js.map +1 -1
  507. package/dist/internal/webhookDestinations/url.js +61 -57
  508. package/dist/internal/webhookDestinations/url.js.map +1 -1
  509. package/dist/providers/index.d.ts +43 -0
  510. package/dist/providers/index.d.ts.map +1 -0
  511. package/dist/providers/index.js +19 -0
  512. package/dist/providers/index.js.map +1 -0
  513. package/package.json +10 -5
  514. package/src/ApiKey.test.ts +35 -0
  515. package/src/ApiKey.ts +27 -0
  516. package/src/ApiKeys.test.ts +40 -7
  517. package/src/ApiKeys.ts +46 -10
  518. package/src/App.test.ts +108 -15
  519. package/src/App.ts +296 -138
  520. package/src/Assets.ts +29 -4
  521. package/src/Client.test-d.ts +809 -37
  522. package/src/Scope.test.ts +19 -0
  523. package/src/Scope.ts +28 -11
  524. package/src/Webhooks.test.ts +25 -0
  525. package/src/Webhooks.ts +1 -1
  526. package/src/admin/App.test.ts +9 -2
  527. package/src/admin/App.ts +32 -9
  528. package/src/admin/apps/api-keys.test.ts +190 -22
  529. package/src/admin/apps/api-keys.ts +170 -28
  530. package/src/admin/apps/earn-vaults.test.ts +338 -0
  531. package/src/admin/apps/earn-vaults.ts +572 -0
  532. package/src/admin/apps/scopes.test.ts +16 -1
  533. package/src/admin/ui/plugin.ts +2 -2
  534. package/src/admin/ui/src/components/EarnVaultForm.tsx +137 -0
  535. package/src/admin/ui/src/components/MobileProfile.tsx +2 -2
  536. package/src/admin/ui/src/components/Page.tsx +1 -1
  537. package/src/admin/ui/src/components/ThemeToggle.tsx +1 -1
  538. package/src/admin/ui/src/lib/api-keys.ts +37 -7
  539. package/src/admin/ui/src/lib/client.ts +1 -1
  540. package/src/admin/ui/src/lib/config.ts +1 -1
  541. package/src/admin/ui/src/lib/early-access.ts +8 -9
  542. package/src/admin/ui/src/lib/earn-vaults.ts +207 -0
  543. package/src/admin/ui/src/lib/format.ts +13 -0
  544. package/src/admin/ui/src/lib/organizations.test.ts +14 -4
  545. package/src/admin/ui/src/lib/organizations.ts +7 -1
  546. package/src/admin/ui/src/lib/response.ts +22 -0
  547. package/src/admin/ui/src/lib/scopes.test.ts +19 -11
  548. package/src/admin/ui/src/lib/scopes.ts +28 -7
  549. package/src/admin/ui/src/lib/verified-tokens.ts +10 -9
  550. package/src/admin/ui/src/routeTree.gen.ts +70 -7
  551. package/src/admin/ui/src/router.tsx +2 -2
  552. package/src/admin/ui/src/routes/__root.tsx +9 -8
  553. package/src/admin/ui/src/routes/api-keys.tsx +475 -64
  554. package/src/admin/ui/src/routes/early-access.tsx +5 -12
  555. package/src/admin/ui/src/routes/earn.vaults.tsx +348 -0
  556. package/src/admin/ui/src/routes/earn.vaults_.$vaultId.edit.tsx +154 -0
  557. package/src/admin/ui/src/routes/earn.vaults_.new.tsx +190 -0
  558. package/src/admin/ui/src/routes/organizations.tsx +4 -7
  559. package/src/admin/ui/src/routes/organizations_.$orgId.tsx +56 -54
  560. package/src/admin/ui/src/routes/verified-tokens.tsx +4 -4
  561. package/src/admin/ui/vite.config.ts +4 -1
  562. package/src/admin/ui.generated.ts +113 -43
  563. package/src/analytics/Analytics.test.ts +69 -10
  564. package/src/analytics/Analytics.ts +24 -1
  565. package/src/analytics/tables/requestEvents.ts +79 -37
  566. package/src/apps/Zones.test.ts +33 -0
  567. package/src/apps/Zones.ts +40 -0
  568. package/src/apps/composition.test.ts +184 -3
  569. package/src/apps/data/App.test.ts +28 -23
  570. package/src/apps/data/App.ts +95 -36
  571. package/src/apps/data/FxOracle.ts +1 -1
  572. package/src/apps/data/index.ts +0 -1
  573. package/src/apps/data/routes/activities.test.ts +82 -6
  574. package/src/apps/data/routes/activities.ts +131 -71
  575. package/src/apps/data/routes/balances.test.ts +50 -37
  576. package/src/apps/data/routes/balances.ts +5 -5
  577. package/src/apps/data/routes/blocks.test.ts +2 -0
  578. package/src/apps/data/routes/coingecko.test.ts +22 -0
  579. package/src/apps/data/routes/coingecko.ts +84 -48
  580. package/src/apps/data/routes/earn.test.ts +1391 -0
  581. package/src/apps/data/routes/earn.ts +2188 -0
  582. package/src/apps/data/routes/exchanges.test.ts +82 -33
  583. package/src/apps/data/routes/exchanges.ts +842 -227
  584. package/src/apps/data/routes/fee-amm.test.ts +4 -6
  585. package/src/apps/data/routes/fee-amm.ts +69 -12
  586. package/src/apps/data/routes/indexer.test.ts +43 -34
  587. package/src/apps/data/routes/indexer.ts +21 -3
  588. package/src/apps/data/routes/receipts.test.ts +5 -3
  589. package/src/apps/data/routes/receipts.ts +13 -11
  590. package/src/apps/data/routes/rpc.test.ts +446 -28
  591. package/src/apps/data/routes/rpc.ts +245 -25
  592. package/src/apps/data/routes/tokenlist.ts +72 -19
  593. package/src/apps/data/routes/tokens.test.ts +6 -8
  594. package/src/apps/data/routes/tokens.ts +258 -86
  595. package/src/apps/data/routes/transactions.test.ts +2 -0
  596. package/src/apps/data/routes/transactions.ts +77 -42
  597. package/src/apps/data/routes/transfers.test.ts +166 -4
  598. package/src/apps/data/routes/transfers.ts +216 -78
  599. package/src/apps/data/routes/valuation.test.ts +62 -9
  600. package/src/apps/data/routes/valuation.ts +2 -2
  601. package/src/apps/data/routes/webhooks.test.ts +386 -43
  602. package/src/apps/data/routes/webhooks.ts +172 -71
  603. package/src/apps/data/routes/zones.test.ts +473 -0
  604. package/src/apps/data/routes/zones.ts +338 -0
  605. package/src/apps/docs/reference.ts +8 -6
  606. package/src/apps/funding/Access.ts +26 -0
  607. package/src/apps/funding/App.test.ts +78 -0
  608. package/src/apps/funding/App.ts +63 -0
  609. package/src/apps/funding/Inventory.ts +30 -0
  610. package/src/apps/funding/ProviderAttempts.ts +26 -0
  611. package/src/apps/funding/index.ts +1 -0
  612. package/src/apps/funding/routes/chains.test.ts +78 -0
  613. package/src/apps/funding/routes/chains.ts +101 -0
  614. package/src/apps/funding/routes/deposit-addresses.test.ts +1628 -0
  615. package/src/apps/funding/routes/deposit-addresses.ts +1015 -0
  616. package/src/apps/funding/routes/providers.test.ts +165 -0
  617. package/src/apps/funding/routes/providers.ts +73 -0
  618. package/src/apps/funding/routes/quotes.test.ts +511 -0
  619. package/src/apps/funding/routes/quotes.ts +205 -0
  620. package/src/apps/funding/routes/transfers.test.ts +1255 -0
  621. package/src/apps/funding/routes/transfers.ts +704 -0
  622. package/src/apps/index.ts +3 -1
  623. package/src/apps/management/Billing.test.ts +29 -0
  624. package/src/apps/management/Billing.ts +23 -0
  625. package/src/apps/management/Error.ts +12 -0
  626. package/src/apps/management/routes/api-keys.test.ts +103 -3
  627. package/src/apps/management/routes/api-keys.ts +98 -10
  628. package/src/apps/management/routes/invitations.ts +4 -11
  629. package/src/apps/management/routes/orgs.ts +2 -9
  630. package/src/apps/management/routes/scopes.test.ts +7 -2
  631. package/src/apps/management/routes/scopes.ts +2 -2
  632. package/src/apps/management/routes/webhooks.test.ts +6 -1
  633. package/src/apps/management/routes/webhooks.ts +15 -3
  634. package/src/apps/mcp.test.ts +17 -2
  635. package/src/apps/mcp.ts +18 -13
  636. package/src/apps/metadata.ts +12 -0
  637. package/src/apps/mpp/App.ts +276 -29
  638. package/src/apps/mpp/Mpp.test.ts +631 -26
  639. package/src/apps/mpp/Mpp.ts +0 -42
  640. package/src/apps/mpp/internal/Adapter.ts +108 -3
  641. package/src/apps/mpp/internal/Error.test.ts +33 -0
  642. package/src/apps/mpp/internal/Error.ts +44 -6
  643. package/src/apps/mpp/internal/Idempotency.test.ts +213 -0
  644. package/src/apps/mpp/internal/Idempotency.ts +59 -5
  645. package/src/apps/mpp/internal/Policy.test.ts +128 -0
  646. package/src/apps/mpp/internal/Policy.ts +98 -0
  647. package/src/apps/mpp/internal/ScreenManager.test.ts +68 -0
  648. package/src/apps/mpp/internal/ScreenManager.ts +41 -0
  649. package/src/apps/mpp/internal/Screening.ts +40 -3
  650. package/src/apps/mpp/internal/Sponsorship.ts +144 -0
  651. package/src/apps/mpp/internal/Utils.ts +30 -0
  652. package/src/apps/relay/App.test.ts +493 -62
  653. package/src/apps/relay/App.ts +233 -23
  654. package/src/apps/relay/Sponsorships.test.ts +49 -0
  655. package/src/apps/relay/Sponsorships.ts +18 -6
  656. package/src/cloudflare.ts +279 -0
  657. package/src/db/Db.ts +501 -0
  658. package/src/db/Schema.ts +349 -2
  659. package/src/db/tables/earnVaults.test.ts +185 -0
  660. package/src/db/tables/earnVaults.ts +151 -0
  661. package/src/db/tables/fundingCatalog.test.ts +108 -0
  662. package/src/db/tables/fundingCatalog.ts +157 -0
  663. package/src/db/tables/fundingDepositAddresses.test.ts +580 -0
  664. package/src/db/tables/fundingDepositAddresses.ts +404 -0
  665. package/src/db/tables/fundingDepositRequestObservations.test.ts +106 -0
  666. package/src/db/tables/fundingDepositRequestObservations.ts +99 -0
  667. package/src/db/tables/fundingDeposits.test.ts +399 -0
  668. package/src/db/tables/fundingDeposits.ts +373 -0
  669. package/src/db/tables/fundingIdempotency.test.ts +182 -0
  670. package/src/db/tables/fundingIdempotency.ts +180 -0
  671. package/src/db/tables/fundingTransferEvents.ts +28 -0
  672. package/src/db/tables/fundingTransferTransactions.test.ts +69 -0
  673. package/src/db/tables/fundingTransferTransactions.ts +37 -0
  674. package/src/db/tables/fundingTransfers.test.ts +89 -0
  675. package/src/db/tables/fundingTransfers.ts +153 -0
  676. package/src/db/tables/organizations.ts +16 -0
  677. package/src/db/tables/projects.ts +16 -0
  678. package/src/db/tables/requestUsage.ts +23 -0
  679. package/src/db/tables/sponsoredTransactions.test.ts +11 -0
  680. package/src/db/tables/sponsoredTransactions.ts +3 -3
  681. package/src/db/tables/users.ts +16 -0
  682. package/src/db/tables/verifiedTokens.ts +19 -14
  683. package/src/db/tables/webhookSubscriptions.ts +58 -3
  684. package/src/handlers/relay.test.ts +2 -0
  685. package/src/handlers/relay.ts +95 -99
  686. package/src/internal/Auth.test.ts +225 -5
  687. package/src/internal/Auth.ts +109 -20
  688. package/src/internal/Cache.test.ts +37 -3
  689. package/src/internal/Cache.ts +14 -10
  690. package/src/internal/Cursor.test.ts +2 -2
  691. package/src/internal/Cursor.ts +1 -1
  692. package/src/internal/EarnRates.test.ts +125 -0
  693. package/src/internal/EarnRates.ts +409 -0
  694. package/src/internal/EarnVaults.test.ts +195 -0
  695. package/src/internal/EarnVaults.ts +876 -0
  696. package/src/internal/EdgeCache.test.ts +26 -7
  697. package/src/internal/EdgeCache.ts +48 -9
  698. package/src/internal/Id.ts +14 -0
  699. package/src/internal/Idempotency.test.ts +109 -0
  700. package/src/internal/Idempotency.ts +237 -0
  701. package/src/internal/IpAllowlist.test.ts +52 -0
  702. package/src/internal/IpAllowlist.ts +39 -0
  703. package/src/internal/Log.test-d.ts +41 -8
  704. package/src/internal/Log.test.ts +196 -9
  705. package/src/internal/Log.ts +124 -17
  706. package/src/internal/MetricSink.test.ts +244 -4
  707. package/src/internal/MetricSink.ts +51 -1
  708. package/src/internal/OpenApi.ts +4 -1
  709. package/src/internal/Provider.test.ts +17 -0
  710. package/src/internal/Provider.ts +17 -0
  711. package/src/internal/Schema.ts +27 -17
  712. package/src/internal/Store.test.ts +25 -0
  713. package/src/internal/Store.ts +46 -0
  714. package/src/internal/Tidx.local.test.ts +78 -3
  715. package/src/internal/Tidx.test.ts +240 -18
  716. package/src/internal/Tidx.ts +129 -33
  717. package/src/internal/VerifiedTokens.test.ts +15 -0
  718. package/src/internal/Viem.test.ts +198 -17
  719. package/src/internal/Viem.ts +127 -28
  720. package/src/internal/WebhookDestination.ts +25 -23
  721. package/src/internal/Webhooks.test.ts +59 -0
  722. package/src/internal/Webhooks.ts +34 -10
  723. package/src/internal/exchange/Provider.test.ts +216 -0
  724. package/src/internal/exchange/Provider.ts +326 -0
  725. package/src/internal/exchange/index.test.ts +6 -0
  726. package/src/internal/exchange/index.ts +1 -0
  727. package/src/internal/exchange/providers/uniswap.test.ts +122 -0
  728. package/src/internal/exchange/providers/uniswap.ts +682 -0
  729. package/src/internal/funding/Action.test.ts +138 -0
  730. package/src/internal/funding/Action.ts +117 -0
  731. package/src/internal/funding/Catalog.test.ts +311 -0
  732. package/src/internal/funding/Catalog.ts +347 -0
  733. package/src/internal/funding/Chain.test.ts +79 -0
  734. package/src/internal/funding/Chain.ts +120 -0
  735. package/src/internal/funding/Deposit.test.ts +26 -0
  736. package/src/internal/funding/Deposit.ts +522 -0
  737. package/src/internal/funding/DepositAddress.test.ts +18 -0
  738. package/src/internal/funding/DepositAddress.ts +312 -0
  739. package/src/internal/funding/Evidence.test.ts +297 -0
  740. package/src/internal/funding/Evidence.ts +425 -0
  741. package/src/internal/funding/Provider.test.ts +1328 -0
  742. package/src/internal/funding/Provider.ts +1911 -0
  743. package/src/internal/funding/Reconciliation.local.test.ts +511 -0
  744. package/src/internal/funding/Reconciliation.test.ts +3037 -0
  745. package/src/internal/funding/Reconciliation.ts +1202 -0
  746. package/src/internal/funding/Route.test.ts +66 -0
  747. package/src/internal/funding/Route.ts +29 -0
  748. package/src/internal/funding/SourceObservation.test.ts +301 -0
  749. package/src/internal/funding/SourceObservation.ts +267 -0
  750. package/src/internal/funding/Subsidy.local.test.ts +152 -0
  751. package/src/internal/funding/Subsidy.test.ts +75 -0
  752. package/src/internal/funding/Subsidy.ts +260 -0
  753. package/src/internal/funding/Token.test.ts +47 -0
  754. package/src/internal/funding/Token.ts +59 -0
  755. package/src/internal/funding/Transfer.test.ts +369 -0
  756. package/src/internal/funding/Transfer.ts +522 -0
  757. package/src/internal/funding/index.test.ts +21 -0
  758. package/src/internal/funding/index.ts +13 -0
  759. package/src/internal/funding/providers/across.ts +149 -0
  760. package/src/{apps/data/FundingQuoteProviders.test.ts → internal/funding/providers/index.test.ts} +178 -157
  761. package/src/internal/funding/providers/relay.test.ts +564 -0
  762. package/src/internal/funding/providers/relay.ts +1060 -0
  763. package/src/internal/funding/providers/rhino.ts +139 -0
  764. package/src/internal/funding/providers/squid.ts +151 -0
  765. package/src/internal/funding/providers/symbiosis.ts +221 -0
  766. package/src/internal/index.test.ts +5 -1
  767. package/src/internal/index.ts +5 -1
  768. package/src/internal/webhookDestinations/url.ts +49 -45
  769. package/src/providers/index.test.ts +14 -0
  770. package/src/providers/index.ts +54 -0
  771. package/dist/apps/data/FundingQuoteProviders.d.ts +0 -174
  772. package/dist/apps/data/FundingQuoteProviders.d.ts.map +0 -1
  773. package/dist/apps/data/FundingQuoteProviders.js +0 -775
  774. package/dist/apps/data/FundingQuoteProviders.js.map +0 -1
  775. package/dist/apps/data/routes/funding.d.ts.map +0 -1
  776. package/dist/apps/data/routes/funding.js +0 -410
  777. package/dist/apps/data/routes/funding.js.map +0 -1
  778. package/dist/internal/FundingQuotes.d.ts +0 -864
  779. package/dist/internal/FundingQuotes.d.ts.map +0 -1
  780. package/dist/internal/FundingQuotes.js +0 -672
  781. package/dist/internal/FundingQuotes.js.map +0 -1
  782. package/src/apps/data/FundingQuoteProviders.ts +0 -1043
  783. package/src/apps/data/routes/funding.test.ts +0 -503
  784. package/src/apps/data/routes/funding.ts +0 -604
  785. package/src/internal/FundingQuotes.test.ts +0 -456
  786. package/src/internal/FundingQuotes.ts +0 -944
@@ -1,21 +1,54 @@
1
- import type * as FundingQuotes from './FundingQuotes.js'
1
+ import type * as FundingProvider from './funding/Provider.js'
2
2
  import type * as Log from './Log.js'
3
3
 
4
- test('bounds funding provider metric identifiers', () => {
5
- const provider = null as never as FundingQuotes.ProviderId
4
+ test('accepts deployment-supplied funding provider identifiers', () => {
5
+ const provider = null as never as FundingProvider.ProviderId
6
6
  const id: Log.FundingProviderAttempt['id'] = provider
7
- const provider_roundTrip: FundingQuotes.ProviderId = id
7
+ const provider_roundTrip: FundingProvider.ProviderId = id
8
8
  void provider_roundTrip
9
9
 
10
10
  const attempt = {
11
11
  durationMs: 1,
12
12
  id: 'relay',
13
- operation: 'quote/v2',
13
+ operation: 'getQuote',
14
14
  outcome: 'available',
15
15
  } satisfies Log.FundingProviderAttempt
16
16
  void attempt
17
17
 
18
- // @ts-expect-error arbitrary provider names would create unbounded metric tags
19
- const invalid: Log.FundingProviderAttempt['id'] = 'user-controlled-provider'
20
- void invalid
18
+ const custom: Log.FundingProviderAttempt['id'] = 'custom-bridge'
19
+ void custom
20
+ })
21
+
22
+ test('bounds sponsorship diagnostics', () => {
23
+ const reasons = [
24
+ 'api_key_forbidden',
25
+ 'api_key_required',
26
+ 'billing_past_due',
27
+ 'billing_required',
28
+ 'chain_id_unsupported',
29
+ 'fee_token_unsupported',
30
+ 'internal_error',
31
+ 'production_api_key_required',
32
+ 'spend_limit_exceeded',
33
+ 'tx_fee_limit_exceeded',
34
+ ] as const satisfies readonly Log.SponsorshipReason[]
35
+ expectTypeOf<(typeof reasons)[number]>().toEqualTypeOf<Log.SponsorshipReason>()
36
+
37
+ const sponsorship = {
38
+ chainId: 4217,
39
+ method: 'eth_signRawTransaction',
40
+ outcome: 'rejected',
41
+ payloadHash: `0x${'aa'.repeat(32)}`,
42
+ reason: 'production_api_key_required',
43
+ rejections: 1,
44
+ } satisfies Log.Sponsorship
45
+ void sponsorship
46
+
47
+ // @ts-expect-error arbitrary method names would create unbounded log values
48
+ const method: Log.SponsorshipMethod = 'wallet_userControlled'
49
+ void method
50
+
51
+ // @ts-expect-error arbitrary reasons would create unbounded log values
52
+ const reason: Log.SponsorshipReason = 'user_controlled_reason'
53
+ void reason
21
54
  })
@@ -1,5 +1,6 @@
1
1
  import { Hono } from 'hono'
2
2
  import { requestId } from 'hono/request-id'
3
+ import type { Hex } from 'ox'
3
4
 
4
5
  import * as Log from './Log.js'
5
6
  import * as Response from './Response.js'
@@ -50,12 +51,64 @@ describe('middleware', () => {
50
51
  `)
51
52
  })
52
53
 
54
+ test('includes a failed optional funding transfer count', async () => {
55
+ const entries: Log.Entry[] = []
56
+ const api = app({ emit: (entry) => void entries.push(entry) })
57
+ api.get('/v1/funding/transfers', (c) => {
58
+ c.set('fundingTransferCountFailed', true)
59
+ return c.json({ data: [], nextCursor: null }, 200)
60
+ })
61
+
62
+ await api.request('/v1/funding/transfers?include=totalCount')
63
+
64
+ expect(stable(entries[0]!)).toMatchInlineSnapshot(`
65
+ {
66
+ "fundingTransferCountFailed": true,
67
+ "level": "info",
68
+ "method": "GET",
69
+ "path": "/v1/funding/transfers",
70
+ "query": "include=totalCount",
71
+ "route": "/v1/funding/transfers",
72
+ "status": 200,
73
+ }
74
+ `)
75
+ })
76
+
77
+ test('keeps the longest duration when a timing name repeats', async () => {
78
+ vi.useFakeTimers()
79
+ try {
80
+ const entries: Log.Entry[] = []
81
+ const api = app({ emit: (entry) => void entries.push(entry) })
82
+ api.get('/', async (c) => {
83
+ await Timing.time(c, 'transactions', () => vi.advanceTimersByTime(20))
84
+ await Timing.time(c, 'transactions', () => vi.advanceTimersByTime(5))
85
+ return c.json({ ok: true }, 200)
86
+ })
87
+
88
+ await api.request('/')
89
+
90
+ expect(entries[0]?.timings).toMatchInlineSnapshot(`
91
+ {
92
+ "transactions": 20,
93
+ }
94
+ `)
95
+ } finally {
96
+ vi.useRealTimers()
97
+ }
98
+ })
99
+
53
100
  test('includes the caller principal, never the raw token', async () => {
54
101
  const entries: Log.Entry[] = []
55
102
  const api = app({ emit: (entry) => void entries.push(entry) })
56
103
  api.use('*', async (c, next) => {
57
104
  c.set('principal', {
58
- apiKey: { environment: 'production', id: 'key_1', orgId: 'org_1', scopes: ['data:read'] },
105
+ apiKey: {
106
+ allowedIps: [],
107
+ environment: 'production',
108
+ id: 'key_1',
109
+ orgId: 'org_1',
110
+ scopes: ['data:read'],
111
+ },
59
112
  environment: 'production',
60
113
  id: 'key_1',
61
114
  orgId: 'org_1',
@@ -174,6 +227,92 @@ describe('middleware', () => {
174
227
  `)
175
228
  })
176
229
 
230
+ test('includes bounded sponsorship rejection diagnostics', async () => {
231
+ const entries: Log.Entry[] = []
232
+ const api = app({ emit: (entry) => void entries.push(entry) })
233
+ api.post('/rpc/sponsor', (c) => {
234
+ const body = {
235
+ error: {
236
+ code: -32602,
237
+ data: { code: 'production_api_key_required' },
238
+ message: 'Sponsorship rejected.',
239
+ },
240
+ id: 1,
241
+ jsonrpc: '2.0',
242
+ }
243
+ c.set('rpcResponse', Log.rpcErrors(body))
244
+ c.set('sponsorship', {
245
+ chainId: 4217,
246
+ method: 'eth_signRawTransaction',
247
+ outcome: 'rejected',
248
+ payloadHash: `0x${'aa'.repeat(32)}` as Hex.Hex,
249
+ reason: 'production_api_key_required',
250
+ rejections: 1,
251
+ })
252
+ return c.json(body)
253
+ })
254
+
255
+ await api.request('/rpc/sponsor', { method: 'POST' })
256
+
257
+ expect(stable(entries[0]!)).toMatchInlineSnapshot(`
258
+ {
259
+ "level": "warn",
260
+ "method": "POST",
261
+ "path": "/rpc/sponsor",
262
+ "route": "/rpc/sponsor",
263
+ "rpc": {
264
+ "code": -32602,
265
+ "dataCode": "production_api_key_required",
266
+ "errors": 1,
267
+ },
268
+ "sponsorship": {
269
+ "chainId": 4217,
270
+ "method": "eth_signRawTransaction",
271
+ "outcome": "rejected",
272
+ "payloadHash": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
273
+ "reason": "production_api_key_required",
274
+ "rejections": 1,
275
+ },
276
+ "status": 200,
277
+ }
278
+ `)
279
+ })
280
+
281
+ test('records an MPP relay failure returned with HTTP 200', async () => {
282
+ const entries: Log.Entry[] = []
283
+ const api = app({ emit: (entry) => void entries.push(entry) })
284
+ api.post('/v1/mpp/validate', (c) => {
285
+ c.set('mpp', {
286
+ chainId: 4217,
287
+ errorCode: 'unknown',
288
+ feePayer: false,
289
+ operation: 'verify',
290
+ outcome: 'failure',
291
+ })
292
+ return c.json({ success: false }, 200)
293
+ })
294
+
295
+ const response = await api.request('/v1/mpp/validate', { method: 'POST' })
296
+
297
+ expect(response.status).toBe(200)
298
+ expect(stable(entries[0]!)).toMatchInlineSnapshot(`
299
+ {
300
+ "level": "error",
301
+ "method": "POST",
302
+ "mpp": {
303
+ "chainId": 4217,
304
+ "errorCode": "unknown",
305
+ "feePayer": false,
306
+ "operation": "verify",
307
+ "outcome": "failure",
308
+ },
309
+ "path": "/v1/mpp/validate",
310
+ "route": "/v1/mpp/validate",
311
+ "status": 200,
312
+ }
313
+ `)
314
+ })
315
+
177
316
  test('logs JSON-RPC server errors at error level', async () => {
178
317
  const entries: Log.Entry[] = []
179
318
  const api = app({ emit: (entry) => void entries.push(entry) })
@@ -196,7 +335,24 @@ describe('middleware', () => {
196
335
  expect(entries[0]?.level).toBe('error')
197
336
  })
198
337
 
199
- test('counts batch JSON-RPC errors without retaining mixed codes', async () => {
338
+ test('logs internal sponsorship failures at error level', async () => {
339
+ const entries: Log.Entry[] = []
340
+ const api = app({ emit: (entry) => void entries.push(entry) })
341
+ api.post('/rpc/sponsor', (c) => {
342
+ c.set('sponsorship', {
343
+ internalErrors: 1,
344
+ outcome: 'rejected',
345
+ rejections: 1,
346
+ })
347
+ return c.json({ id: 1, jsonrpc: '2.0', result: {} })
348
+ })
349
+
350
+ await api.request('/rpc/sponsor', { method: 'POST' })
351
+
352
+ expect(entries[0]?.level).toBe('error')
353
+ })
354
+
355
+ test('escalates mixed JSON-RPC batches containing server errors', async () => {
200
356
  const entries: Log.Entry[] = []
201
357
  const api = app({ emit: (entry) => void entries.push(entry) })
202
358
  api.post('/rpc/relay', (c) => {
@@ -217,12 +373,43 @@ describe('middleware', () => {
217
373
 
218
374
  expect(stable(entries[0]!)).toMatchInlineSnapshot(`
219
375
  {
220
- "level": "warn",
376
+ "level": "error",
221
377
  "method": "POST",
222
378
  "path": "/rpc/relay",
223
379
  "route": "/rpc/relay",
224
380
  "rpc": {
225
381
  "errors": 2,
382
+ "serverErrors": 1,
383
+ },
384
+ "status": 200,
385
+ }
386
+ `)
387
+ })
388
+
389
+ test('keeps routine node rejections out of server-error alerts', async () => {
390
+ const entries: Log.Entry[] = []
391
+ const api = app({ emit: (entry) => void entries.push(entry) })
392
+ api.post('/rpc/relay', (c) => {
393
+ const body = {
394
+ error: { code: -32_000, message: 'insufficient funds' },
395
+ id: 1,
396
+ jsonrpc: '2.0',
397
+ }
398
+ c.set('rpcResponse', Log.rpcErrors(body))
399
+ return c.json(body)
400
+ })
401
+
402
+ await api.request('/rpc/relay', { method: 'POST' })
403
+
404
+ expect(stable(entries[0]!)).toMatchInlineSnapshot(`
405
+ {
406
+ "level": "warn",
407
+ "method": "POST",
408
+ "path": "/rpc/relay",
409
+ "route": "/rpc/relay",
410
+ "rpc": {
411
+ "code": -32000,
412
+ "errors": 1,
226
413
  },
227
414
  "status": 200,
228
415
  }
@@ -237,7 +424,7 @@ describe('middleware', () => {
237
424
  code: 'UNAUTHORIZED',
238
425
  failure: 'http',
239
426
  id: 'relay',
240
- operation: 'quote/v2',
427
+ operation: 'getQuote',
241
428
  status: 401,
242
429
  })
243
430
  return Response.error(c, {
@@ -259,7 +446,7 @@ describe('middleware', () => {
259
446
  "code": "UNAUTHORIZED",
260
447
  "failure": "http",
261
448
  "id": "relay",
262
- "operation": "quote/v2",
449
+ "operation": "getQuote",
263
450
  "status": 401,
264
451
  },
265
452
  "route": "/provider",
@@ -276,14 +463,14 @@ describe('middleware', () => {
276
463
  {
277
464
  durationMs: 12.5,
278
465
  id: 'relay',
279
- operation: 'quote/v2',
466
+ operation: 'getQuote',
280
467
  outcome: 'available',
281
468
  },
282
469
  {
283
470
  durationMs: 25,
284
471
  failure: 'timeout',
285
472
  id: 'across',
286
- operation: 'swap/approval',
473
+ operation: 'getQuote',
287
474
  outcome: 'failed',
288
475
  },
289
476
  ])
@@ -298,14 +485,14 @@ describe('middleware', () => {
298
485
  {
299
486
  "durationMs": 12.5,
300
487
  "id": "relay",
301
- "operation": "quote/v2",
488
+ "operation": "getQuote",
302
489
  "outcome": "available",
303
490
  },
304
491
  {
305
492
  "durationMs": 25,
306
493
  "failure": "timeout",
307
494
  "id": "across",
308
- "operation": "swap/approval",
495
+ "operation": "getQuote",
309
496
  "outcome": "failed",
310
497
  },
311
498
  ],
@@ -1,24 +1,42 @@
1
1
  import type { MiddlewareHandler } from 'hono'
2
2
  import type { RequestIdVariables } from 'hono/request-id'
3
+ import type { Hex } from 'ox'
3
4
 
4
5
  import * as ApiKey from '../ApiKey.js'
5
6
  import type * as Auth from './Auth.js'
6
7
  import type * as EdgeCache from './EdgeCache.js'
7
- import type * as FundingQuotes from './FundingQuotes.js'
8
+ import type * as FundingProvider from './funding/Provider.js'
8
9
  import type * as Timing from './Timing.js'
9
10
 
10
11
  /** Hono variables read by the request logger and written by other layers. */
11
12
  export type Variables = {
13
+ /** Whether the original request exception was already reported. */
14
+ errorCaptured?: boolean | undefined
12
15
  /** Stable error code recorded by `Response.error` for the request log entry. */
13
16
  errorCode?: string | undefined
17
+ /** Bounded MPP relay outcome emitted by the credential routes. */
18
+ mpp?: Entry['mpp'] | undefined
14
19
  /** Bounded outcomes for funding providers attempted by the request. */
15
20
  fundingProviderAttempts?: Entry['fundingProviderAttempts'] | undefined
16
- /** Redacted provider failure details recorded by an upstream adapter. */
21
+ /** Whether the optional funding transfer count query failed. */
22
+ fundingTransferCountFailed?: true | undefined
23
+ /** Redacted provider failure details recorded by an upstream provider. */
17
24
  providerFailure?: Entry['provider'] | undefined
18
- /** Redacted provider failures when multiple upstream adapters fail. */
25
+ /** Redacted provider failures when multiple upstream providers fail. */
19
26
  providerFailures?: Entry['providerFailures'] | undefined
20
27
  /** Bounded JSON-RPC failure metadata recorded by a composed RPC handler. */
21
28
  rpcResponse?: Entry['rpc'] | undefined
29
+ /** Bounded sponsorship rejection details recorded by the relay app. */
30
+ sponsorship?: Sponsorship | undefined
31
+ }
32
+
33
+ type ErrorMetadata = {
34
+ /** Bounded provider attempts attached to a caught error. */
35
+ fundingProviderAttempts?: Entry['fundingProviderAttempts'] | undefined
36
+ /** Redacted first provider failure attached to a caught error. */
37
+ providerFailure?: Entry['provider'] | undefined
38
+ /** Redacted provider failures attached to a caught error. */
39
+ providerFailures?: Entry['providerFailures'] | undefined
22
40
  }
23
41
 
24
42
  /** Hono environment shape used by the request logger. */
@@ -37,10 +55,12 @@ export type Level = 'error' | 'info' | 'warn'
37
55
 
38
56
  /** Redacted upstream provider failure details. */
39
57
  export type ProviderFailure = {
58
+ /** Chain whose upstream request failed, when the request selected one. */
59
+ chainId?: number | undefined
40
60
  /** Stable provider error code, when one is safe to retain. */
41
61
  code?: string | undefined
42
62
  /** Failure boundary that rejected the provider request. */
43
- failure: 'http' | 'network' | 'payload' | 'rate_limit' | 'timeout' | 'unknown'
63
+ failure: 'http' | 'network' | 'payload' | 'query' | 'rate_limit' | 'timeout' | 'unknown'
44
64
  /** Provider identifier. */
45
65
  id: string
46
66
  /** Provider operation identifier. */
@@ -56,23 +76,65 @@ export type FundingProviderAttempt = {
56
76
  /** Failure class, present only when the provider attempt failed. */
57
77
  failure?: ProviderFailure['failure'] | undefined
58
78
  /** Provider identifier. */
59
- id: FundingQuotes.ProviderId
79
+ id: FundingProvider.ProviderId
60
80
  /** Stable upstream operation identifier. */
61
- operation: string
81
+ operation: FundingProvider.ProviderOperation
62
82
  /** Provider attempt outcome. */
63
83
  outcome: 'available' | 'failed' | 'thin' | 'unavailable'
64
84
  }
65
85
 
86
+ /** JSON-RPC methods that can request managed sponsorship. */
87
+ export type SponsorshipMethod =
88
+ | 'eth_fillTransaction'
89
+ | 'eth_sendRawTransaction'
90
+ | 'eth_sendRawTransactionSync'
91
+ | 'eth_signRawTransaction'
92
+
93
+ /** Stable client error codes for sponsorship rejections. */
94
+ export type SponsorshipReason =
95
+ | 'api_key_forbidden'
96
+ | 'api_key_required'
97
+ | 'billing_past_due'
98
+ | 'billing_required'
99
+ | 'chain_id_unsupported'
100
+ | 'fee_token_unsupported'
101
+ | 'internal_error'
102
+ | 'production_api_key_required'
103
+ | 'spend_limit_exceeded'
104
+ | 'tx_fee_limit_exceeded'
105
+
106
+ /** Bounded diagnostics for sponsorship rejections in one JSON-RPC request. */
107
+ export type Sponsorship = {
108
+ /** Common target chain, absent when rejected batch items disagree or are invalid. */
109
+ chainId?: number | undefined
110
+ /** Number of internal sponsorship failures, capped at 65,535; absent when zero. */
111
+ internalErrors?: number | undefined
112
+ /** Common sponsorship method, absent when rejected batch items use different methods. */
113
+ method?: SponsorshipMethod | undefined
114
+ /** Sponsorship request outcome. */
115
+ outcome: 'rejected'
116
+ /** Keccak256 of the caller's raw transaction, present only for a single-request body. */
117
+ payloadHash?: Hex.Hex | undefined
118
+ /** Common client error code, absent when rejected batch items have different codes. */
119
+ reason?: SponsorshipReason | undefined
120
+ /** Number of sponsorship policy rejections, capped at 65,535. */
121
+ rejections: number
122
+ }
123
+
66
124
  /** One canonical request log entry. */
67
125
  export type Entry = {
68
126
  /** `'hit'` when the edge response cache served the request without reaching the origin handlers. */
69
127
  cache?: 'hit' | undefined
70
128
  /** Total request duration in milliseconds. */
71
129
  duration: number
130
+ /** Whether the original request exception was already reported. */
131
+ errorCaptured?: boolean | undefined
72
132
  /** Stable error code when the response is a JSON error envelope (e.g. `not_found`, `api_key_invalid`). */
73
133
  errorCode?: string | undefined
74
134
  /** Bounded funding provider attempts made while serving the request. */
75
135
  fundingProviderAttempts?: readonly FundingProviderAttempt[] | undefined
136
+ /** Whether the optional funding transfer count query failed. */
137
+ fundingTransferCountFailed?: true | undefined
76
138
  /** Log level: 5xx `error`; 4xx or JSON-RPC failure `warn`; otherwise `info`. */
77
139
  level: Level
78
140
  /** Request method. */
@@ -81,6 +143,21 @@ export type Entry = {
81
143
  path: string
82
144
  /** MPP payment reason when the request was paid per call. */
83
145
  payment?: Auth.Payment['reason'] | undefined
146
+ /** Bounded outcome for an MPP relay operation. */
147
+ mpp?: {
148
+ /** Resolved Tempo chain selected by the credential. */
149
+ chainId: number
150
+ /** Stable relay failure code, absent when the operation succeeded. */
151
+ errorCode?: string | undefined
152
+ /** Idempotency claim outcome for broadcast operations. */
153
+ idempotency?: 'claimed' | 'pending' | 'replay' | undefined
154
+ /** Whether a fee payer was supplied for the credential. */
155
+ feePayer: boolean
156
+ /** Relay route operation. */
157
+ operation: 'broadcast' | 'verify'
158
+ /** Relay operation outcome, independent of the HTTP status. */
159
+ outcome: 'failure' | 'success'
160
+ }
84
161
  /** Caller identity. Raw API-key tokens and the super admin secret are never logged. */
85
162
  principal?:
86
163
  | {
@@ -100,9 +177,9 @@ export type Entry = {
100
177
  type: 'api_key' | 'public' | 'session' | 'super_admin'
101
178
  }
102
179
  | undefined
103
- /** Redacted upstream provider failure details, when an adapter request fails. */
180
+ /** Redacted upstream provider failure details, when a provider request fails. */
104
181
  provider?: ProviderFailure | undefined
105
- /** Redacted failures for every provider when multiple adapters fail. */
182
+ /** Redacted failures for every provider when multiple providers fail. */
106
183
  providerFailures?: readonly ProviderFailure[] | undefined
107
184
  /** Raw query string (no leading `?`) with API-key tokens redacted, when present. */
108
185
  query?: string | undefined
@@ -131,10 +208,14 @@ export type Entry = {
131
208
  dataCode?: string | undefined
132
209
  /** Number of failed responses in the single or batch JSON-RPC response. */
133
210
  errors: number
211
+ /** Number of JSON-RPC server errors, capped at 65,535; absent when zero. */
212
+ serverErrors?: number | undefined
134
213
  }
214
+ /** Bounded sponsorship rejection diagnostics, without request or response bodies. */
215
+ sponsorship?: Sponsorship | undefined
135
216
  /** HTTP response status code. JSON-RPC failures retain their protocol-native `200`. */
136
217
  status: number
137
- /** Upstream operation durations in milliseconds, from the request's Server-Timing metrics (e.g. RPC and TIDX calls). */
218
+ /** Longest upstream operation duration per Server-Timing name, in milliseconds (e.g. RPC and TIDX calls). */
138
219
  timings?: Record<string, number> | undefined
139
220
  }
140
221
 
@@ -169,14 +250,23 @@ export function middleware<environment extends Environment = Environment>(
169
250
  // Hono cannot resolve variable types through the generic `environment`,
170
251
  // so shared-variable reads are cast from the environment contract above
171
252
  // (the same pattern EdgeCache uses for its cross-layer reads).
253
+ const error = c.error as ErrorMetadata | undefined
172
254
  const principal = c.get('principal' as never) as Auth.Principal | undefined
255
+ const errorCaptured = c.get('errorCaptured' as never) as boolean | undefined
173
256
  const errorCode = c.get('errorCode' as never) as string | undefined
174
- const fundingProviderAttempts = c.get('fundingProviderAttempts' as never) as
175
- | Entry['fundingProviderAttempts']
257
+ const fundingProviderAttempts =
258
+ error?.fundingProviderAttempts ??
259
+ (c.get('fundingProviderAttempts' as never) as Entry['fundingProviderAttempts'] | undefined)
260
+ const fundingTransferCountFailed = c.get('fundingTransferCountFailed' as never) as
261
+ | true
176
262
  | undefined
177
- const provider = c.get('providerFailure' as never) as Entry['provider']
178
- const providerFailures = c.get('providerFailures' as never) as Entry['providerFailures']
263
+ const mpp = c.get('mpp' as never) as Entry['mpp']
264
+ const provider =
265
+ error?.providerFailure ?? (c.get('providerFailure' as never) as Entry['provider'])
266
+ const providerFailures =
267
+ error?.providerFailures ?? (c.get('providerFailures' as never) as Entry['providerFailures'])
179
268
  const rpc = c.get('rpcResponse' as never) as Entry['rpc']
269
+ const sponsorship = c.get('sponsorship' as never) as Entry['sponsorship']
180
270
 
181
271
  // The `request` total metric duplicates `duration` (measured here, one
182
272
  // layer further out), so only operation timings are kept.
@@ -184,7 +274,14 @@ export function middleware<environment extends Environment = Environment>(
184
274
  (metric) => metric.name !== 'request',
185
275
  )
186
276
  const timings = metrics?.length
187
- ? Object.fromEntries(metrics.map((metric) => [metric.name, round(metric.duration)]))
277
+ ? Object.fromEntries(
278
+ metrics.reduce((result, metric) => {
279
+ const duration = round(metric.duration)
280
+ const existing = result.get(metric.name)
281
+ if (existing === undefined || duration > existing) result.set(metric.name, duration)
282
+ return result
283
+ }, new Map<string, number>()),
284
+ )
188
285
  : undefined
189
286
 
190
287
  const rateLimit = (() => {
@@ -204,15 +301,22 @@ export function middleware<environment extends Environment = Environment>(
204
301
  const result = fn({
205
302
  ...(c.get('edgeCacheStatus' as never) === 'hit' ? { cache: 'hit' as const } : {}),
206
303
  duration: round(duration),
304
+ ...(errorCaptured === undefined ? {} : { errorCaptured }),
207
305
  ...(errorCode === undefined ? {} : { errorCode }),
208
306
  ...(fundingProviderAttempts === undefined ? {} : { fundingProviderAttempts }),
307
+ ...(fundingTransferCountFailed === undefined ? {} : { fundingTransferCountFailed }),
209
308
  level:
210
- status >= 500 || rpcServerError(rpc?.code)
309
+ status >= 500 ||
310
+ rpcServerError(rpc?.code) ||
311
+ (rpc?.serverErrors ?? 0) > 0 ||
312
+ (sponsorship?.internalErrors ?? 0) > 0 ||
313
+ mpp?.errorCode === 'unknown'
211
314
  ? 'error'
212
- : status >= 400 || rpc
315
+ : status >= 400 || rpc || sponsorship
213
316
  ? 'warn'
214
317
  : 'info',
215
318
  method: c.req.method,
319
+ ...(mpp === undefined ? {} : { mpp }),
216
320
  path: url.pathname,
217
321
  ...(principal?.payment === undefined ? {} : { payment: principal.payment.reason }),
218
322
  ...(principal === undefined
@@ -239,6 +343,7 @@ export function middleware<environment extends Environment = Environment>(
239
343
  requestId: c.get('requestId' as never) as string,
240
344
  route: c.req.routePath,
241
345
  ...(rpc === undefined ? {} : { rpc }),
346
+ ...(sponsorship === undefined ? {} : { sponsorship }),
242
347
  status,
243
348
  ...(timings === undefined ? {} : { timings }),
244
349
  })
@@ -289,17 +394,19 @@ export function rpcErrors(body: unknown): Entry['rpc'] {
289
394
 
290
395
  const codes = new Set(errors.map((error) => error.code))
291
396
  const dataCodes = new Set(errors.map((error) => error.dataCode).filter(Boolean))
397
+ const serverErrors = errors.filter((error) => rpcServerError(error.code)).length
292
398
  return {
293
399
  ...(codes.size === 1 ? { code: errors[0]!.code } : {}),
294
400
  ...(dataCodes.size === 1 && errors.every((error) => error.dataCode !== undefined)
295
401
  ? { dataCode: errors[0]!.dataCode }
296
402
  : {}),
297
403
  errors: Math.min(errors.length, 65_535),
404
+ ...(serverErrors === 0 ? {} : { serverErrors: Math.min(serverErrors, 65_535) }),
298
405
  }
299
406
  }
300
407
 
301
408
  function rpcServerError(code: number | undefined) {
302
- return code === -32603 || (code !== undefined && code >= -32099 && code <= -32000)
409
+ return code === -32603
303
410
  }
304
411
 
305
412
  export declare namespace middleware {