tapimo 0.7.1 → 0.7.2

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 (681) hide show
  1. package/dist/ApiKeys.d.ts +24 -7
  2. package/dist/ApiKeys.d.ts.map +1 -1
  3. package/dist/ApiKeys.js +17 -5
  4. package/dist/ApiKeys.js.map +1 -1
  5. package/dist/App.d.ts +12104 -7861
  6. package/dist/App.d.ts.map +1 -1
  7. package/dist/App.js +191 -128
  8. package/dist/App.js.map +1 -1
  9. package/dist/Assets.d.ts +10 -0
  10. package/dist/Assets.d.ts.map +1 -1
  11. package/dist/Assets.js +17 -4
  12. package/dist/Assets.js.map +1 -1
  13. package/dist/Scope.d.ts +19 -8
  14. package/dist/Scope.d.ts.map +1 -1
  15. package/dist/Scope.js +25 -9
  16. package/dist/Scope.js.map +1 -1
  17. package/dist/Webhooks.d.ts +1 -1
  18. package/dist/admin/App.d.ts +601 -20
  19. package/dist/admin/App.d.ts.map +1 -1
  20. package/dist/admin/App.js +12 -2
  21. package/dist/admin/App.js.map +1 -1
  22. package/dist/admin/apps/api-keys.d.ts +94 -11
  23. package/dist/admin/apps/api-keys.d.ts.map +1 -1
  24. package/dist/admin/apps/api-keys.js +141 -32
  25. package/dist/admin/apps/api-keys.js.map +1 -1
  26. package/dist/admin/apps/earn-vaults.d.ts +1069 -0
  27. package/dist/admin/apps/earn-vaults.d.ts.map +1 -0
  28. package/dist/admin/apps/earn-vaults.js +409 -0
  29. package/dist/admin/apps/earn-vaults.js.map +1 -0
  30. package/dist/admin/apps/verified-tokens.d.ts +166 -166
  31. package/dist/admin/ui.generated.d.ts +1 -1
  32. package/dist/admin/ui.generated.d.ts.map +1 -1
  33. package/dist/admin/ui.generated.js +99 -43
  34. package/dist/admin/ui.generated.js.map +1 -1
  35. package/dist/analytics/Analytics.d.ts +2 -0
  36. package/dist/analytics/Analytics.d.ts.map +1 -1
  37. package/dist/analytics/Analytics.js +18 -2
  38. package/dist/analytics/Analytics.js.map +1 -1
  39. package/dist/analytics/tables/requestEvents.d.ts +22 -1
  40. package/dist/analytics/tables/requestEvents.d.ts.map +1 -1
  41. package/dist/analytics/tables/requestEvents.js +59 -39
  42. package/dist/analytics/tables/requestEvents.js.map +1 -1
  43. package/dist/apps/Zones.d.ts +8335 -0
  44. package/dist/apps/Zones.d.ts.map +1 -0
  45. package/dist/apps/Zones.js +38 -0
  46. package/dist/apps/Zones.js.map +1 -0
  47. package/dist/apps/data/App.d.ts +12125 -7913
  48. package/dist/apps/data/App.d.ts.map +1 -1
  49. package/dist/apps/data/App.js +91 -19
  50. package/dist/apps/data/App.js.map +1 -1
  51. package/dist/apps/data/FxOracle.d.ts +1 -1
  52. package/dist/apps/data/FxOracle.d.ts.map +1 -1
  53. package/dist/apps/data/index.d.ts +0 -1
  54. package/dist/apps/data/index.d.ts.map +1 -1
  55. package/dist/apps/data/index.js +0 -1
  56. package/dist/apps/data/index.js.map +1 -1
  57. package/dist/apps/data/routes/activities.d.ts +32 -32
  58. package/dist/apps/data/routes/activities.d.ts.map +1 -1
  59. package/dist/apps/data/routes/activities.js +130 -65
  60. package/dist/apps/data/routes/activities.js.map +1 -1
  61. package/dist/apps/data/routes/addresses.d.ts +312 -312
  62. package/dist/apps/data/routes/balances.d.ts +18 -18
  63. package/dist/apps/data/routes/balances.js +5 -5
  64. package/dist/apps/data/routes/balances.js.map +1 -1
  65. package/dist/apps/data/routes/coingecko.d.ts +176 -176
  66. package/dist/apps/data/routes/coingecko.d.ts.map +1 -1
  67. package/dist/apps/data/routes/coingecko.js +62 -35
  68. package/dist/apps/data/routes/coingecko.js.map +1 -1
  69. package/dist/apps/data/routes/earn.d.ts +2144 -0
  70. package/dist/apps/data/routes/earn.d.ts.map +1 -0
  71. package/dist/apps/data/routes/earn.js +947 -0
  72. package/dist/apps/data/routes/earn.js.map +1 -0
  73. package/dist/apps/data/routes/exchanges.d.ts +1625 -718
  74. package/dist/apps/data/routes/exchanges.d.ts.map +1 -1
  75. package/dist/apps/data/routes/exchanges.js +656 -193
  76. package/dist/apps/data/routes/exchanges.js.map +1 -1
  77. package/dist/apps/data/routes/fee-amm.d.ts +108 -108
  78. package/dist/apps/data/routes/fee-amm.d.ts.map +1 -1
  79. package/dist/apps/data/routes/fee-amm.js +59 -8
  80. package/dist/apps/data/routes/fee-amm.js.map +1 -1
  81. package/dist/apps/data/routes/funding.d.ts +4092 -387
  82. package/dist/apps/data/routes/funding.d.ts.map +1 -1
  83. package/dist/apps/data/routes/funding.js +1403 -256
  84. package/dist/apps/data/routes/funding.js.map +1 -1
  85. package/dist/apps/data/routes/indexer.d.ts +30 -30
  86. package/dist/apps/data/routes/indexer.d.ts.map +1 -1
  87. package/dist/apps/data/routes/indexer.js +19 -2
  88. package/dist/apps/data/routes/indexer.js.map +1 -1
  89. package/dist/apps/data/routes/receipts.d.ts +263 -263
  90. package/dist/apps/data/routes/receipts.d.ts.map +1 -1
  91. package/dist/apps/data/routes/receipts.js +11 -11
  92. package/dist/apps/data/routes/receipts.js.map +1 -1
  93. package/dist/apps/data/routes/rpc.d.ts +5 -5
  94. package/dist/apps/data/routes/rpc.d.ts.map +1 -1
  95. package/dist/apps/data/routes/rpc.js +211 -22
  96. package/dist/apps/data/routes/rpc.js.map +1 -1
  97. package/dist/apps/data/routes/tokenlist.d.ts +36 -36
  98. package/dist/apps/data/routes/tokenlist.d.ts.map +1 -1
  99. package/dist/apps/data/routes/tokenlist.js +39 -8
  100. package/dist/apps/data/routes/tokenlist.js.map +1 -1
  101. package/dist/apps/data/routes/tokens.d.ts +114 -86
  102. package/dist/apps/data/routes/tokens.d.ts.map +1 -1
  103. package/dist/apps/data/routes/tokens.js +194 -91
  104. package/dist/apps/data/routes/tokens.js.map +1 -1
  105. package/dist/apps/data/routes/transactions.d.ts +53 -53
  106. package/dist/apps/data/routes/transactions.d.ts.map +1 -1
  107. package/dist/apps/data/routes/transactions.js +78 -39
  108. package/dist/apps/data/routes/transactions.js.map +1 -1
  109. package/dist/apps/data/routes/transfers.d.ts +76 -27
  110. package/dist/apps/data/routes/transfers.d.ts.map +1 -1
  111. package/dist/apps/data/routes/transfers.js +165 -67
  112. package/dist/apps/data/routes/transfers.js.map +1 -1
  113. package/dist/apps/data/routes/valuation.d.ts +42 -42
  114. package/dist/apps/data/routes/valuation.js +2 -2
  115. package/dist/apps/data/routes/valuation.js.map +1 -1
  116. package/dist/apps/data/routes/webhooks.d.ts +369 -367
  117. package/dist/apps/data/routes/webhooks.d.ts.map +1 -1
  118. package/dist/apps/data/routes/webhooks.js +161 -59
  119. package/dist/apps/data/routes/webhooks.js.map +1 -1
  120. package/dist/apps/data/routes/zones.d.ts +281 -0
  121. package/dist/apps/data/routes/zones.d.ts.map +1 -0
  122. package/dist/apps/data/routes/zones.js +252 -0
  123. package/dist/apps/data/routes/zones.js.map +1 -0
  124. package/dist/apps/docs/reference.js +6 -5
  125. package/dist/apps/docs/reference.js.map +1 -1
  126. package/dist/apps/index.d.ts +2 -1
  127. package/dist/apps/index.d.ts.map +1 -1
  128. package/dist/apps/index.js +2 -1
  129. package/dist/apps/index.js.map +1 -1
  130. package/dist/apps/management/App.d.ts +670 -670
  131. package/dist/apps/management/Billing.d.ts +8 -0
  132. package/dist/apps/management/Billing.d.ts.map +1 -1
  133. package/dist/apps/management/Billing.js +12 -0
  134. package/dist/apps/management/Billing.js.map +1 -1
  135. package/dist/apps/management/Error.d.ts +12 -0
  136. package/dist/apps/management/Error.d.ts.map +1 -0
  137. package/dist/apps/management/Error.js +10 -0
  138. package/dist/apps/management/Error.js.map +1 -0
  139. package/dist/apps/management/routes/api-keys.d.ts +5 -5
  140. package/dist/apps/management/routes/api-keys.d.ts.map +1 -1
  141. package/dist/apps/management/routes/api-keys.js +2 -8
  142. package/dist/apps/management/routes/api-keys.js.map +1 -1
  143. package/dist/apps/management/routes/billing.d.ts +119 -119
  144. package/dist/apps/management/routes/faucet.d.ts +2 -2
  145. package/dist/apps/management/routes/invitations.d.ts +62 -62
  146. package/dist/apps/management/routes/invitations.d.ts.map +1 -1
  147. package/dist/apps/management/routes/invitations.js +4 -10
  148. package/dist/apps/management/routes/invitations.js.map +1 -1
  149. package/dist/apps/management/routes/invite-links.d.ts +30 -30
  150. package/dist/apps/management/routes/me.d.ts +6 -6
  151. package/dist/apps/management/routes/members.d.ts +2 -2
  152. package/dist/apps/management/routes/orgs.d.ts +48 -48
  153. package/dist/apps/management/routes/orgs.d.ts.map +1 -1
  154. package/dist/apps/management/routes/orgs.js +2 -8
  155. package/dist/apps/management/routes/orgs.js.map +1 -1
  156. package/dist/apps/management/routes/projects.d.ts +9 -9
  157. package/dist/apps/management/routes/scopes.js +2 -2
  158. package/dist/apps/management/routes/scopes.js.map +1 -1
  159. package/dist/apps/management/routes/verified-token-requests.d.ts +36 -36
  160. package/dist/apps/management/routes/webhooks.d.ts +50 -50
  161. package/dist/apps/management/routes/webhooks.d.ts.map +1 -1
  162. package/dist/apps/management/routes/webhooks.js +15 -3
  163. package/dist/apps/management/routes/webhooks.js.map +1 -1
  164. package/dist/apps/mpp/App.d.ts +55 -56
  165. package/dist/apps/mpp/App.d.ts.map +1 -1
  166. package/dist/apps/mpp/App.js +192 -27
  167. package/dist/apps/mpp/App.js.map +1 -1
  168. package/dist/apps/mpp/Mpp.d.ts +0 -20
  169. package/dist/apps/mpp/Mpp.d.ts.map +1 -1
  170. package/dist/apps/mpp/Mpp.js +0 -24
  171. package/dist/apps/mpp/Mpp.js.map +1 -1
  172. package/dist/apps/mpp/internal/Adapter.d.ts +40 -0
  173. package/dist/apps/mpp/internal/Adapter.d.ts.map +1 -0
  174. package/dist/apps/mpp/internal/Adapter.js +66 -0
  175. package/dist/apps/mpp/internal/Adapter.js.map +1 -0
  176. package/dist/apps/mpp/internal/Error.d.ts +4 -0
  177. package/dist/apps/mpp/internal/Error.d.ts.map +1 -0
  178. package/dist/apps/mpp/internal/Error.js +41 -0
  179. package/dist/apps/mpp/internal/Error.js.map +1 -0
  180. package/dist/apps/mpp/internal/Idempotency.d.ts +33 -0
  181. package/dist/apps/mpp/internal/Idempotency.d.ts.map +1 -0
  182. package/dist/apps/mpp/internal/Idempotency.js +28 -0
  183. package/dist/apps/mpp/internal/Idempotency.js.map +1 -0
  184. package/dist/apps/mpp/internal/Policy.d.ts +46 -0
  185. package/dist/apps/mpp/internal/Policy.d.ts.map +1 -0
  186. package/dist/apps/mpp/internal/Policy.js +57 -0
  187. package/dist/apps/mpp/internal/Policy.js.map +1 -0
  188. package/dist/apps/mpp/internal/ScreenManager.d.ts +27 -0
  189. package/dist/apps/mpp/internal/ScreenManager.d.ts.map +1 -0
  190. package/dist/apps/mpp/internal/ScreenManager.js +18 -0
  191. package/dist/apps/mpp/internal/ScreenManager.js.map +1 -0
  192. package/dist/apps/mpp/internal/Screening.d.ts +35 -0
  193. package/dist/apps/mpp/internal/Screening.d.ts.map +1 -0
  194. package/dist/apps/mpp/internal/Screening.js +20 -0
  195. package/dist/apps/mpp/internal/Screening.js.map +1 -0
  196. package/dist/apps/mpp/internal/Sponsorship.d.ts +36 -0
  197. package/dist/apps/mpp/internal/Sponsorship.d.ts.map +1 -0
  198. package/dist/apps/mpp/internal/Sponsorship.js +103 -0
  199. package/dist/apps/mpp/internal/Sponsorship.js.map +1 -0
  200. package/dist/apps/mpp/internal/Utils.d.ts +7 -0
  201. package/dist/apps/mpp/internal/Utils.d.ts.map +1 -0
  202. package/dist/apps/mpp/internal/Utils.js +24 -0
  203. package/dist/apps/mpp/internal/Utils.js.map +1 -0
  204. package/dist/apps/relay/App.js +183 -23
  205. package/dist/apps/relay/App.js.map +1 -1
  206. package/dist/apps/relay/Sponsorships.d.ts +4 -0
  207. package/dist/apps/relay/Sponsorships.d.ts.map +1 -1
  208. package/dist/apps/relay/Sponsorships.js +15 -6
  209. package/dist/apps/relay/Sponsorships.js.map +1 -1
  210. package/dist/db/Db.d.ts +20 -0
  211. package/dist/db/Db.d.ts.map +1 -1
  212. package/dist/db/Db.js +342 -0
  213. package/dist/db/Db.js.map +1 -1
  214. package/dist/db/Schema.d.ts +921 -1
  215. package/dist/db/Schema.d.ts.map +1 -1
  216. package/dist/db/Schema.js +269 -1
  217. package/dist/db/Schema.js.map +1 -1
  218. package/dist/db/tables/earnVaults.d.ts +68 -0
  219. package/dist/db/tables/earnVaults.d.ts.map +1 -0
  220. package/dist/db/tables/earnVaults.js +72 -0
  221. package/dist/db/tables/earnVaults.js.map +1 -0
  222. package/dist/db/tables/fundingCatalog.d.ts +56 -0
  223. package/dist/db/tables/fundingCatalog.d.ts.map +1 -0
  224. package/dist/db/tables/fundingCatalog.js +85 -0
  225. package/dist/db/tables/fundingCatalog.js.map +1 -0
  226. package/dist/db/tables/fundingDepositAddresses.d.ts +159 -0
  227. package/dist/db/tables/fundingDepositAddresses.d.ts.map +1 -0
  228. package/dist/db/tables/fundingDepositAddresses.js +206 -0
  229. package/dist/db/tables/fundingDepositAddresses.js.map +1 -0
  230. package/dist/db/tables/fundingDeposits.d.ts +115 -0
  231. package/dist/db/tables/fundingDeposits.d.ts.map +1 -0
  232. package/dist/db/tables/fundingDeposits.js +100 -0
  233. package/dist/db/tables/fundingDeposits.js.map +1 -0
  234. package/dist/db/tables/fundingIdempotency.d.ts +91 -0
  235. package/dist/db/tables/fundingIdempotency.d.ts.map +1 -0
  236. package/dist/db/tables/fundingIdempotency.js +103 -0
  237. package/dist/db/tables/fundingIdempotency.js.map +1 -0
  238. package/dist/db/tables/fundingTransferEvents.d.ts +12 -0
  239. package/dist/db/tables/fundingTransferEvents.d.ts.map +1 -0
  240. package/dist/db/tables/fundingTransferEvents.js +18 -0
  241. package/dist/db/tables/fundingTransferEvents.js.map +1 -0
  242. package/dist/db/tables/fundingTransferTransactions.d.ts +15 -0
  243. package/dist/db/tables/fundingTransferTransactions.d.ts.map +1 -0
  244. package/dist/db/tables/fundingTransferTransactions.js +27 -0
  245. package/dist/db/tables/fundingTransferTransactions.js.map +1 -0
  246. package/dist/db/tables/fundingTransfers.d.ts +82 -0
  247. package/dist/db/tables/fundingTransfers.d.ts.map +1 -0
  248. package/dist/db/tables/fundingTransfers.js +89 -0
  249. package/dist/db/tables/fundingTransfers.js.map +1 -0
  250. package/dist/db/tables/organizations.d.ts +8 -0
  251. package/dist/db/tables/organizations.d.ts.map +1 -1
  252. package/dist/db/tables/organizations.js +16 -0
  253. package/dist/db/tables/organizations.js.map +1 -1
  254. package/dist/db/tables/projects.d.ts +8 -0
  255. package/dist/db/tables/projects.d.ts.map +1 -1
  256. package/dist/db/tables/projects.js +16 -0
  257. package/dist/db/tables/projects.js.map +1 -1
  258. package/dist/db/tables/requestUsage.d.ts +13 -0
  259. package/dist/db/tables/requestUsage.d.ts.map +1 -1
  260. package/dist/db/tables/requestUsage.js +16 -0
  261. package/dist/db/tables/requestUsage.js.map +1 -1
  262. package/dist/db/tables/sponsoredTransactions.d.ts +2 -2
  263. package/dist/db/tables/sponsoredTransactions.d.ts.map +1 -1
  264. package/dist/db/tables/sponsoredTransactions.js +1 -1
  265. package/dist/db/tables/sponsoredTransactions.js.map +1 -1
  266. package/dist/db/tables/users.d.ts +8 -0
  267. package/dist/db/tables/users.d.ts.map +1 -1
  268. package/dist/db/tables/users.js +16 -0
  269. package/dist/db/tables/users.js.map +1 -1
  270. package/dist/db/tables/verifiedTokens.d.ts +14 -7
  271. package/dist/db/tables/verifiedTokens.d.ts.map +1 -1
  272. package/dist/db/tables/verifiedTokens.js +9 -7
  273. package/dist/db/tables/verifiedTokens.js.map +1 -1
  274. package/dist/db/tables/webhookSubscriptions.d.ts +31 -1
  275. package/dist/db/tables/webhookSubscriptions.d.ts.map +1 -1
  276. package/dist/db/tables/webhookSubscriptions.js +24 -3
  277. package/dist/db/tables/webhookSubscriptions.js.map +1 -1
  278. package/dist/handlers/relay.js +108 -108
  279. package/dist/handlers/relay.js.map +1 -1
  280. package/dist/internal/Auth.d.ts +26 -0
  281. package/dist/internal/Auth.d.ts.map +1 -1
  282. package/dist/internal/Auth.js +35 -2
  283. package/dist/internal/Auth.js.map +1 -1
  284. package/dist/internal/Cache.d.ts.map +1 -1
  285. package/dist/internal/Cache.js +16 -10
  286. package/dist/internal/Cache.js.map +1 -1
  287. package/dist/internal/Cursor.js +1 -1
  288. package/dist/internal/Cursor.js.map +1 -1
  289. package/dist/internal/EarnRates.d.ts +89 -0
  290. package/dist/internal/EarnRates.d.ts.map +1 -0
  291. package/dist/internal/EarnRates.js +266 -0
  292. package/dist/internal/EarnRates.js.map +1 -0
  293. package/dist/internal/EarnVaults.d.ts +171 -0
  294. package/dist/internal/EarnVaults.d.ts.map +1 -0
  295. package/dist/internal/EarnVaults.js +547 -0
  296. package/dist/internal/EarnVaults.js.map +1 -0
  297. package/dist/internal/EdgeCache.d.ts +8 -1
  298. package/dist/internal/EdgeCache.d.ts.map +1 -1
  299. package/dist/internal/EdgeCache.js +33 -7
  300. package/dist/internal/EdgeCache.js.map +1 -1
  301. package/dist/internal/Id.d.ts +11 -0
  302. package/dist/internal/Id.d.ts.map +1 -1
  303. package/dist/internal/Id.js +13 -0
  304. package/dist/internal/Id.js.map +1 -1
  305. package/dist/internal/Idempotency.d.ts +83 -0
  306. package/dist/internal/Idempotency.d.ts.map +1 -0
  307. package/dist/internal/Idempotency.js +113 -0
  308. package/dist/internal/Idempotency.js.map +1 -0
  309. package/dist/internal/Log.d.ts +64 -9
  310. package/dist/internal/Log.d.ts.map +1 -1
  311. package/dist/internal/Log.js +29 -7
  312. package/dist/internal/Log.js.map +1 -1
  313. package/dist/internal/MetricSink.d.ts.map +1 -1
  314. package/dist/internal/MetricSink.js +47 -1
  315. package/dist/internal/MetricSink.js.map +1 -1
  316. package/dist/internal/OpenApi.d.ts +1 -1
  317. package/dist/internal/OpenApi.d.ts.map +1 -1
  318. package/dist/internal/OpenApi.js +3 -0
  319. package/dist/internal/OpenApi.js.map +1 -1
  320. package/dist/internal/Provider.d.ts +14 -0
  321. package/dist/internal/Provider.d.ts.map +1 -0
  322. package/dist/internal/Provider.js +5 -0
  323. package/dist/internal/Provider.js.map +1 -0
  324. package/dist/internal/Schema.d.ts +6 -1
  325. package/dist/internal/Schema.d.ts.map +1 -1
  326. package/dist/internal/Schema.js +20 -11
  327. package/dist/internal/Schema.js.map +1 -1
  328. package/dist/internal/Store.d.ts +6 -0
  329. package/dist/internal/Store.d.ts.map +1 -1
  330. package/dist/internal/Store.js +35 -0
  331. package/dist/internal/Store.js.map +1 -1
  332. package/dist/internal/Tidx.d.ts +43 -24
  333. package/dist/internal/Tidx.d.ts.map +1 -1
  334. package/dist/internal/Tidx.js +79 -11
  335. package/dist/internal/Tidx.js.map +1 -1
  336. package/dist/internal/Viem.d.ts +82 -65
  337. package/dist/internal/Viem.d.ts.map +1 -1
  338. package/dist/internal/Viem.js +83 -12
  339. package/dist/internal/Viem.js.map +1 -1
  340. package/dist/internal/WebhookDestination.d.ts.map +1 -1
  341. package/dist/internal/WebhookDestination.js +34 -28
  342. package/dist/internal/WebhookDestination.js.map +1 -1
  343. package/dist/internal/Webhooks.d.ts +9 -0
  344. package/dist/internal/Webhooks.d.ts.map +1 -1
  345. package/dist/internal/Webhooks.js +15 -10
  346. package/dist/internal/Webhooks.js.map +1 -1
  347. package/dist/internal/exchange/Provider.d.ts +219 -0
  348. package/dist/internal/exchange/Provider.d.ts.map +1 -0
  349. package/dist/internal/exchange/Provider.js +117 -0
  350. package/dist/internal/exchange/Provider.js.map +1 -0
  351. package/dist/internal/exchange/index.d.ts +2 -0
  352. package/dist/internal/exchange/index.d.ts.map +1 -0
  353. package/dist/internal/exchange/index.js +2 -0
  354. package/dist/internal/exchange/index.js.map +1 -0
  355. package/dist/internal/exchange/providers/uniswap.d.ts +57 -0
  356. package/dist/internal/exchange/providers/uniswap.d.ts.map +1 -0
  357. package/dist/internal/exchange/providers/uniswap.js +553 -0
  358. package/dist/internal/exchange/providers/uniswap.js.map +1 -0
  359. package/dist/internal/funding/Action.d.ts +55 -0
  360. package/dist/internal/funding/Action.d.ts.map +1 -0
  361. package/dist/internal/funding/Action.js +74 -0
  362. package/dist/internal/funding/Action.js.map +1 -0
  363. package/dist/internal/funding/Catalog.d.ts +107 -0
  364. package/dist/internal/funding/Catalog.d.ts.map +1 -0
  365. package/dist/internal/funding/Catalog.js +270 -0
  366. package/dist/internal/funding/Catalog.js.map +1 -0
  367. package/dist/internal/funding/Chain.d.ts +76 -0
  368. package/dist/internal/funding/Chain.d.ts.map +1 -0
  369. package/dist/internal/funding/Chain.js +38 -0
  370. package/dist/internal/funding/Chain.js.map +1 -0
  371. package/dist/internal/funding/Deposit.d.ts +366 -0
  372. package/dist/internal/funding/Deposit.d.ts.map +1 -0
  373. package/dist/internal/funding/Deposit.js +286 -0
  374. package/dist/internal/funding/Deposit.js.map +1 -0
  375. package/dist/internal/funding/DepositAddress.d.ts +345 -0
  376. package/dist/internal/funding/DepositAddress.d.ts.map +1 -0
  377. package/dist/internal/funding/DepositAddress.js +189 -0
  378. package/dist/internal/funding/DepositAddress.js.map +1 -0
  379. package/dist/internal/funding/Evidence.d.ts +52 -0
  380. package/dist/internal/funding/Evidence.d.ts.map +1 -0
  381. package/dist/internal/funding/Evidence.js +314 -0
  382. package/dist/internal/funding/Evidence.js.map +1 -0
  383. package/dist/internal/funding/Provider.d.ts +1186 -0
  384. package/dist/internal/funding/Provider.d.ts.map +1 -0
  385. package/dist/internal/funding/Provider.js +1081 -0
  386. package/dist/internal/funding/Provider.js.map +1 -0
  387. package/dist/internal/funding/Reconciliation.d.ts +113 -0
  388. package/dist/internal/funding/Reconciliation.d.ts.map +1 -0
  389. package/dist/internal/funding/Reconciliation.js +676 -0
  390. package/dist/internal/funding/Reconciliation.js.map +1 -0
  391. package/dist/internal/funding/Route.d.ts +21 -0
  392. package/dist/internal/funding/Route.d.ts.map +1 -0
  393. package/dist/internal/funding/Route.js +5 -0
  394. package/dist/internal/funding/Route.js.map +1 -0
  395. package/dist/internal/funding/Subsidy.d.ts +113 -0
  396. package/dist/internal/funding/Subsidy.d.ts.map +1 -0
  397. package/dist/internal/funding/Subsidy.js +138 -0
  398. package/dist/internal/funding/Subsidy.js.map +1 -0
  399. package/dist/internal/funding/Token.d.ts +41 -0
  400. package/dist/internal/funding/Token.d.ts.map +1 -0
  401. package/dist/internal/funding/Token.js +22 -0
  402. package/dist/internal/funding/Token.js.map +1 -0
  403. package/dist/internal/funding/Transfer.d.ts +643 -0
  404. package/dist/internal/funding/Transfer.d.ts.map +1 -0
  405. package/dist/internal/funding/Transfer.js +332 -0
  406. package/dist/internal/funding/Transfer.js.map +1 -0
  407. package/dist/internal/funding/index.d.ts +13 -0
  408. package/dist/internal/funding/index.d.ts.map +1 -0
  409. package/dist/internal/funding/index.js +13 -0
  410. package/dist/internal/funding/index.js.map +1 -0
  411. package/dist/internal/funding/providers/across.d.ts +21 -0
  412. package/dist/internal/funding/providers/across.d.ts.map +1 -0
  413. package/dist/internal/funding/providers/across.js +117 -0
  414. package/dist/internal/funding/providers/across.js.map +1 -0
  415. package/dist/internal/funding/providers/relay.d.ts +46 -0
  416. package/dist/internal/funding/providers/relay.d.ts.map +1 -0
  417. package/dist/internal/funding/providers/relay.js +464 -0
  418. package/dist/internal/funding/providers/relay.js.map +1 -0
  419. package/dist/internal/funding/providers/rhino.d.ts +15 -0
  420. package/dist/internal/funding/providers/rhino.d.ts.map +1 -0
  421. package/dist/internal/funding/providers/rhino.js +116 -0
  422. package/dist/internal/funding/providers/rhino.js.map +1 -0
  423. package/dist/internal/funding/providers/squid.d.ts +19 -0
  424. package/dist/internal/funding/providers/squid.d.ts.map +1 -0
  425. package/dist/internal/funding/providers/squid.js +120 -0
  426. package/dist/internal/funding/providers/squid.js.map +1 -0
  427. package/dist/internal/funding/providers/symbiosis.d.ts +20 -0
  428. package/dist/internal/funding/providers/symbiosis.d.ts.map +1 -0
  429. package/dist/internal/funding/providers/symbiosis.js +176 -0
  430. package/dist/internal/funding/providers/symbiosis.js.map +1 -0
  431. package/dist/internal/index.d.ts +5 -1
  432. package/dist/internal/index.d.ts.map +1 -1
  433. package/dist/internal/index.js +5 -1
  434. package/dist/internal/index.js.map +1 -1
  435. package/dist/internal/webhookDestinations/url.js +61 -57
  436. package/dist/internal/webhookDestinations/url.js.map +1 -1
  437. package/dist/providers/index.d.ts +43 -0
  438. package/dist/providers/index.d.ts.map +1 -0
  439. package/dist/providers/index.js +19 -0
  440. package/dist/providers/index.js.map +1 -0
  441. package/package.json +9 -4
  442. package/src/ApiKeys.test.ts +11 -7
  443. package/src/ApiKeys.ts +37 -9
  444. package/src/App.test.ts +85 -10
  445. package/src/App.ts +224 -137
  446. package/src/Assets.ts +29 -4
  447. package/src/Client.test-d.ts +650 -30
  448. package/src/Scope.test.ts +19 -0
  449. package/src/Scope.ts +28 -11
  450. package/src/Webhooks.test.ts +25 -0
  451. package/src/Webhooks.ts +1 -1
  452. package/src/admin/App.test.ts +9 -2
  453. package/src/admin/App.ts +32 -9
  454. package/src/admin/apps/api-keys.test.ts +167 -23
  455. package/src/admin/apps/api-keys.ts +166 -28
  456. package/src/admin/apps/earn-vaults.test.ts +338 -0
  457. package/src/admin/apps/earn-vaults.ts +572 -0
  458. package/src/admin/apps/scopes.test.ts +16 -1
  459. package/src/admin/ui/plugin.ts +2 -2
  460. package/src/admin/ui/src/components/EarnVaultForm.tsx +137 -0
  461. package/src/admin/ui/src/components/MobileProfile.tsx +2 -2
  462. package/src/admin/ui/src/components/Page.tsx +1 -1
  463. package/src/admin/ui/src/components/ThemeToggle.tsx +1 -1
  464. package/src/admin/ui/src/lib/api-keys.ts +37 -7
  465. package/src/admin/ui/src/lib/client.ts +1 -1
  466. package/src/admin/ui/src/lib/config.ts +1 -1
  467. package/src/admin/ui/src/lib/early-access.ts +8 -9
  468. package/src/admin/ui/src/lib/earn-vaults.ts +207 -0
  469. package/src/admin/ui/src/lib/format.ts +13 -0
  470. package/src/admin/ui/src/lib/organizations.test.ts +14 -4
  471. package/src/admin/ui/src/lib/organizations.ts +7 -1
  472. package/src/admin/ui/src/lib/response.ts +22 -0
  473. package/src/admin/ui/src/lib/scopes.test.ts +19 -11
  474. package/src/admin/ui/src/lib/scopes.ts +28 -7
  475. package/src/admin/ui/src/lib/verified-tokens.ts +10 -9
  476. package/src/admin/ui/src/routeTree.gen.ts +70 -7
  477. package/src/admin/ui/src/router.tsx +2 -2
  478. package/src/admin/ui/src/routes/__root.tsx +9 -8
  479. package/src/admin/ui/src/routes/api-keys.tsx +475 -64
  480. package/src/admin/ui/src/routes/early-access.tsx +5 -12
  481. package/src/admin/ui/src/routes/earn.vaults.tsx +348 -0
  482. package/src/admin/ui/src/routes/earn.vaults_.$vaultId.edit.tsx +154 -0
  483. package/src/admin/ui/src/routes/earn.vaults_.new.tsx +190 -0
  484. package/src/admin/ui/src/routes/organizations.tsx +4 -7
  485. package/src/admin/ui/src/routes/organizations_.$orgId.tsx +56 -54
  486. package/src/admin/ui/src/routes/verified-tokens.tsx +4 -4
  487. package/src/admin/ui/vite.config.ts +4 -1
  488. package/src/admin/ui.generated.ts +113 -43
  489. package/src/analytics/Analytics.test.ts +69 -10
  490. package/src/analytics/Analytics.ts +20 -1
  491. package/src/analytics/tables/requestEvents.ts +79 -37
  492. package/src/apps/Zones.test.ts +33 -0
  493. package/src/apps/Zones.ts +40 -0
  494. package/src/apps/composition.test.ts +84 -1
  495. package/src/apps/data/App.test.ts +28 -11
  496. package/src/apps/data/App.ts +96 -33
  497. package/src/apps/data/FxOracle.ts +1 -1
  498. package/src/apps/data/index.ts +0 -1
  499. package/src/apps/data/routes/activities.test.ts +82 -6
  500. package/src/apps/data/routes/activities.ts +131 -71
  501. package/src/apps/data/routes/balances.test.ts +50 -37
  502. package/src/apps/data/routes/balances.ts +5 -5
  503. package/src/apps/data/routes/blocks.test.ts +2 -0
  504. package/src/apps/data/routes/coingecko.test.ts +22 -0
  505. package/src/apps/data/routes/coingecko.ts +84 -48
  506. package/src/apps/data/routes/earn.test.ts +1108 -0
  507. package/src/apps/data/routes/earn.ts +1391 -0
  508. package/src/apps/data/routes/exchanges.test.ts +82 -33
  509. package/src/apps/data/routes/exchanges.ts +842 -227
  510. package/src/apps/data/routes/fee-amm.test.ts +4 -6
  511. package/src/apps/data/routes/fee-amm.ts +69 -12
  512. package/src/apps/data/routes/funding.test.ts +2712 -221
  513. package/src/apps/data/routes/funding.ts +1604 -387
  514. package/src/apps/data/routes/indexer.test.ts +43 -34
  515. package/src/apps/data/routes/indexer.ts +19 -2
  516. package/src/apps/data/routes/receipts.test.ts +5 -3
  517. package/src/apps/data/routes/receipts.ts +13 -11
  518. package/src/apps/data/routes/rpc.test.ts +446 -28
  519. package/src/apps/data/routes/rpc.ts +243 -25
  520. package/src/apps/data/routes/tokenlist.ts +72 -19
  521. package/src/apps/data/routes/tokens.ts +258 -86
  522. package/src/apps/data/routes/transactions.test.ts +2 -0
  523. package/src/apps/data/routes/transactions.ts +77 -42
  524. package/src/apps/data/routes/transfers.test.ts +166 -4
  525. package/src/apps/data/routes/transfers.ts +216 -78
  526. package/src/apps/data/routes/valuation.test.ts +62 -9
  527. package/src/apps/data/routes/valuation.ts +2 -2
  528. package/src/apps/data/routes/webhooks.test.ts +386 -43
  529. package/src/apps/data/routes/webhooks.ts +172 -71
  530. package/src/apps/data/routes/zones.test.ts +473 -0
  531. package/src/apps/data/routes/zones.ts +338 -0
  532. package/src/apps/docs/reference.ts +8 -6
  533. package/src/apps/index.ts +2 -1
  534. package/src/apps/management/Billing.test.ts +29 -0
  535. package/src/apps/management/Billing.ts +23 -0
  536. package/src/apps/management/Error.ts +12 -0
  537. package/src/apps/management/routes/api-keys.test.ts +5 -3
  538. package/src/apps/management/routes/api-keys.ts +2 -9
  539. package/src/apps/management/routes/invitations.ts +4 -11
  540. package/src/apps/management/routes/orgs.ts +2 -9
  541. package/src/apps/management/routes/scopes.test.ts +7 -2
  542. package/src/apps/management/routes/scopes.ts +2 -2
  543. package/src/apps/management/routes/webhooks.test.ts +6 -1
  544. package/src/apps/management/routes/webhooks.ts +15 -3
  545. package/src/apps/mpp/App.ts +276 -29
  546. package/src/apps/mpp/Mpp.test.ts +631 -26
  547. package/src/apps/mpp/Mpp.ts +0 -42
  548. package/src/apps/mpp/internal/Adapter.ts +108 -3
  549. package/src/apps/mpp/internal/Error.test.ts +33 -0
  550. package/src/apps/mpp/internal/Error.ts +44 -6
  551. package/src/apps/mpp/internal/Idempotency.test.ts +213 -0
  552. package/src/apps/mpp/internal/Idempotency.ts +59 -5
  553. package/src/apps/mpp/internal/Policy.test.ts +122 -0
  554. package/src/apps/mpp/internal/Policy.ts +98 -0
  555. package/src/apps/mpp/internal/ScreenManager.test.ts +68 -0
  556. package/src/apps/mpp/internal/ScreenManager.ts +41 -0
  557. package/src/apps/mpp/internal/Screening.ts +40 -3
  558. package/src/apps/mpp/internal/Sponsorship.ts +144 -0
  559. package/src/apps/mpp/internal/Utils.ts +30 -0
  560. package/src/apps/relay/App.test.ts +493 -62
  561. package/src/apps/relay/App.ts +233 -23
  562. package/src/apps/relay/Sponsorships.test.ts +49 -0
  563. package/src/apps/relay/Sponsorships.ts +18 -6
  564. package/src/db/Db.ts +439 -0
  565. package/src/db/Schema.ts +325 -2
  566. package/src/db/tables/earnVaults.test.ts +185 -0
  567. package/src/db/tables/earnVaults.ts +151 -0
  568. package/src/db/tables/fundingCatalog.test.ts +108 -0
  569. package/src/db/tables/fundingCatalog.ts +157 -0
  570. package/src/db/tables/fundingDepositAddresses.test.ts +580 -0
  571. package/src/db/tables/fundingDepositAddresses.ts +376 -0
  572. package/src/db/tables/fundingDeposits.test.ts +261 -0
  573. package/src/db/tables/fundingDeposits.ts +229 -0
  574. package/src/db/tables/fundingIdempotency.test.ts +182 -0
  575. package/src/db/tables/fundingIdempotency.ts +180 -0
  576. package/src/db/tables/fundingTransferEvents.ts +28 -0
  577. package/src/db/tables/fundingTransferTransactions.test.ts +69 -0
  578. package/src/db/tables/fundingTransferTransactions.ts +37 -0
  579. package/src/db/tables/fundingTransfers.test.ts +89 -0
  580. package/src/db/tables/fundingTransfers.ts +153 -0
  581. package/src/db/tables/organizations.ts +16 -0
  582. package/src/db/tables/projects.ts +16 -0
  583. package/src/db/tables/requestUsage.ts +23 -0
  584. package/src/db/tables/sponsoredTransactions.test.ts +11 -0
  585. package/src/db/tables/sponsoredTransactions.ts +3 -3
  586. package/src/db/tables/users.ts +16 -0
  587. package/src/db/tables/verifiedTokens.ts +19 -14
  588. package/src/db/tables/webhookSubscriptions.ts +58 -3
  589. package/src/handlers/relay.test.ts +2 -0
  590. package/src/handlers/relay.ts +95 -99
  591. package/src/internal/Auth.test.ts +48 -0
  592. package/src/internal/Auth.ts +61 -2
  593. package/src/internal/Cache.ts +13 -9
  594. package/src/internal/Cursor.test.ts +2 -2
  595. package/src/internal/Cursor.ts +1 -1
  596. package/src/internal/EarnRates.test.ts +125 -0
  597. package/src/internal/EarnRates.ts +409 -0
  598. package/src/internal/EarnVaults.test.ts +195 -0
  599. package/src/internal/EarnVaults.ts +876 -0
  600. package/src/internal/EdgeCache.test.ts +19 -0
  601. package/src/internal/EdgeCache.ts +35 -5
  602. package/src/internal/Id.ts +14 -0
  603. package/src/internal/Idempotency.test.ts +109 -0
  604. package/src/internal/Idempotency.ts +237 -0
  605. package/src/internal/Log.test-d.ts +41 -8
  606. package/src/internal/Log.test.ts +189 -8
  607. package/src/internal/Log.ts +124 -17
  608. package/src/internal/MetricSink.test.ts +244 -4
  609. package/src/internal/MetricSink.ts +51 -1
  610. package/src/internal/OpenApi.ts +3 -0
  611. package/src/internal/Provider.test.ts +17 -0
  612. package/src/internal/Provider.ts +17 -0
  613. package/src/internal/Schema.ts +27 -17
  614. package/src/internal/Store.test.ts +25 -0
  615. package/src/internal/Store.ts +46 -0
  616. package/src/internal/Tidx.local.test.ts +78 -3
  617. package/src/internal/Tidx.test.ts +212 -18
  618. package/src/internal/Tidx.ts +112 -32
  619. package/src/internal/VerifiedTokens.test.ts +15 -0
  620. package/src/internal/Viem.test.ts +170 -17
  621. package/src/internal/Viem.ts +111 -28
  622. package/src/internal/WebhookDestination.ts +25 -23
  623. package/src/internal/Webhooks.test.ts +59 -0
  624. package/src/internal/Webhooks.ts +34 -10
  625. package/src/internal/exchange/Provider.test.ts +216 -0
  626. package/src/internal/exchange/Provider.ts +326 -0
  627. package/src/internal/exchange/index.test.ts +6 -0
  628. package/src/internal/exchange/index.ts +1 -0
  629. package/src/internal/exchange/providers/uniswap.test.ts +122 -0
  630. package/src/internal/exchange/providers/uniswap.ts +682 -0
  631. package/src/internal/funding/Action.test.ts +138 -0
  632. package/src/internal/funding/Action.ts +117 -0
  633. package/src/internal/funding/Catalog.test.ts +311 -0
  634. package/src/internal/funding/Catalog.ts +347 -0
  635. package/src/internal/funding/Chain.test.ts +79 -0
  636. package/src/internal/funding/Chain.ts +120 -0
  637. package/src/internal/funding/Deposit.test.ts +26 -0
  638. package/src/internal/funding/Deposit.ts +453 -0
  639. package/src/internal/funding/DepositAddress.test.ts +18 -0
  640. package/src/internal/funding/DepositAddress.ts +312 -0
  641. package/src/internal/funding/Evidence.test.ts +297 -0
  642. package/src/internal/funding/Evidence.ts +430 -0
  643. package/src/internal/funding/Provider.test.ts +1328 -0
  644. package/src/internal/funding/Provider.ts +1796 -0
  645. package/src/internal/funding/Reconciliation.local.test.ts +504 -0
  646. package/src/internal/funding/Reconciliation.test.ts +2020 -0
  647. package/src/internal/funding/Reconciliation.ts +930 -0
  648. package/src/internal/funding/Route.test.ts +66 -0
  649. package/src/internal/funding/Route.ts +29 -0
  650. package/src/internal/funding/Subsidy.local.test.ts +152 -0
  651. package/src/internal/funding/Subsidy.test.ts +75 -0
  652. package/src/internal/funding/Subsidy.ts +260 -0
  653. package/src/internal/funding/Token.test.ts +47 -0
  654. package/src/internal/funding/Token.ts +59 -0
  655. package/src/internal/funding/Transfer.test.ts +369 -0
  656. package/src/internal/funding/Transfer.ts +522 -0
  657. package/src/internal/funding/index.test.ts +20 -0
  658. package/src/internal/funding/index.ts +12 -0
  659. package/src/internal/funding/providers/across.ts +149 -0
  660. package/src/{apps/data/FundingQuoteProviders.test.ts → internal/funding/providers/index.test.ts} +178 -157
  661. package/src/internal/funding/providers/relay.test.ts +474 -0
  662. package/src/internal/funding/providers/relay.ts +559 -0
  663. package/src/internal/funding/providers/rhino.ts +139 -0
  664. package/src/internal/funding/providers/squid.ts +151 -0
  665. package/src/internal/funding/providers/symbiosis.ts +221 -0
  666. package/src/internal/index.test.ts +5 -1
  667. package/src/internal/index.ts +5 -1
  668. package/src/internal/webhookDestinations/url.ts +49 -45
  669. package/src/providers/index.test.ts +14 -0
  670. package/src/providers/index.ts +54 -0
  671. package/dist/apps/data/FundingQuoteProviders.d.ts +0 -174
  672. package/dist/apps/data/FundingQuoteProviders.d.ts.map +0 -1
  673. package/dist/apps/data/FundingQuoteProviders.js +0 -775
  674. package/dist/apps/data/FundingQuoteProviders.js.map +0 -1
  675. package/dist/internal/FundingQuotes.d.ts +0 -864
  676. package/dist/internal/FundingQuotes.d.ts.map +0 -1
  677. package/dist/internal/FundingQuotes.js +0 -672
  678. package/dist/internal/FundingQuotes.js.map +0 -1
  679. package/src/apps/data/FundingQuoteProviders.ts +0 -1043
  680. package/src/internal/FundingQuotes.test.ts +0 -456
  681. package/src/internal/FundingQuotes.ts +0 -944
