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
@@ -70,6 +70,8 @@ export namespace schema {
70
70
  z.describe('One EIP-2930 access-list entry that predeclares an account and storage slots.'),
71
71
  )
72
72
 
73
+ const rpcAccessListItem = OpenApi.component(AccessListItem, 'RpcTransactionAccessListItem')
74
+
73
75
  // TODO(ox/zod): replace with the zod schema for the RPC `Call` in `ox/tempo`'s
74
76
  // `TxEnvelopeTempo`/`Transaction` types once ox ships a `zod` entrypoint.
75
77
  /** One call within a Tempo account-abstraction transaction (RPC format). */
@@ -100,6 +102,8 @@ export namespace schema {
100
102
  })
101
103
  .check(z.describe('One operation inside a Tempo account-abstraction transaction.'))
102
104
 
105
+ const rpcCall = OpenApi.component(Call, 'RpcTransactionCall')
106
+
103
107
  // TODO(ox/zod): replace with the zod schema for `ox/tempo`'s
104
108
  // `SignatureEnvelope.Rpc` (the secp256k1 / p256 / webAuthn / keychain union)
105
109
  // once ox ships a `zod` entrypoint.
@@ -122,6 +126,11 @@ export namespace schema {
122
126
  })
123
127
  .check(z.describe('The signature envelope exactly as returned by JSON-RPC.'))
124
128
 
129
+ const rpcSignatureEnvelope = OpenApi.component(
130
+ SignatureEnvelope,
131
+ 'RpcTransactionSignatureEnvelope',
132
+ )
133
+
125
134
  /** The verbatim JSON-RPC payloads, surfaced under each resource's `rpc` field. */
