@baruk/core 0.4.2 → 0.6.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 (576) hide show
  1. package/.baruk-provenance.json +4 -4
  2. package/CHANGELOG.md +42 -0
  3. package/dist/audit/repository.d.ts +33 -1
  4. package/dist/audit/repository.d.ts.map +1 -1
  5. package/dist/audit/repository.js +41 -7
  6. package/dist/audit/repository.js.map +1 -1
  7. package/dist/auth/service.d.ts +21 -0
  8. package/dist/auth/service.d.ts.map +1 -1
  9. package/dist/auth/service.js +46 -1
  10. package/dist/auth/service.js.map +1 -1
  11. package/dist/billing/ar-repository.d.ts +41 -1
  12. package/dist/billing/ar-repository.d.ts.map +1 -1
  13. package/dist/billing/ar-repository.js +82 -6
  14. package/dist/billing/ar-repository.js.map +1 -1
  15. package/dist/billing/provider-account.d.ts +38 -0
  16. package/dist/billing/provider-account.d.ts.map +1 -1
  17. package/dist/billing/provider-account.js +58 -2
  18. package/dist/billing/provider-account.js.map +1 -1
  19. package/dist/billing/repository.d.ts +44 -0
  20. package/dist/billing/repository.d.ts.map +1 -1
  21. package/dist/billing/repository.js +49 -5
  22. package/dist/billing/repository.js.map +1 -1
  23. package/dist/cjs/audit/repository.js +41 -7
  24. package/dist/cjs/audit/repository.js.map +1 -1
  25. package/dist/cjs/auth/service.js +46 -1
  26. package/dist/cjs/auth/service.js.map +1 -1
  27. package/dist/cjs/billing/ar-repository.js +82 -6
  28. package/dist/cjs/billing/ar-repository.js.map +1 -1
  29. package/dist/cjs/billing/provider-account.js +60 -1
  30. package/dist/cjs/billing/provider-account.js.map +1 -1
  31. package/dist/cjs/billing/repository.js +51 -5
  32. package/dist/cjs/billing/repository.js.map +1 -1
  33. package/dist/cjs/clients/ibge.js +117 -0
  34. package/dist/cjs/clients/ibge.js.map +1 -0
  35. package/dist/cjs/clients/registry/http.js +157 -0
  36. package/dist/cjs/clients/registry/http.js.map +1 -0
  37. package/dist/cjs/clients/registry/ibge-municipios.js +28 -0
  38. package/dist/cjs/clients/registry/ibge-municipios.js.map +1 -0
  39. package/dist/cjs/clients/registry/ibge.js +63 -0
  40. package/dist/cjs/clients/registry/ibge.js.map +1 -0
  41. package/dist/cjs/clients/registry/lookup.js +191 -0
  42. package/dist/cjs/clients/registry/lookup.js.map +1 -0
  43. package/dist/cjs/clients/registry/provider.js +34 -0
  44. package/dist/cjs/clients/registry/provider.js.map +1 -0
  45. package/dist/cjs/clients/registry/resolve.js +47 -0
  46. package/dist/cjs/clients/registry/resolve.js.map +1 -0
  47. package/dist/cjs/clients/registry/serpro.js +149 -0
  48. package/dist/cjs/clients/registry/serpro.js.map +1 -0
  49. package/dist/cjs/clients/registry/service.js +230 -0
  50. package/dist/cjs/clients/registry/service.js.map +1 -0
  51. package/dist/cjs/clients/registry/synthetic.js +165 -0
  52. package/dist/cjs/clients/registry/synthetic.js.map +1 -0
  53. package/dist/cjs/clients/repository.js +190 -9
  54. package/dist/cjs/clients/repository.js.map +1 -1
  55. package/dist/cjs/collection/branding.js +190 -0
  56. package/dist/cjs/collection/branding.js.map +1 -1
  57. package/dist/cjs/collection/clearance-store.js +74 -0
  58. package/dist/cjs/collection/clearance-store.js.map +1 -0
  59. package/dist/cjs/collection/communication-runtime.js +65 -2
  60. package/dist/cjs/collection/communication-runtime.js.map +1 -1
  61. package/dist/cjs/collection/engine.js +20 -0
  62. package/dist/cjs/collection/engine.js.map +1 -1
  63. package/dist/cjs/collection/policy.js +29 -1
  64. package/dist/cjs/collection/policy.js.map +1 -1
  65. package/dist/cjs/communication/clearance.js +18 -0
  66. package/dist/cjs/communication/clearance.js.map +1 -0
  67. package/dist/cjs/communication/dry-run-scenario.js +5 -0
  68. package/dist/cjs/communication/dry-run-scenario.js.map +1 -1
  69. package/dist/cjs/communication/engine.js +12 -0
  70. package/dist/cjs/communication/engine.js.map +1 -1
  71. package/dist/cjs/communication/policy.js.map +1 -1
  72. package/dist/cjs/competence/business-days.js +155 -0
  73. package/dist/cjs/competence/business-days.js.map +1 -0
  74. package/dist/cjs/competence/catalog-validation.js +174 -0
  75. package/dist/cjs/competence/catalog-validation.js.map +1 -0
  76. package/dist/cjs/competence/obligation-preview.js +190 -0
  77. package/dist/cjs/competence/obligation-preview.js.map +1 -0
  78. package/dist/cjs/competence/repository.js +330 -17
  79. package/dist/cjs/competence/repository.js.map +1 -1
  80. package/dist/cjs/dashboard/pilot-panel.js +90 -0
  81. package/dist/cjs/dashboard/pilot-panel.js.map +1 -0
  82. package/dist/cjs/dashboard/repository.js +11 -1
  83. package/dist/cjs/dashboard/repository.js.map +1 -1
  84. package/dist/cjs/db/client.js +17 -11
  85. package/dist/cjs/db/client.js.map +1 -1
  86. package/dist/cjs/db/provision-e2e-identity.js +116 -0
  87. package/dist/cjs/db/provision-e2e-identity.js.map +1 -0
  88. package/dist/cjs/fiscal/applicability.js +164 -0
  89. package/dist/cjs/fiscal/applicability.js.map +1 -0
  90. package/dist/cjs/fiscal/collection/authorization.js +186 -0
  91. package/dist/cjs/fiscal/collection/authorization.js.map +1 -0
  92. package/dist/cjs/fiscal/collection/competence.js +97 -0
  93. package/dist/cjs/fiscal/collection/competence.js.map +1 -0
  94. package/dist/cjs/fiscal/collection/first-contact.js +204 -0
  95. package/dist/cjs/fiscal/collection/first-contact.js.map +1 -0
  96. package/dist/cjs/fiscal/collection/plan.js +122 -0
  97. package/dist/cjs/fiscal/collection/plan.js.map +1 -0
  98. package/dist/cjs/fiscal/conditions.js +198 -0
  99. package/dist/cjs/fiscal/conditions.js.map +1 -0
  100. package/dist/cjs/fiscal/contracts/nfse-adn-contract.js +390 -0
  101. package/dist/cjs/fiscal/contracts/nfse-adn-contract.js.map +1 -0
  102. package/dist/cjs/fiscal/contracts/nfse-adn-endpoint.js +108 -0
  103. package/dist/cjs/fiscal/contracts/nfse-adn-endpoint.js.map +1 -0
  104. package/dist/cjs/fiscal/contracts/nfse-adn-envelope.js +220 -0
  105. package/dist/cjs/fiscal/contracts/nfse-adn-envelope.js.map +1 -0
  106. package/dist/cjs/fiscal/coverage/model.js +137 -0
  107. package/dist/cjs/fiscal/coverage/model.js.map +1 -0
  108. package/dist/cjs/fiscal/coverage/requests.js +99 -0
  109. package/dist/cjs/fiscal/coverage/requests.js.map +1 -0
  110. package/dist/cjs/fiscal/credentials/inspect.js +182 -0
  111. package/dist/cjs/fiscal/credentials/inspect.js.map +1 -0
  112. package/dist/cjs/fiscal/credentials/material.js +168 -0
  113. package/dist/cjs/fiscal/credentials/material.js.map +1 -0
  114. package/dist/cjs/fiscal/credentials/onboarding.js +266 -0
  115. package/dist/cjs/fiscal/credentials/onboarding.js.map +1 -0
  116. package/dist/cjs/fiscal/credentials/readiness.js +190 -0
  117. package/dist/cjs/fiscal/credentials/readiness.js.map +1 -0
  118. package/dist/cjs/fiscal/eligibility.js +199 -0
  119. package/dist/cjs/fiscal/eligibility.js.map +1 -0
  120. package/dist/cjs/fiscal/enrollment.js +134 -0
  121. package/dist/cjs/fiscal/enrollment.js.map +1 -0
  122. package/dist/cjs/fiscal/ingestion/__fixtures__/nfse.js +128 -0
  123. package/dist/cjs/fiscal/ingestion/__fixtures__/nfse.js.map +1 -0
  124. package/dist/cjs/fiscal/ingestion/adn-transport.js +229 -0
  125. package/dist/cjs/fiscal/ingestion/adn-transport.js.map +1 -0
  126. package/dist/cjs/fiscal/ingestion/direction.js +36 -0
  127. package/dist/cjs/fiscal/ingestion/direction.js.map +1 -0
  128. package/dist/cjs/fiscal/ingestion/nfse-adn.js +228 -0
  129. package/dist/cjs/fiscal/ingestion/nfse-adn.js.map +1 -0
  130. package/dist/cjs/fiscal/ingestion/pipeline.js +704 -0
  131. package/dist/cjs/fiscal/ingestion/pipeline.js.map +1 -0
  132. package/dist/cjs/fiscal/ingestion/provider.js +51 -0
  133. package/dist/cjs/fiscal/ingestion/provider.js.map +1 -0
  134. package/dist/cjs/fiscal/ingestion/repository.js +132 -0
  135. package/dist/cjs/fiscal/ingestion/repository.js.map +1 -0
  136. package/dist/cjs/fiscal/ingestion/synthetic-provider.js +103 -0
  137. package/dist/cjs/fiscal/ingestion/synthetic-provider.js.map +1 -0
  138. package/dist/cjs/fiscal/ingestion/synthetic-transport-types.js +13 -0
  139. package/dist/cjs/fiscal/ingestion/synthetic-transport-types.js.map +1 -0
  140. package/dist/cjs/fiscal/ingestion/synthetic-transport.js +61 -0
  141. package/dist/cjs/fiscal/ingestion/synthetic-transport.js.map +1 -0
  142. package/dist/cjs/fiscal/ingestion/xml-reader.js +121 -0
  143. package/dist/cjs/fiscal/ingestion/xml-reader.js.map +1 -0
  144. package/dist/cjs/fiscal/repository.js +470 -0
  145. package/dist/cjs/fiscal/repository.js.map +1 -0
  146. package/dist/cjs/fiscal/sync/circuit.js +124 -0
  147. package/dist/cjs/fiscal/sync/circuit.js.map +1 -0
  148. package/dist/cjs/fiscal/sync/intervention.js +140 -0
  149. package/dist/cjs/fiscal/sync/intervention.js.map +1 -0
  150. package/dist/cjs/fiscal/sync/lease.js +146 -0
  151. package/dist/cjs/fiscal/sync/lease.js.map +1 -0
  152. package/dist/cjs/fiscal/sync/observability.js +244 -0
  153. package/dist/cjs/fiscal/sync/observability.js.map +1 -0
  154. package/dist/cjs/fiscal/sync/orchestrator.js +490 -0
  155. package/dist/cjs/fiscal/sync/orchestrator.js.map +1 -0
  156. package/dist/cjs/fiscal/sync/policy.js +143 -0
  157. package/dist/cjs/fiscal/sync/policy.js.map +1 -0
  158. package/dist/cjs/fiscal/sync/reprocess.js +241 -0
  159. package/dist/cjs/fiscal/sync/reprocess.js.map +1 -0
  160. package/dist/cjs/fiscal/sync/retry.js +183 -0
  161. package/dist/cjs/fiscal/sync/retry.js.map +1 -0
  162. package/dist/cjs/fiscal/sync/secret-boundary.js +123 -0
  163. package/dist/cjs/fiscal/sync/secret-boundary.js.map +1 -0
  164. package/dist/cjs/fiscal/transport/https.js +309 -0
  165. package/dist/cjs/fiscal/transport/https.js.map +1 -0
  166. package/dist/cjs/fiscal/transport/synthetic-tls.js +380 -0
  167. package/dist/cjs/fiscal/transport/synthetic-tls.js.map +1 -0
  168. package/dist/cjs/fiscal/transport/types.js +93 -0
  169. package/dist/cjs/fiscal/transport/types.js.map +1 -0
  170. package/dist/cjs/import/br-documents.js +85 -0
  171. package/dist/cjs/import/br-documents.js.map +1 -0
  172. package/dist/cjs/import/clients-import.js +347 -40
  173. package/dist/cjs/import/clients-import.js.map +1 -1
  174. package/dist/cjs/index.js +461 -73
  175. package/dist/cjs/index.js.map +1 -1
  176. package/dist/cjs/legal/documents.js +164 -19
  177. package/dist/cjs/legal/documents.js.map +1 -1
  178. package/dist/cjs/legal/index.js +3 -1
  179. package/dist/cjs/legal/index.js.map +1 -1
  180. package/dist/cjs/legal/types.js.map +1 -1
  181. package/dist/cjs/onboarding/persistence.js +4 -4
  182. package/dist/cjs/onboarding/persistence.js.map +1 -1
  183. package/dist/cjs/pilot/go-live-checklist.js +212 -0
  184. package/dist/cjs/pilot/go-live-checklist.js.map +1 -0
  185. package/dist/cjs/pilot/milestone.js +79 -0
  186. package/dist/cjs/pilot/milestone.js.map +1 -0
  187. package/dist/cjs/platform/capabilities.js +173 -0
  188. package/dist/cjs/platform/capabilities.js.map +1 -0
  189. package/dist/cjs/platform/job-contract.js +411 -0
  190. package/dist/cjs/platform/job-contract.js.map +1 -0
  191. package/dist/cjs/rbac/catalog.js +110 -0
  192. package/dist/cjs/rbac/catalog.js.map +1 -1
  193. package/dist/cjs/subscription-billing/index.js +9 -1
  194. package/dist/cjs/subscription-billing/index.js.map +1 -1
  195. package/dist/cjs/subscription-billing/platform-exemption.js +121 -0
  196. package/dist/cjs/subscription-billing/platform-exemption.js.map +1 -0
  197. package/dist/cjs/subscription-billing/service.js +246 -78
  198. package/dist/cjs/subscription-billing/service.js.map +1 -1
  199. package/dist/cjs/tenancy/features.js +131 -0
  200. package/dist/cjs/tenancy/features.js.map +1 -0
  201. package/dist/cjs/tenancy/settings.js +224 -0
  202. package/dist/cjs/tenancy/settings.js.map +1 -0
  203. package/dist/cjs/users/repository.js +24 -1
  204. package/dist/cjs/users/repository.js.map +1 -1
  205. package/dist/cjs/vault/repository.js +92 -5
  206. package/dist/cjs/vault/repository.js.map +1 -1
  207. package/dist/clients/ibge.d.ts +17 -0
  208. package/dist/clients/ibge.d.ts.map +1 -0
  209. package/dist/clients/ibge.js +112 -0
  210. package/dist/clients/ibge.js.map +1 -0
  211. package/dist/clients/registry/http.d.ts +61 -0
  212. package/dist/clients/registry/http.d.ts.map +1 -0
  213. package/dist/clients/registry/http.js +151 -0
  214. package/dist/clients/registry/http.js.map +1 -0
  215. package/dist/clients/registry/ibge-municipios.d.ts +25 -0
  216. package/dist/clients/registry/ibge-municipios.d.ts.map +1 -0
  217. package/dist/clients/registry/ibge-municipios.js +25 -0
  218. package/dist/clients/registry/ibge-municipios.js.map +1 -0
  219. package/dist/clients/registry/ibge.d.ts +62 -0
  220. package/dist/clients/registry/ibge.d.ts.map +1 -0
  221. package/dist/clients/registry/ibge.js +57 -0
  222. package/dist/clients/registry/ibge.js.map +1 -0
  223. package/dist/clients/registry/lookup.d.ts +94 -0
  224. package/dist/clients/registry/lookup.d.ts.map +1 -0
  225. package/dist/clients/registry/lookup.js +184 -0
  226. package/dist/clients/registry/lookup.js.map +1 -0
  227. package/dist/clients/registry/provider.d.ts +124 -0
  228. package/dist/clients/registry/provider.d.ts.map +1 -0
  229. package/dist/clients/registry/provider.js +39 -0
  230. package/dist/clients/registry/provider.js.map +1 -0
  231. package/dist/clients/registry/resolve.d.ts +36 -0
  232. package/dist/clients/registry/resolve.d.ts.map +1 -0
  233. package/dist/clients/registry/resolve.js +44 -0
  234. package/dist/clients/registry/resolve.js.map +1 -0
  235. package/dist/clients/registry/serpro.d.ts +57 -0
  236. package/dist/clients/registry/serpro.d.ts.map +1 -0
  237. package/dist/clients/registry/serpro.js +143 -0
  238. package/dist/clients/registry/serpro.js.map +1 -0
  239. package/dist/clients/registry/service.d.ts +59 -0
  240. package/dist/clients/registry/service.d.ts.map +1 -0
  241. package/dist/clients/registry/service.js +225 -0
  242. package/dist/clients/registry/service.js.map +1 -0
  243. package/dist/clients/registry/synthetic.d.ts +30 -0
  244. package/dist/clients/registry/synthetic.d.ts.map +1 -0
  245. package/dist/clients/registry/synthetic.js +161 -0
  246. package/dist/clients/registry/synthetic.js.map +1 -0
  247. package/dist/clients/repository.d.ts +158 -0
  248. package/dist/clients/repository.d.ts.map +1 -1
  249. package/dist/clients/repository.js +186 -9
  250. package/dist/clients/repository.js.map +1 -1
  251. package/dist/collection/branding.d.ts +65 -0
  252. package/dist/collection/branding.d.ts.map +1 -1
  253. package/dist/collection/branding.js +186 -0
  254. package/dist/collection/branding.js.map +1 -1
  255. package/dist/collection/clearance-store.d.ts +39 -0
  256. package/dist/collection/clearance-store.d.ts.map +1 -0
  257. package/dist/collection/clearance-store.js +69 -0
  258. package/dist/collection/clearance-store.js.map +1 -0
  259. package/dist/collection/communication-runtime.d.ts +37 -0
  260. package/dist/collection/communication-runtime.d.ts.map +1 -1
  261. package/dist/collection/communication-runtime.js +63 -1
  262. package/dist/collection/communication-runtime.js.map +1 -1
  263. package/dist/collection/engine.d.ts +23 -0
  264. package/dist/collection/engine.d.ts.map +1 -1
  265. package/dist/collection/engine.js +20 -0
  266. package/dist/collection/engine.js.map +1 -1
  267. package/dist/collection/policy.d.ts +25 -0
  268. package/dist/collection/policy.d.ts.map +1 -1
  269. package/dist/collection/policy.js +27 -0
  270. package/dist/collection/policy.js.map +1 -1
  271. package/dist/communication/clearance.d.ts +53 -0
  272. package/dist/communication/clearance.d.ts.map +1 -0
  273. package/dist/communication/clearance.js +15 -0
  274. package/dist/communication/clearance.js.map +1 -0
  275. package/dist/communication/dry-run-scenario.d.ts.map +1 -1
  276. package/dist/communication/dry-run-scenario.js +5 -0
  277. package/dist/communication/dry-run-scenario.js.map +1 -1
  278. package/dist/communication/engine.d.ts +10 -0
  279. package/dist/communication/engine.d.ts.map +1 -1
  280. package/dist/communication/engine.js +12 -0
  281. package/dist/communication/engine.js.map +1 -1
  282. package/dist/communication/policy.d.ts +16 -0
  283. package/dist/communication/policy.d.ts.map +1 -1
  284. package/dist/communication/policy.js.map +1 -1
  285. package/dist/competence/business-days.d.ts +51 -0
  286. package/dist/competence/business-days.d.ts.map +1 -0
  287. package/dist/competence/business-days.js +145 -0
  288. package/dist/competence/business-days.js.map +1 -0
  289. package/dist/competence/catalog-validation.d.ts +86 -0
  290. package/dist/competence/catalog-validation.d.ts.map +1 -0
  291. package/dist/competence/catalog-validation.js +168 -0
  292. package/dist/competence/catalog-validation.js.map +1 -0
  293. package/dist/competence/obligation-preview.d.ts +103 -0
  294. package/dist/competence/obligation-preview.d.ts.map +1 -0
  295. package/dist/competence/obligation-preview.js +184 -0
  296. package/dist/competence/obligation-preview.js.map +1 -0
  297. package/dist/competence/repository.d.ts +139 -1
  298. package/dist/competence/repository.d.ts.map +1 -1
  299. package/dist/competence/repository.js +325 -17
  300. package/dist/competence/repository.js.map +1 -1
  301. package/dist/dashboard/pilot-panel.d.ts +100 -0
  302. package/dist/dashboard/pilot-panel.d.ts.map +1 -0
  303. package/dist/dashboard/pilot-panel.js +87 -0
  304. package/dist/dashboard/pilot-panel.js.map +1 -0
  305. package/dist/dashboard/repository.d.ts.map +1 -1
  306. package/dist/dashboard/repository.js +11 -1
  307. package/dist/dashboard/repository.js.map +1 -1
  308. package/dist/db/client.d.ts +45 -0
  309. package/dist/db/client.d.ts.map +1 -1
  310. package/dist/db/client.js +16 -11
  311. package/dist/db/client.js.map +1 -1
  312. package/dist/db/migrate.d.ts +36 -1
  313. package/dist/db/migrate.d.ts.map +1 -1
  314. package/dist/db/migrate.js +199 -32
  315. package/dist/db/migrate.js.map +1 -1
  316. package/dist/db/provision-e2e-identity.d.ts +2 -0
  317. package/dist/db/provision-e2e-identity.d.ts.map +1 -0
  318. package/dist/db/provision-e2e-identity.js +114 -0
  319. package/dist/db/provision-e2e-identity.js.map +1 -0
  320. package/dist/fiscal/applicability.d.ts +73 -0
  321. package/dist/fiscal/applicability.d.ts.map +1 -0
  322. package/dist/fiscal/applicability.js +160 -0
  323. package/dist/fiscal/applicability.js.map +1 -0
  324. package/dist/fiscal/collection/authorization.d.ts +152 -0
  325. package/dist/fiscal/collection/authorization.d.ts.map +1 -0
  326. package/dist/fiscal/collection/authorization.js +178 -0
  327. package/dist/fiscal/collection/authorization.js.map +1 -0
  328. package/dist/fiscal/collection/competence.d.ts +66 -0
  329. package/dist/fiscal/collection/competence.d.ts.map +1 -0
  330. package/dist/fiscal/collection/competence.js +90 -0
  331. package/dist/fiscal/collection/competence.js.map +1 -0
  332. package/dist/fiscal/collection/first-contact.d.ts +103 -0
  333. package/dist/fiscal/collection/first-contact.d.ts.map +1 -0
  334. package/dist/fiscal/collection/first-contact.js +201 -0
  335. package/dist/fiscal/collection/first-contact.js.map +1 -0
  336. package/dist/fiscal/collection/plan.d.ts +74 -0
  337. package/dist/fiscal/collection/plan.d.ts.map +1 -0
  338. package/dist/fiscal/collection/plan.js +119 -0
  339. package/dist/fiscal/collection/plan.js.map +1 -0
  340. package/dist/fiscal/conditions.d.ts +99 -0
  341. package/dist/fiscal/conditions.d.ts.map +1 -0
  342. package/dist/fiscal/conditions.js +190 -0
  343. package/dist/fiscal/conditions.js.map +1 -0
  344. package/dist/fiscal/contracts/nfse-adn-contract.d.ts +315 -0
  345. package/dist/fiscal/contracts/nfse-adn-contract.d.ts.map +1 -0
  346. package/dist/fiscal/contracts/nfse-adn-contract.js +386 -0
  347. package/dist/fiscal/contracts/nfse-adn-contract.js.map +1 -0
  348. package/dist/fiscal/contracts/nfse-adn-endpoint.d.ts +13 -0
  349. package/dist/fiscal/contracts/nfse-adn-endpoint.d.ts.map +1 -0
  350. package/dist/fiscal/contracts/nfse-adn-endpoint.js +103 -0
  351. package/dist/fiscal/contracts/nfse-adn-endpoint.js.map +1 -0
  352. package/dist/fiscal/contracts/nfse-adn-envelope.d.ts +77 -0
  353. package/dist/fiscal/contracts/nfse-adn-envelope.d.ts.map +1 -0
  354. package/dist/fiscal/contracts/nfse-adn-envelope.js +215 -0
  355. package/dist/fiscal/contracts/nfse-adn-envelope.js.map +1 -0
  356. package/dist/fiscal/coverage/model.d.ts +114 -0
  357. package/dist/fiscal/coverage/model.d.ts.map +1 -0
  358. package/dist/fiscal/coverage/model.js +130 -0
  359. package/dist/fiscal/coverage/model.js.map +1 -0
  360. package/dist/fiscal/coverage/requests.d.ts +70 -0
  361. package/dist/fiscal/coverage/requests.d.ts.map +1 -0
  362. package/dist/fiscal/coverage/requests.js +95 -0
  363. package/dist/fiscal/coverage/requests.js.map +1 -0
  364. package/dist/fiscal/credentials/inspect.d.ts +114 -0
  365. package/dist/fiscal/credentials/inspect.d.ts.map +1 -0
  366. package/dist/fiscal/credentials/inspect.js +178 -0
  367. package/dist/fiscal/credentials/inspect.js.map +1 -0
  368. package/dist/fiscal/credentials/material.d.ts +81 -0
  369. package/dist/fiscal/credentials/material.d.ts.map +1 -0
  370. package/dist/fiscal/credentials/material.js +164 -0
  371. package/dist/fiscal/credentials/material.js.map +1 -0
  372. package/dist/fiscal/credentials/onboarding.d.ts +119 -0
  373. package/dist/fiscal/credentials/onboarding.d.ts.map +1 -0
  374. package/dist/fiscal/credentials/onboarding.js +259 -0
  375. package/dist/fiscal/credentials/onboarding.js.map +1 -0
  376. package/dist/fiscal/credentials/readiness.d.ts +119 -0
  377. package/dist/fiscal/credentials/readiness.d.ts.map +1 -0
  378. package/dist/fiscal/credentials/readiness.js +186 -0
  379. package/dist/fiscal/credentials/readiness.js.map +1 -0
  380. package/dist/fiscal/eligibility.d.ts +106 -0
  381. package/dist/fiscal/eligibility.d.ts.map +1 -0
  382. package/dist/fiscal/eligibility.js +194 -0
  383. package/dist/fiscal/eligibility.js.map +1 -0
  384. package/dist/fiscal/enrollment.d.ts +91 -0
  385. package/dist/fiscal/enrollment.d.ts.map +1 -0
  386. package/dist/fiscal/enrollment.js +126 -0
  387. package/dist/fiscal/enrollment.js.map +1 -0
  388. package/dist/fiscal/ingestion/__fixtures__/nfse.d.ts +57 -0
  389. package/dist/fiscal/ingestion/__fixtures__/nfse.d.ts.map +1 -0
  390. package/dist/fiscal/ingestion/__fixtures__/nfse.js +121 -0
  391. package/dist/fiscal/ingestion/__fixtures__/nfse.js.map +1 -0
  392. package/dist/fiscal/ingestion/adn-transport.d.ts +123 -0
  393. package/dist/fiscal/ingestion/adn-transport.d.ts.map +1 -0
  394. package/dist/fiscal/ingestion/adn-transport.js +220 -0
  395. package/dist/fiscal/ingestion/adn-transport.js.map +1 -0
  396. package/dist/fiscal/ingestion/direction.d.ts +60 -0
  397. package/dist/fiscal/ingestion/direction.d.ts.map +1 -0
  398. package/dist/fiscal/ingestion/direction.js +32 -0
  399. package/dist/fiscal/ingestion/direction.js.map +1 -0
  400. package/dist/fiscal/ingestion/nfse-adn.d.ts +91 -0
  401. package/dist/fiscal/ingestion/nfse-adn.d.ts.map +1 -0
  402. package/dist/fiscal/ingestion/nfse-adn.js +222 -0
  403. package/dist/fiscal/ingestion/nfse-adn.js.map +1 -0
  404. package/dist/fiscal/ingestion/pipeline.d.ts +168 -0
  405. package/dist/fiscal/ingestion/pipeline.d.ts.map +1 -0
  406. package/dist/fiscal/ingestion/pipeline.js +699 -0
  407. package/dist/fiscal/ingestion/pipeline.js.map +1 -0
  408. package/dist/fiscal/ingestion/provider.d.ts +206 -0
  409. package/dist/fiscal/ingestion/provider.d.ts.map +1 -0
  410. package/dist/fiscal/ingestion/provider.js +47 -0
  411. package/dist/fiscal/ingestion/provider.js.map +1 -0
  412. package/dist/fiscal/ingestion/repository.d.ts +82 -0
  413. package/dist/fiscal/ingestion/repository.d.ts.map +1 -0
  414. package/dist/fiscal/ingestion/repository.js +127 -0
  415. package/dist/fiscal/ingestion/repository.js.map +1 -0
  416. package/dist/fiscal/ingestion/synthetic-provider.d.ts +92 -0
  417. package/dist/fiscal/ingestion/synthetic-provider.d.ts.map +1 -0
  418. package/dist/fiscal/ingestion/synthetic-provider.js +99 -0
  419. package/dist/fiscal/ingestion/synthetic-provider.js.map +1 -0
  420. package/dist/fiscal/ingestion/synthetic-transport-types.d.ts +19 -0
  421. package/dist/fiscal/ingestion/synthetic-transport-types.d.ts.map +1 -0
  422. package/dist/fiscal/ingestion/synthetic-transport-types.js +9 -0
  423. package/dist/fiscal/ingestion/synthetic-transport-types.js.map +1 -0
  424. package/dist/fiscal/ingestion/synthetic-transport.d.ts +55 -0
  425. package/dist/fiscal/ingestion/synthetic-transport.d.ts.map +1 -0
  426. package/dist/fiscal/ingestion/synthetic-transport.js +57 -0
  427. package/dist/fiscal/ingestion/synthetic-transport.js.map +1 -0
  428. package/dist/fiscal/ingestion/xml-reader.d.ts +55 -0
  429. package/dist/fiscal/ingestion/xml-reader.d.ts.map +1 -0
  430. package/dist/fiscal/ingestion/xml-reader.js +112 -0
  431. package/dist/fiscal/ingestion/xml-reader.js.map +1 -0
  432. package/dist/fiscal/repository.d.ts +220 -0
  433. package/dist/fiscal/repository.d.ts.map +1 -0
  434. package/dist/fiscal/repository.js +449 -0
  435. package/dist/fiscal/repository.js.map +1 -0
  436. package/dist/fiscal/sync/circuit.d.ts +86 -0
  437. package/dist/fiscal/sync/circuit.d.ts.map +1 -0
  438. package/dist/fiscal/sync/circuit.js +118 -0
  439. package/dist/fiscal/sync/circuit.js.map +1 -0
  440. package/dist/fiscal/sync/intervention.d.ts +81 -0
  441. package/dist/fiscal/sync/intervention.d.ts.map +1 -0
  442. package/dist/fiscal/sync/intervention.js +135 -0
  443. package/dist/fiscal/sync/intervention.js.map +1 -0
  444. package/dist/fiscal/sync/lease.d.ts +118 -0
  445. package/dist/fiscal/sync/lease.d.ts.map +1 -0
  446. package/dist/fiscal/sync/lease.js +139 -0
  447. package/dist/fiscal/sync/lease.js.map +1 -0
  448. package/dist/fiscal/sync/observability.d.ts +148 -0
  449. package/dist/fiscal/sync/observability.d.ts.map +1 -0
  450. package/dist/fiscal/sync/observability.js +239 -0
  451. package/dist/fiscal/sync/observability.js.map +1 -0
  452. package/dist/fiscal/sync/orchestrator.d.ts +132 -0
  453. package/dist/fiscal/sync/orchestrator.d.ts.map +1 -0
  454. package/dist/fiscal/sync/orchestrator.js +487 -0
  455. package/dist/fiscal/sync/orchestrator.js.map +1 -0
  456. package/dist/fiscal/sync/policy.d.ts +87 -0
  457. package/dist/fiscal/sync/policy.d.ts.map +1 -0
  458. package/dist/fiscal/sync/policy.js +136 -0
  459. package/dist/fiscal/sync/policy.js.map +1 -0
  460. package/dist/fiscal/sync/reprocess.d.ts +76 -0
  461. package/dist/fiscal/sync/reprocess.d.ts.map +1 -0
  462. package/dist/fiscal/sync/reprocess.js +237 -0
  463. package/dist/fiscal/sync/reprocess.js.map +1 -0
  464. package/dist/fiscal/sync/retry.d.ts +82 -0
  465. package/dist/fiscal/sync/retry.d.ts.map +1 -0
  466. package/dist/fiscal/sync/retry.js +176 -0
  467. package/dist/fiscal/sync/retry.js.map +1 -0
  468. package/dist/fiscal/sync/secret-boundary.d.ts +169 -0
  469. package/dist/fiscal/sync/secret-boundary.d.ts.map +1 -0
  470. package/dist/fiscal/sync/secret-boundary.js +116 -0
  471. package/dist/fiscal/sync/secret-boundary.js.map +1 -0
  472. package/dist/fiscal/transport/https.d.ts +86 -0
  473. package/dist/fiscal/transport/https.d.ts.map +1 -0
  474. package/dist/fiscal/transport/https.js +303 -0
  475. package/dist/fiscal/transport/https.js.map +1 -0
  476. package/dist/fiscal/transport/synthetic-tls.d.ts +99 -0
  477. package/dist/fiscal/transport/synthetic-tls.d.ts.map +1 -0
  478. package/dist/fiscal/transport/synthetic-tls.js +374 -0
  479. package/dist/fiscal/transport/synthetic-tls.js.map +1 -0
  480. package/dist/fiscal/transport/types.d.ts +134 -0
  481. package/dist/fiscal/transport/types.d.ts.map +1 -0
  482. package/dist/fiscal/transport/types.js +88 -0
  483. package/dist/fiscal/transport/types.js.map +1 -0
  484. package/dist/import/br-documents.d.ts +26 -0
  485. package/dist/import/br-documents.d.ts.map +1 -0
  486. package/dist/import/br-documents.js +78 -0
  487. package/dist/import/br-documents.js.map +1 -0
  488. package/dist/import/clients-import.d.ts +122 -4
  489. package/dist/import/clients-import.d.ts.map +1 -1
  490. package/dist/import/clients-import.js +341 -41
  491. package/dist/import/clients-import.js.map +1 -1
  492. package/dist/index.d.ts +145 -13
  493. package/dist/index.d.ts.map +1 -1
  494. package/dist/index.js +120 -7
  495. package/dist/index.js.map +1 -1
  496. package/dist/legal/documents.d.ts +12 -1
  497. package/dist/legal/documents.d.ts.map +1 -1
  498. package/dist/legal/documents.js +162 -18
  499. package/dist/legal/documents.js.map +1 -1
  500. package/dist/legal/index.d.ts +2 -2
  501. package/dist/legal/index.d.ts.map +1 -1
  502. package/dist/legal/index.js +1 -1
  503. package/dist/legal/index.js.map +1 -1
  504. package/dist/legal/types.d.ts +114 -2
  505. package/dist/legal/types.d.ts.map +1 -1
  506. package/dist/legal/types.js.map +1 -1
  507. package/dist/onboarding/persistence.d.ts +10 -1
  508. package/dist/onboarding/persistence.d.ts.map +1 -1
  509. package/dist/onboarding/persistence.js +4 -4
  510. package/dist/onboarding/persistence.js.map +1 -1
  511. package/dist/pilot/go-live-checklist.d.ts +41 -0
  512. package/dist/pilot/go-live-checklist.d.ts.map +1 -0
  513. package/dist/pilot/go-live-checklist.js +209 -0
  514. package/dist/pilot/go-live-checklist.js.map +1 -0
  515. package/dist/pilot/milestone.d.ts +56 -0
  516. package/dist/pilot/milestone.d.ts.map +1 -0
  517. package/dist/pilot/milestone.js +74 -0
  518. package/dist/pilot/milestone.js.map +1 -0
  519. package/dist/platform/capabilities.d.ts +88 -0
  520. package/dist/platform/capabilities.d.ts.map +1 -0
  521. package/dist/platform/capabilities.js +169 -0
  522. package/dist/platform/capabilities.js.map +1 -0
  523. package/dist/platform/job-contract.d.ts +232 -0
  524. package/dist/platform/job-contract.d.ts.map +1 -0
  525. package/dist/platform/job-contract.js +403 -0
  526. package/dist/platform/job-contract.js.map +1 -0
  527. package/dist/rbac/catalog.d.ts.map +1 -1
  528. package/dist/rbac/catalog.js +110 -0
  529. package/dist/rbac/catalog.js.map +1 -1
  530. package/dist/subscription-billing/index.d.ts +8 -5
  531. package/dist/subscription-billing/index.d.ts.map +1 -1
  532. package/dist/subscription-billing/index.js +4 -3
  533. package/dist/subscription-billing/index.js.map +1 -1
  534. package/dist/subscription-billing/platform-exemption.d.ts +89 -0
  535. package/dist/subscription-billing/platform-exemption.d.ts.map +1 -0
  536. package/dist/subscription-billing/platform-exemption.js +113 -0
  537. package/dist/subscription-billing/platform-exemption.js.map +1 -0
  538. package/dist/subscription-billing/service.d.ts +74 -0
  539. package/dist/subscription-billing/service.d.ts.map +1 -1
  540. package/dist/subscription-billing/service.js +182 -16
  541. package/dist/subscription-billing/service.js.map +1 -1
  542. package/dist/tenancy/features.d.ts +69 -0
  543. package/dist/tenancy/features.d.ts.map +1 -0
  544. package/dist/tenancy/features.js +123 -0
  545. package/dist/tenancy/features.js.map +1 -0
  546. package/dist/tenancy/settings.d.ts +63 -0
  547. package/dist/tenancy/settings.d.ts.map +1 -0
  548. package/dist/tenancy/settings.js +218 -0
  549. package/dist/tenancy/settings.js.map +1 -0
  550. package/dist/users/repository.d.ts +16 -1
  551. package/dist/users/repository.d.ts.map +1 -1
  552. package/dist/users/repository.js +24 -1
  553. package/dist/users/repository.js.map +1 -1
  554. package/dist/vault/repository.d.ts +69 -1
  555. package/dist/vault/repository.d.ts.map +1 -1
  556. package/dist/vault/repository.js +88 -5
  557. package/dist/vault/repository.js.map +1 -1
  558. package/package.json +10 -2
  559. package/src/db/migrations/0045_role_write_scope.sql +122 -0
  560. package/src/db/migrations/0046_pilot_activation_model.sql +184 -0
  561. package/src/db/migrations/0047_recipient_clearance.sql +89 -0
  562. package/src/db/migrations/0048_item_type_note.sql +16 -0
  563. package/src/db/migrations/0049_national_fiscal_engine.sql +279 -0
  564. package/src/db/migrations/0050_fiscal_vocabulary_readonly.sql +29 -0
  565. package/src/db/migrations/0051_seed_rules_from_catalog.sql +72 -0
  566. package/src/db/migrations/0052_fiscal_rule_delete_scope.sql +57 -0
  567. package/src/db/migrations/0053_rule_validity_lower_bound.sql +44 -0
  568. package/src/db/migrations/0054_tenant_profile_and_rule_source.sql +89 -0
  569. package/src/db/migrations/0055_job_capability_contract.sql +300 -0
  570. package/src/db/migrations/0056_fiscal_document_ingestion.sql +337 -0
  571. package/src/db/migrations/0057_fiscal_pending_event_inbox.sql +228 -0
  572. package/src/db/migrations/0058_fiscal_operational_engine.sql +516 -0
  573. package/src/db/migrations/0059_fiscal_contract_version.sql +59 -0
  574. package/src/db/migrations/0060_fiscal_credential_vault_and_run_authorization.sql +321 -0
  575. package/src/db/migrations/0061_client_official_registry_provenance.sql +193 -0
  576. package/src/db/migrations/0062_first_contact_and_capability_truth.sql +119 -0
