@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
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ensureSaasPlanCatalog = exports.getPlan = exports.listPublicPlans = void 0;
4
4
  exports.seedSaasPlans = seedSaasPlans;
5
+ exports.provisionAccountingOffice = provisionAccountingOffice;
5
6
  exports.signupSelfService = signupSelfService;
6
7
  exports.standingFor = standingFor;
7
8
  exports.entitlementsForPlan = entitlementsForPlan;
@@ -21,17 +22,19 @@ const shared_1 = require("@baruk/shared");
21
22
  const context_js_1 = require("../db/context.js");
22
23
  const audit_js_1 = require("../audit/audit.js");
23
24
  const password_js_1 = require("../auth/password.js");
25
+ const repository_js_1 = require("../users/repository.js");
24
26
  const provisioning_js_1 = require("../tenancy/provisioning.js");
25
- const repository_js_1 = require("../products/repository.js");
27
+ const repository_js_2 = require("../products/repository.js");
26
28
  const derive_js_1 = require("../entitlements/derive.js");
27
- const resend_js_1 = require("../mail/resend.js");
29
+ const transactional_outbound_js_1 = require("../mail/transactional-outbound.js");
28
30
  const reconcile_js_1 = require("./reconcile.js");
29
31
  const dunning_js_1 = require("./dunning.js");
32
+ const live_guard_js_1 = require("../billing/live-guard.js");
30
33
  const registry_js_1 = require("./provider/registry.js");
31
- const repository_js_2 = require("./repository.js");
32
- Object.defineProperty(exports, "ensureSaasPlanCatalog", { enumerable: true, get: function () { return repository_js_2.ensureSaasPlanCatalog; } });
33
- Object.defineProperty(exports, "getPlan", { enumerable: true, get: function () { return repository_js_2.getPlan; } });
34
- Object.defineProperty(exports, "listPublicPlans", { enumerable: true, get: function () { return repository_js_2.listPublicPlans; } });
34
+ const repository_js_3 = require("./repository.js");
35
+ Object.defineProperty(exports, "ensureSaasPlanCatalog", { enumerable: true, get: function () { return repository_js_3.ensureSaasPlanCatalog; } });
36
+ Object.defineProperty(exports, "getPlan", { enumerable: true, get: function () { return repository_js_3.getPlan; } });
37
+ Object.defineProperty(exports, "listPublicPlans", { enumerable: true, get: function () { return repository_js_3.listPublicPlans; } });
35
38
  const plans_js_1 = require("./plans.js");
36
39
  const product_config_js_1 = require("./product-config.js");
