@baruk/core 0.3.1 → 0.5.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 (1047) hide show
  1. package/.baruk-provenance.json +10 -0
  2. package/CHANGELOG.md +127 -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/password-reset.d.ts +30 -1
  8. package/dist/auth/password-reset.d.ts.map +1 -1
  9. package/dist/auth/password-reset.js +139 -11
  10. package/dist/auth/password-reset.js.map +1 -1
  11. package/dist/auth/service.d.ts +60 -2
  12. package/dist/auth/service.d.ts.map +1 -1
  13. package/dist/auth/service.js +121 -11
  14. package/dist/auth/service.js.map +1 -1
  15. package/dist/billing/ar-repository.d.ts +374 -0
  16. package/dist/billing/ar-repository.d.ts.map +1 -0
  17. package/dist/billing/ar-repository.js +783 -0
  18. package/dist/billing/ar-repository.js.map +1 -0
  19. package/dist/billing/auto-generation.d.ts +87 -0
  20. package/dist/billing/auto-generation.d.ts.map +1 -0
  21. package/dist/billing/auto-generation.js +181 -0
  22. package/dist/billing/auto-generation.js.map +1 -0
  23. package/dist/billing/live-guard.d.ts +64 -0
  24. package/dist/billing/live-guard.d.ts.map +1 -0
  25. package/dist/billing/live-guard.js +68 -0
  26. package/dist/billing/live-guard.js.map +1 -0
  27. package/dist/billing/payment-means-catalog.d.ts +17 -0
  28. package/dist/billing/payment-means-catalog.d.ts.map +1 -0
  29. package/dist/billing/payment-means-catalog.js +21 -0
  30. package/dist/billing/payment-means-catalog.js.map +1 -0
  31. package/dist/billing/payment-means.d.ts +38 -0
  32. package/dist/billing/payment-means.d.ts.map +1 -0
  33. package/dist/billing/payment-means.js +29 -0
  34. package/dist/billing/payment-means.js.map +1 -0
  35. package/dist/billing/payment-rail.d.ts +118 -0
  36. package/dist/billing/payment-rail.d.ts.map +1 -0
  37. package/dist/billing/payment-rail.js +295 -0
  38. package/dist/billing/payment-rail.js.map +1 -0
  39. package/dist/billing/provider/asaas.d.ts +46 -1
  40. package/dist/billing/provider/asaas.d.ts.map +1 -1
  41. package/dist/billing/provider/asaas.js +194 -14
  42. package/dist/billing/provider/asaas.js.map +1 -1
  43. package/dist/billing/provider/manual.js +1 -1
  44. package/dist/billing/provider/manual.js.map +1 -1
  45. package/dist/billing/provider/types.d.ts +115 -8
  46. package/dist/billing/provider/types.d.ts.map +1 -1
  47. package/dist/billing/provider-account.d.ts +127 -0
  48. package/dist/billing/provider-account.d.ts.map +1 -0
  49. package/dist/billing/provider-account.js +217 -0
  50. package/dist/billing/provider-account.js.map +1 -0
  51. package/dist/billing/provider-onboarding.d.ts +67 -0
  52. package/dist/billing/provider-onboarding.d.ts.map +1 -0
  53. package/dist/billing/provider-onboarding.js +234 -0
  54. package/dist/billing/provider-onboarding.js.map +1 -0
  55. package/dist/billing/receivable.d.ts +5 -1
  56. package/dist/billing/receivable.d.ts.map +1 -1
  57. package/dist/billing/reconcile.d.ts +58 -0
  58. package/dist/billing/reconcile.d.ts.map +1 -0
  59. package/dist/billing/reconcile.js +138 -0
  60. package/dist/billing/reconcile.js.map +1 -0
  61. package/dist/billing/repository.d.ts +134 -1
  62. package/dist/billing/repository.d.ts.map +1 -1
  63. package/dist/billing/repository.js +193 -20
  64. package/dist/billing/repository.js.map +1 -1
  65. package/dist/cjs/audit/repository.js +41 -7
  66. package/dist/cjs/audit/repository.js.map +1 -1
  67. package/dist/cjs/auth/password-reset.js +141 -11
  68. package/dist/cjs/auth/password-reset.js.map +1 -1
  69. package/dist/cjs/auth/service.js +121 -10
  70. package/dist/cjs/auth/service.js.map +1 -1
  71. package/dist/cjs/billing/ar-repository.js +804 -0
  72. package/dist/cjs/billing/ar-repository.js.map +1 -0
  73. package/dist/cjs/billing/auto-generation.js +186 -0
  74. package/dist/cjs/billing/auto-generation.js.map +1 -0
  75. package/dist/cjs/billing/live-guard.js +72 -0
  76. package/dist/cjs/billing/live-guard.js.map +1 -0
  77. package/dist/cjs/billing/payment-means-catalog.js +25 -0
  78. package/dist/cjs/billing/payment-means-catalog.js.map +1 -0
  79. package/dist/cjs/billing/payment-means.js +33 -0
  80. package/dist/cjs/billing/payment-means.js.map +1 -0
  81. package/dist/cjs/billing/payment-rail.js +301 -0
  82. package/dist/cjs/billing/payment-rail.js.map +1 -0
  83. package/dist/cjs/billing/provider/asaas.js +194 -14
  84. package/dist/cjs/billing/provider/asaas.js.map +1 -1
  85. package/dist/cjs/billing/provider/manual.js +1 -1
  86. package/dist/cjs/billing/provider/manual.js.map +1 -1
  87. package/dist/cjs/billing/provider-account.js +229 -0
  88. package/dist/cjs/billing/provider-account.js.map +1 -0
  89. package/dist/cjs/billing/provider-onboarding.js +239 -0
  90. package/dist/cjs/billing/provider-onboarding.js.map +1 -0
  91. package/dist/cjs/billing/reconcile.js +143 -0
  92. package/dist/cjs/billing/reconcile.js.map +1 -0
  93. package/dist/cjs/billing/repository.js +197 -19
  94. package/dist/cjs/billing/repository.js.map +1 -1
  95. package/dist/cjs/clients/ibge.js +103 -0
  96. package/dist/cjs/clients/ibge.js.map +1 -0
  97. package/dist/cjs/clients/repository.js +276 -23
  98. package/dist/cjs/clients/repository.js.map +1 -1
  99. package/dist/cjs/collection/branding.js +330 -0
  100. package/dist/cjs/collection/branding.js.map +1 -0
  101. package/dist/cjs/collection/channel-accounts.js +137 -0
  102. package/dist/cjs/collection/channel-accounts.js.map +1 -0
  103. package/dist/cjs/collection/channel.js +17 -0
  104. package/dist/cjs/collection/channel.js.map +1 -0
  105. package/dist/cjs/collection/clearance-store.js +74 -0
  106. package/dist/cjs/collection/clearance-store.js.map +1 -0
  107. package/dist/cjs/collection/communication-bridge.js +140 -0
  108. package/dist/cjs/collection/communication-bridge.js.map +1 -0
  109. package/dist/cjs/collection/communication-runtime.js +256 -0
  110. package/dist/cjs/collection/communication-runtime.js.map +1 -0
  111. package/dist/cjs/collection/consent-repository.js +84 -0
  112. package/dist/cjs/collection/consent-repository.js.map +1 -0
  113. package/dist/cjs/collection/copy.js +125 -0
  114. package/dist/cjs/collection/copy.js.map +1 -0
  115. package/dist/cjs/collection/delivery-callback.js +151 -0
  116. package/dist/cjs/collection/delivery-callback.js.map +1 -0
  117. package/dist/cjs/collection/email-layout.js +252 -0
  118. package/dist/cjs/collection/email-layout.js.map +1 -0
  119. package/dist/cjs/collection/engine.js +434 -0
  120. package/dist/cjs/collection/engine.js.map +1 -0
  121. package/dist/cjs/collection/format.js +76 -0
  122. package/dist/cjs/collection/format.js.map +1 -0
  123. package/dist/cjs/collection/payment-block.js +3 -0
  124. package/dist/cjs/collection/payment-block.js.map +1 -0
  125. package/dist/cjs/collection/policy.js +175 -0
  126. package/dist/cjs/collection/policy.js.map +1 -0
  127. package/dist/cjs/collection/repository.js +260 -0
  128. package/dist/cjs/collection/repository.js.map +1 -0
  129. package/dist/cjs/collection/subject.js +104 -0
  130. package/dist/cjs/collection/subject.js.map +1 -0
  131. package/dist/cjs/collection/template-catalog.js +165 -0
  132. package/dist/cjs/collection/template-catalog.js.map +1 -0
  133. package/dist/cjs/collection/template.js +78 -0
  134. package/dist/cjs/collection/template.js.map +1 -0
  135. package/dist/cjs/communication/adapters/email.js +132 -0
  136. package/dist/cjs/communication/adapters/email.js.map +1 -0
  137. package/dist/cjs/communication/adapters/sms.js +127 -0
  138. package/dist/cjs/communication/adapters/sms.js.map +1 -0
  139. package/dist/cjs/communication/adapters/whatsapp-language.js +39 -0
  140. package/dist/cjs/communication/adapters/whatsapp-language.js.map +1 -0
  141. package/dist/cjs/communication/adapters/whatsapp-templates.js +100 -0
  142. package/dist/cjs/communication/adapters/whatsapp-templates.js.map +1 -0
  143. package/dist/cjs/communication/adapters/whatsapp.js +213 -0
  144. package/dist/cjs/communication/adapters/whatsapp.js.map +1 -0
  145. package/dist/cjs/communication/audit.js +61 -0
  146. package/dist/cjs/communication/audit.js.map +1 -0
  147. package/dist/cjs/communication/capabilities.js +76 -0
  148. package/dist/cjs/communication/capabilities.js.map +1 -0
  149. package/dist/cjs/communication/channel.js +53 -0
  150. package/dist/cjs/communication/channel.js.map +1 -0
  151. package/dist/cjs/communication/claim.js +228 -0
  152. package/dist/cjs/communication/claim.js.map +1 -0
  153. package/dist/cjs/communication/clearance.js +18 -0
  154. package/dist/cjs/communication/clearance.js.map +1 -0
  155. package/dist/cjs/communication/consent.js +43 -0
  156. package/dist/cjs/communication/consent.js.map +1 -0
  157. package/dist/cjs/communication/context.js +45 -0
  158. package/dist/cjs/communication/context.js.map +1 -0
  159. package/dist/cjs/communication/credentials.js +121 -0
  160. package/dist/cjs/communication/credentials.js.map +1 -0
  161. package/dist/cjs/communication/dry-run-scenario.js +166 -0
  162. package/dist/cjs/communication/dry-run-scenario.js.map +1 -0
  163. package/dist/cjs/communication/dry-run.js +97 -0
  164. package/dist/cjs/communication/dry-run.js.map +1 -0
  165. package/dist/cjs/communication/engine.js +495 -0
  166. package/dist/cjs/communication/engine.js.map +1 -0
  167. package/dist/cjs/communication/graph.js +50 -0
  168. package/dist/cjs/communication/graph.js.map +1 -0
  169. package/dist/cjs/communication/idempotency.js +26 -0
  170. package/dist/cjs/communication/idempotency.js.map +1 -0
  171. package/dist/cjs/communication/identity.js +110 -0
  172. package/dist/cjs/communication/identity.js.map +1 -0
  173. package/dist/cjs/communication/index.js +135 -0
  174. package/dist/cjs/communication/index.js.map +1 -0
  175. package/dist/cjs/communication/onboarding.js +297 -0
  176. package/dist/cjs/communication/onboarding.js.map +1 -0
  177. package/dist/cjs/communication/policy.js +16 -0
  178. package/dist/cjs/communication/policy.js.map +1 -0
  179. package/dist/cjs/communication/routing.js +77 -0
  180. package/dist/cjs/communication/routing.js.map +1 -0
  181. package/dist/cjs/communication/sender-profile.js +128 -0
  182. package/dist/cjs/communication/sender-profile.js.map +1 -0
  183. package/dist/cjs/communication/status.js +86 -0
  184. package/dist/cjs/communication/status.js.map +1 -0
  185. package/dist/cjs/communication/stores/onboarding.js +135 -0
  186. package/dist/cjs/communication/stores/onboarding.js.map +1 -0
  187. package/dist/cjs/communication/stores/postgres.js +458 -0
  188. package/dist/cjs/communication/stores/postgres.js.map +1 -0
  189. package/dist/cjs/communication/stores/routing.js +334 -0
  190. package/dist/cjs/communication/stores/routing.js.map +1 -0
  191. package/dist/cjs/communication/stores/secrets.js +126 -0
  192. package/dist/cjs/communication/stores/secrets.js.map +1 -0
  193. package/dist/cjs/communication/template-provider.js +22 -0
  194. package/dist/cjs/communication/template-provider.js.map +1 -0
  195. package/dist/cjs/communication/template.js +63 -0
  196. package/dist/cjs/communication/template.js.map +1 -0
  197. package/dist/cjs/communication/webhook-subscription.js +258 -0
  198. package/dist/cjs/communication/webhook-subscription.js.map +1 -0
  199. package/dist/cjs/communication/webhook.js +292 -0
  200. package/dist/cjs/communication/webhook.js.map +1 -0
  201. package/dist/cjs/competence/business-days.js +155 -0
  202. package/dist/cjs/competence/business-days.js.map +1 -0
  203. package/dist/cjs/competence/catalog-validation.js +174 -0
  204. package/dist/cjs/competence/catalog-validation.js.map +1 -0
  205. package/dist/cjs/competence/obligation-preview.js +190 -0
  206. package/dist/cjs/competence/obligation-preview.js.map +1 -0
  207. package/dist/cjs/competence/repository.js +622 -0
  208. package/dist/cjs/competence/repository.js.map +1 -0
  209. package/dist/cjs/contacts/phone.js +192 -0
  210. package/dist/cjs/contacts/phone.js.map +1 -0
  211. package/dist/cjs/dashboard/pilot-panel.js +90 -0
  212. package/dist/cjs/dashboard/pilot-panel.js.map +1 -0
  213. package/dist/cjs/dashboard/repository.js +11 -1
  214. package/dist/cjs/dashboard/repository.js.map +1 -1
  215. package/dist/cjs/db/client.js +17 -11
  216. package/dist/cjs/db/client.js.map +1 -1
  217. package/dist/cjs/db/provision-e2e-identity.js +111 -0
  218. package/dist/cjs/db/provision-e2e-identity.js.map +1 -0
  219. package/dist/cjs/db/seed-catalog.js +48 -0
  220. package/dist/cjs/db/seed-catalog.js.map +1 -0
  221. package/dist/cjs/db/seed.js +15 -7
  222. package/dist/cjs/db/seed.js.map +1 -1
  223. package/dist/cjs/documents/repository.js +244 -0
  224. package/dist/cjs/documents/repository.js.map +1 -0
  225. package/dist/cjs/documents/requests.js +136 -0
  226. package/dist/cjs/documents/requests.js.map +1 -0
  227. package/dist/cjs/fiscal/applicability.js +164 -0
  228. package/dist/cjs/fiscal/applicability.js.map +1 -0
  229. package/dist/cjs/fiscal/conditions.js +198 -0
  230. package/dist/cjs/fiscal/conditions.js.map +1 -0
  231. package/dist/cjs/fiscal/contracts/nfse-adn-contract.js +390 -0
  232. package/dist/cjs/fiscal/contracts/nfse-adn-contract.js.map +1 -0
  233. package/dist/cjs/fiscal/contracts/nfse-adn-endpoint.js +108 -0
  234. package/dist/cjs/fiscal/contracts/nfse-adn-endpoint.js.map +1 -0
  235. package/dist/cjs/fiscal/contracts/nfse-adn-envelope.js +220 -0
  236. package/dist/cjs/fiscal/contracts/nfse-adn-envelope.js.map +1 -0
  237. package/dist/cjs/fiscal/coverage/model.js +127 -0
  238. package/dist/cjs/fiscal/coverage/model.js.map +1 -0
  239. package/dist/cjs/fiscal/coverage/requests.js +99 -0
  240. package/dist/cjs/fiscal/coverage/requests.js.map +1 -0
  241. package/dist/cjs/fiscal/credentials/material.js +168 -0
  242. package/dist/cjs/fiscal/credentials/material.js.map +1 -0
  243. package/dist/cjs/fiscal/credentials/readiness.js +163 -0
  244. package/dist/cjs/fiscal/credentials/readiness.js.map +1 -0
  245. package/dist/cjs/fiscal/eligibility.js +199 -0
  246. package/dist/cjs/fiscal/eligibility.js.map +1 -0
  247. package/dist/cjs/fiscal/ingestion/__fixtures__/nfse.js +128 -0
  248. package/dist/cjs/fiscal/ingestion/__fixtures__/nfse.js.map +1 -0
  249. package/dist/cjs/fiscal/ingestion/adn-transport.js +229 -0
  250. package/dist/cjs/fiscal/ingestion/adn-transport.js.map +1 -0
  251. package/dist/cjs/fiscal/ingestion/direction.js +36 -0
  252. package/dist/cjs/fiscal/ingestion/direction.js.map +1 -0
  253. package/dist/cjs/fiscal/ingestion/nfse-adn.js +228 -0
  254. package/dist/cjs/fiscal/ingestion/nfse-adn.js.map +1 -0
  255. package/dist/cjs/fiscal/ingestion/pipeline.js +704 -0
  256. package/dist/cjs/fiscal/ingestion/pipeline.js.map +1 -0
  257. package/dist/cjs/fiscal/ingestion/provider.js +51 -0
  258. package/dist/cjs/fiscal/ingestion/provider.js.map +1 -0
  259. package/dist/cjs/fiscal/ingestion/repository.js +132 -0
  260. package/dist/cjs/fiscal/ingestion/repository.js.map +1 -0
  261. package/dist/cjs/fiscal/ingestion/synthetic-provider.js +103 -0
  262. package/dist/cjs/fiscal/ingestion/synthetic-provider.js.map +1 -0
  263. package/dist/cjs/fiscal/ingestion/synthetic-transport-types.js +13 -0
  264. package/dist/cjs/fiscal/ingestion/synthetic-transport-types.js.map +1 -0
  265. package/dist/cjs/fiscal/ingestion/synthetic-transport.js +61 -0
  266. package/dist/cjs/fiscal/ingestion/synthetic-transport.js.map +1 -0
  267. package/dist/cjs/fiscal/ingestion/xml-reader.js +121 -0
  268. package/dist/cjs/fiscal/ingestion/xml-reader.js.map +1 -0
  269. package/dist/cjs/fiscal/repository.js +470 -0
  270. package/dist/cjs/fiscal/repository.js.map +1 -0
  271. package/dist/cjs/fiscal/sync/circuit.js +124 -0
  272. package/dist/cjs/fiscal/sync/circuit.js.map +1 -0
  273. package/dist/cjs/fiscal/sync/intervention.js +140 -0
  274. package/dist/cjs/fiscal/sync/intervention.js.map +1 -0
  275. package/dist/cjs/fiscal/sync/lease.js +146 -0
  276. package/dist/cjs/fiscal/sync/lease.js.map +1 -0
  277. package/dist/cjs/fiscal/sync/observability.js +244 -0
  278. package/dist/cjs/fiscal/sync/observability.js.map +1 -0
  279. package/dist/cjs/fiscal/sync/orchestrator.js +490 -0
  280. package/dist/cjs/fiscal/sync/orchestrator.js.map +1 -0
  281. package/dist/cjs/fiscal/sync/policy.js +143 -0
  282. package/dist/cjs/fiscal/sync/policy.js.map +1 -0
  283. package/dist/cjs/fiscal/sync/reprocess.js +241 -0
  284. package/dist/cjs/fiscal/sync/reprocess.js.map +1 -0
  285. package/dist/cjs/fiscal/sync/retry.js +183 -0
  286. package/dist/cjs/fiscal/sync/retry.js.map +1 -0
  287. package/dist/cjs/fiscal/sync/secret-boundary.js +123 -0
  288. package/dist/cjs/fiscal/sync/secret-boundary.js.map +1 -0
  289. package/dist/cjs/fiscal/transport/https.js +309 -0
  290. package/dist/cjs/fiscal/transport/https.js.map +1 -0
  291. package/dist/cjs/fiscal/transport/synthetic-tls.js +328 -0
  292. package/dist/cjs/fiscal/transport/synthetic-tls.js.map +1 -0
  293. package/dist/cjs/fiscal/transport/types.js +93 -0
  294. package/dist/cjs/fiscal/transport/types.js.map +1 -0
  295. package/dist/cjs/import/br-documents.js +85 -0
  296. package/dist/cjs/import/br-documents.js.map +1 -0
  297. package/dist/cjs/import/clients-import.js +347 -40
  298. package/dist/cjs/import/clients-import.js.map +1 -1
  299. package/dist/cjs/index.js +711 -39
  300. package/dist/cjs/index.js.map +1 -1
  301. package/dist/cjs/legal/documents.js +224 -17
  302. package/dist/cjs/legal/documents.js.map +1 -1
  303. package/dist/cjs/legal/index.js +3 -1
  304. package/dist/cjs/legal/index.js.map +1 -1
  305. package/dist/cjs/legal/types.js +1 -0
  306. package/dist/cjs/legal/types.js.map +1 -1
  307. package/dist/cjs/mail/auth-templates.js +29 -0
  308. package/dist/cjs/mail/auth-templates.js.map +1 -0
  309. package/dist/cjs/mail/dedup-store.js +12 -51
  310. package/dist/cjs/mail/dedup-store.js.map +1 -1
  311. package/dist/cjs/mail/index.js +16 -4
  312. package/dist/cjs/mail/index.js.map +1 -1
  313. package/dist/cjs/mail/provider.js +12 -247
  314. package/dist/cjs/mail/provider.js.map +1 -1
  315. package/dist/cjs/mail/resend.js +14 -18
  316. package/dist/cjs/mail/resend.js.map +1 -1
  317. package/dist/cjs/mail/sender-resolver.js +12 -11
  318. package/dist/cjs/mail/sender-resolver.js.map +1 -1
  319. package/dist/cjs/mail/template-renderer.js +11 -16
  320. package/dist/cjs/mail/template-renderer.js.map +1 -1
  321. package/dist/cjs/mail/transactional-outbound.js +117 -0
  322. package/dist/cjs/mail/transactional-outbound.js.map +1 -0
  323. package/dist/cjs/mail/types.js +8 -35
  324. package/dist/cjs/mail/types.js.map +1 -1
  325. package/dist/cjs/onboarding/persistence.js +4 -4
  326. package/dist/cjs/onboarding/persistence.js.map +1 -1
  327. package/dist/cjs/pilot/go-live-checklist.js +212 -0
  328. package/dist/cjs/pilot/go-live-checklist.js.map +1 -0
  329. package/dist/cjs/pilot/milestone.js +79 -0
  330. package/dist/cjs/pilot/milestone.js.map +1 -0
  331. package/dist/cjs/platform/capabilities.js +144 -0
  332. package/dist/cjs/platform/capabilities.js.map +1 -0
  333. package/dist/cjs/platform/job-contract.js +411 -0
  334. package/dist/cjs/platform/job-contract.js.map +1 -0
  335. package/dist/cjs/portal/provisioning.js +144 -0
  336. package/dist/cjs/portal/provisioning.js.map +1 -0
  337. package/dist/cjs/pricing-engine/canonical.js +42 -0
  338. package/dist/cjs/pricing-engine/canonical.js.map +1 -0
  339. package/dist/cjs/pricing-engine/errors.js +6 -1
  340. package/dist/cjs/pricing-engine/errors.js.map +1 -1
  341. package/dist/cjs/pricing-engine/index.js +12 -1
  342. package/dist/cjs/pricing-engine/index.js.map +1 -1
  343. package/dist/cjs/pricing-engine/pipeline.js +200 -26
  344. package/dist/cjs/pricing-engine/pipeline.js.map +1 -1
  345. package/dist/cjs/pricing-engine/shadow-adapter.js +79 -0
  346. package/dist/cjs/pricing-engine/shadow-adapter.js.map +1 -0
  347. package/dist/cjs/pricing-engine/shadow-diff.js +55 -0
  348. package/dist/cjs/pricing-engine/shadow-diff.js.map +1 -0
  349. package/dist/cjs/pricing-engine/shadow-facade.js +85 -0
  350. package/dist/cjs/pricing-engine/shadow-facade.js.map +1 -0
  351. package/dist/cjs/pricing-engine/shadow-legacy-types.js +19 -0
  352. package/dist/cjs/pricing-engine/shadow-legacy-types.js.map +1 -0
  353. package/dist/cjs/pricing-engine/shadow-metrics.js +34 -0
  354. package/dist/cjs/pricing-engine/shadow-metrics.js.map +1 -0
  355. package/dist/cjs/pricing-engine/shadow-normalizer.js +42 -0
  356. package/dist/cjs/pricing-engine/shadow-normalizer.js.map +1 -0
  357. package/dist/cjs/rbac/authorize.js +28 -0
  358. package/dist/cjs/rbac/authorize.js.map +1 -1
  359. package/dist/cjs/rbac/catalog.js +101 -1
  360. package/dist/cjs/rbac/catalog.js.map +1 -1
  361. package/dist/cjs/rbac/workload-provisioning.js +160 -0
  362. package/dist/cjs/rbac/workload-provisioning.js.map +1 -0
  363. package/dist/cjs/rbac/workload.js +191 -0
  364. package/dist/cjs/rbac/workload.js.map +1 -0
  365. package/dist/cjs/storage/checksum.js +15 -0
  366. package/dist/cjs/storage/checksum.js.map +1 -0
  367. package/dist/cjs/storage/key.js +72 -0
  368. package/dist/cjs/storage/key.js.map +1 -0
  369. package/dist/cjs/storage/local.js +100 -0
  370. package/dist/cjs/storage/local.js.map +1 -0
  371. package/dist/cjs/storage/r2.js +181 -0
  372. package/dist/cjs/storage/r2.js.map +1 -0
  373. package/dist/cjs/storage/registry.js +41 -0
  374. package/dist/cjs/storage/registry.js.map +1 -0
  375. package/dist/cjs/storage/types.js +50 -0
  376. package/dist/cjs/storage/types.js.map +1 -0
  377. package/dist/cjs/subscription-billing/index.js +2 -1
  378. package/dist/cjs/subscription-billing/index.js.map +1 -1
  379. package/dist/cjs/subscription-billing/provider/asaas.js +32 -7
  380. package/dist/cjs/subscription-billing/provider/asaas.js.map +1 -1
  381. package/dist/cjs/subscription-billing/provider/disabled.js +8 -0
  382. package/dist/cjs/subscription-billing/provider/disabled.js.map +1 -1
  383. package/dist/cjs/subscription-billing/provider/registry.js +17 -0
  384. package/dist/cjs/subscription-billing/provider/registry.js.map +1 -1
  385. package/dist/cjs/subscription-billing/service.js +208 -83
  386. package/dist/cjs/subscription-billing/service.js.map +1 -1
  387. package/dist/cjs/subscription-billing/types.js.map +1 -1
  388. package/dist/cjs/tenancy/features.js +131 -0
  389. package/dist/cjs/tenancy/features.js.map +1 -0
  390. package/dist/cjs/tenancy/provisioning.js +32 -8
  391. package/dist/cjs/tenancy/provisioning.js.map +1 -1
  392. package/dist/cjs/tenancy/settings.js +224 -0
  393. package/dist/cjs/tenancy/settings.js.map +1 -0
  394. package/dist/cjs/users/repository.js +143 -3
  395. package/dist/cjs/users/repository.js.map +1 -1
  396. package/dist/cjs/vault/repository.js +81 -0
  397. package/dist/cjs/vault/repository.js.map +1 -1
  398. package/dist/clients/ibge.d.ts +17 -0
  399. package/dist/clients/ibge.d.ts.map +1 -0
  400. package/dist/clients/ibge.js +98 -0
  401. package/dist/clients/ibge.js.map +1 -0
  402. package/dist/clients/repository.d.ts +196 -0
  403. package/dist/clients/repository.d.ts.map +1 -1
  404. package/dist/clients/repository.js +270 -24
  405. package/dist/clients/repository.js.map +1 -1
  406. package/dist/collection/branding.d.ts +137 -0
  407. package/dist/collection/branding.d.ts.map +1 -0
  408. package/dist/collection/branding.js +322 -0
  409. package/dist/collection/branding.js.map +1 -0
  410. package/dist/collection/channel-accounts.d.ts +57 -0
  411. package/dist/collection/channel-accounts.d.ts.map +1 -0
  412. package/dist/collection/channel-accounts.js +133 -0
  413. package/dist/collection/channel-accounts.js.map +1 -0
  414. package/dist/collection/channel.d.ts +24 -0
  415. package/dist/collection/channel.d.ts.map +1 -0
  416. package/dist/collection/channel.js +16 -0
  417. package/dist/collection/channel.js.map +1 -0
  418. package/dist/collection/clearance-store.d.ts +39 -0
  419. package/dist/collection/clearance-store.d.ts.map +1 -0
  420. package/dist/collection/clearance-store.js +69 -0
  421. package/dist/collection/clearance-store.js.map +1 -0
  422. package/dist/collection/communication-bridge.d.ts +66 -0
  423. package/dist/collection/communication-bridge.d.ts.map +1 -0
  424. package/dist/collection/communication-bridge.js +134 -0
  425. package/dist/collection/communication-bridge.js.map +1 -0
  426. package/dist/collection/communication-runtime.d.ts +132 -0
  427. package/dist/collection/communication-runtime.d.ts.map +1 -0
  428. package/dist/collection/communication-runtime.js +249 -0
  429. package/dist/collection/communication-runtime.js.map +1 -0
  430. package/dist/collection/consent-repository.d.ts +32 -0
  431. package/dist/collection/consent-repository.d.ts.map +1 -0
  432. package/dist/collection/consent-repository.js +79 -0
  433. package/dist/collection/consent-repository.js.map +1 -0
  434. package/dist/collection/copy.d.ts +50 -0
  435. package/dist/collection/copy.d.ts.map +1 -0
  436. package/dist/collection/copy.js +122 -0
  437. package/dist/collection/copy.js.map +1 -0
  438. package/dist/collection/delivery-callback.d.ts +49 -0
  439. package/dist/collection/delivery-callback.d.ts.map +1 -0
  440. package/dist/collection/delivery-callback.js +147 -0
  441. package/dist/collection/delivery-callback.js.map +1 -0
  442. package/dist/collection/email-layout.d.ts +45 -0
  443. package/dist/collection/email-layout.d.ts.map +1 -0
  444. package/dist/collection/email-layout.js +247 -0
  445. package/dist/collection/email-layout.js.map +1 -0
  446. package/dist/collection/engine.d.ts +200 -0
  447. package/dist/collection/engine.d.ts.map +1 -0
  448. package/dist/collection/engine.js +427 -0
  449. package/dist/collection/engine.js.map +1 -0
  450. package/dist/collection/format.d.ts +32 -0
  451. package/dist/collection/format.d.ts.map +1 -0
  452. package/dist/collection/format.js +70 -0
  453. package/dist/collection/format.js.map +1 -0
  454. package/dist/collection/payment-block.d.ts +24 -0
  455. package/dist/collection/payment-block.d.ts.map +1 -0
  456. package/dist/collection/payment-block.js +2 -0
  457. package/dist/collection/payment-block.js.map +1 -0
  458. package/dist/collection/policy.d.ts +78 -0
  459. package/dist/collection/policy.d.ts.map +1 -0
  460. package/dist/collection/policy.js +168 -0
  461. package/dist/collection/policy.js.map +1 -0
  462. package/dist/collection/repository.d.ts +129 -0
  463. package/dist/collection/repository.d.ts.map +1 -0
  464. package/dist/collection/repository.js +246 -0
  465. package/dist/collection/repository.js.map +1 -0
  466. package/dist/collection/subject.d.ts +66 -0
  467. package/dist/collection/subject.d.ts.map +1 -0
  468. package/dist/collection/subject.js +99 -0
  469. package/dist/collection/subject.js.map +1 -0
  470. package/dist/collection/template-catalog.d.ts +16 -0
  471. package/dist/collection/template-catalog.d.ts.map +1 -0
  472. package/dist/collection/template-catalog.js +162 -0
  473. package/dist/collection/template-catalog.js.map +1 -0
  474. package/dist/collection/template.d.ts +37 -0
  475. package/dist/collection/template.d.ts.map +1 -0
  476. package/dist/collection/template.js +73 -0
  477. package/dist/collection/template.js.map +1 -0
  478. package/dist/communication/adapters/email.d.ts +28 -0
  479. package/dist/communication/adapters/email.d.ts.map +1 -0
  480. package/dist/communication/adapters/email.js +129 -0
  481. package/dist/communication/adapters/email.js.map +1 -0
  482. package/dist/communication/adapters/sms.d.ts +95 -0
  483. package/dist/communication/adapters/sms.d.ts.map +1 -0
  484. package/dist/communication/adapters/sms.js +121 -0
  485. package/dist/communication/adapters/sms.js.map +1 -0
  486. package/dist/communication/adapters/whatsapp-language.d.ts +34 -0
  487. package/dist/communication/adapters/whatsapp-language.d.ts.map +1 -0
  488. package/dist/communication/adapters/whatsapp-language.js +36 -0
  489. package/dist/communication/adapters/whatsapp-language.js.map +1 -0
  490. package/dist/communication/adapters/whatsapp-templates.d.ts +18 -0
  491. package/dist/communication/adapters/whatsapp-templates.d.ts.map +1 -0
  492. package/dist/communication/adapters/whatsapp-templates.js +97 -0
  493. package/dist/communication/adapters/whatsapp-templates.js.map +1 -0
  494. package/dist/communication/adapters/whatsapp.d.ts +29 -0
  495. package/dist/communication/adapters/whatsapp.d.ts.map +1 -0
  496. package/dist/communication/adapters/whatsapp.js +210 -0
  497. package/dist/communication/adapters/whatsapp.js.map +1 -0
  498. package/dist/communication/audit.d.ts +105 -0
  499. package/dist/communication/audit.d.ts.map +1 -0
  500. package/dist/communication/audit.js +56 -0
  501. package/dist/communication/audit.js.map +1 -0
  502. package/dist/communication/capabilities.d.ts +88 -0
  503. package/dist/communication/capabilities.d.ts.map +1 -0
  504. package/dist/communication/capabilities.js +72 -0
  505. package/dist/communication/capabilities.js.map +1 -0
  506. package/dist/communication/channel.d.ts +125 -0
  507. package/dist/communication/channel.d.ts.map +1 -0
  508. package/dist/communication/channel.js +47 -0
  509. package/dist/communication/channel.js.map +1 -0
  510. package/dist/communication/claim.d.ts +368 -0
  511. package/dist/communication/claim.d.ts.map +1 -0
  512. package/dist/communication/claim.js +224 -0
  513. package/dist/communication/claim.js.map +1 -0
  514. package/dist/communication/clearance.d.ts +53 -0
  515. package/dist/communication/clearance.d.ts.map +1 -0
  516. package/dist/communication/clearance.js +15 -0
  517. package/dist/communication/clearance.js.map +1 -0
  518. package/dist/communication/consent.d.ts +65 -0
  519. package/dist/communication/consent.d.ts.map +1 -0
  520. package/dist/communication/consent.js +40 -0
  521. package/dist/communication/consent.js.map +1 -0
  522. package/dist/communication/context.d.ts +48 -0
  523. package/dist/communication/context.d.ts.map +1 -0
  524. package/dist/communication/context.js +41 -0
  525. package/dist/communication/context.js.map +1 -0
  526. package/dist/communication/credentials.d.ts +74 -0
  527. package/dist/communication/credentials.d.ts.map +1 -0
  528. package/dist/communication/credentials.js +115 -0
  529. package/dist/communication/credentials.js.map +1 -0
  530. package/dist/communication/dry-run-scenario.d.ts +37 -0
  531. package/dist/communication/dry-run-scenario.d.ts.map +1 -0
  532. package/dist/communication/dry-run-scenario.js +163 -0
  533. package/dist/communication/dry-run-scenario.js.map +1 -0
  534. package/dist/communication/dry-run.d.ts +40 -0
  535. package/dist/communication/dry-run.d.ts.map +1 -0
  536. package/dist/communication/dry-run.js +92 -0
  537. package/dist/communication/dry-run.js.map +1 -0
  538. package/dist/communication/engine.d.ts +163 -0
  539. package/dist/communication/engine.d.ts.map +1 -0
  540. package/dist/communication/engine.js +492 -0
  541. package/dist/communication/engine.js.map +1 -0
  542. package/dist/communication/graph.d.ts +38 -0
  543. package/dist/communication/graph.d.ts.map +1 -0
  544. package/dist/communication/graph.js +45 -0
  545. package/dist/communication/graph.js.map +1 -0
  546. package/dist/communication/idempotency.d.ts +33 -0
  547. package/dist/communication/idempotency.d.ts.map +1 -0
  548. package/dist/communication/idempotency.js +23 -0
  549. package/dist/communication/idempotency.js.map +1 -0
  550. package/dist/communication/identity.d.ts +127 -0
  551. package/dist/communication/identity.d.ts.map +1 -0
  552. package/dist/communication/identity.js +105 -0
  553. package/dist/communication/identity.js.map +1 -0
  554. package/dist/communication/index.d.ts +66 -0
  555. package/dist/communication/index.d.ts.map +1 -0
  556. package/dist/communication/index.js +42 -0
  557. package/dist/communication/index.js.map +1 -0
  558. package/dist/communication/onboarding.d.ts +223 -0
  559. package/dist/communication/onboarding.d.ts.map +1 -0
  560. package/dist/communication/onboarding.js +287 -0
  561. package/dist/communication/onboarding.js.map +1 -0
  562. package/dist/communication/policy.d.ts +115 -0
  563. package/dist/communication/policy.d.ts.map +1 -0
  564. package/dist/communication/policy.js +13 -0
  565. package/dist/communication/policy.js.map +1 -0
  566. package/dist/communication/routing.d.ts +99 -0
  567. package/dist/communication/routing.d.ts.map +1 -0
  568. package/dist/communication/routing.js +73 -0
  569. package/dist/communication/routing.js.map +1 -0
  570. package/dist/communication/sender-profile.d.ts +100 -0
  571. package/dist/communication/sender-profile.d.ts.map +1 -0
  572. package/dist/communication/sender-profile.js +123 -0
  573. package/dist/communication/sender-profile.js.map +1 -0
  574. package/dist/communication/status.d.ts +48 -0
  575. package/dist/communication/status.d.ts.map +1 -0
  576. package/dist/communication/status.js +79 -0
  577. package/dist/communication/status.js.map +1 -0
  578. package/dist/communication/stores/onboarding.d.ts +88 -0
  579. package/dist/communication/stores/onboarding.d.ts.map +1 -0
  580. package/dist/communication/stores/onboarding.js +127 -0
  581. package/dist/communication/stores/onboarding.js.map +1 -0
  582. package/dist/communication/stores/postgres.d.ts +81 -0
  583. package/dist/communication/stores/postgres.d.ts.map +1 -0
  584. package/dist/communication/stores/postgres.js +453 -0
  585. package/dist/communication/stores/postgres.js.map +1 -0
  586. package/dist/communication/stores/routing.d.ts +169 -0
  587. package/dist/communication/stores/routing.d.ts.map +1 -0
  588. package/dist/communication/stores/routing.js +324 -0
  589. package/dist/communication/stores/routing.js.map +1 -0
  590. package/dist/communication/stores/secrets.d.ts +89 -0
  591. package/dist/communication/stores/secrets.d.ts.map +1 -0
  592. package/dist/communication/stores/secrets.js +122 -0
  593. package/dist/communication/stores/secrets.js.map +1 -0
  594. package/dist/communication/template-provider.d.ts +85 -0
  595. package/dist/communication/template-provider.d.ts.map +1 -0
  596. package/dist/communication/template-provider.js +21 -0
  597. package/dist/communication/template-provider.js.map +1 -0
  598. package/dist/communication/template.d.ts +87 -0
  599. package/dist/communication/template.d.ts.map +1 -0
  600. package/dist/communication/template.js +59 -0
  601. package/dist/communication/template.js.map +1 -0
  602. package/dist/communication/webhook-subscription.d.ts +156 -0
  603. package/dist/communication/webhook-subscription.d.ts.map +1 -0
  604. package/dist/communication/webhook-subscription.js +252 -0
  605. package/dist/communication/webhook-subscription.js.map +1 -0
  606. package/dist/communication/webhook.d.ts +121 -0
  607. package/dist/communication/webhook.d.ts.map +1 -0
  608. package/dist/communication/webhook.js +283 -0
  609. package/dist/communication/webhook.js.map +1 -0
  610. package/dist/competence/business-days.d.ts +51 -0
  611. package/dist/competence/business-days.d.ts.map +1 -0
  612. package/dist/competence/business-days.js +145 -0
  613. package/dist/competence/business-days.js.map +1 -0
  614. package/dist/competence/catalog-validation.d.ts +86 -0
  615. package/dist/competence/catalog-validation.d.ts.map +1 -0
  616. package/dist/competence/catalog-validation.js +168 -0
  617. package/dist/competence/catalog-validation.js.map +1 -0
  618. package/dist/competence/obligation-preview.d.ts +103 -0
  619. package/dist/competence/obligation-preview.d.ts.map +1 -0
  620. package/dist/competence/obligation-preview.js +184 -0
  621. package/dist/competence/obligation-preview.js.map +1 -0
  622. package/dist/competence/repository.d.ts +285 -0
  623. package/dist/competence/repository.d.ts.map +1 -0
  624. package/dist/competence/repository.js +602 -0
  625. package/dist/competence/repository.js.map +1 -0
  626. package/dist/contacts/phone.d.ts +70 -0
  627. package/dist/contacts/phone.d.ts.map +1 -0
  628. package/dist/contacts/phone.js +186 -0
  629. package/dist/contacts/phone.js.map +1 -0
  630. package/dist/dashboard/pilot-panel.d.ts +100 -0
  631. package/dist/dashboard/pilot-panel.d.ts.map +1 -0
  632. package/dist/dashboard/pilot-panel.js +87 -0
  633. package/dist/dashboard/pilot-panel.js.map +1 -0
  634. package/dist/dashboard/repository.d.ts.map +1 -1
  635. package/dist/dashboard/repository.js +11 -1
  636. package/dist/dashboard/repository.js.map +1 -1
  637. package/dist/db/client.d.ts +45 -0
  638. package/dist/db/client.d.ts.map +1 -1
  639. package/dist/db/client.js +16 -11
  640. package/dist/db/client.js.map +1 -1
  641. package/dist/db/migrate.d.ts +36 -1
  642. package/dist/db/migrate.d.ts.map +1 -1
  643. package/dist/db/migrate.js +208 -35
  644. package/dist/db/migrate.js.map +1 -1
  645. package/dist/db/provision-e2e-identity.d.ts +2 -0
  646. package/dist/db/provision-e2e-identity.d.ts.map +1 -0
  647. package/dist/db/provision-e2e-identity.js +109 -0
  648. package/dist/db/provision-e2e-identity.js.map +1 -0
  649. package/dist/db/seed-catalog.d.ts +18 -0
  650. package/dist/db/seed-catalog.d.ts.map +1 -0
  651. package/dist/db/seed-catalog.js +45 -0
  652. package/dist/db/seed-catalog.js.map +1 -0
  653. package/dist/db/seed.js +16 -8
  654. package/dist/db/seed.js.map +1 -1
  655. package/dist/documents/repository.d.ts +97 -0
  656. package/dist/documents/repository.d.ts.map +1 -0
  657. package/dist/documents/repository.js +236 -0
  658. package/dist/documents/repository.js.map +1 -0
  659. package/dist/documents/requests.d.ts +73 -0
  660. package/dist/documents/requests.d.ts.map +1 -0
  661. package/dist/documents/requests.js +127 -0
  662. package/dist/documents/requests.js.map +1 -0
  663. package/dist/fiscal/applicability.d.ts +73 -0
  664. package/dist/fiscal/applicability.d.ts.map +1 -0
  665. package/dist/fiscal/applicability.js +160 -0
  666. package/dist/fiscal/applicability.js.map +1 -0
  667. package/dist/fiscal/conditions.d.ts +99 -0
  668. package/dist/fiscal/conditions.d.ts.map +1 -0
  669. package/dist/fiscal/conditions.js +190 -0
  670. package/dist/fiscal/conditions.js.map +1 -0
  671. package/dist/fiscal/contracts/nfse-adn-contract.d.ts +315 -0
  672. package/dist/fiscal/contracts/nfse-adn-contract.d.ts.map +1 -0
  673. package/dist/fiscal/contracts/nfse-adn-contract.js +386 -0
  674. package/dist/fiscal/contracts/nfse-adn-contract.js.map +1 -0
  675. package/dist/fiscal/contracts/nfse-adn-endpoint.d.ts +13 -0
  676. package/dist/fiscal/contracts/nfse-adn-endpoint.d.ts.map +1 -0
  677. package/dist/fiscal/contracts/nfse-adn-endpoint.js +103 -0
  678. package/dist/fiscal/contracts/nfse-adn-endpoint.js.map +1 -0
  679. package/dist/fiscal/contracts/nfse-adn-envelope.d.ts +77 -0
  680. package/dist/fiscal/contracts/nfse-adn-envelope.d.ts.map +1 -0
  681. package/dist/fiscal/contracts/nfse-adn-envelope.js +215 -0
  682. package/dist/fiscal/contracts/nfse-adn-envelope.js.map +1 -0
  683. package/dist/fiscal/coverage/model.d.ts +86 -0
  684. package/dist/fiscal/coverage/model.d.ts.map +1 -0
  685. package/dist/fiscal/coverage/model.js +120 -0
  686. package/dist/fiscal/coverage/model.js.map +1 -0
  687. package/dist/fiscal/coverage/requests.d.ts +70 -0
  688. package/dist/fiscal/coverage/requests.d.ts.map +1 -0
  689. package/dist/fiscal/coverage/requests.js +95 -0
  690. package/dist/fiscal/coverage/requests.js.map +1 -0
  691. package/dist/fiscal/credentials/material.d.ts +81 -0
  692. package/dist/fiscal/credentials/material.d.ts.map +1 -0
  693. package/dist/fiscal/credentials/material.js +164 -0
  694. package/dist/fiscal/credentials/material.js.map +1 -0
  695. package/dist/fiscal/credentials/readiness.d.ts +92 -0
  696. package/dist/fiscal/credentials/readiness.d.ts.map +1 -0
  697. package/dist/fiscal/credentials/readiness.js +159 -0
  698. package/dist/fiscal/credentials/readiness.js.map +1 -0
  699. package/dist/fiscal/eligibility.d.ts +106 -0
  700. package/dist/fiscal/eligibility.d.ts.map +1 -0
  701. package/dist/fiscal/eligibility.js +194 -0
  702. package/dist/fiscal/eligibility.js.map +1 -0
  703. package/dist/fiscal/ingestion/__fixtures__/nfse.d.ts +57 -0
  704. package/dist/fiscal/ingestion/__fixtures__/nfse.d.ts.map +1 -0
  705. package/dist/fiscal/ingestion/__fixtures__/nfse.js +121 -0
  706. package/dist/fiscal/ingestion/__fixtures__/nfse.js.map +1 -0
  707. package/dist/fiscal/ingestion/adn-transport.d.ts +123 -0
  708. package/dist/fiscal/ingestion/adn-transport.d.ts.map +1 -0
  709. package/dist/fiscal/ingestion/adn-transport.js +220 -0
  710. package/dist/fiscal/ingestion/adn-transport.js.map +1 -0
  711. package/dist/fiscal/ingestion/direction.d.ts +60 -0
  712. package/dist/fiscal/ingestion/direction.d.ts.map +1 -0
  713. package/dist/fiscal/ingestion/direction.js +32 -0
  714. package/dist/fiscal/ingestion/direction.js.map +1 -0
  715. package/dist/fiscal/ingestion/nfse-adn.d.ts +91 -0
  716. package/dist/fiscal/ingestion/nfse-adn.d.ts.map +1 -0
  717. package/dist/fiscal/ingestion/nfse-adn.js +222 -0
  718. package/dist/fiscal/ingestion/nfse-adn.js.map +1 -0
  719. package/dist/fiscal/ingestion/pipeline.d.ts +168 -0
  720. package/dist/fiscal/ingestion/pipeline.d.ts.map +1 -0
  721. package/dist/fiscal/ingestion/pipeline.js +699 -0
  722. package/dist/fiscal/ingestion/pipeline.js.map +1 -0
  723. package/dist/fiscal/ingestion/provider.d.ts +206 -0
  724. package/dist/fiscal/ingestion/provider.d.ts.map +1 -0
  725. package/dist/fiscal/ingestion/provider.js +47 -0
  726. package/dist/fiscal/ingestion/provider.js.map +1 -0
  727. package/dist/fiscal/ingestion/repository.d.ts +82 -0
  728. package/dist/fiscal/ingestion/repository.d.ts.map +1 -0
  729. package/dist/fiscal/ingestion/repository.js +127 -0
  730. package/dist/fiscal/ingestion/repository.js.map +1 -0
  731. package/dist/fiscal/ingestion/synthetic-provider.d.ts +92 -0
  732. package/dist/fiscal/ingestion/synthetic-provider.d.ts.map +1 -0
  733. package/dist/fiscal/ingestion/synthetic-provider.js +99 -0
  734. package/dist/fiscal/ingestion/synthetic-provider.js.map +1 -0
  735. package/dist/fiscal/ingestion/synthetic-transport-types.d.ts +19 -0
  736. package/dist/fiscal/ingestion/synthetic-transport-types.d.ts.map +1 -0
  737. package/dist/fiscal/ingestion/synthetic-transport-types.js +9 -0
  738. package/dist/fiscal/ingestion/synthetic-transport-types.js.map +1 -0
  739. package/dist/fiscal/ingestion/synthetic-transport.d.ts +55 -0
  740. package/dist/fiscal/ingestion/synthetic-transport.d.ts.map +1 -0
  741. package/dist/fiscal/ingestion/synthetic-transport.js +57 -0
  742. package/dist/fiscal/ingestion/synthetic-transport.js.map +1 -0
  743. package/dist/fiscal/ingestion/xml-reader.d.ts +55 -0
  744. package/dist/fiscal/ingestion/xml-reader.d.ts.map +1 -0
  745. package/dist/fiscal/ingestion/xml-reader.js +112 -0
  746. package/dist/fiscal/ingestion/xml-reader.js.map +1 -0
  747. package/dist/fiscal/repository.d.ts +220 -0
  748. package/dist/fiscal/repository.d.ts.map +1 -0
  749. package/dist/fiscal/repository.js +449 -0
  750. package/dist/fiscal/repository.js.map +1 -0
  751. package/dist/fiscal/sync/circuit.d.ts +86 -0
  752. package/dist/fiscal/sync/circuit.d.ts.map +1 -0
  753. package/dist/fiscal/sync/circuit.js +118 -0
  754. package/dist/fiscal/sync/circuit.js.map +1 -0
  755. package/dist/fiscal/sync/intervention.d.ts +81 -0
  756. package/dist/fiscal/sync/intervention.d.ts.map +1 -0
  757. package/dist/fiscal/sync/intervention.js +135 -0
  758. package/dist/fiscal/sync/intervention.js.map +1 -0
  759. package/dist/fiscal/sync/lease.d.ts +118 -0
  760. package/dist/fiscal/sync/lease.d.ts.map +1 -0
  761. package/dist/fiscal/sync/lease.js +139 -0
  762. package/dist/fiscal/sync/lease.js.map +1 -0
  763. package/dist/fiscal/sync/observability.d.ts +148 -0
  764. package/dist/fiscal/sync/observability.d.ts.map +1 -0
  765. package/dist/fiscal/sync/observability.js +239 -0
  766. package/dist/fiscal/sync/observability.js.map +1 -0
  767. package/dist/fiscal/sync/orchestrator.d.ts +132 -0
  768. package/dist/fiscal/sync/orchestrator.d.ts.map +1 -0
  769. package/dist/fiscal/sync/orchestrator.js +487 -0
  770. package/dist/fiscal/sync/orchestrator.js.map +1 -0
  771. package/dist/fiscal/sync/policy.d.ts +87 -0
  772. package/dist/fiscal/sync/policy.d.ts.map +1 -0
  773. package/dist/fiscal/sync/policy.js +136 -0
  774. package/dist/fiscal/sync/policy.js.map +1 -0
  775. package/dist/fiscal/sync/reprocess.d.ts +76 -0
  776. package/dist/fiscal/sync/reprocess.d.ts.map +1 -0
  777. package/dist/fiscal/sync/reprocess.js +237 -0
  778. package/dist/fiscal/sync/reprocess.js.map +1 -0
  779. package/dist/fiscal/sync/retry.d.ts +82 -0
  780. package/dist/fiscal/sync/retry.d.ts.map +1 -0
  781. package/dist/fiscal/sync/retry.js +176 -0
  782. package/dist/fiscal/sync/retry.js.map +1 -0
  783. package/dist/fiscal/sync/secret-boundary.d.ts +169 -0
  784. package/dist/fiscal/sync/secret-boundary.d.ts.map +1 -0
  785. package/dist/fiscal/sync/secret-boundary.js +116 -0
  786. package/dist/fiscal/sync/secret-boundary.js.map +1 -0
  787. package/dist/fiscal/transport/https.d.ts +86 -0
  788. package/dist/fiscal/transport/https.d.ts.map +1 -0
  789. package/dist/fiscal/transport/https.js +303 -0
  790. package/dist/fiscal/transport/https.js.map +1 -0
  791. package/dist/fiscal/transport/synthetic-tls.d.ts +80 -0
  792. package/dist/fiscal/transport/synthetic-tls.d.ts.map +1 -0
  793. package/dist/fiscal/transport/synthetic-tls.js +323 -0
  794. package/dist/fiscal/transport/synthetic-tls.js.map +1 -0
  795. package/dist/fiscal/transport/types.d.ts +134 -0
  796. package/dist/fiscal/transport/types.d.ts.map +1 -0
  797. package/dist/fiscal/transport/types.js +88 -0
  798. package/dist/fiscal/transport/types.js.map +1 -0
  799. package/dist/import/br-documents.d.ts +26 -0
  800. package/dist/import/br-documents.d.ts.map +1 -0
  801. package/dist/import/br-documents.js +78 -0
  802. package/dist/import/br-documents.js.map +1 -0
  803. package/dist/import/clients-import.d.ts +122 -4
  804. package/dist/import/clients-import.d.ts.map +1 -1
  805. package/dist/import/clients-import.js +341 -41
  806. package/dist/import/clients-import.js.map +1 -1
  807. package/dist/index.d.ts +217 -17
  808. package/dist/index.d.ts.map +1 -1
  809. package/dist/index.js +196 -11
  810. package/dist/index.js.map +1 -1
  811. package/dist/legal/documents.d.ts +12 -1
  812. package/dist/legal/documents.d.ts.map +1 -1
  813. package/dist/legal/documents.js +222 -16
  814. package/dist/legal/documents.js.map +1 -1
  815. package/dist/legal/index.d.ts +2 -2
  816. package/dist/legal/index.d.ts.map +1 -1
  817. package/dist/legal/index.js +1 -1
  818. package/dist/legal/index.js.map +1 -1
  819. package/dist/legal/types.d.ts +69 -3
  820. package/dist/legal/types.d.ts.map +1 -1
  821. package/dist/legal/types.js +1 -0
  822. package/dist/legal/types.js.map +1 -1
  823. package/dist/mail/auth-templates.d.ts +15 -0
  824. package/dist/mail/auth-templates.d.ts.map +1 -0
  825. package/dist/mail/auth-templates.js +26 -0
  826. package/dist/mail/auth-templates.js.map +1 -0
  827. package/dist/mail/dedup-store.d.ts +1 -24
  828. package/dist/mail/dedup-store.d.ts.map +1 -1
  829. package/dist/mail/dedup-store.js +9 -48
  830. package/dist/mail/dedup-store.js.map +1 -1
  831. package/dist/mail/index.d.ts +2 -1
  832. package/dist/mail/index.d.ts.map +1 -1
  833. package/dist/mail/index.js +13 -2
  834. package/dist/mail/index.js.map +1 -1
  835. package/dist/mail/provider.d.ts +2 -30
  836. package/dist/mail/provider.d.ts.map +1 -1
  837. package/dist/mail/provider.js +10 -246
  838. package/dist/mail/provider.js.map +1 -1
  839. package/dist/mail/resend.d.ts +2 -12
  840. package/dist/mail/resend.d.ts.map +1 -1
  841. package/dist/mail/resend.js +11 -17
  842. package/dist/mail/resend.js.map +1 -1
  843. package/dist/mail/sender-resolver.d.ts +1 -7
  844. package/dist/mail/sender-resolver.d.ts.map +1 -1
  845. package/dist/mail/sender-resolver.js +11 -10
  846. package/dist/mail/sender-resolver.js.map +1 -1
  847. package/dist/mail/template-renderer.d.ts +1 -9
  848. package/dist/mail/template-renderer.d.ts.map +1 -1
  849. package/dist/mail/template-renderer.js +10 -15
  850. package/dist/mail/template-renderer.js.map +1 -1
  851. package/dist/mail/transactional-outbound.d.ts +115 -0
  852. package/dist/mail/transactional-outbound.d.ts.map +1 -0
  853. package/dist/mail/transactional-outbound.js +113 -0
  854. package/dist/mail/transactional-outbound.js.map +1 -0
  855. package/dist/mail/types.d.ts +2 -142
  856. package/dist/mail/types.d.ts.map +1 -1
  857. package/dist/mail/types.js +1 -33
  858. package/dist/mail/types.js.map +1 -1
  859. package/dist/onboarding/persistence.d.ts +10 -1
  860. package/dist/onboarding/persistence.d.ts.map +1 -1
  861. package/dist/onboarding/persistence.js +4 -4
  862. package/dist/onboarding/persistence.js.map +1 -1
  863. package/dist/pilot/go-live-checklist.d.ts +41 -0
  864. package/dist/pilot/go-live-checklist.d.ts.map +1 -0
  865. package/dist/pilot/go-live-checklist.js +209 -0
  866. package/dist/pilot/go-live-checklist.js.map +1 -0
  867. package/dist/pilot/milestone.d.ts +56 -0
  868. package/dist/pilot/milestone.d.ts.map +1 -0
  869. package/dist/pilot/milestone.js +74 -0
  870. package/dist/pilot/milestone.js.map +1 -0
  871. package/dist/platform/capabilities.d.ts +88 -0
  872. package/dist/platform/capabilities.d.ts.map +1 -0
  873. package/dist/platform/capabilities.js +140 -0
  874. package/dist/platform/capabilities.js.map +1 -0
  875. package/dist/platform/job-contract.d.ts +232 -0
  876. package/dist/platform/job-contract.d.ts.map +1 -0
  877. package/dist/platform/job-contract.js +403 -0
  878. package/dist/platform/job-contract.js.map +1 -0
  879. package/dist/portal/provisioning.d.ts +58 -0
  880. package/dist/portal/provisioning.d.ts.map +1 -0
  881. package/dist/portal/provisioning.js +139 -0
  882. package/dist/portal/provisioning.js.map +1 -0
  883. package/dist/pricing-engine/canonical.d.ts +14 -0
  884. package/dist/pricing-engine/canonical.d.ts.map +1 -0
  885. package/dist/pricing-engine/canonical.js +39 -0
  886. package/dist/pricing-engine/canonical.js.map +1 -0
  887. package/dist/pricing-engine/errors.d.ts.map +1 -1
  888. package/dist/pricing-engine/errors.js +6 -1
  889. package/dist/pricing-engine/errors.js.map +1 -1
  890. package/dist/pricing-engine/index.d.ts +12 -2
  891. package/dist/pricing-engine/index.d.ts.map +1 -1
  892. package/dist/pricing-engine/index.js +6 -1
  893. package/dist/pricing-engine/index.js.map +1 -1
  894. package/dist/pricing-engine/pipeline.d.ts.map +1 -1
  895. package/dist/pricing-engine/pipeline.js +202 -28
  896. package/dist/pricing-engine/pipeline.js.map +1 -1
  897. package/dist/pricing-engine/shadow-adapter.d.ts +37 -0
  898. package/dist/pricing-engine/shadow-adapter.d.ts.map +1 -0
  899. package/dist/pricing-engine/shadow-adapter.js +75 -0
  900. package/dist/pricing-engine/shadow-adapter.js.map +1 -0
  901. package/dist/pricing-engine/shadow-diff.d.ts +26 -0
  902. package/dist/pricing-engine/shadow-diff.d.ts.map +1 -0
  903. package/dist/pricing-engine/shadow-diff.js +52 -0
  904. package/dist/pricing-engine/shadow-diff.js.map +1 -0
  905. package/dist/pricing-engine/shadow-facade.d.ts +42 -0
  906. package/dist/pricing-engine/shadow-facade.d.ts.map +1 -0
  907. package/dist/pricing-engine/shadow-facade.js +82 -0
  908. package/dist/pricing-engine/shadow-facade.js.map +1 -0
  909. package/dist/pricing-engine/shadow-legacy-types.d.ts +64 -0
  910. package/dist/pricing-engine/shadow-legacy-types.d.ts.map +1 -0
  911. package/dist/pricing-engine/shadow-legacy-types.js +18 -0
  912. package/dist/pricing-engine/shadow-legacy-types.js.map +1 -0
  913. package/dist/pricing-engine/shadow-metrics.d.ts +33 -0
  914. package/dist/pricing-engine/shadow-metrics.d.ts.map +1 -0
  915. package/dist/pricing-engine/shadow-metrics.js +31 -0
  916. package/dist/pricing-engine/shadow-metrics.js.map +1 -0
  917. package/dist/pricing-engine/shadow-normalizer.d.ts +17 -0
  918. package/dist/pricing-engine/shadow-normalizer.d.ts.map +1 -0
  919. package/dist/pricing-engine/shadow-normalizer.js +39 -0
  920. package/dist/pricing-engine/shadow-normalizer.js.map +1 -0
  921. package/dist/pricing-engine/types.d.ts +2 -0
  922. package/dist/pricing-engine/types.d.ts.map +1 -1
  923. package/dist/rbac/authorize.d.ts +12 -0
  924. package/dist/rbac/authorize.d.ts.map +1 -1
  925. package/dist/rbac/authorize.js +27 -0
  926. package/dist/rbac/authorize.js.map +1 -1
  927. package/dist/rbac/catalog.d.ts.map +1 -1
  928. package/dist/rbac/catalog.js +101 -1
  929. package/dist/rbac/catalog.js.map +1 -1
  930. package/dist/rbac/workload-provisioning.d.ts +66 -0
  931. package/dist/rbac/workload-provisioning.d.ts.map +1 -0
  932. package/dist/rbac/workload-provisioning.js +153 -0
  933. package/dist/rbac/workload-provisioning.js.map +1 -0
  934. package/dist/rbac/workload.d.ts +124 -0
  935. package/dist/rbac/workload.d.ts.map +1 -0
  936. package/dist/rbac/workload.js +184 -0
  937. package/dist/rbac/workload.js.map +1 -0
  938. package/dist/storage/checksum.d.ts +9 -0
  939. package/dist/storage/checksum.d.ts.map +1 -0
  940. package/dist/storage/checksum.js +12 -0
  941. package/dist/storage/checksum.js.map +1 -0
  942. package/dist/storage/key.d.ts +37 -0
  943. package/dist/storage/key.d.ts.map +1 -0
  944. package/dist/storage/key.js +67 -0
  945. package/dist/storage/key.js.map +1 -0
  946. package/dist/storage/local.d.ts +40 -0
  947. package/dist/storage/local.d.ts.map +1 -0
  948. package/dist/storage/local.js +96 -0
  949. package/dist/storage/local.js.map +1 -0
  950. package/dist/storage/r2.d.ts +43 -0
  951. package/dist/storage/r2.d.ts.map +1 -0
  952. package/dist/storage/r2.js +177 -0
  953. package/dist/storage/r2.js.map +1 -0
  954. package/dist/storage/registry.d.ts +23 -0
  955. package/dist/storage/registry.d.ts.map +1 -0
  956. package/dist/storage/registry.js +37 -0
  957. package/dist/storage/registry.js.map +1 -0
  958. package/dist/storage/types.d.ts +67 -0
  959. package/dist/storage/types.d.ts.map +1 -0
  960. package/dist/storage/types.js +45 -0
  961. package/dist/storage/types.js.map +1 -0
  962. package/dist/subscription-billing/index.d.ts +6 -5
  963. package/dist/subscription-billing/index.d.ts.map +1 -1
  964. package/dist/subscription-billing/index.js +3 -3
  965. package/dist/subscription-billing/index.js.map +1 -1
  966. package/dist/subscription-billing/provider/asaas.d.ts +14 -0
  967. package/dist/subscription-billing/provider/asaas.d.ts.map +1 -1
  968. package/dist/subscription-billing/provider/asaas.js +32 -7
  969. package/dist/subscription-billing/provider/asaas.js.map +1 -1
  970. package/dist/subscription-billing/provider/disabled.d.ts +9 -0
  971. package/dist/subscription-billing/provider/disabled.d.ts.map +1 -1
  972. package/dist/subscription-billing/provider/disabled.js +8 -0
  973. package/dist/subscription-billing/provider/disabled.js.map +1 -1
  974. package/dist/subscription-billing/provider/registry.d.ts +10 -0
  975. package/dist/subscription-billing/provider/registry.d.ts.map +1 -1
  976. package/dist/subscription-billing/provider/registry.js +17 -0
  977. package/dist/subscription-billing/provider/registry.js.map +1 -1
  978. package/dist/subscription-billing/service.d.ts +38 -1
  979. package/dist/subscription-billing/service.d.ts.map +1 -1
  980. package/dist/subscription-billing/service.js +147 -23
  981. package/dist/subscription-billing/service.js.map +1 -1
  982. package/dist/subscription-billing/types.d.ts +13 -0
  983. package/dist/subscription-billing/types.d.ts.map +1 -1
  984. package/dist/subscription-billing/types.js.map +1 -1
  985. package/dist/tenancy/features.d.ts +69 -0
  986. package/dist/tenancy/features.d.ts.map +1 -0
  987. package/dist/tenancy/features.js +123 -0
  988. package/dist/tenancy/features.js.map +1 -0
  989. package/dist/tenancy/provisioning.d.ts.map +1 -1
  990. package/dist/tenancy/provisioning.js +32 -8
  991. package/dist/tenancy/provisioning.js.map +1 -1
  992. package/dist/tenancy/settings.d.ts +63 -0
  993. package/dist/tenancy/settings.d.ts.map +1 -0
  994. package/dist/tenancy/settings.js +218 -0
  995. package/dist/tenancy/settings.js.map +1 -0
  996. package/dist/users/repository.d.ts +54 -1
  997. package/dist/users/repository.d.ts.map +1 -1
  998. package/dist/users/repository.js +142 -4
  999. package/dist/users/repository.js.map +1 -1
  1000. package/dist/vault/repository.d.ts +67 -0
  1001. package/dist/vault/repository.d.ts.map +1 -1
  1002. package/dist/vault/repository.js +78 -0
  1003. package/dist/vault/repository.js.map +1 -1
  1004. package/package.json +20 -4
  1005. package/src/db/migrations/0023_user_invite_activation.sql +15 -0
  1006. package/src/db/migrations/0024_set_user_password_function.sql +32 -0
  1007. package/src/db/migrations/0025_revoke_user_session_function.sql +28 -0
  1008. package/src/db/migrations/0026_documents_and_competence.sql +353 -0
  1009. package/src/db/migrations/0027_receivable_client_isolation.sql +58 -0
  1010. package/src/db/migrations/0028_collection_engine.sql +94 -0
  1011. package/src/db/migrations/0029_payment_rail.sql +107 -0
  1012. package/src/db/migrations/0030_provider_account_uniqueness.sql +22 -0
  1013. package/src/db/migrations/0031_provider_account_environment_scope.sql +21 -0
  1014. package/src/db/migrations/0032_settlement_reversal.sql +76 -0
  1015. package/src/db/migrations/0033_receivable_idempotency.sql +28 -0
  1016. package/src/db/migrations/0034_payment_customer_reconcile.sql +30 -0
  1017. package/src/db/migrations/0035_payment_account_environments.sql +61 -0
  1018. package/src/db/migrations/0036_primary_backfill_under_force_rls.sql +41 -0
  1019. package/src/db/migrations/0037_receivable_generation_source.sql +29 -0
  1020. package/src/db/migrations/0038_notification_channels.sql +175 -0
  1021. package/src/db/migrations/0039_communication_dispatch_claim.sql +193 -0
  1022. package/src/db/migrations/0040_communication_unknown_outcome.sql +99 -0
  1023. package/src/db/migrations/0041_channel_binding_routing.sql +146 -0
  1024. package/src/db/migrations/0042_channel_route_read_isolation.sql +165 -0
  1025. package/src/db/migrations/0043_workload_identity.sql +105 -0
  1026. package/src/db/migrations/0044_channel_onboarding_session.sql +96 -0
  1027. package/src/db/migrations/0045_role_write_scope.sql +122 -0
  1028. package/src/db/migrations/0046_pilot_activation_model.sql +184 -0
  1029. package/src/db/migrations/0047_recipient_clearance.sql +89 -0
  1030. package/src/db/migrations/0048_item_type_note.sql +16 -0
  1031. package/src/db/migrations/0049_national_fiscal_engine.sql +279 -0
  1032. package/src/db/migrations/0050_fiscal_vocabulary_readonly.sql +29 -0
  1033. package/src/db/migrations/0051_seed_rules_from_catalog.sql +72 -0
  1034. package/src/db/migrations/0052_fiscal_rule_delete_scope.sql +57 -0
  1035. package/src/db/migrations/0053_rule_validity_lower_bound.sql +44 -0
  1036. package/src/db/migrations/0054_tenant_profile_and_rule_source.sql +89 -0
  1037. package/src/db/migrations/0055_job_capability_contract.sql +300 -0
  1038. package/src/db/migrations/0056_fiscal_document_ingestion.sql +337 -0
  1039. package/src/db/migrations/0057_fiscal_pending_event_inbox.sql +228 -0
  1040. package/src/db/migrations/0058_fiscal_operational_engine.sql +516 -0
  1041. package/src/db/migrations/0059_fiscal_contract_version.sql +59 -0
  1042. package/dist/cjs/mail/resend-client.js +0 -103
  1043. package/dist/cjs/mail/resend-client.js.map +0 -1
  1044. package/dist/mail/resend-client.d.ts +0 -16
  1045. package/dist/mail/resend-client.d.ts.map +0 -1
  1046. package/dist/mail/resend-client.js +0 -100
  1047. package/dist/mail/resend-client.js.map +0 -1
