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
@@ -11,18 +11,20 @@ import * as Path from '../../internal/Path.js'
11
11
  import * as Response from '../../internal/Response.js'
12
12
  import * as Schema from '../../internal/Schema.js'
13
13
  import * as Tidx from '../../internal/Tidx.js'
14
+ import * as Timing from '../../internal/Timing.js'
14
15
  import * as Viem from '../../internal/Viem.js'
15
16
  import * as Scope from '../../Scope.js'
16
17
  import * as Metadata from '../metadata.js'
18
+
17
19
  import type * as FxOracle from './FxOracle.js'
18
20
 
19
21
  import { transactions as transactionActivities } from './routes/activities.js'
20
22
  import { addresses } from './routes/addresses.js'
21
23
  import { blocks, blocksByTimestampCompat } from './routes/blocks.js'
22
24
  import { coingecko } from './routes/coingecko.js'
25
+ import { earn } from './routes/earn.js'
23
26
  import { exchanges } from './routes/exchanges.js'
24
27
  import { feeAmm } from './routes/fee-amm.js'
25
- import { funding } from './routes/funding.js'
26
28
  import { indexer } from './routes/indexer.js'
27
29
  import { receipts } from './routes/receipts.js'
28
30
  import { rpc } from './routes/rpc.js'
@@ -32,10 +34,11 @@ import { transactions } from './routes/transactions.js'
32
34
  import { transfers } from './routes/transfers.js'
33
35
  import { verifiedTokens } from './routes/verified-tokens.js'
34
36
  import { schema as webhookSchema, webhooks } from './routes/webhooks.js'
37
+ import { zones } from './routes/zones.js'
35
38
 
36
39
  /**
37
- * The chain-data route group extends app context with TIDX, assets, zones,
38
- * verified tokens, and webhooks, and exposes indexed and RPC-backed reads.
40
+ * The chain-data route group extends app context with TIDX, assets, verified
41
+ * tokens, and webhooks, and exposes indexed and RPC-backed reads.
39
42
  *
40
43
  * ```ts
41
44
  * App.create(options).route('/', data())
@@ -43,6 +46,8 @@ import { schema as webhookSchema, webhooks } from './routes/webhooks.js'
43
46
  */
44
47
  export function data(options: data.Options = {}) {
45
48
  const { assets, tidx } = options
49
+ const configuredChainIds =
50
+ typeof tidx === 'function' ? [] : Viem.configuredChainIds(tidx?.baseUrl)
46
51
  const webhook =
47
52
  options.webhook === false
48
53
  ? undefined
@@ -50,11 +55,17 @@ export function data(options: data.Options = {}) {
50
55
  supportedChainIds: [Viem.chainId.mainnet, Viem.chainId.testnet],
51
56
  })
52
57
 
53
- // Zone endpoints are explicit trust boundaries; the API never derives them.
54
- const zones = new Map((options.zones ?? []).map((zone) => [zone.chainId, zone]))
55
58
  const dataRouteHandlers = new Set<unknown>()
56
59
 
57
60
  const getTidx = Tidx.createGetClient({ tidx })
61
+ const earn_routes = earn({ fx: options.fx })
62
+ const indexer_routes = indexer()
63
+ const indexerRouteHandlers = new Set(indexer_routes.routes.map((route) => route.handler))
64
+ const rpcOnlyRouteHandlers = new Set(
65
+ earn_routes.routes
66
+ .filter((route) => route.path === '/v1/earn/vaults/:vaultId/positions/:address')
67
+ .map((route) => route.handler),
68
+ )
58
69
 
59
70
  const app = new Hono<App.Environment>()
60
71
  // Publish the chain-data context vars for this group's handlers. Runs after