37
40
  function asRegistry(source) {
@@ -86,8 +89,70 @@ async function syncTenantStatus(tx, tenantId, status) {
86
89
  }
87
90
  /** Seed do catálogo padrão (chamado pelo seed do core). */
88
91
  async function seedSaasPlans(db) {
89
- await (0, repository_js_1.ensureProductCatalog)(db);
90
- await (0, repository_js_2.ensureSaasPlanCatalog)(db, plans_js_1.SAAS_PLANS);
92
+ await (0, repository_js_2.ensureProductCatalog)(db);
93
+ await (0, repository_js_3.ensureSaasPlanCatalog)(db, plans_js_1.SAAS_PLANS);
94
+ }
95
+ async function provisionAccountingOffice(db, input, nowIso) {
96
+ const email = input.ownerEmail.trim().toLowerCase();
97
+ if (!/^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(email))
98
+ throw new shared_1.ValidationError('E-mail inválido');
99
+ if (!input.companyName.trim())
100
+ throw new shared_1.ValidationError('Nome do escritório é obrigatório');
101
+ if (!input.ownerFullName.trim())
102
+ throw new shared_1.ValidationError('Nome do responsável é obrigatório');
103
+ const planKey = input.planKey ?? plans_js_1.SAAS_PLANS.find((p) => p.isActive && p.isPublic)?.key;
104
+ if (!planKey)
105
+ throw new shared_1.ValidationError('Nenhum plano ativo disponível');
106
+ const plan = await (0, repository_js_3.getPlan)(db, planKey);
107
+ if (!plan || !plan.isActive)
108
+ throw new shared_1.ValidationError(`Plano indisponível: ${planKey}`);
109
+ const code = await uniqueTenantCode(db, input.companyName);
110
+ const tenantId = await (0, provisioning_js_1.ensureTenant)(db, {
111
+ code,
112
+ displayName: input.companyName.trim(),
113
+ status: 'trial',
114
+ primaryProduct: plans_js_1.DEFAULT_PRODUCT_KEY,
115
+ });
116
+ await (0, provisioning_js_1.ensureOrganization)(db, tenantId, input.companyName.trim());
117
+ await (0, repository_js_2.ensureProductCatalog)(db);
118
+ await (0, repository_js_2.ensureTenantProduct)(db, tenantId, plans_js_1.DEFAULT_PRODUCT_KEY);
119
+ const trialEndsAt = addDays(nowIso, plan.trialDays > 0 ? plan.trialDays : plans_js_1.DEFAULT_TRIAL_DAYS);
120
+ const { subscription, domainEvents } = (0, reconcile_js_1.startTrial)(tenantId, plan.key, trialEndsAt, nowIso);
121
+ /*
122
+ * Contexto do TENANT NOVO com o usuário da OPERADORA.
123
+ *
124
+ * O operador não é membro deste escritório e nunca será — ele abre o contexto
125
+ * para criar o convite e sai. O `invited_by` aponta para ele, que é a
126
+ * resposta honesta a "quem colocou esta pessoa aqui".
127
+ */
128
+ return (0, context_js_1.withContext)(db, { tenantId, userId: input.operatorUserId }, async (tx) => {
129
+ const invited = await (0, repository_js_1.inviteUser)(tx, {
130
+ email,
131
+ fullName: input.ownerFullName.trim(),
132
+ roleKey: 'owner',
133
+ invitedBy: input.operatorUserId,
134
+ });
135
+ const row = await (0, repository_js_3.upsertSubscription)(tx, { tenantId, planKey: plan.key, subscription });
136
+ await (0, repository_js_3.appendDomainEvents)(tx, row.rowId, domainEvents);
137
+ await (0, audit_js_1.appendAudit)(tx, {
138
+ actorId: input.operatorUserId,
139
+ action: 'tenant.provisioned_by_operator',
140
+ resourceType: 'tenant',
141
+ resourceId: tenantId,
142
+ metadata: { planKey: plan.key, trialEndsAt, tenantCode: code, ownerEmail: email },
143
+ ip: input.ip ?? null,
144
+ userAgent: input.userAgent ?? null,
145
+ });
146
+ return {
147
+ tenantId,
148
+ tenantCode: code,
149
+ ownerUserId: invited.userId,
150
+ ownerEmail: invited.email,
151
+ planKey: plan.key,
152
+ trialEndsAt,
153
+ activationToken: invited.activationToken,
154
+ };
155
+ });
91
156
  }
92
157
  function slugify(name) {
93
158
  return name
@@ -98,6 +163,31 @@ function slugify(name) {
98
163
  .replace(/^-+|-+$/g, '')
99
164
  .slice(0, 40);
100
165
  }
166
+ /**
167
+ * Código do escritório a partir do nome, único na base.
168
+ *
169
+ * Extraído do signup quando o provisionamento pela operadora passou a precisar
170
+ * do mesmo cálculo. Duas cópias da regra de colisão renderiam dois códigos
171
+ * diferentes para o mesmo nome dependendo de por qual porta o escritório
172
+ * entrou — e o código aparece em referência de cobrança já emitida.
173
+ */
174
+ async function uniqueTenantCode(db, companyName) {
175
+ const base = slugify(companyName) || 'escritorio';
176
+ let code = base;
177
+ for (let i = 2;; i += 1) {
178
+ const clash = await db `
179
+ SELECT id FROM tenant WHERE lower(code) = lower(${code}) AND deleted_at IS NULL
180
+ `;
181
+ if (!clash[0])
182
+ break;
183
+ code = `${base}-${i}`;
184
+ if (i > 50) {
185
+ code = `${base}-${(0, shared_1.uuidv7)().slice(-6)}`;
186
+ break;
187
+ }
188
+ }
189
+ return code;
190
+ }
101
191
  /**
102
192
  * Cadastro self-service (Fase 17): cria usuário + tenant em TRIAL + organização +
103
193
  * membership com papel `owner` + entitlement do produto + assinatura `trialing`.
@@ -111,7 +201,7 @@ async function signupSelfService(db, input, nowIso) {
111
201
  throw new shared_1.ValidationError('Senha deve ter ao menos 8 caracteres');
112
202
  if (!input.companyName.trim())
113
203
  throw new shared_1.ValidationError('Nome da empresa é obrigatório');
114
- const plan = await (0, repository_js_2.getPlan)(db, input.planKey);
204
+ const plan = await (0, repository_js_3.getPlan)(db, input.planKey);
115
205
  if (!plan || !plan.isActive || !plan.isPublic) {
116
206
  throw new shared_1.ValidationError(`Plano indisponível: ${input.planKey}`);
117
207
  }
@@ -122,20 +212,7 @@ async function signupSelfService(db, input, nowIso) {
122
212
  throw new shared_1.ConflictError('Já existe uma conta com este e-mail. Faça login para continuar.');
123
213
  }
124
214
  // Código único do tenant a partir do nome (sufixo em caso de colisão).
125
- const base = slugify(input.companyName) || 'escritorio';
126
- let code = base;
127
- for (let i = 2;; i += 1) {
128
- const clash = await db `
129
- SELECT id FROM tenant WHERE lower(code) = lower(${code}) AND deleted_at IS NULL
130
- `;
131
- if (!clash[0])
132
- break;
133
- code = `${base}-${i}`;
134
- if (i > 50) {
135
- code = `${base}-${(0, shared_1.uuidv7)().slice(-6)}`;
136
- break;
137
- }
138
- }
215
+ const code = await uniqueTenantCode(db, input.companyName);
139
216
  // INSERT puro (não upsert): o papel de app pode CRIAR credencial, nunca
140
217
  // sobrescrever (REVOKE UPDATE em user_credential — anti account-takeover).
141
218
  // A checagem de e-mail acima já garante que o usuário é novo.
@@ -158,13 +235,13 @@ async function signupSelfService(db, input, nowIso) {
158
235
  await (0, provisioning_js_1.ensureOrganization)(db, tenantId, input.companyName.trim());
159
236
  await (0, provisioning_js_1.ensureMembership)(db, tenantId, user.id);
160
237
  await (0, provisioning_js_1.assignSystemRole)(db, tenantId, user.id, 'owner');
161
- await (0, repository_js_1.ensureProductCatalog)(db);
162
- await (0, repository_js_1.ensureTenantProduct)(db, tenantId, 'contabil');
238
+ await (0, repository_js_2.ensureProductCatalog)(db);
239
+ await (0, repository_js_2.ensureTenantProduct)(db, tenantId, 'contabil');
163
240
  const trialEndsAt = addDays(nowIso, plan.trialDays > 0 ? plan.trialDays : 14);
164
241
  const { subscription, domainEvents } = (0, reconcile_js_1.startTrial)(tenantId, plan.key, trialEndsAt, nowIso);
165
242
  await (0, context_js_1.withContext)(db, { tenantId, userId: user.id }, async (tx) => {
166
- const row = await (0, repository_js_2.upsertSubscription)(tx, { tenantId, planKey: plan.key, subscription });
167
- await (0, repository_js_2.appendDomainEvents)(tx, row.rowId, domainEvents);
243
+ const row = await (0, repository_js_3.upsertSubscription)(tx, { tenantId, planKey: plan.key, subscription });
244
+ await (0, repository_js_3.appendDomainEvents)(tx, row.rowId, domainEvents);
168
245
  await (0, audit_js_1.appendAudit)(tx, {
169
246
  actorId: user.id,
170
247
  action: 'signup',
@@ -211,16 +288,16 @@ function entitlementsForPlan(sub, plan, nowIso) {
211
288
  }
212
289
  async function subscriptionOverview(db, ctx, nowIso) {
213
290
  const { sub, invoices, events } = await (0, context_js_1.withContext)(db, ctx, async (tx) => {
214
- const sub0 = await (0, repository_js_2.getSubscription)(tx);
291
+ const sub0 = await (0, repository_js_3.getSubscription)(tx);
215
292
  return {
216
293
  sub: sub0,
217
- invoices: sub0 ? await (0, repository_js_2.listInvoices)(tx) : [],
218
- events: sub0 ? await (0, repository_js_2.listBillingEvents)(tx, 20) : [],
294
+ invoices: sub0 ? await (0, repository_js_3.listInvoices)(tx) : [],
295
+ events: sub0 ? await (0, repository_js_3.listBillingEvents)(tx, 20) : [],
219
296
  };
220
297
  });
221
298
  // Fora da transação: getPlan usa outra conexão do pool — dentro dela seria
222
299
  // um segundo checkout de conexão com transação aberta (deadlock de pool).
223
- const plan = sub ? await (0, repository_js_2.getPlan)(db, sub.planKey) : null;
300
+ const plan = sub ? await (0, repository_js_3.getPlan)(db, sub.planKey) : null;
224
301
  return {
225
302
  subscription: sub,
226
303
  plan,
@@ -237,7 +314,7 @@ async function subscriptionOverview(db, ctx, nowIso) {
237
314
  * manual (backoffice) — nunca cobra por falta de configuração.
238
315
  */
239
316
  async function startCheckout(db, ctx, source, planKey, _nowIso, productKey = plans_js_1.DEFAULT_PRODUCT_KEY) {
240
- const plan = await (0, repository_js_2.getPlan)(db, planKey, productKey);
317
+ const plan = await (0, repository_js_3.getPlan)(db, planKey, productKey);
241
318
  if (!plan || !plan.isActive || !plan.isPublic) {
242
319
  throw new shared_1.ValidationError(`Plano indisponível: ${planKey}`);
243
320
  }
@@ -254,6 +331,13 @@ async function startCheckout(db, ctx, source, planKey, _nowIso, productKey = pla
254
331
  if (provider.mode === 'disabled') {
255
332
  return { mode: 'disabled', provider: provider.name, url: null };
256
333
  }
334
+ // Chave geral, no ponto em que dívida real nasce — e ANTES de qualquer
335
+ // chamada ao gateway. O modo lido é o EFETIVO (a fábrica rebaixa para
336
+ // `disabled` quem não tem credencial), então só um provedor genuinamente
337
+ // live é barrado aqui.
338
+ if (provider.mode === 'live') {
339
+ (0, live_guard_js_1.assertLiveProviderAllowed)('live', (0, live_guard_js_1.readLiveRuntime)(), 'charge');
340
+ }
257
341
  // 1) Leitura curta (transação própria) — nada de rede com transação aberta.
258
342
  const snapshot = await (0, context_js_1.withContext)(db, ctx, async (tx) => {
259
343
  const tenantRows = await tx `
@@ -262,7 +346,7 @@ async function startCheckout(db, ctx, source, planKey, _nowIso, productKey = pla
262
346
  const userRows = await tx `
263
347
  SELECT email FROM "user" WHERE id = ${ctx.userId}
264
348
  `;
265
- const sub = await (0, repository_js_2.getSubscription)(tx);
349
+ const sub = await (0, repository_js_3.getSubscription)(tx);
266
350
  return {
267
351
  tenantName: tenantRows[0]?.display_name ?? 'Tenant Baruk',
268
352
  email: userRows[0]?.email ?? null,
@@ -289,8 +373,8 @@ async function startCheckout(db, ctx, source, planKey, _nowIso, productKey = pla
289
373
  // 3) Persistência curta: SOMENTE as referências de provider (nunca o estado
290
374
  // da assinatura — um webhook pode tê-la mudado durante a chamada de rede).
291
375
  await (0, context_js_1.withContext)(db, ctx, async (tx) => {
292
- await (0, repository_js_2.lockTenantBilling)(tx, ctx.tenantId);
293
- await (0, repository_js_2.setSubscriptionProviderRefs)(tx, ctx.tenantId, provider.name, customer.externalId);
376
+ await (0, repository_js_3.lockTenantBilling)(tx, ctx.tenantId);
377
+ await (0, repository_js_3.setSubscriptionProviderRefs)(tx, ctx.tenantId, provider.name, customer.externalId);
294
378
  await (0, audit_js_1.appendAudit)(tx, {
295
379
  actorId: ctx.userId,
296
380
  action: 'checkout_started',
@@ -347,7 +431,7 @@ async function processWebhook(db, source, headers, rawBody, payload, nowIso, pro
347
431
  const event = provider.parseWebhookEvent(payload);
348
432
  if (!event)
349
433
  return { outcome: 'ignored' };
350
- const webhookId = await (0, repository_js_2.insertWebhookEvent)(db, {
434
+ const webhookId = await (0, repository_js_3.insertWebhookEvent)(db, {
351
435
  provider: provider.name,
352
436
  externalEventId: event.externalEventId,
353
437
  eventType: event.eventType,
@@ -364,7 +448,7 @@ async function processWebhook(db, source, headers, rawBody, payload, nowIso, pro
364
448
  async function reconcileStoredWebhookEvent(db, provider, event, webhookId, nowIso, expectedProductKey = plans_js_1.DEFAULT_PRODUCT_KEY) {
365
449
  const attribution = parseAttribution(event);
366
450
  if (!attribution) {
367
- await (0, repository_js_2.markWebhookEvent)(db, webhookId, 'ignored', null, 'externalReference ausente/inválida');
451
+ await (0, repository_js_3.markWebhookEvent)(db, webhookId, 'ignored', null, 'externalReference ausente/inválida');
368
452
  return { outcome: 'ignored' };
369
453
  }
370
454
  // ISOLAMENTO FINANCEIRO: a conta que assinou o webhook é a conta de UM
@@ -372,15 +456,15 @@ async function reconcileStoredWebhookEvent(db, provider, event, webhookId, nowIs
372
456
  // errada no gateway — ou é tentativa de mover dinheiro entre produtos.
373
457
  // Recusar é obrigatório: reconciliar aqui escreveria na assinatura errada.
374
458
  if (attribution.productKey !== expectedProductKey) {
375
- await (0, repository_js_2.markWebhookEvent)(db, webhookId, 'ignored', null, `produto divergente: evento=${attribution.productKey} conta=${expectedProductKey}`);
459
+ await (0, repository_js_3.markWebhookEvent)(db, webhookId, 'ignored', null, `produto divergente: evento=${attribution.productKey} conta=${expectedProductKey}`);
376
460
  return { outcome: 'ignored' };
377
461
  }
378
462
  try {
379
- const plan = await (0, repository_js_2.getPlan)(db, attribution.planKey, attribution.productKey);
463
+ const plan = await (0, repository_js_3.getPlan)(db, attribution.planKey, attribution.productKey);
380
464
  const { tenantId } = attribution;
381
465
  const applied = await (0, context_js_1.withContext)(db, { tenantId }, async (tx) => {
382
- await (0, repository_js_2.lockTenantBilling)(tx, tenantId);
383
- const current = await (0, repository_js_2.getSubscription)(tx);
466
+ await (0, repository_js_3.lockTenantBilling)(tx, tenantId);
467
+ const current = await (0, repository_js_3.getSubscription)(tx);
384
468
  // Guarda de ordenação (webhook atrasado): um OVERDUE que chega DEPOIS do
385
469
  // pagamento do mesmo ciclo (período corrente ainda vigente) é obsoleto —
386
470
  // aplicá-lo marcaria past_due uma assinatura em dia. Política de
@@ -440,7 +524,7 @@ async function reconcileStoredWebhookEvent(db, provider, event, webhookId, nowIs
440
524
  currentPeriodEnd: addMonths(nowIso, plan.periodicity === 'yearly' ? 12 : 3),
441
525
  };
442
526
  }
443
- const row = await (0, repository_js_2.upsertSubscription)(tx, {
527
+ const row = await (0, repository_js_3.upsertSubscription)(tx, {
444
528
  tenantId,
445
529
  planKey: effectivePlanKey ?? current?.planKey ?? next.items[0]?.planKey ?? 'starter',
446
530
  subscription: next,
@@ -448,9 +532,9 @@ async function reconcileStoredWebhookEvent(db, provider, event, webhookId, nowIs
448
532
  providerCustomerId: event.externalCustomerId ?? null,
449
533
  providerSubscriptionId: event.subscription?.externalId ?? null,
450
534
  });
451
- await (0, repository_js_2.appendDomainEvents)(tx, row.rowId, domainEvents);
535
+ await (0, repository_js_3.appendDomainEvents)(tx, row.rowId, domainEvents);
452
536
  if (event.invoice) {
453
- await (0, repository_js_2.upsertInvoice)(tx, {
537
+ await (0, repository_js_3.upsertInvoice)(tx, {
454
538
  tenantId,
455
539
  subscriptionRowId: row.rowId,
456
540
  provider: provider.name,
@@ -478,25 +562,25 @@ async function reconcileStoredWebhookEvent(db, provider, event, webhookId, nowIs
478
562
  return null;
479
563
  });
480
564
  if (applied !== null) {
481
- await (0, repository_js_2.markWebhookEvent)(db, webhookId, 'ignored', attribution.tenantId, applied);
565
+ await (0, repository_js_3.markWebhookEvent)(db, webhookId, 'ignored', attribution.tenantId, applied);
482
566
  return { outcome: 'ignored', tenantId: attribution.tenantId };
483
567
  }
484
- await (0, repository_js_2.markWebhookEvent)(db, webhookId, 'processed', attribution.tenantId);
568
+ await (0, repository_js_3.markWebhookEvent)(db, webhookId, 'processed', attribution.tenantId);
485
569
  return { outcome: 'processed', tenantId: attribution.tenantId };
486
570
  }
487
571
  catch (err) {
488
- await (0, repository_js_2.markWebhookEvent)(db, webhookId, 'failed', attribution.tenantId, err instanceof Error ? err.message : String(err));
572
+ await (0, repository_js_3.markWebhookEvent)(db, webhookId, 'failed', attribution.tenantId, err instanceof Error ? err.message : String(err));
489
573
  return { outcome: 'failed', tenantId: attribution.tenantId };
490
574
  }
491
575
  }
492
576
  // ── Gestão da assinatura (tenant) ────────────────────────────────────────────
493
577
  async function changePlanForTenant(db, ctx, newPlanKey, nowIso) {
494
- const plan = await (0, repository_js_2.getPlan)(db, newPlanKey);
578
+ const plan = await (0, repository_js_3.getPlan)(db, newPlanKey);
495
579
  if (!plan || !plan.isActive)
496
580
  throw new shared_1.ValidationError(`Plano desconhecido: ${newPlanKey}`);
497
581
  return (0, context_js_1.withContext)(db, ctx, async (tx) => {
498
- await (0, repository_js_2.lockTenantBilling)(tx, ctx.tenantId);
499
- const current = await (0, repository_js_2.getSubscription)(tx);
582
+ await (0, repository_js_3.lockTenantBilling)(tx, ctx.tenantId);
583
+ const current = await (0, repository_js_3.getSubscription)(tx);
500
584
  if (!current)
501
585
  throw new shared_1.NotFoundError('Nenhuma assinatura para este tenant');
502
586
  if (current.status === 'canceled') {
@@ -505,12 +589,12 @@ async function changePlanForTenant(db, ctx, newPlanKey, nowIso) {
505
589
  if (current.planKey === plan.key)
506
590
  return current;
507
591
  const { subscription, domainEvents } = (0, reconcile_js_1.changePlan)(current, plan.key, nowIso);
508
- const row = await (0, repository_js_2.upsertSubscription)(tx, {
592
+ const row = await (0, repository_js_3.upsertSubscription)(tx, {
509
593
  tenantId: ctx.tenantId,
510
594
  planKey: plan.key,
511
595
  subscription,
512
596
  });
513
- await (0, repository_js_2.appendDomainEvents)(tx, row.rowId, domainEvents);
597
+ await (0, repository_js_3.appendDomainEvents)(tx, row.rowId, domainEvents);
514
598
  await (0, audit_js_1.appendAudit)(tx, {
515
599
  actorId: ctx.userId,
516
600
  action: 'plan_changed',
@@ -521,27 +605,64 @@ async function changePlanForTenant(db, ctx, newPlanKey, nowIso) {
521
605
  return row;
522
606
  });
523
607
  }
524
- async function cancelForTenant(db, ctx, nowIso) {
608
+ /**
609
+ * Cancelamento — GATEWAY-FIRST.
610
+ *
611
+ * A recorrência é cancelada no provider ANTES de o estado local virar
612
+ * `canceled`. A ordem inversa produzia o pior resultado possível: a aplicação
613
+ * dizia "cancelado", o acesso era suspenso, e o ASAAS seguia emitindo cobrança
614
+ * mensal — cliente pagando por serviço que já não usa.
615
+ *
616
+ * Se o gateway falhar, o erro sobe e o estado local NÃO é consolidado: melhor o
617
+ * usuário ver a falha e tentar de novo do que acreditar num cancelamento que não
618
+ * aconteceu. A operação é segura para retry porque `cancelSubscription` do
619
+ * provider é idempotente — cancelar o que já está cancelado devolve sucesso.
620
+ *
621
+ * Assinatura sem `providerSubscriptionId` (trial que nunca chegou ao checkout)
622
+ * não tem o que cancelar no gateway: segue direto para o estado local.
623
+ */
624
+ async function cancelForTenant(db, ctx, source, nowIso, productKey = plans_js_1.DEFAULT_PRODUCT_KEY) {
625
+ // Fora da transação: chamada de rede não pode segurar o lock do tenant.
626
+ const existing = await (0, context_js_1.withContext)(db, ctx, (tx) => (0, repository_js_3.getSubscription)(tx, productKey));
627
+ if (!existing)
628
+ throw new shared_1.NotFoundError('Nenhuma assinatura para este tenant');
629
+ let providerOutcome = 'skipped_no_provider_id';
630
+ if (existing.status !== 'canceled' && existing.providerSubscriptionId) {
631
+ // Mesma resolução por produto usada no checkout: a conta de gateway sai do
632
+ // PRODUTO, nunca de configuração global. Cancelar na conta errada seria tão
633
+ // grave quanto cobrar na conta errada.
634
+ const cfg = asRegistry(source).resolve({ productKey, tenantId: ctx.tenantId });
635
+ const provider = providerFor(cfg);
636
+ if (provider.cancelSubscription) {
637
+ const res = await provider.cancelSubscription(existing.providerSubscriptionId);
638
+ providerOutcome = res.alreadyCanceled ? 'already_canceled' : 'canceled';
639
+ }
640
+ }
525
641
  return (0, context_js_1.withContext)(db, ctx, async (tx) => {
526
- await (0, repository_js_2.lockTenantBilling)(tx, ctx.tenantId);
527
- const current = await (0, repository_js_2.getSubscription)(tx);
642
+ await (0, repository_js_3.lockTenantBilling)(tx, ctx.tenantId);
643
+ const current = await (0, repository_js_3.getSubscription)(tx, productKey);
528
644
  if (!current)
529
645
  throw new shared_1.NotFoundError('Nenhuma assinatura para este tenant');
646
+ // Idempotência: cancelar o que já está cancelado devolve o estado, sem erro
647
+ // e sem novo evento — inclusive quando dois pedidos correm em paralelo.
530
648
  if (current.status === 'canceled')
531
649
  return current;
532
650
  const { subscription, domainEvents } = (0, reconcile_js_1.cancelSubscription)(current, nowIso);
533
- const row = await (0, repository_js_2.upsertSubscription)(tx, {
651
+ const row = await (0, repository_js_3.upsertSubscription)(tx, {
534
652
  tenantId: ctx.tenantId,
535
653
  planKey: current.planKey,
536
654
  subscription,
537
655
  });
538
- await (0, repository_js_2.appendDomainEvents)(tx, row.rowId, domainEvents);
656
+ await (0, repository_js_3.appendDomainEvents)(tx, row.rowId, domainEvents);
539
657
  await syncTenantStatus(tx, ctx.tenantId, subscription.status);
540
658
  await (0, audit_js_1.appendAudit)(tx, {
541
659
  actorId: ctx.userId,
542
660
  action: 'subscription_canceled',
543
661
  resourceType: 'saas_subscription',
544
662
  resourceId: row.rowId,
663
+ // Registra o que aconteceu no gateway: auditoria de cancelamento sem isso
664
+ // não distingue "cancelei a recorrência" de "não havia recorrência".
665
+ diff: { providerOutcome, productKey },
545
666
  });
546
667
  return row;
547
668
  });
@@ -552,7 +673,7 @@ async function cancelForTenant(db, ctx, nowIso) {
552
673
  * devolve o checkout; em modo 'disabled' a reativação é manual (backoffice).
553
674
  */
554
675
  async function reactivateForTenant(db, ctx, source, nowIso, productKey = plans_js_1.DEFAULT_PRODUCT_KEY) {
555
- const sub = await (0, context_js_1.withContext)(db, ctx, (tx) => (0, repository_js_2.getSubscription)(tx, productKey));
676
+ const sub = await (0, context_js_1.withContext)(db, ctx, (tx) => (0, repository_js_3.getSubscription)(tx, productKey));
556
677
  if (!sub)
557
678
  throw new shared_1.NotFoundError('Nenhuma assinatura para este tenant');
558
679
  if (sub.status === 'active' || sub.status === 'trialing') {
@@ -562,10 +683,10 @@ async function reactivateForTenant(db, ctx, source, nowIso, productKey = plans_j
562
683
  }
563
684
  // ── Backoffice (operadora) ───────────────────────────────────────────────────
564
685
  async function backofficeListSubscriptions(db, filter = {}) {
565
- return (0, repository_js_2.withOperatorContext)(db, (tx) => (0, repository_js_2.listAllSubscriptions)(tx, filter));
686
+ return (0, repository_js_3.withOperatorContext)(db, (tx) => (0, repository_js_3.listAllSubscriptions)(tx, filter));
566
687
  }
567
688
  async function backofficeOverview(db) {
568
- return (0, repository_js_2.withOperatorContext)(db, (tx) => (0, repository_js_2.backofficeSummary)(tx));
689
+ return (0, repository_js_3.withOperatorContext)(db, (tx) => (0, repository_js_3.backofficeSummary)(tx));
569
690
  }
570
691
  async function backofficeListWebhookEvents(db, limit = 100) {
571
692
  const rows = await db `
@@ -590,12 +711,12 @@ async function backofficeListWebhookEvents(db, limit = 100) {
590
711
  * nenhuma transição de estado fora do domínio puro.
591
712
  */
592
713
  async function backofficeActivateSubscription(db, operatorEmail, tenantId, planKey, nowIso) {
593
- const plan = await (0, repository_js_2.getPlan)(db, planKey);
714
+ const plan = await (0, repository_js_3.getPlan)(db, planKey);
594
715
  if (!plan)
595
716
  throw new shared_1.ValidationError(`Plano desconhecido: ${planKey}`);
596
717
  return (0, context_js_1.withContext)(db, { tenantId }, async (tx) => {
597
- await (0, repository_js_2.lockTenantBilling)(tx, tenantId);
598
- const current = await (0, repository_js_2.getSubscription)(tx);
718
+ await (0, repository_js_3.lockTenantBilling)(tx, tenantId);
719
+ const current = await (0, repository_js_3.getSubscription)(tx);
599
720
  const manualEvent = {
600
721
  externalEventId: `manual_${(0, shared_1.uuidv7)()}`,
601
722
  eventType: 'manual.activation',
@@ -616,14 +737,14 @@ async function backofficeActivateSubscription(db, operatorEmail, tenantId, planK
616
737
  event: manualEvent,
617
738
  now: nowIso,
618
739
  });
619
- const row = await (0, repository_js_2.upsertSubscription)(tx, {
740
+ const row = await (0, repository_js_3.upsertSubscription)(tx, {
620
741
  tenantId,
621
742
  planKey: plan.key,
622
743
  subscription,
623
744
  provider: 'manual',
624
745
  });
625
- await (0, repository_js_2.appendDomainEvents)(tx, row.rowId, domainEvents);
626
- await (0, repository_js_2.upsertInvoice)(tx, {
746
+ await (0, repository_js_3.appendDomainEvents)(tx, row.rowId, domainEvents);
747
+ await (0, repository_js_3.upsertInvoice)(tx, {
627
748
  tenantId,
628
749
  subscriptionRowId: row.rowId,
629
750
  provider: 'manual',
@@ -652,14 +773,14 @@ async function backofficeActivateSubscription(db, operatorEmail, tenantId, planK
652
773
  async function retryFailedWebhookEvents(db, source, nowIso, limit = 25, productKey = plans_js_1.DEFAULT_PRODUCT_KEY) {
653
774
  const cfg = asRegistry(source).resolve({ productKey });
654
775
  const provider = providerFor(cfg);
655
- const failed = await (0, repository_js_2.listFailedWebhookEvents)(db, limit);
776
+ const failed = await (0, repository_js_3.listFailedWebhookEvents)(db, limit);
656
777
  let recovered = 0;
657
778
  for (const row of failed) {
658
779
  if (row.provider !== provider.name)
659
780
  continue;
660
781
  const event = provider.parseWebhookEvent(row.payload);
661
782
  if (!event) {
662
- await (0, repository_js_2.markWebhookEvent)(db, row.id, 'ignored', null, 'payload não parseável no reprocessamento');
783
+ await (0, repository_js_3.markWebhookEvent)(db, row.id, 'ignored', null, 'payload não parseável no reprocessamento');
663
784
  continue;
664
785
  }
665
786
  const result = await reconcileStoredWebhookEvent(db, provider, event, row.id, nowIso, productKey);
@@ -703,7 +824,7 @@ async function runBillingCron(db, source, nowIso) {
703
824
  report.webhooksRetried += retry.retried;
704
825
  report.webhooksRecovered += retry.recovered;
705
826
  }
706
- const subs = await (0, repository_js_2.withOperatorContext)(db, (tx) => (0, repository_js_2.listSubscriptionsForCron)(tx, today));
827
+ const subs = await (0, repository_js_3.withOperatorContext)(db, (tx) => (0, repository_js_3.listSubscriptionsForCron)(tx, today));
707
828
  report.examined = subs.length;
708
829
  for (const sub of subs) {
709
830
  // Isolamento de falha: um tenant quebrado não pode derrubar a régua dos demais.
@@ -713,8 +834,8 @@ async function runBillingCron(db, source, nowIso) {
713
834
  // assinatura — nunca de uma configuração global compartilhada.
714
835
  const cfg = registry.resolve({ productKey: sub.productKey, tenantId: sub.tenantId });
715
836
  await (0, context_js_1.withContext)(db, { tenantId: sub.tenantId }, async (tx) => {
716
- await (0, repository_js_2.lockTenantBilling)(tx, sub.tenantId);
717
- const loaded = await (0, repository_js_2.getSubscription)(tx, sub.productKey);
837
+ await (0, repository_js_3.lockTenantBilling)(tx, sub.tenantId);
838
+ const loaded = await (0, repository_js_3.getSubscription)(tx, sub.productKey);
718
839
  if (!loaded)
719
840
  return; // sumiu entre o scan e o lock (ex.: tenant removido)
720
841
  let current = loaded;
@@ -756,30 +877,30 @@ async function runBillingCron(db, source, nowIso) {
756
877
  ...subscription,
757
878
  currentPeriodEnd: subscription.currentPeriodEnd ?? reference,
758
879
  };
759
- const row = await (0, repository_js_2.upsertSubscription)(tx, {
880
+ const row = await (0, repository_js_3.upsertSubscription)(tx, {
760
881
  tenantId: current.tenantId,
761
882
  planKey: current.planKey,
762
883
  subscription: next,
763
884
  });
764
- await (0, repository_js_2.appendDomainEvents)(tx, row.rowId, domainEvents);
885
+ await (0, repository_js_3.appendDomainEvents)(tx, row.rowId, domainEvents);
765
886
  await (0, audit_js_1.appendAudit)(tx, {
766
887
  actorType: 'automation',
767
888
  action: trialExpired ? 'trial_expired' : 'period_expired',
768
889
  resourceType: 'saas_subscription',
769
890
  resourceId: row.rowId,
770
891
  });
771
- current = (await (0, repository_js_2.getSubscription)(tx));
892
+ current = (await (0, repository_js_3.getSubscription)(tx));
772
893
  }
773
894
  }
774
895
  // 2. Régua de inadimplência (idempotente por stepKey + reference_date).
775
896
  if (current.status === 'past_due') {
776
897
  const reference = current.currentPeriodEnd ?? current.trialEndsAt ?? today;
777
- const executed = await (0, repository_js_2.listExecutedDunningSteps)(tx, current.rowId, reference);
898
+ const executed = await (0, repository_js_3.listExecutedDunningSteps)(tx, current.rowId, reference);
778
899
  const events = (0, dunning_js_1.dunningStepsAsEvents)({ ...current, currentPeriodEnd: reference }, today, executed);
779
900
  for (const ev of events) {
780
901
  const stepKey = ev.data.dunningStep?.stepKey ??
781
902
  `step_${ev.sequence}`;
782
- await (0, repository_js_2.recordDunningStep)(tx, {
903
+ await (0, repository_js_3.recordDunningStep)(tx, {
783
904
  tenantId: current.tenantId,
784
905
  subscriptionRowId: current.rowId,
785
906
  stepKey,
@@ -788,9 +909,9 @@ async function runBillingCron(db, source, nowIso) {
788
909
  report.dunningStepsExecuted += 1;
789
910
  }
790
911
  if (events.length > 0) {
791
- await (0, repository_js_2.appendDomainEvents)(tx, current.rowId, events);
912
+ await (0, repository_js_3.appendDomainEvents)(tx, current.rowId, events);
792
913
  dunningEmailTo = await ownerEmailForTenant(tx, current.tenantId);
793
- await (0, repository_js_2.upsertSubscription)(tx, {
914
+ await (0, repository_js_3.upsertSubscription)(tx, {
794
915
  tenantId: current.tenantId,
795
916
  planKey: current.planKey,
796
917
  subscription: { ...current, sequence: current.sequence + events.length },
@@ -818,11 +939,15 @@ async function runBillingCron(db, source, nowIso) {
818
939
  });
819
940
  // Envio FORA da transação (best-effort com timeout): rede nunca segura o banco.
820
941
  if (dunningEmailTo) {
821
- const sent = await (0, resend_js_1.sendEmail)(cfg.resendApiKey, {
822
- from: cfg.emailFrom,
823
- to: dunningEmailTo,
824
- subject: 'Sua assinatura Baruk está com pagamento pendente',
825
- html: `<p>Olá,</p><p>Identificamos uma pendência na assinatura da sua conta Baruk.</p><p>Regularize para manter seus serviços ativos: <a href="${cfg.webBaseUrl}/assinatura">gerenciar assinatura</a>.</p><p>Se o pagamento já foi feito, desconsidere este aviso.</p>`,
942
+ const sent = await (0, transactional_outbound_js_1.sendTransactionalOutbound)({
943
+ kind: 'subscription_dunning',
944
+ apiKey: cfg.resendApiKey,
945
+ message: {
946
+ from: cfg.emailFrom,
947
+ to: dunningEmailTo,
948
+ subject: 'Sua assinatura Baruk está com pagamento pendente',
949
+ html: `<p>Olá,</p><p>Identificamos uma pendência na assinatura da sua conta Baruk.</p><p>Regularize para manter seus serviços ativos: <a href="${cfg.webBaseUrl}/assinatura">gerenciar assinatura</a>.</p><p>Se o pagamento já foi feito, desconsidere este aviso.</p>`,
950
+ },
826
951
  });
827
952
  if (sent)
828
953
  report.emailsSent += 1;