@@ -0,0 +1,151 @@
1
+ import { Address } from 'ox'
2
+ import * as z from 'zod/mini'
3
+
4
+ import * as FundingChain from '../Chain.js'
5
+ import * as FundingProvider from '../Provider.js'
6
+
7
+ const defaultBaseUrl = 'https://v2.api.squidrouter.com/v2'
8
+ const defaultFetch: FundingProvider.Fetch = (input, init) => globalThis.fetch(input, init)
9
+
10
+ namespace schema {
11
+ const IntegerString = z.string().check(z.regex(/^\d+$/))
12
+
13
+ const Token = z.object({
14
+ address: z.string(),
15
+ chainId: z.union([z.string(), z.number().check(z.int(), z.nonnegative())]),
16
+ decimals: z.number().check(z.int(), z.nonnegative()),
17
+ })
18
+
19
+ export const Quote = z.object({
20
+ route: z.object({
21
+ estimate: z.object({
22
+ estimatedRouteDuration: z.number().check(z.nonnegative()),
23
+ fromAmount: IntegerString,
24
+ fromToken: Token,
25
+ toAmount: IntegerString,
26
+ toAmountMin: IntegerString,
27
+ toToken: Token,
28
+ }),
29
+ }),
30
+ })
31
+
32
+ export const AmountUnavailable = z.object({
33
+ message: z.literal('Please increase the swap amount and try again.'),
34
+ type: z.literal('BAD_REQUEST'),
35
+ })
36
+ }
37
+
38
+ /** Creates a Squid funding provider backed by `/v2/route`. */
39
+ export function squid(options: squid.Options) {
40
+ if (options.integratorId.length === 0) throw new FundingProvider.ProviderConfigurationError()
41
+ if (!Address.validate(options.userAddress, { strict: false }))
42
+ throw new FundingProvider.ProviderConfigurationError()
43
+
44
+ const endpoint = new URL(options.baseUrl ?? defaultBaseUrl)
45
+ endpoint.pathname = `${endpoint.pathname.replace(/\/+$/, '')}/route`
46
+ const fetch = options.fetch ?? defaultFetch
47
+ const now = options.now ?? (() => new Date())
48
+
49
+ return FundingProvider.from({
50
+ id: 'squid',
51
+ name: 'Squid',
52
+ async getQuote({ candidate, route }, signal) {
53
+ const destinationChainId = FundingChain.eip155Id(route.destination.chain)
54
+ const sourceChainId = FundingChain.eip155Id(route.source.chain)
55
+ try {
56
+ const quote = await FundingProvider.requestJson(endpoint, {
57
+ body: {
58
+ fromAddress: options.userAddress,
59
+ fromAmount: candidate.sourceAmount.amount,
60
+ fromChain: sourceChainId,
61
+ fromToken: candidate.sourceToken.address,
62
+ quoteOnly: true,
63
+ // V1 quotes use a fixed 1% tolerance; callers cannot customize execution policy.
64
+ slippage: 1,
65
+ toAddress: options.userAddress,
66
+ toChain: destinationChainId,
67
+ toToken: candidate.destinationToken.address,
68
+ },
69
+ fetch,
70
+ headers: { 'x-integrator-id': options.integratorId },
71
+ method: 'POST',
72
+ signal,
73
+ })
74
+ const parsed = schema.Quote.safeParse(quote)
75
+ if (!parsed.success) throw new FundingProvider.ProviderPayloadError()
76
+ const response = parsed.data.route.estimate
77
+ if (
78
+ response.fromAmount !== candidate.sourceAmount.amount ||
79
+ !matchesToken(response.fromToken, sourceChainId, candidate.sourceToken) ||
80
+ !matchesToken(response.toToken, destinationChainId, candidate.destinationToken) ||
81
+ BigInt(response.toAmount) <= 0n ||
82
+ BigInt(response.toAmountMin) <= 0n ||
83
+ BigInt(response.toAmountMin) > BigInt(response.toAmount)
84
+ )
85
+ throw new FundingProvider.ProviderPayloadError()
86
+
87
+ return {
88
+ destinationAmountMin: response.toAmountMin,
89
+ destinationAmount: response.toAmount,
90
+ quality: {
91
+ estimatedSeconds: Math.ceil(response.estimatedRouteDuration),
92
+ liquiditySource: 'providerQuote',
93
+ sourceDetail: 'squid:route-v2',
94
+ tier: 'liquid',
95
+ },
96
+ sampledAt: now().toISOString(),
97
+ status: 'available',
98
+ }
99
+ } catch (cause) {
100
+ const unavailable =
101
+ FundingProvider.unavailable(cause, [
102
+ 'NO_ROUTE',
103
+ 'NO_ROUTE_FOUND',
104
+ 'ROUTE_NOT_FOUND',
105
+ 'UNSUPPORTED_ROUTE',
106
+ ]) ?? amountUnavailable(cause)
107
+ if (!unavailable) throw cause
108
+ return FundingProvider.unavailableResult({
109
+ detail: 'squid:route-v2',
110
+ message: unavailable,
111
+ now: now(),
112
+ source: 'providerQuote',
113
+ })
114
+ }
115
+ },
116
+ })
117
+ }
118
+
119
+ export declare namespace squid {
120
+ /** Squid provider options. */
121
+ type Options = {
122
+ /** Override for tests or Squid test environments. */
123
+ baseUrl?: string | undefined
124
+ /** Fetch implementation override for tests. */
125
+ fetch?: FundingProvider.Fetch | undefined
126
+ /** Squid integrator id sent in the required request header. */
127
+ integratorId: string
128
+ /** Clock override for deterministic tests. */
129
+ now?: (() => Date) | undefined
130
+ /** Quote wallet address used as the Squid sender and recipient. */
131
+ userAddress: string
132
+ }
133
+ }
134
+
135
+ function amountUnavailable(cause: unknown) {
136
+ if (!(cause instanceof FundingProvider.ProviderResponseError) || cause.status !== 400)
137
+ return undefined
138
+ return schema.AmountUnavailable.safeParse(cause.body).success ? 'AMOUNT_TOO_LOW' : undefined
139
+ }
140
+
141
+ function matchesToken(
142
+ token: z.output<typeof schema.Quote>['route']['estimate']['fromToken'],
143
+ chainId: string,
144
+ expected: FundingProvider.TokenRef,
145
+ ) {
146
+ return (
147
+ token.address.toLowerCase() === expected.address.toLowerCase() &&
148
+ String(token.chainId) === chainId &&
149
+ token.decimals === expected.decimals
150
+ )
151
+ }
@@ -0,0 +1,221 @@
1
+ import { Address } from 'ox'
2
+ import * as z from 'zod/mini'
3
+
4
+ import * as Store from '../../Store.js'
5
+ import * as FundingChain from '../Chain.js'
6
+ import * as FundingProvider from '../Provider.js'
7
+ import type * as FundingToken from '../Token.js'
8
+
9
+ const defaultBaseUrl = 'https://api.symbiosis.finance/crosschain'
10
+ const defaultFetch: FundingProvider.Fetch = (input, init) => globalThis.fetch(input, init)
11
+ // Keep one upstream slot free for deployment smoke tests and operational probes.
12
+ const rateLimit = 4
13
+ const rateLimitWindowMs = 1_000
14
+ const tronChainId = 728_126_428
15
+ const tronUsdtAddress = '0xa614f803b6fd780986a42c78ec9c7f77e6ded13c'
16
+
17
+ namespace schema {
18
+ const IntegerString = z.string().check(z.regex(/^\d+$/))
19
+
20
+ export const Token = z.object({
21
+ address: z.string(),
22
+ chainId: z.number().check(z.int(), z.nonnegative()),
23
+ decimals: z.number().check(z.int(), z.nonnegative()),
24
+ })
25
+
26
+ const TokenAmount = z.extend(Token, { amount: IntegerString })
27
+
28
+ export const Quote = z.object({
29
+ estimatedTime: z.optional(z.number().check(z.nonnegative())),
30
+ kind: z.union([z.literal('bridge'), z.literal('crosschain-swap'), z.literal('intent-swap')]),
31
+ routes: z
32
+ .array(
33
+ z.object({
34
+ tokens: z.array(Token).check(z.minLength(1)),
35
+ }),
36
+ )
37
+ .check(z.minLength(1)),
38
+ tokenAmountOut: TokenAmount,
39
+ tokenAmountOutMin: TokenAmount,
40
+ tx: z.object({ chainId: z.number().check(z.int(), z.nonnegative()) }),
41
+ type: z.union([z.literal('evm'), z.literal('tron')]),
42
+ })
43
+
44
+ export const AmountUnavailable = z.object({
45
+ message: z.literal('Amount is too low to cover fees'),
46
+ })
47
+ }
48
+
49
+ /** Creates a Symbiosis funding provider backed by `/v2/quote`. */
50
+ export function symbiosis(options: symbiosis.Options) {
51
+ if (!Address.validate(options.userAddress, { strict: false }))
52
+ throw new FundingProvider.ProviderConfigurationError()
53
+
54
+ const endpoint = new URL(options.baseUrl ?? defaultBaseUrl)
55
+ endpoint.pathname = `${endpoint.pathname.replace(/\/+$/, '')}/v2/quote`
56
+ const fetch = options.fetch ?? defaultFetch
57
+ const now = options.now ?? (() => new Date())
58
+ const rateLimitStore = options.rateLimitStore ?? Store.memory()
59
+
60
+ return FundingProvider.from({
61
+ id: 'symbiosis',
62
+ name: 'Symbiosis',
63
+ async getQuote({ candidate, route }, signal) {
64
+ const destinationChainId = chainId(route.destination.chain)
65
+ const sourceChainId = chainId(route.source.chain)
66
+ const sourceTokenAddress = tokenAddress(route.source)
67
+ try {
68
+ await consumeQuota(rateLimitStore, now())
69
+ const quote = await FundingProvider.requestJson(endpoint, {
70
+ body: {
71
+ from: options.userAddress,
72
+ slippage: 100,
73
+ to: options.userAddress,
74
+ tokenAmountIn: {
75
+ address: sourceTokenAddress,
76
+ amount: candidate.sourceAmount.amount,
77
+ chainId: sourceChainId,
78
+ decimals: candidate.sourceToken.decimals,
79
+ symbol: candidate.sourceToken.symbol,
80
+ },
81
+ tokenOut: {
82
+ address: candidate.destinationToken.address,
83
+ chainId: destinationChainId,
84
+ decimals: candidate.destinationToken.decimals,
85
+ symbol: candidate.destinationToken.symbol,
86
+ },
87
+ },
88
+ fetch,
89
+ headers: { 'x-partner-id': 'tempo' },
90
+ method: 'POST',
91
+ signal,
92
+ })
93
+ const parsed = schema.Quote.safeParse(quote)
94
+ if (!parsed.success) throw new FundingProvider.ProviderPayloadError()
95
+ const response = parsed.data
96
+ const firstToken = response.routes[0]!.tokens[0]!
97
+ const lastRoute = response.routes[response.routes.length - 1]!
98
+ const lastToken = lastRoute.tokens[lastRoute.tokens.length - 1]!
99
+ if (
100
+ response.tx.chainId !== sourceChainId ||
101
+ response.type !== candidate.sourceChain.kind ||
102
+ !matchesToken(firstToken, {
103
+ address: sourceTokenAddress,
104
+ chainId: sourceChainId,
105
+ decimals: candidate.sourceToken.decimals,
106
+ }) ||
107
+ !matchesToken(lastToken, {
108
+ address: candidate.destinationToken.address,
109
+ chainId: destinationChainId,
110
+ decimals: candidate.destinationToken.decimals,
111
+ }) ||
112
+ !matchesToken(response.tokenAmountOut, {
113
+ address: candidate.destinationToken.address,
114
+ chainId: destinationChainId,
115
+ decimals: candidate.destinationToken.decimals,
116
+ }) ||
117
+ !matchesToken(response.tokenAmountOutMin, {
118
+ address: candidate.destinationToken.address,
119
+ chainId: destinationChainId,
120
+ decimals: candidate.destinationToken.decimals,
121
+ }) ||
122
+ BigInt(response.tokenAmountOut.amount) <= 0n ||
123
+ BigInt(response.tokenAmountOutMin.amount) <= 0n ||
124
+ BigInt(response.tokenAmountOutMin.amount) > BigInt(response.tokenAmountOut.amount)
125
+ )
126
+ throw new FundingProvider.ProviderPayloadError()
127
+
128
+ return {
129
+ destinationAmountMin: response.tokenAmountOutMin.amount,
130
+ destinationAmount: response.tokenAmountOut.amount,
131
+ quality: {
132
+ ...(response.estimatedTime === undefined
133
+ ? {}
134
+ : { estimatedSeconds: Math.ceil(response.estimatedTime) }),
135
+ liquiditySource: 'providerQuote',
136
+ sourceDetail: 'symbiosis:quote-v2',
137
+ tier: 'liquid',
138
+ },
139
+ sampledAt: now().toISOString(),
140
+ status: 'available',
141
+ }
142
+ } catch (cause) {
143
+ const unavailable =
144
+ FundingProvider.unavailable(cause, [
145
+ 'AMOUNT_TOO_LOW',
146
+ 'NO_ROUTE',
147
+ 'NO_ROUTE_FOUND',
148
+ 'ROUTE_NOT_FOUND',
149
+ 'UNSUPPORTED_ROUTE',
150
+ ]) ?? amountUnavailable(cause)
151
+ if (!unavailable) throw cause
152
+ return FundingProvider.unavailableResult({
153
+ detail: 'symbiosis:quote-v2',
154
+ message: unavailable,
155
+ now: now(),
156
+ source: 'providerQuote',
157
+ })
158
+ }
159
+ },
160
+ })
161
+ }
162
+
163
+ export declare namespace symbiosis {
164
+ /** Symbiosis provider options. */
165
+ type Options = {
166
+ /** Override for tests or Symbiosis test environments. */
167
+ baseUrl?: string | undefined
168
+ /** Fetch implementation override for tests. */
169
+ fetch?: FundingProvider.Fetch | undefined
170
+ /** Clock override for deterministic tests. */
171
+ now?: (() => Date) | undefined
172
+ /** Atomic store used to enforce the provider-wide quote quota. */
173
+ rateLimitStore?: Store.Store | undefined
174
+ /** Quote wallet address used as the Symbiosis sender and recipient. */
175
+ userAddress: string
176
+ }
177
+ }
178
+
179
+ async function consumeQuota(store: Store.Store, now: Date) {
180
+ const time = now.getTime()
181
+ const bucket = Math.floor(time / rateLimitWindowMs)
182
+ const count = await Store.increment(store, `funding:symbiosis:quote:${bucket}`, {
183
+ ttl: rateLimitWindowMs * 2,
184
+ })
185
+ if (count > rateLimit) throw new FundingProvider.ProviderRateLimitError()
186
+ }
187
+
188
+ function amountUnavailable(cause: unknown) {
189
+ if (!(cause instanceof FundingProvider.ProviderResponseError) || cause.status !== 400)
190
+ return undefined
191
+ return schema.AmountUnavailable.safeParse(cause.body).success ? 'AMOUNT_TOO_LOW' : undefined
192
+ }
193
+
194
+ function chainId(chain: FundingChain.Chain) {
195
+ if (chain.kind === 'tron') return tronChainId
196
+ return Number(FundingChain.eip155Id(chain))
197
+ }
198
+
199
+ function tokenAddress(token: FundingToken.Resolved) {
200
+ return token.chain.kind === 'tron' ? tronUsdtAddress : token.address
201
+ }
202
+
203
+ function matchesToken(token: z.output<typeof schema.Token>, options: matchesToken.Options) {
204
+ return (
205
+ token.address.toLowerCase() === options.address.toLowerCase() &&
206
+ token.chainId === options.chainId &&
207
+ token.decimals === options.decimals
208
+ )
209
+ }
210
+
211
+ declare namespace matchesToken {
212
+ /** Expected provider token identity. */
213
+ type Options = {
214
+ /** Provider-specific token address. */
215
+ address: string
216
+ /** Provider-specific chain id. */
217
+ chainId: number
218
+ /** Token decimal precision. */
219
+ decimals: number
220
+ }
221
+ }
@@ -7,15 +7,19 @@ test('exports internal modules', () => {
7
7
  "Cache",
8
8
  "Cursor",
9
9
  "EdgeCache",
10
+ "EarnVaults",
10
11
  "Errors",
12
+ "Exchange",
11
13
  "Fees",
12
- "FundingQuotes",
14
+ "Funding",
13
15
  "Id",
16
+ "Idempotency",
14
17
  "Log",
15
18
  "MetricSink",
16
19
  "Mpp",
17
20
  "OpenApi",
18
21
  "Path",
22
+ "Provider",
19
23
  "RateLimit",
20
24
  "Response",
21
25
  "RpcSchema",
@@ -2,15 +2,19 @@ export * as Auth from './Auth.js'
2
2
  export * as Cache from './Cache.js'
3
3
  export * as Cursor from './Cursor.js'
4
4
  export * as EdgeCache from './EdgeCache.js'
5
+ export * as EarnVaults from './EarnVaults.js'
5
6
  export * as Errors from './Errors.js'
7
+ export * as Exchange from './exchange/index.js'
6
8
  export * as Fees from './Fees.js'
7
- export * as FundingQuotes from './FundingQuotes.js'
9
+ export * as Funding from './funding/index.js'
8
10
  export * as Id from './Id.js'
11
+ export * as Idempotency from './Idempotency.js'
9
12
  export * as Log from './Log.js'
10
13
  export * as MetricSink from './MetricSink.js'
11
14
  export * as Mpp from './Mpp.js'
12
15
  export * as OpenApi from './OpenApi.js'
13
16
  export * as Path from './Path.js'
17
+ export * as Provider from './Provider.js'
14
18
  export * as RateLimit from './RateLimit.js'
15
19
  export * as Response from './Response.js'
16
20
  export * as RpcSchema from './RpcSchema.js'
@@ -67,62 +67,66 @@ export function assertDeliverableUrl(input: string): URL {
67
67
  if (url.protocol !== 'https:') throw new WebhookDestination.InvalidUrlError('protocol', input)
68
68
  if (url.username || url.password)
69
69
  throw new WebhookDestination.InvalidUrlError('credentials', input)
70
- if (isBlockedHost(url.hostname))
70
+ if (Hostname.isBlocked(url.hostname))
71
71
  throw new WebhookDestination.InvalidUrlError('blocked_host', input)
72
72
 
73
73
  return url
74
74
  }
75
75
 
76
- function isBlockedHost(hostname: string): boolean {
77
- // URL hostnames preserve IPv6 brackets and are already lowercased for names.
78
- const host = hostname.replace(/^\[|\]$/g, '').toLowerCase()
76
+ namespace Hostname {
77
+ export function isBlocked(hostname: string): boolean {
78
+ // URL hostnames preserve IPv6 brackets and are already lowercased for names.
79
+ const host = hostname.replace(/^\[|\]$/g, '').toLowerCase()
79
80
 
80
- if (host === 'localhost' || host.endsWith('.localhost')) return true
81
- if (host === 'metadata.google.internal') return true
82
- if (host.length === 0) return true
81
+ if (host === 'localhost' || host.endsWith('.localhost')) return true
82
+ if (host === 'metadata.google.internal') return true
83
+ if (host.length === 0) return true
83
84
 
84
- if (isIpv4(host)) return isBlockedIpv4(host)
85
- if (host.includes(':')) return isBlockedIpv6(host)
86
- return false
87
- }
85
+ if (isIpv4(host)) return isBlockedIpv4(host)
86
+ if (host.includes(':')) return isBlockedIpv6(host)
87
+ return false
88
+ }
88
89
 
89
- function isIpv4(host: string): boolean {
90
- const parts = host.split('.')
91
- return parts.length === 4 && parts.every((part) => /^\d{1,3}$/.test(part) && Number(part) <= 255)
92
- }
90
+ function isIpv4(host: string): boolean {
91
+ const parts = host.split('.')
92
+ return (
93
+ parts.length === 4 && parts.every((part) => /^\d{1,3}$/.test(part) && Number(part) <= 255)
94
+ )
95
+ }
93
96
 
94
- function isBlockedIpv4(host: string): boolean {
95
- const [a, b] = host.split('.').map(Number) as [number, number, number, number]
96
- if (a === 0 || a === 10 || a === 127) return true // unspecified, private, loopback
97
- if (a === 169 && b === 254) return true // link-local (incl. cloud metadata)
98
- if (a === 172 && b >= 16 && b <= 31) return true // private
99
- if (a === 192 && b === 168) return true // private
100
- if (a === 100 && b >= 64 && b <= 127) return true // carrier-grade NAT
101
- return false
102
- }
97
+ function isBlockedIpv4(host: string): boolean {
98
+ const [a, b] = host.split('.').map(Number) as [number, number, number, number]
99
+ if (a === 0 || a === 10 || a === 127) return true // unspecified, private, loopback
100
+ if (a === 169 && b === 254) return true // link-local (incl. cloud metadata)
101
+ if (a === 172 && b >= 16 && b <= 31) return true // private
102
+ if (a === 192 && b === 168) return true // private
103
+ if (a === 100 && b >= 64 && b <= 127) return true // carrier-grade NAT
104
+ return false
105
+ }
103
106
 
104
- function isBlockedIpv6(host: string): boolean {
105
- if (host === '::' || host === '::1') return true // unspecified, loopback
106
- if (
107
- host.startsWith('fe8') ||
108
- host.startsWith('fe9') ||
109
- host.startsWith('fea') ||
110
- host.startsWith('feb')
111
- )
112
- return true // link-local fe80::/10
113
- if (host.startsWith('fc') || host.startsWith('fd')) return true // unique local fc00::/7
107
+ function isBlockedIpv6(host: string): boolean {
108
+ if (host === '::' || host === '::1') return true // unspecified, loopback
109
+ if (
110
+ host.startsWith('fe8') ||
111
+ host.startsWith('fe9') ||
112
+ host.startsWith('fea') ||
113
+ host.startsWith('feb')
114
+ )
115
+ return true // link-local fe80::/10
116
+ if (host.startsWith('fc') || host.startsWith('fd')) return true // unique local fc00::/7
114
117
 
115
- // IPv4-mapped (::ffff:a.b.c.d) — re-check the embedded v4.
116
- const dotted = host.match(/::ffff:(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/)
117
- if (dotted?.[1] && isIpv4(dotted[1])) return isBlockedIpv4(dotted[1])
118
+ // IPv4-mapped (::ffff:a.b.c.d) — re-check the embedded v4.
119
+ const dotted = host.match(/::ffff:(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/)
120
+ if (dotted?.[1] && isIpv4(dotted[1])) return isBlockedIpv4(dotted[1])
118
121
 
119
- // The URL parser compresses ::ffff:a.b.c.d to two hex groups (e.g. 7f00:1).
120
- const hex = host.match(/::ffff:([0-9a-f]{1,4}):([0-9a-f]{1,4})$/)
121
- if (hex?.[1] && hex[2]) {
122
- const high = Number.parseInt(hex[1], 16)
123
- const low = Number.parseInt(hex[2], 16)
124
- const v4 = `${high >> 8}.${high & 0xff}.${low >> 8}.${low & 0xff}`
125
- return isBlockedIpv4(v4)
122
+ // The URL parser compresses ::ffff:a.b.c.d to two hex groups (e.g. 7f00:1).
123
+ const hex = host.match(/::ffff:([0-9a-f]{1,4}):([0-9a-f]{1,4})$/)
124
+ if (hex?.[1] && hex[2]) {
125
+ const high = Number.parseInt(hex[1], 16)
126
+ const low = Number.parseInt(hex[2], 16)
127
+ const ipv4 = `${high >> 8}.${high & 0xff}.${low >> 8}.${low & 0xff}`
128
+ return isBlockedIpv4(ipv4)
129
+ }
130
+ return false
126
131
  }
127
- return false
128
132
  }
@@ -0,0 +1,14 @@
1
+ import * as Providers from './index.js'
2
+
3
+ test('exports provider factories', () => {
4
+ expect(Object.keys(Providers)).toMatchInlineSnapshot(`
5
+ [
6
+ "across",
7
+ "relay",
8
+ "rhino",
9
+ "squid",
10
+ "symbiosis",
11
+ "uniswap",
12
+ ]
13
+ `)
14
+ })
@@ -0,0 +1,54 @@
1
+ import * as Uniswap from '../internal/exchange/providers/uniswap.js'
2
+ import * as Across from '../internal/funding/providers/across.js'
3
+ import * as Relay from '../internal/funding/providers/relay.js'
4
+ import * as Rhino from '../internal/funding/providers/rhino.js'
5
+ import * as Squid from '../internal/funding/providers/squid.js'
6
+ import * as Symbiosis from '../internal/funding/providers/symbiosis.js'
7
+
8
+ /** Creates an Across funding provider. */
9
+ export const across = Across.across
10
+
11
+ export declare namespace across {
12
+ /** Across provider configuration. */
13
+ type Options = Across.across.Options
14
+ }
15
+
16
+ /** Creates a Relay funding provider. */
17
+ export const relay = Relay.relay
18
+
19
+ export declare namespace relay {
20
+ /** Relay provider configuration. */
21
+ type Options = Relay.relay.Options
22
+ }
23
+
24
+ /** Creates a Rhino funding provider. */
25
+ export const rhino = Rhino.rhino
26
+
27
+ export declare namespace rhino {
28
+ /** Rhino provider configuration. */
29
+ type Options = Rhino.rhino.Options
30
+ }
31
+
32
+ /** Creates a Squid funding provider. */
33
+ export const squid = Squid.squid
34
+
35
+ export declare namespace squid {
36
+ /** Squid provider configuration. */
37
+ type Options = Squid.squid.Options
38
+ }
39
+
40
+ /** Creates a Symbiosis funding provider. */
41
+ export const symbiosis = Symbiosis.symbiosis
42
+
43
+ export declare namespace symbiosis {
44
+ /** Symbiosis provider configuration. */
45
+ type Options = Symbiosis.symbiosis.Options
46
+ }
47
+
48
+ /** Creates a Uniswap exchange provider. */
49
+ export const uniswap = Uniswap.uniswap
50
+
51
+ export declare namespace uniswap {
52
+ /** Uniswap provider configuration. */
53
+ type Options = Uniswap.uniswap.Options
54
+ }