126
135
  export namespace Rpc {
127
136
  // TODO(ox/zod): replace with the zod schema for `ox/tempo`'s
@@ -135,7 +144,7 @@ export namespace schema {
135
144
  z.describe('Tempo account-abstraction authorizations attached to the transaction.'),
136
145
  ),
137
146
  accessList: z
138
- .optional(z.array(AccessListItem))
147
+ .optional(z.array(rpcAccessListItem))
139
148
  .check(
140
149
  z.describe(
141
150
  'EIP-2930 access list that predeclares accounts and storage slots for the transaction.',
@@ -165,7 +174,7 @@ export namespace schema {
165
174
  calls: z
166
175
  .optional(
167
176
  z.union([
168
- z.array(Call).check(
177
+ z.array(rpcCall).check(
169
178
  z.meta({
170
179
  examples: [[{ data: '0xdeadbeef', input: '0xdeadbeef', to: null, value: '0x0' }]],
171
180
  }),
@@ -193,9 +202,9 @@ export namespace schema {
193
202
  z.meta({ examples: ['0xbe058e1c4df8a4366a387bf595b284246a93039e'] }),
194
203
  ),
195
204
  feePayerSignature: z
196
- .nullish(SignatureEnvelope)
205
+ .nullish(rpcSignatureEnvelope)
197
206
  .check(
198
- z.describe('Signature from the account that paid the transaction fee.'),
207
+ z.describe('A signature envelope exactly as returned by JSON-RPC.'),
199
208
  z.meta({ examples: [{ type: 'secp256k1' }] }),
200
209
  ),
201
210
  feeToken: z
@@ -255,8 +264,8 @@ export namespace schema {
255
264
  .optional(Schema.Quantity)
256
265
  .check(z.describe('The `s` value from the transaction ECDSA signature.')),
257
266
  signature: z
258
- .optional(SignatureEnvelope)
259
- .check(z.describe('Signature from the sender authorizing this transaction.')),
267
+ .optional(rpcSignatureEnvelope)
268
+ .check(z.describe('A signature envelope exactly as returned by JSON-RPC.')),
260
269
  to: z
261
270
  .nullish(Schema.Address)
262
271
  .check(
@@ -294,15 +303,17 @@ export namespace schema {
294
303
  .check(z.describe('The transaction exactly as returned by JSON-RPC.'))
295
304
  }
296
305
 
306
+ const rpcTransaction = OpenApi.component(Rpc.Transaction, 'RpcTransaction')
307
+
297
308
  /** Transaction metadata with the raw RPC transaction and optional receipt. */
298
309
  export const TransactionMeta = z
299
310
  .object({
300
311
  receipt: z
301
- .optional(z.lazy(() => Receipts.schema.Receipt))
312
+ .optional(z.lazy(() => Receipts.schema.TransactionReceipt))
302
313
  .check(
303
314
  z.describe('The transaction outcome included only when you request `include=receipt`.'),
304
315
  ),
305
- rpc: Rpc.Transaction.check(z.describe('The original JSON-RPC transaction payload.')),
316
+ rpc: rpcTransaction.check(z.describe('The original JSON-RPC transaction payload.')),
306
317
  })
307
318
  .check(
308
319
  z.describe(
@@ -310,13 +321,18 @@ export namespace schema {
310
321
  ),
311
322
  )
312
323
 
324
+ const transactionMeta = OpenApi.component(TransactionMeta, 'TransactionMeta')
325
+
313
326
  /** Decoded transaction `type`; the raw `0x…` byte stays under `rpc.type`. */
314
- export const TransactionType = z
315
- .enum(['legacy', 'eip2930', 'eip1559', 'eip4844', 'eip7702', 'tempo', 'unknown'])
316
- .check(
317
- z.describe('Human-readable transaction type decoded from the raw JSON-RPC `type` byte.'),
318
- z.meta({ examples: ['eip1559'] }),
319
- )
327
+ export const TransactionType = OpenApi.component(
328
+ z
329
+ .enum(['legacy', 'eip2930', 'eip1559', 'eip4844', 'eip7702', 'tempo', 'unknown'])
330
+ .check(
331
+ z.describe('Human-readable transaction type decoded from the raw JSON-RPC `type` byte.'),
332
+ z.meta({ examples: ['eip1559'] }),
333
+ ),
334
+ 'TransactionType',
335
+ )
320
336
 
321
337
  /** One humanized call within a Tempo account-abstraction transaction. */
322
338
  export const HumanCall = z
@@ -333,6 +349,8 @@ export namespace schema {
333
349
  })
334
350
  .check(z.describe('One decoded call inside a Tempo account-abstraction transaction.'))
335
351
 
352
+ const transactionCall = OpenApi.component(HumanCall, 'TransactionCall')
353
+
336
354
  /**
337
355
  * A humanized transaction: decoded `type`, decimal-string amounts, ISO 8601
338
356
  * timestamps, and plain-number block fields. The verbatim JSON-RPC transaction
@@ -352,7 +370,7 @@ export namespace schema {
352
370
  z.meta({ examples: [23456789] }),
353
371
  ),
354
372
  calls: z
355
- .optional(z.array(HumanCall))
373
+ .optional(z.array(transactionCall))
356
374
  .check(
357
375
  z.describe('Decoded calls for Tempo account-abstraction transactions.'),
358
376
  z.meta({ examples: [[{ data: '0xdeadbeef', to: null }]] }),
@@ -405,7 +423,7 @@ export namespace schema {
405
423
  maxPriorityFeePerGas: z
406
424
  .optional(Schema.DecimalString)
407
425
  .check(z.describe('Maximum priority fee per gas for EIP-1559-style transactions.')),
408
- meta: TransactionMeta.check(
426
+ meta: transactionMeta.check(
409
427
  z.describe('The original JSON-RPC payload plus any resources requested with `include`.'),
410
428
  ),
411
429
  nonce: z
@@ -467,6 +485,8 @@ export namespace schema {
467
485
  ),
468
486
  )
469
487
 
488
+ const transaction = OpenApi.component(Transaction, 'Transaction')
489
+
470
490
  /** Schemas for the getTransaction operation. */
471
491
  export namespace getTransaction {
472
492
  /** Path parameters for transaction requests. */
@@ -505,7 +525,7 @@ export namespace schema {
505
525
  .check(z.describe('Query parameters for looking up a transaction.'))
506
526
 
507
527
  /** A humanized transaction, with the verbatim JSON-RPC payload under `rpc`. */
508
- export const Response = Transaction
528
+ export const Response = transaction
509
529
  }
510
530
 
511
531
  /** Schemas for the getTransactions (list) operation. */
@@ -567,23 +587,31 @@ export namespace schema {
567
587
  })
568
588
  .check(...Schema.pageChecks(), z.describe('Query parameters for listing transactions.'))
569
589
 
590
+ /** Response metadata requested through `include`, such as capped counts. */
591
+ export const Meta = OpenApi.component(Schema.CountMeta, 'TransactionListMeta')
592
+
570
593
  /**
571
594
  * Page of transactions. Each item reuses the humanized transaction returned
572
595
  * by `GET /transactions/:transactionHash`, so the list and detail endpoints
573
596
  * expose one identical shape. Indexed list rows omit fields the indexer does
574
597
  * not store (signatures, access list), reflected in their `rpc` payload.
575
598
  */
576
- export const Response = z
577
- .object({
578
- data: z.array(getTransaction.Response).check(z.describe('Transactions on this page.')),
579
- meta: z
580
- .optional(Schema.CountMeta)
581
- .check(
582
- z.describe('Response-level metadata requested with `include`, such as `totalCount`.'),
583
- ),
584
- nextCursor: Schema.NextCursor,
585
- })
586
- .check(z.describe('A page of transactions ordered by block number and transaction position.'))
599
+ export const Response = OpenApi.component(
600
+ z
601
+ .object({
602
+ data: z.array(getTransaction.Response).check(z.describe('Transactions on this page.')),
603
+ meta: z
604
+ .optional(Meta)
605
+ .check(
606
+ z.describe('Response-level metadata requested with `include`, such as `totalCount`.'),
607
+ ),
608
+ nextCursor: Schema.NextCursor,
609
+ })
610
+ .check(
611
+ z.describe('A page of transactions ordered by block number and transaction position.'),
612
+ ),
613
+ 'TransactionList',
614
+ )
587
615
  }
588
616
  }
589
617
  /** Creates transaction handlers. */
@@ -601,7 +629,10 @@ export function transactions() {
601
629
  'List transactions across Tempo, with filters for addresses, blocks, timestamps, fees, and status.',
602
630
  operationId: 'getTransactions',
603
631
  responses: OpenApi.responses({
604
- errors: { 502: 'Could not read transaction or token data from an upstream service.' },
632
+ errors: {
633
+ 400: { codes: ['chain_id_invalid', 'chain_id_unsupported', 'query_invalid'] },
634
+ 502: 'Could not read transaction or token data from an upstream service.',
635
+ },
605
636
  success: {
606
637
  description: 'A page of transactions.',
607
638
  schema: schema.getTransactions.Response,
@@ -687,7 +718,7 @@ export function transactions() {
687
718
  200,
688
719
  )
689
720
  } catch (cause) {
690
- return Response.upstream(c, cause)
721
+ return Response.upstream(c, cause, { page: query.page })
691
722
  }
692
723
  },
693
724
  )
@@ -707,6 +738,14 @@ export function transactions() {
707
738
  operationId: 'getTransaction',
708
739
  responses: OpenApi.responses({
709
740
  errors: {
741
+ 400: {
742
+ codes: [
743
+ 'chain_id_invalid',
744
+ 'chain_id_unsupported',
745
+ 'query_invalid',
746
+ 'transaction_invalid',
747
+ ],
748
+ },
710
749
  404: {
711
750
  description: 'No transaction was found for that hash.',
712
751
  codes: ['transaction_not_found'],
@@ -21,6 +21,427 @@ const fixed = FxOracle.from({
21
21
  }),
22
22
  })
23
23
 
24
+ describe('OpenAPI', () => {
25
+ test('publishes generator-ready transfer, activity, and valuation contracts', async () => {
26
+ const app = TestApp.create({ auth: false })
27
+ const spec = await (await app.request('/openapi.json')).json()
28
+ const operations = {
29
+ addressActivities: spec.paths['/v1/addresses/{address}/activities'].get,
30
+ addressValuation: spec.paths['/v1/addresses/{address}/valuation'].get,
31
+ transactionActivities: spec.paths['/v1/transactions/{transactionHash}/activities'].get,
32
+ transfers: spec.paths['/v1/transfers'].get,
33
+ }
34
+ const summarizeError = (
35
+ response: (typeof operations)[keyof typeof operations]['responses'][number],
36
+ ) => {
37
+ const schema = response.$ref ?? response.content?.['application/json']?.schema
38
+ if (!schema || typeof schema === 'string' || !('$ref' in schema)) return schema
39
+ const name = schema.$ref.split('/').at(-1)!
40
+ return {
41
+ codes: spec.components.schemas[name].properties.error.properties.code.enum,
42
+ schema,
43
+ }
44
+ }
45
+ const summarize = (operation: (typeof operations)[keyof typeof operations]) => ({
46
+ errors: Object.fromEntries(
47
+ [400, 401, 403, 404, 409, 429, 500, 502]
48
+ .filter((status) => operation.responses[status])
49
+ .map((status) => [status, summarizeError(operation.responses[status])]),
50
+ ),
51
+ operationId: operation.operationId,
52
+ response: operation.responses[200].content['application/json'].schema,
53
+ })
54
+ type ActivityVariant = { $ref?: string }
55
+ const activityVariants = spec.components.schemas.ActivityItem.anyOf as ActivityVariant[]
56
+ const firstActivityVariant = activityVariants[0]!.$ref!.split('/').at(-1)!
57
+
58
+ expect({
59
+ components: [
60
+ 'ActivityEntry',
61
+ 'ActivityEvent',
62
+ 'ActivityGroup',
63
+ 'ActivityItem',
64
+ 'ActivityMeta',
65
+ 'ActivityToken',
66
+ 'ActivityTransfer',
67
+ 'ActivityValuedAmount',
68
+ 'AddressActivityList',
69
+ 'AddressValuation',
70
+ 'TokenTransfer',
71
+ 'TokenTransferList',
72
+ 'TokenTransferListMeta',
73
+ 'TokenTransferToken',
74
+ 'TransactionActivityList',
75
+ 'ValuationPricing',
76
+ 'ValuationValue',
77
+ 'ValuedTokenAmount',
78
+ ].filter((name) => spec.components.schemas[name]),
79
+ descriptions: {
80
+ activityValuedAmount: spec.components.schemas.ActivityValuedAmount.description,
81
+ valuedTokenAmount: spec.components.schemas.ValuedTokenAmount.description,
82
+ },
83
+ formats: {
84
+ activityTransfer: spec.components.schemas.ActivityTransfer.properties.timestamp.format,
85
+ pricing: spec.components.schemas.ValuationPricing.properties.asOf.format,
86
+ transfer: spec.components.schemas.TokenTransfer.properties.timestamp.format,
87
+ },
88
+ models: {
89
+ activityEntry: spec.components.schemas.ActivityEntry.anyOf,
90
+ activityGroupItems:
91
+ spec.components.schemas.ActivityGroup.properties.data.properties.items.items,
92
+ activityItemEvents: spec.components.schemas[firstActivityVariant].properties.events.items,
93
+ activityItemVariants: {
94
+ count: activityVariants.length,
95
+ first: activityVariants[0],
96
+ last: activityVariants.at(-1),
97
+ referenced: activityVariants.every((variant) => variant.$ref),
98
+ stableName:
99
+ spec.components.schemas.ActivityItemSharesRedemptionRequested.properties.type.const,
100
+ },
101
+ activityList: spec.components.schemas.AddressActivityList.properties.data.items,
102
+ activityListMeta: spec.components.schemas.AddressActivityList.properties.meta,
103
+ activityTransferSourceAmount:
104
+ spec.components.schemas.ActivityTransfer.properties.sourceAmount,
105
+ activityTransferSourceToken:
106
+ spec.components.schemas.ActivityTransfer.properties.sourceToken,
107
+ transactionActivityList:
108
+ spec.components.schemas.TransactionActivityList.properties.data.items,
109
+ transferDestinationAmount:
110
+ spec.components.schemas.TokenTransfer.properties.destinationAmount,
111
+ transferDestinationToken: spec.components.schemas.TokenTransfer.properties.destinationToken,
112
+ transferList: spec.components.schemas.TokenTransferList.properties.data.items,
113
+ transferListMeta: spec.components.schemas.TokenTransferList.properties.meta,
114
+ transferSourceAmount: spec.components.schemas.TokenTransfer.properties.sourceAmount,
115
+ transferSourceToken: spec.components.schemas.TokenTransfer.properties.sourceToken,
116
+ valuationPricing: spec.components.schemas.AddressValuation.properties.pricing,
117
+ },
118
+ operations: Object.fromEntries(
119
+ Object.entries(operations).map(([name, operation]) => [name, summarize(operation)]),
120
+ ),
121
+ }).toMatchInlineSnapshot(`
122
+ {
123
+ "components": [
124
+ "ActivityEntry",
125
+ "ActivityEvent",
126
+ "ActivityGroup",
127
+ "ActivityItem",
128
+ "ActivityMeta",
129
+ "ActivityToken",
130
+ "ActivityTransfer",
131
+ "ActivityValuedAmount",
132
+ "AddressActivityList",
133
+ "AddressValuation",
134
+ "TokenTransfer",
135
+ "TokenTransferList",
136
+ "TokenTransferListMeta",
137
+ "TokenTransferToken",
138
+ "TransactionActivityList",
139
+ "ValuationPricing",
140
+ "ValuationValue",
141
+ "ValuedTokenAmount",
142
+ ],
143
+ "descriptions": {
144
+ "activityValuedAmount": "A token amount carrying its nominal value in the requested denomination.",
145
+ "valuedTokenAmount": "A token amount carrying its nominal value in the requested denomination.",
146
+ },
147
+ "formats": {
148
+ "activityTransfer": "date-time",
149
+ "pricing": "date-time",
150
+ "transfer": "date-time",
151
+ },
152
+ "models": {
153
+ "activityEntry": [
154
+ {
155
+ "$ref": "#/components/schemas/ActivityItem",
156
+ },
157
+ {
158
+ "$ref": "#/components/schemas/ActivityGroup",
159
+ },
160
+ ],
161
+ "activityGroupItems": {
162
+ "$ref": "#/components/schemas/ActivityItem",
163
+ },
164
+ "activityItemEvents": {
165
+ "$ref": "#/components/schemas/ActivityEvent",
166
+ },
167
+ "activityItemVariants": {
168
+ "count": 65,
169
+ "first": {
170
+ "$ref": "#/components/schemas/ActivityItemAssetsDeposited",
171
+ },
172
+ "last": {
173
+ "$ref": "#/components/schemas/ActivityItemUnknown",
174
+ },
175
+ "referenced": true,
176
+ "stableName": "shares-redemption-requested",
177
+ },
178
+ "activityList": {
179
+ "$ref": "#/components/schemas/ActivityEntry",
180
+ },
181
+ "activityListMeta": {
182
+ "$ref": "#/components/schemas/ActivityMeta",
183
+ },
184
+ "activityTransferSourceAmount": {
185
+ "$ref": "#/components/schemas/ActivityValuedAmount",
186
+ },
187
+ "activityTransferSourceToken": {
188
+ "$ref": "#/components/schemas/ActivityToken",
189
+ },
190
+ "transactionActivityList": {
191
+ "$ref": "#/components/schemas/ActivityItem",
192
+ },
193
+ "transferDestinationAmount": {
194
+ "$ref": "#/components/schemas/ValuedTokenAmount",
195
+ },
196
+ "transferDestinationToken": {
197
+ "$ref": "#/components/schemas/TokenTransferToken",
198
+ },
199
+ "transferList": {
200
+ "$ref": "#/components/schemas/TokenTransfer",
201
+ },
202
+ "transferListMeta": {
203
+ "$ref": "#/components/schemas/TokenTransferListMeta",
204
+ },
205
+ "transferSourceAmount": {
206
+ "$ref": "#/components/schemas/ValuedTokenAmount",
207
+ },
208
+ "transferSourceToken": {
209
+ "$ref": "#/components/schemas/TokenTransferToken",
210
+ },
211
+ "valuationPricing": {
212
+ "anyOf": [
213
+ {
214
+ "$ref": "#/components/schemas/ValuationPricing",
215
+ },
216
+ {
217
+ "type": "null",
218
+ },
219
+ ],
220
+ "description": "Rate provenance, or \`null\` when every valued holding was already denominated in \`currency\`.",
221
+ },
222
+ },
223
+ "operations": {
224
+ "addressActivities": {
225
+ "errors": {
226
+ "400": {
227
+ "codes": [
228
+ "address_invalid",
229
+ "api_key_malformed",
230
+ "chain_id_invalid",
231
+ "chain_id_unsupported",
232
+ "query_invalid",
233
+ ],
234
+ "schema": {
235
+ "$ref": "#/components/schemas/AddressInvalidOrApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidError",
236
+ },
237
+ },
238
+ "401": {
239
+ "codes": [
240
+ "api_key_invalid",
241
+ "api_key_missing",
242
+ "unauthorized",
243
+ ],
244
+ "schema": {
245
+ "$ref": "#/components/schemas/AuthenticationError",
246
+ },
247
+ },
248
+ "403": {
249
+ "codes": [
250
+ "api_key_forbidden",
251
+ "api_key_ip_forbidden",
252
+ "forbidden",
253
+ ],
254
+ "schema": {
255
+ "$ref": "#/components/schemas/ForbiddenError",
256
+ },
257
+ },
258
+ "429": "#/components/responses/RateLimited",
259
+ "500": "#/components/responses/InternalError",
260
+ "502": {
261
+ "codes": [
262
+ "upstream_error",
263
+ ],
264
+ "schema": {
265
+ "$ref": "#/components/schemas/UpstreamError",
266
+ },
267
+ },
268
+ },
269
+ "operationId": "getAddressActivities",
270
+ "response": {
271
+ "$ref": "#/components/schemas/AddressActivityList",
272
+ },
273
+ },
274
+ "addressValuation": {
275
+ "errors": {
276
+ "400": {
277
+ "codes": [
278
+ "address_invalid",
279
+ "api_key_malformed",
280
+ "chain_id_invalid",
281
+ "chain_id_unsupported",
282
+ "query_invalid",
283
+ ],
284
+ "schema": {
285
+ "$ref": "#/components/schemas/AddressInvalidOrApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidError",
286
+ },
287
+ },
288
+ "401": {
289
+ "codes": [
290
+ "api_key_invalid",
291
+ "api_key_missing",
292
+ "unauthorized",
293
+ ],
294
+ "schema": {
295
+ "$ref": "#/components/schemas/AuthenticationError",
296
+ },
297
+ },
298
+ "403": {
299
+ "codes": [
300
+ "api_key_forbidden",
301
+ "api_key_ip_forbidden",
302
+ "forbidden",
303
+ ],
304
+ "schema": {
305
+ "$ref": "#/components/schemas/ForbiddenError",
306
+ },
307
+ },
308
+ "429": "#/components/responses/RateLimited",
309
+ "500": "#/components/responses/InternalError",
310
+ "502": {
311
+ "codes": [
312
+ "upstream_error",
313
+ ],
314
+ "schema": {
315
+ "$ref": "#/components/schemas/UpstreamError",
316
+ },
317
+ },
318
+ },
319
+ "operationId": "getAddressValuation",
320
+ "response": {
321
+ "$ref": "#/components/schemas/AddressValuation",
322
+ },
323
+ },
324
+ "transactionActivities": {
325
+ "errors": {
326
+ "400": {
327
+ "codes": [
328
+ "api_key_malformed",
329
+ "chain_id_invalid",
330
+ "chain_id_unsupported",
331
+ "query_invalid",
332
+ "transaction_invalid",
333
+ ],
334
+ "schema": {
335
+ "$ref": "#/components/schemas/ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidOrTransactionInvalidError",
336
+ },
337
+ },
338
+ "401": {
339
+ "codes": [
340
+ "api_key_invalid",
341
+ "api_key_missing",
342
+ "unauthorized",
343
+ ],
344
+ "schema": {
345
+ "$ref": "#/components/schemas/AuthenticationError",
346
+ },
347
+ },
348
+ "403": {
349
+ "codes": [
350
+ "api_key_forbidden",
351
+ "api_key_ip_forbidden",
352
+ "forbidden",
353
+ ],
354
+ "schema": {
355
+ "$ref": "#/components/schemas/ForbiddenError",
356
+ },
357
+ },
358
+ "404": {
359
+ "codes": [
360
+ "transaction_not_found",
361
+ ],
362
+ "schema": {
363
+ "$ref": "#/components/schemas/TransactionNotFoundError",
364
+ },
365
+ },
366
+ "409": {
367
+ "codes": [
368
+ "transaction_ambiguous",
369
+ ],
370
+ "schema": {
371
+ "$ref": "#/components/schemas/TransactionAmbiguousError",
372
+ },
373
+ },
374
+ "429": "#/components/responses/RateLimited",
375
+ "500": "#/components/responses/InternalError",
376
+ "502": {
377
+ "codes": [
378
+ "upstream_error",
379
+ ],
380
+ "schema": {
381
+ "$ref": "#/components/schemas/UpstreamError",
382
+ },
383
+ },
384
+ },
385
+ "operationId": "getTransactionActivities",
386
+ "response": {
387
+ "$ref": "#/components/schemas/TransactionActivityList",
388
+ },
389
+ },
390
+ "transfers": {
391
+ "errors": {
392
+ "400": {
393
+ "codes": [
394
+ "api_key_malformed",
395
+ "chain_id_invalid",
396
+ "chain_id_unsupported",
397
+ "query_invalid",
398
+ ],
399
+ "schema": {
400
+ "$ref": "#/components/schemas/ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidError",
401
+ },
402
+ },
403
+ "401": {
404
+ "codes": [
405
+ "api_key_invalid",
406
+ "api_key_missing",
407
+ "unauthorized",
408
+ ],
409
+ "schema": {
410
+ "$ref": "#/components/schemas/AuthenticationError",
411
+ },
412
+ },
413
+ "403": {
414
+ "codes": [
415
+ "api_key_forbidden",
416
+ "api_key_ip_forbidden",
417
+ "forbidden",
418
+ ],
419
+ "schema": {
420
+ "$ref": "#/components/schemas/ForbiddenError",
421
+ },
422
+ },
423
+ "429": "#/components/responses/RateLimited",
424
+ "500": "#/components/responses/InternalError",
425
+ "502": {
426
+ "codes": [
427
+ "upstream_error",
428
+ ],
429
+ "schema": {
430
+ "$ref": "#/components/schemas/UpstreamError",
431
+ },
432
+ },
433
+ },
434
+ "operationId": "getTransfers",
435
+ "response": {
436
+ "$ref": "#/components/schemas/TokenTransferList",
437
+ },
438
+ },
439
+ },
440
+ }
441
+ `)
442
+ })
443
+ })
444
+
24
445
  describe('GET /transfers', () => {
25
446
  test('parses granular token includes', () => {
26
447
  expect(
@@ -1058,16 +1479,16 @@ describe('GET /transfers', () => {
1058
1479
  expect(empty.data).toEqual([])
1059
1480
  })
1060
1481
 
1061
- test('keeps the largest positional window within the indexer row limit', async () => {
1482
+ test('accepts the largest positional window', async () => {
1062
1483
  const client = TestApp.client()
1063
1484
  const response = await client.v1.transfers.$get(
1064
- { query: { limit: '200', order: 'desc', page: '50' } },
1485
+ { query: { limit: '50', order: 'desc', page: '10' } },
1065
1486
  TestApp.auth,
1066
1487
  )
1067
1488
  const page = await TestApp.json(response, Transfers.schema.getTransfers.Response)
1068
1489
 
1069
1490
  expect(response.status).toBe(200)
1070
- expect(page.data.length).toBeLessThanOrEqual(200)
1491
+ expect(page.data.length).toBeLessThanOrEqual(50)
1071
1492
  })
1072
1493
  })
1073
1494