tapimo 0.10.2 → 0.12.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 (386) hide show
  1. package/dist/App.d.ts +4896 -2166
  2. package/dist/App.d.ts.map +1 -1
  3. package/dist/App.js +2 -2
  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/Webhooks.d.ts +0 -75
  10. package/dist/Webhooks.d.ts.map +1 -1
  11. package/dist/Webhooks.js +1 -143
  12. package/dist/Webhooks.js.map +1 -1
  13. package/dist/admin/App.d.ts +127 -78
  14. package/dist/admin/App.d.ts.map +1 -1
  15. package/dist/admin/apps/earn-vaults.d.ts +115 -1
  16. package/dist/admin/apps/earn-vaults.d.ts.map +1 -1
  17. package/dist/admin/apps/earn-vaults.js +59 -6
  18. package/dist/admin/apps/earn-vaults.js.map +1 -1
  19. package/dist/admin/apps/organizations.d.ts +3 -3
  20. package/dist/admin/apps/organizations.d.ts.map +1 -1
  21. package/dist/admin/apps/organizations.js +4 -2
  22. package/dist/admin/apps/organizations.js.map +1 -1
  23. package/dist/admin/apps/verified-tokens.d.ts +83 -83
  24. package/dist/admin/ui.generated.d.ts +1 -1
  25. package/dist/admin/ui.generated.d.ts.map +1 -1
  26. package/dist/admin/ui.generated.js +151 -151
  27. package/dist/admin/ui.generated.js.map +1 -1
  28. package/dist/apps/data/App.d.ts +5924 -4310
  29. package/dist/apps/data/App.d.ts.map +1 -1
  30. package/dist/apps/data/App.js +61 -9
  31. package/dist/apps/data/App.js.map +1 -1
  32. package/dist/apps/data/ZoneSelection.d.ts +62 -0
  33. package/dist/apps/data/ZoneSelection.d.ts.map +1 -0
  34. package/dist/apps/data/ZoneSelection.js +44 -0
  35. package/dist/apps/data/ZoneSelection.js.map +1 -0
  36. package/dist/apps/data/routes/activities.d.ts +2368 -5
  37. package/dist/apps/data/routes/activities.d.ts.map +1 -1
  38. package/dist/apps/data/routes/activities.js +423 -114
  39. package/dist/apps/data/routes/activities.js.map +1 -1
  40. package/dist/apps/data/routes/addresses.d.ts +131 -0
  41. package/dist/apps/data/routes/addresses.d.ts.map +1 -1
  42. package/dist/apps/data/routes/balances.d.ts +25 -25
  43. package/dist/apps/data/routes/balances.js +1 -1
  44. package/dist/apps/data/routes/balances.js.map +1 -1
  45. package/dist/apps/data/routes/blocks.d.ts +1 -1
  46. package/dist/apps/data/routes/blocks.js +1 -1
  47. package/dist/apps/data/routes/blocks.js.map +1 -1
  48. package/dist/apps/data/routes/earn.d.ts +135 -10
  49. package/dist/apps/data/routes/earn.d.ts.map +1 -1
  50. package/dist/apps/data/routes/earn.js +157 -25
  51. package/dist/apps/data/routes/earn.js.map +1 -1
  52. package/dist/apps/data/routes/exchanges.d.ts +829 -123
  53. package/dist/apps/data/routes/exchanges.d.ts.map +1 -1
  54. package/dist/apps/data/routes/exchanges.js +16 -13
  55. package/dist/apps/data/routes/exchanges.js.map +1 -1
  56. package/dist/apps/data/routes/fee-amm.d.ts +26 -26
  57. package/dist/apps/data/routes/fee-amm.d.ts.map +1 -1
  58. package/dist/apps/data/routes/fee-amm.js +9 -11
  59. package/dist/apps/data/routes/fee-amm.js.map +1 -1
  60. package/dist/apps/data/routes/receipts.d.ts +54 -54
  61. package/dist/apps/data/routes/receipts.js +1 -1
  62. package/dist/apps/data/routes/receipts.js.map +1 -1
  63. package/dist/apps/data/routes/rpc.js +24 -10
  64. package/dist/apps/data/routes/rpc.js.map +1 -1
  65. package/dist/apps/data/routes/tokenlist.d.ts +12 -12
  66. package/dist/apps/data/routes/tokenlist.d.ts.map +1 -1
  67. package/dist/apps/data/routes/tokenlist.js +16 -15
  68. package/dist/apps/data/routes/tokenlist.js.map +1 -1
  69. package/dist/apps/data/routes/tokens.d.ts +17 -3
  70. package/dist/apps/data/routes/tokens.d.ts.map +1 -1
  71. package/dist/apps/data/routes/tokens.js +34 -15
  72. package/dist/apps/data/routes/tokens.js.map +1 -1
  73. package/dist/apps/data/routes/transactions.d.ts +1 -1
  74. package/dist/apps/data/routes/transactions.js +1 -1
  75. package/dist/apps/data/routes/transactions.js.map +1 -1
  76. package/dist/apps/data/routes/transfers.d.ts +13 -13
  77. package/dist/apps/data/routes/transfers.d.ts.map +1 -1
  78. package/dist/apps/data/routes/transfers.js +7 -9
  79. package/dist/apps/data/routes/transfers.js.map +1 -1
  80. package/dist/apps/data/routes/valuation.d.ts +21 -21
  81. package/dist/apps/data/routes/verified-tokens.d.ts +5 -5
  82. package/dist/apps/data/routes/webhooks.d.ts +1011 -151
  83. package/dist/apps/data/routes/webhooks.d.ts.map +1 -1
  84. package/dist/apps/data/routes/webhooks.js +126 -739
  85. package/dist/apps/data/routes/webhooks.js.map +1 -1
  86. package/dist/apps/data/routes/zones.d.ts +15 -15
  87. package/dist/apps/funding/App.d.ts +27 -27
  88. package/dist/apps/funding/routes/chains.d.ts.map +1 -1
  89. package/dist/apps/funding/routes/chains.js +5 -4
  90. package/dist/apps/funding/routes/chains.js.map +1 -1
  91. package/dist/apps/funding/routes/deposit-addresses.d.ts +18 -18
  92. package/dist/apps/funding/routes/deposit-addresses.d.ts.map +1 -1
  93. package/dist/apps/funding/routes/deposit-addresses.js +8 -8
  94. package/dist/apps/funding/routes/deposit-addresses.js.map +1 -1
  95. package/dist/apps/funding/routes/providers.d.ts.map +1 -1
  96. package/dist/apps/funding/routes/providers.js +3 -2
  97. package/dist/apps/funding/routes/providers.js.map +1 -1
  98. package/dist/apps/funding/routes/quotes.d.ts.map +1 -1
  99. package/dist/apps/funding/routes/quotes.js +2 -2
  100. package/dist/apps/funding/routes/quotes.js.map +1 -1
  101. package/dist/apps/funding/routes/transfers.d.ts +33 -33
  102. package/dist/apps/management/App.d.ts +1433 -322
  103. package/dist/apps/management/App.d.ts.map +1 -1
  104. package/dist/apps/management/Billing.d.ts.map +1 -1
  105. package/dist/apps/management/Billing.js +19 -6
  106. package/dist/apps/management/Billing.js.map +1 -1
  107. package/dist/apps/management/routes/api-keys.d.ts +154 -94
  108. package/dist/apps/management/routes/api-keys.d.ts.map +1 -1
  109. package/dist/apps/management/routes/api-keys.js +76 -30
  110. package/dist/apps/management/routes/api-keys.js.map +1 -1
  111. package/dist/apps/management/routes/billing.d.ts +103 -30
  112. package/dist/apps/management/routes/billing.d.ts.map +1 -1
  113. package/dist/apps/management/routes/billing.js +91 -32
  114. package/dist/apps/management/routes/billing.js.map +1 -1
  115. package/dist/apps/management/routes/faucet.d.ts +12 -12
  116. package/dist/apps/management/routes/faucet.d.ts.map +1 -1
  117. package/dist/apps/management/routes/faucet.js +23 -12
  118. package/dist/apps/management/routes/faucet.js.map +1 -1
  119. package/dist/apps/management/routes/invitations.d.ts +46 -13
  120. package/dist/apps/management/routes/invitations.d.ts.map +1 -1
  121. package/dist/apps/management/routes/invitations.js +79 -29
  122. package/dist/apps/management/routes/invitations.js.map +1 -1
  123. package/dist/apps/management/routes/invite-links.d.ts +128 -83
  124. package/dist/apps/management/routes/invite-links.d.ts.map +1 -1
  125. package/dist/apps/management/routes/invite-links.js +100 -41
  126. package/dist/apps/management/routes/invite-links.js.map +1 -1
  127. package/dist/apps/management/routes/me.d.ts +5 -5
  128. package/dist/apps/management/routes/me.d.ts.map +1 -1
  129. package/dist/apps/management/routes/me.js +14 -10
  130. package/dist/apps/management/routes/me.js.map +1 -1
  131. package/dist/apps/management/routes/members.d.ts +68 -47
  132. package/dist/apps/management/routes/members.d.ts.map +1 -1
  133. package/dist/apps/management/routes/members.js +37 -18
  134. package/dist/apps/management/routes/members.js.map +1 -1
  135. package/dist/apps/management/routes/orgs.d.ts +48 -8
  136. package/dist/apps/management/routes/orgs.d.ts.map +1 -1
  137. package/dist/apps/management/routes/orgs.js +48 -19
  138. package/dist/apps/management/routes/orgs.js.map +1 -1
  139. package/dist/apps/management/routes/projects.d.ts +130 -68
  140. package/dist/apps/management/routes/projects.d.ts.map +1 -1
  141. package/dist/apps/management/routes/projects.js +72 -21
  142. package/dist/apps/management/routes/projects.js.map +1 -1
  143. package/dist/apps/management/routes/scopes.d.ts.map +1 -1
  144. package/dist/apps/management/routes/scopes.js +8 -5
  145. package/dist/apps/management/routes/scopes.js.map +1 -1
  146. package/dist/apps/management/routes/usage.d.ts +38 -38
  147. package/dist/apps/management/routes/usage.d.ts.map +1 -1
  148. package/dist/apps/management/routes/usage.js +41 -31
  149. package/dist/apps/management/routes/usage.js.map +1 -1
  150. package/dist/apps/management/routes/verified-token-requests.d.ts +34 -6
  151. package/dist/apps/management/routes/verified-token-requests.d.ts.map +1 -1
  152. package/dist/apps/management/routes/verified-token-requests.js +36 -17
  153. package/dist/apps/management/routes/verified-token-requests.js.map +1 -1
  154. package/dist/apps/management/routes/webhooks.d.ts +1186 -197
  155. package/dist/apps/management/routes/webhooks.d.ts.map +1 -1
  156. package/dist/apps/management/routes/webhooks.js +106 -38
  157. package/dist/apps/management/routes/webhooks.js.map +1 -1
  158. package/dist/apps/mpp/internal/Adapter.d.ts +1 -1
  159. package/dist/apps/mpp/internal/Adapter.d.ts.map +1 -1
  160. package/dist/apps/mpp/internal/Adapter.js +12 -0
  161. package/dist/apps/mpp/internal/Adapter.js.map +1 -1
  162. package/dist/db/Db.d.ts +2 -0
  163. package/dist/db/Db.d.ts.map +1 -1
  164. package/dist/db/Db.js +61 -0
  165. package/dist/db/Db.js.map +1 -1
  166. package/dist/db/Schema.d.ts +30 -2
  167. package/dist/db/Schema.d.ts.map +1 -1
  168. package/dist/db/Schema.js +28 -3
  169. package/dist/db/Schema.js.map +1 -1
  170. package/dist/db/tables/earnVaults.d.ts +5 -1
  171. package/dist/db/tables/earnVaults.d.ts.map +1 -1
  172. package/dist/db/tables/earnVaults.js +5 -0
  173. package/dist/db/tables/earnVaults.js.map +1 -1
  174. package/dist/db/tables/webhookDeliveries.d.ts.map +1 -1
  175. package/dist/db/tables/webhookDeliveries.js +10 -0
  176. package/dist/db/tables/webhookDeliveries.js.map +1 -1
  177. package/dist/db/tables/webhookQueueCompletions.d.ts +15 -0
  178. package/dist/db/tables/webhookQueueCompletions.d.ts.map +1 -0
  179. package/dist/db/tables/webhookQueueCompletions.js +32 -0
  180. package/dist/db/tables/webhookQueueCompletions.js.map +1 -0
  181. package/dist/db/tables/webhookQueueEvents.d.ts +16 -20
  182. package/dist/db/tables/webhookQueueEvents.d.ts.map +1 -1
  183. package/dist/db/tables/webhookQueueEvents.js +68 -43
  184. package/dist/db/tables/webhookQueueEvents.js.map +1 -1
  185. package/dist/db/tables/webhookSubscriptions.d.ts +47 -72
  186. package/dist/db/tables/webhookSubscriptions.d.ts.map +1 -1
  187. package/dist/db/tables/webhookSubscriptions.js +92 -105
  188. package/dist/db/tables/webhookSubscriptions.js.map +1 -1
  189. package/dist/internal/Auth.d.ts +8 -1
  190. package/dist/internal/Auth.d.ts.map +1 -1
  191. package/dist/internal/Auth.js +13 -3
  192. package/dist/internal/Auth.js.map +1 -1
  193. package/dist/internal/Cache.d.ts.map +1 -1
  194. package/dist/internal/Cache.js +11 -7
  195. package/dist/internal/Cache.js.map +1 -1
  196. package/dist/internal/EarnVaults.d.ts +41 -2
  197. package/dist/internal/EarnVaults.d.ts.map +1 -1
  198. package/dist/internal/EarnVaults.js +167 -0
  199. package/dist/internal/EarnVaults.js.map +1 -1
  200. package/dist/internal/MetricSink.d.ts +35 -125
  201. package/dist/internal/MetricSink.d.ts.map +1 -1
  202. package/dist/internal/MetricSink.js +50 -121
  203. package/dist/internal/MetricSink.js.map +1 -1
  204. package/dist/internal/OpenApi.d.ts +26 -22
  205. package/dist/internal/OpenApi.d.ts.map +1 -1
  206. package/dist/internal/OpenApi.js +128 -39
  207. package/dist/internal/OpenApi.js.map +1 -1
  208. package/dist/internal/Response.d.ts +13 -8
  209. package/dist/internal/Response.d.ts.map +1 -1
  210. package/dist/internal/Response.js +16 -5
  211. package/dist/internal/Response.js.map +1 -1
  212. package/dist/internal/Schema.d.ts +8 -8
  213. package/dist/internal/Schema.d.ts.map +1 -1
  214. package/dist/internal/Schema.js +10 -9
  215. package/dist/internal/Schema.js.map +1 -1
  216. package/dist/internal/Store.d.ts +15 -6
  217. package/dist/internal/Store.d.ts.map +1 -1
  218. package/dist/internal/Store.js +45 -15
  219. package/dist/internal/Store.js.map +1 -1
  220. package/dist/internal/Tidx.d.ts +2 -0
  221. package/dist/internal/Tidx.d.ts.map +1 -1
  222. package/dist/internal/Tidx.js +16 -4
  223. package/dist/internal/Tidx.js.map +1 -1
  224. package/dist/internal/WebhookTransfer.d.ts +1 -55
  225. package/dist/internal/WebhookTransfer.d.ts.map +1 -1
  226. package/dist/internal/WebhookTransfer.js +1 -239
  227. package/dist/internal/WebhookTransfer.js.map +1 -1
  228. package/dist/internal/Webhooks.d.ts +112 -56
  229. package/dist/internal/Webhooks.d.ts.map +1 -1
  230. package/dist/internal/Webhooks.js +124 -93
  231. package/dist/internal/Webhooks.js.map +1 -1
  232. package/dist/internal/funding/Deposit.d.ts +2 -2
  233. package/dist/internal/funding/Deposit.d.ts.map +1 -1
  234. package/dist/internal/funding/Deposit.js +9 -8
  235. package/dist/internal/funding/Deposit.js.map +1 -1
  236. package/dist/internal/funding/DepositAddress.d.ts +4 -4
  237. package/dist/internal/funding/DepositAddress.d.ts.map +1 -1
  238. package/dist/internal/funding/DepositAddress.js +9 -8
  239. package/dist/internal/funding/DepositAddress.js.map +1 -1
  240. package/dist/internal/funding/DepositWebhook.d.ts +25 -0
  241. package/dist/internal/funding/DepositWebhook.d.ts.map +1 -0
  242. package/dist/internal/funding/DepositWebhook.js +74 -0
  243. package/dist/internal/funding/DepositWebhook.js.map +1 -0
  244. package/dist/internal/funding/Provider.d.ts.map +1 -1
  245. package/dist/internal/funding/Provider.js +13 -12
  246. package/dist/internal/funding/Provider.js.map +1 -1
  247. package/dist/internal/funding/Reconciliation.d.ts +6 -0
  248. package/dist/internal/funding/Reconciliation.d.ts.map +1 -1
  249. package/dist/internal/funding/Reconciliation.js +42 -10
  250. package/dist/internal/funding/Reconciliation.js.map +1 -1
  251. package/dist/internal/funding/index.d.ts +1 -0
  252. package/dist/internal/funding/index.d.ts.map +1 -1
  253. package/dist/internal/funding/index.js +1 -0
  254. package/dist/internal/funding/index.js.map +1 -1
  255. package/dist/internal/funding/providers/stargate.d.ts +19 -0
  256. package/dist/internal/funding/providers/stargate.d.ts.map +1 -0
  257. package/dist/internal/funding/providers/stargate.js +143 -0
  258. package/dist/internal/funding/providers/stargate.js.map +1 -0
  259. package/dist/internal/webhookDestinations/slack.d.ts.map +1 -1
  260. package/dist/internal/webhookDestinations/slack.js +16 -0
  261. package/dist/internal/webhookDestinations/slack.js.map +1 -1
  262. package/dist/providers/index.d.ts +7 -0
  263. package/dist/providers/index.d.ts.map +1 -1
  264. package/dist/providers/index.js +3 -0
  265. package/dist/providers/index.js.map +1 -1
  266. package/package.json +2 -2
  267. package/src/App.test.ts +48 -0
  268. package/src/App.ts +7 -2
  269. package/src/Assets.test.ts +18 -0
  270. package/src/Assets.ts +22 -0
  271. package/src/Client.test-d.ts +287 -17
  272. package/src/Webhooks.ts +1 -220
  273. package/src/admin/apps/earn-vaults.test.ts +143 -0
  274. package/src/admin/apps/earn-vaults.ts +83 -6
  275. package/src/admin/apps/organizations.ts +6 -2
  276. package/src/admin/ui/src/routes/api-keys.tsx +36 -0
  277. package/src/admin/ui.generated.ts +151 -189
  278. package/src/apps/data/App.test.ts +31 -0
  279. package/src/apps/data/App.ts +64 -10
  280. package/src/apps/data/ZoneSelection.test.ts +196 -0
  281. package/src/apps/data/ZoneSelection.ts +108 -0
  282. package/src/apps/data/routes/activities.test.ts +435 -12
  283. package/src/apps/data/routes/activities.ts +562 -125
  284. package/src/apps/data/routes/balances.ts +1 -1
  285. package/src/apps/data/routes/blocks.ts +1 -1
  286. package/src/apps/data/routes/earn.test.ts +183 -23
  287. package/src/apps/data/routes/earn.ts +225 -29
  288. package/src/apps/data/routes/earn.zone-access.test.ts +46 -0
  289. package/src/apps/data/routes/exchanges.test.ts +31 -1
  290. package/src/apps/data/routes/exchanges.ts +19 -15
  291. package/src/apps/data/routes/fee-amm.ts +18 -11
  292. package/src/apps/data/routes/receipts.ts +1 -1
  293. package/src/apps/data/routes/rpc.test.ts +75 -0
  294. package/src/apps/data/routes/rpc.ts +23 -9
  295. package/src/apps/data/routes/tokenlist.ts +21 -18
  296. package/src/apps/data/routes/tokens.test.ts +29 -0
  297. package/src/apps/data/routes/tokens.ts +38 -15
  298. package/src/apps/data/routes/transactions.ts +1 -1
  299. package/src/apps/data/routes/transfers.test.ts +3 -3
  300. package/src/apps/data/routes/transfers.ts +12 -9
  301. package/src/apps/data/routes/webhooks.test.ts +179 -1497
  302. package/src/apps/data/routes/webhooks.ts +156 -976
  303. package/src/apps/data/routes/zones.test.ts +19 -13
  304. package/src/apps/funding/routes/chains.test.ts +211 -7
  305. package/src/apps/funding/routes/chains.ts +19 -12
  306. package/src/apps/funding/routes/deposit-addresses.test.ts +394 -0
  307. package/src/apps/funding/routes/deposit-addresses.ts +84 -72
  308. package/src/apps/funding/routes/providers.ts +9 -5
  309. package/src/apps/funding/routes/quotes.test.ts +46 -0
  310. package/src/apps/funding/routes/quotes.ts +8 -5
  311. package/src/apps/funding/routes/transfers.test.ts +35 -32
  312. package/src/apps/management/Billing.test.ts +26 -0
  313. package/src/apps/management/Billing.ts +24 -7
  314. package/src/apps/management/routes/api-keys.test.ts +178 -0
  315. package/src/apps/management/routes/api-keys.ts +203 -144
  316. package/src/apps/management/routes/billing.test.ts +209 -0
  317. package/src/apps/management/routes/billing.ts +254 -177
  318. package/src/apps/management/routes/faucet.test.ts +39 -0
  319. package/src/apps/management/routes/faucet.ts +75 -41
  320. package/src/apps/management/routes/invitations.test.ts +216 -0
  321. package/src/apps/management/routes/invitations.ts +186 -109
  322. package/src/apps/management/routes/invite-links.test.ts +263 -1
  323. package/src/apps/management/routes/invite-links.ts +295 -214
  324. package/src/apps/management/routes/me.test.ts +49 -0
  325. package/src/apps/management/routes/me.ts +42 -32
  326. package/src/apps/management/routes/members.test.ts +124 -1
  327. package/src/apps/management/routes/members.ts +81 -51
  328. package/src/apps/management/routes/orgs.test.ts +176 -0
  329. package/src/apps/management/routes/orgs.ts +101 -59
  330. package/src/apps/management/routes/projects.test.ts +183 -0
  331. package/src/apps/management/routes/projects.ts +124 -60
  332. package/src/apps/management/routes/scopes.test.ts +44 -0
  333. package/src/apps/management/routes/scopes.ts +37 -28
  334. package/src/apps/management/routes/usage.test.ts +92 -0
  335. package/src/apps/management/routes/usage.ts +186 -151
  336. package/src/apps/management/routes/verified-token-requests.test.ts +114 -0
  337. package/src/apps/management/routes/verified-token-requests.ts +166 -133
  338. package/src/apps/management/routes/webhooks.test.ts +313 -1
  339. package/src/apps/management/routes/webhooks.ts +220 -71
  340. package/src/apps/mpp/internal/Adapter.ts +13 -1
  341. package/src/db/Db.test.ts +42 -5
  342. package/src/db/Db.ts +85 -0
  343. package/src/db/Schema.ts +41 -3
  344. package/src/db/tables/earnVaults.test.ts +22 -0
  345. package/src/db/tables/earnVaults.ts +11 -1
  346. package/src/db/tables/organizations.test.ts +5 -2
  347. package/src/db/tables/webhookDeliveries.ts +13 -0
  348. package/src/db/tables/webhookQueueCompletions.ts +55 -0
  349. package/src/db/tables/webhookQueueEvents.ts +97 -57
  350. package/src/db/tables/webhookSubscriptions.ts +134 -144
  351. package/src/internal/Auth.ts +23 -5
  352. package/src/internal/Cache.ts +14 -7
  353. package/src/internal/EarnVaults.capabilities.test.ts +33 -0
  354. package/src/internal/EarnVaults.test.ts +79 -0
  355. package/src/internal/EarnVaults.ts +277 -0
  356. package/src/internal/MetricSink.test.ts +41 -373
  357. package/src/internal/MetricSink.ts +92 -273
  358. package/src/internal/OpenApi.ts +165 -49
  359. package/src/internal/Response.test.ts +95 -0
  360. package/src/internal/Response.ts +40 -2
  361. package/src/internal/Schema.test.ts +34 -0
  362. package/src/internal/Schema.ts +20 -9
  363. package/src/internal/Store.test.ts +186 -0
  364. package/src/internal/Store.ts +57 -17
  365. package/src/internal/Tidx.test.ts +19 -0
  366. package/src/internal/Tidx.ts +16 -4
  367. package/src/internal/WebhookTransfer.ts +1 -351
  368. package/src/internal/Webhooks.test.ts +222 -145
  369. package/src/internal/Webhooks.ts +234 -135
  370. package/src/internal/funding/Deposit.ts +71 -64
  371. package/src/internal/funding/DepositAddress.ts +50 -43
  372. package/src/internal/funding/DepositWebhook.test.ts +131 -0
  373. package/src/internal/funding/DepositWebhook.ts +101 -0
  374. package/src/internal/funding/Provider.ts +164 -142
  375. package/src/internal/funding/Reconciliation.test.ts +14 -0
  376. package/src/internal/funding/Reconciliation.ts +161 -86
  377. package/src/internal/funding/index.test.ts +1 -0
  378. package/src/internal/funding/index.ts +1 -0
  379. package/src/internal/funding/providers/index.test.ts +185 -0
  380. package/src/internal/funding/providers/stargate.ts +184 -0
  381. package/src/internal/webhookDestinations/slack.ts +15 -0
  382. package/src/providers/index.test.ts +1 -0
  383. package/src/providers/index.ts +9 -0
  384. package/src/Webhooks.bench.ts +0 -714
  385. package/src/Webhooks.memory.bench.ts +0 -250
  386. package/src/Webhooks.test.ts +0 -146
