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
@@ -0,0 +1,409 @@
1
+ import { AbiFunction, Address, Hex, RpcTransport } from 'ox'
2
+ import { createClient, custom, fallback, publicActions } from 'viem'
3
+ import * as z from 'zod/mini'
4
+
5
+ import * as Action from '../Action.js'
6
+ import type * as Catalog from '../Catalog.js'
7
+ import * as FundingProvider from '../Provider.js'
8
+
9
+ const approve = AbiFunction.from('function approve(address spender, uint256 amount)')
10
+ const defaultFetch: FundingProvider.Fetch = (input, init) => globalThis.fetch(input, init)
11
+ const destinationChainId = 'eip155:4217'
12
+ const destinationEid = 30_410
13
+ const destinationToken = '0x20C000000000000000000000b9537d11c60E8b50'
14
+ const quoteOft = AbiFunction.from(
15
+ 'function quoteOFT((uint32 dstEid, bytes32 to, uint256 amountLD, uint256 minAmountLD, bytes extraOptions, bytes composeMsg, bytes oftCmd) sendParam) view returns ((uint256 minAmountLD, uint256 maxAmountLD) limit, (int256 feeAmountLD, string description)[] oftFeeDetails, (uint256 amountSentLD, uint256 amountReceivedLD) receipt)',
16
+ )
17
+ const quoteSend = AbiFunction.from(
18
+ 'function quoteSend((uint32 dstEid, bytes32 to, uint256 amountLD, uint256 minAmountLD, bytes extraOptions, bytes composeMsg, bytes oftCmd) sendParam, bool payInLzToken) view returns ((uint256 nativeFee, uint256 lzTokenFee) fee)',
19
+ )
20
+ const sendToken = AbiFunction.from(
21
+ '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)',
22
+ )
23
+ const quoteTtlMs = 60_000
24
+ const zeroAddress = '0x0000000000000000000000000000000000000000'
25
+
26
+ const configuration = z
27
+ .strictObject({
28
+ poolAddress: z
29
+ .string()
30
+ .check(
31
+ z.regex(/^0x[0-9a-fA-F]{40}$/),
32
+ z.describe('Stargate pool contract on the source chain.'),
33
+ ),
34
+ })
35
+ .check(z.describe('Stargate configuration for one funding route.'))
36
+
37
+ type Deployment = {
38
+ pool: Address.Address
39
+ sourceToken: Address.Address
40
+ }
41
+
42
+ type SendParam = {
43
+ amountLD: bigint
44
+ composeMsg: Hex.Hex
45
+ dstEid: number
46
+ extraOptions: Hex.Hex
47
+ minAmountLD: bigint
48
+ oftCmd: Hex.Hex
49
+ to: Hex.Hex
50
+ }
51
+
52
+ /** Creates a direct Stargate V2 OFT funding provider. */
53
+ export function stargate(options: stargate.Options = {}) {
54
+ const fetch = options.fetch ?? defaultFetch
55
+ const now = options.now ?? (() => new Date())
56
+
57
+ return FundingProvider.from({
58
+ id: 'stargate',
59
+ name: 'Stargate',
60
+ async getQuote({ candidate, route }, signal) {
61
+ const deployment = resolveDeployment({
62
+ configuration: candidate.configuration,
63
+ destinationChainId: route.destination.chain.id,
64
+ destinationTokenAddress: route.destination.address,
65
+ sourceChainId: route.source.chain.id,
66
+ sourceTokenAddress: route.source.address,
67
+ })
68
+ const sampledAt = now()
69
+ if (!deployment) return unavailable({ message: 'ROUTE_NOT_CONFIGURED', now: sampledAt })
70
+
71
+ const sendParam = createSendParam({
72
+ amount: candidate.sourceAmount.amount,
73
+ recipient: zeroAddress,
74
+ })
75
+ const [limit, feeDetails, receipt] = await client({ fetch, route, signal }).readContract({
76
+ abi: [quoteOft],
77
+ address: deployment.pool,
78
+ args: [sendParam],
79
+ functionName: 'quoteOFT',
80
+ })
81
+ if (!isExactQuote({ amount: candidate.sourceAmount.amount, feeDetails, limit, receipt }))
82
+ return unavailable({ message: 'NO_EXACT_ROUTE', now: sampledAt })
83
+
84
+ return {
85
+ destinationAmountMin: receipt.amountReceivedLD.toString(),
86
+ destinationAmount: receipt.amountReceivedLD.toString(),
87
+ quality: quality(),
88
+ sampledAt: sampledAt.toISOString(),
89
+ status: 'available',
90
+ }
91
+ },
92
+ async prepareTransfer({ candidate, method, mode, recipient, sender }, signal) {
93
+ if (
94
+ method !== 'transaction' ||
95
+ mode !== 'exactSource' ||
96
+ !Address.validate(recipient, { strict: false }) ||
97
+ !Address.validate(sender, { strict: false })
98
+ )
99
+ throw new FundingProvider.ProviderConfigurationError()
100
+
101
+ const deployment = resolveDeployment({
102
+ configuration: candidate.configuration,
103
+ destinationChainId: candidate.destinationChain.id,
104
+ destinationTokenAddress: candidate.destinationToken.address,
105
+ sourceChainId: candidate.sourceChain.id,
106
+ sourceTokenAddress: candidate.sourceToken.address,
107
+ })
108
+ if (!deployment) throw new FundingProvider.ProviderUnavailableError()
109
+ const sendParam = createSendParam({ amount: candidate.sourceAmount.amount, recipient })
110
+ const rpc = client({ fetch, route: candidate.route, signal })
111
+ const [[limit, feeDetails, receipt], messagingFee] = await Promise.all([
112
+ rpc.readContract({
113
+ abi: [quoteOft],
114
+ address: deployment.pool,
115
+ args: [sendParam],
116
+ functionName: 'quoteOFT',
117
+ }),
118
+ rpc.readContract({
119
+ abi: [quoteSend],
120
+ account: sender as Address.Address,
121
+ address: deployment.pool,
122
+ args: [sendParam, false],
123
+ functionName: 'quoteSend',
124
+ }),
125
+ ])
126
+ if (!isExactQuote({ amount: candidate.sourceAmount.amount, feeDetails, limit, receipt }))
127
+ throw new FundingProvider.ProviderUnavailableError()
128
+ if (messagingFee.lzTokenFee !== 0n) throw new FundingProvider.ProviderPayloadError()
129
+
130
+ const action = {
131
+ calls: [
132
+ {
133
+ data: AbiFunction.encodeData(approve, [
134
+ deployment.pool,
135
+ BigInt(candidate.sourceAmount.amount),
136
+ ]),
137
+ to: deployment.sourceToken,
138
+ value: '0x0',
139
+ },
140
+ {
141
+ data: AbiFunction.encodeData(sendToken, [sendParam, messagingFee, sender]),
142
+ to: deployment.pool,
143
+ value: Hex.fromNumber(messagingFee.nativeFee),
144
+ },
145
+ ],
146
+ type: 'evm:calls' as const,
147
+ }
148
+ validateAction({
149
+ action,
150
+ configuration: candidate.configuration,
151
+ destinationTokenAddress: candidate.destinationToken.address,
152
+ recipient,
153
+ sender,
154
+ sourceAmount: candidate.sourceAmount.amount,
155
+ sourceChainId: candidate.sourceChain.id,
156
+ sourceTokenAddress: candidate.sourceToken.address,
157
+ })
158
+
159
+ const sampledAt = now()
160
+ return {
161
+ action,
162
+ destinationAmountMin: receipt.amountReceivedLD.toString(),
163
+ destinationAmount: receipt.amountReceivedLD.toString(),
164
+ expiresAt: new Date(sampledAt.getTime() + quoteTtlMs).toISOString(),
165
+ fees:
166
+ messagingFee.nativeFee === 0n
167
+ ? []
168
+ : [
169
+ {
170
+ amount: messagingFee.nativeFee.toString(),
171
+ side: 'source' as const,
172
+ token: nativeToken(candidate.sourceChain.id),
173
+ },
174
+ ],
175
+ quality: quality(),
176
+ sampledAt: sampledAt.toISOString(),
177
+ }
178
+ },
179
+ validateTransferAction({ action, candidate, recipient, sender }) {
180
+ return {
181
+ nativeValues: validateAction({
182
+ action,
183
+ configuration: candidate.configuration,
184
+ destinationTokenAddress: candidate.destinationToken.address,
185
+ recipient,
186
+ sender,
187
+ sourceAmount: candidate.sourceAmount.amount,
188
+ sourceChainId: candidate.sourceChain.id,
189
+ sourceTokenAddress: candidate.sourceToken.address,
190
+ }),
191
+ }
192
+ },
193
+ })
194
+ }
195
+
196
+ export declare namespace stargate {
197
+ /** Stargate provider options. */
198
+ type Options = {
199
+ /** Fetch implementation override for chain RPC requests. */
200
+ fetch?: FundingProvider.Fetch | undefined
201
+ /** Clock override for deterministic tests. */
202
+ now?: (() => Date) | undefined
203
+ }
204
+ }
205
+
206
+ /** Validates one direct Stargate action and returns its exact native-value allowance. */
207
+ export function validateAction(options: validateAction.Options): readonly Action.NativeValue[] {
208
+ try {
209
+ const action = Action.schema.EvmCalls.parse(options.action)
210
+ const deployment = resolveDeployment({
211
+ configuration: options.configuration,
212
+ destinationChainId,
213
+ destinationTokenAddress: options.destinationTokenAddress,
214
+ sourceChainId: options.sourceChainId,
215
+ sourceTokenAddress: options.sourceTokenAddress,
216
+ })
217
+ if (!deployment || action.calls.length !== 2) throw new FundingProvider.ProviderPayloadError()
218
+ const [approval, execution] = action.calls
219
+ if (
220
+ !Address.isEqual(approval!.to as Address.Address, deployment.sourceToken) ||
221
+ BigInt(approval!.value) !== 0n ||
222
+ !Address.isEqual(execution!.to as Address.Address, deployment.pool)
223
+ )
224
+ throw new FundingProvider.ProviderPayloadError()
225
+
226
+ const [spender, approvalAmount] = AbiFunction.decodeData(approve, approval!.data as Hex.Hex)
227
+ const [sendParam, messagingFee, refundAddress] = AbiFunction.decodeData(
228
+ sendToken,
229
+ execution!.data as Hex.Hex,
230
+ )
231
+ const nativeValue = BigInt(execution!.value)
232
+ if (
233
+ !Address.isEqual(spender, deployment.pool) ||
234
+ approvalAmount !== BigInt(options.sourceAmount) ||
235
+ sendParam.amountLD !== BigInt(options.sourceAmount) ||
236
+ sendParam.composeMsg !== '0x' ||
237
+ sendParam.dstEid !== destinationEid ||
238
+ sendParam.extraOptions !== '0x' ||
239
+ sendParam.minAmountLD !== BigInt(options.sourceAmount) ||
240
+ sendParam.oftCmd !== '0x' ||
241
+ !Hex.isEqual(sendParam.to, recipientBytes32(options.recipient)) ||
242
+ messagingFee.lzTokenFee !== 0n ||
243
+ messagingFee.nativeFee !== nativeValue ||
244
+ !Address.isEqual(refundAddress, options.sender as Address.Address)
245
+ )
246
+ throw new FundingProvider.ProviderPayloadError()
247
+ return [{ to: execution!.to, value: execution!.value }]
248
+ } catch (cause) {
249
+ if (cause instanceof FundingProvider.ProviderPayloadError) throw cause
250
+ throw new FundingProvider.ProviderPayloadError()
251
+ }
252
+ }
253
+
254
+ export declare namespace validateAction {
255
+ /** Expected route terms for one Stargate action. */
256
+ type Options = {
257
+ /** Prepared Stargate action. */
258
+ action: Action.EvmCalls
259
+ /** Stargate configuration for the selected route. */
260
+ configuration?: Catalog.Configuration | undefined
261
+ /** Curated Tempo destination token. */
262
+ destinationTokenAddress: string
263
+ /** Tempo beneficiary. */
264
+ recipient: string
265
+ /** Source account and LayerZero refund recipient. */
266
+ sender: string
267
+ /** Exact source amount in base units. */
268
+ sourceAmount: string
269
+ /** Source chain CAIP-2 id. */
270
+ sourceChainId: string
271
+ /** Curated source token. */
272
+ sourceTokenAddress: string
273
+ }
274
+ }
275
+
276
+ function client(options: client.Options) {
277
+ if (options.route.source.chain.rpcUrls.length === 0)
278
+ throw new FundingProvider.ProviderConfigurationError()
279
+ return createClient({
280
+ transport: fallback(
281
+ options.route.source.chain.rpcUrls.map((url) =>
282
+ custom(
283
+ RpcTransport.fromHttp(url, {
284
+ fetchFn: (input, init) => options.fetch(input, { ...init, signal: options.signal }),
285
+ }),
286
+ { retryCount: 0 },
287
+ ),
288
+ ),
289
+ ),
290
+ }).extend(publicActions)
291
+ }
292
+
293
+ declare namespace client {
294
+ type Options = {
295
+ fetch: FundingProvider.Fetch
296
+ route: FundingProvider.QuoteCandidate['route']
297
+ signal: AbortSignal
298
+ }
299
+ }
300
+
301
+ function createSendParam(options: createSendParam.Options): SendParam {
302
+ const amount = BigInt(options.amount)
303
+ return {
304
+ amountLD: amount,
305
+ composeMsg: '0x',
306
+ dstEid: destinationEid,
307
+ extraOptions: '0x',
308
+ minAmountLD: amount,
309
+ oftCmd: '0x',
310
+ to: recipientBytes32(options.recipient),
311
+ }
312
+ }
313
+
314
+ declare namespace createSendParam {
315
+ type Options = {
316
+ amount: string
317
+ recipient: string
318
+ }
319
+ }
320
+
321
+ function isExactQuote(options: isExactQuote.Options) {
322
+ const amount = BigInt(options.amount)
323
+ return (
324
+ amount >= options.limit.minAmountLD &&
325
+ amount <= options.limit.maxAmountLD &&
326
+ options.feeDetails.every((fee) => fee.feeAmountLD >= 0n) &&
327
+ options.receipt.amountSentLD === amount &&
328
+ options.receipt.amountReceivedLD === amount
329
+ )
330
+ }
331
+
332
+ declare namespace isExactQuote {
333
+ type Options = {
334
+ amount: string
335
+ feeDetails: readonly { feeAmountLD: bigint }[]
336
+ limit: { maxAmountLD: bigint; minAmountLD: bigint }
337
+ receipt: { amountReceivedLD: bigint; amountSentLD: bigint }
338
+ }
339
+ }
340
+
341
+ function nativeToken(sourceChainId: string) {
342
+ return {
343
+ address: '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee',
344
+ currency: 'ETH',
345
+ decimals: 18,
346
+ name: 'Ether',
347
+ standard: 'native',
348
+ symbol: 'ETH',
349
+ tokenKey: `${sourceChainId}/slip44:60`,
350
+ verified: true,
351
+ }
352
+ }
353
+
354
+ function quality() {
355
+ return {
356
+ liquiditySource: 'onchain',
357
+ sourceDetail: 'stargate:oft-v2:taxi',
358
+ tier: 'liquid' as const,
359
+ }
360
+ }
361
+
362
+ function recipientBytes32(recipient: string) {
363
+ if (!Address.validate(recipient, { strict: false }))
364
+ throw new FundingProvider.ProviderConfigurationError()
365
+ return Hex.padLeft(recipient as Hex.Hex, 32)
366
+ }
367
+
368
+ function resolveDeployment(options: resolveDeployment.Options): Deployment | undefined {
369
+ const parsed = configuration.safeParse(options.configuration)
370
+ if (
371
+ !parsed.success ||
372
+ options.destinationChainId !== destinationChainId ||
373
+ !options.sourceChainId.startsWith('eip155:') ||
374
+ !Address.validate(options.destinationTokenAddress, { strict: false }) ||
375
+ !Address.validate(options.sourceTokenAddress, { strict: false }) ||
376
+ !Address.isEqual(options.destinationTokenAddress as Address.Address, destinationToken)
377
+ )
378
+ return undefined
379
+ return {
380
+ pool: Address.checksum(parsed.data.poolAddress),
381
+ sourceToken: Address.checksum(options.sourceTokenAddress),
382
+ }
383
+ }
384
+
385
+ declare namespace resolveDeployment {
386
+ type Options = {
387
+ configuration?: Catalog.Configuration | undefined
388
+ destinationChainId: string
389
+ destinationTokenAddress: string
390
+ sourceChainId: string
391
+ sourceTokenAddress: string
392
+ }
393
+ }
394
+
395
+ function unavailable(options: unavailable.Options) {
396
+ return FundingProvider.unavailableResult({
397
+ detail: 'stargate:oft-v2',
398
+ message: options.message,
399
+ now: options.now,
400
+ source: 'onchain',
401
+ })
402
+ }
403
+
404
+ declare namespace unavailable {
405
+ type Options = {
406
+ message: string
407
+ now: Date
408
+ }
409
+ }
@@ -12,6 +12,7 @@ test('exports internal modules', () => {
12
12
  "Errors",
13
13
  "Exchange",
14
14
  "Fees",
15
+ "Fetch",
15
16
  "Funding",
16
17
  "Id",
17
18
  "Idempotency",
@@ -7,6 +7,7 @@ export * as EarnVaults from './EarnVaults.js'
7
7
  export * as Errors from './Errors.js'
8
8
  export * as Exchange from './exchange/index.js'
9
9
  export * as Fees from './Fees.js'
10
+ export * as Fetch from './Fetch.js'
10
11
  export * as Funding from './funding/index.js'
11
12
  export * as Id from './Id.js'
12
13
  export * as Idempotency from './Idempotency.js'
@@ -7,6 +7,7 @@ test('exports provider factories', () => {
7
7
  "relay",
8
8
  "rhino",
9
9
  "squid",
10
+ "stargate",
10
11
  "symbiosis",
11
12
  "uniswap",
12
13
  ]
@@ -3,6 +3,7 @@ import * as Across from '../internal/funding/providers/across.js'
3
3
  import * as Relay from '../internal/funding/providers/relay.js'
4
4
  import * as Rhino from '../internal/funding/providers/rhino.js'
5
5
  import * as Squid from '../internal/funding/providers/squid.js'
6
+ import * as Stargate from '../internal/funding/providers/stargate.js'
6
7
  import * as Symbiosis from '../internal/funding/providers/symbiosis.js'
7
8
 
8
9
  /** Creates an Across funding provider. */
@@ -37,6 +38,14 @@ export declare namespace squid {
37
38
  type Options = Squid.squid.Options
38
39
  }
39
40
 
41
+ /** Creates a Stargate funding provider. */
42
+ export const stargate = Stargate.stargate
43
+
44
+ export declare namespace stargate {
45
+ /** Stargate provider configuration. */
46
+ type Options = Stargate.stargate.Options
47
+ }
48
+
40
49
  /** Creates a Symbiosis funding provider. */
41
50
  export const symbiosis = Symbiosis.symbiosis
42
51