@@ -0,0 +1,403 @@
1
+ import { uuidv7 } from '@baruk/shared';
2
+ import { withContext } from '../db/context.js';
3
+ /**
4
+ * O contrato de capacidade entre um WORKER e o schema que ele opera.
5
+ *
6
+ * ## O que isto fecha, e por que não bastava o contrato HTTP
7
+ *
8
+ * `platform/capabilities.ts` protege a superfície HTTP: a tela pergunta à API
9
+ * se aquele build sabe responder o que ela vai pedir. Um cron não tem tela e
10
+ * não fala com a API — ele fala com o BANCO. A contraparte é outra, então o
11
+ * contrato é outro, e o registro vive no próprio banco (migration 0055).
12
+ *
13
+ * A janela é real e não é hipótese: os crons publicam na Render como serviços
14
+ * SEPARADOS do serviço web, e as migrations rodam no `preDeployCommand` do
15
+ * serviço web. A ordem entre "a imagem nova do cron subiu" e "o schema novo foi
16
+ * aplicado" não é garantida por nada.
17
+ *
18
+ * ## Cinco estados, não dois
19
+ *
20
+ * A primeira forma óbvia disto seria um booleano `podeRodar`. Ela colapsa dois
21
+ * problemas que exigem tratamentos opostos:
22
+ *
23
+ * `READY` compatível — executa.
24
+ * `INCOMPATIBLE` o schema é anterior ao que este worker exige.
25
+ * Fecha, e **não** merece retry: nenhuma
26
+ * quantidade de tentativas aplica uma migration.
27
+ * `TEMPORARILY_UNAVAILABLE` não deu para perguntar (banco fora, timeout).
28
+ * Fecha também — mas com backoff, porque volta
29
+ * sozinho.
30
+ * `DISABLED` desligado por configuração do processo.
31
+ * `BLOCKED_BY_TENANT_CONFIG` o escritório não habilitou.
32
+ *
33
+ * A distinção entre os dois primeiros bloqueios é a mesma que o contrato HTTP
34
+ * já paga: lá, tratar timeout como "não suportado" faria a tela mentir sobre um
35
+ * deploy antigo toda vez que a API hibernasse. Aqui, tratar banco fora como
36
+ * incompatível faria o cron desistir de um dia inteiro por uma queda de rede de
37
+ * trinta segundos — e tratar incompatível como indisponível faria ele martelar
38
+ * um schema que não vai mudar sozinho.
39
+ *
40
+ * ## Fail-closed é sobre VERSÃO
41
+ *
42
+ * Quando não é `READY`, nada é escrito: zero mutação, cursor intocado, nenhum
43
+ * item marcado como processado. E o bloqueio é REGISTRADO (`job_run`) — um job
44
+ * que para em silêncio é indistinguível de um job que rodou e não achou nada.
45
+ *
46
+ * A garantia não depende deste arquivo: `job_run` tem CHECK que torna
47
+ * ingravável um run bloqueado com mutação ou cursor avançado. O TypeScript
48
+ * ordena; o banco garante.
49
+ */
50
+ /** Versão do FORMATO do registro. Ver `platform_capability.contract_version`. */
51
+ export const JOB_CONTRACT_VERSION = 1;
52
+ /**
53
+ * Backoff do que volta sozinho.
54
+ *
55
+ * Cinco minutos: longo o bastante para uma reinicialização de banco caber
56
+ * dentro, curto o bastante para o ciclo diário ainda sair no mesmo dia.
57
+ */
58
+ export const TEMPORARY_BACKOFF_MS = 5 * 60_000;
59
+ /**
60
+ * Códigos do PostgreSQL que significam "este schema é anterior ao worker".
61
+ *
62
+ * `42P01` tabela inexistente, `42703` coluna inexistente, `42883` função
63
+ * inexistente. São afirmações do servidor sobre o que ele TEM — não sobre a
64
+ * rede —, e é exatamente essa a fronteira entre `absent` e `unknown`.
65
+ */
66
+ const OLD_SCHEMA_SQLSTATES = new Set(['42P01', '42703', '42883']);
67
+ /**
68
+ * Lê o registro de capacidades do schema. Nunca lança; classifica a falha.
69
+ *
70
+ * A classificação é o ponto inteiro da função. Um `catch` que devolvesse
71
+ * "incompatível" para qualquer erro transformaria toda queda de rede em uma
72
+ * afirmação falsa sobre a versão do schema — o mesmo defeito que quase entrou
73
+ * em produção no contrato HTTP.
74
+ */
75
+ export async function probePlatformCapabilities(tx) {
76
+ let rows;
77
+ try {
78
+ rows = await tx `
79
+ SELECT key, contract_version FROM platform_capability ORDER BY key
80
+ `;
81
+ }
82
+ catch (err) {
83
+ const code = err?.code;
84
+ if (code && OLD_SCHEMA_SQLSTATES.has(code)) {
85
+ // A tabela não existe: este banco é anterior à 0055. É a assinatura
86
+ // exata do schema velho, e o caso inteiro pelo qual isto existe.
87
+ return { status: 'absent', detail: `registro ausente no schema (sqlstate ${code})` };
88
+ }
89
+ // Conexão recusada, timeout, permissão momentaneamente negada: nada disto
90
+ // informa a VERSÃO do schema.
91
+ return { status: 'unknown', detail: `consulta falhou (sqlstate ${code ?? 'desconhecido'})` };
92
+ }
93
+ if (rows.length === 0) {
94
+ // Tabela existe e está vazia. Um schema que não declara nada não pode
95
+ // satisfazer exigência nenhuma — e "vazio" não é "tudo permitido".
96
+ return { status: 'absent', detail: 'registro de capacidades vazio' };
97
+ }
98
+ // Versões de contrato divergentes na mesma tabela seriam um registro que não
99
+ // se sabe ler inteiro. Fecha, em vez de escolher uma.
100
+ const versions = new Set(rows.map((r) => r.contract_version));
101
+ if (versions.size > 1) {
102
+ return { status: 'absent', detail: 'registro com versões de contrato divergentes' };
103
+ }
104
+ return {
105
+ status: 'declared',
106
+ contract: rows[0].contract_version,
107
+ capabilities: rows.map((r) => r.key),
108
+ };
109
+ }
110
+ /**
111
+ * A sondagem satisfaz o que este worker exige?
112
+ *
113
+ * Função pura: recebe a sondagem já feita e devolve a decisão. É essa separação
114
+ * que permite fixar o contrato para o lote inteiro (ver `runGuardedJob`) — a
115
+ * decisão de cada item usa a MESMA sondagem, não uma nova.
116
+ */
117
+ export function evaluateJobReadiness(def, probe, opts = {}) {
118
+ const blocked = (readiness, detail, extra = {}) => ({
119
+ readiness,
120
+ canMutate: false,
121
+ retryable: readiness === 'TEMPORARILY_UNAVAILABLE',
122
+ backoffMs: readiness === 'TEMPORARILY_UNAVAILABLE' ? TEMPORARY_BACKOFF_MS : null,
123
+ contractVersion: null,
124
+ observed: [],
125
+ missing: [],
126
+ detail,
127
+ ...extra,
128
+ });
129
+ // Desligado pelo processo vem primeiro: não faz sentido perguntar ao banco se
130
+ // um worker desligado é compatível, e a resposta não mudaria nada.
131
+ if (opts.disabled)
132
+ return blocked('DISABLED', 'worker desligado por configuração');
133
+ if (def.requires.length === 0) {
134
+ // Erro de programação, tratado como bloqueio e não como exceção: um worker
135
+ // mal declarado não pode virar um worker sem portão.
136
+ return blocked('INCOMPATIBLE', `job "${def.name}" não declara capacidade exigida`);
137
+ }
138
+ if (probe.status === 'unknown')
139
+ return blocked('TEMPORARILY_UNAVAILABLE', probe.detail);
140
+ if (probe.status === 'absent') {
141
+ return blocked('INCOMPATIBLE', probe.detail, { missing: [...def.requires] });
142
+ }
143
+ if (probe.contract < def.minContractVersion) {
144
+ return blocked('INCOMPATIBLE', `contrato ${probe.contract} anterior ao mínimo ${def.minContractVersion}`, { contractVersion: probe.contract, observed: probe.capabilities, missing: [...def.requires] });
145
+ }
146
+ if (probe.contract > JOB_CONTRACT_VERSION) {
147
+ // Schema mais novo do que este worker sabe ler. Simétrico ao caso acima, e
148
+ // igualmente fechado: reinterpretar um formato desconhecido é como um
149
+ // worker velho corrompe dado novo.
150
+ return blocked('INCOMPATIBLE', `contrato ${probe.contract} posterior ao que este worker lê (${JOB_CONTRACT_VERSION})`, { contractVersion: probe.contract, observed: probe.capabilities });
151
+ }
152
+ // Continência de conjunto, não igualdade: o schema pode declarar MAIS do que
153
+ // este worker exige, e é isso que torna `worker velho + schema novo` seguro.
154
+ const missing = def.requires.filter((k) => !probe.capabilities.includes(k));
155
+ if (missing.length > 0) {
156
+ return blocked('INCOMPATIBLE', `capacidade ausente: ${missing.join(', ')}`, {
157
+ contractVersion: probe.contract,
158
+ observed: probe.capabilities,
159
+ missing,
160
+ });
161
+ }
162
+ // O bloqueio por configuração do escritório vem por ÚLTIMO, depois de a
163
+ // compatibilidade estar provada: assim o registro distingue "o schema não
164
+ // serve" de "este escritório não quis", que são conversas diferentes.
165
+ if (opts.tenantBlocked) {
166
+ return blocked('BLOCKED_BY_TENANT_CONFIG', opts.tenantBlocked, {
167
+ contractVersion: probe.contract,
168
+ observed: probe.capabilities,
169
+ });
170
+ }
171
+ return {
172
+ readiness: 'READY',
173
+ canMutate: true,
174
+ retryable: false,
175
+ backoffMs: null,
176
+ contractVersion: probe.contract,
177
+ observed: probe.capabilities,
178
+ missing: [],
179
+ detail: 'compatível',
180
+ };
181
+ }
182
+ /**
183
+ * Executa `handler` sob o portão, dentro do contexto de tenant.
184
+ *
185
+ * A ordem importa e é o mecanismo inteiro:
186
+ *
187
+ * 1. sonda (ou usa a sondagem fixada) e decide — ANTES de qualquer escrita;
188
+ * 2. se não for `READY`, grava o `job_run` bloqueado e RETORNA. O handler não
189
+ * é chamado, então não existe caminho pelo qual ele mute;
190
+ * 3. se for `READY`, lê o cursor, chama o handler, e só então grava o run e
191
+ * avança o cursor.
192
+ *
193
+ * Cursor e run são gravados na MESMA transação do handler: um lote que estourou
194
+ * no meio não deixa cursor avançado, porque o rollback leva os dois junto.
195
+ */
196
+ export async function runGuardedJob(db, tenantId, def, handler, opts = {}) {
197
+ const probe = opts.probe ?? (await withContext(db, { tenantId }, (tx) => probePlatformCapabilities(tx)));
198
+ const decision = evaluateJobReadiness(def, probe, {
199
+ disabled: opts.disabled,
200
+ tenantBlocked: opts.tenantBlocked,
201
+ });
202
+ if (!decision.canMutate) {
203
+ const record = await withContext(db, { tenantId }, (tx) => recordJobRun(tx, tenantId, def, decision, {
204
+ status: 'blocked',
205
+ mutations: 0,
206
+ cursorAdvanced: false,
207
+ }));
208
+ return { record, result: null, decision };
209
+ }
210
+ let mutations = 0;
211
+ let nextCursor = null;
212
+ try {
213
+ return await withContext(db, { tenantId }, async (tx) => {
214
+ const [cur] = await tx `
215
+ SELECT position, contract_version FROM job_cursor WHERE job_name = ${def.name}
216
+ `;
217
+ if (cur && cur.contract_version > JOB_CONTRACT_VERSION) {
218
+ // Cursor gravado sob contrato que este worker não sabe ler. Reinterpretar
219
+ // a posição com outra semântica é pior do que não andar.
220
+ const stale = evaluateJobReadiness(def, {
221
+ status: 'absent',
222
+ detail: `cursor gravado sob contrato ${cur.contract_version}, posterior a ${JOB_CONTRACT_VERSION}`,
223
+ });
224
+ const record = await recordJobRun(tx, tenantId, def, stale, {
225
+ status: 'blocked',
226
+ mutations: 0,
227
+ cursorAdvanced: false,
228
+ });
229
+ return { record, result: null, decision: stale };
230
+ }
231
+ const ctx = {
232
+ decision,
233
+ cursor: cur?.position ?? null,
234
+ recordMutation: (n = 1) => {
235
+ mutations += n;
236
+ },
237
+ advanceCursorTo: (position) => {
238
+ nextCursor = position;
239
+ },
240
+ };
241
+ const result = await handler(tx, ctx);
242
+ if (nextCursor !== null) {
243
+ await tx `
244
+ INSERT INTO job_cursor (id, tenant_id, job_name, position, contract_version, updated_at)
245
+ VALUES (${uuidv7()}, ${tenantId}, ${def.name}, ${nextCursor},
246
+ ${decision.contractVersion ?? JOB_CONTRACT_VERSION}, now())
247
+ ON CONFLICT (tenant_id, job_name)
248
+ DO UPDATE SET position = EXCLUDED.position,
249
+ contract_version = EXCLUDED.contract_version,
250
+ updated_at = now()
251
+ `;
252
+ }
253
+ const record = await recordJobRun(tx, tenantId, def, decision, {
254
+ status: 'completed',
255
+ mutations,
256
+ cursorAdvanced: nextCursor !== null,
257
+ });
258
+ return { record, result, decision };
259
+ });
260
+ }
261
+ catch (err) {
262
+ // O lote falhou: a transação já reverteu mutação e cursor. O registro da
263
+ // falha vai em transação NOVA, senão ele voltaria junto e a falha ficaria
264
+ // invisível — que é o modo de falha que esta tabela existe para eliminar.
265
+ //
266
+ // E se o próprio registro falhar (banco fora, que é uma causa provável do
267
+ // erro original), o erro ORIGINAL é o que sobe. Trocá-lo pelo erro de
268
+ // gravar a trilha esconderia a causa atrás do sintoma.
269
+ let record;
270
+ try {
271
+ record = await withContext(db, { tenantId }, (tx) => recordJobRun(tx, tenantId, def, { ...decision, detail: describeFailure(err) }, { status: 'failed', mutations: 0, cursorAdvanced: false }));
272
+ }
273
+ catch {
274
+ throw err;
275
+ }
276
+ return { record, result: null, decision };
277
+ }
278
+ }
279
+ /** Mensagem de falha sem PII e sem segredo: só a classe e o sqlstate. */
280
+ function describeFailure(err) {
281
+ const code = err?.code;
282
+ const name = err instanceof Error ? err.name : 'erro';
283
+ return code ? `${name} (sqlstate ${code})` : name;
284
+ }
285
+ /**
286
+ * Grava o desfecho de um run.
287
+ *
288
+ * Público porque os dois crons existentes não são baseados em cursor — eles são
289
+ * idempotentes por índice único e rodam duas transações por tenant de
290
+ * propósito. Forçá-los para dentro de `runGuardedJob` colapsaria essas duas
291
+ * transações em uma, e um erro na régua passaria a desfazer recebíveis
292
+ * legitimamente gerados. Eles usam o mesmo portão e a mesma trilha; o que não
293
+ * usam é o cursor, que não têm.
294
+ */
295
+ export async function recordJobRun(tx, tenantId, def, decision, outcome) {
296
+ const id = uuidv7();
297
+ await tx `
298
+ INSERT INTO job_run (
299
+ id, tenant_id, job_name, job_version, readiness, status, contract_version,
300
+ required_capabilities, observed_capabilities, missing_capabilities,
301
+ mutations, cursor_advanced, detail, finished_at
302
+ ) VALUES (
303
+ ${id}, ${tenantId}, ${def.name}, ${def.version}, ${decision.readiness}, ${outcome.status},
304
+ ${decision.contractVersion}, ${[...def.requires]}, ${[...decision.observed]},
305
+ ${[...decision.missing]}, ${outcome.mutations}, ${outcome.cursorAdvanced},
306
+ ${decision.detail}, now()
307
+ )
308
+ `;
309
+ return {
310
+ id,
311
+ readiness: decision.readiness,
312
+ status: outcome.status,
313
+ mutations: outcome.mutations,
314
+ cursorAdvanced: outcome.cursorAdvanced,
315
+ detail: decision.detail,
316
+ };
317
+ }
318
+ /**
319
+ * Grava a trilha tolerando a ausência da própria tabela.
320
+ *
321
+ * O caso é específico e derrubaria produção: quando o bloqueio é `INCOMPATIBLE`
322
+ * porque o schema é anterior à 0055, **`job_run` também não existe** — as duas
323
+ * tabelas nascem na mesma migration. Um `recordJobRun` direto estouraria para
324
+ * cada tenant e o cron sairia com código 1, transformando um bloqueio correto
325
+ * e silencioso num alarme de infraestrutura.
326
+ *
327
+ * A trilha é observabilidade, não a garantia. A garantia é o handler não ser
328
+ * chamado, e ela já valeu antes desta linha. Quando a trilha não cabe no
329
+ * schema, o log carrega o motivo — e ele é o mesmo.
330
+ *
331
+ * Devolve `true` se gravou. Só engole falha de SCHEMA (`42P01`/`42703`): erro
332
+ * de permissão ou de restrição é defeito nosso e tem de subir.
333
+ */
334
+ export async function recordJobRunBestEffort(db, tenantId, def, decision, outcome) {
335
+ try {
336
+ await withContext(db, { tenantId }, (tx) => recordJobRun(tx, tenantId, def, decision, outcome));
337
+ return true;
338
+ }
339
+ catch (err) {
340
+ const code = err?.code;
341
+ if (code && OLD_SCHEMA_SQLSTATES.has(code))
342
+ return false;
343
+ throw err;
344
+ }
345
+ }
346
+ /**
347
+ * Os workers deste produto.
348
+ *
349
+ * Declarados aqui, e não junto de cada entrypoint, para que a lista seja
350
+ * enumerável — é ela que o inventário do gate confere contra o `render.yaml`.
351
+ */
352
+ export const COLLECTION_CYCLE_JOB = {
353
+ name: 'collection-cycle',
354
+ version: 1,
355
+ requires: ['office.collection-cycle.v1'],
356
+ minContractVersion: 1,
357
+ };
358
+ export const SAAS_BILLING_JOB = {
359
+ name: 'saas-billing-cycle',
360
+ version: 1,
361
+ requires: ['office.saas-billing-cycle.v1'],
362
+ minContractVersion: 1,
363
+ };
364
+ /**
365
+ * O worker fiscal (Onda B · Fase 2).
366
+ *
367
+ * Exige DUAS capacidades, e a segunda é o ponto: `office.fiscal-ingestion.v1`
368
+ * (0056) descreve onde o documento cabe; `office.fiscal-sync-worker.v1` (0058)
369
+ * descreve o que o worker precisa para OPERAR — lease, política, disjuntor,
370
+ * fila humana, cobertura.
371
+ *
372
+ * Separá-las importa numa janela concreta: um banco que já tem a 0056 e ainda
373
+ * não tem a 0058 sabe guardar documento e NÃO sabe travar a vez. Um worker que
374
+ * exigisse só a primeira rodaria ali, sem exclusão mútua, e duas execuções
375
+ * simultâneas consultariam o mesmo CNPJ contra a Receita.
376
+ */
377
+ export const FISCAL_SYNC_JOB = {
378
+ name: 'fiscal-sync',
379
+ // `version: 2` porque o worker passou a GRAVAR `fiscal_sync_run.contract_version`
380
+ // (migration 0059). Um worker desta versão contra um banco anterior falharia no
381
+ // `INSERT` — depois do lease tomado e possivelmente depois da requisição ao
382
+ // provedor, isto é, com o consumo já gasto e o cursor parado. O pior lugar
383
+ // possível para descobrir uma incompatibilidade de schema.
384
+ version: 2,
385
+ // `office.fiscal-contract-version.v1` é a exigência NOVA, e ela é uma CHAVE —
386
+ // não um `minContractVersion` maior. `contract_version` é a versão do formato
387
+ // do registro e é global: a sondagem recusa a tabela inteira se as linhas
388
+ // divergirem, de modo que subir a versão por causa de uma coluna do motor
389
+ // fiscal derrubaria também cobrança e faturamento. Capacidade se compara por
390
+ // continência; é essa a dimensão em que esta mudança acontece.
391
+ requires: [
392
+ 'office.fiscal-ingestion.v1',
393
+ 'office.fiscal-sync-worker.v1',
394
+ 'office.fiscal-contract-version.v1',
395
+ ],
396
+ minContractVersion: 1,
397
+ };
398
+ export const KNOWN_JOBS = [
399
+ COLLECTION_CYCLE_JOB,
400
+ SAAS_BILLING_JOB,
401
+ FISCAL_SYNC_JOB,
402
+ ];
403
+ //# sourceMappingURL=job-contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"job-contract.js","sourceRoot":"","sources":["../../src/platform/job-contract.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/rbac/catalog.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,WAAW,EAAE,SAAS,aAAa,EAkW/C,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAAkC,CAAC;AAEpF,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CAChC;AAID,mFAAmF;AACnF,eAAO,MAAM,YAAY,EAAE,SAAS,OAAO,EAyJ1C,CAAC"}
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/rbac/catalog.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,WAAW,EAAE,SAAS,aAAa,EA6Y/C,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAAkC,CAAC;AAEpF,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CAChC;AAID,mFAAmF;AACnF,eAAO,MAAM,YAAY,EAAE,SAAS,OAAO,EA4N1C,CAAC"}
@@ -273,6 +273,49 @@ export const PERMISSIONS = [
273
273
  action: 'write',
274
274
  description: 'Gerenciar obrigações, certificados e procurações',
275
275
  },