@@ -65,16 +76,26 @@ export function data(options: data.Options = {}) {
65
76
  const supportedChainIds = new Set<number>([
66
77
  ...c.get('supportedChainIds'),
67
78
  ...Object.keys(Tidx.url).map(Number),
68
- ...zones.keys(),
79
+ ...configuredChainIds,
69
80
  ])
70
81
  c.set('getAsset', createGetAsset({ assets, basePath: c.get('basePath'), origin: new URL(c.req.url).origin })) // prettier-ignore
71
82
  c.set('getClient', (chainId) => getClient(chainId ?? c.get('chainId')))
72
- c.set('getTidx', (chainId) => getTidx(chainId ?? c.get('chainId'), Auth.getPrincipal(c)))
83
+ c.set('getTidx', (chainId) => {
84
+ const resolved = chainId ?? c.get('chainId')
85
+ const client = getTidx(resolved, {
86
+ principal: Auth.getPrincipal(c),
87
+ zone: c.get('zones').get(resolved),
88
+ })
89
+ return Tidx.observe(client, {
90
+ record: (failure) =>
91
+ c.set('providerFailure', failure ? { ...failure, chainId: resolved } : undefined),
92
+ time: (fn) => Timing.time(c, 'tidx', fn),
93
+ })
94
+ })
73
95
  c.set('supportedChainIds', supportedChainIds)
74
96
  c.set('tidx', tidx)
75
97
  c.set('verifiedTokens', options.verifiedTokens === false ? undefined : (options.verifiedTokens ?? {})) // prettier-ignore
76
98
  c.set('webhook', webhook)
77
- c.set('zones', zones)
78
99
  await next()
79
100
  })
80
101
  // Resolve one chain for every data route before auth and handlers use it.
@@ -85,6 +106,8 @@ export function data(options: data.Options = {}) {
85
106
  c,
86
107
  defaultChainId,
87
108
  handlers: dataRouteHandlers,
109
+ indexerHandlers: indexerRouteHandlers,
110
+ rpcOnlyHandlers: rpcOnlyRouteHandlers,
88
111
  })
89
112
  if (!selection.matched) return next()
90
113
  if (selection.conflict || selection.invalid)
@@ -93,19 +116,39 @@ export function data(options: data.Options = {}) {
93
116
  message: selection.conflict ? 'Conflicting chain ids' : 'Invalid chain id',
94
117
  status: 400,
95
118
  })
96
- if (!supportedChainIds.has(selection.chainId))
97
- return Response.unsupportedChainId(c, selection.chainId, supportedChainIds)
119
+ const principal = Auth.getPrincipal(c)
120
+ const rpc_config = c.get('rpc')
121
+ const tidx_config = c.get('tidx')
122
+ const zones = c.get('zones')
123
+ // Raw passthroughs and RPC-only reads need only RPC; composed data routes
124
+ // require both upstreams to avoid falling through to unrelated defaults.
125
+ const narrowedChainIds = new Set(
126
+ [...supportedChainIds].filter((chainId) => {
127
+ const context = { chainId, principal, zone: zones.get(chainId) }
128
+ const hasRpc = Viem.resolveRpc(rpc_config, context).url !== undefined
129
+ const hasTidx = Tidx.resolve(tidx_config, context).baseUrl !== undefined
130
+ if (selection.rpc || selection.rpcOnly) return hasRpc
131
+ if (selection.indexer) return hasTidx
132
+ return hasRpc && hasTidx
133
+ }),
134
+ )
135
+ c.set('supportedChainIds', narrowedChainIds)
136
+ if (!narrowedChainIds.has(selection.chainId))
137
+ return Response.unsupportedChainId(c, selection.chainId, narrowedChainIds)
98
138
  c.set('chainId', selection.chainId)
99
139
  return next()
100
140
  })
101
141
  // Zone data requires an issued scope. Raw RPC may instead forward the
102
142
  // caller's Zone token to the node that enforces account scoping.
