tapimo 0.11.0 → 0.13.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 (443) hide show
  1. package/dist/App.d.ts +6396 -4575
  2. package/dist/App.d.ts.map +1 -1
  3. package/dist/App.js +39 -4
  4. package/dist/App.js.map +1 -1
  5. package/dist/Assets.d.ts +15 -0
  6. package/dist/Assets.d.ts.map +1 -1
  7. package/dist/Assets.js +7 -0
  8. package/dist/Assets.js.map +1 -1
  9. package/dist/Scope.d.ts +2 -0
  10. package/dist/Scope.d.ts.map +1 -1
  11. package/dist/Scope.js +17 -0
  12. package/dist/Scope.js.map +1 -1
  13. package/dist/admin/App.d.ts +176 -78
  14. package/dist/admin/App.d.ts.map +1 -1
  15. package/dist/admin/apps/api-keys.d.ts +84 -4
  16. package/dist/admin/apps/api-keys.d.ts.map +1 -1
  17. package/dist/admin/apps/api-keys.js +54 -0
  18. package/dist/admin/apps/api-keys.js.map +1 -1
  19. package/dist/admin/apps/earn-vaults.d.ts +123 -9
  20. package/dist/admin/apps/earn-vaults.d.ts.map +1 -1
  21. package/dist/admin/apps/earn-vaults.js +60 -7
  22. package/dist/admin/apps/earn-vaults.js.map +1 -1
  23. package/dist/admin/apps/organizations.d.ts.map +1 -1
  24. package/dist/admin/apps/organizations.js +4 -2
  25. package/dist/admin/apps/organizations.js.map +1 -1
  26. package/dist/admin/apps/verified-tokens.d.ts +90 -90
  27. package/dist/admin/ui.generated.d.ts +1 -1
  28. package/dist/admin/ui.generated.js +71 -71
  29. package/dist/admin/ui.generated.js.map +1 -1
  30. package/dist/apps/Zones.d.ts +16 -16
  31. package/dist/apps/Zones.js +4 -4
  32. package/dist/apps/data/App.d.ts +1699 -749
  33. package/dist/apps/data/App.d.ts.map +1 -1
  34. package/dist/apps/data/App.js +58 -9
  35. package/dist/apps/data/App.js.map +1 -1
  36. package/dist/apps/data/ZoneSelection.d.ts +62 -0
  37. package/dist/apps/data/ZoneSelection.d.ts.map +1 -0
  38. package/dist/apps/data/ZoneSelection.js +44 -0
  39. package/dist/apps/data/ZoneSelection.js.map +1 -0
  40. package/dist/apps/data/routes/activities.d.ts +2417 -50
  41. package/dist/apps/data/routes/activities.d.ts.map +1 -1
  42. package/dist/apps/data/routes/activities.js +1896 -1293
  43. package/dist/apps/data/routes/activities.js.map +1 -1
  44. package/dist/apps/data/routes/addresses.d.ts +471 -340
  45. package/dist/apps/data/routes/addresses.d.ts.map +1 -1
  46. package/dist/apps/data/routes/balances.d.ts +12 -12
  47. package/dist/apps/data/routes/balances.d.ts.map +1 -1
  48. package/dist/apps/data/routes/balances.js +44 -17
  49. package/dist/apps/data/routes/balances.js.map +1 -1
  50. package/dist/apps/data/routes/blocks.d.ts +42 -42
  51. package/dist/apps/data/routes/blocks.d.ts.map +1 -1
  52. package/dist/apps/data/routes/blocks.js +22 -12
  53. package/dist/apps/data/routes/blocks.js.map +1 -1
  54. package/dist/apps/data/routes/coingecko.d.ts +179 -179
  55. package/dist/apps/data/routes/earn.d.ts +144 -19
  56. package/dist/apps/data/routes/earn.d.ts.map +1 -1
  57. package/dist/apps/data/routes/earn.js +160 -28
  58. package/dist/apps/data/routes/earn.js.map +1 -1
  59. package/dist/apps/data/routes/exchanges.d.ts +719 -13
  60. package/dist/apps/data/routes/exchanges.d.ts.map +1 -1
  61. package/dist/apps/data/routes/exchanges.js +16 -13
  62. package/dist/apps/data/routes/exchanges.js.map +1 -1
  63. package/dist/apps/data/routes/fee-amm.d.ts +2 -2
  64. package/dist/apps/data/routes/fee-amm.d.ts.map +1 -1
  65. package/dist/apps/data/routes/fee-amm.js +9 -11
  66. package/dist/apps/data/routes/fee-amm.js.map +1 -1
  67. package/dist/apps/data/routes/indexer.d.ts +34 -34
  68. package/dist/apps/data/routes/receipts.d.ts +363 -263
  69. package/dist/apps/data/routes/receipts.d.ts.map +1 -1
  70. package/dist/apps/data/routes/receipts.js +29 -11
  71. package/dist/apps/data/routes/receipts.js.map +1 -1
  72. package/dist/apps/data/routes/rpc.js +24 -10
  73. package/dist/apps/data/routes/rpc.js.map +1 -1
  74. package/dist/apps/data/routes/tokenlist.d.ts +13 -13
  75. package/dist/apps/data/routes/tokenlist.d.ts.map +1 -1
  76. package/dist/apps/data/routes/tokenlist.js +16 -15
  77. package/dist/apps/data/routes/tokenlist.js.map +1 -1
  78. package/dist/apps/data/routes/tokens.d.ts +112 -98
  79. package/dist/apps/data/routes/tokens.d.ts.map +1 -1
  80. package/dist/apps/data/routes/tokens.js +85 -35
  81. package/dist/apps/data/routes/tokens.js.map +1 -1
  82. package/dist/apps/data/routes/transactions.d.ts +7 -2
  83. package/dist/apps/data/routes/transactions.d.ts.map +1 -1
  84. package/dist/apps/data/routes/transactions.js +38 -18
  85. package/dist/apps/data/routes/transactions.js.map +1 -1
  86. package/dist/apps/data/routes/transfers.d.ts +1 -1
  87. package/dist/apps/data/routes/transfers.d.ts.map +1 -1
  88. package/dist/apps/data/routes/transfers.js +25 -21
  89. package/dist/apps/data/routes/transfers.js.map +1 -1
  90. package/dist/apps/data/routes/valuation.d.ts +1 -1
  91. package/dist/apps/data/routes/valuation.d.ts.map +1 -1
  92. package/dist/apps/data/routes/valuation.js +12 -7
  93. package/dist/apps/data/routes/valuation.js.map +1 -1
  94. package/dist/apps/data/routes/verified-tokens.d.ts +3 -3
  95. package/dist/apps/data/routes/webhooks.d.ts +15 -15
  96. package/dist/apps/data/routes/webhooks.d.ts.map +1 -1
  97. package/dist/apps/data/routes/webhooks.js +2 -2
  98. package/dist/apps/data/routes/webhooks.js.map +1 -1
  99. package/dist/apps/data/routes/zones.d.ts +32 -32
  100. package/dist/apps/data/routes/zones.js +1 -1
  101. package/dist/apps/funding/App.d.ts +38 -27
  102. package/dist/apps/funding/App.d.ts.map +1 -1
  103. package/dist/apps/funding/routes/chains.d.ts.map +1 -1
  104. package/dist/apps/funding/routes/chains.js +5 -4
  105. package/dist/apps/funding/routes/chains.js.map +1 -1
  106. package/dist/apps/funding/routes/deposit-addresses.d.ts +16 -16
  107. package/dist/apps/funding/routes/deposit-addresses.d.ts.map +1 -1
  108. package/dist/apps/funding/routes/deposit-addresses.js +24 -19
  109. package/dist/apps/funding/routes/deposit-addresses.js.map +1 -1
  110. package/dist/apps/funding/routes/providers.d.ts +13 -13
  111. package/dist/apps/funding/routes/providers.d.ts.map +1 -1
  112. package/dist/apps/funding/routes/providers.js +3 -2
  113. package/dist/apps/funding/routes/providers.js.map +1 -1
  114. package/dist/apps/funding/routes/quotes.d.ts.map +1 -1
  115. package/dist/apps/funding/routes/quotes.js +2 -2
  116. package/dist/apps/funding/routes/quotes.js.map +1 -1
  117. package/dist/apps/funding/routes/transfers.d.ts +60 -48
  118. package/dist/apps/funding/routes/transfers.d.ts.map +1 -1
  119. package/dist/apps/funding/routes/transfers.js +27 -19
  120. package/dist/apps/funding/routes/transfers.js.map +1 -1
  121. package/dist/apps/management/App.d.ts +4558 -3700
  122. package/dist/apps/management/App.d.ts.map +1 -1
  123. package/dist/apps/management/Billing.d.ts.map +1 -1
  124. package/dist/apps/management/Billing.js +19 -6
  125. package/dist/apps/management/Billing.js.map +1 -1
  126. package/dist/apps/management/routes/api-keys.d.ts +786 -175
  127. package/dist/apps/management/routes/api-keys.d.ts.map +1 -1
  128. package/dist/apps/management/routes/api-keys.js +312 -34
  129. package/dist/apps/management/routes/api-keys.js.map +1 -1
  130. package/dist/apps/management/routes/billing.d.ts +103 -30
  131. package/dist/apps/management/routes/billing.d.ts.map +1 -1
  132. package/dist/apps/management/routes/billing.js +91 -32
  133. package/dist/apps/management/routes/billing.js.map +1 -1
  134. package/dist/apps/management/routes/faucet.d.ts +35 -35
  135. package/dist/apps/management/routes/faucet.d.ts.map +1 -1
  136. package/dist/apps/management/routes/faucet.js +23 -12
  137. package/dist/apps/management/routes/faucet.js.map +1 -1
  138. package/dist/apps/management/routes/invitations.d.ts +46 -13
  139. package/dist/apps/management/routes/invitations.d.ts.map +1 -1
  140. package/dist/apps/management/routes/invitations.js +79 -29
  141. package/dist/apps/management/routes/invitations.js.map +1 -1
  142. package/dist/apps/management/routes/invite-links.d.ts +120 -75
  143. package/dist/apps/management/routes/invite-links.d.ts.map +1 -1
  144. package/dist/apps/management/routes/invite-links.js +100 -41
  145. package/dist/apps/management/routes/invite-links.js.map +1 -1
  146. package/dist/apps/management/routes/me.d.ts +5 -5
  147. package/dist/apps/management/routes/me.d.ts.map +1 -1
  148. package/dist/apps/management/routes/me.js +14 -10
  149. package/dist/apps/management/routes/me.js.map +1 -1
  150. package/dist/apps/management/routes/members.d.ts +99 -78
  151. package/dist/apps/management/routes/members.d.ts.map +1 -1
  152. package/dist/apps/management/routes/members.js +37 -18
  153. package/dist/apps/management/routes/members.js.map +1 -1
  154. package/dist/apps/management/routes/orgs.d.ts +48 -8
  155. package/dist/apps/management/routes/orgs.d.ts.map +1 -1
  156. package/dist/apps/management/routes/orgs.js +48 -19
  157. package/dist/apps/management/routes/orgs.js.map +1 -1
  158. package/dist/apps/management/routes/projects.d.ts +108 -46
  159. package/dist/apps/management/routes/projects.d.ts.map +1 -1
  160. package/dist/apps/management/routes/projects.js +72 -21
  161. package/dist/apps/management/routes/projects.js.map +1 -1
  162. package/dist/apps/management/routes/scopes.d.ts.map +1 -1
  163. package/dist/apps/management/routes/scopes.js +8 -5
  164. package/dist/apps/management/routes/scopes.js.map +1 -1
  165. package/dist/apps/management/routes/usage.d.ts +82 -82
  166. package/dist/apps/management/routes/usage.d.ts.map +1 -1
  167. package/dist/apps/management/routes/usage.js +41 -31
  168. package/dist/apps/management/routes/usage.js.map +1 -1
  169. package/dist/apps/management/routes/verified-token-requests.d.ts +35 -7
  170. package/dist/apps/management/routes/verified-token-requests.d.ts.map +1 -1
  171. package/dist/apps/management/routes/verified-token-requests.js +36 -17
  172. package/dist/apps/management/routes/verified-token-requests.js.map +1 -1
  173. package/dist/apps/management/routes/webhooks.d.ts +200 -183
  174. package/dist/apps/management/routes/webhooks.d.ts.map +1 -1
  175. package/dist/apps/management/routes/webhooks.js +80 -35
  176. package/dist/apps/management/routes/webhooks.js.map +1 -1
  177. package/dist/apps/mpp/internal/Adapter.d.ts +1 -1
  178. package/dist/apps/mpp/internal/Adapter.d.ts.map +1 -1
  179. package/dist/apps/mpp/internal/Adapter.js +12 -0
  180. package/dist/apps/mpp/internal/Adapter.js.map +1 -1
  181. package/dist/db/Db.d.ts +2 -0
  182. package/dist/db/Db.d.ts.map +1 -1
  183. package/dist/db/Db.js +52 -1
  184. package/dist/db/Db.js.map +1 -1
  185. package/dist/db/Schema.d.ts +26 -3
  186. package/dist/db/Schema.d.ts.map +1 -1
  187. package/dist/db/Schema.js +24 -5
  188. package/dist/db/Schema.js.map +1 -1
  189. package/dist/db/tables/earnVaults.d.ts +5 -1
  190. package/dist/db/tables/earnVaults.d.ts.map +1 -1
  191. package/dist/db/tables/earnVaults.js +5 -0
  192. package/dist/db/tables/earnVaults.js.map +1 -1
  193. package/dist/db/tables/fundingCatalog.d.ts +4 -2
  194. package/dist/db/tables/fundingCatalog.d.ts.map +1 -1
  195. package/dist/db/tables/fundingCatalog.js +5 -1
  196. package/dist/db/tables/fundingCatalog.js.map +1 -1
  197. package/dist/db/tables/webhookDeliveries.d.ts.map +1 -1
  198. package/dist/db/tables/webhookDeliveries.js +10 -0
  199. package/dist/db/tables/webhookDeliveries.js.map +1 -1
  200. package/dist/db/tables/webhookQueueCompletions.d.ts +15 -0
  201. package/dist/db/tables/webhookQueueCompletions.d.ts.map +1 -0
  202. package/dist/db/tables/webhookQueueCompletions.js +32 -0
  203. package/dist/db/tables/webhookQueueCompletions.js.map +1 -0
  204. package/dist/db/tables/webhookQueueEvents.d.ts +14 -20
  205. package/dist/db/tables/webhookQueueEvents.d.ts.map +1 -1
  206. package/dist/db/tables/webhookQueueEvents.js +68 -47
  207. package/dist/db/tables/webhookQueueEvents.js.map +1 -1
  208. package/dist/db/tables/webhookSubscriptions.d.ts +16 -5
  209. package/dist/db/tables/webhookSubscriptions.d.ts.map +1 -1
  210. package/dist/db/tables/webhookSubscriptions.js +29 -5
  211. package/dist/db/tables/webhookSubscriptions.js.map +1 -1
  212. package/dist/handlers/internal/utils.d.ts.map +1 -1
  213. package/dist/handlers/internal/utils.js +9 -0
  214. package/dist/handlers/internal/utils.js.map +1 -1
  215. package/dist/internal/Auth.d.ts +11 -2
  216. package/dist/internal/Auth.d.ts.map +1 -1
  217. package/dist/internal/Auth.js +19 -6
  218. package/dist/internal/Auth.js.map +1 -1
  219. package/dist/internal/Cache.d.ts.map +1 -1
  220. package/dist/internal/Cache.js +11 -7
  221. package/dist/internal/Cache.js.map +1 -1
  222. package/dist/internal/EarnVaults.d.ts +43 -4
  223. package/dist/internal/EarnVaults.d.ts.map +1 -1
  224. package/dist/internal/EarnVaults.js +167 -0
  225. package/dist/internal/EarnVaults.js.map +1 -1
  226. package/dist/internal/Fetch.d.ts +23 -0
  227. package/dist/internal/Fetch.d.ts.map +1 -0
  228. package/dist/internal/Fetch.js +26 -0
  229. package/dist/internal/Fetch.js.map +1 -0
  230. package/dist/internal/Log.d.ts +3 -1
  231. package/dist/internal/Log.d.ts.map +1 -1
  232. package/dist/internal/Log.js +16 -3
  233. package/dist/internal/Log.js.map +1 -1
  234. package/dist/internal/OpenApi.d.ts +30 -24
  235. package/dist/internal/OpenApi.d.ts.map +1 -1
  236. package/dist/internal/OpenApi.js +140 -41
  237. package/dist/internal/OpenApi.js.map +1 -1
  238. package/dist/internal/Response.d.ts +14 -9
  239. package/dist/internal/Response.d.ts.map +1 -1
  240. package/dist/internal/Response.js +16 -5
  241. package/dist/internal/Response.js.map +1 -1
  242. package/dist/internal/Schema.d.ts +11 -10
  243. package/dist/internal/Schema.d.ts.map +1 -1
  244. package/dist/internal/Schema.js +14 -9
  245. package/dist/internal/Schema.js.map +1 -1
  246. package/dist/internal/Store.d.ts +28 -6
  247. package/dist/internal/Store.d.ts.map +1 -1
  248. package/dist/internal/Store.js +121 -25
  249. package/dist/internal/Store.js.map +1 -1
  250. package/dist/internal/Tidx.d.ts +2 -0
  251. package/dist/internal/Tidx.d.ts.map +1 -1
  252. package/dist/internal/Tidx.js +23 -6
  253. package/dist/internal/Tidx.js.map +1 -1
  254. package/dist/internal/Timeout.d.ts +36 -0
  255. package/dist/internal/Timeout.d.ts.map +1 -0
  256. package/dist/internal/Timeout.js +37 -0
  257. package/dist/internal/Timeout.js.map +1 -0
  258. package/dist/internal/Timing.d.ts +9 -0
  259. package/dist/internal/Timing.d.ts.map +1 -1
  260. package/dist/internal/Timing.js +7 -0
  261. package/dist/internal/Timing.js.map +1 -1
  262. package/dist/internal/WebhookDestination.d.ts.map +1 -1
  263. package/dist/internal/WebhookDestination.js +3 -0
  264. package/dist/internal/WebhookDestination.js.map +1 -1
  265. package/dist/internal/Webhooks.d.ts +29 -12
  266. package/dist/internal/Webhooks.d.ts.map +1 -1
  267. package/dist/internal/Webhooks.js +37 -20
  268. package/dist/internal/Webhooks.js.map +1 -1
  269. package/dist/internal/funding/Action.d.ts +9 -0
  270. package/dist/internal/funding/Action.d.ts.map +1 -1
  271. package/dist/internal/funding/Action.js +16 -8
  272. package/dist/internal/funding/Action.js.map +1 -1
  273. package/dist/internal/funding/Catalog.d.ts +9 -2
  274. package/dist/internal/funding/Catalog.d.ts.map +1 -1
  275. package/dist/internal/funding/Catalog.js +19 -8
  276. package/dist/internal/funding/Catalog.js.map +1 -1
  277. package/dist/internal/funding/Deposit.d.ts +2 -2
  278. package/dist/internal/funding/Deposit.d.ts.map +1 -1
  279. package/dist/internal/funding/Deposit.js +9 -8
  280. package/dist/internal/funding/Deposit.js.map +1 -1
  281. package/dist/internal/funding/DepositAddress.d.ts +4 -4
  282. package/dist/internal/funding/DepositAddress.d.ts.map +1 -1
  283. package/dist/internal/funding/DepositAddress.js +9 -8
  284. package/dist/internal/funding/DepositAddress.js.map +1 -1
  285. package/dist/internal/funding/Provider.d.ts +68 -13
  286. package/dist/internal/funding/Provider.d.ts.map +1 -1
  287. package/dist/internal/funding/Provider.js +42 -20
  288. package/dist/internal/funding/Provider.js.map +1 -1
  289. package/dist/internal/funding/Transfer.d.ts +13 -12
  290. package/dist/internal/funding/Transfer.d.ts.map +1 -1
  291. package/dist/internal/funding/Transfer.js +23 -21
  292. package/dist/internal/funding/Transfer.js.map +1 -1
  293. package/dist/internal/funding/providers/stargate.d.ts +38 -0
  294. package/dist/internal/funding/providers/stargate.d.ts.map +1 -0
  295. package/dist/internal/funding/providers/stargate.js +277 -0
  296. package/dist/internal/funding/providers/stargate.js.map +1 -0
  297. package/dist/internal/index.d.ts +1 -0
  298. package/dist/internal/index.d.ts.map +1 -1
  299. package/dist/internal/index.js +1 -0
  300. package/dist/internal/index.js.map +1 -1
  301. package/dist/providers/index.d.ts +7 -0
  302. package/dist/providers/index.d.ts.map +1 -1
  303. package/dist/providers/index.js +3 -0
  304. package/dist/providers/index.js.map +1 -1
  305. package/package.json +3 -3
  306. package/src/App.test.ts +148 -0
  307. package/src/App.ts +45 -4
  308. package/src/Assets.test.ts +18 -0
  309. package/src/Assets.ts +22 -0
  310. package/src/Client.test-d.ts +311 -16
  311. package/src/Scope.test.ts +20 -0
  312. package/src/Scope.ts +16 -0
  313. package/src/admin/apps/api-keys.test.ts +75 -0
  314. package/src/admin/apps/api-keys.ts +64 -0
  315. package/src/admin/apps/earn-vaults.test.ts +143 -0
  316. package/src/admin/apps/earn-vaults.ts +84 -7
  317. package/src/admin/apps/organizations.ts +6 -2
  318. package/src/admin/ui/src/lib/api-keys.ts +19 -0
  319. package/src/admin/ui/src/routes/api-keys.tsx +125 -2
  320. package/src/admin/ui.generated.ts +71 -71
  321. package/src/apps/Zones.test.ts +4 -4
  322. package/src/apps/Zones.ts +4 -4
  323. package/src/apps/composition.test.ts +1 -1
  324. package/src/apps/data/App.test.ts +72 -0
  325. package/src/apps/data/App.ts +58 -10
  326. package/src/apps/data/ZoneSelection.test.ts +196 -0
  327. package/src/apps/data/ZoneSelection.ts +108 -0
  328. package/src/apps/data/routes/activities.test.ts +1843 -2
  329. package/src/apps/data/routes/activities.ts +2211 -1388
  330. package/src/apps/data/routes/balances.ts +134 -98
  331. package/src/apps/data/routes/blocks.test.ts +533 -0
  332. package/src/apps/data/routes/blocks.ts +36 -17
  333. package/src/apps/data/routes/earn.test.ts +187 -25
  334. package/src/apps/data/routes/earn.ts +228 -32
  335. package/src/apps/data/routes/earn.zone-access.test.ts +46 -0
  336. package/src/apps/data/routes/exchanges.test.ts +31 -1
  337. package/src/apps/data/routes/exchanges.ts +19 -15
  338. package/src/apps/data/routes/fee-amm.ts +18 -11
  339. package/src/apps/data/routes/receipts.ts +48 -17
  340. package/src/apps/data/routes/rpc.test.ts +75 -0
  341. package/src/apps/data/routes/rpc.ts +23 -9
  342. package/src/apps/data/routes/tokenlist.ts +21 -18
  343. package/src/apps/data/routes/tokens.test.ts +607 -0
  344. package/src/apps/data/routes/tokens.ts +312 -231
  345. package/src/apps/data/routes/transactions.ts +69 -30
  346. package/src/apps/data/routes/transfers.test.ts +424 -3
  347. package/src/apps/data/routes/transfers.ts +57 -36
  348. package/src/apps/data/routes/valuation.ts +94 -78
  349. package/src/apps/data/routes/webhooks.ts +6 -2
  350. package/src/apps/data/routes/zones.test.ts +21 -15
  351. package/src/apps/data/routes/zones.ts +1 -1
  352. package/src/apps/funding/routes/chains.test.ts +211 -7
  353. package/src/apps/funding/routes/chains.ts +19 -12
  354. package/src/apps/funding/routes/deposit-addresses.test.ts +416 -0
  355. package/src/apps/funding/routes/deposit-addresses.ts +101 -84
  356. package/src/apps/funding/routes/providers.ts +9 -5
  357. package/src/apps/funding/routes/quotes.test.ts +42 -0
  358. package/src/apps/funding/routes/quotes.ts +8 -5
  359. package/src/apps/funding/routes/transfers.test.ts +430 -40
  360. package/src/apps/funding/routes/transfers.ts +76 -59
  361. package/src/apps/management/Billing.test.ts +26 -0
  362. package/src/apps/management/Billing.ts +24 -7
  363. package/src/apps/management/routes/api-keys.test.ts +398 -0
  364. package/src/apps/management/routes/api-keys.ts +481 -145
  365. package/src/apps/management/routes/billing.test.ts +209 -0
  366. package/src/apps/management/routes/billing.ts +254 -177
  367. package/src/apps/management/routes/faucet.test.ts +39 -0
  368. package/src/apps/management/routes/faucet.ts +75 -41
  369. package/src/apps/management/routes/invitations.test.ts +216 -0
  370. package/src/apps/management/routes/invitations.ts +186 -109
  371. package/src/apps/management/routes/invite-links.test.ts +263 -1
  372. package/src/apps/management/routes/invite-links.ts +295 -214
  373. package/src/apps/management/routes/me.test.ts +49 -0
  374. package/src/apps/management/routes/me.ts +42 -32
  375. package/src/apps/management/routes/members.test.ts +124 -1
  376. package/src/apps/management/routes/members.ts +81 -51
  377. package/src/apps/management/routes/orgs.test.ts +176 -0
  378. package/src/apps/management/routes/orgs.ts +101 -59
  379. package/src/apps/management/routes/projects.test.ts +183 -0
  380. package/src/apps/management/routes/projects.ts +124 -60
  381. package/src/apps/management/routes/scopes.test.ts +44 -0
  382. package/src/apps/management/routes/scopes.ts +37 -28
  383. package/src/apps/management/routes/usage.test.ts +92 -0
  384. package/src/apps/management/routes/usage.ts +186 -151
  385. package/src/apps/management/routes/verified-token-requests.test.ts +114 -0
  386. package/src/apps/management/routes/verified-token-requests.ts +166 -133
  387. package/src/apps/management/routes/webhooks.test.ts +234 -0
  388. package/src/apps/management/routes/webhooks.ts +191 -78
  389. package/src/apps/mpp/internal/Adapter.ts +13 -1
  390. package/src/db/Db.test.ts +41 -0
  391. package/src/db/Db.ts +75 -1
  392. package/src/db/Schema.ts +33 -5
  393. package/src/db/tables/earnVaults.test.ts +22 -0
  394. package/src/db/tables/earnVaults.ts +11 -1
  395. package/src/db/tables/fundingCatalog.test.ts +16 -2
  396. package/src/db/tables/fundingCatalog.ts +9 -3
  397. package/src/db/tables/webhookDeliveries.ts +13 -0
  398. package/src/db/tables/webhookQueueCompletions.ts +55 -0
  399. package/src/db/tables/webhookQueueEvents.ts +95 -61
  400. package/src/db/tables/webhookSubscriptions.ts +45 -6
  401. package/src/handlers/internal/utils.test.ts +53 -0
  402. package/src/handlers/internal/utils.ts +15 -0
  403. package/src/internal/Auth.ts +35 -9
  404. package/src/internal/Cache.ts +14 -7
  405. package/src/internal/EarnVaults.capabilities.test.ts +33 -0
  406. package/src/internal/EarnVaults.test.ts +79 -0
  407. package/src/internal/EarnVaults.ts +277 -0
  408. package/src/internal/Fetch.test.ts +46 -0
  409. package/src/internal/Fetch.ts +56 -0
  410. package/src/internal/Log.test.ts +21 -0
  411. package/src/internal/Log.ts +20 -5
  412. package/src/internal/OpenApi.ts +177 -51
  413. package/src/internal/Response.test.ts +95 -0
  414. package/src/internal/Response.ts +41 -3
  415. package/src/internal/Schema.test.ts +18 -0
  416. package/src/internal/Schema.ts +19 -9
  417. package/src/internal/Store.test.ts +364 -0
  418. package/src/internal/Store.ts +153 -27
  419. package/src/internal/Tidx.test.ts +21 -1
  420. package/src/internal/Tidx.ts +23 -6
  421. package/src/internal/Timeout.test.ts +35 -0
  422. package/src/internal/Timeout.ts +73 -0
  423. package/src/internal/Timing.ts +16 -0
  424. package/src/internal/WebhookDestination.ts +3 -0
  425. package/src/internal/Webhooks.test.ts +122 -8
  426. package/src/internal/Webhooks.ts +59 -29
  427. package/src/internal/funding/Action.test.ts +41 -1
  428. package/src/internal/funding/Action.ts +69 -41
  429. package/src/internal/funding/Catalog.test.ts +34 -0
  430. package/src/internal/funding/Catalog.ts +28 -11
  431. package/src/internal/funding/Deposit.ts +71 -64
  432. package/src/internal/funding/DepositAddress.ts +50 -43
  433. package/src/internal/funding/Provider.test.ts +73 -0
  434. package/src/internal/funding/Provider.ts +246 -170
  435. package/src/internal/funding/Transfer.ts +133 -110
  436. package/src/internal/funding/providers/index.test.ts +22 -0
  437. package/src/internal/funding/providers/relay.test.ts +2 -2
  438. package/src/internal/funding/providers/stargate.test.ts +163 -0
  439. package/src/internal/funding/providers/stargate.ts +409 -0
  440. package/src/internal/index.test.ts +1 -0
  441. package/src/internal/index.ts +1 -0
  442. package/src/providers/index.test.ts +1 -0
  443. package/src/providers/index.ts +9 -0