276
+ /*
277
+ * ═══ Credenciais fiscais: três permissões, e a separação é o ponto ═══════
278
+ *
279
+ * `compliance.write` já existia e cobria "gerenciar certificados" — mas ela
280
+ * cobria o CADASTRO de metadados, numa época em que o produto não tinha como
281
+ * receber material criptográfico. Reutilizá-la para o upload daria a todo
282
+ * contador do escritório a capacidade de custodiar a chave privada de um
283
+ * cliente, e é uma capacidade diferente da de anotar um vencimento.
284
+ *
285
+ * A separação que mais importa é a última: quem CADASTRA a credencial não é
286
+ * necessariamente quem AUTORIZA uma consulta real ao ambiente oficial em nome
287
+ * de um contribuinte. A primeira é operação de escritório; a segunda tem
288
+ * consequência sobre um terceiro — no limite, o CNPJ dele bloqueado — e por
289
+ * isso nasce só no Owner.
290
+ */
291
+ {
292
+ key: 'fiscal.credential.read',
293
+ resource: 'fiscal.credential',
294
+ action: 'read',
295
+ description: 'Ver metadados de credenciais fiscais (nunca o segredo)',
296
+ },
297
+ {
298
+ key: 'fiscal.credential.write',
299
+ resource: 'fiscal.credential',
300
+ action: 'write',
301
+ description: 'Enviar, substituir e revogar credencial fiscal de cliente',
302
+ },
303
+ {
304
+ key: 'fiscal.run.authorize',
305
+ resource: 'fiscal.run',
306
+ action: 'manage',
307
+ description: 'Autorizar uma consulta real e única a ambiente fiscal oficial',
308
+ },
309
+ {
310
+ // Separada de `fiscal.run.authorize` de propósito, e a diferença é de grau,
311
+ // não de tipo: autorizar uma consulta é gastar o certificado de um terceiro
312
+ // uma vez; DECLARAR que o escritório opera automação fiscal em produção é
313
+ // atravessar a fronteira entre ensaio e operação real, para toda a carteira.
314
+ key: 'fiscal.enrollment.manage',
315
+ resource: 'fiscal.enrollment',
316
+ action: 'manage',
317
+ description: 'Habilitar automação fiscal do escritório e matricular clientes',
318
+ },
276
319
  {
277
320
  key: 'office.onboarding.read',
278
321
  resource: 'office.onboarding',
@@ -396,6 +439,11 @@ export const SYSTEM_ROLES = [
396
439
  'billing.fee.manage',
397
440
  'compliance.read',
398
441
  'compliance.write',
442
+ 'fiscal.credential.read',
443
+ 'fiscal.credential.write',
444
+ // `fiscal.run.authorize` NÃO entra aqui: autorizar uma consulta real ao
445
+ // ambiente oficial usa o certificado do CLIENTE contra a Receita, e o
446
+ // custo de um erro recai sobre o CNPJ dele. Fica com o Owner.
399
447
  'office.onboarding.read',
400
448
  'office.onboarding.create',
401
449
  'office.onboarding.manage',
@@ -425,6 +473,7 @@ export const SYSTEM_ROLES = [
425
473
  'crm.read',
426
474
  'billing.read',
427
475
  'compliance.read',
476
+ 'fiscal.credential.read',
428
477
  'communication.read',
429
478
  'office.onboarding.read',
430
479
  'office.onboarding.timeline.read',
@@ -486,6 +535,67 @@ export const SYSTEM_ROLES = [
486
535
  'office.onboarding.timeline.read',
487
536
  ],
488
537
  },
538
+ /**
539
+ * Automação de teste ponta a ponta — infraestrutura de QA, não pessoa.
540
+ *
541
+ * ## Por que existe um papel só para isto
542
+ *
543
+ * Validar a interface em produção por automação exige uma identidade que
544
+ * entre. A conta pessoal do titular não serve: a trilha passaria a atribuir a
545
+ * ele atos que não praticou, e a senha teria de circular. Um papel existente
546
+ * também não serve — `finance`, o mais próximo, carrega `communication.send`
547
+ * e `finance.charge.create`, e uma automação que pode escrever para cliente ou
548
+ * emitir cobrança é uma automação capaz de causar dano fora do teste.
549
+ *
550
+ * ## As cinco permissões, e por que exatamente estas
551
+ *
552
+ * São o mínimo para o que a automação precisa VER e a única coisa que precisa
553
+ * MUDAR: ler carteira e painel, ler financeiro, cancelar um recebível, e ler a
554
+ * própria trilha para conferir que o ato ficou registrado.
555
+ *
556
+ * `fiscal.credential.read` entrou na C1-R1-PROD, por uma razão específica: a
557
+ * validação de produção precisava provar que o acesso a Credenciais fiscais é
558
+ * ALCANÇÁVEL a partir da ficha do cliente — e o defeito que a C1-R1 corrigiu
559
+ * era exatamente esse link ficar fora da tela. Sem a permissão, a automação
560
+ * abria a ficha e não via o link; o teste passava medindo a ausência causada
561
+ * pelo próprio RBAC, e não o layout. Verde que não mede.
562
+ *
563
+ * **É leitura de METADATA, e isso é propriedade do banco, não promessa.** As
564
+ * rotas que a exigem devolvem `CERTIFICATE_COLUMNS` — impressão digital,
565
+ * titular, emissor, validade — e nenhuma coluna de material. O material do
566
+ * certificado é `exposure = 'write_only'` por CHECK da 0060, e `revealSecret`
567
+ * o recusa até para quem tivesse `vault.credential.decrypt`, que este papel
568
+ * não tem.
569
+ *
570
+ * **E é permanente, deliberadamente.** Uma concessão revogada ao fim de cada
571
+ * gate deixaria o gate seguinte cego para a mesma superfície, e voltaríamos ao
572
+ * verde que não mede. Ela fica aqui, no catálogo versionado, para ser revista
573
+ * em revisão de código como qualquer outra — e não num INSERT manual feito em
574
+ * produção por quem queria passar no teste.
575
+ *
576
+ * ## O que este papel deliberadamente NÃO pode
577
+ *
578
+ * Gerir usuários, ler ou decifrar o cofre, alterar configuração da
579
+ * organização, configurar canal de comunicação, enviar mensagem, emitir
580
+ * cobrança, mexer em honorário ou na régua. Nenhuma delas é necessária para
581
+ * validar tela, e cada uma seria uma forma de a automação sair do teste.
582
+ *
583
+ * Ele é `E2E_TEST_IDENTITY`: infraestrutura de QA, distinta da identidade de
584
+ * serviço do produto — que, essa sim, a auditoria da Fase 11 provou
585
+ * desnecessária, porque nenhum job usa membership.
586
+ */
587
+ {
588
+ key: 'e2e_automation',
589
+ name: 'Automação de teste (E2E)',
590
+ permissions: [
591
+ 'client.read',
592
+ 'billing.read',
593
+ 'billing.write',
594
+ 'audit.read',
595
+ // Metadata de certificado, nunca material. Ver o bloco acima.
596
+ 'fiscal.credential.read',
597
+ ],
598
+ },
489
599
  {
490
600
  key: 'client_titular',
491
601
  name: 'Cliente — Titular',
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/rbac/catalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/rbac/catalog.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  export type { SubscriptionPeriodicity, PricingModel, Plan, SubscriptionStatus, SubscriptionItem, Subscription, BillingMode, NormalizedInvoiceStatus, NormalizedSubStatus, EnsureCustomerInput, ProviderCustomer, CreateCheckoutInput, ProviderCheckout, ProviderInvoice, EventAttribution, WebhookHeaders, NormalizedWebhookEvent, SubscriptionProviderConfig, PaymentGatewayProvider, ProviderErrorCode, } from './types.js';
2
- export { isRetryableProviderError, CANONICAL_PROVIDER_ERROR_MESSAGES, SUBSCRIPTION_BILLING_CONTRACT_VERSION } from './types.js';
3
- export type { SubscriptionEventType, DomainEvent, CreateEventInput, EventPublisher } from './events.js';
4
- export { createDomainEvent, isMandatoryEvent, MANDATORY_EVENT_TYPES, NoopEventPublisher, InMemoryEventPublisher } from './events.js';
2
+ export { isRetryableProviderError, CANONICAL_PROVIDER_ERROR_MESSAGES, SUBSCRIPTION_BILLING_CONTRACT_VERSION, } from './types.js';
3
+ export type { SubscriptionEventType, DomainEvent, CreateEventInput, EventPublisher, } from './events.js';
4
+ export { createDomainEvent, isMandatoryEvent, MANDATORY_EVENT_TYPES, NoopEventPublisher, InMemoryEventPublisher, } from './events.js';
5
5
  export type { ReconcileInput, ReconcileResult } from './reconcile.js';
6
6
  export { applySubscriptionEvent, changePlan, cancelSubscription, startTrial } from './reconcile.js';
7
7
  export { dunningStepsAsEvents } from './dunning.js';
@@ -12,7 +12,10 @@ export { DisabledSubscriptionProvider } from './provider/disabled.js';
12
12
  export { SAAS_PLANS, DEFAULT_TRIAL_DAYS } from './plans.js';
13
13
  export type { SaasPlanDef } from './plans.js';
14
14
  export { ensureSaasPlanCatalog, listPublicPlans, getPlan, getSubscription, getSubscriptionByTenant, upsertSubscription, listInvoices, listBillingEvents, withOperatorContext, } from './repository.js';
15
- export type { SaasPlanRow, SubscriptionRow, SaasInvoiceRow, BackofficeSubscriptionRow, BackofficeSummary } from './repository.js';
16
- export { seedSaasPlans, signupSelfService, subscriptionOverview, standingFor, entitlementsForPlan, startCheckout, processWebhook, changePlanForTenant, cancelForTenant, reactivateForTenant, backofficeListSubscriptions, backofficeOverview, backofficeListWebhookEvents, backofficeActivateSubscription, retryFailedWebhookEvents, runBillingCron, } from './service.js';
15
+ export type { SaasPlanRow, SubscriptionRow, SaasInvoiceRow, BackofficeSubscriptionRow, BackofficeSummary, } from './repository.js';
16
+ export { seedSaasPlans, signupSelfService, provisionAccountingOffice, subscriptionOverview, standingFor, entitlementsForPlan, startCheckout, processWebhook, changePlanForTenant, cancelForTenant, reactivateForTenant, backofficeListSubscriptions, backofficeOverview, backofficeListWebhookEvents, backofficeActivateSubscription, backofficeSetPlatformBillingExemption, retryFailedWebhookEvents, runBillingCron, } from './service.js';
17
17
  export type { SaasBillingConfig, SignupInput, SignupResult, SubscriptionStanding, SubscriptionOverview, CheckoutResult, WebhookProcessResult, CronReport, } from './service.js';
18
+ export type { ProvisionOfficeInput, ProvisionOfficeResult } from './service.js';
19
+ export { readTenantPlatformBilling, setTenantPlatformBilling, isPlatformBillingExempt, standardPlatformBilling, PlatformBillingExemptError, } from './platform-exemption.js';
20
+ export type { TenantPlatformBilling, PlatformBillingMode, PlatformExemptionReason, } from './platform-exemption.js';
18
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/subscription-billing/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,uBAAuB,EACvB,YAAY,EACZ,IAAI,EACJ,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,sBAAsB,EACtB,0BAA0B,EAC1B,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,wBAAwB,EAAE,iCAAiC,EAAE,qCAAqC,EAAE,MAAM,YAAY,CAAC;AAEhI,YAAY,EAAE,qBAAqB,EAAE,WAAW,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACxG,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAErI,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAMpG,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,EAAE,kCAAkC,EAAE,MAAM,wBAAwB,CAAC;AAC5E,YAAY,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AAGtE,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAC5D,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,OAAO,EACP,eAAe,EACf,uBAAuB,EACvB,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,cAAc,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAClI,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,oBAAoB,EACpB,WAAW,EACX,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,2BAA2B,EAC3B,kBAAkB,EAClB,2BAA2B,EAC3B,8BAA8B,EAC9B,wBAAwB,EACxB,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACd,oBAAoB,EACpB,UAAU,GACX,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/subscription-billing/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,uBAAuB,EACvB,YAAY,EACZ,IAAI,EACJ,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,sBAAsB,EACtB,0BAA0B,EAC1B,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,wBAAwB,EACxB,iCAAiC,EACjC,qCAAqC,GACtC,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,qBAAqB,EACrB,WAAW,EACX,gBAAgB,EAChB,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AAErB,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAMpG,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,EAAE,kCAAkC,EAAE,MAAM,wBAAwB,CAAC;AAC5E,YAAY,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AAGtE,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAC5D,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,OAAO,EACP,eAAe,EACf,uBAAuB,EACvB,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,WAAW,EACX,eAAe,EACf,cAAc,EACd,yBAAyB,EACzB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,yBAAyB,EACzB,oBAAoB,EACpB,WAAW,EACX,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,2BAA2B,EAC3B,kBAAkB,EAClB,2BAA2B,EAC3B,8BAA8B,EAC9B,qCAAqC,EACrC,wBAAwB,EACxB,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACd,oBAAoB,EACpB,UAAU,GACX,MAAM,cAAc,CAAC;AAEtB,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAEhF,OAAO,EACL,yBAAyB,EACzB,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC"}