@@ -90,7 +90,7 @@ export declare namespace schema {
90
90
  usd: "usd";
91
91
  }>>;
92
92
  }, z.core.$strip>>;
93
- updatedAt: z.ZodMiniOptional<z.ZodMiniString<string>>;
93
+ updatedAt: z.ZodMiniOptional<z.ZodMiniISODateTime>;
94
94
  }, z.core.$strip>;
95
95
  /** A hosted Stripe session link. */
96
96
  const Session: z.ZodMiniObject<{
@@ -104,7 +104,7 @@ export declare namespace schema {
104
104
  expYear: z.ZodMiniNumber<number>;
105
105
  last4: z.ZodMiniString<string>;
106
106
  }, z.core.$strip>>;
107
- createdAt: z.ZodMiniString<string>;
107
+ createdAt: z.ZodMiniISODateTime;
108
108
  default: z.ZodMiniBoolean<boolean>;
109
109
  id: z.ZodMiniString<string>;
110
110
  provider: z.ZodMiniLiteral<"stripe">;
@@ -119,7 +119,7 @@ export declare namespace schema {
119
119
  expYear: z.ZodMiniNumber<number>;
120
120
  last4: z.ZodMiniString<string>;
121
121
  }, z.core.$strip>>;
122
- createdAt: z.ZodMiniString<string>;
122
+ createdAt: z.ZodMiniISODateTime;
123
123
  default: z.ZodMiniBoolean<boolean>;
124
124
  id: z.ZodMiniString<string>;
125
125
  provider: z.ZodMiniLiteral<"stripe">;
@@ -255,14 +255,14 @@ export declare function billing(): import("hono/hono-base").HonoBase<Environment
255
255
  } | {
256
256
  output: {
257
257
  error: {
258
- code: "param_invalid";
258
+ code: "organization_not_found";
259
259
  details?: readonly Response.error.Detail[] | undefined;
260
260
  message: string;
261
261
  };
262
262
  requestId: string;
263
263
  };
264
264
  outputFormat: "json";
265
- status: 400;
265
+ status: 404;
266
266
  input: {
267
267
  param: {
268
268
  orgId: string;
@@ -275,14 +275,14 @@ export declare function billing(): import("hono/hono-base").HonoBase<Environment
275
275
  } | {
276
276
  output: {
277
277
  error: {
278
- code: "organization_not_found";
278
+ code: "param_invalid";
279
279
  details?: readonly Response.error.Detail[] | undefined;
280
280
  message: string;
281
281
  };
282
282
  requestId: string;
283
283
  };
284
284
  outputFormat: "json";
285
- status: 404;
285
+ status: 400;
286
286
  input: {
287
287
  param: {
288
288
  orgId: string;
@@ -522,14 +522,14 @@ export declare function billing(): import("hono/hono-base").HonoBase<Environment
522
522
  } | {
523
523
  output: {
524
524
  error: {
525
- code: "body_invalid";
525
+ code: "organization_not_found";
526
526
  details?: readonly Response.error.Detail[] | undefined;
527
527
  message: string;
528
528
  };
529
529
  requestId: string;
530
530
  };
531
531
  outputFormat: "json";
532
- status: 400;
532
+ status: 404;
533
533
  input: {
534
534
  param: {
535
535
  orgId: string;
@@ -554,7 +554,39 @@ export declare function billing(): import("hono/hono-base").HonoBase<Environment
554
554
  } | {
555
555
  output: {
556
556
  error: {
557
- code: "param_invalid";
557
+ code: "forbidden";
558
+ details?: readonly Response.error.Detail[] | undefined;
559
+ message: string;
560
+ };
561
+ requestId: string;
562
+ };
563
+ outputFormat: "json";
564
+ status: 403;
565
+ input: {
566
+ param: {
567
+ orgId: string;
568
+ };
569
+ } & {
570
+ query?: {
571
+ environment?: string | string[];
572
+ } | undefined;
573
+ } & {
574
+ json: {
575
+ spendLimit?: {
576
+ amount: string;
577
+ currency?: "usd" | undefined;
578
+ period?: "month" | undefined;
579
+ } | null | undefined;
580
+ txFeeLimit?: {
581
+ amount: string;
582
+ currency?: "usd" | undefined;
583
+ } | null | undefined;
584
+ };
585
+ };
586
+ } | {
587
+ output: {
588
+ error: {
589
+ code: "body_invalid";
558
590
  details?: readonly Response.error.Detail[] | undefined;
559
591
  message: string;
560
592
  };
@@ -586,14 +618,14 @@ export declare function billing(): import("hono/hono-base").HonoBase<Environment
586
618
  } | {
587
619
  output: {
588
620
  error: {
589
- code: "organization_not_found";
621
+ code: "param_invalid";
590
622
  details?: readonly Response.error.Detail[] | undefined;
591
623
  message: string;
592
624
  };
593
625
  requestId: string;
594
626
  };
595
627
  outputFormat: "json";
596
- status: 404;
628
+ status: 400;
597
629
  input: {
598
630
  param: {
599
631
  orgId: string;
@@ -785,14 +817,14 @@ export declare function billing(): import("hono/hono-base").HonoBase<Environment
785
817
  } | {
786
818
  output: {
787
819
  error: {
788
- code: "param_invalid";
820
+ code: "organization_not_found";
789
821
  details?: readonly Response.error.Detail[] | undefined;
790
822
  message: string;
791
823
  };
792
824
  requestId: string;
793
825
  };
794
826
  outputFormat: "json";
795
- status: 400;
827
+ status: 404;
796
828
  input: {
797
829
  param: {
798
830
  orgId: string;
@@ -805,14 +837,14 @@ export declare function billing(): import("hono/hono-base").HonoBase<Environment
805
837
  } | {
806
838
  output: {
807
839
  error: {
808
- code: "organization_not_found";
840
+ code: "forbidden";
809
841
  details?: readonly Response.error.Detail[] | undefined;
810
842
  message: string;
811
843
  };
812
844
  requestId: string;
813
845
  };
814
846
  outputFormat: "json";
815
- status: 404;
847
+ status: 403;
816
848
  input: {
817
849
  param: {
818
850
  orgId: string;
@@ -825,14 +857,14 @@ export declare function billing(): import("hono/hono-base").HonoBase<Environment
825
857
  } | {
826
858
  output: {
827
859
  error: {
828
- code: "forbidden";
860
+ code: "param_invalid";
829
861
  details?: readonly Response.error.Detail[] | undefined;
830
862
  message: string;
831
863
  };
832
864
  requestId: string;
833
865
  };
834
866
  outputFormat: "json";
835
- status: 403;
867
+ status: 400;
836
868
  input: {
837
869
  param: {
838
870
  orgId: string;
@@ -1024,14 +1056,14 @@ export declare function billing(): import("hono/hono-base").HonoBase<Environment
1024
1056
  } | {
1025
1057
  output: {
1026
1058
  error: {
1027
- code: "param_invalid";
1059
+ code: "organization_not_found";
1028
1060
  details?: readonly Response.error.Detail[] | undefined;
1029
1061
  message: string;
1030
1062
  };
1031
1063
  requestId: string;
1032
1064
  };
1033
1065
  outputFormat: "json";
1034
- status: 400;
1066
+ status: 404;
1035
1067
  input: {
1036
1068
  param: {
1037
1069
  orgId: string;
@@ -1044,14 +1076,34 @@ export declare function billing(): import("hono/hono-base").HonoBase<Environment
1044
1076
  } | {
1045
1077
  output: {
1046
1078
  error: {
1047
- code: "organization_not_found";
1079
+ code: "forbidden";
1048
1080
  details?: readonly Response.error.Detail[] | undefined;
1049
1081
  message: string;
1050
1082
  };
1051
1083
  requestId: string;
1052
1084
  };
1053
1085
  outputFormat: "json";
1054
- status: 404;
1086
+ status: 403;
1087
+ input: {
1088
+ param: {
1089
+ orgId: string;
1090
+ };
1091
+ } & {
1092
+ query?: {
1093
+ environment?: string | string[];
1094
+ } | undefined;
1095
+ };
1096
+ } | {
1097
+ output: {
1098
+ error: {
1099
+ code: "param_invalid";
1100
+ details?: readonly Response.error.Detail[] | undefined;
1101
+ message: string;
1102
+ };
1103
+ requestId: string;
1104
+ };
1105
+ outputFormat: "json";
1106
+ status: 400;
1055
1107
  input: {
1056
1108
  param: {
1057
1109
  orgId: string;
@@ -1243,14 +1295,14 @@ export declare function billing(): import("hono/hono-base").HonoBase<Environment
1243
1295
  } | {
1244
1296
  output: {
1245
1297
  error: {
1246
- code: "param_invalid";
1298
+ code: "organization_not_found";
1247
1299
  details?: readonly Response.error.Detail[] | undefined;
1248
1300
  message: string;
1249
1301
  };
1250
1302
  requestId: string;
1251
1303
  };
1252
1304
  outputFormat: "json";
1253
- status: 400;
1305
+ status: 404;
1254
1306
  input: {
1255
1307
  param: {
1256
1308
  orgId: string;
@@ -1263,14 +1315,14 @@ export declare function billing(): import("hono/hono-base").HonoBase<Environment
1263
1315
  } | {
1264
1316
  output: {
1265
1317
  error: {
1266
- code: "organization_not_found";
1318
+ code: "param_invalid";
1267
1319
  details?: readonly Response.error.Detail[] | undefined;
1268
1320
  message: string;
1269
1321
  };
1270
1322
  requestId: string;
1271
1323
  };
1272
1324
  outputFormat: "json";
1273
- status: 404;
1325
+ status: 400;
1274
1326
  input: {
1275
1327
  param: {
1276
1328
  orgId: string;
@@ -1460,14 +1512,14 @@ export declare function billing(): import("hono/hono-base").HonoBase<Environment
1460
1512
  } | {
1461
1513
  output: {
1462
1514
  error: {
1463
- code: "param_invalid";
1515
+ code: "organization_not_found";
1464
1516
  details?: readonly Response.error.Detail[] | undefined;
1465
1517
  message: string;
1466
1518
  };
1467
1519
  requestId: string;
1468
1520
  };
1469
1521
  outputFormat: "json";
1470
- status: 400;
1522
+ status: 404;
1471
1523
  input: {
1472
1524
  param: {
1473
1525
  methodId: string;
@@ -1481,14 +1533,35 @@ export declare function billing(): import("hono/hono-base").HonoBase<Environment
1481
1533
  } | {
1482
1534
  output: {
1483
1535
  error: {
1484
- code: "organization_not_found";
1536
+ code: "forbidden";
1485
1537
  details?: readonly Response.error.Detail[] | undefined;
1486
1538
  message: string;
1487
1539
  };
1488
1540
  requestId: string;
1489
1541
  };
1490
1542
  outputFormat: "json";
1491
- status: 404;
1543
+ status: 403;
1544
+ input: {
1545
+ param: {
1546
+ methodId: string;
1547
+ orgId: string;
1548
+ };
1549
+ } & {
1550
+ query?: {
1551
+ environment?: string | string[];
1552
+ } | undefined;
1553
+ };
1554
+ } | {
1555
+ output: {
1556
+ error: {
1557
+ code: "param_invalid";
1558
+ details?: readonly Response.error.Detail[] | undefined;
1559
+ message: string;
1560
+ };
1561
+ requestId: string;
1562
+ };
1563
+ outputFormat: "json";
1564
+ status: 400;
1492
1565
  input: {
1493
1566
  param: {
1494
1567
  methodId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"billing.d.ts","sourceRoot":"","sources":["../../../../src/apps/management/routes/billing.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,CAAC,MAAM,UAAU,CAAA;AAQ7B,OAAO,KAAK,QAAQ,MAAM,+BAA+B,CAAA;AAMzD,OAAO,KAAK,EAAW,WAAW,EAAE,MAAM,WAAW,CAAA;AAErD,iDAAiD;AACjD,yBAAiB,MAAM,CAAC;IAQtB,6DAA6D;IACtD,MAAM,MAAM;;qBAEoD,CAAA;IAEvE,0DAA0D;IACnD,MAAM,KAAK;;;;;sBAEsD,CAAA;IAExE,qDAAqD;IAC9C,MAAM,YAAY;;;qBAU6C,CAAA;IAEtE,gCAAgC;IACzB,MAAM,UAAU;;;;;;;;qBAuBtB,CAAA;IAED,iCAAiC;IAC1B,MAAM,UAAU;;;;;qBAiBtB,CAAA;IAED,qEAAqE;IAC9D,MAAM,KAAK;;;;;;;;;;;;;;;;qBAcjB,CAAA;IAED,uCAAuC;IAChC,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAmDnB,CAAA;IAED,oCAAoC;IAC7B,MAAM,OAAO;;qBAUnB,CAAA;IAED,gCAAgC;IACzB,MAAM,aAAa;;;;;;;;;;;;qBAkDzB,CAAA;IAED,yCAAyC;IAClC,MAAM,cAAc;;;;;;;;;;;;;;qBAK1B,CAAA;CACF;AAED;;GAEG;AACH,wBAAgB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BA+gBtB"}
1
+ {"version":3,"file":"billing.d.ts","sourceRoot":"","sources":["../../../../src/apps/management/routes/billing.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,CAAC,MAAM,UAAU,CAAA;AAQ7B,OAAO,KAAK,QAAQ,MAAM,+BAA+B,CAAA;AAMzD,OAAO,KAAK,EAAW,WAAW,EAAE,MAAM,WAAW,CAAA;AAErD,iDAAiD;AACjD,yBAAiB,MAAM,CAAC;IAQtB,6DAA6D;IACtD,MAAM,MAAM;;qBAEoD,CAAA;IAEvE,0DAA0D;IACnD,MAAM,KAAK;;;;;sBAEsD,CAAA;IAExE,qDAAqD;IAC9C,MAAM,YAAY;;;qBAU6C,CAAA;IAEtE,gCAAgC;IACzB,MAAM,UAAU;;;;;;;;qBA0BtB,CAAA;IAED,iCAAiC;IAC1B,MAAM,UAAU;;;;;qBAoBtB,CAAA;IAED,qEAAqE;IAC9D,MAAM,KAAK;;;;;;;;;;;;;;;;qBAiBjB,CAAA;IAED,uCAAuC;IAChC,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAsDnB,CAAA;IAED,oCAAoC;IAC7B,MAAM,OAAO;;qBAanB,CAAA;IAED,gCAAgC;IACzB,MAAM,aAAa;;;;;;;;;;;;qBAqDzB,CAAA;IAED,yCAAyC;IAClC,MAAM,cAAc;;;;;;;;;;;;;;qBAU1B,CAAA;CACF;AAED;;GAEG;AACH,wBAAgB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAqkBtB"}
@@ -37,7 +37,7 @@ export var schema;
37
37
  })
38
38
  .check(z.describe('Path parameters addressing one payment method.'));
39
39
  /** A per-period spend limit. */
40
- schema.SpendLimit = Schema.describe(z.object({
40
+ schema.SpendLimit = OpenApi.component(Schema.describe(z.object({
41
41
  amount: z.string().check(
42
42
  // The lookahead rejects zero: a zero limit would refuse all
43
43
  // sponsorship, which `null` (clear) already expresses.
@@ -48,9 +48,9 @@ export var schema;
48
48
  period: z
49
49
  ._default(z.enum(BillingSettings.periods), 'month')
50
50
  .check(z.describe('Window the limit applies over; `month` (UTC calendar) only today.'), z.meta({ examples: ['month'] })),
51
- }), 'A per-period spend limit.');
51
+ }), 'A per-period spend limit.'), 'BillingSpendLimit');
52
52
  /** A per-transaction fee cap. */
53
- schema.TxFeeLimit = Schema.describe(z.object({
53
+ schema.TxFeeLimit = OpenApi.component(Schema.describe(z.object({
54
54
  amount: z.string().check(
55
55
  // The lookahead rejects zero: a zero cap would refuse every
56
56
  // transaction, which is not a supported configuration.
@@ -58,17 +58,17 @@ export var schema;
58
58
  currency: z
59
59
  ._default(z.enum(BillingSettings.currencies), 'usd')
60
60
  .check(z.describe('Currency the cap is denominated in; `usd` only today.'), z.meta({ examples: ['usd'] })),
61
- }), 'A per-transaction fee cap.');
61
+ }), 'A per-transaction fee cap.'), 'BillingTransactionFeeLimit');
62
62
  /** PATCH body; absent fields stay unchanged, null clears a limit. */
63
- schema.Patch = Schema.describe(z.object({
63
+ schema.Patch = OpenApi.component(Schema.describe(z.object({
64
64
  spendLimit: z
65
65
  .optional(z.nullable(schema.SpendLimit))
66
66
  .check(z.describe('Spend limit per period; absent leaves it unchanged, null removes it.'), z.meta({ examples: [{ amount: '250', currency: 'usd', period: 'month' }] })),
67
67
  txFeeLimit: z.optional(z.nullable(schema.TxFeeLimit)).check(z.describe('Per-transaction fee cap; absent leaves it unchanged, null restores the platform default.'), // prettier-ignore
68
68
  z.meta({ examples: [{ amount: '0.50', currency: 'usd' }] })),
69
- }), 'Billing settings to apply.');
69
+ }), 'Billing settings to apply.'), 'UpdateBillingRequest');
70
70
  /** An organization's billing state. */
71
- schema.Billing = Schema.describe(z.object({
71
+ schema.Billing = OpenApi.component(Schema.describe(z.object({
72
72
  enabledSources: z
73
73
  .array(z.enum(EnabledBillingSources.sources))
74
74
  .check(z.describe('Billing sources this organization may set up.'), z.meta({ examples: [['stripe']] })),
@@ -92,17 +92,17 @@ export var schema;
92
92
  txFeeLimit: z
93
93
  .optional(schema.TxFeeLimit)
94
94
  .check(z.describe('Configured per-transaction fee cap; absent when the platform default applies.'), z.meta({ examples: [{ amount: '0.50', currency: 'usd' }] })),
95
- updatedAt: z.optional(z.string()).check(z.describe('When the billing status last changed (ISO 8601); absent before first checkout.'), // prettier-ignore
95
+ updatedAt: z.optional(z.iso.datetime()).check(z.describe('When the billing status last changed (ISO 8601); absent before first checkout.'), // prettier-ignore
96
96
  z.meta({ examples: ['2026-01-01T00:00:00.000Z'] })),
97
- }), "An organization's billing state.");
97
+ }), "An organization's billing state."), 'Billing');
98
98
  /** A hosted Stripe session link. */
99
- schema.Session = Schema.describe(z.object({
99
+ schema.Session = OpenApi.component(Schema.describe(z.object({
100
100
  url: z
101
101
  .url()
102
102
  .check(z.describe('Hosted Stripe session URL; navigate the browser here.'), z.meta({ examples: ['https://checkout.stripe.com/c/pay/cs_test_a1b2c3'] })),
103
- }), 'A hosted Stripe session link.');
103
+ }), 'A hosted Stripe session link.'), 'BillingSession');
104
104
  /** A payment method on file. */
105
- schema.PaymentMethod = Schema.describe(z.object({
105
+ schema.PaymentMethod = OpenApi.component(Schema.describe(z.object({
106
106
  card: z
107
107
  .optional(z.object({
108
108
  brand: z
@@ -117,8 +117,8 @@ export var schema;
117
117
  .check(z.describe('Last four digits.'), z.meta({ examples: ['4242'] })),
118
118
  }))
119
119
  .check(z.describe('Card details; present when `type` is `card`.'), z.meta({ examples: [{ brand: 'visa', expMonth: 12, expYear: 2030, last4: '4242' }] })),
120
- createdAt: z
121
- .string()
120
+ createdAt: z.iso
121
+ .datetime()
122
122
  .check(z.describe('When the method was attached (ISO 8601).'), z.meta({ examples: ['2026-01-01T00:00:00.000Z'] })),
123
123
  default: z
124
124
  .boolean()
@@ -132,11 +132,13 @@ export var schema;
132
132
  type: z
133
133
  .string()
134
134
  .check(z.describe('Method type (e.g. `card`, `us_bank_account`).'), z.meta({ examples: ['card'] })),
135
- }), 'A payment method on file.');
135
+ }), 'A payment method on file.'), 'BillingPaymentMethod');
136
136
  /** An organization's payment methods. */
137
- schema.PaymentMethods = Schema.describe(z.object({
138
- data: z.array(schema.PaymentMethod).check(z.describe('Payment methods on file, newest first.')),
139
- }), "An organization's payment methods.");
137
+ schema.PaymentMethods = OpenApi.component(Schema.describe(z.object({
138
+ data: z
139
+ .array(schema.PaymentMethod)
140
+ .check(z.describe('Payment methods on file, newest first.'), z.meta({ examples: [[]] })),
141
+ }), "An organization's payment methods."), 'BillingPaymentMethodList');
140
142
  })(schema || (schema = {}));
141
143
  /**
142
144
  * Mounts billing routes. Reads require membership or scoped API key access; organizations without provider state return `none`.
@@ -153,7 +155,14 @@ export function billing() {
153
155
  operationId: 'getBilling',
154
156
  responses: OpenApi.responses({
155
157
  errors: {
156
- 404: 'No accessible organization was found for this id.',
158
+ 400: {
159
+ codes: ['param_invalid', 'query_invalid'],
160
+ description: 'Malformed API key, invalid path, or invalid query.',
161
+ },
162
+ 404: {
163
+ codes: ['organization_not_found'],
164
+ description: 'No accessible organization was found for this id.',
165
+ },
157
166
  },
158
167
  success: { description: "The organization's billing state.", schema: schema.Billing },
159
168
  }),
@@ -195,8 +204,14 @@ export function billing() {
195
204
  operationId: 'updateBilling',
196
205
  responses: OpenApi.responses({
197
206
  errors: {
198
- 403: 'Requires the owner role.',
199
- 404: 'No accessible organization was found for this id.',
207
+ 400: {
208
+ codes: ['body_invalid', 'param_invalid', 'query_invalid'],
209
+ description: 'Malformed API key, invalid path, invalid query, or invalid body.',
210
+ },
211
+ 404: {
212
+ codes: ['organization_not_found'],
213
+ description: 'No accessible organization was found for this id.',
214
+ },
200
215
  },
201
216
  success: {
202
217
  description: "The organization's updated billing state.",
@@ -210,6 +225,8 @@ export function billing() {
210
225
  return Auth.accessError(c);
211
226
  if (Auth.narrowScope)
212
227
  return Auth.ensureOrgError(c);
228
+ if (Auth.narrowOrgRole)
229
+ return Auth.ensureOrgRoleError(c);
213
230
  if (OpenApi.narrowValidation)
214
231
  return OpenApi.validationError(c, {
215
232
  code: 'param_invalid',
@@ -264,12 +281,22 @@ export function billing() {
264
281
  operationId: 'createStripeCheckout',
265
282
  responses: OpenApi.responses({
266
283
  errors: {
284
+ 400: {
285
+ codes: ['param_invalid', 'query_invalid'],
286
+ description: 'Malformed API key, invalid path, or invalid query.',
287
+ },
267
288
  403: {
268
- codes: ['api_key_forbidden', 'billing_source_disabled', 'forbidden'],
289
+ codes: ['billing_source_disabled'],
269
290
  description: 'Requires the owner role and Stripe billing enabled.',
270
291
  },
271
- 404: 'No accessible organization was found for this id.',
272
- 501: 'Billing is not configured on this deployment.',
292
+ 404: {
293
+ codes: ['organization_not_found'],
294
+ description: 'No accessible organization was found for this id.',
295
+ },
296
+ 501: {
297
+ codes: ['billing_unconfigured'],
298
+ description: 'Billing is not configured on this deployment.',
299
+ },
273
300
  },
274
301
  success: {
275
302
  description: 'A Stripe Checkout (setup mode) session for attaching a payment method.',
@@ -352,9 +379,18 @@ export function billing() {
352
379
  operationId: 'createStripeManage',
353
380
  responses: OpenApi.responses({
354
381
  errors: {
355
- 403: 'Requires the owner role.',
356
- 404: 'No accessible organization, or no billing to manage yet.',
357
- 501: 'Billing is not configured on this deployment.',
382
+ 400: {
383
+ codes: ['param_invalid', 'query_invalid'],
384
+ description: 'Malformed API key, invalid path, or invalid query.',
385
+ },
386
+ 404: {
387
+ codes: ['billing_not_found', 'organization_not_found'],
388
+ description: 'No accessible organization or billing account was found.',
389
+ },
390
+ 501: {
391
+ codes: ['billing_unconfigured'],
392
+ description: 'Billing is not configured on this deployment.',
393
+ },
358
394
  },
359
395
  success: {
360
396
  description: 'A Stripe billing-portal session for managing payment methods and invoices.', // prettier-ignore
@@ -368,6 +404,8 @@ export function billing() {
368
404
  return Auth.accessError(c);
369
405
  if (Auth.narrowScope)
370
406
  return Auth.ensureOrgError(c);
407
+ if (Auth.narrowOrgRole)
408
+ return Auth.ensureOrgRoleError(c);
371
409
  if (OpenApi.narrowValidation)
372
410
  return OpenApi.validationError(c, {
373
411
  code: 'param_invalid',
@@ -411,8 +449,18 @@ export function billing() {
411
449
  operationId: 'getBillingPaymentMethods',
412
450
  responses: OpenApi.responses({
413
451
  errors: {
414
- 404: 'No accessible organization was found for this id.',
415
- 501: 'Billing is not configured on this deployment.',
452
+ 400: {
453
+ codes: ['param_invalid', 'query_invalid'],
454
+ description: 'Malformed API key, invalid path, or invalid query.',
455
+ },
456
+ 404: {
457
+ codes: ['organization_not_found'],
458
+ description: 'No accessible organization was found for this id.',
459
+ },
460
+ 501: {
461
+ codes: ['billing_unconfigured'],
462
+ description: 'Billing is not configured on this deployment.',
463
+ },
416
464
  },
417
465
  success: {
418
466
  description: "The organization's payment methods.",
@@ -490,9 +538,18 @@ export function billing() {
490
538
  operationId: 'deleteBillingPaymentMethod',
491
539
  responses: OpenApi.responses({
492
540
  errors: {
493
- 403: 'Requires the owner role.',
494
- 404: 'No accessible organization, billing, or payment method for this id.',
495
- 501: 'Billing is not configured on this deployment.',
541
+ 400: {
542
+ codes: ['param_invalid', 'query_invalid'],
543
+ description: 'Malformed API key, invalid path, or invalid query.',
544
+ },
545
+ 404: {
546
+ codes: ['billing_not_found', 'organization_not_found', 'payment_method_not_found'],
547
+ description: 'No accessible organization, billing account, or payment method was found.', // prettier-ignore
548
+ },
549
+ 501: {
550
+ codes: ['billing_unconfigured'],
551
+ description: 'Billing is not configured on this deployment.',
552
+ },
496
553
  },
497
554
  success: {
498
555
  description: "The organization's updated billing state.",
@@ -506,6 +563,8 @@ export function billing() {
506
563
  return Auth.accessError(c);
507
564
  if (Auth.narrowScope)
508
565
  return Auth.ensureOrgError(c);
566
+ if (Auth.narrowOrgRole)
567
+ return Auth.ensureOrgRoleError(c);
509
568
  if (OpenApi.narrowValidation)
510
569
  return OpenApi.validationError(c, {
511
570
  code: 'param_invalid',