tapimo 0.2.0 → 0.4.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 (362) hide show
  1. package/README.md +36 -8
  2. package/dist/ApiKey.d.ts +1 -0
  3. package/dist/ApiKey.d.ts.map +1 -1
  4. package/dist/ApiKey.js +5 -2
  5. package/dist/ApiKey.js.map +1 -1
  6. package/dist/ApiKeys.d.ts +28 -1
  7. package/dist/ApiKeys.d.ts.map +1 -1
  8. package/dist/ApiKeys.js +34 -1
  9. package/dist/ApiKeys.js.map +1 -1
  10. package/dist/App.d.ts +7532 -4850
  11. package/dist/App.d.ts.map +1 -1
  12. package/dist/App.js +11 -3
  13. package/dist/App.js.map +1 -1
  14. package/dist/Scope.d.ts +11 -2
  15. package/dist/Scope.d.ts.map +1 -1
  16. package/dist/Scope.js +14 -3
  17. package/dist/Scope.js.map +1 -1
  18. package/dist/admin/App.d.ts +63 -53
  19. package/dist/admin/App.d.ts.map +1 -1
  20. package/dist/admin/apps/api-keys.d.ts +7 -0
  21. package/dist/admin/apps/api-keys.d.ts.map +1 -1
  22. package/dist/admin/apps/scopes.d.ts +8 -0
  23. package/dist/admin/apps/scopes.d.ts.map +1 -1
  24. package/dist/admin/apps/scopes.js +3 -0
  25. package/dist/admin/apps/scopes.js.map +1 -1
  26. package/dist/admin/apps/verified-tokens.d.ts +57 -57
  27. package/dist/admin/ui.generated.d.ts +1 -1
  28. package/dist/admin/ui.generated.js +13 -13
  29. package/dist/admin/ui.generated.js.map +1 -1
  30. package/dist/analytics/Analytics.d.ts +151 -0
  31. package/dist/analytics/Analytics.d.ts.map +1 -0
  32. package/dist/analytics/Analytics.js +212 -0
  33. package/dist/analytics/Analytics.js.map +1 -0
  34. package/dist/analytics/tables/requestEvents.d.ts +215 -0
  35. package/dist/analytics/tables/requestEvents.d.ts.map +1 -0
  36. package/dist/analytics/tables/requestEvents.js +264 -0
  37. package/dist/analytics/tables/requestEvents.js.map +1 -0
  38. package/dist/apps/data/App.d.ts +1049 -624
  39. package/dist/apps/data/App.d.ts.map +1 -1
  40. package/dist/apps/data/App.js +36 -0
  41. package/dist/apps/data/App.js.map +1 -1
  42. package/dist/apps/data/FundingRouteProviders.d.ts +54 -0
  43. package/dist/apps/data/FundingRouteProviders.d.ts.map +1 -0
  44. package/dist/apps/data/FundingRouteProviders.js +355 -0
  45. package/dist/apps/data/FundingRouteProviders.js.map +1 -0
  46. package/dist/apps/data/index.d.ts +1 -0
  47. package/dist/apps/data/index.d.ts.map +1 -1
  48. package/dist/apps/data/index.js +1 -0
  49. package/dist/apps/data/index.js.map +1 -1
  50. package/dist/apps/data/routes/balances.d.ts +45 -45
  51. package/dist/apps/data/routes/coingecko.d.ts +176 -176
  52. package/dist/apps/data/routes/exchanges.d.ts +455 -455
  53. package/dist/apps/data/routes/fee-amm.d.ts +101 -101
  54. package/dist/apps/data/routes/funding.d.ts +843 -0
  55. package/dist/apps/data/routes/funding.d.ts.map +1 -0
  56. package/dist/apps/data/routes/funding.js +443 -0
  57. package/dist/apps/data/routes/funding.js.map +1 -0
  58. package/dist/apps/data/routes/indexer.d.ts +5 -5
  59. package/dist/apps/data/routes/receipts.d.ts.map +1 -1
  60. package/dist/apps/data/routes/receipts.js +2 -8
  61. package/dist/apps/data/routes/receipts.js.map +1 -1
  62. package/dist/apps/data/routes/rpc.d.ts +29 -36
  63. package/dist/apps/data/routes/rpc.d.ts.map +1 -1
  64. package/dist/apps/data/routes/rpc.js +29 -1
  65. package/dist/apps/data/routes/rpc.js.map +1 -1
  66. package/dist/apps/data/routes/tokenlist.d.ts +36 -36
  67. package/dist/apps/data/routes/transfers.d.ts +56 -56
  68. package/dist/apps/data/routes/verified-tokens.d.ts +36 -36
  69. package/dist/apps/data/routes/webhooks.d.ts +45 -45
  70. package/dist/apps/data/routes/webhooks.d.ts.map +1 -1
  71. package/dist/apps/data/routes/webhooks.js +8 -8
  72. package/dist/apps/data/routes/webhooks.js.map +1 -1
  73. package/dist/apps/docs/App.d.ts +5 -3
  74. package/dist/apps/docs/App.d.ts.map +1 -1
  75. package/dist/apps/docs/App.js +28 -96
  76. package/dist/apps/docs/App.js.map +1 -1
  77. package/dist/apps/docs/reference.d.ts +21 -0
  78. package/dist/apps/docs/reference.d.ts.map +1 -0
  79. package/dist/apps/docs/reference.js +112 -0
  80. package/dist/apps/docs/reference.js.map +1 -0
  81. package/dist/apps/index.d.ts +3 -2
  82. package/dist/apps/index.d.ts.map +1 -1
  83. package/dist/apps/index.js +3 -2
  84. package/dist/apps/index.js.map +1 -1
  85. package/dist/apps/{platform → management}/App.d.ts +3015 -738
  86. package/dist/apps/management/App.d.ts.map +1 -0
  87. package/dist/apps/{platform → management}/App.js +20 -10
  88. package/dist/apps/management/App.js.map +1 -0
  89. package/dist/apps/management/Billing.d.ts +279 -0
  90. package/dist/apps/management/Billing.d.ts.map +1 -0
  91. package/dist/apps/management/Billing.js +477 -0
  92. package/dist/apps/management/Billing.js.map +1 -0
  93. package/dist/apps/management/index.d.ts +3 -0
  94. package/dist/apps/management/index.d.ts.map +1 -0
  95. package/dist/apps/management/index.js +3 -0
  96. package/dist/apps/management/index.js.map +1 -0
  97. package/dist/apps/{platform → management}/routes/api-keys.d.ts +341 -49
  98. package/dist/apps/management/routes/api-keys.d.ts.map +1 -0
  99. package/dist/apps/{platform → management}/routes/api-keys.js +116 -14
  100. package/dist/apps/management/routes/api-keys.js.map +1 -0
  101. package/dist/apps/management/routes/billing.d.ts +1520 -0
  102. package/dist/apps/management/routes/billing.d.ts.map +1 -0
  103. package/dist/apps/management/routes/billing.js +795 -0
  104. package/dist/apps/management/routes/billing.js.map +1 -0
  105. package/dist/apps/{platform → management}/routes/invitations.d.ts +202 -84
  106. package/dist/apps/management/routes/invitations.d.ts.map +1 -0
  107. package/dist/apps/{platform → management}/routes/invitations.js +59 -1
  108. package/dist/apps/management/routes/invitations.js.map +1 -0
  109. package/dist/apps/{platform → management}/routes/me.d.ts +17 -17
  110. package/dist/apps/management/routes/me.d.ts.map +1 -0
  111. package/dist/apps/management/routes/me.js.map +1 -0
  112. package/dist/apps/management/routes/members.d.ts.map +1 -0
  113. package/dist/apps/management/routes/members.js.map +1 -0
  114. package/dist/apps/{platform → management}/routes/orgs.d.ts +50 -36
  115. package/dist/apps/management/routes/orgs.d.ts.map +1 -0
  116. package/dist/apps/{platform → management}/routes/orgs.js +14 -3
  117. package/dist/apps/management/routes/orgs.js.map +1 -0
  118. package/dist/apps/{platform → management}/routes/projects.d.ts +97 -97
  119. package/dist/apps/{platform → management}/routes/projects.d.ts.map +1 -1
  120. package/dist/apps/management/routes/projects.js.map +1 -0
  121. package/dist/apps/management/routes/scopes.d.ts +107 -0
  122. package/dist/apps/management/routes/scopes.d.ts.map +1 -0
  123. package/dist/apps/management/routes/scopes.js +66 -0
  124. package/dist/apps/management/routes/scopes.js.map +1 -0
  125. package/dist/apps/management/routes/usage.d.ts +588 -0
  126. package/dist/apps/management/routes/usage.d.ts.map +1 -0
  127. package/dist/apps/management/routes/usage.js +391 -0
  128. package/dist/apps/management/routes/usage.js.map +1 -0
  129. package/dist/apps/mcp.d.ts +76 -0
  130. package/dist/apps/mcp.d.ts.map +1 -0
  131. package/dist/apps/mcp.js +188 -0
  132. package/dist/apps/mcp.js.map +1 -0
  133. package/dist/apps/relay/App.d.ts +4 -1
  134. package/dist/apps/relay/App.d.ts.map +1 -1
  135. package/dist/apps/relay/App.js +118 -10
  136. package/dist/apps/relay/App.js.map +1 -1
  137. package/dist/apps/relay/Sponsorships.d.ts.map +1 -1
  138. package/dist/apps/relay/Sponsorships.js +2 -1
  139. package/dist/apps/relay/Sponsorships.js.map +1 -1
  140. package/dist/cli/Cli.d.ts +8 -1
  141. package/dist/cli/Cli.d.ts.map +1 -1
  142. package/dist/cli/Cli.js +11 -3
  143. package/dist/cli/Cli.js.map +1 -1
  144. package/dist/cli/commands/admin.d.ts +4 -0
  145. package/dist/cli/commands/admin.d.ts.map +1 -1
  146. package/dist/cli/commands/admin.js +80 -1
  147. package/dist/cli/commands/admin.js.map +1 -1
  148. package/dist/db/Db.d.ts +7 -0
  149. package/dist/db/Db.d.ts.map +1 -1
  150. package/dist/db/Db.js +126 -0
  151. package/dist/db/Db.js.map +1 -1
  152. package/dist/db/Schema.d.ts +79 -0
  153. package/dist/db/Schema.d.ts.map +1 -1
  154. package/dist/db/Schema.js +88 -2
  155. package/dist/db/Schema.js.map +1 -1
  156. package/dist/db/tables/billingSettings.d.ts +55 -0
  157. package/dist/db/tables/billingSettings.d.ts.map +1 -0
  158. package/dist/db/tables/billingSettings.js +70 -0
  159. package/dist/db/tables/billingSettings.js.map +1 -0
  160. package/dist/db/tables/invitations.js +2 -2
  161. package/dist/db/tables/invitations.js.map +1 -1
  162. package/dist/db/tables/organizations.d.ts +6 -2
  163. package/dist/db/tables/organizations.d.ts.map +1 -1
  164. package/dist/db/tables/organizations.js +10 -4
  165. package/dist/db/tables/organizations.js.map +1 -1
  166. package/dist/db/tables/projects.js +2 -2
  167. package/dist/db/tables/projects.js.map +1 -1
  168. package/dist/db/tables/requestUsage.d.ts +121 -0
  169. package/dist/db/tables/requestUsage.d.ts.map +1 -0
  170. package/dist/db/tables/requestUsage.js +150 -0
  171. package/dist/db/tables/requestUsage.js.map +1 -0
  172. package/dist/db/tables/sponsoredTransactions.d.ts +119 -0
  173. package/dist/db/tables/sponsoredTransactions.d.ts.map +1 -1
  174. package/dist/db/tables/sponsoredTransactions.js +155 -2
  175. package/dist/db/tables/sponsoredTransactions.js.map +1 -1
  176. package/dist/db/tables/stripeCustomers.d.ts +81 -0
  177. package/dist/db/tables/stripeCustomers.d.ts.map +1 -0
  178. package/dist/db/tables/stripeCustomers.js +120 -0
  179. package/dist/db/tables/stripeCustomers.js.map +1 -0
  180. package/dist/db/tables/users.js +2 -2
  181. package/dist/db/tables/users.js.map +1 -1
  182. package/dist/handlers/internal/sponsorship.d.ts +5 -2
  183. package/dist/handlers/internal/sponsorship.d.ts.map +1 -1
  184. package/dist/handlers/internal/sponsorship.js +19 -5
  185. package/dist/handlers/internal/sponsorship.js.map +1 -1
  186. package/dist/handlers/internal/utils.d.ts +10 -3
  187. package/dist/handlers/internal/utils.d.ts.map +1 -1
  188. package/dist/handlers/internal/utils.js +14 -6
  189. package/dist/handlers/internal/utils.js.map +1 -1
  190. package/dist/index.d.ts +1 -0
  191. package/dist/index.d.ts.map +1 -1
  192. package/dist/index.js +1 -0
  193. package/dist/index.js.map +1 -1
  194. package/dist/internal/Auth.d.ts +18 -4
  195. package/dist/internal/Auth.d.ts.map +1 -1
  196. package/dist/internal/Auth.js +149 -77
  197. package/dist/internal/Auth.js.map +1 -1
  198. package/dist/internal/Cache.d.ts.map +1 -1
  199. package/dist/internal/Cache.js +4 -1
  200. package/dist/internal/Cache.js.map +1 -1
  201. package/dist/internal/EdgeCache.d.ts +10 -0
  202. package/dist/internal/EdgeCache.d.ts.map +1 -1
  203. package/dist/internal/EdgeCache.js +39 -8
  204. package/dist/internal/EdgeCache.js.map +1 -1
  205. package/dist/internal/Fees.d.ts +27 -0
  206. package/dist/internal/Fees.d.ts.map +1 -0
  207. package/dist/internal/Fees.js +48 -0
  208. package/dist/internal/Fees.js.map +1 -0
  209. package/dist/internal/FundingRoutes.d.ts +915 -0
  210. package/dist/internal/FundingRoutes.d.ts.map +1 -0
  211. package/dist/internal/FundingRoutes.js +625 -0
  212. package/dist/internal/FundingRoutes.js.map +1 -0
  213. package/dist/internal/Id.d.ts +15 -0
  214. package/dist/internal/Id.d.ts.map +1 -0
  215. package/dist/internal/Id.js +22 -0
  216. package/dist/internal/Id.js.map +1 -0
  217. package/dist/internal/Log.d.ts +2 -0
  218. package/dist/internal/Log.d.ts.map +1 -1
  219. package/dist/internal/Log.js +3 -0
  220. package/dist/internal/Log.js.map +1 -1
  221. package/dist/internal/OpenApi.d.ts +10 -1
  222. package/dist/internal/OpenApi.d.ts.map +1 -1
  223. package/dist/internal/OpenApi.js +8 -1
  224. package/dist/internal/OpenApi.js.map +1 -1
  225. package/dist/internal/RateLimit.d.ts +25 -0
  226. package/dist/internal/RateLimit.d.ts.map +1 -1
  227. package/dist/internal/RateLimit.js +51 -0
  228. package/dist/internal/RateLimit.js.map +1 -1
  229. package/dist/internal/Response.d.ts +1 -1
  230. package/dist/internal/Response.d.ts.map +1 -1
  231. package/dist/internal/Schema.d.ts +8 -0
  232. package/dist/internal/Schema.d.ts.map +1 -1
  233. package/dist/internal/Schema.js +7 -0
  234. package/dist/internal/Schema.js.map +1 -1
  235. package/dist/internal/Webhooks.d.ts.map +1 -1
  236. package/dist/internal/Webhooks.js +3 -3
  237. package/dist/internal/Webhooks.js.map +1 -1
  238. package/package.json +8 -7
  239. package/src/ApiKey.ts +9 -2
  240. package/src/ApiKeys.test.ts +51 -0
  241. package/src/ApiKeys.ts +50 -1
  242. package/src/App.test.ts +33 -86718
  243. package/src/App.ts +26 -8
  244. package/src/Client.test-d.ts +353 -2
  245. package/src/Scope.ts +16 -3
  246. package/src/admin/apps/scopes.test.ts +6 -0
  247. package/src/admin/apps/scopes.ts +3 -0
  248. package/src/admin/ui/src/components/Page.tsx +2 -3
  249. package/src/admin/ui/src/routes/__root.tsx +2 -2
  250. package/src/admin/ui/src/routes/api-keys.tsx +2 -2
  251. package/src/admin/ui.generated.ts +13 -13
  252. package/src/analytics/Analytics.test.ts +527 -0
  253. package/src/analytics/Analytics.ts +318 -0
  254. package/src/analytics/tables/requestEvents.ts +523 -0
  255. package/src/apps/composition.test.ts +26 -13
  256. package/src/apps/data/App.test.ts +72 -0
  257. package/src/apps/data/App.ts +37 -0
  258. package/src/apps/data/FundingRouteProviders.test.ts +281 -0
  259. package/src/apps/data/FundingRouteProviders.ts +459 -0
  260. package/src/apps/data/index.ts +1 -0
  261. package/src/apps/data/routes/funding.test.ts +314 -0
  262. package/src/apps/data/routes/funding.ts +698 -0
  263. package/src/apps/data/routes/receipts.ts +2 -9
  264. package/src/apps/data/routes/rpc.test.ts +78 -2
  265. package/src/apps/data/routes/rpc.ts +31 -1
  266. package/src/apps/data/routes/webhooks.test.ts +1 -1
  267. package/src/apps/data/routes/webhooks.ts +11 -8
  268. package/src/apps/docs/App.ts +30 -101
  269. package/src/apps/docs/reference.ts +132 -0
  270. package/src/apps/index.ts +3 -2
  271. package/src/apps/{platform → management}/App.ts +56 -17
  272. package/src/apps/management/Billing.test.ts +530 -0
  273. package/src/apps/management/Billing.ts +682 -0
  274. package/src/apps/management/index.ts +2 -0
  275. package/src/apps/{platform → management}/routes/api-keys.test.ts +172 -9
  276. package/src/apps/{platform → management}/routes/api-keys.ts +137 -21
  277. package/src/apps/management/routes/billing.test.ts +1100 -0
  278. package/src/apps/management/routes/billing.ts +966 -0
  279. package/src/apps/{platform → management}/routes/invitations.test.ts +55 -7
  280. package/src/apps/{platform → management}/routes/invitations.ts +69 -1
  281. package/src/apps/management/routes/me.test.ts +351 -0
  282. package/src/apps/{platform → management}/routes/orgs.ts +26 -4
  283. package/src/apps/management/routes/scopes.test.ts +29 -0
  284. package/src/apps/management/routes/scopes.ts +85 -0
  285. package/src/apps/management/routes/usage.test.ts +422 -0
  286. package/src/apps/management/routes/usage.ts +527 -0
  287. package/src/apps/mcp.test.ts +206 -0
  288. package/src/apps/mcp.ts +250 -0
  289. package/src/apps/relay/App.test.ts +457 -8
  290. package/src/apps/relay/App.ts +120 -12
  291. package/src/apps/relay/Sponsorships.test.ts +1 -1
  292. package/src/apps/relay/Sponsorships.ts +2 -1
  293. package/src/cli/Cli.test.ts +25 -2
  294. package/src/cli/Cli.ts +17 -2
  295. package/src/cli/commands/admin.test.ts +83 -0
  296. package/src/cli/commands/admin.ts +89 -1
  297. package/src/db/Db.ts +137 -0
  298. package/src/db/Schema.ts +104 -2
  299. package/src/db/tables/billingSettings.test.ts +87 -0
  300. package/src/db/tables/billingSettings.ts +108 -0
  301. package/src/db/tables/invitations.ts +2 -2
  302. package/src/db/tables/organizations.test.ts +1 -1
  303. package/src/db/tables/organizations.ts +15 -5
  304. package/src/db/tables/projects.ts +2 -2
  305. package/src/db/tables/requestUsage.ts +231 -0
  306. package/src/db/tables/sponsoredTransactions.test.ts +108 -1
  307. package/src/db/tables/sponsoredTransactions.ts +230 -2
  308. package/src/db/tables/stripeCustomers.test.ts +109 -0
  309. package/src/db/tables/stripeCustomers.ts +162 -0
  310. package/src/db/tables/users.ts +2 -2
  311. package/src/handlers/internal/sponsorship.ts +34 -7
  312. package/src/handlers/internal/utils.ts +19 -7
  313. package/src/index.ts +1 -0
  314. package/src/internal/Auth.test.ts +175 -25
  315. package/src/internal/Auth.ts +176 -87
  316. package/src/internal/Cache.ts +5 -1
  317. package/src/internal/EdgeCache.test.ts +27 -4
  318. package/src/internal/EdgeCache.ts +47 -9
  319. package/src/internal/Fees.test.ts +32 -0
  320. package/src/internal/Fees.ts +51 -0
  321. package/src/internal/FundingRoutes.test.ts +213 -0
  322. package/src/internal/FundingRoutes.ts +898 -0
  323. package/src/internal/Id.test.ts +17 -0
  324. package/src/internal/Id.ts +24 -0
  325. package/src/internal/Log.test.ts +1 -0
  326. package/src/internal/Log.ts +5 -0
  327. package/src/internal/OpenApi.ts +12 -1
  328. package/src/internal/RateLimit.test.ts +84 -0
  329. package/src/internal/RateLimit.ts +70 -0
  330. package/src/internal/Response.ts +1 -1
  331. package/src/internal/Schema.ts +8 -0
  332. package/src/internal/Webhooks.test.ts +3 -3
  333. package/src/internal/Webhooks.ts +3 -3
  334. package/dist/apps/platform/App.d.ts.map +0 -1
  335. package/dist/apps/platform/App.js.map +0 -1
  336. package/dist/apps/platform/index.d.ts +0 -2
  337. package/dist/apps/platform/index.d.ts.map +0 -1
  338. package/dist/apps/platform/index.js +0 -2
  339. package/dist/apps/platform/index.js.map +0 -1
  340. package/dist/apps/platform/routes/api-keys.d.ts.map +0 -1
  341. package/dist/apps/platform/routes/api-keys.js.map +0 -1
  342. package/dist/apps/platform/routes/invitations.d.ts.map +0 -1
  343. package/dist/apps/platform/routes/invitations.js.map +0 -1
  344. package/dist/apps/platform/routes/me.d.ts.map +0 -1
  345. package/dist/apps/platform/routes/me.js.map +0 -1
  346. package/dist/apps/platform/routes/members.d.ts.map +0 -1
  347. package/dist/apps/platform/routes/members.js.map +0 -1
  348. package/dist/apps/platform/routes/orgs.d.ts.map +0 -1
  349. package/dist/apps/platform/routes/orgs.js.map +0 -1
  350. package/dist/apps/platform/routes/projects.js.map +0 -1
  351. package/src/apps/platform/index.ts +0 -1
  352. package/src/apps/platform/routes/me.test.ts +0 -121
  353. /package/dist/apps/{platform → management}/routes/me.js +0 -0
  354. /package/dist/apps/{platform → management}/routes/members.d.ts +0 -0
  355. /package/dist/apps/{platform → management}/routes/members.js +0 -0
  356. /package/dist/apps/{platform → management}/routes/projects.js +0 -0
  357. /package/src/apps/{platform → management}/routes/me.ts +0 -0
  358. /package/src/apps/{platform → management}/routes/members.test.ts +0 -0
  359. /package/src/apps/{platform → management}/routes/members.ts +0 -0
  360. /package/src/apps/{platform → management}/routes/orgs.test.ts +0 -0
  361. /package/src/apps/{platform → management}/routes/projects.test.ts +0 -0
  362. /package/src/apps/{platform → management}/routes/projects.ts +0 -0
