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
@@ -6,10 +6,16 @@ import * as Activities from './apps/data/routes/activities.js'
6
6
  import * as Balances from './apps/data/routes/balances.js'
7
7
  import * as Billing from './apps/management/routes/billing.js'
8
8
  import * as Blocks from './apps/data/routes/blocks.js'
9
+ import * as Earn from './apps/data/routes/earn.js'
10
+ import type * as EarnRates from './internal/EarnRates.js'
9
11
  import * as Exchanges from './apps/data/routes/exchanges.js'
10
12
  import * as Faucet from './apps/management/routes/faucet.js'
11
13
  import * as FeeAmm from './apps/data/routes/fee-amm.js'
12
- import * as Funding from './apps/data/routes/funding.js'
14
+ import * as FundingChains from './apps/funding/routes/chains.js'
15
+ import * as FundingDepositAddresses from './apps/funding/routes/deposit-addresses.js'
16
+ import * as FundingQuotes from './apps/funding/routes/quotes.js'
17
+ import * as FundingTransfers from './apps/funding/routes/transfers.js'
18
+ import type * as FundingDepositAddress from './internal/funding/DepositAddress.js'
13
19
  import * as Indexer from './apps/data/routes/indexer.js'
14
20
  import * as InviteLinks from './apps/management/routes/invite-links.js'
15
21
  import * as Me from './apps/management/routes/me.js'
@@ -26,10 +32,13 @@ import * as Valuation from './apps/data/routes/valuation.js'
26
32
  import * as VerifiedTokenRequests from './apps/management/routes/verified-token-requests.js'
27
33
  import * as VerifiedTokens from './apps/data/routes/verified-tokens.js'
28
34
  import * as Webhooks from './apps/data/routes/webhooks.js'
35
+ import * as Zones from './apps/data/routes/zones.js'
29
36
 
30
37
  type Access400<code extends string> = code | 'api_key_malformed'
31
38
  type PaidAccessStatus = PublicAccessStatus | 402
32
39
  type PublicAccessStatus = 400 | 401 | 403 | 429
