tapimo 0.7.0 → 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 (689) 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 +151 -95
  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 +14377 -10165
  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 +1231 -324
  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.map +1 -1
  78. package/dist/apps/data/routes/fee-amm.js +59 -8
  79. package/dist/apps/data/routes/fee-amm.js.map +1 -1
  80. package/dist/apps/data/routes/funding.d.ts +4092 -387
  81. package/dist/apps/data/routes/funding.d.ts.map +1 -1
  82. package/dist/apps/data/routes/funding.js +1403 -256
  83. package/dist/apps/data/routes/funding.js.map +1 -1
  84. package/dist/apps/data/routes/indexer.d.ts +5 -5
  85. package/dist/apps/data/routes/indexer.d.ts.map +1 -1
  86. package/dist/apps/data/routes/indexer.js +19 -2
  87. package/dist/apps/data/routes/indexer.js.map +1 -1
  88. package/dist/apps/data/routes/receipts.d.ts +265 -265
  89. package/dist/apps/data/routes/receipts.d.ts.map +1 -1
  90. package/dist/apps/data/routes/receipts.js +11 -11
  91. package/dist/apps/data/routes/receipts.js.map +1 -1
  92. package/dist/apps/data/routes/rpc.d.ts +5 -5
  93. package/dist/apps/data/routes/rpc.d.ts.map +1 -1
  94. package/dist/apps/data/routes/rpc.js +211 -22
  95. package/dist/apps/data/routes/rpc.js.map +1 -1
  96. package/dist/apps/data/routes/tokenlist.d.ts +36 -36
  97. package/dist/apps/data/routes/tokenlist.d.ts.map +1 -1
  98. package/dist/apps/data/routes/tokenlist.js +49 -9
  99. package/dist/apps/data/routes/tokenlist.js.map +1 -1
  100. package/dist/apps/data/routes/tokens.d.ts +116 -88
  101. package/dist/apps/data/routes/tokens.d.ts.map +1 -1
  102. package/dist/apps/data/routes/tokens.js +198 -91
  103. package/dist/apps/data/routes/tokens.js.map +1 -1
  104. package/dist/apps/data/routes/transactions.d.ts +55 -55
  105. package/dist/apps/data/routes/transactions.d.ts.map +1 -1
  106. package/dist/apps/data/routes/transactions.js +78 -39
  107. package/dist/apps/data/routes/transactions.js.map +1 -1
  108. package/dist/apps/data/routes/transfers.d.ts +78 -29
  109. package/dist/apps/data/routes/transfers.d.ts.map +1 -1
  110. package/dist/apps/data/routes/transfers.js +165 -67
  111. package/dist/apps/data/routes/transfers.js.map +1 -1
  112. package/dist/apps/data/routes/valuation.d.ts +10 -10
  113. package/dist/apps/data/routes/valuation.js +2 -2
  114. package/dist/apps/data/routes/valuation.js.map +1 -1
  115. package/dist/apps/data/routes/verified-tokens.d.ts.map +1 -1
  116. package/dist/apps/data/routes/verified-tokens.js +34 -9
  117. package/dist/apps/data/routes/verified-tokens.js.map +1 -1
  118. package/dist/apps/data/routes/webhooks.d.ts +5 -3
  119. package/dist/apps/data/routes/webhooks.d.ts.map +1 -1
  120. package/dist/apps/data/routes/webhooks.js +175 -65
  121. package/dist/apps/data/routes/webhooks.js.map +1 -1
  122. package/dist/apps/data/routes/zones.d.ts +281 -0
  123. package/dist/apps/data/routes/zones.d.ts.map +1 -0
  124. package/dist/apps/data/routes/zones.js +252 -0
  125. package/dist/apps/data/routes/zones.js.map +1 -0
  126. package/dist/apps/docs/reference.js +6 -5
  127. package/dist/apps/docs/reference.js.map +1 -1
  128. package/dist/apps/index.d.ts +2 -1
  129. package/dist/apps/index.d.ts.map +1 -1
  130. package/dist/apps/index.js +2 -1
  131. package/dist/apps/index.js.map +1 -1
  132. package/dist/apps/management/App.d.ts +670 -670
  133. package/dist/apps/management/Billing.d.ts +8 -0
  134. package/dist/apps/management/Billing.d.ts.map +1 -1
  135. package/dist/apps/management/Billing.js +12 -0
  136. package/dist/apps/management/Billing.js.map +1 -1
  137. package/dist/apps/management/Error.d.ts +12 -0
  138. package/dist/apps/management/Error.d.ts.map +1 -0
  139. package/dist/apps/management/Error.js +10 -0
  140. package/dist/apps/management/Error.js.map +1 -0
  141. package/dist/apps/management/routes/api-keys.d.ts +5 -5
  142. package/dist/apps/management/routes/api-keys.d.ts.map +1 -1
  143. package/dist/apps/management/routes/api-keys.js +2 -8
  144. package/dist/apps/management/routes/api-keys.js.map +1 -1
  145. package/dist/apps/management/routes/billing.d.ts +119 -119
  146. package/dist/apps/management/routes/faucet.d.ts +35 -35
  147. package/dist/apps/management/routes/invitations.d.ts +62 -62
  148. package/dist/apps/management/routes/invitations.d.ts.map +1 -1
  149. package/dist/apps/management/routes/invitations.js +4 -10
  150. package/dist/apps/management/routes/invitations.js.map +1 -1
  151. package/dist/apps/management/routes/invite-links.d.ts +30 -30
  152. package/dist/apps/management/routes/me.d.ts +6 -6
  153. package/dist/apps/management/routes/members.d.ts +78 -78
  154. package/dist/apps/management/routes/orgs.d.ts +48 -48
  155. package/dist/apps/management/routes/orgs.d.ts.map +1 -1
  156. package/dist/apps/management/routes/orgs.js +2 -8
  157. package/dist/apps/management/routes/orgs.js.map +1 -1
  158. package/dist/apps/management/routes/projects.d.ts +9 -9
  159. package/dist/apps/management/routes/scopes.js +2 -2
  160. package/dist/apps/management/routes/scopes.js.map +1 -1
  161. package/dist/apps/management/routes/usage.d.ts +80 -80
  162. package/dist/apps/management/routes/verified-token-requests.d.ts +36 -36
  163. package/dist/apps/management/routes/webhooks.d.ts +50 -50
  164. package/dist/apps/management/routes/webhooks.d.ts.map +1 -1
  165. package/dist/apps/management/routes/webhooks.js +15 -3
  166. package/dist/apps/management/routes/webhooks.js.map +1 -1
  167. package/dist/apps/mpp/App.d.ts +55 -56
  168. package/dist/apps/mpp/App.d.ts.map +1 -1
  169. package/dist/apps/mpp/App.js +192 -27
  170. package/dist/apps/mpp/App.js.map +1 -1
  171. package/dist/apps/mpp/Mpp.d.ts +0 -20
  172. package/dist/apps/mpp/Mpp.d.ts.map +1 -1
  173. package/dist/apps/mpp/Mpp.js +0 -24
  174. package/dist/apps/mpp/Mpp.js.map +1 -1
  175. package/dist/apps/mpp/internal/Adapter.d.ts +40 -0
  176. package/dist/apps/mpp/internal/Adapter.d.ts.map +1 -0
  177. package/dist/apps/mpp/internal/Adapter.js +66 -0
  178. package/dist/apps/mpp/internal/Adapter.js.map +1 -0
  179. package/dist/apps/mpp/internal/Error.d.ts +4 -0
  180. package/dist/apps/mpp/internal/Error.d.ts.map +1 -0
  181. package/dist/apps/mpp/internal/Error.js +41 -0
  182. package/dist/apps/mpp/internal/Error.js.map +1 -0
  183. package/dist/apps/mpp/internal/Idempotency.d.ts +33 -0
  184. package/dist/apps/mpp/internal/Idempotency.d.ts.map +1 -0
  185. package/dist/apps/mpp/internal/Idempotency.js +28 -0
  186. package/dist/apps/mpp/internal/Idempotency.js.map +1 -0
  187. package/dist/apps/mpp/internal/Policy.d.ts +46 -0
  188. package/dist/apps/mpp/internal/Policy.d.ts.map +1 -0
  189. package/dist/apps/mpp/internal/Policy.js +57 -0
  190. package/dist/apps/mpp/internal/Policy.js.map +1 -0
  191. package/dist/apps/mpp/internal/ScreenManager.d.ts +27 -0
  192. package/dist/apps/mpp/internal/ScreenManager.d.ts.map +1 -0
  193. package/dist/apps/mpp/internal/ScreenManager.js +18 -0
  194. package/dist/apps/mpp/internal/ScreenManager.js.map +1 -0
  195. package/dist/apps/mpp/internal/Screening.d.ts +35 -0
  196. package/dist/apps/mpp/internal/Screening.d.ts.map +1 -0
  197. package/dist/apps/mpp/internal/Screening.js +20 -0
  198. package/dist/apps/mpp/internal/Screening.js.map +1 -0
  199. package/dist/apps/mpp/internal/Sponsorship.d.ts +36 -0
  200. package/dist/apps/mpp/internal/Sponsorship.d.ts.map +1 -0
  201. package/dist/apps/mpp/internal/Sponsorship.js +103 -0
  202. package/dist/apps/mpp/internal/Sponsorship.js.map +1 -0
  203. package/dist/apps/mpp/internal/Utils.d.ts +7 -0
  204. package/dist/apps/mpp/internal/Utils.d.ts.map +1 -0
  205. package/dist/apps/mpp/internal/Utils.js +24 -0
  206. package/dist/apps/mpp/internal/Utils.js.map +1 -0
  207. package/dist/apps/relay/App.js +184 -24
  208. package/dist/apps/relay/App.js.map +1 -1
  209. package/dist/apps/relay/Sponsorships.d.ts +4 -0
  210. package/dist/apps/relay/Sponsorships.d.ts.map +1 -1
  211. package/dist/apps/relay/Sponsorships.js +16 -7
  212. package/dist/apps/relay/Sponsorships.js.map +1 -1
  213. package/dist/db/Db.d.ts +20 -0
  214. package/dist/db/Db.d.ts.map +1 -1
  215. package/dist/db/Db.js +342 -0
  216. package/dist/db/Db.js.map +1 -1
  217. package/dist/db/Schema.d.ts +921 -1
  218. package/dist/db/Schema.d.ts.map +1 -1
  219. package/dist/db/Schema.js +269 -1
  220. package/dist/db/Schema.js.map +1 -1
  221. package/dist/db/tables/earnVaults.d.ts +68 -0
  222. package/dist/db/tables/earnVaults.d.ts.map +1 -0
  223. package/dist/db/tables/earnVaults.js +72 -0
  224. package/dist/db/tables/earnVaults.js.map +1 -0
  225. package/dist/db/tables/fundingCatalog.d.ts +56 -0
  226. package/dist/db/tables/fundingCatalog.d.ts.map +1 -0
  227. package/dist/db/tables/fundingCatalog.js +85 -0
  228. package/dist/db/tables/fundingCatalog.js.map +1 -0
  229. package/dist/db/tables/fundingDepositAddresses.d.ts +159 -0
  230. package/dist/db/tables/fundingDepositAddresses.d.ts.map +1 -0
  231. package/dist/db/tables/fundingDepositAddresses.js +206 -0
  232. package/dist/db/tables/fundingDepositAddresses.js.map +1 -0
  233. package/dist/db/tables/fundingDeposits.d.ts +115 -0
  234. package/dist/db/tables/fundingDeposits.d.ts.map +1 -0
  235. package/dist/db/tables/fundingDeposits.js +100 -0
  236. package/dist/db/tables/fundingDeposits.js.map +1 -0
  237. package/dist/db/tables/fundingIdempotency.d.ts +91 -0
  238. package/dist/db/tables/fundingIdempotency.d.ts.map +1 -0
  239. package/dist/db/tables/fundingIdempotency.js +103 -0
  240. package/dist/db/tables/fundingIdempotency.js.map +1 -0
  241. package/dist/db/tables/fundingTransferEvents.d.ts +12 -0
  242. package/dist/db/tables/fundingTransferEvents.d.ts.map +1 -0
  243. package/dist/db/tables/fundingTransferEvents.js +18 -0
  244. package/dist/db/tables/fundingTransferEvents.js.map +1 -0
  245. package/dist/db/tables/fundingTransferTransactions.d.ts +15 -0
  246. package/dist/db/tables/fundingTransferTransactions.d.ts.map +1 -0
  247. package/dist/db/tables/fundingTransferTransactions.js +27 -0
  248. package/dist/db/tables/fundingTransferTransactions.js.map +1 -0
  249. package/dist/db/tables/fundingTransfers.d.ts +82 -0
  250. package/dist/db/tables/fundingTransfers.d.ts.map +1 -0
  251. package/dist/db/tables/fundingTransfers.js +89 -0
  252. package/dist/db/tables/fundingTransfers.js.map +1 -0
  253. package/dist/db/tables/organizations.d.ts +8 -0
  254. package/dist/db/tables/organizations.d.ts.map +1 -1
  255. package/dist/db/tables/organizations.js +35 -0
  256. package/dist/db/tables/organizations.js.map +1 -1
  257. package/dist/db/tables/projects.d.ts +8 -0
  258. package/dist/db/tables/projects.d.ts.map +1 -1
  259. package/dist/db/tables/projects.js +16 -0
  260. package/dist/db/tables/projects.js.map +1 -1
  261. package/dist/db/tables/requestUsage.d.ts +13 -0
  262. package/dist/db/tables/requestUsage.d.ts.map +1 -1
  263. package/dist/db/tables/requestUsage.js +16 -0
  264. package/dist/db/tables/requestUsage.js.map +1 -1
  265. package/dist/db/tables/sponsoredTransactions.d.ts +4 -2
  266. package/dist/db/tables/sponsoredTransactions.d.ts.map +1 -1
  267. package/dist/db/tables/sponsoredTransactions.js +14 -4
  268. package/dist/db/tables/sponsoredTransactions.js.map +1 -1
  269. package/dist/db/tables/users.d.ts +8 -0
  270. package/dist/db/tables/users.d.ts.map +1 -1
  271. package/dist/db/tables/users.js +16 -0
  272. package/dist/db/tables/users.js.map +1 -1
  273. package/dist/db/tables/verifiedTokens.d.ts +14 -7
  274. package/dist/db/tables/verifiedTokens.d.ts.map +1 -1
  275. package/dist/db/tables/verifiedTokens.js +9 -7
  276. package/dist/db/tables/verifiedTokens.js.map +1 -1
  277. package/dist/db/tables/webhookSubscriptions.d.ts +31 -1
  278. package/dist/db/tables/webhookSubscriptions.d.ts.map +1 -1
  279. package/dist/db/tables/webhookSubscriptions.js +24 -3
  280. package/dist/db/tables/webhookSubscriptions.js.map +1 -1
  281. package/dist/handlers/relay.js +108 -108
  282. package/dist/handlers/relay.js.map +1 -1
  283. package/dist/internal/Auth.d.ts +26 -0
  284. package/dist/internal/Auth.d.ts.map +1 -1
  285. package/dist/internal/Auth.js +35 -2
  286. package/dist/internal/Auth.js.map +1 -1
  287. package/dist/internal/Cache.d.ts.map +1 -1
  288. package/dist/internal/Cache.js +16 -10
  289. package/dist/internal/Cache.js.map +1 -1
  290. package/dist/internal/Cursor.js +1 -1
  291. package/dist/internal/Cursor.js.map +1 -1
  292. package/dist/internal/EarnRates.d.ts +89 -0
  293. package/dist/internal/EarnRates.d.ts.map +1 -0
  294. package/dist/internal/EarnRates.js +266 -0
  295. package/dist/internal/EarnRates.js.map +1 -0
  296. package/dist/internal/EarnVaults.d.ts +171 -0
  297. package/dist/internal/EarnVaults.d.ts.map +1 -0
  298. package/dist/internal/EarnVaults.js +547 -0
  299. package/dist/internal/EarnVaults.js.map +1 -0
  300. package/dist/internal/EdgeCache.d.ts +9 -2
  301. package/dist/internal/EdgeCache.d.ts.map +1 -1
  302. package/dist/internal/EdgeCache.js +36 -9
  303. package/dist/internal/EdgeCache.js.map +1 -1
  304. package/dist/internal/Id.d.ts +11 -0
  305. package/dist/internal/Id.d.ts.map +1 -1
  306. package/dist/internal/Id.js +13 -0
  307. package/dist/internal/Id.js.map +1 -1
  308. package/dist/internal/Idempotency.d.ts +83 -0
  309. package/dist/internal/Idempotency.d.ts.map +1 -0
  310. package/dist/internal/Idempotency.js +113 -0
  311. package/dist/internal/Idempotency.js.map +1 -0
  312. package/dist/internal/Log.d.ts +64 -9
  313. package/dist/internal/Log.d.ts.map +1 -1
  314. package/dist/internal/Log.js +29 -7
  315. package/dist/internal/Log.js.map +1 -1
  316. package/dist/internal/MetricSink.d.ts.map +1 -1
  317. package/dist/internal/MetricSink.js +47 -1
  318. package/dist/internal/MetricSink.js.map +1 -1
  319. package/dist/internal/OpenApi.d.ts +1 -1
  320. package/dist/internal/OpenApi.d.ts.map +1 -1
  321. package/dist/internal/OpenApi.js +3 -0
  322. package/dist/internal/OpenApi.js.map +1 -1
  323. package/dist/internal/Provider.d.ts +14 -0
  324. package/dist/internal/Provider.d.ts.map +1 -0
  325. package/dist/internal/Provider.js +5 -0
  326. package/dist/internal/Provider.js.map +1 -0
  327. package/dist/internal/Schema.d.ts +8 -3
  328. package/dist/internal/Schema.d.ts.map +1 -1
  329. package/dist/internal/Schema.js +24 -13
  330. package/dist/internal/Schema.js.map +1 -1
  331. package/dist/internal/Store.d.ts +6 -0
  332. package/dist/internal/Store.d.ts.map +1 -1
  333. package/dist/internal/Store.js +35 -0
  334. package/dist/internal/Store.js.map +1 -1
  335. package/dist/internal/Tidx.d.ts +43 -24
  336. package/dist/internal/Tidx.d.ts.map +1 -1
  337. package/dist/internal/Tidx.js +79 -11
  338. package/dist/internal/Tidx.js.map +1 -1
  339. package/dist/internal/Viem.d.ts +82 -65
  340. package/dist/internal/Viem.d.ts.map +1 -1
  341. package/dist/internal/Viem.js +83 -12
  342. package/dist/internal/Viem.js.map +1 -1
  343. package/dist/internal/WebhookDestination.d.ts.map +1 -1
  344. package/dist/internal/WebhookDestination.js +34 -28
  345. package/dist/internal/WebhookDestination.js.map +1 -1
  346. package/dist/internal/Webhooks.d.ts +9 -0
  347. package/dist/internal/Webhooks.d.ts.map +1 -1
  348. package/dist/internal/Webhooks.js +15 -10
  349. package/dist/internal/Webhooks.js.map +1 -1
  350. package/dist/internal/exchange/Provider.d.ts +219 -0
  351. package/dist/internal/exchange/Provider.d.ts.map +1 -0
  352. package/dist/internal/exchange/Provider.js +117 -0
  353. package/dist/internal/exchange/Provider.js.map +1 -0
  354. package/dist/internal/exchange/index.d.ts +2 -0
  355. package/dist/internal/exchange/index.d.ts.map +1 -0
  356. package/dist/internal/exchange/index.js +2 -0
  357. package/dist/internal/exchange/index.js.map +1 -0
  358. package/dist/internal/exchange/providers/uniswap.d.ts +57 -0
  359. package/dist/internal/exchange/providers/uniswap.d.ts.map +1 -0
  360. package/dist/internal/exchange/providers/uniswap.js +553 -0
  361. package/dist/internal/exchange/providers/uniswap.js.map +1 -0
  362. package/dist/internal/funding/Action.d.ts +55 -0
  363. package/dist/internal/funding/Action.d.ts.map +1 -0
  364. package/dist/internal/funding/Action.js +74 -0
  365. package/dist/internal/funding/Action.js.map +1 -0
  366. package/dist/internal/funding/Catalog.d.ts +107 -0
  367. package/dist/internal/funding/Catalog.d.ts.map +1 -0
  368. package/dist/internal/funding/Catalog.js +270 -0
  369. package/dist/internal/funding/Catalog.js.map +1 -0
  370. package/dist/internal/funding/Chain.d.ts +76 -0
  371. package/dist/internal/funding/Chain.d.ts.map +1 -0
  372. package/dist/internal/funding/Chain.js +38 -0
  373. package/dist/internal/funding/Chain.js.map +1 -0
  374. package/dist/internal/funding/Deposit.d.ts +366 -0
  375. package/dist/internal/funding/Deposit.d.ts.map +1 -0
  376. package/dist/internal/funding/Deposit.js +286 -0
  377. package/dist/internal/funding/Deposit.js.map +1 -0
  378. package/dist/internal/funding/DepositAddress.d.ts +345 -0
  379. package/dist/internal/funding/DepositAddress.d.ts.map +1 -0
  380. package/dist/internal/funding/DepositAddress.js +189 -0
  381. package/dist/internal/funding/DepositAddress.js.map +1 -0
  382. package/dist/internal/funding/Evidence.d.ts +52 -0
  383. package/dist/internal/funding/Evidence.d.ts.map +1 -0
  384. package/dist/internal/funding/Evidence.js +314 -0
  385. package/dist/internal/funding/Evidence.js.map +1 -0
  386. package/dist/internal/funding/Provider.d.ts +1186 -0
  387. package/dist/internal/funding/Provider.d.ts.map +1 -0
  388. package/dist/internal/funding/Provider.js +1081 -0
  389. package/dist/internal/funding/Provider.js.map +1 -0
  390. package/dist/internal/funding/Reconciliation.d.ts +113 -0
  391. package/dist/internal/funding/Reconciliation.d.ts.map +1 -0
  392. package/dist/internal/funding/Reconciliation.js +676 -0
  393. package/dist/internal/funding/Reconciliation.js.map +1 -0
  394. package/dist/internal/funding/Route.d.ts +21 -0
  395. package/dist/internal/funding/Route.d.ts.map +1 -0
  396. package/dist/internal/funding/Route.js +5 -0
  397. package/dist/internal/funding/Route.js.map +1 -0
  398. package/dist/internal/funding/Subsidy.d.ts +113 -0
  399. package/dist/internal/funding/Subsidy.d.ts.map +1 -0
  400. package/dist/internal/funding/Subsidy.js +138 -0
  401. package/dist/internal/funding/Subsidy.js.map +1 -0
  402. package/dist/internal/funding/Token.d.ts +41 -0
  403. package/dist/internal/funding/Token.d.ts.map +1 -0
  404. package/dist/internal/funding/Token.js +22 -0
  405. package/dist/internal/funding/Token.js.map +1 -0
  406. package/dist/internal/funding/Transfer.d.ts +643 -0
  407. package/dist/internal/funding/Transfer.d.ts.map +1 -0
  408. package/dist/internal/funding/Transfer.js +332 -0
  409. package/dist/internal/funding/Transfer.js.map +1 -0
  410. package/dist/internal/funding/index.d.ts +13 -0
  411. package/dist/internal/funding/index.d.ts.map +1 -0
  412. package/dist/internal/funding/index.js +13 -0
  413. package/dist/internal/funding/index.js.map +1 -0
  414. package/dist/internal/funding/providers/across.d.ts +21 -0
  415. package/dist/internal/funding/providers/across.d.ts.map +1 -0
  416. package/dist/internal/funding/providers/across.js +117 -0
  417. package/dist/internal/funding/providers/across.js.map +1 -0
  418. package/dist/internal/funding/providers/relay.d.ts +46 -0
  419. package/dist/internal/funding/providers/relay.d.ts.map +1 -0
  420. package/dist/internal/funding/providers/relay.js +464 -0
  421. package/dist/internal/funding/providers/relay.js.map +1 -0
  422. package/dist/internal/funding/providers/rhino.d.ts +15 -0
  423. package/dist/internal/funding/providers/rhino.d.ts.map +1 -0
  424. package/dist/internal/funding/providers/rhino.js +116 -0
  425. package/dist/internal/funding/providers/rhino.js.map +1 -0
  426. package/dist/internal/funding/providers/squid.d.ts +19 -0
  427. package/dist/internal/funding/providers/squid.d.ts.map +1 -0
  428. package/dist/internal/funding/providers/squid.js +120 -0
  429. package/dist/internal/funding/providers/squid.js.map +1 -0
  430. package/dist/internal/funding/providers/symbiosis.d.ts +20 -0
  431. package/dist/internal/funding/providers/symbiosis.d.ts.map +1 -0
  432. package/dist/internal/funding/providers/symbiosis.js +176 -0
  433. package/dist/internal/funding/providers/symbiosis.js.map +1 -0
  434. package/dist/internal/index.d.ts +5 -1
  435. package/dist/internal/index.d.ts.map +1 -1
  436. package/dist/internal/index.js +5 -1
  437. package/dist/internal/index.js.map +1 -1
  438. package/dist/internal/webhookDestinations/url.js +61 -57
  439. package/dist/internal/webhookDestinations/url.js.map +1 -1
  440. package/dist/providers/index.d.ts +43 -0
  441. package/dist/providers/index.d.ts.map +1 -0
  442. package/dist/providers/index.js +19 -0
  443. package/dist/providers/index.js.map +1 -0
  444. package/package.json +9 -4
  445. package/src/ApiKeys.test.ts +11 -7
  446. package/src/ApiKeys.ts +37 -9
  447. package/src/App.test.ts +85 -10
  448. package/src/App.ts +224 -137
  449. package/src/Assets.ts +29 -4
  450. package/src/Client.test-d.ts +650 -30
  451. package/src/Scope.test.ts +19 -0
  452. package/src/Scope.ts +28 -11
  453. package/src/Webhooks.test.ts +25 -0
  454. package/src/Webhooks.ts +1 -1
  455. package/src/admin/App.test.ts +9 -2
  456. package/src/admin/App.ts +32 -9
  457. package/src/admin/apps/api-keys.test.ts +167 -23
  458. package/src/admin/apps/api-keys.ts +166 -28
  459. package/src/admin/apps/earn-vaults.test.ts +338 -0
  460. package/src/admin/apps/earn-vaults.ts +572 -0
  461. package/src/admin/apps/scopes.test.ts +16 -1
  462. package/src/admin/ui/plugin.ts +2 -2
  463. package/src/admin/ui/src/components/EarnVaultForm.tsx +137 -0
  464. package/src/admin/ui/src/components/MobileProfile.tsx +2 -2
  465. package/src/admin/ui/src/components/Page.tsx +1 -1
  466. package/src/admin/ui/src/components/ThemeToggle.tsx +1 -1
  467. package/src/admin/ui/src/lib/api-keys.ts +37 -7
  468. package/src/admin/ui/src/lib/client.ts +1 -1
  469. package/src/admin/ui/src/lib/config.ts +1 -1
  470. package/src/admin/ui/src/lib/early-access.ts +8 -9
  471. package/src/admin/ui/src/lib/earn-vaults.ts +207 -0
  472. package/src/admin/ui/src/lib/format.ts +13 -0
  473. package/src/admin/ui/src/lib/organizations.test.ts +14 -4
  474. package/src/admin/ui/src/lib/organizations.ts +7 -1
  475. package/src/admin/ui/src/lib/response.ts +22 -0
  476. package/src/admin/ui/src/lib/scopes.test.ts +19 -11
  477. package/src/admin/ui/src/lib/scopes.ts +28 -7
  478. package/src/admin/ui/src/lib/verified-tokens.ts +10 -9
  479. package/src/admin/ui/src/routeTree.gen.ts +70 -7
  480. package/src/admin/ui/src/router.tsx +2 -2
  481. package/src/admin/ui/src/routes/__root.tsx +9 -8
  482. package/src/admin/ui/src/routes/api-keys.tsx +475 -64
  483. package/src/admin/ui/src/routes/early-access.tsx +5 -12
  484. package/src/admin/ui/src/routes/earn.vaults.tsx +348 -0
  485. package/src/admin/ui/src/routes/earn.vaults_.$vaultId.edit.tsx +154 -0
  486. package/src/admin/ui/src/routes/earn.vaults_.new.tsx +190 -0
  487. package/src/admin/ui/src/routes/organizations.tsx +4 -7
  488. package/src/admin/ui/src/routes/organizations_.$orgId.tsx +56 -54
  489. package/src/admin/ui/src/routes/verified-tokens.tsx +4 -4
  490. package/src/admin/ui/vite.config.ts +4 -1
  491. package/src/admin/ui.generated.ts +189 -95
  492. package/src/analytics/Analytics.test.ts +69 -10
  493. package/src/analytics/Analytics.ts +20 -1
  494. package/src/analytics/tables/requestEvents.ts +79 -37
  495. package/src/apps/Zones.test.ts +33 -0
  496. package/src/apps/Zones.ts +40 -0
  497. package/src/apps/composition.test.ts +84 -1
  498. package/src/apps/data/App.test.ts +38 -9
  499. package/src/apps/data/App.ts +96 -33
  500. package/src/apps/data/FxOracle.ts +1 -1
  501. package/src/apps/data/index.ts +0 -1
  502. package/src/apps/data/routes/activities.test.ts +82 -6
  503. package/src/apps/data/routes/activities.ts +131 -71
  504. package/src/apps/data/routes/balances.test.ts +50 -37
  505. package/src/apps/data/routes/balances.ts +5 -5
  506. package/src/apps/data/routes/blocks.test.ts +2 -0
  507. package/src/apps/data/routes/coingecko.test.ts +22 -0
  508. package/src/apps/data/routes/coingecko.ts +84 -48
  509. package/src/apps/data/routes/earn.test.ts +1108 -0
  510. package/src/apps/data/routes/earn.ts +1391 -0
  511. package/src/apps/data/routes/exchanges.test.ts +82 -33
  512. package/src/apps/data/routes/exchanges.ts +842 -227
  513. package/src/apps/data/routes/fee-amm.test.ts +4 -6
  514. package/src/apps/data/routes/fee-amm.ts +69 -12
  515. package/src/apps/data/routes/funding.test.ts +2712 -221
  516. package/src/apps/data/routes/funding.ts +1604 -387
  517. package/src/apps/data/routes/indexer.test.ts +43 -34
  518. package/src/apps/data/routes/indexer.ts +19 -2
  519. package/src/apps/data/routes/receipts.test.ts +5 -3
  520. package/src/apps/data/routes/receipts.ts +13 -11
  521. package/src/apps/data/routes/rpc.test.ts +446 -28
  522. package/src/apps/data/routes/rpc.ts +243 -25
  523. package/src/apps/data/routes/tokenlist.test.ts +15 -0
  524. package/src/apps/data/routes/tokenlist.ts +88 -22
  525. package/src/apps/data/routes/tokens.ts +262 -86
  526. package/src/apps/data/routes/transactions.test.ts +2 -0
  527. package/src/apps/data/routes/transactions.ts +77 -42
  528. package/src/apps/data/routes/transfers.test.ts +166 -4
  529. package/src/apps/data/routes/transfers.ts +216 -78
  530. package/src/apps/data/routes/valuation.test.ts +62 -9
  531. package/src/apps/data/routes/valuation.ts +2 -2
  532. package/src/apps/data/routes/verified-tokens.test.ts +51 -0
  533. package/src/apps/data/routes/verified-tokens.ts +52 -15
  534. package/src/apps/data/routes/webhooks.test.ts +432 -33
  535. package/src/apps/data/routes/webhooks.ts +189 -79
  536. package/src/apps/data/routes/zones.test.ts +473 -0
  537. package/src/apps/data/routes/zones.ts +338 -0
  538. package/src/apps/docs/reference.ts +8 -6
  539. package/src/apps/index.ts +2 -1
  540. package/src/apps/management/Billing.test.ts +29 -0
  541. package/src/apps/management/Billing.ts +23 -0
  542. package/src/apps/management/Error.ts +12 -0
  543. package/src/apps/management/routes/api-keys.test.ts +5 -3
  544. package/src/apps/management/routes/api-keys.ts +2 -9
  545. package/src/apps/management/routes/invitations.ts +4 -11
  546. package/src/apps/management/routes/orgs.ts +2 -9
  547. package/src/apps/management/routes/scopes.test.ts +7 -2
  548. package/src/apps/management/routes/scopes.ts +2 -2
  549. package/src/apps/management/routes/webhooks.test.ts +6 -1
  550. package/src/apps/management/routes/webhooks.ts +15 -3
  551. package/src/apps/mpp/App.ts +276 -29
  552. package/src/apps/mpp/Mpp.test.ts +631 -26
  553. package/src/apps/mpp/Mpp.ts +0 -42
  554. package/src/apps/mpp/internal/Adapter.ts +108 -3
  555. package/src/apps/mpp/internal/Error.test.ts +33 -0
  556. package/src/apps/mpp/internal/Error.ts +44 -6
  557. package/src/apps/mpp/internal/Idempotency.test.ts +213 -0
  558. package/src/apps/mpp/internal/Idempotency.ts +59 -5
  559. package/src/apps/mpp/internal/Policy.test.ts +122 -0
  560. package/src/apps/mpp/internal/Policy.ts +98 -0
  561. package/src/apps/mpp/internal/ScreenManager.test.ts +68 -0
  562. package/src/apps/mpp/internal/ScreenManager.ts +41 -0
  563. package/src/apps/mpp/internal/Screening.ts +40 -3
  564. package/src/apps/mpp/internal/Sponsorship.ts +144 -0
  565. package/src/apps/mpp/internal/Utils.ts +30 -0
  566. package/src/apps/relay/App.test.ts +495 -64
  567. package/src/apps/relay/App.ts +234 -24
  568. package/src/apps/relay/Sponsorships.test.ts +51 -0
  569. package/src/apps/relay/Sponsorships.ts +19 -7
  570. package/src/db/Db.ts +439 -0
  571. package/src/db/Schema.ts +325 -2
  572. package/src/db/tables/earnVaults.test.ts +185 -0
  573. package/src/db/tables/earnVaults.ts +151 -0
  574. package/src/db/tables/fundingCatalog.test.ts +108 -0
  575. package/src/db/tables/fundingCatalog.ts +157 -0
  576. package/src/db/tables/fundingDepositAddresses.test.ts +580 -0
  577. package/src/db/tables/fundingDepositAddresses.ts +376 -0
  578. package/src/db/tables/fundingDeposits.test.ts +261 -0
  579. package/src/db/tables/fundingDeposits.ts +229 -0
  580. package/src/db/tables/fundingIdempotency.test.ts +182 -0
  581. package/src/db/tables/fundingIdempotency.ts +180 -0
  582. package/src/db/tables/fundingTransferEvents.ts +28 -0
  583. package/src/db/tables/fundingTransferTransactions.test.ts +69 -0
  584. package/src/db/tables/fundingTransferTransactions.ts +37 -0
  585. package/src/db/tables/fundingTransfers.test.ts +89 -0
  586. package/src/db/tables/fundingTransfers.ts +153 -0
  587. package/src/db/tables/organizations.test.ts +88 -0
  588. package/src/db/tables/organizations.ts +42 -1
  589. package/src/db/tables/projects.ts +16 -0
  590. package/src/db/tables/requestUsage.ts +23 -0
  591. package/src/db/tables/sponsoredTransactions.test.ts +52 -2
  592. package/src/db/tables/sponsoredTransactions.ts +18 -6
  593. package/src/db/tables/users.ts +16 -0
  594. package/src/db/tables/verifiedTokens.ts +19 -14
  595. package/src/db/tables/webhookSubscriptions.ts +58 -3
  596. package/src/handlers/relay.test.ts +2 -0
  597. package/src/handlers/relay.ts +95 -99
  598. package/src/internal/Auth.test.ts +48 -0
  599. package/src/internal/Auth.ts +61 -2
  600. package/src/internal/Cache.ts +13 -9
  601. package/src/internal/Cursor.test.ts +2 -2
  602. package/src/internal/Cursor.ts +1 -1
  603. package/src/internal/EarnRates.test.ts +125 -0
  604. package/src/internal/EarnRates.ts +409 -0
  605. package/src/internal/EarnVaults.test.ts +195 -0
  606. package/src/internal/EarnVaults.ts +876 -0
  607. package/src/internal/EdgeCache.test.ts +37 -5
  608. package/src/internal/EdgeCache.ts +39 -7
  609. package/src/internal/Id.ts +14 -0
  610. package/src/internal/Idempotency.test.ts +109 -0
  611. package/src/internal/Idempotency.ts +237 -0
  612. package/src/internal/Log.test-d.ts +41 -8
  613. package/src/internal/Log.test.ts +189 -8
  614. package/src/internal/Log.ts +124 -17
  615. package/src/internal/MetricSink.test.ts +244 -4
  616. package/src/internal/MetricSink.ts +51 -1
  617. package/src/internal/OpenApi.ts +3 -0
  618. package/src/internal/Provider.test.ts +17 -0
  619. package/src/internal/Provider.ts +17 -0
  620. package/src/internal/Schema.test.ts +13 -0
  621. package/src/internal/Schema.ts +41 -24
  622. package/src/internal/Store.test.ts +25 -0
  623. package/src/internal/Store.ts +46 -0
  624. package/src/internal/Tidx.local.test.ts +78 -3
  625. package/src/internal/Tidx.test.ts +212 -18
  626. package/src/internal/Tidx.ts +112 -32
  627. package/src/internal/VerifiedTokens.test.ts +15 -0
  628. package/src/internal/Viem.test.ts +170 -17
  629. package/src/internal/Viem.ts +111 -28
  630. package/src/internal/WebhookDestination.ts +25 -23
  631. package/src/internal/Webhooks.test.ts +59 -0
  632. package/src/internal/Webhooks.ts +34 -10
  633. package/src/internal/exchange/Provider.test.ts +216 -0
  634. package/src/internal/exchange/Provider.ts +326 -0
  635. package/src/internal/exchange/index.test.ts +6 -0
  636. package/src/internal/exchange/index.ts +1 -0
  637. package/src/internal/exchange/providers/uniswap.test.ts +122 -0
  638. package/src/internal/exchange/providers/uniswap.ts +682 -0
  639. package/src/internal/funding/Action.test.ts +138 -0
  640. package/src/internal/funding/Action.ts +117 -0
  641. package/src/internal/funding/Catalog.test.ts +311 -0
  642. package/src/internal/funding/Catalog.ts +347 -0
  643. package/src/internal/funding/Chain.test.ts +79 -0
  644. package/src/internal/funding/Chain.ts +120 -0
  645. package/src/internal/funding/Deposit.test.ts +26 -0
  646. package/src/internal/funding/Deposit.ts +453 -0
  647. package/src/internal/funding/DepositAddress.test.ts +18 -0
  648. package/src/internal/funding/DepositAddress.ts +312 -0
  649. package/src/internal/funding/Evidence.test.ts +297 -0
  650. package/src/internal/funding/Evidence.ts +430 -0
  651. package/src/internal/funding/Provider.test.ts +1328 -0
  652. package/src/internal/funding/Provider.ts +1796 -0
  653. package/src/internal/funding/Reconciliation.local.test.ts +504 -0
  654. package/src/internal/funding/Reconciliation.test.ts +2020 -0
  655. package/src/internal/funding/Reconciliation.ts +930 -0
  656. package/src/internal/funding/Route.test.ts +66 -0
  657. package/src/internal/funding/Route.ts +29 -0
  658. package/src/internal/funding/Subsidy.local.test.ts +152 -0
  659. package/src/internal/funding/Subsidy.test.ts +75 -0
  660. package/src/internal/funding/Subsidy.ts +260 -0
  661. package/src/internal/funding/Token.test.ts +47 -0
  662. package/src/internal/funding/Token.ts +59 -0
  663. package/src/internal/funding/Transfer.test.ts +369 -0
  664. package/src/internal/funding/Transfer.ts +522 -0
  665. package/src/internal/funding/index.test.ts +20 -0
  666. package/src/internal/funding/index.ts +12 -0
  667. package/src/internal/funding/providers/across.ts +149 -0
  668. package/src/{apps/data/FundingQuoteProviders.test.ts → internal/funding/providers/index.test.ts} +178 -157
  669. package/src/internal/funding/providers/relay.test.ts +474 -0
  670. package/src/internal/funding/providers/relay.ts +559 -0
  671. package/src/internal/funding/providers/rhino.ts +139 -0
  672. package/src/internal/funding/providers/squid.ts +151 -0
  673. package/src/internal/funding/providers/symbiosis.ts +221 -0
  674. package/src/internal/index.test.ts +5 -1
  675. package/src/internal/index.ts +5 -1
  676. package/src/internal/webhookDestinations/url.ts +49 -45
  677. package/src/providers/index.test.ts +14 -0
  678. package/src/providers/index.ts +54 -0
  679. package/dist/apps/data/FundingQuoteProviders.d.ts +0 -174
  680. package/dist/apps/data/FundingQuoteProviders.d.ts.map +0 -1
  681. package/dist/apps/data/FundingQuoteProviders.js +0 -775
  682. package/dist/apps/data/FundingQuoteProviders.js.map +0 -1
  683. package/dist/internal/FundingQuotes.d.ts +0 -864
  684. package/dist/internal/FundingQuotes.d.ts.map +0 -1
  685. package/dist/internal/FundingQuotes.js +0 -672
  686. package/dist/internal/FundingQuotes.js.map +0 -1
  687. package/src/apps/data/FundingQuoteProviders.ts +0 -1043
  688. package/src/internal/FundingQuotes.test.ts +0 -456
  689. package/src/internal/FundingQuotes.ts +0 -944