@@ -0,0 +1,391 @@
1
+ import { Hono } from 'hono';
2
+ import * as z from 'zod/mini';
3
+ import * as Analytics from '../../../analytics/Analytics.js';
4
+ import * as ApiKeys from '../../../ApiKeys.js';
5
+ import * as Auth from '../../../internal/Auth.js';
6
+ import * as BillingSettings from '../../../db/tables/billingSettings.js';
7
+ import * as Db from '../../../db/Db.js';
8
+ import * as OpenApi from '../../../internal/OpenApi.js';
9
+ import * as RequestEvents from '../../../analytics/tables/requestEvents.js';
10
+ import * as Response from '../../../internal/Response.js';
11
+ import * as Schema from '../../../internal/Schema.js';
12
+ import * as SponsoredTransactions from '../../../db/tables/sponsoredTransactions.js';
13
+ import * as core_Billing from '../Billing.js';
14
+ /** Zod schemas owned by the usage resource. */
15
+ export var schema;
16
+ (function (schema) {
17
+ /** Schemas for the getRequestUsage operation. */
18
+ let getRequestUsage;
19
+ (function (getRequestUsage) {
20
+ /** Usage grouped by API key. */
21
+ getRequestUsage.KeyBreakdown = z
22
+ .object({
23
+ apiKeyId: z
24
+ .string()
25
+ .check(z.describe('API key id (`key_…`).'), z.meta({ examples: ['key_1a2b3c4d5e6f7g8h9j0k1m2n'] })),
26
+ averageDurationMs: z
27
+ .number()
28
+ .check(z.describe('Average request duration in milliseconds.'), z.meta({ examples: [12.3] })),
29
+ errors: z
30
+ .number()
31
+ .check(z.int(), z.describe('Requests whose status was at least 400.'), z.meta({ examples: [3] })), // prettier-ignore
32
+ requests: z
33
+ .number()
34
+ .check(z.int(), z.describe('Total requests.'), z.meta({ examples: [120] })),
35
+ })
36
+ .check(z.describe('Usage grouped by API key.'));
37
+ /** Path parameters addressing one organization's usage. */
38
+ getRequestUsage.Params = z
39
+ .object({
40
+ orgId: z
41
+ .string()
42
+ .check(z.describe('The organization id (`org_…`).'), z.meta({ examples: ['org_1a2b3c4d5e6f7g8h9j0k1m2n'] })),
43
+ })
44
+ .check(z.describe("Path parameters for an organization's usage."));
45
+ /** Query parameters for request usage. */
46
+ getRequestUsage.Query = z
47
+ .strictObject({
48
+ environment: z
49
+ .optional(z.enum(['production', 'sandbox']))
50
+ .check(z.describe('Only include requests made with this API-key environment.'), z.meta({ examples: ['sandbox'] })), // prettier-ignore
51
+ from: z
52
+ .optional(z.iso.datetime({ offset: true }))
53
+ .check(z.describe('Only include requests at or after this ISO 8601 timestamp.'), z.meta({ examples: ['2026-01-01T00:00:00Z'] })),
54
+ interval: z
55
+ ._default(z.enum(['day', 'hour']), 'day')
56
+ .check(z.describe('Time bucket size for the usage series.'), z.meta({ examples: ['day'] })),
57
+ projectId: z.optional(z.string()).check(z.describe('Only include requests attributed to this project (`prj_…`). Omit for organization-wide usage.'), // prettier-ignore
58
+ z.meta({ examples: ['prj_1a2b3c4d5e6f7g8h9j0k1m2n'] })),
59
+ to: z
60
+ .optional(z.iso.datetime({ offset: true }))
61
+ .check(z.describe('Only include requests at or before this ISO 8601 timestamp.'), z.meta({ examples: ['2026-01-31T23:59:59Z'] })),
62
+ })
63
+ .check(z.describe('Query parameters for request usage.'));
64
+ /** Usage grouped by route. */
65
+ getRequestUsage.RouteBreakdown = z
66
+ .object({
67
+ averageDurationMs: z
68
+ .number()
69
+ .check(z.describe('Average request duration in milliseconds.'), z.meta({ examples: [18.2] })),
70
+ errors: z
71
+ .number()
72
+ .check(z.int(), z.describe('Requests whose status was at least 400.'), z.meta({ examples: [2] })), // prettier-ignore
73
+ requests: z
74
+ .number()
75
+ .check(z.int(), z.describe('Total requests.'), z.meta({ examples: [80] })),
76
+ route: z
77
+ .string()
78
+ .check(z.describe('Matched route pattern.'), z.meta({ examples: ['/v1/transactions/:hash'] })),
79
+ })
80
+ .check(z.describe('Usage grouped by route.'));
81
+ /** One usage series point. */
82
+ getRequestUsage.SeriesPoint = z
83
+ .object({
84
+ errors: z
85
+ .number()
86
+ .check(z.int(), z.describe('Requests whose status was at least 400.'), z.meta({ examples: [1] })), // prettier-ignore
87
+ requests: z
88
+ .number()
89
+ .check(z.int(), z.describe('Total requests.'), z.meta({ examples: [40] })),
90
+ time: z
91
+ .string()
92
+ .check(z.describe('Bucket start timestamp (ISO 8601).'), z.meta({ examples: ['2026-01-01T00:00:00.000Z'] })),
93
+ })
94
+ .check(z.describe('One usage series point.'));
95
+ /** Usage grouped by status code. */
96
+ getRequestUsage.StatusBreakdown = z
97
+ .object({
98
+ requests: z
99
+ .number()
100
+ .check(z.int(), z.describe('Total requests.'), z.meta({ examples: [100] })),
101
+ status: z
102
+ .number()
103
+ .check(z.int(), z.describe('HTTP status code.'), z.meta({ examples: [200] })),
104
+ })
105
+ .check(z.describe('Usage grouped by status code.'));
106
+ /** Overall usage totals. */
107
+ getRequestUsage.Totals = z
108
+ .object({
109
+ averageDurationMs: z
110
+ .number()
111
+ .check(z.describe('Average request duration in milliseconds.'), z.meta({ examples: [15.6] })),
112
+ errors: z
113
+ .number()
114
+ .check(z.int(), z.describe('Requests whose status was at least 400.'), z.meta({ examples: [5] })), // prettier-ignore
115
+ requests: z
116
+ .number()
117
+ .check(z.int(), z.describe('Total requests.'), z.meta({ examples: [200] })),
118
+ })
119
+ .check(z.describe('Overall usage totals.'));
120
+ /** Request usage. */
121
+ getRequestUsage.Response = Schema.describe(z.object({
122
+ byKey: z.array(getRequestUsage.KeyBreakdown).check(z.describe('Usage grouped by API key.')),
123
+ byRoute: z.array(getRequestUsage.RouteBreakdown).check(z.describe('Usage grouped by route.')),
124
+ byStatus: z.array(getRequestUsage.StatusBreakdown).check(z.describe('Usage grouped by status code.')),
125
+ from: z
126
+ .string()
127
+ .check(z.describe('Inclusive lower timestamp bound used for the read (ISO 8601).'), z.meta({ examples: ['2026-01-01T00:00:00.000Z'] })),
128
+ interval: z
129
+ .enum(['day', 'hour'])
130
+ .check(z.describe('Bucket size used for the time series.'), z.meta({ examples: ['day'] })),
131
+ series: z.array(getRequestUsage.SeriesPoint).check(z.describe('Usage grouped into time buckets.')),
132
+ to: z
133
+ .string()
134
+ .check(z.describe('Inclusive upper timestamp bound used for the read (ISO 8601).'), z.meta({ examples: ['2026-01-31T23:59:59.000Z'] })),
135
+ totals: getRequestUsage.Totals,
136
+ }), 'Request usage.');
137
+ })(getRequestUsage = schema.getRequestUsage || (schema.getRequestUsage = {}));
138
+ /** Schemas for the getSponsorshipUsage operation. */
139
+ let getSponsorshipUsage;
140
+ (function (getSponsorshipUsage) {
141
+ /** One time bucket of sponsorship usage. */
142
+ getSponsorshipUsage.Bucket = Schema.describe(z.object({
143
+ count: z
144
+ .number()
145
+ .check(z.describe('Sponsored transactions recorded in the bucket, any status.'), z.meta({ examples: [42] })),
146
+ feeTotal: z
147
+ .object({
148
+ amount: z.string().check(z.describe('Committed fees as a decimal string: finalized fees plus in-flight fee caps; failed rows contribute zero.'), // prettier-ignore
149
+ z.meta({ examples: ['12.34'] })),
150
+ currency: z
151
+ .enum(BillingSettings.currencies)
152
+ .check(z.describe('Currency of the fee figure.'), z.meta({ examples: ['usd'] })),
153
+ })
154
+ .check(z.describe('Committed fees for the bucket.'), z.meta({ examples: [{ amount: '12.34', currency: 'usd' }] })),
155
+ timestamp: z
156
+ .string()
157
+ .check(z.describe('Bucket start (ISO 8601), aligned to UTC calendar boundaries.'), z.meta({ examples: ['2026-01-01T00:00:00.000Z'] })),
158
+ }), 'One time bucket of sponsorship usage.');
159
+ /** Path parameters addressing one organization's usage. */
160
+ getSponsorshipUsage.Params = z
161
+ .object({
162
+ orgId: z
163
+ .string()
164
+ .check(z.describe('The organization id (`org_…`).'), z.meta({ examples: ['org_1a2b3c4d5e6f7g8h9j0k1m2n'] })),
165
+ })
166
+ .check(z.describe("Path parameters for one organization's usage."));
167
+ /** Query parameters scoping the sponsorship usage series. */
168
+ getSponsorshipUsage.Query = z
169
+ .strictObject({
170
+ environment: z
171
+ .optional(z.enum(['production', 'sandbox']))
172
+ .check(z.describe('Only include sponsorships requested under this key environment.'), z.meta({ examples: ['production'] })),
173
+ from: z
174
+ .optional(z.iso.datetime({ offset: true }))
175
+ .check(z.describe('Window start (ISO 8601), inclusive. Defaults to 30 days before `to`.'), z.meta({ examples: ['2026-01-01T00:00:00Z'] })),
176
+ interval: z
177
+ ._default(z.enum(['day', 'hour', 'month', 'week']), 'day')
178
+ .check(z.describe('Bucket width, aligned to UTC calendar boundaries.'), z.meta({ examples: ['day'] })),
179
+ projectId: z
180
+ .optional(z.string())
181
+ .check(z.describe('Only include sponsorships attributed to this project (`prj_…`).'), z.meta({ examples: ['prj_1a2b3c4d5e6f7g8h9j0k1m2n'] })),
182
+ to: z
183
+ .optional(z.iso.datetime({ offset: true }))
184
+ .check(z.describe('Window end (ISO 8601), exclusive. Defaults to now.'), z.meta({ examples: ['2026-01-31T00:00:00Z'] })),
185
+ })
186
+ .check(z.describe('Query parameters scoping the sponsorship usage series.'));
187
+ /** Sponsorship usage bucketed over time. */
188
+ getSponsorshipUsage.Response = Schema.describe(z.object({
189
+ data: z
190
+ .array(getSponsorshipUsage.Bucket)
191
+ .check(z.describe('Time-ordered usage buckets; buckets with no sponsorships are omitted.')),
192
+ }), 'Sponsorship usage bucketed over time.');
193
+ })(getSponsorshipUsage = schema.getSponsorshipUsage || (schema.getSponsorshipUsage = {}));
194
+ })(schema || (schema = {}));
195
+ /**
196
+ * Mounts the usage surface: project request usage (read from a host-supplied
197
+ * analytics capability) and an organization's sponsorship volume and fees
198
+ * over time. Session lane; reads for members.
199
+ */
200
+ export function usage() {
201
+ return new Hono()
202
+ .get('/v1/orgs/:orgId{org_[A-Za-z0-9_-]+}/usage/requests', Auth.policy({ session: true }), Auth.ensureOrg(), OpenApi.validate('param', schema.getRequestUsage.Params, {
203
+ code: 'param_invalid',
204
+ message: 'Check the path parameters and try again.',
205
+ }), OpenApi.validate('query', schema.getRequestUsage.Query, {
206
+ code: 'query_invalid',
207
+ message: 'Check the query parameters and try again.',
208
+ }), OpenApi.describeRoute({
209
+ operationId: 'getRequestUsage',
210
+ responses: OpenApi.responses({
211
+ errors: {
212
+ 400: { codes: ['query_invalid'], description: 'Invalid query parameters.' },
213
+ 404: {
214
+ codes: ['organization_not_found'],
215
+ description: 'No accessible organization was found for this id.',
216
+ },
217
+ 501: {
218
+ codes: ['analytics_unconfigured'],
219
+ description: 'Usage analytics is not configured on this deployment.',
220
+ },
221
+ },
222
+ success: {
223
+ description: 'The request usage.',
224
+ schema: schema.getRequestUsage.Response,
225
+ },
226
+ }),
227
+ summary: 'Get request usage',
228
+ tags: ['Usage'],
229
+ }), async (c) => {
230
+ if (Auth.narrowAccess)
231
+ return Auth.superAdminAccessError(c);
232
+ if (Auth.narrowScope)
233
+ return Auth.ensureOrgError(c);
234
+ if (OpenApi.narrowValidation)
235
+ return OpenApi.validationError(c, {
236
+ code: 'param_invalid',
237
+ message: 'Check the path parameters and try again.',
238
+ });
239
+ if (OpenApi.narrowValidation)
240
+ return OpenApi.validationError(c, {
241
+ code: 'query_invalid',
242
+ message: 'Check the query parameters and try again.',
243
+ });
244
+ const analytics = c.get('analytics');
245
+ if (!analytics)
246
+ return analyticsUnconfigured(c);
247
+ const query = c.req.valid('query');
248
+ const to = new Date(Date.parse(query.to ?? new Date().toISOString())).toISOString();
249
+ const lookback = query.interval === 'day' ? 30 * dayMs : 24 * hourMs;
250
+ const from = new Date(Date.parse(query.from ?? new Date(Date.parse(to) - lookback).toISOString())).toISOString(); // prettier-ignore
251
+ if (Date.parse(from) > Date.parse(to))
252
+ return Response.error(c, {
253
+ code: 'query_invalid',
254
+ message: '`from` must be before or equal to `to`.',
255
+ status: 400,
256
+ });
257
+ if (Date.parse(to) - Date.parse(from) > (maxBuckets - 1) * intervalMs(query.interval))
258
+ return Response.error(c, {
259
+ code: 'query_invalid',
260
+ message: `Usage series are limited to ${maxBuckets} buckets.`,
261
+ status: 400,
262
+ });
263
+ try {
264
+ const environment = query.environment === undefined ? {} : { environment: query.environment };
265
+ const keyIds = await legacyKeyIds(c, {
266
+ environment: query.environment,
267
+ projectId: query.projectId,
268
+ });
269
+ return c.json(Response.validated(schema.getRequestUsage.Response, await RequestEvents.readProjectUsage(Analytics.get(analytics), {
270
+ attributions: [
271
+ // `projectId` present scopes to one project; absent covers the
272
+ // whole org. Either way legacy null-project rows are folded in
273
+ // by explicit key id below.
274
+ {
275
+ ...environment,
276
+ ...(query.projectId === undefined ? {} : { projectId: query.projectId }),
277
+ },
278
+ ...(keyIds.length > 0
279
+ ? [{ apiKeyIds: keyIds, ...environment, projectId: null }]
280
+ : []),
281
+ ],
282
+ from,
283
+ interval: query.interval,
284
+ orgId: Auth.org(c).id,
285
+ to,
286
+ })), 200);
287
+ }
288
+ catch (cause) {
289
+ return Response.upstream(c, cause);
290
+ }
291
+ })
292
+ .get('/v1/orgs/:orgId{org_[A-Za-z0-9_-]+}/usage/sponsorships', Auth.policy({ session: true }), Auth.ensureOrg(), OpenApi.validate('param', schema.getSponsorshipUsage.Params, {
293
+ code: 'param_invalid',
294
+ message: 'Check the path parameters and try again.',
295
+ }), OpenApi.validate('query', schema.getSponsorshipUsage.Query, {
296
+ code: 'query_invalid',
297
+ message: 'Check the query parameters and try again.',
298
+ }), OpenApi.describeRoute({
299
+ operationId: 'getSponsorshipUsage',
300
+ responses: OpenApi.responses({
301
+ errors: {
302
+ 404: 'No accessible organization was found for this id.',
303
+ },
304
+ success: {
305
+ description: "The organization's sponsorship usage series.",
306
+ schema: schema.getSponsorshipUsage.Response,
307
+ },
308
+ }),
309
+ summary: 'Get sponsorship usage',
310
+ tags: ['Usage'],
311
+ }), async (c) => {
312
+ if (Auth.narrowAccess)
313
+ return Auth.superAdminAccessError(c);
314
+ if (Auth.narrowScope)
315
+ return Auth.ensureOrgError(c);
316
+ if (OpenApi.narrowValidation)
317
+ return OpenApi.validationError(c, {
318
+ code: 'param_invalid',
319
+ message: 'Check the path parameters and try again.',
320
+ });
321
+ if (OpenApi.narrowValidation)
322
+ return OpenApi.validationError(c, {
323
+ code: 'query_invalid',
324
+ message: 'Check the query parameters and try again.',
325
+ });
326
+ const query = c.req.valid('query');
327
+ const to = query.to ? new Date(query.to) : new Date();
328
+ const from = query.from ? new Date(query.from) : new Date(to.getTime() - 30 * dayMs);
329
+ if (from.getTime() >= to.getTime())
330
+ return windowInvalid(c, '`from` must be before `to`');
331
+ // Bound the scan, not just the output: 31 days of hours is 744 buckets;
332
+ // wider intervals cap at 400 days regardless of bucket count.
333
+ const maxDays = query.interval === 'hour' ? 31 : 400;
334
+ if (to.getTime() - from.getTime() > maxDays * dayMs)
335
+ return windowInvalid(c, `The window may span at most ${maxDays} days at \`${query.interval}\` interval`);
336
+ try {
337
+ const buckets = await SponsoredTransactions.usage(Db.get(c.get('dbCached')), {
338
+ environment: query.environment,
339
+ from: from.toISOString(),
340
+ interval: query.interval,
341
+ orgId: Auth.org(c).id,
342
+ projectId: query.projectId,
343
+ to: to.toISOString(),
344
+ });
345
+ // Sponsored fees settle in USD: the relay refuses non-USD fee tokens
346
+ // on mainnet and rows snapshot `currency`, so one constant is correct
347
+ // until multi-currency sponsorship ships (then group by currency).
348
+ const currency = 'usd';
349
+ return c.json(Response.validated(schema.getSponsorshipUsage.Response, {
350
+ data: buckets.map((bucket) => ({
351
+ count: bucket.count,
352
+ feeTotal: { amount: core_Billing.fromBaseUnits(bucket.feeTotal), currency },
353
+ timestamp: bucket.timestamp,
354
+ })),
355
+ }), 200);
356
+ }
357
+ catch (cause) {
358
+ return Response.upstream(c, cause);
359
+ }
360
+ });
361
+ }
362
+ /** One day in milliseconds; window defaults and caps derive from it. */
363
+ const dayMs = 24 * 60 * 60 * 1000;
364
+ /** One hour in milliseconds. */
365
+ const hourMs = 60 * 60 * 1000;
366
+ /** Upper bound on request-usage series length. */
367
+ const maxBuckets = 200;
368
+ /** API-key ids minted before project attribution; matched by explicit id. */
369
+ async function legacyKeyIds(c, options) {
370
+ const kv = c.get('kv');
371
+ if (!kv)
372
+ return [];
373
+ const records = await ApiKeys.listByOrg(kv.store, Auth.org(c).id, options.projectId === undefined ? {} : { projectId: options.projectId });
374
+ return records
375
+ .filter((record) => options.environment === undefined || record.environment === options.environment) // prettier-ignore
376
+ .map((record) => record.id);
377
+ }
378
+ function analyticsUnconfigured(c) {
379
+ return Response.error(c, {
380
+ code: 'analytics_unconfigured',
381
+ message: 'Usage analytics is not configured on this deployment',
382
+ status: 501,
383
+ });
384
+ }
385
+ function intervalMs(interval) {
386
+ return interval === 'day' ? dayMs : hourMs;
387
+ }
388
+ function windowInvalid(c, message) {
389
+ return Response.error(c, { code: 'query_invalid', message, status: 400 });
390
+ }
391
+ //# sourceMappingURL=usage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage.js","sourceRoot":"","sources":["../../../../src/apps/management/routes/usage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ import * as z from 'zod/mini';
2
+ import type * as App from '../App.js';
3
+ /** Zod schemas owned by the MCP endpoint's OpenAPI description. */
4
+ export declare namespace schema {
5
+ /** JSON-RPC request identifier. */
6
+ const Id: z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniNumber<number>, z.ZodMiniNull]>;
7
+ /** JSON-RPC error payload. */
8
+ const Error: z.ZodMiniObject<{
9
+ code: z.ZodMiniNumber<number>;
10
+ data: z.ZodMiniOptional<z.ZodMiniUnknown>;
11
+ message: z.ZodMiniString<string>;
12
+ }, z.core.$strip>;
13
+ /** MCP JSON-RPC response payload. */
14
+ const Response: z.ZodMiniObject<{
15
+ error: z.ZodMiniOptional<z.ZodMiniObject<{
16
+ code: z.ZodMiniNumber<number>;
17
+ data: z.ZodMiniOptional<z.ZodMiniUnknown>;
18
+ message: z.ZodMiniString<string>;
19
+ }, z.core.$strip>>;
20
+ id: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniNumber<number>, z.ZodMiniNull]>>;
21
+ jsonrpc: z.ZodMiniLiteral<"2.0">;
22
+ result: z.ZodMiniOptional<z.ZodMiniUnknown>;
23
+ }, z.core.$strip>;
24
+ }
25
+ /**
26
+ * The MCP route group: a stateless streamable-HTTP MCP server at `/mcp` whose
27
+ * tools mirror the API's data domain (scoped via the OpenAPI document's
28
+ * `Data API` tag group), plus the remote Tempo docs tools. Mount alongside
29
+ * the other route groups:
30
+ *
31
+ * ```ts
32
+ * App.create(options).route('/', mcp({ fetch: (request) => getApp().fetch(request) }))
33
+ * ```
34
+ */
35
+ export declare function mcp(options: mcp.Options): import("hono/hono-base").HonoBase<App.Environment, {
36
+ "/mcp": {
37
+ $post: {
38
+ output: {};
39
+ outputFormat: string;
40
+ status: import("hono/utils/http-status").StatusCode;
41
+ input: {};
42
+ };
43
+ };
44
+ } & {
45
+ "/mcp": {
46
+ $all: {
47
+ output: {};
48
+ outputFormat: string;
49
+ status: import("hono/utils/http-status").StatusCode;
50
+ input: {};
51
+ };
52
+ };
53
+ }, "/", "/mcp">;
54
+ export declare namespace mcp {
55
+ /** Options for the MCP route group. */
56
+ type Options = {
57
+ /** Remote docs MCP source mounted as the `docs` tool group, or `false` to omit it. @default 'https://mcp.tempo.xyz/mcp' */
58
+ docs?: Source | false | undefined;
59
+ /** In-process fetch handler for the composed app (e.g. `(request) => app.fetch(request)`). */
60
+ fetch: (request: Request) => Response | Promise<Response>;
61
+ /** MCP server name. @default 'tapimo' */
62
+ name?: string | undefined;
63
+ /** MCP server version. @default '0.0.0' */
64
+ version?: string | undefined;
65
+ };
66
+ /** A remote streamable-HTTP MCP server endpoint. */
67
+ type Source = string | URL | {
68
+ /** Fetch handler used for MCP requests. Defaults to `globalThis.fetch`. */
69
+ fetch?: ((request: Request) => Response | Promise<Response>) | undefined;
70
+ /** Headers merged into every MCP request. */
71
+ headers?: Record<string, string> | undefined;
72
+ /** Streamable-HTTP MCP endpoint URL. */
73
+ url: string | URL;
74
+ };
75
+ }
76
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/apps/mcp.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,CAAC,MAAM,UAAU,CAAA;AAE7B,OAAO,KAAK,KAAK,GAAG,MAAM,WAAW,CAAA;AAerC,mEAAmE;AACnE,yBAAiB,MAAM,CAAC;IACtB,mCAAmC;IAC5B,MAAM,EAAE,4FAEiF,CAAA;IAEhG,8BAA8B;IACvB,MAAM,KAAK;;;;qBAU0D,CAAA;IAE5E,qCAAqC;IAC9B,MAAM,QAAQ;;;;;;;;;qBAaoD,CAAA;CAC1E;AAED;;;;;;;;;GASG;AACH,wBAAgB,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO;;;;;;;;;;;;;;;;;;gBAgHvC;AA8CD,MAAM,CAAC,OAAO,WAAW,GAAG,CAAC;IAC3B,uCAAuC;IACvC,KAAK,OAAO,GAAG;QACb,2HAA2H;QAC3H,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAAA;QACjC,8FAA8F;QAC9F,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;QACzD,yCAAyC;QACzC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACzB,2CAA2C;QAC3C,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAC7B,CAAA;IAED,oDAAoD;IACpD,KAAK,MAAM,GACP,MAAM,GACN,GAAG,GACH;QACE,2EAA2E;QAC3E,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAA;QACxE,6CAA6C;QAC7C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAA;QAC5C,wCAAwC;QACxC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAClB,CAAA;CACN"}