103
143
  .use('*', async (c, next) => {
144
+ const zones = c.get('zones')
104
145
  if (zones.size === 0) return next()
105
146
  const selection = resolveChainSelector({
106
147
  c,
107
148
  defaultChainId: c.get('chainId'),
108
149
  handlers: dataRouteHandlers,
150
+ indexerHandlers: indexerRouteHandlers,
151
+ rpcOnlyHandlers: rpcOnlyRouteHandlers,
109
152
  })
110
153
  if (!selection.matched) return next()
111
154
  const chainId = c.get('chainId')
@@ -116,13 +159,14 @@ export function data(options: data.Options = {}) {
116
159
  const allowed =
117
160
  scopes?.includes(Scope.wildcard) ||
118
161
  scopes?.includes(`zone:${chainId}:read`) ||
162
+ scopes?.includes(`zone:${chainId}:write`) ||
119
163
  (selection.rpc && Boolean(c.req.header(ZoneRpcAuthentication.headerName)?.trim()))
120
164
  if (!allowed)
121
165
  return Response.error(c, {
122
166
  code: 'api_key_forbidden',
123
167
  message: selection.rpc
124
- ? `Chain id ${chainId} is a zone. Use an API key granting \`zone:${chainId}:read\`, or pass a Zone token via \`X-Authorization-Token\`.`
125
- : `Chain id ${chainId} is a zone. Use an API key granting \`zone:${chainId}:read\`.`,
168
+ ? `Chain id ${chainId} is a zone. Use an API key granting \`zone:${chainId}:read\` or \`zone:${chainId}:write\`, or pass a Zone token via \`X-Authorization-Token\`.`
169
+ : `Chain id ${chainId} is a zone. Use an API key granting \`zone:${chainId}:read\` or \`zone:${chainId}:write\`.`,
126
170
  status: 403,
127
171
  })
128
172
 
@@ -143,6 +187,8 @@ export function data(options: data.Options = {}) {
143
187
  c,
144
188
  defaultChainId: c.get('chainId'),
145
189
  handlers: dataRouteHandlers,
190
+ indexerHandlers: indexerRouteHandlers,
191
+ rpcOnlyHandlers: rpcOnlyRouteHandlers,
146
192
  })
147
193
  if (!selection.matched || !Viem.isMainnet(c.get('chainId'))) return next()
148
194
 
@@ -167,10 +213,10 @@ export function data(options: data.Options = {}) {
167
213
  })
168
214
  .route('/', addresses({ fx: options.fx }))
169
215
  .route('/', blocks())
216
+ .route('/', earn_routes)
170
217
  .route('/', exchanges({ fx: options.fx }))
171
218
  .route('/', feeAmm())
172
- .route('/', funding(options.funding))
173
- .route('/', indexer())
219
+ .route('/', indexer_routes)
174
220
  .route('/', receipts({ fx: options.fx }))
175
221
  .route('/', tokenlist())
176
222
  .route('/', tokens())
@@ -179,6 +225,7 @@ export function data(options: data.Options = {}) {
179
225
  .route('/', transfers({ fx: options.fx }))
180
226
  .route('/', verifiedTokens())
181
227
  .route('/', webhooks({ enabled: options.webhook !== false }))
228
+ .route('/', zones())
182
229
  .route('/', rpc())
183
230
  .route('/', coingecko())
184
231
  .route('/', blocksByTimestampCompat())
@@ -187,22 +234,24 @@ export function data(options: data.Options = {}) {
187
234
  c,
188
235
  defaultChainId: c.get('chainId'),
189
236
  handlers: dataRouteHandlers,
237
+ indexerHandlers: indexerRouteHandlers,
238
+ rpcOnlyHandlers: rpcOnlyRouteHandlers,
190
239
  })
191
240
  return (
192
241
  selection.matched &&
193
242
  !selection.conflict &&
194
243
  !selection.invalid &&
195
- !zones.has(selection.chainId)
244
+ !c.get('zones').has(selection.chainId)
196
245
  )
197
246
  }
198
247
  for (const route of app.routes) {
199
248
  if (route.method === 'ALL') continue
200
249
  dataRouteHandlers.add(route.handler)
201
- if (zones.size > 0) EdgeCache.setEligibility(route.handler, edgeCacheEligible)
250
+ EdgeCache.setEligibility(route.handler, edgeCacheEligible)
202
251
  }