@@ -0,0 +1,453 @@
1
+ import * as z from 'zod/mini'
2
+
3
+ import type * as Db from '../../db/Db.js'
4
+ import * as FundingDepositAddresses from '../../db/tables/fundingDepositAddresses.js'
5
+ import * as FundingDeposits from '../../db/tables/fundingDeposits.js'
6
+ import * as Id from '../Id.js'
7
+ import * as Schema from '../Schema.js'
8
+ import * as Provider from './Provider.js'
9
+
10
+ /**
11
+ * Public funding deposit statuses:
12
+ *
13
+ * - `action-required`: Automatic processing stopped and requires recovery or operator action.
14
+ * - `bridging`: The provider is moving the source funds to Tempo.
15
+ * - `completed`: The full required amount reached the recipient.
16
+ * - `detected`: The provider reported a source transfer that awaits chain verification.
17
+ * - `refunded`: A verified refund reached the configured refund address.
18
+ * - `refunding`: A refund started but is not yet verified.
19
+ * - `settling`: Tempo is completing the required destination amount after provider delivery.
20
+ */
21
+ export const statuses = [
22
+ 'action-required',
23
+ 'bridging',
24
+ 'completed',
25
+ 'detected',
26
+ 'refunded',
27
+ 'refunding',
28
+ 'settling',
29
+ ] as const
30
+
31
+ /** Lifecycle status of a detected funding deposit. */
32
+ export type Status = (typeof statuses)[number]
33
+
34
+ /** Statuses that never change after verified chain evidence. */
35
+ export const terminalStatuses = ['completed', 'refunded'] as const satisfies readonly Status[]
36
+
37
+ /**
38
+ * Customer-safe codes explaining a deposit that needs attention:
39
+ *
40
+ * - `delivery_failed`: The provider or Tempo could not complete destination delivery.
41
+ * - `delivery_liquidity_unavailable`: The selected strategy cannot obtain the required destination amount.
42
+ * - `manual_recovery_required`: Automatic processing cannot safely continue.
43
+ * - `refund_failed`: The provider could not refund the source funds.
44
+ * - `source_amount_not_supported`: The source amount is outside the supported limits.
45
+ * - `source_token_mismatch`: The transfer used a token other than the configured source token.
46
+ * - `subsidy_balance_unavailable`: Tempo lacks enough pathUSD for the required subsidy.
47
+ * - `subsidy_failed`: Tempo could not deliver the required subsidy.
48
+ */
49
+ export const statusReasonCodes = [
50
+ 'delivery_failed',
51
+ 'delivery_liquidity_unavailable',
52
+ 'manual_recovery_required',
53
+ 'refund_failed',
54
+ 'source_amount_not_supported',
55
+ 'source_token_mismatch',
56
+ 'subsidy_balance_unavailable',
57
+ 'subsidy_failed',
58
+ ] as const
59
+
60
+ /** Stable customer-safe deposit status reason code. */
61
+ export type StatusReasonCode = (typeof statusReasonCodes)[number]
62
+
63
+ /** Bounded private state used by deposit reconciliation. */
64
+ export type PrivateState = Record<string, unknown>
65
+
66
+ const transitions: Record<Status, readonly Status[]> = {
67
+ 'action-required': ['bridging', 'completed', 'refunded', 'refunding', 'settling'],
68
+ bridging: ['action-required', 'completed', 'refunding', 'settling'],
69
+ completed: [],
70
+ detected: ['action-required', 'bridging', 'completed', 'refunding', 'settling'],
71
+ refunded: [],
72
+ refunding: ['action-required', 'refunded'],
73
+ settling: ['action-required', 'completed', 'refunding'],
74
+ }
75
+
76
+ /** Returns whether a deposit status is terminal. */
77
+ export function isTerminal(status: Status): boolean {
78
+ return (terminalStatuses as readonly Status[]).includes(status)
79
+ }
80
+
81
+ /** Returns whether the lifecycle allows moving between deposit statuses. */
82
+ export function canTransition(from: Status, to: Status): boolean {
83
+ return transitions[from].includes(to)
84
+ }
85
+
86
+ /** Generates a funding deposit id (`fdp_…`, lexically time-ordered). */
87
+ export function generateId(now: Date = new Date()): string {
88
+ return Id.generateSortable('fdp', now)
89
+ }
90
+
91
+ /** Zod schemas owned by the funding deposit resource. */
92
+ export namespace schema {
93
+ const transactionHashes = (description: string) =>
94
+ z
95
+ .readonly(z.array(z.string()))
96
+ .check(z.describe(description), z.meta({ examples: [[`0x${'aa'.repeat(32)}`]] }))
97
+
98
+ /** Funding deposit lifecycle status. */
99
+ export const Status = z
100
+ .enum(statuses)
101
+ .check(
102
+ z.describe('Current delivery status of the deposit.'),
103
+ z.meta({ examples: ['detected'] }),
104
+ )
105
+
106
+ /** Customer-safe explanation of a deposit status. */
107
+ export const StatusReason = z
108
+ .object({
109
+ code: z
110
+ .enum(statusReasonCodes)
111
+ .check(
112
+ z.describe('Stable machine-readable reason code.'),
113
+ z.meta({ examples: ['delivery_liquidity_unavailable'] }),
114
+ ),
115
+ message: z
116
+ .string()
117
+ .check(
118
+ z.describe('Human-readable explanation of the current status.'),
119
+ z.meta({ examples: ['The required destination amount is not currently available.'] }),
120
+ ),
121
+ })
122
+ .check(z.describe('Why a deposit needs attention or recovery.'))
123
+
124
+ /** Public fields persisted as the deposit snapshot. */
125
+ export const Snapshot = z
126
+ .object({
127
+ depositAddressId: z
128
+ .string()
129
+ .check(
130
+ z.regex(/^fda_[A-Za-z0-9_-]+$/),
131
+ z.describe('Funding deposit address that detected the transfer.'),
132
+ z.meta({ examples: ['fda_001785792000000_2ZPE2gvateYEQ0dQslgvkhjx'] }),
133
+ ),
134
+ destinationAmount: z.optional(Schema.TokenAmount),
135
+ destinationAmountRequired: z
136
+ .optional(Schema.TokenAmount)
137
+ .check(z.describe('Destination amount required for completion, when known.')),
138
+ destinationChain: Provider.schema.ChainRef,
139
+ destinationToken: Provider.schema.TokenRef,
140
+ destinationTransactionHashes: z.optional(
141
+ transactionHashes('Verified destination transaction references.'),
142
+ ),
143
+ provider: Provider.schema.ProviderRef,
144
+ recipient: z
145
+ .string()
146
+ .check(
147
+ z.regex(/^0x[0-9a-fA-F]{40}$/),
148
+ z.describe('Tempo account that receives the completed deposit.'),
149
+ z.meta({ examples: [`0x${'11'.repeat(20)}`] }),
150
+ ),
151
+ refundAddress: z
152
+ .string()
153
+ .check(
154
+ z.describe('Source-chain address that receives a refund.'),
155
+ z.meta({ examples: ['TJRabPrwbZy45sbavfcjinPJC18kjpRTv8'] }),
156
+ ),
157
+ refundAmount: z.optional(Schema.TokenAmount),
158
+ refundTransactionHashes: z.optional(
159
+ transactionHashes('Verified source-chain refund transaction references.'),
160
+ ),
161
+ sender: z
162
+ .optional(z.string())
163
+ .check(
164
+ z.describe('Observed source-chain sender, when available.'),
165
+ z.meta({ examples: ['TJRabPrwbZy45sbavfcjinPJC18kjpRTv8'] }),
166
+ ),
167
+ sourceAmount: z
168
+ .optional(Schema.TokenAmount)
169
+ .check(z.describe('Verified source amount, when source evidence is available.')),
170
+ sourceChain: Provider.schema.ChainRef,
171
+ sourceToken: Provider.schema.TokenRef,
172
+ sourceTransactionHashes: transactionHashes(
173
+ 'Provider-observed source transaction references.',
174
+ ),
175
+ })
176
+ .check(
177
+ z.describe('Public route, provider observations, and verified evidence for one deposit.'),
178
+ )
179
+
180
+ /** One detected funding deposit. */
181
+ export const FundingDeposit = z
182
+ .object({
183
+ createdAt: z
184
+ .string()
185
+ .check(
186
+ z.describe('When the deposit was first detected (ISO 8601).'),
187
+ z.meta({ examples: ['2026-08-04T00:01:00.000Z'] }),
188
+ ),
189
+ depositAddressId: Snapshot.shape.depositAddressId,
190
+ destinationAmount: Snapshot.shape.destinationAmount,
191
+ destinationAmountRequired: Snapshot.shape.destinationAmountRequired,
192
+ destinationChain: Snapshot.shape.destinationChain,
193
+ destinationToken: Snapshot.shape.destinationToken,
194
+ destinationTransactionHashes: Snapshot.shape.destinationTransactionHashes,
195
+ id: z
196
+ .string()
197
+ .check(
198
+ z.regex(/^fdp_[A-Za-z0-9_-]+$/),
199
+ z.describe('Funding deposit id (`fdp_…`).'),
200
+ z.meta({ examples: ['fdp_001785792060000_2ZPE2gvateYEQ0dQslgvkhjx'] }),
201
+ ),
202
+ provider: Snapshot.shape.provider,
203
+ recipient: Snapshot.shape.recipient,
204
+ refundAddress: Snapshot.shape.refundAddress,
205
+ refundAmount: Snapshot.shape.refundAmount,
206
+ refundTransactionHashes: Snapshot.shape.refundTransactionHashes,
207
+ sender: Snapshot.shape.sender,
208
+ sourceAmount: Snapshot.shape.sourceAmount,
209
+ sourceChain: Snapshot.shape.sourceChain,
210
+ sourceToken: Snapshot.shape.sourceToken,
211
+ sourceTransactionHashes: Snapshot.shape.sourceTransactionHashes,
212
+ sourceTransferIndex: z
213
+ .optional(z.number().check(z.int(), z.minimum(0)))
214
+ .check(
215
+ z.describe('Verified transfer position within the source transaction.'),
216
+ z.meta({ examples: [0] }),
217
+ ),
218
+ status: Status,
219
+ statusReason: z.optional(StatusReason),
220
+ updatedAt: z
221
+ .string()
222
+ .check(
223
+ z.describe('When the deposit last materially changed (ISO 8601).'),
224
+ z.meta({ examples: ['2026-08-04T00:02:00.000Z'] }),
225
+ ),
226
+ })
227
+ .check(z.describe('One detected deposit and its delivery status.'))
228
+ }
229
+
230
+ /** Stored public snapshot of a funding deposit. */
231
+ export type Snapshot = z.output<typeof schema.Snapshot>
232
+
233
+ /** Customer-safe funding deposit status reason. */
234
+ export type StatusReason = z.output<typeof schema.StatusReason>
235
+
236
+ /** A funding deposit as returned by reads. */
237
+ export type Public = z.output<typeof schema.FundingDeposit>
238
+
239
+ /** Creates a durable record for one provider-observed source transaction. */
240
+ export async function create(db: Db.Db, input: create.Input): Promise<FundingDeposits.Record> {
241
+ const now = input.now ?? new Date()
242
+ const depositAddressId = schema.Snapshot.shape.depositAddressId.parse(
243
+ input.snapshot.depositAddressId,
244
+ )
245
+ const address = await FundingDepositAddresses.get(db, depositAddressId)
246
+ if (!address) throw new DepositAddressNotFoundError(depositAddressId)
247
+ const snapshot = schema.Snapshot.parse({
248
+ ...input.snapshot,
249
+ depositAddressId: address.id,
250
+ destinationChain: address.snapshot.destinationChain,
251
+ destinationToken: address.snapshot.destinationToken,
252
+ provider: address.snapshot.provider,
253
+ recipient: address.snapshot.recipient,
254
+ refundAddress: address.snapshot.refundAddress,
255
+ sourceChain: address.snapshot.sourceChain,
256
+ sourceToken: address.snapshot.sourceToken,
257
+ sourceTransactionHashes: [input.sourceTransactionHash],
258
+ })
259
+ return FundingDeposits.insert(db, {
260
+ createdAt: now.toISOString(),
261
+ depositAddressId: snapshot.depositAddressId,
262
+ environment: address.environment,
263
+ id: input.id ?? generateId(now),
264
+ orgId: address.orgId,
265
+ projectId: address.projectId,
266
+ providerOutputAmount: input.providerOutputAmount ?? null,
267
+ providerOutputToken: address.providerOutputToken,
268
+ providerRequestId: input.providerRequestId,
269
+ providerRequestIds: [
270
+ ...new Set([input.providerRequestId, ...(input.providerRequestIds ?? [])]),
271
+ ],
272
+ providerState: input.providerState ?? null,
273
+ providerTransactionHashes: input.providerTransactionHashes ?? [],
274
+ providerTransferIndex: input.providerTransferIndex ?? 0,
275
+ retryState: input.retryState ?? null,
276
+ settlementTransaction: input.settlementTransaction ?? null,
277
+ settlementTransactionHash: input.settlementTransactionHash ?? null,
278
+ snapshot,
279
+ sourceChainId: snapshot.sourceChain.id,
280
+ sourceTransactionHash: input.sourceTransactionHash,
281
+ sourceTransferIndex: input.sourceTransferIndex ?? null,
282
+ status: 'detected',
283
+ statusReason: null,
284
+ subsidyAmount: input.subsidyAmount ?? null,
285
+ tempoGasPaid: input.tempoGasPaid ?? null,
286
+ updatedAt: now.toISOString(),
287
+ version: 1,
288
+ })
289
+ }
290
+
291
+ export declare namespace create {
292
+ /** Fields required to persist a provider-observed deposit. */
293
+ type Input = {
294
+ /** Deposit id override for deterministic tests. */
295
+ id?: string | undefined
296
+ /** Detection time override for deterministic tests. */
297
+ now?: Date | undefined
298
+ /** Provider output amount confirmed on Tempo. */
299
+ providerOutputAmount?: z.output<typeof Schema.TokenAmount> | undefined
300
+ /** Provider request that reported the source transaction. */
301
+ providerRequestId: string
302
+ /** Private provider request identifiers. */
303
+ providerRequestIds?: readonly string[] | undefined
304
+ /** Bounded private provider state. */
305
+ providerState?: PrivateState | undefined
306
+ /** Provider-leg transaction references. */
307
+ providerTransactionHashes?: readonly string[] | undefined
308
+ /** Deposit position within the provider request. */
309
+ providerTransferIndex?: number | undefined
310
+ /** Bounded private retry state. */
311
+ retryState?: PrivateState | undefined
312
+ /** Persisted settlement transaction bytes for exactly-once rebroadcast. */
313
+ settlementTransaction?: string | undefined
314
+ /** Persisted settlement transaction hash. */
315
+ settlementTransactionHash?: string | undefined
316
+ /** Public deposit snapshot. */
317
+ snapshot: Snapshot
318
+ /** Source transaction containing the deposited transfer. */
319
+ sourceTransactionHash: string
320
+ /** Verified transfer position within the source transaction. */
321
+ sourceTransferIndex?: number | undefined
322
+ /** Destination token amount supplied by Tempo. */
323
+ subsidyAmount?: z.output<typeof Schema.TokenAmount> | undefined
324
+ /** Tempo gas paid for settlement, in base units. */
325
+ tempoGasPaid?: string | undefined
326
+ }
327
+ }
328
+
329
+ /** Applies a version-guarded material deposit change. */
330
+ export async function transition(
331
+ db: Db.Db,
332
+ options: transition.Options,
333
+ ): Promise<transition.Result> {
334
+ const current = await FundingDeposits.get(db, options.id)
335
+ if (!current) return { type: 'not_found' }
336
+ if (current.version !== options.expectedVersion) return { current, type: 'stale' }
337
+ const status = options.status ?? current.status
338
+ if (status !== current.status && !canTransition(current.status, status))
339
+ return { current, type: 'invalid' }
340
+ const snapshot =
341
+ options.snapshot === undefined
342
+ ? current.snapshot
343
+ : schema.Snapshot.parse({
344
+ ...options.snapshot,
345
+ depositAddressId: current.snapshot.depositAddressId,
346
+ destinationAmountRequired:
347
+ current.snapshot.destinationAmountRequired ??
348
+ options.snapshot.destinationAmountRequired,
349
+ destinationChain: current.snapshot.destinationChain,
350
+ destinationToken: current.snapshot.destinationToken,
351
+ provider: current.snapshot.provider,
352
+ recipient: current.snapshot.recipient,
353
+ refundAddress: current.snapshot.refundAddress,
354
+ sender: current.snapshot.sender ?? options.snapshot.sender,
355
+ sourceAmount: current.snapshot.sourceAmount ?? options.snapshot.sourceAmount,
356
+ sourceChain: current.snapshot.sourceChain,
357
+ sourceToken: current.snapshot.sourceToken,
358
+ sourceTransactionHashes: current.snapshot.sourceTransactionHashes,
359
+ })
360
+
361
+ const updated = await FundingDeposits.update(db, {
362
+ expectedVersion: options.expectedVersion,
363
+ id: options.id,
364
+ providerOutputAmount: options.providerOutputAmount ?? current.providerOutputAmount,
365
+ providerRequestId: current.providerRequestId,
366
+ providerRequestIds: options.providerRequestIds ?? current.providerRequestIds,
367
+ providerState: options.providerState ?? current.providerState,
368
+ providerTransactionHashes:
369
+ options.providerTransactionHashes ?? current.providerTransactionHashes,
370
+ providerTransferIndex: current.providerTransferIndex,
371
+ retryState: options.retryState ?? current.retryState,
372
+ settlementTransaction: options.settlementTransaction ?? current.settlementTransaction,
373
+ settlementTransactionHash:
374
+ options.settlementTransactionHash ?? current.settlementTransactionHash,
375
+ snapshot,
376
+ sourceTransferIndex: current.sourceTransferIndex ?? options.sourceTransferIndex ?? null,
377
+ status,
378
+ statusReason: options.statusReason ?? (status === current.status ? current.statusReason : null),
379
+ subsidyAmount: options.subsidyAmount ?? current.subsidyAmount,
380
+ tempoGasPaid: options.tempoGasPaid ?? current.tempoGasPaid,
381
+ updatedAt: new Date().toISOString(),
382
+ version: current.version + 1,
383
+ })
384
+ if (updated) return { record: updated, type: 'applied' }
385
+ const latest = await FundingDeposits.get(db, options.id)
386
+ return latest ? { current: latest, type: 'stale' } : { type: 'not_found' }
387
+ }
388
+
389
+ export declare namespace transition {
390
+ /** Fields describing a material deposit change. */
391
+ type Options = {
392
+ /** Version that the change was computed against. */
393
+ expectedVersion: number
394
+ /** Funding deposit id (`fdp_…`). */
395
+ id: string
396
+ /** Provider output amount confirmed on Tempo. */
397
+ providerOutputAmount?: z.output<typeof Schema.TokenAmount> | undefined
398
+ /** Private provider request identifiers. */
399
+ providerRequestIds?: readonly string[] | undefined
400
+ /** Bounded private provider state. */
401
+ providerState?: PrivateState | undefined
402
+ /** Provider-leg transaction references. */
403
+ providerTransactionHashes?: readonly string[] | undefined
404
+ /** Bounded private retry state. */
405
+ retryState?: PrivateState | undefined
406
+ /** Persisted settlement transaction bytes for exactly-once rebroadcast. */
407
+ settlementTransaction?: string | undefined
408
+ /** Persisted settlement transaction hash. */
409
+ settlementTransactionHash?: string | undefined
410
+ /** Replacement public snapshot. */
411
+ snapshot?: Snapshot | undefined
412
+ /** Verified transfer position within the source transaction. */
413
+ sourceTransferIndex?: number | undefined
414
+ /** New lifecycle status. */
415
+ status?: Status | undefined
416
+ /** Customer-safe reason attached to the current status. */
417
+ statusReason?: StatusReason | undefined
418
+ /** Destination token amount supplied by Tempo. */
419
+ subsidyAmount?: z.output<typeof Schema.TokenAmount> | undefined
420
+ /** Tempo gas paid for settlement, in base units. */
421
+ tempoGasPaid?: string | undefined
422
+ }
423
+
424
+ /** Outcome of a guarded deposit transition. */
425
+ type Result =
426
+ | { record: FundingDeposits.Record; type: 'applied' }
427
+ | { current: FundingDeposits.Record; type: 'invalid' }
428
+ | { current: FundingDeposits.Record; type: 'stale' }
429
+ | { type: 'not_found' }
430
+ }
431
+
432
+ /** Serializes a stored deposit to the public read shape. */
433
+ export function toPublic(record: FundingDeposits.Record): Public {
434
+ return schema.FundingDeposit.parse({
435
+ ...record.snapshot,
436
+ createdAt: record.createdAt,
437
+ id: record.id,
438
+ ...(record.sourceTransferIndex === null
439
+ ? {}
440
+ : { sourceTransferIndex: record.sourceTransferIndex }),
441
+ status: record.status,
442
+ ...(record.statusReason === null ? {} : { statusReason: record.statusReason }),
443
+ updatedAt: record.updatedAt,
444
+ })
445
+ }
446
+
447
+ class DepositAddressNotFoundError extends Error {
448
+ override name = 'FundingDeposit.DepositAddressNotFoundError'
449
+
450
+ constructor(id: string) {
451
+ super(`Funding deposit address ${id} not found`)
452
+ }
453
+ }
@@ -0,0 +1,18 @@
1
+ import * as DepositAddress from './DepositAddress.js'
2
+
3
+ describe('generateId', () => {
4
+ test('generates a lexically time-ordered funding deposit address id', () => {
5
+ const earlier = DepositAddress.generateId(new Date('2026-01-01T00:00:00.000Z'))
6
+ const later = DepositAddress.generateId(new Date('2026-01-01T00:00:01.000Z'))
7
+ expect(earlier).toMatch(/^fda_\d{15}_[A-Za-z0-9]{24}$/)
8
+ expect(earlier < later).toBe(true)
9
+ })
10
+ })
11
+
12
+ describe('canTransition', () => {
13
+ test('allows disabling and restoring a reusable address', () => {
14
+ expect(DepositAddress.canTransition('active', 'action-required')).toBe(true)
15
+ expect(DepositAddress.canTransition('action-required', 'active')).toBe(true)
16
+ expect(DepositAddress.canTransition('active', 'active')).toBe(false)
17
+ })
18
+ })