@@ -0,0 +1,602 @@
1
+ import { ConflictError, NotFoundError, ValidationError, uuidv7 } from '@baruk/shared';
2
+ import { adjustToBusinessDay, lastBusinessDayOfMonth, nthBusinessDayOfMonth, shiftMonth, } from './business-days.js';
3
+ /**
4
+ * Competência e itens recorrentes (ADR 0008).
5
+ *
6
+ * Tenant-scoped por RLS: nenhum método filtra `tenant_id`, exatamente como os
7
+ * demais repositórios do core. O `tenant_id` chega por `current_setting`.
8
+ */
9
+ export const COMPETENCE_LABEL_RE = /^\d{4}-(0[1-9]|1[0-2])$/;
10
+ function mapCompetence(row) {
11
+ return {
12
+ id: row.id,
13
+ tenantId: row.tenant_id,
14
+ clientId: row.client_id,
15
+ label: row.label,
16
+ status: row.status,
17
+ openedAt: row.opened_at.toISOString(),
18
+ closedAt: row.closed_at ? row.closed_at.toISOString() : null,
19
+ version: row.version,
20
+ };
21
+ }
22
+ /**
23
+ * Valida o rótulo antes de chegar ao banco. O CHECK da migration é a garantia
24
+ * final, mas devolver 422 é melhor que devolver 500 com erro de constraint.
25
+ *
26
+ * Repare que o regex daqui é mais estrito que o do schema: rejeita `2026-13`.
27
+ * Nunca relaxe um sem relaxar o outro — a divergência é deliberada e sempre no
28
+ * sentido seguro (aplicação mais rígida que banco).
29
+ */
30
+ export function assertCompetenceLabel(label) {
31
+ if (!COMPETENCE_LABEL_RE.test(label)) {
32
+ throw new ValidationError('competência deve estar no formato YYYY-MM, com mês entre 01 e 12');
33
+ }
34
+ }
35
+ /**
36
+ * Abre a competência, ou devolve a existente. Idempotente por desenho: chamar
37
+ * duas vezes para o mesmo (cliente, mês) devolve a mesma linha, e é o índice
38
+ * único que garante isso sob concorrência — não o `SELECT` prévio.
39
+ */
40
+ export async function openCompetence(tx, input) {
41
+ assertCompetenceLabel(input.label);
42
+ const inserted = await tx `
43
+ INSERT INTO competence (id, tenant_id, client_id, label)
44
+ VALUES (
45
+ ${uuidv7()}, current_setting('app.current_tenant')::uuid,
46
+ ${input.clientId}, ${input.label}
47
+ )
48
+ ON CONFLICT DO NOTHING
49
+ RETURNING id, tenant_id, client_id, label, status, opened_at, closed_at, version
50
+ `;
51
+ if (inserted[0])
52
+ return { competence: mapCompetence(inserted[0]), created: true };
53
+ const existing = await tx `
54
+ SELECT id, tenant_id, client_id, label, status, opened_at, closed_at, version
55
+ FROM competence
56
+ WHERE client_id = ${input.clientId} AND label = ${input.label} AND deleted_at IS NULL
57
+ `;
58
+ if (!existing[0])
59
+ throw new ConflictError('não foi possível abrir a competência');
60
+ return { competence: mapCompetence(existing[0]), created: false };
61
+ }
62
+ export async function getCompetence(tx, id) {
63
+ const rows = await tx `
64
+ SELECT id, tenant_id, client_id, label, status, opened_at, closed_at, version
65
+ FROM competence WHERE id = ${id} AND deleted_at IS NULL
66
+ `;
67
+ if (!rows[0])
68
+ throw new NotFoundError('Competência não encontrada');
69
+ return mapCompetence(rows[0]);
70
+ }
71
+ export async function listCompetences(tx, filter = {}) {
72
+ const limit = Math.min(filter.limit ?? 50, 100);
73
+ const offset = filter.offset ?? 0;
74
+ const rows = await tx `
75
+ SELECT id, tenant_id, client_id, label, status, opened_at, closed_at, version,
76
+ count(*) OVER() AS total
77
+ FROM competence
78
+ WHERE deleted_at IS NULL
79
+ AND (${filter.clientId ?? null}::uuid IS NULL OR client_id = ${filter.clientId ?? null})
80
+ AND (${filter.status ?? null}::text IS NULL OR status = ${filter.status ?? null})
81
+ ORDER BY label DESC, created_at DESC
82
+ LIMIT ${limit} OFFSET ${offset}
83
+ `;
84
+ return {
85
+ total: rows[0] ? Number(rows[0].total) : 0,
86
+ items: rows.map(mapCompetence),
87
+ };
88
+ }
89
+ const CLOSEABLE = [
90
+ 'open',
91
+ 'in_progress',
92
+ 'awaiting_client',
93
+ 'review',
94
+ 'reopened',
95
+ ];
96
+ /**
97
+ * Fechar é evento, não flag: exige que não reste pendência obrigatória aberta.
98
+ * A checagem é feita aqui, e não por trigger, porque a regra é de negócio e
99
+ * precisa produzir uma mensagem que o usuário entenda.
100
+ */
101
+ export async function closeCompetence(tx, input) {
102
+ const current = await getCompetence(tx, input.id);
103
+ if (current.status === 'closed')
104
+ throw new ConflictError('Competência já está fechada');
105
+ if (!CLOSEABLE.includes(current.status)) {
106
+ throw new ConflictError(`Competência em ${current.status} não pode ser fechada`);
107
+ }
108
+ if (!input.force) {
109
+ const pending = await tx `
110
+ SELECT count(*)::int AS n FROM recurring_instance
111
+ WHERE competence_id = ${input.id} AND deleted_at IS NULL
112
+ AND status NOT IN ('done', 'not_applicable', 'canceled')
113
+ `;
114
+ if ((pending[0]?.n ?? 0) > 0) {
115
+ throw new ConflictError(`Competência tem ${pending[0].n} item(ns) em aberto. Conclua ou marque como não aplicável antes de fechar.`);
116
+ }
117
+ }
118
+ const rows = await tx `
119
+ UPDATE competence
120
+ SET status = 'closed', closed_at = now(), closed_by = ${input.closedBy},
121
+ version = version + 1, updated_at = now()
122
+ WHERE id = ${input.id} AND deleted_at IS NULL
123
+ RETURNING id, tenant_id, client_id, label, status, opened_at, closed_at, version
124
+ `;
125
+ if (!rows[0])
126
+ throw new NotFoundError('Competência não encontrada');
127
+ return mapCompetence(rows[0]);
128
+ }
129
+ export async function reopenCompetence(tx, input) {
130
+ const rows = await tx `
131
+ UPDATE competence
132
+ SET status = 'reopened', closed_at = NULL, closed_by = NULL,
133
+ reopened_at = now(), reopened_by = ${input.reopenedBy},
134
+ version = version + 1, updated_at = now()
135
+ WHERE id = ${input.id} AND status = 'closed' AND deleted_at IS NULL
136
+ RETURNING id, tenant_id, client_id, label, status, opened_at, closed_at, version
137
+ `;
138
+ if (!rows[0])
139
+ throw new NotFoundError('Competência fechada não encontrada');
140
+ return mapCompetence(rows[0]);
141
+ }
142
+ function mapItemType(row) {
143
+ return {
144
+ id: row.id,
145
+ tenantId: row.tenant_id,
146
+ key: row.key,
147
+ label: row.label,
148
+ nature: row.nature,
149
+ sphere: row.sphere,
150
+ periodicity: row.periodicity,
151
+ dueRule: row.due_rule ?? {},
152
+ appliesToRegime: Array.isArray(row.applies_to_regime) ? row.applies_to_regime : [],
153
+ requiresDocument: row.requires_document,
154
+ active: row.active,
155
+ note: row.note ?? null,
156
+ category: row.category ?? null,
157
+ };
158
+ }
159
+ /**
160
+ * Lista o catálogo efetivo: override do tenant vence o template do sistema
161
+ * quando as duas linhas têm a mesma `key`. O `DISTINCT ON` com `ORDER BY
162
+ * tenant_id NULLS LAST` é o que implementa essa precedência em uma passada.
163
+ */
164
+ export async function listRecurringItemTypes(tx, filter = {}) {
165
+ const rows = await tx `
166
+ SELECT DISTINCT ON (key)
167
+ id, tenant_id, key, label, nature, sphere, periodicity,
168
+ due_rule, applies_to_regime, requires_document, active, note, category
169
+ FROM recurring_item_type
170
+ WHERE deleted_at IS NULL
171
+ AND (${filter.nature ?? null}::text IS NULL OR nature = ${filter.nature ?? null})
172
+ AND (${filter.activeOnly ?? true} = false OR active = true)
173
+ ORDER BY key, tenant_id NULLS LAST
174
+ `;
175
+ return rows.map(mapItemType);
176
+ }
177
+ export async function createRecurringItemType(tx, input) {
178
+ const rows = await tx `
179
+ INSERT INTO recurring_item_type
180
+ (id, tenant_id, key, label, nature, sphere, periodicity, due_rule,
181
+ applies_to_regime, requires_document)
182
+ VALUES (
183
+ ${uuidv7()}, current_setting('app.current_tenant')::uuid,
184
+ ${input.key}, ${input.label}, ${input.nature}, ${input.sphere ?? null},
185
+ ${input.periodicity ?? 'monthly'}, ${tx.json((input.dueRule ?? {}))},
186
+ ${tx.json((input.appliesToRegime ?? []))}, ${input.requiresDocument ?? false}
187
+ )
188
+ RETURNING id, tenant_id, key, label, nature, sphere, periodicity,
189
+ due_rule, applies_to_regime, requires_document, active
190
+ `;
191
+ const tipo = mapItemType(rows[0]);
192
+ // Todo tipo de item nasce com uma REGRA, e a invariante é deliberada.
193
+ //
194
+ // Desde o motor nacional, gerar exige regra vigente: sem ela o motor devolve
195
+ // `RULE_NOT_CONFIGURED` e não gera — que é o comportamento seguro para quem
196
+ // não sabe o prazo daquela jurisdição. Um tipo criado sem regra, porém, não
197
+ // seria "seguro": seria invisível. O escritório cadastraria a obrigação,
198
+ // conferiria o catálogo, e ela nunca apareceria na prévia, sem explicação
199
+ // proporcional ao esforço.
200
+ //
201
+ // A regra companheira é federal, `pending_validation`, e carrega o mesmo
202
+ // vencimento que o operador acabou de declarar. Ela não afirma nada que ele
203
+ // já não tenha afirmado — só o coloca onde o motor enxerga.
204
+ await tx `
205
+ INSERT INTO fiscal_rule (
206
+ id, tenant_id, item_type_id, jurisdiction_scope, version, valid_from,
207
+ status, conditions, due_rule, note
208
+ ) VALUES (
209
+ ${uuidv7()}, current_setting('app.current_tenant')::uuid, ${tipo.id},
210
+ -- Limite inferior, e não hoje: o escritório processa a competência do mês
211
+ -- passado neste mês, e uma regra que só vale a partir de hoje deixaria
212
+ -- essa competência sem obrigação nenhuma. Ver 0053.
213
+ 'federal', 1, DATE '2000-01-01', 'pending_validation', '{"op":"always"}'::jsonb,
214
+ ${input.dueRule ? tx.json(input.dueRule) : null},
215
+ 'Regra criada junto com o tipo de item. Ajuste jurisdição e condições antes de conferir.'
216
+ )
217
+ `;
218
+ return tipo;
219
+ }
220
+ /**
221
+ * Vencimento como data pura `YYYY-MM-DD`.
222
+ *
223
+ * `due_date` é `date` no Postgres — sem hora e sem fuso. O driver o materializa
224
+ * como `Date` à meia-noite UTC, e devolvê-lo assim faz a API responder
225
+ * `2026-08-20T00:00:00.000Z`. Um cliente em UTC-3 renderiza isso como **19/08**:
226
+ * o vencimento aparece um dia antes do que é, e o alerta dispara no dia errado.
227
+ *
228
+ * `completed_at` (timestamptz) continua indo como instante ISO — ali a hora tem
229
+ * significado. Aqui não tem.
230
+ */
231
+ function toDateOnly(value) {
232
+ if (value == null)
233
+ return null;
234
+ if (typeof value === 'string')
235
+ return value.slice(0, 10);
236
+ return value.toISOString().slice(0, 10);
237
+ }
238
+ function mapInstance(row) {
239
+ return {
240
+ id: row.id,
241
+ clientId: row.client_id,
242
+ competenceId: row.competence_id,
243
+ itemTypeId: row.item_type_id,
244
+ label: row.label,
245
+ nature: row.nature,
246
+ dueDate: toDateOnly(row.due_date),
247
+ status: row.status,
248
+ responsibleUserId: row.responsible_user_id,
249
+ completedAt: row.completed_at ? row.completed_at.toISOString() : null,
250
+ };
251
+ }
252
+ /**
253
+ * Gera as instâncias de uma competência a partir do catálogo.
254
+ *
255
+ * **Idempotente pelo schema, não pelo código.** O `ON CONFLICT DO NOTHING` bate
256
+ * no índice único `(tenant, client, competence, item_type)`; rodar N vezes
257
+ * produz exatamente uma instância por tipo. É o que hoje falta e permite lançar
258
+ * a mesma DAS de julho três vezes.
259
+ *
260
+ * Devolve quantas foram criadas de fato — o operador precisa distinguir "gerei
261
+ * 8" de "já estava tudo lá".
262
+ */
263
+ export async function generateInstancesForCompetence(tx, input) {
264
+ const competence = await getCompetence(tx, input.competenceId);
265
+ const types = await listRecurringItemTypes(tx, { activeOnly: true });
266
+ const applicable = types.filter((t) => t.appliesToRegime.length === 0 ||
267
+ (input.regime != null && t.appliesToRegime.includes(input.regime)));
268
+ const created = [];
269
+ for (const type of applicable) {
270
+ const dueDate = computeDueDate(competence.label, type.dueRule);
271
+ const rows = await tx `
272
+ INSERT INTO recurring_instance
273
+ (id, tenant_id, client_id, competence_id, item_type_id, label, nature, due_date)
274
+ VALUES (
275
+ ${uuidv7()}, current_setting('app.current_tenant')::uuid,
276
+ ${competence.clientId}, ${competence.id}, ${type.id},
277
+ ${type.label}, ${type.nature}, ${dueDate}
278
+ )
279
+ ON CONFLICT DO NOTHING
280
+ RETURNING id, client_id, competence_id, item_type_id, label, nature,
281
+ due_date, status, responsible_user_id, completed_at
282
+ `;
283
+ if (rows[0])
284
+ created.push(mapInstance(rows[0]));
285
+ }
286
+ return { created, skipped: applicable.length - created.length };
287
+ }
288
+ /**
289
+ * Aplica a regra de vencimento sobre a competência.
290
+ *
291
+ * Regra desconhecida devolve `null` em vez de chutar uma data — um vencimento
292
+ * inventado é pior que vencimento ausente, porque o alerta dispararia no dia
293
+ * errado e o usuário confiaria nele.
294
+ *
295
+ * ## Formas aceitas
296
+ *
297
+ * | `kind` | Campos | Significado |
298
+ * |---------------------------|-------------------|------------------------------------------------------|
299
+ * | `day_of_month` | `day` 1–28 | Dia N da própria competência |
300
+ * | `day_of_next_month` | `day` 1–28 | Dia N do mês seguinte |
301
+ * | `day_after_months` | `day` 1–28, `months` | Dia N, M meses depois (generaliza os dois acima) |
302
+ * | `last_business_day_after` | `months` | Último dia útil do mês M meses depois |
303
+ * | `nth_business_day_after` | `nth`, `months` | N-ésimo dia útil do mês M meses depois |
304
+ * | `fixed_annual` | `month`, `day` | Data fixa do ano SEGUINTE ao da competência |
305
+ * | `last_business_day_annual`| `month` | Último dia útil de um mês do ano seguinte |
306
+ *
307
+ * `adjust` move o resultado para um dia útil: `'previous'` (antecipa — é o padrão
308
+ * do recolhimento fiscal brasileiro), `'next'`, ou `'none'`.
309
+ *
310
+ * **`adjust` ausente significa `'none'`, deliberadamente.** As duas formas
311
+ * originais (`day_of_month`, `day_of_next_month`) foram criadas sem noção de dia
312
+ * útil e há regras gravadas em produção que dependem do resultado exato. Ligar o
313
+ * ajuste por padrão mudaria silenciosamente o vencimento de instâncias que já
314
+ * existem. Quem quer o comportamento fiscal pede por ele — e o catálogo de
315
+ * `@baruk/contabil` pede.
316
+ */
317
+ export function computeDueDate(competenceLabel, rule) {
318
+ const kind = typeof rule['kind'] === 'string' ? rule['kind'] : null;
319
+ if (!kind)
320
+ return null;
321
+ const num = (k) => typeof rule[k] === 'number' ? rule[k] : null;
322
+ const rawAdjust = rule['adjust'];
323
+ const adjust = rawAdjust === 'previous' || rawAdjust === 'next' ? rawAdjust : 'none';
324
+ const [yearStr, monthStr] = competenceLabel.split('-');
325
+ const year = Number(yearStr);
326
+ const month = Number(monthStr);
327
+ if (!Number.isInteger(year) || !Number.isInteger(month) || month < 1 || month > 12)
328
+ return null;
329
+ const dayOf = (y, m, d) => `${y}-${String(m).padStart(2, '0')}-${String(d).padStart(2, '0')}`;
330
+ let iso = null;
331
+ switch (kind) {
332
+ case 'day_of_month':
333
+ case 'day_of_next_month':
334
+ case 'day_after_months': {
335
+ const day = num('day');
336
+ // O teto de 28 evita a data que não existe (30 de fevereiro) sem precisar
337
+ // de calendário. Quem precisa do fim do mês usa `last_business_day_*`.
338
+ if (day == null || day < 1 || day > 28)
339
+ return null;
340
+ const months = kind === 'day_of_next_month' ? 1 : kind === 'day_of_month' ? 0 : (num('months') ?? 0);
341
+ if (!Number.isInteger(months) || months < 0 || months > 24)
342
+ return null;
343
+ const [y, m] = shiftMonth(year, month, months);
344
+ iso = dayOf(y, m, day);
345
+ break;
346
+ }
347
+ case 'last_business_day_after': {
348
+ const months = num('months');
349
+ if (months == null || !Number.isInteger(months) || months < 0 || months > 24)
350
+ return null;
351
+ const [y, m] = shiftMonth(year, month, months);
352
+ // Já cai em dia útil por construção; `adjust` fica inócuo aqui.
353
+ return lastBusinessDayOfMonth(y, m);
354
+ }
355
+ case 'nth_business_day_after': {
356
+ const nth = num('nth');
357
+ const months = num('months');
358
+ if (nth == null || nth < 1 || nth > 23)
359
+ return null;
360
+ if (months == null || !Number.isInteger(months) || months < 0 || months > 24)
361
+ return null;
362
+ const [y, m] = shiftMonth(year, month, months);
363
+ return nthBusinessDayOfMonth(y, m, nth);
364
+ }
365
+ case 'fixed_annual': {
366
+ const m = num('month');
367
+ const day = num('day');
368
+ if (m == null || m < 1 || m > 12)
369
+ return null;
370
+ if (day == null || day < 1 || day > 28)
371
+ return null;
372
+ iso = dayOf(year + 1, m, day);
373
+ break;
374
+ }
375
+ case 'last_business_day_annual': {
376
+ const m = num('month');
377
+ if (m == null || m < 1 || m > 12)
378
+ return null;
379
+ return lastBusinessDayOfMonth(year + 1, m);
380
+ }
381
+ default:
382
+ return null;
383
+ }
384
+ return adjustToBusinessDay(iso, adjust);
385
+ }
386
+ export async function listInstances(tx, filter = {}) {
387
+ const rows = await tx `
388
+ SELECT id, client_id, competence_id, item_type_id, label, nature,
389
+ due_date, status, responsible_user_id, completed_at
390
+ FROM recurring_instance
391
+ WHERE deleted_at IS NULL
392
+ AND (${filter.competenceId ?? null}::uuid IS NULL OR competence_id = ${filter.competenceId ?? null})
393
+ AND (${filter.clientId ?? null}::uuid IS NULL OR client_id = ${filter.clientId ?? null})
394
+ AND (${filter.status ?? null}::text IS NULL OR status = ${filter.status ?? null})
395
+ ORDER BY due_date NULLS LAST, label
396
+ `;
397
+ return rows.map(mapInstance);
398
+ }
399
+ /**
400
+ * Abre a competência do mês para a carteira inteira e gera os itens.
401
+ *
402
+ * É a ação que abre o mês de um escritório. Sem ela, "abrir competência" é uma
403
+ * operação por cliente — o que funciona na demonstração com três clientes e é
404
+ * impraticável com trezentos: ninguém vai clicar trezentas vezes todo dia 1º.
405
+ *
406
+ * Idempotente nas duas camadas: `openCompetence` faz `ON CONFLICT DO NOTHING`, e
407
+ * a geração é protegida pelo índice único `(tenant, client, competence, tipo)`.
408
+ * Rodar duas vezes no mesmo mês não duplica nada.
409
+ *
410
+ * O regime de cada cliente é resolvido por `resolveRegime` — injetado, porque
411
+ * quem sabe ler regime tributário é a vertical, e o Core não a conhece.
412
+ *
413
+ * Falha de um cliente não aborta o lote. Abortar deixaria o escritório com o mês
414
+ * meio aberto e sem saber onde parou; aqui ele vê o que passou e o que não.
415
+ */
416
+ export async function bulkOpenCompetence(tx, input) {
417
+ assertCompetenceLabel(input.label);
418
+ const targets = input.clientIds && input.clientIds.length > 0
419
+ ? input.clientIds
420
+ : (await tx `
421
+ SELECT id FROM client
422
+ WHERE deleted_at IS NULL AND status = 'active'
423
+ ORDER BY display_name
424
+ `).map((r) => r.id);
425
+ const result = {
426
+ clientsProcessed: 0,
427
+ competencesOpened: 0,
428
+ competencesExisting: 0,
429
+ itemsCreated: 0,
430
+ itemsSkipped: 0,
431
+ failures: [],
432
+ };
433
+ for (const clientId of targets) {
434
+ try {
435
+ const opened = await openCompetence(tx, { clientId, label: input.label });
436
+ if (opened.created)
437
+ result.competencesOpened += 1;
438
+ else
439
+ result.competencesExisting += 1;
440
+ const regime = input.resolveRegime ? await input.resolveRegime(clientId) : null;
441
+ const generated = await generateInstancesForCompetence(tx, {
442
+ competenceId: opened.competence.id,
443
+ regime,
444
+ });
445
+ result.itemsCreated += generated.created.length;
446
+ result.itemsSkipped += generated.skipped;
447
+ result.clientsProcessed += 1;
448
+ }
449
+ catch (err) {
450
+ result.failures.push({
451
+ clientId,
452
+ reason: err instanceof Error ? err.message : String(err),
453
+ });
454
+ }
455
+ }
456
+ return result;
457
+ }
458
+ export async function listOfficeObligations(tx, filter = {}) {
459
+ const limit = Math.min(Math.max(filter.limit ?? 100, 1), 500);
460
+ const offset = Math.max(filter.offset ?? 0, 0);
461
+ const where = tx `
462
+ WHERE i.deleted_at IS NULL
463
+ AND c.deleted_at IS NULL
464
+ AND (${filter.dueFrom ?? null}::date IS NULL OR i.due_date >= ${filter.dueFrom ?? null})
465
+ AND (${filter.dueTo ?? null}::date IS NULL OR i.due_date <= ${filter.dueTo ?? null})
466
+ AND (${filter.status ?? null}::text IS NULL OR i.status = ${filter.status ?? null})
467
+ AND (${filter.nature ?? null}::text IS NULL OR i.nature = ${filter.nature ?? null})
468
+ AND (${filter.clientId ?? null}::uuid IS NULL OR i.client_id = ${filter.clientId ?? null})
469
+ AND (${filter.responsibleUserId ?? null}::uuid IS NULL
470
+ OR i.responsible_user_id = ${filter.responsibleUserId ?? null})
471
+ AND (${filter.openOnly ?? false}::boolean = false OR i.status <> 'done')
472
+ `;
473
+ const rows = await tx `
474
+ SELECT i.id, i.client_id, i.competence_id, i.item_type_id, i.label, i.nature,
475
+ i.due_date, i.status, i.responsible_user_id, i.completed_at,
476
+ c.display_name AS client_name,
477
+ comp.label AS competence_label,
478
+ t.sphere, t.category, t.requires_document,
479
+ u.full_name AS responsible_name
480
+ FROM recurring_instance i
481
+ JOIN client c ON c.id = i.client_id
482
+ JOIN competence comp ON comp.id = i.competence_id
483
+ LEFT JOIN recurring_item_type t ON t.id = i.item_type_id
484
+ LEFT JOIN "user" u ON u.id = i.responsible_user_id
485
+ ${where}
486
+ ORDER BY i.due_date NULLS LAST, c.display_name, i.label
487
+ LIMIT ${limit} OFFSET ${offset}
488
+ `;
489
+ const [count] = await tx `
490
+ SELECT count(*)::int AS n
491
+ FROM recurring_instance i
492
+ JOIN client c ON c.id = i.client_id
493
+ ${where}
494
+ `;
495
+ return {
496
+ items: rows.map((r) => ({
497
+ ...mapInstance(r),
498
+ clientName: r.client_name,
499
+ competenceLabel: r.competence_label,
500
+ sphere: r.sphere,
501
+ category: r.category,
502
+ requiresDocument: r.requires_document ?? false,
503
+ responsibleName: r.responsible_name,
504
+ })),
505
+ total: count?.n ?? 0,
506
+ };
507
+ }
508
+ /**
509
+ * Define o responsável por um item.
510
+ *
511
+ * Existe porque não existia: a rota de compliance legada gravava
512
+ * `responsibleUserId = auth.userId` sem aceitar o campo, então a obrigação era
513
+ * sempre de quem a criou. Um escritório distribui trabalho; sem isto, "de quem é
514
+ * esta DAS?" não tem resposta no produto.
515
+ *
516
+ * `null` desatribui — deixar sem dono é um estado legítimo, e sem essa
517
+ * distinção um campo esvaziado na tela seria indistinguível de "não mexi nele".
518
+ */
519
+ export async function assignInstance(tx, input) {
520
+ const rows = await tx `
521
+ UPDATE recurring_instance
522
+ SET responsible_user_id = ${input.responsibleUserId},
523
+ version = version + 1, updated_at = now()
524
+ WHERE id = ${input.id} AND deleted_at IS NULL
525
+ RETURNING id, client_id, competence_id, item_type_id, label, nature,
526
+ due_date, status, responsible_user_id, completed_at
527
+ `;
528
+ if (!rows[0])
529
+ throw new NotFoundError('Item não encontrado');
530
+ return mapInstance(rows[0]);
531
+ }
532
+ /**
533
+ * Reabre um item concluído.
534
+ *
535
+ * Marcar como entregue é a ação mais fácil de errar na tela — uma linha ao lado
536
+ * da outra, um clique. Sem reabrir, o erro vira permanente e o operador aprende
537
+ * a não confiar no botão.
538
+ */
539
+ export async function reopenInstance(tx, id) {
540
+ const rows = await tx `
541
+ UPDATE recurring_instance
542
+ SET status = 'pending', completed_at = NULL, completed_by = NULL,
543
+ version = version + 1, updated_at = now()
544
+ WHERE id = ${id} AND deleted_at IS NULL AND status = 'done'
545
+ RETURNING id, client_id, competence_id, item_type_id, label, nature,
546
+ due_date, status, responsible_user_id, completed_at
547
+ `;
548
+ if (!rows[0])
549
+ throw new NotFoundError('Item não encontrado ou não está concluído');
550
+ return mapInstance(rows[0]);
551
+ }
552
+ /**
553
+ * Fecha a obrigação quando TODOS os documentos que ela pedia foram validados.
554
+ *
555
+ * Este é o elo que faltava no ciclo. `document_request.recurring_instance_id`
556
+ * existe no schema desde a 0026 e nunca era preenchido, então validar um
557
+ * documento não dizia nada à obrigação que o pediu: o operador entregava a
558
+ * DAS, validava a nota fiscal, e ainda precisava lembrar de marcar a obrigação
559
+ * à mão — numa lista onde esquecer é o resultado provável.
560
+ *
561
+ * **Todos**, não "algum". Uma obrigação pode pedir três documentos; concluir no
562
+ * primeiro validado marcaria como entregue algo que ainda falta. Pedido
563
+ * `canceled` não conta como pendência — foi retirado de propósito.
564
+ *
565
+ * Devolve a instância quando concluiu, `null` quando ainda há pendência. `null`
566
+ * é resposta normal, não erro.
567
+ */
568
+ export async function completeInstanceIfDocumentsSettled(tx, input) {
569
+ const [pend] = await tx `
570
+ SELECT count(*) FILTER (WHERE status NOT IN ('validated', 'canceled'))::int AS pendentes,
571
+ count(*)::int AS total
572
+ FROM document_request
573
+ WHERE recurring_instance_id = ${input.instanceId} AND deleted_at IS NULL
574
+ `;
575
+ // Sem pedido nenhum, não há o que inferir: a obrigação não é "de documento".
576
+ if (!pend || pend.total === 0 || pend.pendentes > 0)
577
+ return null;
578
+ const rows = await tx `
579
+ UPDATE recurring_instance
580
+ SET status = 'done', completed_at = now(), completed_by = ${input.completedBy},
581
+ version = version + 1, updated_at = now()
582
+ WHERE id = ${input.instanceId} AND deleted_at IS NULL AND status <> 'done'
583
+ RETURNING id, client_id, competence_id, item_type_id, label, nature,
584
+ due_date, status, responsible_user_id, completed_at
585
+ `;
586
+ // Já estava concluída: não é erro, e não há nada a anunciar.
587
+ return rows[0] ? mapInstance(rows[0]) : null;
588
+ }
589
+ export async function completeInstance(tx, input) {
590
+ const rows = await tx `
591
+ UPDATE recurring_instance
592
+ SET status = 'done', completed_at = now(), completed_by = ${input.completedBy},
593
+ version = version + 1, updated_at = now()
594
+ WHERE id = ${input.id} AND deleted_at IS NULL AND status <> 'done'
595
+ RETURNING id, client_id, competence_id, item_type_id, label, nature,
596
+ due_date, status, responsible_user_id, completed_at
597
+ `;
598
+ if (!rows[0])
599
+ throw new NotFoundError('Item não encontrado ou já concluído');
600
+ return mapInstance(rows[0]);
601
+ }
602
+ //# sourceMappingURL=repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository.js","sourceRoot":"","sources":["../../src/competence/repository.ts"],"names":[],"mappings":"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"}