40
+ /** Wire shape of a valued Earn vault field. */
41
+ type VaultValue = { amount: string; currency: string; decimals: number; formatted: string }
33
42
  const mppInput = {
34
43
  challenge: {
35
44
  description: 'Tempo API payment',
@@ -73,42 +82,30 @@ test('returns typed client', async () => {
73
82
  })
74
83
 
75
84
  describe('narrows responses by status', () => {
76
- test('POST /v1/mpp/verify', async () => {
85
+ test('POST /v1/mpp/validate', async () => {
77
86
  const client = Client.create()
78
- const res = await client.v1.mpp.verify.$post({ json: mppInput })
87
+ const res = await client.v1.mpp.validate.$post({ json: mppInput })
79
88
 
80
- expectTypeOf(res.status).toEqualTypeOf<200 | 400 | 401 | 403 | 429 | 503>()
89
+ expectTypeOf(res.status).toEqualTypeOf<200 | 400 | 401 | 403 | 429>()
81
90
 
82
91
  if (res.status === 200) {
83
92
  const json = await res.json()
84
93
  expectTypeOf(json).toEqualTypeOf<Mpp.VerifyResponse>()
85
94
  return
86
95
  }
87
-
88
- if (res.status === 503) {
89
- const json = await res.json()
90
- expectTypeOf(json).toEqualTypeOf<Mpp.Unavailable>()
91
- return
92
- }
93
96
  })
94
97
 
95
98
  test('POST /v1/mpp/broadcast', async () => {
96
99
  const client = Client.create()
97
100
  const res = await client.v1.mpp.broadcast.$post({ json: mppInput })
98
101
 
99
- expectTypeOf(res.status).toEqualTypeOf<200 | 400 | 401 | 403 | 429 | 503>()
102
+ expectTypeOf(res.status).toEqualTypeOf<200 | 400 | 401 | 403 | 429>()
100
103
 
101
104
  if (res.status === 200) {
102
105
  const json = await res.json()
103
106
  expectTypeOf(json).toEqualTypeOf<Mpp.BroadcastResponse>()
104
107
  return
105
108
  }
106
-
107
- if (res.status === 503) {
108
- const json = await res.json()
109
- expectTypeOf(json).toEqualTypeOf<Mpp.Unavailable>()
110
- return
111
- }
112
109
  })
113
110
 
114
111
  test('GET /v1/blocks', async () => {
@@ -147,7 +144,7 @@ describe('narrows responses by status', () => {
147
144
  }
148
145
  case 403: {
149
146
  const json = await res.json()
150
- expectTypeOf(json.error.code).toEqualTypeOf<'api_key_forbidden'>()
147
+ expectTypeOf(json.error.code).toEqualTypeOf<'api_key_forbidden' | 'api_key_ip_forbidden'>()
151
148
  expectTypeOf(json.error.message).toEqualTypeOf<string>()
152
149
  void json
153
150
  return
@@ -169,6 +166,253 @@ describe('narrows responses by status', () => {
169
166
  }
170
167
  })
171
168
 
169
+ test('GET /v1/earn/vaults', async () => {
170
+ const client = Client.create()
171
+ const res = await client.v1.earn.vaults.$get({
172
+ query: {
173
+ 'apy.window': '24h',
174
+ capability: 'deposit',
175
+ 'engine.type': 'erc4626',
176
+ include: 'access,apy,capabilities,token.logoUri,tvl,zone',
177
+ },
178
+ })
179
+
180
+ expectTypeOf(res.status).toEqualTypeOf<200 | 400 | 502 | PaidAccessStatus>()
181
+
182
+ if (res.status === 200) {
183
+ const json = await res.json()
184
+ expectTypeOf(json).toEqualTypeOf<z.output<typeof Earn.schema.getEarnVaults.Response>>()
185
+ expectTypeOf(json.data[0]!.access?.status).toEqualTypeOf<'allowlisted' | 'open' | undefined>()
186
+ // `apy` and `tvl` are include-gated, so both are absent unless requested.
187
+ expectTypeOf(json.data[0]!.apy).toEqualTypeOf<EarnRates.Apy | null | undefined>()
188
+ expectTypeOf(json.data[0]!.apy?.methodology).toEqualTypeOf<
189
+ 'share-price-growth-annualized:v1' | undefined
190
+ >()
191
+ expectTypeOf(json.data[0]!.apy?.net).toEqualTypeOf<string | undefined>()
192
+ expectTypeOf(json.data[0]!.apy?.window).toEqualTypeOf<
193
+ '1h' | '1d' | '7d' | '30d' | undefined
194
+ >()
195
+ expectTypeOf(json.data[0]!.assetToken.address).toEqualTypeOf<`0x${string}`>()
196
+ expectTypeOf(json.data[0]!.capabilities?.deposit).toEqualTypeOf<boolean | undefined>()
197
+ expectTypeOf(json.data[0]!.engine.type).toEqualTypeOf<'erc4626' | 'veda' | null>()
198
+ expectTypeOf(json.data[0]!.instantLiquidity).toEqualTypeOf<string | null>()
199
+ expectTypeOf(json.data[0]!.sharePrice?.amount).toEqualTypeOf<string | undefined>()
200
+ expectTypeOf(json.data[0]!.slug).toEqualTypeOf<string | null>()
201
+ expectTypeOf(json.data[0]!.state.openRedeemRequestCount).toEqualTypeOf<number>()
202
+ expectTypeOf(json.data[0]!.state.totalAssets).toEqualTypeOf<string>()
203
+ expectTypeOf(json.data[0]!.tvl).toEqualTypeOf<VaultValue | null | undefined>()
204
+ expectTypeOf(json.data[0]!.tvl?.currency).toEqualTypeOf<string | undefined>()
205
+ expectTypeOf(json.data[0]!.vaultAddress).toEqualTypeOf<`0x${string}`>()
206
+ expectTypeOf(json.data[0]!.verified).toEqualTypeOf<boolean>()
207
+ expectTypeOf(json.data[0]!.zone?.chainId).toEqualTypeOf<number | undefined>()
208
+ expectTypeOf(json.meta?.valuation?.basis).toEqualTypeOf<'nominal' | undefined>()
209
+ void json
210
+ return
211
+ }
212
+ if (res.status === 400) {
213
+ const json = await res.json()
214
+ expectTypeOf(json.error.code).toEqualTypeOf<Access400<'query_invalid'>>()
215
+ void json
216
+ return
217
+ }
218
+ if (res.status === 502) {
219
+ const json = await res.json()
220
+ expectTypeOf(json.error.code).toEqualTypeOf<'upstream_error'>()
221
+ void json
222
+ return
223
+ }
224
+ })
225
+
226
+ test('GET /v1/earn/vaults/verified', async () => {
227
+ const client = Client.create()
228
+ const res = await client.v1.earn.vaults.verified.$get({
229
+ query: { 'apy.window': '7d', include: 'access,apy,capabilities,token.logoUri,tvl,zone' },
230
+ })
231
+
232
+ expectTypeOf(res.status).toEqualTypeOf<200 | 400 | 502 | PaidAccessStatus>()
233
+
234
+ if (res.status === 200) {
235
+ const json = await res.json()
236
+ expectTypeOf(json).toEqualTypeOf<
237
+ z.output<typeof Earn.schema.getVerifiedEarnVaults.Response>
238
+ >()
239
+ expectTypeOf(json.data[0]!.engine.type).toEqualTypeOf<'erc4626' | 'veda'>()
240
+ expectTypeOf(json.data[0]!.instantLiquidity).toEqualTypeOf<string | null>()
241
+ expectTypeOf(json.data[0]!.slug).toEqualTypeOf<string>()
242
+ expectTypeOf(json.data[0]!.state.feesActive).toEqualTypeOf<boolean>()
243
+ expectTypeOf(json.data[0]!.tvl).toEqualTypeOf<VaultValue | null | undefined>()
244
+ expectTypeOf(json.data[0]!.tvl?.formatted).toEqualTypeOf<string | undefined>()
245
+ expectTypeOf(json.data[0]!.verified).toEqualTypeOf<true>()
246
+ expectTypeOf(json.meta?.valuation?.source).toEqualTypeOf<string | undefined>()
247
+ void json
248
+ return
249
+ }
250
+ if (res.status === 400) {
251
+ const json = await res.json()
252
+ expectTypeOf(json.error.code).toEqualTypeOf<Access400<'query_invalid'>>()
253
+ void json
254
+ return
255
+ }
256
+ if (res.status === 502) {
257
+ const json = await res.json()
258
+ expectTypeOf(json.error.code).toEqualTypeOf<'upstream_error'>()
259
+ void json
260
+ return
261
+ }
262
+ })
263
+
264
+ test('GET /v1/earn/vaults/:vaultId', async () => {
265
+ const client = Client.create()
266
+ const res = await client.v1.earn.vaults[':vaultId'].$get({
267
+ param: { vaultId: `0x${'aa'.repeat(20)}` },
268
+ query: { 'apy.window': '1h', include: 'token.logoUri,tvl' },
269
+ })
270
+
271
+ expectTypeOf(res.status).toEqualTypeOf<200 | 400 | 404 | 502 | PaidAccessStatus>()
272
+
273
+ if (res.status === 200) {
274
+ const json = await res.json()
275
+ expectTypeOf(json).toEqualTypeOf<z.output<typeof Earn.schema.getEarnVault.Response>>()
276
+ // `apy` and `tvl` are include-gated, so both are absent unless requested.
277
+ expectTypeOf(json.apy).toEqualTypeOf<EarnRates.Apy | null | undefined>()
278
+ expectTypeOf(json.apy?.asOf).toEqualTypeOf<string | undefined>()
279
+ expectTypeOf(json.assetToken.address).toEqualTypeOf<`0x${string}`>()
280
+ expectTypeOf(json.engine.type).toEqualTypeOf<'erc4626' | 'veda' | null>()
281
+ expectTypeOf(json.instantLiquidity).toEqualTypeOf<string | null>()
282
+ expectTypeOf(json.label).toEqualTypeOf<string>()
283
+ expectTypeOf(json.meta?.valuation?.asOf).toEqualTypeOf<string | undefined>()
284
+ expectTypeOf(json.sharePrice?.decimals).toEqualTypeOf<number | undefined>()
285
+ expectTypeOf(json.slug).toEqualTypeOf<string | null>()
286
+ expectTypeOf(json.state.depositsPaused).toEqualTypeOf<boolean>()
287
+ expectTypeOf(json.tvl).toEqualTypeOf<VaultValue | null | undefined>()
288
+ expectTypeOf(json.tvl?.amount).toEqualTypeOf<string | undefined>()
289
+ expectTypeOf(json.vaultAddress).toEqualTypeOf<`0x${string}`>()
290
+ void json
291
+ return
292
+ }
293
+ if (res.status === 400) {
294
+ const json = await res.json()
295
+ expectTypeOf(json.error.code).toEqualTypeOf<Access400<'query_invalid' | 'vault_id_invalid'>>()
296
+ void json
297
+ return
298
+ }
299
+ if (res.status === 404) {
300
+ const json = await res.json()
301
+ expectTypeOf(json.error.code).toEqualTypeOf<'earn_vault_not_found'>()
302
+ void json
303
+ return
304
+ }
305
+ if (res.status === 502) {
306
+ const json = await res.json()
307
+ expectTypeOf(json.error.code).toEqualTypeOf<'upstream_error'>()
308
+ void json
309
+ return
310
+ }
311
+ })
312
+
313
+ test('GET /v1/earn/vaults/:vaultId/positions/:address', async () => {
314
+ const client = Client.create()
315
+ const res = await client.v1.earn.vaults[':vaultId'].positions[':address'].$get({
316
+ param: {
317
+ address: `0x${'bb'.repeat(20)}`,
318
+ vaultId: `0x${'aa'.repeat(20)}`,
319
+ },
320
+ })
321
+
322
+ expectTypeOf(res.status).toEqualTypeOf<200 | 400 | 404 | 502 | PaidAccessStatus>()
323
+
324
+ if (res.status === 200) {
325
+ const json = await res.json()
326
+ expectTypeOf(json).toEqualTypeOf<z.output<typeof Earn.schema.getEarnVaultPosition.Response>>()
327
+ expectTypeOf(json.account).toEqualTypeOf<`0x${string}`>()
328
+ expectTypeOf(json.assetAllowance).toEqualTypeOf<string>()
329
+ expectTypeOf(json.assetBalance).toEqualTypeOf<string>()
330
+ expectTypeOf(json.assetToken).toEqualTypeOf<`0x${string}`>()
331
+ expectTypeOf(json.id).toEqualTypeOf<`0x${string}`>()
332
+ expectTypeOf(json.shareAllowance).toEqualTypeOf<string>()
333
+ expectTypeOf(json.shareBalance).toEqualTypeOf<string>()
334
+ expectTypeOf(json.shareToken).toEqualTypeOf<`0x${string}`>()
335
+ expectTypeOf(json.value).toEqualTypeOf<string>()
336
+ void json
337
+ return
338
+ }
339
+ if (res.status === 400) {
340
+ const json = await res.json()
341
+ expectTypeOf(json.error.code).toEqualTypeOf<
342
+ Access400<
343
+ 'chain_id_invalid' | 'chain_id_unsupported' | 'position_invalid' | 'query_invalid'
344
+ >
345
+ >()
346
+ void json
347
+ return
348
+ }
349
+ if (res.status === 404) {
350
+ const json = await res.json()
351
+ expectTypeOf(json.error.code).toEqualTypeOf<'earn_vault_not_found'>()
352
+ void json
353
+ return
354
+ }
355
+ if (res.status === 502) {
356
+ const json = await res.json()
357
+ expectTypeOf(json.error.code).toEqualTypeOf<'upstream_error'>()
358
+ void json
359
+ return
360
+ }
361
+ })
362
+
363
+ test('GET /v1/earn/vaults/:vaultId/earnings/:address', async () => {
364
+ const client = Client.create()
365
+ const res = await client.v1.earn.vaults[':vaultId'].earnings[':address'].$get({
366
+ param: {
367
+ address: `0x${'bb'.repeat(20)}`,
368
+ vaultId: `0x${'aa'.repeat(20)}`,
369
+ },
370
+ })
371
+
372
+ expectTypeOf(res.status).toEqualTypeOf<200 | 400 | 404 | 502 | PaidAccessStatus>()
373
+
374
+ if (res.status === 200) {
375
+ const json = await res.json()
376
+ expectTypeOf(json).toEqualTypeOf<z.output<typeof Earn.schema.getEarnVaultEarnings.Response>>()
377
+ expectTypeOf(json.account).toEqualTypeOf<`0x${string}`>()
378
+ expectTypeOf(json.assetToken).toEqualTypeOf<`0x${string}`>()
379
+ expectTypeOf(json.currentValue).toEqualTypeOf<string>()
380
+ expectTypeOf(json.id).toEqualTypeOf<`0x${string}`>()
381
+ expectTypeOf(json.period).toEqualTypeOf<'active' | 'lifetime'>()
382
+ expectTypeOf(json.status).toEqualTypeOf<
383
+ 'complete' | 'incomplete_cost_basis' | 'pending_redemption'
384
+ >()
385
+ if (json.status === 'complete' && json.period === 'active')
386
+ expectTypeOf(json.activeEarnings).toEqualTypeOf<string>()
387
+ if (json.status === 'complete' && json.period === 'lifetime')
388
+ expectTypeOf(json.lifetimeEarnings).toEqualTypeOf<string>()
389
+ void json
390
+ return
391
+ }
392
+ if (res.status === 400) {
393
+ const json = await res.json()
394
+ expectTypeOf(json.error.code).toEqualTypeOf<
395
+ Access400<
396
+ 'chain_id_invalid' | 'chain_id_unsupported' | 'earnings_invalid' | 'query_invalid'
397
+ >
398
+ >()
399
+ void json
400
+ return
401
+ }
402
+ if (res.status === 404) {
403
+ const json = await res.json()
404
+ expectTypeOf(json.error.code).toEqualTypeOf<'earn_vault_not_found'>()
405
+ void json
406
+ return
407
+ }
408
+ if (res.status === 502) {
409
+ const json = await res.json()
410
+ expectTypeOf(json.error.code).toEqualTypeOf<'upstream_error'>()
411
+ void json
412
+ return
413
+ }
414
+ })
415
+
172
416
  test('GET /v1/me', async () => {
173
417
  const client = Client.create()
174
418
  const res = await client.v1.me.$get()
@@ -392,7 +636,7 @@ describe('narrows responses by status', () => {
392
636
  case 403: {
393
637
  const json = await res.json()
394
638
  expectTypeOf(json.error.code).toEqualTypeOf<
395
- 'api_key_forbidden' | 'billing_source_disabled' | 'forbidden'
639
+ 'api_key_forbidden' | 'api_key_ip_forbidden' | 'billing_source_disabled' | 'forbidden'
396
640
  >()
397
641
  void json
398
642
  return
@@ -679,7 +923,7 @@ describe('narrows responses by status', () => {
679
923
  const res = await client.v1.orgs[':orgId{org_[A-Za-z0-9_-]+}'].projects[
680
924
  ':projectId{prj_[A-Za-z0-9_-]+}'
681
925
  ]['api-keys'].$post({
682
- json: { scopes: ['data:read'] },
926
+ json: { allowedIps: ['203.0.113.0/24'], scopes: ['data:read'] },
683
927
  param: { orgId: 'org_test', projectId: 'prj_test' },
684
928
  })
685
929
 
@@ -690,6 +934,7 @@ describe('narrows responses by status', () => {
690
934
  const json = await res.json()
691
935
  expectTypeOf(json.token).toEqualTypeOf<string>()
692
936
  expectTypeOf(json.id).toEqualTypeOf<string>()
937
+ expectTypeOf(json.allowedIps).toEqualTypeOf<readonly string[]>()
693
938
  void json
694
939
  return
695
940
  }
@@ -717,6 +962,7 @@ describe('narrows responses by status', () => {
717
962
  const json = await res.json()
718
963
  expectTypeOf(json.data[0]!.id).toEqualTypeOf<string>()
719
964
  expectTypeOf(json.data[0]!.environment).toEqualTypeOf<'production' | 'sandbox'>()
965
+ expectTypeOf(json.data[0]!.allowedIps).toEqualTypeOf<readonly string[]>()
720
966
  // Absent on org-wide keys minted without project attribution.
721
967
  expectTypeOf(json.data[0]!.projectId).toEqualTypeOf<string | undefined>()
722
968
  void json
@@ -725,6 +971,24 @@ describe('narrows responses by status', () => {
725
971
  }
726
972
  })
727
973
 
974
+ test('PATCH /v1/orgs/:orgId/projects/:projectId/api-keys/:keyId', async () => {
975
+ const client = Client.create()
976
+ const res = await client.v1.orgs[':orgId{org_[A-Za-z0-9_-]+}'].projects[
977
+ ':projectId{prj_[A-Za-z0-9_-]+}'
978
+ ]['api-keys'][':keyId{key_[A-Za-z0-9_-]+}'].$patch({
979
+ json: { allowedIps: [] },
980
+ param: { keyId: 'key_test', orgId: 'org_test', projectId: 'prj_test' },
981
+ })
982
+
983
+ expectTypeOf(res.status).toEqualTypeOf<200 | 404 | 502 | PublicAccessStatus>()
984
+
985
+ if (res.status === 200) {
986
+ const json = await res.json()
987
+ expectTypeOf(json.allowedIps).toEqualTypeOf<readonly string[]>()
988
+ void json
989
+ }
990
+ })
991
+
728
992
  test('DELETE /v1/orgs/:orgId/projects/:projectId/api-keys/:keyId', async () => {
729
993
  const client = Client.create()
730
994
  const res = await client.v1.orgs[':orgId{org_[A-Za-z0-9_-]+}'].projects[
@@ -928,7 +1192,7 @@ describe('narrows responses by status', () => {
928
1192
  }
929
1193
  case 403: {
930
1194
  const json = await res.json()
931
- expectTypeOf(json.error.code).toEqualTypeOf<'api_key_forbidden'>()
1195
+ expectTypeOf(json.error.code).toEqualTypeOf<'api_key_forbidden' | 'api_key_ip_forbidden'>()
932
1196
  expectTypeOf(json.error.message).toEqualTypeOf<string>()
933
1197
  void json
934
1198
  return
@@ -1145,7 +1409,7 @@ describe('narrows responses by status', () => {
1145
1409
  expectTypeOf(json.feeToken).toEqualTypeOf<
1146
1410
  z.output<typeof Tokens.schema.TokenReference> | undefined
1147
1411
  >()
1148
- expectTypeOf(json.meta.pricing).toEqualTypeOf<
1412
+ expectTypeOf(json.meta.valuation).toEqualTypeOf<
1149
1413
  z.output<typeof Valuation.schema.Pricing> | undefined
1150
1414
  >()
1151
1415
  void json
@@ -1496,7 +1760,7 @@ describe('narrows responses by status', () => {
1496
1760
  const client = Client.create()
1497
1761
  const res = await client.v1.addresses[':address'].valuation.$get({
1498
1762
  param: { address: '0x0000000000000000000000000000000000000000' },
1499
- query: {},
1763
+ query: { currency: 'AUD' },
1500
1764
  })
1501
1765
 
1502
1766
  expectTypeOf(res.status).toEqualTypeOf<200 | 400 | 502 | PaidAccessStatus>()
@@ -1622,16 +1886,22 @@ describe('narrows responses by status', () => {
1622
1886
  | undefined
1623
1887
  >()
1624
1888
  expectTypeOf(json.data[0]!.sourceAmount).toEqualTypeOf<
1625
- z.output<typeof Funding.schema.quoteFunding.Response>['data'][number]['sourceAmount']
1889
+ z.output<
1890
+ typeof FundingQuotes.schema.quoteFunding.Response
1891
+ >['data'][number]['sourceAmount']
1626
1892
  >()
1627
1893
  // @ts-expect-error token references do not contain quantities
1628
1894
  void json.data[0]!.sourceToken.amount
1629
1895
  // @ts-expect-error provider details no longer duplicate destination amounts
1630
1896
  void json.data[0]!.quote.outputAmount
1631
- expectTypeOf(json.data[0]!.provider.id).toEqualTypeOf<
1632
- 'across' | 'relay' | 'rhino' | 'squid' | 'symbiosis'
1633
- >()
1897
+ expectTypeOf(json.data[0]!.provider.id).toEqualTypeOf<string>()
1634
1898
  expectTypeOf(json.data[0]!.quote.expiresAt).toEqualTypeOf<string | undefined>()
1899
+ expectTypeOf(json.data[0]!.destinationChain.addressFormat).toEqualTypeOf<
1900
+ 'base58' | 'base58check' | 'hex'
1901
+ >()
1902
+ expectTypeOf(json.data[0]!.sourceChain.addressFormat).toEqualTypeOf<
1903
+ 'base58' | 'base58check' | 'hex'
1904
+ >()
1635
1905
  void json
1636
1906
  return
1637
1907
  }
@@ -1663,9 +1933,10 @@ describe('narrows responses by status', () => {
1663
1933
  const json = await res.json()
1664
1934
  expectTypeOf(json.data[0]!.tokens[0]!.symbol).toEqualTypeOf<
1665
1935
  z.output<
1666
- typeof Funding.schema.listFundingChains.Response
1936
+ typeof FundingChains.schema.getFundingChains.Response
1667
1937
  >['data'][number]['tokens'][number]['symbol']
1668
1938
  >()
1939
+ expectTypeOf(json.data[0]!.addressFormat).toEqualTypeOf<'base58' | 'base58check' | 'hex'>()
1669
1940
  void json
1670
1941
  return
1671
1942
  }
@@ -1688,15 +1959,401 @@ describe('narrows responses by status', () => {
1688
1959
  switch (res.status) {
1689
1960
  case 200: {
1690
1961
  const json = await res.json()
1962
+ expectTypeOf(json.data[0]!.id).toEqualTypeOf<string>()
1963
+ // @ts-expect-error providers no longer expose deployment configuration state
1964
+ void json.data[0]!.status
1965
+ void json
1966
+ return
1967
+ }
1968
+ case 400: {
1969
+ const json = await res.json()
1970
+ expectTypeOf(json.error.code).toEqualTypeOf<'api_key_malformed'>()
1971
+ expectTypeOf(json.error.message).toEqualTypeOf<string>()
1972
+ void json
1973
+ return
1974
+ }
1975
+ }
1976
+ })
1977
+
1978
+ test('POST /v1/funding/deposit-addresses', async () => {
1979
+ const client = Client.create()
1980
+ const json = {
1981
+ amount: '100000000',
1982
+ destinationToken: '0x20c00000000000000000000014f22ca97301eb73',
1983
+ recipient: `0x${'11'.repeat(20)}`,
1984
+ refundAddress: 'TJRabPrwbZy45sbavfcjinPJC18kjpRTv8',
1985
+ sourceChain: 'tron:0x2b6653dc',
1986
+ sourceToken: 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t',
1987
+ } as const
1988
+ // @ts-expect-error `Idempotency-Key` is required for deposit-address creation.
1989
+ void client.v1.funding['deposit-addresses'].$post({ json })
1990
+ const res = await client.v1.funding['deposit-addresses'].$post({
1991
+ header: { 'idempotency-key': 'funding_01k1c5j8q8p0be6j5v9m6d1e4r' },
1992
+ json,
1993
+ })
1994
+
1995
+ expectTypeOf(res.status).toEqualTypeOf<200 | 400 | 404 | 409 | 502 | PublicAccessStatus>()
1996
+
1997
+ switch (res.status) {
1998
+ case 200: {
1999
+ const json = await res.json()
2000
+ expectTypeOf(json.id).toEqualTypeOf<string>()
2001
+ expectTypeOf(json.status).toEqualTypeOf<
2002
+ z.output<
2003
+ typeof FundingDepositAddresses.schema.createFundingDepositAddress.Response
2004
+ >['status']
2005
+ >()
2006
+ expectTypeOf(json.subsidize).toEqualTypeOf<boolean>()
2007
+ if ('quote' in json) {
2008
+ expectTypeOf(json.destinationAmount.baseUnits).toEqualTypeOf<string>()
2009
+ expectTypeOf(json.fees).toEqualTypeOf<
2010
+ z.output<typeof FundingDepositAddress.schema.CreatedFundingDepositAddress>['fees']
2011
+ >()
2012
+ expectTypeOf(json.quote.sampledAt).toEqualTypeOf<string>()
2013
+ expectTypeOf(json.sourceAmount.baseUnits).toEqualTypeOf<string>()
2014
+ }
2015
+ void json
2016
+ return
2017
+ }
2018
+ case 404: {
2019
+ const json = await res.json()
2020
+ expectTypeOf(json.error.code).toEqualTypeOf<'deposit_address_not_available'>()
2021
+ void json
2022
+ return
2023
+ }
2024
+ case 409: {
2025
+ const json = await res.json()
2026
+ expectTypeOf(json.error.code).toEqualTypeOf<
2027
+ 'idempotency_conflict' | 'idempotency_in_progress'
2028
+ >()
2029
+ void json
2030
+ return
2031
+ }
2032
+ }
2033
+ })
2034
+
2035
+ test('GET /v1/funding/deposit-addresses/:id', async () => {
2036
+ const client = Client.create()
2037
+ const res = await client.v1.funding['deposit-addresses'][':id{fda_[A-Za-z0-9_-]+}'].$get({
2038
+ param: { id: 'fda_test' },
2039
+ })
2040
+
2041
+ expectTypeOf(res.status).toEqualTypeOf<200 | 400 | 404 | 502 | PublicAccessStatus>()
2042
+
2043
+ switch (res.status) {
2044
+ case 200: {
2045
+ const json = await res.json()
2046
+ expectTypeOf(json.status).toEqualTypeOf<
2047
+ z.output<typeof FundingDepositAddresses.schema.DepositAddress>['status']
2048
+ >()
2049
+ expectTypeOf(json.sourceChain.kind).toEqualTypeOf<'evm' | 'solana' | 'tron'>()
2050
+ expectTypeOf(json.subsidize).toEqualTypeOf<boolean>()
2051
+ // @ts-expect-error provider routing remains private
2052
+ void json.providerOutputToken
2053
+ void json
2054
+ return
2055
+ }
2056
+ case 404: {
2057
+ const json = await res.json()
2058
+ expectTypeOf(json.error.code).toEqualTypeOf<'funding_deposit_address_not_found'>()
2059
+ void json
2060
+ return
2061
+ }
2062
+ }
2063
+ })
2064
+
2065
+ test('POST /v1/funding/deposit-addresses/:id/reconcile', async () => {
2066
+ const client = Client.create()
2067
+ const res = await client.v1.funding['deposit-addresses'][
2068
+ ':id{fda_[A-Za-z0-9_-]+}'
2069
+ ].reconcile.$post({ param: { id: 'fda_test' } })
2070
+
2071
+ expectTypeOf(res.status).toEqualTypeOf<202 | 400 | 401 | 403 | 404 | 409 | 429 | 501 | 502>()
2072
+
2073
+ switch (res.status) {
2074
+ case 202: {
2075
+ expectTypeOf(await res.text()).toEqualTypeOf<string>()
2076
+ return
2077
+ }
2078
+ case 404: {
2079
+ const json = await res.json()
2080
+ expectTypeOf(json.error.code).toEqualTypeOf<'funding_deposit_address_not_found'>()
2081
+ void json
2082
+ return
2083
+ }
2084
+ case 409: {
2085
+ const json = await res.json()
2086
+ expectTypeOf(json.error.code).toEqualTypeOf<'funding_deposit_address_not_active'>()
2087
+ void json
2088
+ return
2089
+ }
2090
+ case 501: {
2091
+ const json = await res.json()
2092
+ expectTypeOf(json.error.code).toEqualTypeOf<'not_implemented'>()
2093
+ void json
2094
+ return
2095
+ }
2096
+ case 502: {
2097
+ const json = await res.json()
2098
+ expectTypeOf(json.error.code).toEqualTypeOf<'upstream_error'>()
2099
+ void json
2100
+ return
2101
+ }
2102
+ }
2103
+ })
2104
+
2105
+ test('GET /v1/funding/deposit-addresses/:id/deposits', async () => {
2106
+ const client = Client.create()
2107
+ const res = await client.v1.funding['deposit-addresses'][
2108
+ ':id{fda_[A-Za-z0-9_-]+}'
2109
+ ].deposits.$get({ param: { id: 'fda_test' }, query: {} })
2110
+
2111
+ expectTypeOf(res.status).toEqualTypeOf<200 | 400 | 404 | 502 | PublicAccessStatus>()
2112
+
2113
+ switch (res.status) {
2114
+ case 200: {
2115
+ const json = await res.json()
2116
+ expectTypeOf(json.data[0]!.detectionTrigger).toEqualTypeOf<
2117
+ 'chain' | 'manual' | 'poll' | 'webhook' | undefined
2118
+ >()
1691
2119
  expectTypeOf(json.data[0]!.status).toEqualTypeOf<
1692
- z.output<typeof Funding.schema.listProviders.Response>['data'][number]['status']
2120
+ z.output<typeof FundingDepositAddresses.schema.Deposit>['status']
1693
2121
  >()
2122
+ expectTypeOf(json.nextCursor).toEqualTypeOf<string | null>()
2123
+ void json
2124
+ return
2125
+ }
2126
+ case 404: {
2127
+ const json = await res.json()
2128
+ expectTypeOf(json.error.code).toEqualTypeOf<'funding_deposit_address_not_found'>()
2129
+ void json
2130
+ return
2131
+ }
2132
+ }
2133
+ })
2134
+
2135
+ test('GET /v1/funding/deposits', async () => {
2136
+ const client = Client.create()
2137
+ // @ts-expect-error `recipient` is required for the deposit list.
2138
+ void client.v1.funding.deposits.$get({ query: {} })
2139
+ const res = await client.v1.funding.deposits.$get({
2140
+ query: { recipient: `0x${'11'.repeat(20)}` },
2141
+ })
2142
+
2143
+ expectTypeOf(res.status).toEqualTypeOf<200 | 400 | 502 | PublicAccessStatus>()
2144
+
2145
+ switch (res.status) {
2146
+ case 200: {
2147
+ const json = await res.json()
2148
+ expectTypeOf(json.data[0]!.recipient).toEqualTypeOf<string>()
2149
+ expectTypeOf(json.data[0]!.status).toEqualTypeOf<
2150
+ z.output<typeof FundingDepositAddresses.schema.Deposit>['status']
2151
+ >()
2152
+ expectTypeOf(json.nextCursor).toEqualTypeOf<string | null>()
2153
+ void json
2154
+ return
2155
+ }
2156
+ }
2157
+ })
2158
+
2159
+ test('GET /v1/funding/deposits/:id', async () => {
2160
+ const client = Client.create()
2161
+ const res = await client.v1.funding.deposits[':id{fdp_[A-Za-z0-9_-]+}'].$get({
2162
+ param: { id: 'fdp_001785792060000_2ZPE2gvateYEQ0dQslgvkhjx' },
2163
+ })
2164
+
2165
+ expectTypeOf(res.status).toEqualTypeOf<200 | 400 | 404 | 502 | PublicAccessStatus>()
2166
+
2167
+ switch (res.status) {
2168
+ case 200: {
2169
+ const json = await res.json()
2170
+ expectTypeOf(json.detectionTrigger).toEqualTypeOf<
2171
+ 'chain' | 'manual' | 'poll' | 'webhook' | undefined
2172
+ >()
2173
+ expectTypeOf(json.destinationAmountRequired).toEqualTypeOf<
2174
+ z.output<typeof FundingDepositAddresses.schema.Deposit>['destinationAmountRequired']
2175
+ >()
2176
+ expectTypeOf(json.sourceTransferIndex).toEqualTypeOf<number | undefined>()
2177
+ expectTypeOf(json.statusReason).toEqualTypeOf<
2178
+ z.output<typeof FundingDepositAddresses.schema.Deposit>['statusReason']
2179
+ >()
2180
+ // @ts-expect-error provider request identifiers remain private
2181
+ void json.providerRequestIds
2182
+ void json
2183
+ return
2184
+ }
2185
+ case 404: {
2186
+ const json = await res.json()
2187
+ expectTypeOf(json.error.code).toEqualTypeOf<'funding_deposit_not_found'>()
2188
+ void json
2189
+ return
2190
+ }
2191
+ }
2192
+ })
2193
+
2194
+ test('GET /v1/funding/transfers', async () => {
2195
+ const client = Client.create()
2196
+ const res = await client.v1.funding.transfers.$get({ query: {} })
2197
+
2198
+ expectTypeOf(res.status).toEqualTypeOf<200 | 400 | 502 | PublicAccessStatus>()
2199
+
2200
+ switch (res.status) {
2201
+ case 200: {
2202
+ const json = await res.json()
2203
+ expectTypeOf(json.data[0]!.id).toEqualTypeOf<string>()
2204
+ expectTypeOf(json.data[0]!.status).toEqualTypeOf<
2205
+ z.output<typeof FundingTransfers.schema.Transfer>['status']
2206
+ >()
2207
+ expectTypeOf(json.data[0]!.version).toEqualTypeOf<number>()
2208
+ // Transfer reads never expose the executable action.
2209
+ // @ts-expect-error `action` is a creation-only field
2210
+ void json.data[0]!.action
2211
+ // `meta` (opt-in `include=totalCount` count) is optional.
2212
+ expectTypeOf(json.meta).toEqualTypeOf<
2213
+ z.output<typeof FundingTransfers.schema.listFundingTransfers.Response>['meta']
2214
+ >()
2215
+ expectTypeOf(json.nextCursor).toEqualTypeOf<string | null>()
1694
2216
  void json
1695
2217
  return
1696
2218
  }
1697
2219
  case 400: {
1698
2220
  const json = await res.json()
1699
- expectTypeOf(json.error.code).toEqualTypeOf<'api_key_malformed'>()
2221
+ expectTypeOf(json.error.code).toEqualTypeOf<Access400<'query_invalid'>>()
2222
+ expectTypeOf(json.error.message).toEqualTypeOf<string>()
2223
+ void json
2224
+ return
2225
+ }
2226
+ }
2227
+ })
2228
+
2229
+ test('POST /v1/funding/transfers', async () => {
2230
+ const client = Client.create()
2231
+ const json = {
2232
+ amount: '1000000',
2233
+ destinationToken: '0x20c000000000000000000000b9537d11c60e8b50',
2234
+ mode: 'exactSource',
2235
+ recipient: `0x${'11'.repeat(20)}`,
2236
+ sender: `0x${'22'.repeat(20)}`,
2237
+ sourceChain: 'eip155:8453',
2238
+ sourceToken: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913',
2239
+ } as const
2240
+ // @ts-expect-error `Idempotency-Key` is required for funding transfer creation.
2241
+ void client.v1.funding.transfers.$post({ json })
2242
+ const res = await client.v1.funding.transfers.$post({
2243
+ header: { 'idempotency-key': 'funding_01k1c5j8q8p0be6j5v9m6d1e4r' },
2244
+ json,
2245
+ })
2246
+
2247
+ expectTypeOf(res.status).toEqualTypeOf<200 | 400 | 404 | 409 | 502 | PublicAccessStatus>()
2248
+
2249
+ switch (res.status) {
2250
+ case 200: {
2251
+ const json = await res.json()
2252
+ expectTypeOf(json.action.type).toEqualTypeOf<'evm:calls'>()
2253
+ expectTypeOf(json.id).toEqualTypeOf<string>()
2254
+ expectTypeOf(json.status).toEqualTypeOf<
2255
+ z.output<typeof FundingTransfers.schema.createFundingTransfer.Response>['status']
2256
+ >()
2257
+ void json
2258
+ return
2259
+ }
2260
+ case 404: {
2261
+ const json = await res.json()
2262
+ expectTypeOf(json.error.code).toEqualTypeOf<'quote_not_available'>()
2263
+ void json
2264
+ return
2265
+ }
2266
+ case 409: {
2267
+ const json = await res.json()
2268
+ expectTypeOf(json.error.code).toEqualTypeOf<
2269
+ 'idempotency_conflict' | 'idempotency_in_progress'
2270
+ >()
2271
+ void json
2272
+ return
2273
+ }
2274
+ }
2275
+ })
2276
+
2277
+ test('POST /v1/funding/transfers/vault', async () => {
2278
+ const client = Client.create()
2279
+ const json = {
2280
+ amount: '1000000',
2281
+ mode: 'exactSource',
2282
+ recipient: `0x${'11'.repeat(20)}`,
2283
+ sender: `0x${'22'.repeat(20)}`,
2284
+ sourceChain: 'eip155:8453',
2285
+ sourceToken: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913',
2286
+ vaultAddress: `0x${'f4'.repeat(20)}`,
2287
+ } as const
2288
+ // @ts-expect-error `Idempotency-Key` is required for vault transfer creation.
2289
+ void client.v1.funding.transfers.vault.$post({ json })
2290
+ const res = await client.v1.funding.transfers.vault.$post({
2291
+ header: { 'idempotency-key': 'funding_vault_01k1c5j8q8p0be6j5v9m6d1e4r' },
2292
+ json,
2293
+ })
2294
+
2295
+ expectTypeOf(res.status).toEqualTypeOf<400 | 501 | PublicAccessStatus>()
2296
+ if (res.status === 501) {
2297
+ const json = await res.json()
2298
+ expectTypeOf(json.error.code).toEqualTypeOf<'not_implemented'>()
2299
+ void json
2300
+ }
2301
+ })
2302
+
2303
+ test('POST /v1/funding/transfers/zone', async () => {
2304
+ const client = Client.create()
2305
+ const json = {
2306
+ amount: '1000000',
2307
+ destinationChain: 'eip155:421700001',
2308
+ destinationToken: '0x20c000000000000000000000b9537d11c60e8b50',
2309
+ mode: 'exactSource',
2310
+ recipient: `0x${'11'.repeat(20)}`,
2311
+ recipientFallback: `0x${'33'.repeat(20)}`,
2312
+ sender: `0x${'22'.repeat(20)}`,
2313
+ sourceChain: 'eip155:8453',
2314
+ sourceToken: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913',
2315
+ } as const
2316
+ // @ts-expect-error `Idempotency-Key` is required for Zone transfer creation.
2317
+ void client.v1.funding.transfers.zone.$post({ json })
2318
+ const res = await client.v1.funding.transfers.zone.$post({
2319
+ header: { 'idempotency-key': 'funding_zone_01k1c5j8q8p0be6j5v9m6d1e4r' },
2320
+ json,
2321
+ })
2322
+
2323
+ expectTypeOf(res.status).toEqualTypeOf<400 | 501 | PublicAccessStatus>()
2324
+ if (res.status === 501) {
2325
+ const json = await res.json()
2326
+ expectTypeOf(json.error.code).toEqualTypeOf<'not_implemented'>()
2327
+ void json
2328
+ }
2329
+ })
2330
+
2331
+ test('GET /v1/funding/transfers/:id', async () => {
2332
+ const client = Client.create()
2333
+ const res = await client.v1.funding.transfers[':id{ftr_[A-Za-z0-9_-]+}'].$get({
2334
+ param: { id: 'ftr_test' },
2335
+ })
2336
+
2337
+ expectTypeOf(res.status).toEqualTypeOf<200 | 400 | 404 | 502 | PublicAccessStatus>()
2338
+
2339
+ switch (res.status) {
2340
+ case 200: {
2341
+ const json = await res.json()
2342
+ expectTypeOf(json.id).toEqualTypeOf<string>()
2343
+ expectTypeOf(json.status).toEqualTypeOf<
2344
+ z.output<typeof FundingTransfers.schema.getFundingTransfer.Response>['status']
2345
+ >()
2346
+ expectTypeOf(json.statusReason).toEqualTypeOf<
2347
+ z.output<typeof FundingTransfers.schema.getFundingTransfer.Response>['statusReason']
2348
+ >()
2349
+ // @ts-expect-error `action` is a creation-only field
2350
+ void json.action
2351
+ void json
2352
+ return
2353
+ }
2354
+ case 404: {
2355
+ const json = await res.json()
2356
+ expectTypeOf(json.error.code).toEqualTypeOf<'funding_transfer_not_found'>()
1700
2357
  expectTypeOf(json.error.message).toEqualTypeOf<string>()
1701
2358
  void json
1702
2359
  return
@@ -1748,6 +2405,7 @@ describe('narrows responses by status', () => {
1748
2405
  const client = Client.create()
1749
2406
  const res = await client.v1.exchange.quotes.$post({
1750
2407
  json: {
2408
+ account: '0x1111111111111111111111111111111111111111',
1751
2409
  amount: '1000000',
1752
2410
  destinationToken: '0x20c000000000000000000000b9537d11c60e8b50',
1753
2411
  mode: 'exactSource',
@@ -1768,7 +2426,7 @@ describe('narrows responses by status', () => {
1768
2426
  expectTypeOf(json.destinationToken.logoUri).toEqualTypeOf<string | undefined>()
1769
2427
  expectTypeOf(json.destinationToken.symbol).toEqualTypeOf<string>()
1770
2428
  expectTypeOf(json.destinationToken.verified).toEqualTypeOf<boolean | undefined>()
1771
- expectTypeOf(json.meta?.pricing).toEqualTypeOf<
2429
+ expectTypeOf(json.meta?.valuation).toEqualTypeOf<
1772
2430
  z.output<typeof Valuation.schema.Pricing> | undefined
1773
2431
  >()
1774
2432
  expectTypeOf(json.sourceAmount).toEqualTypeOf<ValuedTokenAmount>()
@@ -1777,11 +2435,19 @@ describe('narrows responses by status', () => {
1777
2435
  expectTypeOf(json.sourceToken.logoUri).toEqualTypeOf<string | undefined>()
1778
2436
  expectTypeOf(json.sourceToken.symbol).toEqualTypeOf<string>()
1779
2437
  expectTypeOf(json.sourceToken.verified).toEqualTypeOf<boolean | undefined>()
1780
- expectTypeOf(json.transaction.calls[0]!.data).toEqualTypeOf<
1781
- z.output<
1782
- typeof Exchanges.schema.createQuote.Response
1783
- >['transaction']['calls'][number]['data']
1784
- >()
2438
+ expectTypeOf(json.gasEstimate).toEqualTypeOf<string>()
2439
+ if (json.status === 'approvalRequired')
2440
+ expectTypeOf(json.approval.calls[0]!.data).toEqualTypeOf<
2441
+ z.output<typeof Exchanges.schema.createQuote.Call>['data']
2442
+ >()
2443
+ if (json.status === 'signatureRequired') {
2444
+ expectTypeOf(json.continuation).toEqualTypeOf<string>()
2445
+ expectTypeOf(json.typedData.primaryType).toEqualTypeOf<string>()
2446
+ }
2447
+ if (json.status === 'ready')
2448
+ expectTypeOf(json.transaction.calls[0]!.data).toEqualTypeOf<
2449
+ z.output<typeof Exchanges.schema.createQuote.Call>['data']
2450
+ >()
1785
2451
  if (json.mode === 'exactSource') {
1786
2452
  expectTypeOf(json.destinationAmountMin).toEqualTypeOf<ValuedTokenAmount>()
1787
2453
  // @ts-expect-error slippage quantities live on destinationAmountMin
@@ -1828,6 +2494,45 @@ describe('narrows responses by status', () => {
1828
2494
  }
1829
2495
  })
1830
2496
 
2497
+ test('POST /v1/exchange/quotes/execute', async () => {
2498
+ const client = Client.create()
2499
+ const res = await client.v1.exchange.quotes.execute.$post({
2500
+ json: {
2501
+ account: '0x1111111111111111111111111111111111111111',
2502
+ continuation: 'eyJxdW90ZSI6e319',
2503
+ provider: 'uniswap',
2504
+ signature: `0x${'11'.repeat(65)}`,
2505
+ },
2506
+ })
2507
+
2508
+ expectTypeOf(res.status).toEqualTypeOf<200 | 400 | 502 | PaidAccessStatus>()
2509
+
2510
+ switch (res.status) {
2511
+ case 200: {
2512
+ const json = await res.json()
2513
+ expectTypeOf(json.provider).toEqualTypeOf<string>()
2514
+ expectTypeOf(json.transaction.calls[0]!.data).toEqualTypeOf<
2515
+ z.output<typeof Exchanges.schema.createQuote.Call>['data']
2516
+ >()
2517
+ return
2518
+ }
2519
+ case 400: {
2520
+ const json = await res.json()
2521
+ expectTypeOf(json.error.code).toEqualTypeOf<
2522
+ Access400<
2523
+ 'body_invalid' | 'query_invalid' | 'swap_continuation_invalid' | 'swap_provider_invalid'
2524
+ >
2525
+ >()
2526
+ return
2527
+ }
2528
+ case 502: {
2529
+ const json = await res.json()
2530
+ expectTypeOf(json.error.code).toEqualTypeOf<'upstream_error'>()
2531
+ return
2532
+ }
2533
+ }
2534
+ })
2535
+
1831
2536
  test('GET /v1/exchange/pairs', async () => {
1832
2537
  const client = Client.create()
1833
2538
  const res = await client.v1.exchange.pairs.$get()
@@ -2343,6 +3048,71 @@ describe('narrows responses by status', () => {
2343
3048
  }
2344
3049
  })
2345
3050
 
3051
+ test('GET /v1/zones/withdrawals/:senderTag', async () => {
3052
+ const client = Client.create()
3053
+ const res = await client.v1.zones.withdrawals[':senderTag'].$get({
3054
+ param: {
3055
+ senderTag: '0x61fc42a734cb44acef497ea0bed612c691195623244136e0739e1929569e2487',
3056
+ },
3057
+ query: { chainId: '421700001' },
3058
+ })
3059
+
3060
+ expectTypeOf(res.status).toEqualTypeOf<200 | 400 | 401 | 403 | 429 | 502>()
3061
+
3062
+ switch (res.status) {
3063
+ case 200: {
3064
+ const json = await res.json()
3065
+ expectTypeOf(json).toEqualTypeOf<
3066
+ z.output<typeof Zones.schema.listZoneWithdrawals.Response>
3067
+ >()
3068
+ const withdrawal = json.data[0]!
3069
+ expectTypeOf(withdrawal.blockNumber).toEqualTypeOf<number>()
3070
+ expectTypeOf(withdrawal.id).toEqualTypeOf<string>()
3071
+ expectTypeOf(withdrawal.logIndex).toEqualTypeOf<number>()
3072
+ expectTypeOf(withdrawal.status).toEqualTypeOf<'completed' | 'failed'>()
3073
+ expectTypeOf(withdrawal.transactionHash).toEqualTypeOf<`0x${string}`>()
3074
+ expectTypeOf(withdrawal.zoneStatus).toEqualTypeOf<'completed' | 'pending'>()
3075
+ void json
3076
+ return
3077
+ }
3078
+ case 400: {
3079
+ const json = await res.json()
3080
+ expectTypeOf(json.error.code).toEqualTypeOf<
3081
+ Access400<
3082
+ 'chain_id_invalid' | 'chain_id_unsupported' | 'query_invalid' | 'sender_tag_invalid'
3083
+ >
3084
+ >()
3085
+ expectTypeOf(json.error.message).toEqualTypeOf<string>()
3086
+ void json
3087
+ return
3088
+ }
3089
+ case 401: {
3090
+ const json = await res.json()
3091
+ expectTypeOf(json.error.code).toEqualTypeOf<'api_key_invalid' | 'api_key_missing'>()
3092
+ void json
3093
+ return
3094
+ }
3095
+ case 403: {
3096
+ const json = await res.json()
3097
+ expectTypeOf(json.error.code).toEqualTypeOf<'api_key_forbidden' | 'api_key_ip_forbidden'>()
3098
+ void json
3099
+ return
3100
+ }
3101
+ case 429: {
3102
+ const json = await res.json()
3103
+ expectTypeOf(json.error.code).toEqualTypeOf<'payment_required' | 'rate_limit_exceeded'>()
3104
+ void json
3105
+ return
3106
+ }
3107
+ case 502: {
3108
+ const json = await res.json()
3109
+ expectTypeOf(json.error.code).toEqualTypeOf<'upstream_error'>()
3110
+ void json
3111
+ return
3112
+ }
3113
+ }
3114
+ })
3115
+
2346
3116
  test('POST /rpc/:chain', async () => {
2347
3117
  const client = Client.create()
2348
3118
  const res = await client.rpc[':chain{(mainnet|testnet|[0-9]+)}?'].$post({
@@ -2500,7 +3270,9 @@ describe('narrows responses by status', () => {
2500
3270
  }
2501
3271
  if (res.status === 403) {
2502
3272
  const json = await res.json()
2503
- expectTypeOf(json.error.code).toEqualTypeOf<'api_key_forbidden' | 'limit_exceeded'>()
3273
+ expectTypeOf(json.error.code).toEqualTypeOf<
3274
+ 'api_key_forbidden' | 'api_key_ip_forbidden' | 'limit_exceeded'
3275
+ >()
2504
3276
  }
2505
3277
  })
2506
3278