@@ -4,6 +4,7 @@ import type * as Db from '../../db/Db.js'
4
4
  import * as FundingTransferEvents from '../../db/tables/fundingTransferEvents.js'
5
5
  import * as FundingTransfers from '../../db/tables/fundingTransfers.js'
6
6
  import * as Id from '../Id.js'
7
+ import * as OpenApi from '../OpenApi.js'
7
8
  import * as Schema from '../Schema.js'
8
9
  import * as Action from './Action.js'
9
10
  import * as Provider from './Provider.js'
@@ -91,22 +92,25 @@ export namespace schema {
91
92
  )
92
93
 
93
94
  /** Customer-safe explanation of a status that needs context. */
94
- export const StatusReason = z
95
- .object({
96
- code: z
97
- .enum(statusReasonCodes)
98
- .check(
99
- z.describe('Stable machine-readable reason code.'),
100
- z.meta({ examples: ['destination_amount_below_minimum'] }),
95
+ export const StatusReason = OpenApi.component(
96
+ z
97
+ .object({
98
+ code: z
99
+ .enum(statusReasonCodes)
100
+ .check(
101
+ z.describe('Stable machine-readable reason code.'),
102
+ z.meta({ examples: ['destination_amount_below_minimum'] }),
103
+ ),
104
+ message: z.string().check(
105
+ z.describe('Human-readable explanation of the reason.'),
106
+ z.meta({
107
+ examples: ['The verified destination amount did not satisfy the quoted minimum.'],
108
+ }),
101
109
  ),
102
- message: z.string().check(
103
- z.describe('Human-readable explanation of the reason.'),
104
- z.meta({
105
- examples: ['The verified destination amount did not satisfy the quoted minimum.'],
106
- }),
107
- ),
108
- })
109
- .check(z.describe('Why the transfer is in its current status, when context is needed.'))
110
+ })
111
+ .check(z.describe('Why the transfer is in its current status, when context is needed.')),
112
+ 'FundingTransferStatusReason',
113
+ )
110
114
 
111
115
  /** Funding method selected at creation. */
112
116
  export const Method = z
@@ -122,39 +126,45 @@ export namespace schema {
122
126
  )
123
127
 
124
128
  /** One fee applied to the transfer. */
125
- export const Fee = z
126
- .object({
127
- amount: Schema.TokenAmount,
128
- side: z
129
- .enum(['destination', 'source'])
130
- .check(
131
- z.describe('Which side of the transfer the fee is taken from.'),
132
- z.meta({ examples: ['destination'] }),
133
- ),
134
- token: Provider.schema.TokenRef,
135
- type: z
136
- .enum(['provider'])
137
- .check(z.describe('What the fee pays for.'), z.meta({ examples: ['provider'] })),
138
- })
139
- .check(z.describe('One fee applied to the transfer.'))
129
+ export const Fee = OpenApi.component(
130
+ z
131
+ .object({
132
+ amount: Schema.TokenAmount,
133
+ side: z
134
+ .enum(['destination', 'source'])
135
+ .check(
136
+ z.describe('Which side of the transfer the fee is taken from.'),
137
+ z.meta({ examples: ['destination'] }),
138
+ ),
139
+ token: Provider.schema.TokenRef,
140
+ type: z
141
+ .enum(['provider'])
142
+ .check(z.describe('What the fee pays for.'), z.meta({ examples: ['provider'] })),
143
+ })
144
+ .check(z.describe('One fee applied to the transfer.')),
145
+ 'FundingTransferFee',
146
+ )
140
147
 
141
148
  /** Freshness and validity window of the selected quote. */
142
- export const Quote = z
143
- .object({
144
- expiresAt: z
145
- .string()
146
- .check(
147
- z.describe('When the quoted terms stop being executable (ISO 8601).'),
148
- z.meta({ examples: ['2026-07-30T04:01:00.000Z'] }),
149
- ),
150
- sampledAt: z
151
- .string()
152
- .check(
153
- z.describe('When the provider produced the quote (ISO 8601).'),
154
- z.meta({ examples: ['2026-07-30T04:00:00.000Z'] }),
155
- ),
156
- })
157
- .check(z.describe('Freshness and validity window of the selected quote.'))
149
+ export const Quote = OpenApi.component(
150
+ z
151
+ .object({
152
+ expiresAt: z.iso
153
+ .datetime()
154
+ .check(
155
+ z.describe('When the quoted terms stop being executable (ISO 8601).'),
156
+ z.meta({ examples: ['2026-07-30T04:01:00.000Z'] }),
157
+ ),
158
+ sampledAt: z.iso
159
+ .datetime()
160
+ .check(
161
+ z.describe('When the provider produced the quote (ISO 8601).'),
162
+ z.meta({ examples: ['2026-07-30T04:00:00.000Z'] }),
163
+ ),
164
+ })
165
+ .check(z.describe('Freshness and validity window of the selected quote.')),
166
+ 'FundingTransferQuote',
167
+ )
158
168
 
159
169
  const hashesCheck = (description: string) => [
160
170
  z.describe(description),
@@ -219,8 +229,8 @@ export namespace schema {
219
229
  .check(z.describe('Quote terms and reconciled public fields of a funding transfer.'))
220
230
 
221
231
  const fundingTransferFields = {
222
- createdAt: z
223
- .string()
232
+ createdAt: z.iso
233
+ .datetime()
224
234
  .check(
225
235
  z.describe('When the transfer was created (ISO 8601).'),
226
236
  z.meta({ examples: ['2026-07-30T04:00:00.000Z'] }),
@@ -253,8 +263,8 @@ export namespace schema {
253
263
  sourceTransactionHashes: snapshotFields.sourceTransactionHashes,
254
264
  status: Status,
255
265
  statusReason: z.optional(StatusReason),
256
- updatedAt: z
257
- .string()
266
+ updatedAt: z.iso
267
+ .datetime()
258
268
  .check(
259
269
  z.describe('When the transfer last materially changed (ISO 8601).'),
260
270
  z.meta({ examples: ['2026-07-30T04:00:20.000Z'] }),
@@ -270,73 +280,86 @@ export namespace schema {
270
280
  }
271
281
 
272
282
  /** A funding transfer as returned by reads. Reads never include `action`. */
273
- export const FundingTransfer = z
274
- .object(fundingTransferFields)
275
- .check(z.describe('One durable funding transfer.'))
283
+ export const FundingTransfer = OpenApi.component(
284
+ z.object(fundingTransferFields).check(z.describe('One durable funding transfer.')),
285
+ 'FundingTransfer',
286
+ )
276
287
 
277
288
  /** A created funding transfer: the read shape plus the executable action. */
278
- export const CreatedFundingTransfer = z
279
- .object({ action: Action.schema.Action, ...fundingTransferFields })
280
- .check(z.describe('The created funding transfer, including its one-time executable action.'))
289
+ export const CreatedFundingTransfer = OpenApi.component(
290
+ z
291
+ .object({ action: Action.schema.Action, ...fundingTransferFields })
292
+ .check(z.describe('The created funding transfer, including its one-time executable action.')),
293
+ 'CreatedFundingTransfer',
294
+ )
281
295
 
282
296
  /** Request body accepted by funding transfer creation. */
283
- export const CreateRequest = z
284
- .strictObject({
285
- amount: z
286
- .string()
287
- .check(
288
- z.regex(/^[1-9]\d*$/),
289
- z.describe('Amount in base units of the token the mode fixes.'),
290
- z.meta({ examples: ['1000000'] }),
291
- ),
292
- destinationToken: z
293
- .string()
294
- .check(
295
- z.minLength(1),
296
- z.describe('Tempo destination token symbol, contract address, or token key.'),
297
- z.meta({ examples: ['pathusd'] }),
298
- ),
299
- mode: Mode,
300
- recipient: z
301
- .string()
302
- .check(
303
- z.regex(/^0x[0-9a-fA-F]{40}$/),
304
- z.describe('Final beneficiary of the transfer.'),
305
- z.meta({ examples: [`0x${'11'.repeat(20)}`] }),
306
- ),
307
- sender: z
308
- .string()
309
- .check(
310
- z.regex(/^0x[0-9a-fA-F]{40}$/),
311
- z.describe('Source-chain account that signs the funding action.'),
312
- z.meta({ examples: [`0x${'22'.repeat(20)}`] }),
313
- ),
314
- slippageBps: z.optional(
315
- z
316
- .number()
297
+ export const CreateRequest = OpenApi.component(
298
+ z
299
+ .strictObject({
300
+ amount: z
301
+ .string()
317
302
  .check(
318
- z.int(),
319
- z.gte(0),
320
- z.lte(10_000),
321
- z.describe('Maximum acceptable slippage in basis points.'),
322
- z.meta({ examples: [50] }),
303
+ z.regex(/^[1-9]\d*$/),
304
+ z.describe('Amount in base units of the token the mode fixes.'),
305
+ z.meta({ examples: ['1000000'] }),
323
306
  ),
324
- ),
325
- sourceChain: z
326
- .string()
327
- .check(
328
- z.describe('Source chain CAIP-2 id, slug, or alias.'),
329
- z.meta({ examples: ['base', 'eip155:8453'] }),
330
- ),
331
- sourceToken: z
332
- .string()
333
- .check(
334
- z.minLength(1),
335
- z.describe('Source token symbol, contract address, or token key.'),
336
- z.meta({ examples: ['usdc'] }),
307
+ destinationToken: z
308
+ .string()
309
+ .check(
310
+ z.minLength(1),
311
+ z.describe('Tempo destination token symbol, contract address, or token key.'),
312
+ z.meta({ examples: ['pathusd'] }),
313
+ ),
314
+ mode: Mode,
315
+ provider: z
316
+ .optional(z.string().check(z.minLength(1)))
317
+ .check(
318
+ z.describe('Funding provider ID. Omit to select the best available provider.'),
319
+ z.meta({ examples: ['relay'] }),
320
+ ),
321
+ recipient: z
322
+ .string()
323
+ .check(
324
+ z.regex(/^0x[0-9a-fA-F]{40}$/),
325
+ z.describe('Final beneficiary of the transfer.'),
326
+ z.meta({ examples: [`0x${'11'.repeat(20)}`] }),
327
+ ),
328
+ sender: z
329
+ .string()
330
+ .check(
331
+ z.regex(/^0x[0-9a-fA-F]{40}$/),
332
+ z.describe('Source-chain account that signs the funding action.'),
333
+ z.meta({ examples: [`0x${'22'.repeat(20)}`] }),
334
+ ),
335
+ slippageBps: z.optional(
336
+ z
337
+ .number()
338
+ .check(
339
+ z.int(),
340
+ z.gte(0),
341
+ z.lte(10_000),
342
+ z.describe('Maximum acceptable slippage in basis points.'),
343
+ z.meta({ examples: [50] }),
344
+ ),
337
345
  ),
338
- })
339
- .check(z.describe('Funding transfer creation request.'))
346
+ sourceChain: z
347
+ .string()
348
+ .check(
349
+ z.describe('Source chain CAIP-2 id, slug, or alias.'),
350
+ z.meta({ examples: ['base', 'eip155:8453'] }),
351
+ ),
352
+ sourceToken: z
353
+ .string()
354
+ .check(
355
+ z.minLength(1),
356
+ z.describe('Source token symbol, contract address, or token key.'),
357
+ z.meta({ examples: ['usdc'] }),
358
+ ),
359
+ })
360
+ .check(z.describe('Funding transfer creation request.')),
361
+ 'CreateFundingTransferRequest',
362
+ )
340
363
  }
341
364
 
342
365
  /** Stored public snapshot of a funding transfer (see {@link schema.Snapshot}). */
@@ -4,6 +4,7 @@ import * as Across from './across.js'
4
4
  import * as Relay from './relay.js'
5
5
  import * as Rhino from './rhino.js'
6
6
  import * as Squid from './squid.js'
7
+ import * as Stargate from './stargate.js'
7
8
  import * as Symbiosis from './symbiosis.js'
8
9
 
9
10
  const now = () => new Date('2026-01-01T00:00:00.000Z')
@@ -21,6 +22,7 @@ const providers = [
21
22
  integratorId: 'squid-integrator-id',
22
23
  userAddress: '0x1111111111111111111111111111111111111111',
23
24
  }),
25
+ Stargate.stargate(),
24
26
  Symbiosis.symbiosis({ userAddress: '0x1111111111111111111111111111111111111111' }),
25
27
  ] as const
26
28
 
@@ -335,6 +337,12 @@ describe('funding providers', () => {
335
337
  })
336
338
  })
337
339
 
340
+ test('exposes Base and Ethereum Stargate quote candidates', () => {
341
+ expect(
342
+ ['base', 'ethereum'].map((sourceChain) => quoteCandidate('stargate', { sourceChain }).id),
343
+ ).toEqual(['base-usdc-tempo-usdce-stargate', 'ethereum-usdc-tempo-usdce-stargate'])
344
+ })
345
+
338
346
  test('maps successful Symbiosis quotes to available quote results', async () => {
339
347
  const requests: RecordedRequest[] = []
340
348
  const candidate = quoteCandidate('symbiosis')
@@ -961,6 +969,20 @@ describe('funding providers', () => {
961
969
  })
962
970
  })
963
971
 
972
+ test('returns bounded Stargate failure diagnostics', () => {
973
+ expect(
974
+ FundingProvider.failure({
975
+ cause: new TypeError('network failure'),
976
+ operation: 'getQuote',
977
+ provider: getProvider('stargate'),
978
+ }),
979
+ ).toEqual({
980
+ failure: 'network',
981
+ id: 'stargate',
982
+ operation: 'getQuote',
983
+ })
984
+ })
985
+
964
986
  test('returns bounded Symbiosis failure diagnostics', () => {
965
987
  expect(
966
988
  FundingProvider.failure({
@@ -147,8 +147,8 @@ describe.skipIf(!apiKey)('relay.prepareTransfer (live)', () => {
147
147
  expect(call.data).toMatch(/^0x[0-9a-fA-F]*$/)
148
148
  expect(call.value).toBe('0x0')
149
149
  }
150
- expect(result.correlation.requestId).toMatch(/^0x[0-9a-f]{64}$/)
151
- expect(result.correlation.checkEndpoint).toContain('/intents/status/v3')
150
+ expect(result.correlation?.requestId).toMatch(/^0x[0-9a-f]{64}$/)
151
+ expect(result.correlation?.checkEndpoint).toContain('/intents/status/v3')
152
152
  expect(BigInt(result.destinationAmount) > 0n).toBe(true)
153
153
  expect(BigInt(result.destinationAmountMin) > 0n).toBe(true)
154
154
  expect(BigInt(result.destinationAmountMin) <= BigInt(result.destinationAmount)).toBe(true)
@@ -0,0 +1,163 @@
1
+ import { AbiFunction, Hex } from 'ox'
2
+
3
+ import type * as Action from '../Action.js'
4
+ import type * as Catalog from '../Catalog.js'
5
+ import * as FundingProvider from '../Provider.js'
6
+ import * as Stargate from './stargate.js'
7
+
8
+ const amount = 1_000_000n
9
+ const destinationToken = '0x20C000000000000000000000b9537d11c60E8b50'
10
+ const nativeFee = 10_000n
11
+ const otherAddress = '0x9999999999999999999999999999999999999999'
12
+ const pool = '0x27a16dc786820B16E5c9028b75B99F6f604b5d26'
13
+ const recipient = '0x1111111111111111111111111111111111111111'
14
+ const sender = '0x2222222222222222222222222222222222222222'
15
+ const sourceToken = '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
16
+
17
+ const approve = AbiFunction.from('function approve(address spender, uint256 amount)')
18
+ const sendToken = AbiFunction.from(
19
+ 'function sendToken((uint32 dstEid, bytes32 to, uint256 amountLD, uint256 minAmountLD, bytes extraOptions, bytes composeMsg, bytes oftCmd) sendParam, (uint256 nativeFee, uint256 lzTokenFee) fee, address refundAddress) payable returns ((bytes32 guid, uint64 nonce, (uint256 nativeFee, uint256 lzTokenFee) fee) msgReceipt, (uint256 amountSentLD, uint256 amountReceivedLD) oftReceipt, (uint72 ticketId, bytes passengerBytes) ticket)',
20
+ )
21
+
22
+ describe('stargate', () => {
23
+ test('creates a credential-free quote and transfer provider', () => {
24
+ expect(Stargate.stargate()).toMatchObject({
25
+ getQuote: expect.any(Function),
26
+ id: 'stargate',
27
+ name: 'Stargate',
28
+ prepareTransfer: expect.any(Function),
29
+ })
30
+ })
31
+ })
32
+
33
+ describe('validateAction', () => {
34
+ test('accepts the exact approval and Taxi send calls', () => {
35
+ expect(validate(action())).toEqual([{ to: pool, value: Hex.fromNumber(nativeFee) }])
36
+ })
37
+
38
+ test('rejects calls outside the curated Stargate route', () => {
39
+ const invalid = [
40
+ action({ approvalAmount: amount + 1n }),
41
+ action({ approvalSpender: otherAddress }),
42
+ action({ composeMsg: '0x01' }),
43
+ action({ destinationEid: 1 }),
44
+ action({ executionTarget: otherAddress }),
45
+ action({ extraOptions: '0x01' }),
46
+ action({ lzTokenFee: 1n }),
47
+ action({ minimumAmount: amount - 1n }),
48
+ action({ oftCmd: '0x01' }),
49
+ action({ recipient: otherAddress }),
50
+ action({ refundAddress: otherAddress }),
51
+ action({ sourceAmount: amount + 1n }),
52
+ ]
53
+ for (const candidate of invalid)
54
+ expect(() => validate(candidate)).toThrowError(FundingProvider.ProviderPayloadError)
55
+ expect(() => validate(action(), { sourceTokenAddress: otherAddress })).toThrowError(
56
+ FundingProvider.ProviderPayloadError,
57
+ )
58
+ expect(() => validate(action(), { destinationTokenAddress: otherAddress })).toThrowError(
59
+ FundingProvider.ProviderPayloadError,
60
+ )
61
+ })
62
+
63
+ test('rejects malformed selectors and mismatched native value', () => {
64
+ const malformed = action()
65
+ malformed.calls[1]!.data = '0xdeadbeef'
66
+ expect(() => validate(malformed)).toThrowError(FundingProvider.ProviderPayloadError)
67
+
68
+ const mismatched = action()
69
+ mismatched.calls[1]!.value = Hex.fromNumber(nativeFee + 1n)
70
+ expect(() => validate(mismatched)).toThrowError(FundingProvider.ProviderPayloadError)
71
+ })
72
+
73
+ test('rejects missing or mismatched route configuration', () => {
74
+ expect(() =>
75
+ Stargate.validateAction({
76
+ action: action(),
77
+ destinationTokenAddress: destinationToken,
78
+ recipient,
79
+ sender,
80
+ sourceAmount: amount.toString(),
81
+ sourceChainId: 'eip155:8453',
82
+ sourceTokenAddress: sourceToken,
83
+ }),
84
+ ).toThrowError(FundingProvider.ProviderPayloadError)
85
+ expect(() => validate(action(), { configuration: { poolAddress: otherAddress } })).toThrowError(
86
+ FundingProvider.ProviderPayloadError,
87
+ )
88
+ })
89
+ })
90
+
91
+ function action(options: action.Options = {}): Action.EvmCalls {
92
+ const executionFee = options.nativeFee ?? nativeFee
93
+ const sendParam = {
94
+ amountLD: options.sourceAmount ?? amount,
95
+ composeMsg: options.composeMsg ?? '0x',
96
+ dstEid: options.destinationEid ?? 30_410,
97
+ extraOptions: options.extraOptions ?? '0x',
98
+ minAmountLD: options.minimumAmount ?? amount,
99
+ oftCmd: options.oftCmd ?? '0x',
100
+ to: Hex.padLeft(options.recipient ?? recipient, 32),
101
+ } as const
102
+ return {
103
+ calls: [
104
+ {
105
+ data: AbiFunction.encodeData(approve, [
106
+ options.approvalSpender ?? pool,
107
+ options.approvalAmount ?? amount,
108
+ ]),
109
+ to: sourceToken,
110
+ value: '0x0',
111
+ },
112
+ {
113
+ data: AbiFunction.encodeData(sendToken, [
114
+ sendParam,
115
+ { lzTokenFee: options.lzTokenFee ?? 0n, nativeFee: executionFee },
116
+ options.refundAddress ?? sender,
117
+ ]),
118
+ to: options.executionTarget ?? pool,
119
+ value: Hex.fromNumber(executionFee),
120
+ },
121
+ ],
122
+ type: 'evm:calls',
123
+ }
124
+ }
125
+
126
+ declare namespace action {
127
+ type Options = {
128
+ approvalAmount?: bigint | undefined
129
+ approvalSpender?: `0x${string}` | undefined
130
+ composeMsg?: Hex.Hex | undefined
131
+ destinationEid?: number | undefined
132
+ executionTarget?: `0x${string}` | undefined
133
+ extraOptions?: Hex.Hex | undefined
134
+ lzTokenFee?: bigint | undefined
135
+ minimumAmount?: bigint | undefined
136
+ nativeFee?: bigint | undefined
137
+ oftCmd?: Hex.Hex | undefined
138
+ recipient?: Hex.Hex | undefined
139
+ refundAddress?: `0x${string}` | undefined
140
+ sourceAmount?: bigint | undefined
141
+ }
142
+ }
143
+
144
+ function validate(candidate: Action.EvmCalls, options: validate.Options = {}) {
145
+ return Stargate.validateAction({
146
+ action: candidate,
147
+ configuration: options.configuration ?? { poolAddress: pool },
148
+ destinationTokenAddress: options.destinationTokenAddress ?? destinationToken,
149
+ recipient,
150
+ sender,
151
+ sourceAmount: amount.toString(),
152
+ sourceChainId: 'eip155:8453',
153
+ sourceTokenAddress: options.sourceTokenAddress ?? sourceToken,
154
+ })
155
+ }
156
+
157
+ declare namespace validate {
158
+ type Options = {
159
+ configuration?: Catalog.Configuration | undefined
160
+ destinationTokenAddress?: string | undefined
161
+ sourceTokenAddress?: string | undefined
162
+ }
163
+ }