203
252
  return Metadata.attach(app, {
204
253
  ...openapi,
205
- supportedChainIds: [...Object.keys(Tidx.url).map(Number), ...zones.keys()],
254
+ supportedChainIds: [...Object.keys(Tidx.url).map(Number), ...configuredChainIds],
206
255
  })
207
256
  }
208
257
 
@@ -211,8 +260,6 @@ export declare namespace data {
211
260
  type Options = {
212
261
  /** Static API asset store for the current runtime (e.g. `Assets.cloudflareR2(...)`). Omit to skip static assets — token logo URIs go unresolved. */
213
262
  assets?: Assets.Assets | undefined
214
- /** Funding quote provider configuration. */
215
- funding?: funding.Options | undefined
216
263
  /** FX configuration for the valuation endpoint. */
217
264
  fx?: Fx | undefined
218
265
  /** TIDX query client options. */
@@ -221,11 +268,6 @@ export declare namespace data {
221
268
  verifiedTokens?: VerifiedTokens | false | undefined
222
269
  /** Webhook feature configuration. Enabled by default (rows live in `db`); pass `false` to disable, leaving `/webhooks` mounted but returning `404` and hidden from the OpenAPI document. */
223
270
  webhook?: Webhook | false | undefined
224
- /**
225
- * Zone chains served by this deployment. REST and TIDX require a
226
- * `zone:<chainId>:read` scope; raw RPC may forward a Zone token instead.
227
- */
228
- zones?: readonly Zone[] | undefined
229
271
  }
230
272
 
231
273
  /** FX configuration for the valuation endpoint. */
@@ -234,14 +276,6 @@ export declare namespace data {
234
276
  oracle?: FxOracle.Oracle | undefined
235
277
  }
236
278
 
237
- /** One zone chain served by this deployment. */
238
- type Zone = {
239
- /** Zone chain id. Consumer-supplied literal; the API never derives zone chain ids. */
240
- chainId: number
241
- /** Zone RPC used when forwarding a caller-supplied Zone token. */
242
- forwardRpcUrl: string
243
- }
244
-
245
279
  /** Verified-token feature configuration. */
246
280
  type VerifiedTokens = {
247
281
  /**
@@ -260,13 +294,19 @@ function resolveChainSelector(options: {
260
294
  c: Context<App.Environment>
261
295
  defaultChainId: Viem.ChainId
262
296
  handlers: ReadonlySet<unknown>
297
+ indexerHandlers: ReadonlySet<unknown>
298
+ rpcOnlyHandlers: ReadonlySet<unknown>
263
299
  }) {
264
300
  let matched = false
265
301
  let path: string | undefined
266
302
  let rpc = false
303
+ let rpcOnly = false
304
+ let indexer = false
267
305
  for (const route of matchedRoutes(options.c)) {
268
306
  if (!options.handlers.has(route.handler)) continue
269
307
  matched = true
308
+ if (options.indexerHandlers.has(route.handler)) indexer = true
309
+ if (options.rpcOnlyHandlers.has(route.handler)) rpcOnly = true
270
310
  const selector = pathChainSelector(route.path, options.c.req.path)
271
311
  if (selector.name === undefined) continue
272
312
  path = selector.value
@@ -278,9 +318,11 @@ function resolveChainSelector(options: {
278
318
  return {
279
319
  chainId: options.defaultChainId,
280
320
  conflict: false,
321
+ indexer: false,
281
322
  invalid: false,
282
323
  matched: false,
283
324
  rpc: false,
325
+ rpcOnly: false,
284
326
  }
285
327
 
286
328
  const search = new URL(options.c.req.url).searchParams
@@ -294,9 +336,11 @@ function resolveChainSelector(options: {
294
336
  return {
295
337
  chainId: chainIds[0] ?? options.defaultChainId,
296
338
  conflict: chainIds.length > 1,
339
+ indexer,
297
340
  invalid: parsed.some((result) => !result.success),
298
341
  matched: true,
299
342
  rpc,
343
+ rpcOnly,
300
344
  }
301
345
  }
302
346
 
@@ -326,14 +370,18 @@ const openapi = {
326
370
  { name: 'Activities', description: 'A readable feed of what an account did onchain.' },
327
371
  { name: 'Balances', description: 'How much of each token an account holds.' },
328
372
  { name: 'Blocks', description: 'The ordered batches of transactions making up the chain.' },
373
+ { name: 'Earn', description: 'Vaults that earn yield from assets deposited on Tempo.' },
329
374
  { name: 'Exchange', description: "Tempo's built-in stablecoin exchange: pairs, swaps, orders, prices." }, // prettier-ignore
330
375
  { name: 'Fee AMM', description: 'Pools that convert stablecoins to pay fees.' },
331
- { name: 'Funding', description: 'Live quotes and supported inputs for funding Tempo.' },
332
376
  { name: 'Tokens', description: 'TIP-20 token details, supply, and holders.' },
333
377
  { name: 'Transactions', description: 'Transactions submitted to Tempo, and their receipts.' },
334
- { name: 'Transfers', description: 'Token movements from executing transactions.' },
378
+ {
379
+ name: 'Transfers',
380
+ description: 'Token movements from executing transactions.',
381
+ },
335
382
  { name: 'Verified Tokens', description: 'A curated, trusted list of TIP-20 tokens.' },
336
383
  { name: 'Webhooks', description: 'Get signed callbacks when onchain events happen.' },
384
+ { name: 'Zones', description: 'Private chain operations anchored to Tempo.' },
337
385
  { name: 'Indexer', description: "Run read-only SQL queries against Tempo's indexed data." },
338
386
  { name: 'RPC', description: 'Direct access to the chain over Ethereum JSON-RPC. Not part of the stable API contract; best-effort support only. No compatibility, latency, availability, or data-freshness guarantees. Breaking changes may happen with limited notice.' }, // prettier-ignore
339
387
  { name: 'CoinGecko', description: "Exchange data in CoinGecko's GeckoTerminal format." },
@@ -345,14 +393,15 @@ const openapi = {
345
393
  'Activities',
346
394
  'Balances',
347
395
  'Blocks',
396
+ 'Earn',
348
397
  'Exchange',
349
398
  'Fee AMM',
350
- 'Funding',
351
399
  'Tokens',
352
400
  'Transactions',
353
401
  'Transfers',
354
402
  'Verified Tokens',
355
403
  'Webhooks',
404
+ 'Zones',
356
405
  'Indexer',
357
406
  'RPC',
358
407
  'MCP',
@@ -415,7 +464,7 @@ function webhooksBlock() {
415
464
  function createGetAsset(options: createGetAsset.Options): App.GetAsset {
416
465
  const { assets, basePath, origin } = options
417
466
  if (!assets) return () => undefined
418
- return async (chainId, path) => {
467
+ const getAsset: App.GetAsset = async (chainId, path) => {
419
468
  const pathname = Path.join(basePath, 'assets', String(chainId), path)
420
469
  // `path` may be absolute (`Path.join` returns a leading slash); strip it so
421
470
  // the key is `:chainId/:path`, not `:chainId//:path`.
@@ -429,6 +478,16 @@ function createGetAsset(options: createGetAsset.Options): App.GetAsset {
429
478
  uri: new URL(pathname, origin).toString(),
430
479
  }
431
480
  }
481
+ const list = assets.list
482
+ if (list)
483
+ getAsset.list = async (chainId, path) => {
484
+ const prefix = `${chainId}/${path.replace(/^\/+/, '')}`
485
+ return (await list(prefix)).map((key) => ({
486
+ key,
487
+ uri: new URL(Path.join(basePath, 'assets', key), origin).toString(),
488
+ }))
489
+ }
490
+ return getAsset
432
491
  }
433
492
 
434
493
  declare namespace createGetAsset {
@@ -4,7 +4,7 @@ import * as Ttl from '../../internal/Ttl.js'
4
4
 
5
5
  /** A pluggable fiat FX rate oracle consumed by the valuation endpoint. */
6
6
  export type Oracle = {
7
- /** Oracle identifier, surfaced as the valuation's `pricing.source` (e.g. `ecb`). */
7
+ /** Oracle identifier, surfaced as valuation rate provenance (e.g. `ecb`). */
8
8
  name: string
9
9
  /** Fetches the oracle's current rate set. */
10
10
  rates: () => Promise<RateSet>
@@ -1,4 +1,3 @@
1
1
  export { data } from './App.js'
2
- export * as FundingQuoteProviders from './FundingQuoteProviders.js'
3
2
  export * as FxOracle from './FxOracle.js'
4
3
  export * as Sponsorships from '../relay/Sponsorships.js'
@@ -1,13 +1,18 @@
1
+ /** @module-tag localnet */
2
+
1
3
  import { Address, Hex, Value as core_Value } from 'ox'
2
4
  import { FxOracle } from 'tapimo/apps'
3
- import { encodeAbiParameters, encodeEventTopics } from 'viem'
4
- import { Abis } from 'viem/tempo'
5
+ import { createClient, encodeAbiParameters, encodeEventTopics, http } from 'viem'
6
+ import { sendTransactionSync } from 'viem/actions'
7
+ import { Abis, Actions, Addresses } from 'viem/tempo'
5
8
 
6
9
  import * as TestApp from '../../../../test/App.js'
7
10
  import * as Runtime from '../../../../test/runtime.js'
11
+ import * as Tempo from '../../../../test/Tempo.js'
8
12
  import * as Cursor from '../../../internal/Cursor.js'
9
13
  import * as Store from '../../../internal/Store.js'
10
14
  import * as Activities from './activities.js'
15
+ import * as Transactions from './transactions.js'
11
16
 
12
17
  // Deterministic EUR-based rate set so conversion math is exact in assertions.
13
18
  const fixed = FxOracle.from({
@@ -297,7 +302,7 @@ describe('GET /addresses/:address/activities', () => {
297
302
  const hash = runtime.fixtures!.faucetTransactionHashes[0]!
298
303
 
299
304
  const response = await client.v1.transactions[':transactionHash'].activities.$get(
300
- { param: { transactionHash: hash }, query: { denomination: 'AUD' } },
305
+ { param: { transactionHash: hash }, query: { 'valuation.currency': 'AUD' } },
301
306
  TestApp.auth,
302
307
  )
303
308
  const body = await TestApp.json(response, Activities.schema.getTransactionActivities.Response)
@@ -314,7 +319,7 @@ describe('GET /addresses/:address/activities', () => {
314
319
  amount: core_Value.format((BigInt(amount.baseUnits) * 16n) / 10n, 6),
315
320
  currency: 'AUD',
316
321
  })
317
- expect(body.meta?.pricing).toMatchInlineSnapshot(`
322
+ expect(body.meta?.valuation).toMatchInlineSnapshot(`
318
323
  {
319
324
  "asOf": "2026-01-01T00:00:00.000Z",
320
325
  "basis": "nominal",
@@ -330,15 +335,86 @@ describe('GET /addresses/:address/activities', () => {
330
335
 
331
336
  test('paginates with an opaque cursor', async () => {
332
337
  const first = await activities(accounts.keychain, { limit: '5' })
338
+ expect(first.nextCursor).toBeTypeOf('string')
333
339
  if (!first.nextCursor) return
334
340
  const response = await request(accounts.keychain, { limit: '5', cursor: first.nextCursor })
335
341
  expect(response.headers.get('cache-control')).toMatchInlineSnapshot(
336
342
  `"private, max-age=60, stale-while-revalidate=300"`,
337
343
  )
338
344
  const second = await TestApp.json(response, Activities.schema.getAddressActivities.Response)
339
- expect(Array.isArray(second.data)).toBe(true)
345
+ const firstHashes = new Set(
346
+ first.data.flatMap((entry) =>
347
+ entry.type === 'group'
348
+ ? entry.data.items.map((item) => item.transactionHash)
349
+ : [entry.transactionHash],
350
+ ),
351
+ )
352
+ const secondHashes = second.data.flatMap((entry) =>
353
+ entry.type === 'group'
354
+ ? entry.data.items.map((item) => item.transactionHash)
355
+ : [entry.transactionHash],
356
+ )
357
+ expect(secondHashes.every((hash) => !firstHashes.has(hash))).toBe(true)
340
358
  })
341
359
 
360
+ test.skipIf(runtime.mode !== 'localnet')(
361
+ 'keeps older activity behind a high-log transaction',
362
+ async () => {
363
+ const account = Tempo.accounts[3]
364
+ const wallet = createClient({
365
+ account,
366
+ chain: Tempo.chain,
367
+ transport: http(Tempo.rpcUrl),
368
+ })
369
+ await Actions.faucet.fundSync(Tempo.client, { account, timeout: 60_000 })
370
+ const approval_result = await Actions.token.approveSync(wallet, {
371
+ amount: 1n,
372
+ spender: Addresses.stablecoinDex,
373
+ token: Addresses.pathUsd,
374
+ })
375
+ const approval = 'receipt' in approval_result ? approval_result.receipt : approval_result
376
+ const highLog = await sendTransactionSync(wallet, {
377
+ account,
378
+ calls: Array.from({ length: 25 }, (_, index) =>
379
+ Actions.token.approve.call(wallet, {
380
+ amount: BigInt(index + 2),
381
+ spender: Addresses.stablecoinDex,
382
+ token: Addresses.pathUsd,
383
+ }),
384
+ ),
385
+ })
386
+ // The legacy `limit * 4` joined-row window stopped inside this transaction
387
+ // and never exposed the older approval to the activity paginator.
388
+ expect(highLog.logs.length).toBeGreaterThan(20)
389
+
390
+ const pending = new Set(
391
+ [approval.transactionHash, highLog.transactionHash].map((hash) => hash.toLowerCase()),
392
+ )
393
+ const deadline = Date.now() + 60_000
394
+ while (Date.now() < deadline && pending.size > 0) {
395
+ const response = await client.v1.transactions.$get(
396
+ { query: { limit: '200', sender: account.address } },
397
+ { headers: { 'cache-control': 'no-store', ...TestApp.auth.headers } },
398
+ )
399
+ if (response.status === 200) {
400
+ const body = await TestApp.json(response, Transactions.schema.getTransactions.Response)
401
+ for (const transaction of body.data) pending.delete(transaction.hash.toLowerCase())
402
+ }
403
+ if (pending.size > 0) await new Promise((resolve) => setTimeout(resolve, 250))
404
+ }
405
+ expect(pending).toEqual(new Set())
406
+
407
+ const body = await activities(account.address, { limit: '5' })
408
+ expect(
409
+ body.data.some(
410
+ (entry) =>
411
+ entry.type === 'approval' && entry.transactionHash === approval.transactionHash,
412
+ ),
413
+ ).toBe(true)
414
+ },
415
+ 120_000,
416
+ )
417
+
342
418
  test('validates denominations on empty feeds', async () => {
343
419
  const client = TestApp.client({ fx: { oracle: fixed } })
344
420
  const cursor = Cursor.encode([0, 0])
@@ -353,7 +429,7 @@ describe('GET /addresses/:address/activities', () => {
353
429
  const response = await client.v1.addresses[':address'].activities.$get(
354
430
  {
355
431
  param: { address: accounts.keychain },
356
- query: { cursor, denomination: 'JPY', limit: '5' },
432
+ query: { cursor, limit: '5', 'valuation.currency': 'JPY' },
357
433
  },
358
434
  TestApp.auth,
359
435
  )