@baruk/core 0.3.0 → 0.4.2

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 (708) hide show
  1. package/.baruk-provenance.json +10 -0
  2. package/CHANGELOG.md +97 -0
  3. package/README.md +9 -2
  4. package/dist/auth/password-reset.d.ts +30 -1
  5. package/dist/auth/password-reset.d.ts.map +1 -1
  6. package/dist/auth/password-reset.js +139 -11
  7. package/dist/auth/password-reset.js.map +1 -1
  8. package/dist/auth/service.d.ts +39 -2
  9. package/dist/auth/service.d.ts.map +1 -1
  10. package/dist/auth/service.js +75 -10
  11. package/dist/auth/service.js.map +1 -1
  12. package/dist/billing/ar-repository.d.ts +334 -0
  13. package/dist/billing/ar-repository.d.ts.map +1 -0
  14. package/dist/billing/ar-repository.js +707 -0
  15. package/dist/billing/ar-repository.js.map +1 -0
  16. package/dist/billing/auto-generation.d.ts +87 -0
  17. package/dist/billing/auto-generation.d.ts.map +1 -0
  18. package/dist/billing/auto-generation.js +181 -0
  19. package/dist/billing/auto-generation.js.map +1 -0
  20. package/dist/billing/live-guard.d.ts +64 -0
  21. package/dist/billing/live-guard.d.ts.map +1 -0
  22. package/dist/billing/live-guard.js +68 -0
  23. package/dist/billing/live-guard.js.map +1 -0
  24. package/dist/billing/payment-means-catalog.d.ts +17 -0
  25. package/dist/billing/payment-means-catalog.d.ts.map +1 -0
  26. package/dist/billing/payment-means-catalog.js +21 -0
  27. package/dist/billing/payment-means-catalog.js.map +1 -0
  28. package/dist/billing/payment-means.d.ts +38 -0
  29. package/dist/billing/payment-means.d.ts.map +1 -0
  30. package/dist/billing/payment-means.js +29 -0
  31. package/dist/billing/payment-means.js.map +1 -0
  32. package/dist/billing/payment-rail.d.ts +118 -0
  33. package/dist/billing/payment-rail.d.ts.map +1 -0
  34. package/dist/billing/payment-rail.js +295 -0
  35. package/dist/billing/payment-rail.js.map +1 -0
  36. package/dist/billing/provider/asaas.d.ts +46 -1
  37. package/dist/billing/provider/asaas.d.ts.map +1 -1
  38. package/dist/billing/provider/asaas.js +194 -14
  39. package/dist/billing/provider/asaas.js.map +1 -1
  40. package/dist/billing/provider/manual.js +1 -1
  41. package/dist/billing/provider/manual.js.map +1 -1
  42. package/dist/billing/provider/types.d.ts +115 -8
  43. package/dist/billing/provider/types.d.ts.map +1 -1
  44. package/dist/billing/provider-account.d.ts +89 -0
  45. package/dist/billing/provider-account.d.ts.map +1 -0
  46. package/dist/billing/provider-account.js +161 -0
  47. package/dist/billing/provider-account.js.map +1 -0
  48. package/dist/billing/provider-onboarding.d.ts +67 -0
  49. package/dist/billing/provider-onboarding.d.ts.map +1 -0
  50. package/dist/billing/provider-onboarding.js +234 -0
  51. package/dist/billing/provider-onboarding.js.map +1 -0
  52. package/dist/billing/receivable.d.ts +5 -1
  53. package/dist/billing/receivable.d.ts.map +1 -1
  54. package/dist/billing/reconcile.d.ts +58 -0
  55. package/dist/billing/reconcile.d.ts.map +1 -0
  56. package/dist/billing/reconcile.js +138 -0
  57. package/dist/billing/reconcile.js.map +1 -0
  58. package/dist/billing/repository.d.ts +90 -1
  59. package/dist/billing/repository.d.ts.map +1 -1
  60. package/dist/billing/repository.js +148 -19
  61. package/dist/billing/repository.js.map +1 -1
  62. package/dist/cjs/auth/password-reset.js +141 -11
  63. package/dist/cjs/auth/password-reset.js.map +1 -1
  64. package/dist/cjs/auth/service.js +75 -9
  65. package/dist/cjs/auth/service.js.map +1 -1
  66. package/dist/cjs/billing/ar-repository.js +728 -0
  67. package/dist/cjs/billing/ar-repository.js.map +1 -0
  68. package/dist/cjs/billing/auto-generation.js +186 -0
  69. package/dist/cjs/billing/auto-generation.js.map +1 -0
  70. package/dist/cjs/billing/live-guard.js +72 -0
  71. package/dist/cjs/billing/live-guard.js.map +1 -0
  72. package/dist/cjs/billing/payment-means-catalog.js +25 -0
  73. package/dist/cjs/billing/payment-means-catalog.js.map +1 -0
  74. package/dist/cjs/billing/payment-means.js +33 -0
  75. package/dist/cjs/billing/payment-means.js.map +1 -0
  76. package/dist/cjs/billing/payment-rail.js +301 -0
  77. package/dist/cjs/billing/payment-rail.js.map +1 -0
  78. package/dist/cjs/billing/provider/asaas.js +194 -14
  79. package/dist/cjs/billing/provider/asaas.js.map +1 -1
  80. package/dist/cjs/billing/provider/manual.js +1 -1
  81. package/dist/cjs/billing/provider/manual.js.map +1 -1
  82. package/dist/cjs/billing/provider-account.js +170 -0
  83. package/dist/cjs/billing/provider-account.js.map +1 -0
  84. package/dist/cjs/billing/provider-onboarding.js +239 -0
  85. package/dist/cjs/billing/provider-onboarding.js.map +1 -0
  86. package/dist/cjs/billing/reconcile.js +143 -0
  87. package/dist/cjs/billing/reconcile.js.map +1 -0
  88. package/dist/cjs/billing/repository.js +150 -18
  89. package/dist/cjs/billing/repository.js.map +1 -1
  90. package/dist/cjs/clients/repository.js +96 -20
  91. package/dist/cjs/clients/repository.js.map +1 -1
  92. package/dist/cjs/collection/branding.js +140 -0
  93. package/dist/cjs/collection/branding.js.map +1 -0
  94. package/dist/cjs/collection/channel-accounts.js +137 -0
  95. package/dist/cjs/collection/channel-accounts.js.map +1 -0
  96. package/dist/cjs/collection/channel.js +17 -0
  97. package/dist/cjs/collection/channel.js.map +1 -0
  98. package/dist/cjs/collection/communication-bridge.js +140 -0
  99. package/dist/cjs/collection/communication-bridge.js.map +1 -0
  100. package/dist/cjs/collection/communication-runtime.js +193 -0
  101. package/dist/cjs/collection/communication-runtime.js.map +1 -0
  102. package/dist/cjs/collection/consent-repository.js +84 -0
  103. package/dist/cjs/collection/consent-repository.js.map +1 -0
  104. package/dist/cjs/collection/copy.js +125 -0
  105. package/dist/cjs/collection/copy.js.map +1 -0
  106. package/dist/cjs/collection/delivery-callback.js +151 -0
  107. package/dist/cjs/collection/delivery-callback.js.map +1 -0
  108. package/dist/cjs/collection/email-layout.js +252 -0
  109. package/dist/cjs/collection/email-layout.js.map +1 -0
  110. package/dist/cjs/collection/engine.js +414 -0
  111. package/dist/cjs/collection/engine.js.map +1 -0
  112. package/dist/cjs/collection/format.js +76 -0
  113. package/dist/cjs/collection/format.js.map +1 -0
  114. package/dist/cjs/collection/payment-block.js +3 -0
  115. package/dist/cjs/collection/payment-block.js.map +1 -0
  116. package/dist/cjs/collection/policy.js +147 -0
  117. package/dist/cjs/collection/policy.js.map +1 -0
  118. package/dist/cjs/collection/repository.js +260 -0
  119. package/dist/cjs/collection/repository.js.map +1 -0
  120. package/dist/cjs/collection/subject.js +104 -0
  121. package/dist/cjs/collection/subject.js.map +1 -0
  122. package/dist/cjs/collection/template-catalog.js +165 -0
  123. package/dist/cjs/collection/template-catalog.js.map +1 -0
  124. package/dist/cjs/collection/template.js +78 -0
  125. package/dist/cjs/collection/template.js.map +1 -0
  126. package/dist/cjs/communication/adapters/email.js +132 -0
  127. package/dist/cjs/communication/adapters/email.js.map +1 -0
  128. package/dist/cjs/communication/adapters/sms.js +127 -0
  129. package/dist/cjs/communication/adapters/sms.js.map +1 -0
  130. package/dist/cjs/communication/adapters/whatsapp-language.js +39 -0
  131. package/dist/cjs/communication/adapters/whatsapp-language.js.map +1 -0
  132. package/dist/cjs/communication/adapters/whatsapp-templates.js +100 -0
  133. package/dist/cjs/communication/adapters/whatsapp-templates.js.map +1 -0
  134. package/dist/cjs/communication/adapters/whatsapp.js +213 -0
  135. package/dist/cjs/communication/adapters/whatsapp.js.map +1 -0
  136. package/dist/cjs/communication/audit.js +61 -0
  137. package/dist/cjs/communication/audit.js.map +1 -0
  138. package/dist/cjs/communication/capabilities.js +76 -0
  139. package/dist/cjs/communication/capabilities.js.map +1 -0
  140. package/dist/cjs/communication/channel.js +53 -0
  141. package/dist/cjs/communication/channel.js.map +1 -0
  142. package/dist/cjs/communication/claim.js +228 -0
  143. package/dist/cjs/communication/claim.js.map +1 -0
  144. package/dist/cjs/communication/consent.js +43 -0
  145. package/dist/cjs/communication/consent.js.map +1 -0
  146. package/dist/cjs/communication/context.js +45 -0
  147. package/dist/cjs/communication/context.js.map +1 -0
  148. package/dist/cjs/communication/credentials.js +121 -0
  149. package/dist/cjs/communication/credentials.js.map +1 -0
  150. package/dist/cjs/communication/dry-run-scenario.js +161 -0
  151. package/dist/cjs/communication/dry-run-scenario.js.map +1 -0
  152. package/dist/cjs/communication/dry-run.js +97 -0
  153. package/dist/cjs/communication/dry-run.js.map +1 -0
  154. package/dist/cjs/communication/engine.js +483 -0
  155. package/dist/cjs/communication/engine.js.map +1 -0
  156. package/dist/cjs/communication/graph.js +50 -0
  157. package/dist/cjs/communication/graph.js.map +1 -0
  158. package/dist/cjs/communication/idempotency.js +26 -0
  159. package/dist/cjs/communication/idempotency.js.map +1 -0
  160. package/dist/cjs/communication/identity.js +110 -0
  161. package/dist/cjs/communication/identity.js.map +1 -0
  162. package/dist/cjs/communication/index.js +135 -0
  163. package/dist/cjs/communication/index.js.map +1 -0
  164. package/dist/cjs/communication/onboarding.js +297 -0
  165. package/dist/cjs/communication/onboarding.js.map +1 -0
  166. package/dist/cjs/communication/policy.js +16 -0
  167. package/dist/cjs/communication/policy.js.map +1 -0
  168. package/dist/cjs/communication/routing.js +77 -0
  169. package/dist/cjs/communication/routing.js.map +1 -0
  170. package/dist/cjs/communication/sender-profile.js +128 -0
  171. package/dist/cjs/communication/sender-profile.js.map +1 -0
  172. package/dist/cjs/communication/status.js +86 -0
  173. package/dist/cjs/communication/status.js.map +1 -0
  174. package/dist/cjs/communication/stores/onboarding.js +135 -0
  175. package/dist/cjs/communication/stores/onboarding.js.map +1 -0
  176. package/dist/cjs/communication/stores/postgres.js +458 -0
  177. package/dist/cjs/communication/stores/postgres.js.map +1 -0
  178. package/dist/cjs/communication/stores/routing.js +334 -0
  179. package/dist/cjs/communication/stores/routing.js.map +1 -0
  180. package/dist/cjs/communication/stores/secrets.js +126 -0
  181. package/dist/cjs/communication/stores/secrets.js.map +1 -0
  182. package/dist/cjs/communication/template-provider.js +22 -0
  183. package/dist/cjs/communication/template-provider.js.map +1 -0
  184. package/dist/cjs/communication/template.js +63 -0
  185. package/dist/cjs/communication/template.js.map +1 -0
  186. package/dist/cjs/communication/webhook-subscription.js +258 -0
  187. package/dist/cjs/communication/webhook-subscription.js.map +1 -0
  188. package/dist/cjs/communication/webhook.js +292 -0
  189. package/dist/cjs/communication/webhook.js.map +1 -0
  190. package/dist/cjs/competence/repository.js +309 -0
  191. package/dist/cjs/competence/repository.js.map +1 -0
  192. package/dist/cjs/contacts/phone.js +192 -0
  193. package/dist/cjs/contacts/phone.js.map +1 -0
  194. package/dist/cjs/db/seed-catalog.js +48 -0
  195. package/dist/cjs/db/seed-catalog.js.map +1 -0
  196. package/dist/cjs/db/seed.js +15 -7
  197. package/dist/cjs/db/seed.js.map +1 -1
  198. package/dist/cjs/documents/repository.js +244 -0
  199. package/dist/cjs/documents/repository.js.map +1 -0
  200. package/dist/cjs/documents/requests.js +136 -0
  201. package/dist/cjs/documents/requests.js.map +1 -0
  202. package/dist/cjs/index.js +427 -48
  203. package/dist/cjs/index.js.map +1 -1
  204. package/dist/cjs/legal/company.js +36 -0
  205. package/dist/cjs/legal/company.js.map +1 -0
  206. package/dist/cjs/legal/documents.js +671 -0
  207. package/dist/cjs/legal/documents.js.map +1 -0
  208. package/dist/cjs/legal/index.js +15 -0
  209. package/dist/cjs/legal/index.js.map +1 -0
  210. package/dist/cjs/legal/types.js +34 -0
  211. package/dist/cjs/legal/types.js.map +1 -0
  212. package/dist/cjs/mail/auth-templates.js +29 -0
  213. package/dist/cjs/mail/auth-templates.js.map +1 -0
  214. package/dist/cjs/mail/dedup-store.js +12 -51
  215. package/dist/cjs/mail/dedup-store.js.map +1 -1
  216. package/dist/cjs/mail/index.js +16 -4
  217. package/dist/cjs/mail/index.js.map +1 -1
  218. package/dist/cjs/mail/provider.js +12 -247
  219. package/dist/cjs/mail/provider.js.map +1 -1
  220. package/dist/cjs/mail/resend.js +14 -18
  221. package/dist/cjs/mail/resend.js.map +1 -1
  222. package/dist/cjs/mail/sender-resolver.js +12 -11
  223. package/dist/cjs/mail/sender-resolver.js.map +1 -1
  224. package/dist/cjs/mail/template-renderer.js +11 -16
  225. package/dist/cjs/mail/template-renderer.js.map +1 -1
  226. package/dist/cjs/mail/transactional-outbound.js +117 -0
  227. package/dist/cjs/mail/transactional-outbound.js.map +1 -0
  228. package/dist/cjs/mail/types.js +8 -35
  229. package/dist/cjs/mail/types.js.map +1 -1
  230. package/dist/cjs/portal/provisioning.js +144 -0
  231. package/dist/cjs/portal/provisioning.js.map +1 -0
  232. package/dist/cjs/pricing-engine/canonical.js +42 -0
  233. package/dist/cjs/pricing-engine/canonical.js.map +1 -0
  234. package/dist/cjs/pricing-engine/errors.js +6 -1
  235. package/dist/cjs/pricing-engine/errors.js.map +1 -1
  236. package/dist/cjs/pricing-engine/index.js +12 -1
  237. package/dist/cjs/pricing-engine/index.js.map +1 -1
  238. package/dist/cjs/pricing-engine/pipeline.js +200 -26
  239. package/dist/cjs/pricing-engine/pipeline.js.map +1 -1
  240. package/dist/cjs/pricing-engine/shadow-adapter.js +79 -0
  241. package/dist/cjs/pricing-engine/shadow-adapter.js.map +1 -0
  242. package/dist/cjs/pricing-engine/shadow-diff.js +55 -0
  243. package/dist/cjs/pricing-engine/shadow-diff.js.map +1 -0
  244. package/dist/cjs/pricing-engine/shadow-facade.js +85 -0
  245. package/dist/cjs/pricing-engine/shadow-facade.js.map +1 -0
  246. package/dist/cjs/pricing-engine/shadow-legacy-types.js +19 -0
  247. package/dist/cjs/pricing-engine/shadow-legacy-types.js.map +1 -0
  248. package/dist/cjs/pricing-engine/shadow-metrics.js +34 -0
  249. package/dist/cjs/pricing-engine/shadow-metrics.js.map +1 -0
  250. package/dist/cjs/pricing-engine/shadow-normalizer.js +42 -0
  251. package/dist/cjs/pricing-engine/shadow-normalizer.js.map +1 -0
  252. package/dist/cjs/rbac/authorize.js +28 -0
  253. package/dist/cjs/rbac/authorize.js.map +1 -1
  254. package/dist/cjs/rbac/catalog.js +67 -1
  255. package/dist/cjs/rbac/catalog.js.map +1 -1
  256. package/dist/cjs/rbac/workload-provisioning.js +160 -0
  257. package/dist/cjs/rbac/workload-provisioning.js.map +1 -0
  258. package/dist/cjs/rbac/workload.js +191 -0
  259. package/dist/cjs/rbac/workload.js.map +1 -0
  260. package/dist/cjs/storage/checksum.js +15 -0
  261. package/dist/cjs/storage/checksum.js.map +1 -0
  262. package/dist/cjs/storage/key.js +72 -0
  263. package/dist/cjs/storage/key.js.map +1 -0
  264. package/dist/cjs/storage/local.js +100 -0
  265. package/dist/cjs/storage/local.js.map +1 -0
  266. package/dist/cjs/storage/r2.js +181 -0
  267. package/dist/cjs/storage/r2.js.map +1 -0
  268. package/dist/cjs/storage/registry.js +41 -0
  269. package/dist/cjs/storage/registry.js.map +1 -0
  270. package/dist/cjs/storage/types.js +50 -0
  271. package/dist/cjs/storage/types.js.map +1 -0
  272. package/dist/cjs/subscription-billing/provider/asaas.js +32 -7
  273. package/dist/cjs/subscription-billing/provider/asaas.js.map +1 -1
  274. package/dist/cjs/subscription-billing/provider/disabled.js +8 -0
  275. package/dist/cjs/subscription-billing/provider/disabled.js.map +1 -1
  276. package/dist/cjs/subscription-billing/provider/registry.js +17 -0
  277. package/dist/cjs/subscription-billing/provider/registry.js.map +1 -1
  278. package/dist/cjs/subscription-billing/service.js +57 -8
  279. package/dist/cjs/subscription-billing/service.js.map +1 -1
  280. package/dist/cjs/subscription-billing/types.js.map +1 -1
  281. package/dist/cjs/tenancy/provisioning.js +32 -8
  282. package/dist/cjs/tenancy/provisioning.js.map +1 -1
  283. package/dist/cjs/users/repository.js +119 -2
  284. package/dist/cjs/users/repository.js.map +1 -1
  285. package/dist/cjs/vault/repository.js +81 -0
  286. package/dist/cjs/vault/repository.js.map +1 -1
  287. package/dist/clients/repository.d.ts +42 -0
  288. package/dist/clients/repository.d.ts.map +1 -1
  289. package/dist/clients/repository.js +94 -21
  290. package/dist/clients/repository.js.map +1 -1
  291. package/dist/collection/branding.d.ts +72 -0
  292. package/dist/collection/branding.d.ts.map +1 -0
  293. package/dist/collection/branding.js +136 -0
  294. package/dist/collection/branding.js.map +1 -0
  295. package/dist/collection/channel-accounts.d.ts +57 -0
  296. package/dist/collection/channel-accounts.d.ts.map +1 -0
  297. package/dist/collection/channel-accounts.js +133 -0
  298. package/dist/collection/channel-accounts.js.map +1 -0
  299. package/dist/collection/channel.d.ts +24 -0
  300. package/dist/collection/channel.d.ts.map +1 -0
  301. package/dist/collection/channel.js +16 -0
  302. package/dist/collection/channel.js.map +1 -0
  303. package/dist/collection/communication-bridge.d.ts +66 -0
  304. package/dist/collection/communication-bridge.d.ts.map +1 -0
  305. package/dist/collection/communication-bridge.js +134 -0
  306. package/dist/collection/communication-bridge.js.map +1 -0
  307. package/dist/collection/communication-runtime.d.ts +95 -0
  308. package/dist/collection/communication-runtime.d.ts.map +1 -0
  309. package/dist/collection/communication-runtime.js +187 -0
  310. package/dist/collection/communication-runtime.js.map +1 -0
  311. package/dist/collection/consent-repository.d.ts +32 -0
  312. package/dist/collection/consent-repository.d.ts.map +1 -0
  313. package/dist/collection/consent-repository.js +79 -0
  314. package/dist/collection/consent-repository.js.map +1 -0
  315. package/dist/collection/copy.d.ts +50 -0
  316. package/dist/collection/copy.d.ts.map +1 -0
  317. package/dist/collection/copy.js +122 -0
  318. package/dist/collection/copy.js.map +1 -0
  319. package/dist/collection/delivery-callback.d.ts +49 -0
  320. package/dist/collection/delivery-callback.d.ts.map +1 -0
  321. package/dist/collection/delivery-callback.js +147 -0
  322. package/dist/collection/delivery-callback.js.map +1 -0
  323. package/dist/collection/email-layout.d.ts +45 -0
  324. package/dist/collection/email-layout.d.ts.map +1 -0
  325. package/dist/collection/email-layout.js +247 -0
  326. package/dist/collection/email-layout.js.map +1 -0
  327. package/dist/collection/engine.d.ts +177 -0
  328. package/dist/collection/engine.d.ts.map +1 -0
  329. package/dist/collection/engine.js +407 -0
  330. package/dist/collection/engine.js.map +1 -0
  331. package/dist/collection/format.d.ts +32 -0
  332. package/dist/collection/format.d.ts.map +1 -0
  333. package/dist/collection/format.js +70 -0
  334. package/dist/collection/format.js.map +1 -0
  335. package/dist/collection/payment-block.d.ts +24 -0
  336. package/dist/collection/payment-block.d.ts.map +1 -0
  337. package/dist/collection/payment-block.js +2 -0
  338. package/dist/collection/payment-block.js.map +1 -0
  339. package/dist/collection/policy.d.ts +53 -0
  340. package/dist/collection/policy.d.ts.map +1 -0
  341. package/dist/collection/policy.js +141 -0
  342. package/dist/collection/policy.js.map +1 -0
  343. package/dist/collection/repository.d.ts +129 -0
  344. package/dist/collection/repository.d.ts.map +1 -0
  345. package/dist/collection/repository.js +246 -0
  346. package/dist/collection/repository.js.map +1 -0
  347. package/dist/collection/subject.d.ts +66 -0
  348. package/dist/collection/subject.d.ts.map +1 -0
  349. package/dist/collection/subject.js +99 -0
  350. package/dist/collection/subject.js.map +1 -0
  351. package/dist/collection/template-catalog.d.ts +16 -0
  352. package/dist/collection/template-catalog.d.ts.map +1 -0
  353. package/dist/collection/template-catalog.js +162 -0
  354. package/dist/collection/template-catalog.js.map +1 -0
  355. package/dist/collection/template.d.ts +37 -0
  356. package/dist/collection/template.d.ts.map +1 -0
  357. package/dist/collection/template.js +73 -0
  358. package/dist/collection/template.js.map +1 -0
  359. package/dist/communication/adapters/email.d.ts +28 -0
  360. package/dist/communication/adapters/email.d.ts.map +1 -0
  361. package/dist/communication/adapters/email.js +129 -0
  362. package/dist/communication/adapters/email.js.map +1 -0
  363. package/dist/communication/adapters/sms.d.ts +95 -0
  364. package/dist/communication/adapters/sms.d.ts.map +1 -0
  365. package/dist/communication/adapters/sms.js +121 -0
  366. package/dist/communication/adapters/sms.js.map +1 -0
  367. package/dist/communication/adapters/whatsapp-language.d.ts +34 -0
  368. package/dist/communication/adapters/whatsapp-language.d.ts.map +1 -0
  369. package/dist/communication/adapters/whatsapp-language.js +36 -0
  370. package/dist/communication/adapters/whatsapp-language.js.map +1 -0
  371. package/dist/communication/adapters/whatsapp-templates.d.ts +18 -0
  372. package/dist/communication/adapters/whatsapp-templates.d.ts.map +1 -0
  373. package/dist/communication/adapters/whatsapp-templates.js +97 -0
  374. package/dist/communication/adapters/whatsapp-templates.js.map +1 -0
  375. package/dist/communication/adapters/whatsapp.d.ts +29 -0
  376. package/dist/communication/adapters/whatsapp.d.ts.map +1 -0
  377. package/dist/communication/adapters/whatsapp.js +210 -0
  378. package/dist/communication/adapters/whatsapp.js.map +1 -0
  379. package/dist/communication/audit.d.ts +105 -0
  380. package/dist/communication/audit.d.ts.map +1 -0
  381. package/dist/communication/audit.js +56 -0
  382. package/dist/communication/audit.js.map +1 -0
  383. package/dist/communication/capabilities.d.ts +88 -0
  384. package/dist/communication/capabilities.d.ts.map +1 -0
  385. package/dist/communication/capabilities.js +72 -0
  386. package/dist/communication/capabilities.js.map +1 -0
  387. package/dist/communication/channel.d.ts +125 -0
  388. package/dist/communication/channel.d.ts.map +1 -0
  389. package/dist/communication/channel.js +47 -0
  390. package/dist/communication/channel.js.map +1 -0
  391. package/dist/communication/claim.d.ts +368 -0
  392. package/dist/communication/claim.d.ts.map +1 -0
  393. package/dist/communication/claim.js +224 -0
  394. package/dist/communication/claim.js.map +1 -0
  395. package/dist/communication/consent.d.ts +65 -0
  396. package/dist/communication/consent.d.ts.map +1 -0
  397. package/dist/communication/consent.js +40 -0
  398. package/dist/communication/consent.js.map +1 -0
  399. package/dist/communication/context.d.ts +48 -0
  400. package/dist/communication/context.d.ts.map +1 -0
  401. package/dist/communication/context.js +41 -0
  402. package/dist/communication/context.js.map +1 -0
  403. package/dist/communication/credentials.d.ts +74 -0
  404. package/dist/communication/credentials.d.ts.map +1 -0
  405. package/dist/communication/credentials.js +115 -0
  406. package/dist/communication/credentials.js.map +1 -0
  407. package/dist/communication/dry-run-scenario.d.ts +37 -0
  408. package/dist/communication/dry-run-scenario.d.ts.map +1 -0
  409. package/dist/communication/dry-run-scenario.js +158 -0
  410. package/dist/communication/dry-run-scenario.js.map +1 -0
  411. package/dist/communication/dry-run.d.ts +40 -0
  412. package/dist/communication/dry-run.d.ts.map +1 -0
  413. package/dist/communication/dry-run.js +92 -0
  414. package/dist/communication/dry-run.js.map +1 -0
  415. package/dist/communication/engine.d.ts +153 -0
  416. package/dist/communication/engine.d.ts.map +1 -0
  417. package/dist/communication/engine.js +480 -0
  418. package/dist/communication/engine.js.map +1 -0
  419. package/dist/communication/graph.d.ts +38 -0
  420. package/dist/communication/graph.d.ts.map +1 -0
  421. package/dist/communication/graph.js +45 -0
  422. package/dist/communication/graph.js.map +1 -0
  423. package/dist/communication/idempotency.d.ts +33 -0
  424. package/dist/communication/idempotency.d.ts.map +1 -0
  425. package/dist/communication/idempotency.js +23 -0
  426. package/dist/communication/idempotency.js.map +1 -0
  427. package/dist/communication/identity.d.ts +127 -0
  428. package/dist/communication/identity.d.ts.map +1 -0
  429. package/dist/communication/identity.js +105 -0
  430. package/dist/communication/identity.js.map +1 -0
  431. package/dist/communication/index.d.ts +66 -0
  432. package/dist/communication/index.d.ts.map +1 -0
  433. package/dist/communication/index.js +42 -0
  434. package/dist/communication/index.js.map +1 -0
  435. package/dist/communication/onboarding.d.ts +223 -0
  436. package/dist/communication/onboarding.d.ts.map +1 -0
  437. package/dist/communication/onboarding.js +287 -0
  438. package/dist/communication/onboarding.js.map +1 -0
  439. package/dist/communication/policy.d.ts +99 -0
  440. package/dist/communication/policy.d.ts.map +1 -0
  441. package/dist/communication/policy.js +13 -0
  442. package/dist/communication/policy.js.map +1 -0
  443. package/dist/communication/routing.d.ts +99 -0
  444. package/dist/communication/routing.d.ts.map +1 -0
  445. package/dist/communication/routing.js +73 -0
  446. package/dist/communication/routing.js.map +1 -0
  447. package/dist/communication/sender-profile.d.ts +100 -0
  448. package/dist/communication/sender-profile.d.ts.map +1 -0
  449. package/dist/communication/sender-profile.js +123 -0
  450. package/dist/communication/sender-profile.js.map +1 -0
  451. package/dist/communication/status.d.ts +48 -0
  452. package/dist/communication/status.d.ts.map +1 -0
  453. package/dist/communication/status.js +79 -0
  454. package/dist/communication/status.js.map +1 -0
  455. package/dist/communication/stores/onboarding.d.ts +88 -0
  456. package/dist/communication/stores/onboarding.d.ts.map +1 -0
  457. package/dist/communication/stores/onboarding.js +127 -0
  458. package/dist/communication/stores/onboarding.js.map +1 -0
  459. package/dist/communication/stores/postgres.d.ts +81 -0
  460. package/dist/communication/stores/postgres.d.ts.map +1 -0
  461. package/dist/communication/stores/postgres.js +453 -0
  462. package/dist/communication/stores/postgres.js.map +1 -0
  463. package/dist/communication/stores/routing.d.ts +169 -0
  464. package/dist/communication/stores/routing.d.ts.map +1 -0
  465. package/dist/communication/stores/routing.js +324 -0
  466. package/dist/communication/stores/routing.js.map +1 -0
  467. package/dist/communication/stores/secrets.d.ts +89 -0
  468. package/dist/communication/stores/secrets.d.ts.map +1 -0
  469. package/dist/communication/stores/secrets.js +122 -0
  470. package/dist/communication/stores/secrets.js.map +1 -0
  471. package/dist/communication/template-provider.d.ts +85 -0
  472. package/dist/communication/template-provider.d.ts.map +1 -0
  473. package/dist/communication/template-provider.js +21 -0
  474. package/dist/communication/template-provider.js.map +1 -0
  475. package/dist/communication/template.d.ts +87 -0
  476. package/dist/communication/template.d.ts.map +1 -0
  477. package/dist/communication/template.js +59 -0
  478. package/dist/communication/template.js.map +1 -0
  479. package/dist/communication/webhook-subscription.d.ts +156 -0
  480. package/dist/communication/webhook-subscription.d.ts.map +1 -0
  481. package/dist/communication/webhook-subscription.js +252 -0
  482. package/dist/communication/webhook-subscription.js.map +1 -0
  483. package/dist/communication/webhook.d.ts +121 -0
  484. package/dist/communication/webhook.d.ts.map +1 -0
  485. package/dist/communication/webhook.js +283 -0
  486. package/dist/communication/webhook.js.map +1 -0
  487. package/dist/competence/repository.d.ts +147 -0
  488. package/dist/competence/repository.d.ts.map +1 -0
  489. package/dist/competence/repository.js +294 -0
  490. package/dist/competence/repository.js.map +1 -0
  491. package/dist/contacts/phone.d.ts +70 -0
  492. package/dist/contacts/phone.d.ts.map +1 -0
  493. package/dist/contacts/phone.js +186 -0
  494. package/dist/contacts/phone.js.map +1 -0
  495. package/dist/db/migrate.js +17 -11
  496. package/dist/db/migrate.js.map +1 -1
  497. package/dist/db/seed-catalog.d.ts +18 -0
  498. package/dist/db/seed-catalog.d.ts.map +1 -0
  499. package/dist/db/seed-catalog.js +45 -0
  500. package/dist/db/seed-catalog.js.map +1 -0
  501. package/dist/db/seed.js +16 -8
  502. package/dist/db/seed.js.map +1 -1
  503. package/dist/documents/repository.d.ts +97 -0
  504. package/dist/documents/repository.d.ts.map +1 -0
  505. package/dist/documents/repository.js +236 -0
  506. package/dist/documents/repository.js.map +1 -0
  507. package/dist/documents/requests.d.ts +73 -0
  508. package/dist/documents/requests.d.ts.map +1 -0
  509. package/dist/documents/requests.js +127 -0
  510. package/dist/documents/requests.js.map +1 -0
  511. package/dist/index.d.ts +113 -13
  512. package/dist/index.d.ts.map +1 -1
  513. package/dist/index.js +104 -8
  514. package/dist/index.js.map +1 -1
  515. package/dist/legal/company.d.ts +32 -0
  516. package/dist/legal/company.d.ts.map +1 -0
  517. package/dist/legal/company.js +33 -0
  518. package/dist/legal/company.js.map +1 -0
  519. package/dist/legal/documents.d.ts +30 -0
  520. package/dist/legal/documents.d.ts.map +1 -0
  521. package/dist/legal/documents.js +666 -0
  522. package/dist/legal/documents.js.map +1 -0
  523. package/dist/legal/index.d.ts +5 -0
  524. package/dist/legal/index.d.ts.map +1 -0
  525. package/dist/legal/index.js +4 -0
  526. package/dist/legal/index.js.map +1 -0
  527. package/dist/legal/types.d.ts +145 -0
  528. package/dist/legal/types.d.ts.map +1 -0
  529. package/dist/legal/types.js +31 -0
  530. package/dist/legal/types.js.map +1 -0
  531. package/dist/mail/auth-templates.d.ts +15 -0
  532. package/dist/mail/auth-templates.d.ts.map +1 -0
  533. package/dist/mail/auth-templates.js +26 -0
  534. package/dist/mail/auth-templates.js.map +1 -0
  535. package/dist/mail/dedup-store.d.ts +1 -24
  536. package/dist/mail/dedup-store.d.ts.map +1 -1
  537. package/dist/mail/dedup-store.js +9 -48
  538. package/dist/mail/dedup-store.js.map +1 -1
  539. package/dist/mail/index.d.ts +2 -1
  540. package/dist/mail/index.d.ts.map +1 -1
  541. package/dist/mail/index.js +13 -2
  542. package/dist/mail/index.js.map +1 -1
  543. package/dist/mail/provider.d.ts +2 -30
  544. package/dist/mail/provider.d.ts.map +1 -1
  545. package/dist/mail/provider.js +10 -246
  546. package/dist/mail/provider.js.map +1 -1
  547. package/dist/mail/resend.d.ts +2 -12
  548. package/dist/mail/resend.d.ts.map +1 -1
  549. package/dist/mail/resend.js +11 -17
  550. package/dist/mail/resend.js.map +1 -1
  551. package/dist/mail/sender-resolver.d.ts +1 -7
  552. package/dist/mail/sender-resolver.d.ts.map +1 -1
  553. package/dist/mail/sender-resolver.js +11 -10
  554. package/dist/mail/sender-resolver.js.map +1 -1
  555. package/dist/mail/template-renderer.d.ts +1 -9
  556. package/dist/mail/template-renderer.d.ts.map +1 -1
  557. package/dist/mail/template-renderer.js +10 -15
  558. package/dist/mail/template-renderer.js.map +1 -1
  559. package/dist/mail/transactional-outbound.d.ts +115 -0
  560. package/dist/mail/transactional-outbound.d.ts.map +1 -0
  561. package/dist/mail/transactional-outbound.js +113 -0
  562. package/dist/mail/transactional-outbound.js.map +1 -0
  563. package/dist/mail/types.d.ts +2 -142
  564. package/dist/mail/types.d.ts.map +1 -1
  565. package/dist/mail/types.js +1 -33
  566. package/dist/mail/types.js.map +1 -1
  567. package/dist/portal/provisioning.d.ts +58 -0
  568. package/dist/portal/provisioning.d.ts.map +1 -0
  569. package/dist/portal/provisioning.js +139 -0
  570. package/dist/portal/provisioning.js.map +1 -0
  571. package/dist/pricing-engine/canonical.d.ts +14 -0
  572. package/dist/pricing-engine/canonical.d.ts.map +1 -0
  573. package/dist/pricing-engine/canonical.js +39 -0
  574. package/dist/pricing-engine/canonical.js.map +1 -0
  575. package/dist/pricing-engine/errors.d.ts.map +1 -1
  576. package/dist/pricing-engine/errors.js +6 -1
  577. package/dist/pricing-engine/errors.js.map +1 -1
  578. package/dist/pricing-engine/index.d.ts +12 -2
  579. package/dist/pricing-engine/index.d.ts.map +1 -1
  580. package/dist/pricing-engine/index.js +6 -1
  581. package/dist/pricing-engine/index.js.map +1 -1
  582. package/dist/pricing-engine/pipeline.d.ts.map +1 -1
  583. package/dist/pricing-engine/pipeline.js +202 -28
  584. package/dist/pricing-engine/pipeline.js.map +1 -1
  585. package/dist/pricing-engine/shadow-adapter.d.ts +37 -0
  586. package/dist/pricing-engine/shadow-adapter.d.ts.map +1 -0
  587. package/dist/pricing-engine/shadow-adapter.js +75 -0
  588. package/dist/pricing-engine/shadow-adapter.js.map +1 -0
  589. package/dist/pricing-engine/shadow-diff.d.ts +26 -0
  590. package/dist/pricing-engine/shadow-diff.d.ts.map +1 -0
  591. package/dist/pricing-engine/shadow-diff.js +52 -0
  592. package/dist/pricing-engine/shadow-diff.js.map +1 -0
  593. package/dist/pricing-engine/shadow-facade.d.ts +42 -0
  594. package/dist/pricing-engine/shadow-facade.d.ts.map +1 -0
  595. package/dist/pricing-engine/shadow-facade.js +82 -0
  596. package/dist/pricing-engine/shadow-facade.js.map +1 -0
  597. package/dist/pricing-engine/shadow-legacy-types.d.ts +64 -0
  598. package/dist/pricing-engine/shadow-legacy-types.d.ts.map +1 -0
  599. package/dist/pricing-engine/shadow-legacy-types.js +18 -0
  600. package/dist/pricing-engine/shadow-legacy-types.js.map +1 -0
  601. package/dist/pricing-engine/shadow-metrics.d.ts +33 -0
  602. package/dist/pricing-engine/shadow-metrics.d.ts.map +1 -0
  603. package/dist/pricing-engine/shadow-metrics.js +31 -0
  604. package/dist/pricing-engine/shadow-metrics.js.map +1 -0
  605. package/dist/pricing-engine/shadow-normalizer.d.ts +17 -0
  606. package/dist/pricing-engine/shadow-normalizer.d.ts.map +1 -0
  607. package/dist/pricing-engine/shadow-normalizer.js +39 -0
  608. package/dist/pricing-engine/shadow-normalizer.js.map +1 -0
  609. package/dist/pricing-engine/types.d.ts +2 -0
  610. package/dist/pricing-engine/types.d.ts.map +1 -1
  611. package/dist/rbac/authorize.d.ts +12 -0
  612. package/dist/rbac/authorize.d.ts.map +1 -1
  613. package/dist/rbac/authorize.js +27 -0
  614. package/dist/rbac/authorize.js.map +1 -1
  615. package/dist/rbac/catalog.d.ts.map +1 -1
  616. package/dist/rbac/catalog.js +67 -1
  617. package/dist/rbac/catalog.js.map +1 -1
  618. package/dist/rbac/workload-provisioning.d.ts +66 -0
  619. package/dist/rbac/workload-provisioning.d.ts.map +1 -0
  620. package/dist/rbac/workload-provisioning.js +153 -0
  621. package/dist/rbac/workload-provisioning.js.map +1 -0
  622. package/dist/rbac/workload.d.ts +124 -0
  623. package/dist/rbac/workload.d.ts.map +1 -0
  624. package/dist/rbac/workload.js +184 -0
  625. package/dist/rbac/workload.js.map +1 -0
  626. package/dist/storage/checksum.d.ts +9 -0
  627. package/dist/storage/checksum.d.ts.map +1 -0
  628. package/dist/storage/checksum.js +12 -0
  629. package/dist/storage/checksum.js.map +1 -0
  630. package/dist/storage/key.d.ts +37 -0
  631. package/dist/storage/key.d.ts.map +1 -0
  632. package/dist/storage/key.js +67 -0
  633. package/dist/storage/key.js.map +1 -0
  634. package/dist/storage/local.d.ts +40 -0
  635. package/dist/storage/local.d.ts.map +1 -0
  636. package/dist/storage/local.js +96 -0
  637. package/dist/storage/local.js.map +1 -0
  638. package/dist/storage/r2.d.ts +43 -0
  639. package/dist/storage/r2.d.ts.map +1 -0
  640. package/dist/storage/r2.js +177 -0
  641. package/dist/storage/r2.js.map +1 -0
  642. package/dist/storage/registry.d.ts +23 -0
  643. package/dist/storage/registry.d.ts.map +1 -0
  644. package/dist/storage/registry.js +37 -0
  645. package/dist/storage/registry.js.map +1 -0
  646. package/dist/storage/types.d.ts +67 -0
  647. package/dist/storage/types.d.ts.map +1 -0
  648. package/dist/storage/types.js +45 -0
  649. package/dist/storage/types.js.map +1 -0
  650. package/dist/subscription-billing/provider/asaas.d.ts +14 -0
  651. package/dist/subscription-billing/provider/asaas.d.ts.map +1 -1
  652. package/dist/subscription-billing/provider/asaas.js +32 -7
  653. package/dist/subscription-billing/provider/asaas.js.map +1 -1
  654. package/dist/subscription-billing/provider/disabled.d.ts +9 -0
  655. package/dist/subscription-billing/provider/disabled.d.ts.map +1 -1
  656. package/dist/subscription-billing/provider/disabled.js +8 -0
  657. package/dist/subscription-billing/provider/disabled.js.map +1 -1
  658. package/dist/subscription-billing/provider/registry.d.ts +10 -0
  659. package/dist/subscription-billing/provider/registry.d.ts.map +1 -1
  660. package/dist/subscription-billing/provider/registry.js +17 -0
  661. package/dist/subscription-billing/provider/registry.js.map +1 -1
  662. package/dist/subscription-billing/service.d.ts +17 -1
  663. package/dist/subscription-billing/service.d.ts.map +1 -1
  664. package/dist/subscription-billing/service.js +57 -8
  665. package/dist/subscription-billing/service.js.map +1 -1
  666. package/dist/subscription-billing/types.d.ts +13 -0
  667. package/dist/subscription-billing/types.d.ts.map +1 -1
  668. package/dist/subscription-billing/types.js.map +1 -1
  669. package/dist/tenancy/provisioning.d.ts.map +1 -1
  670. package/dist/tenancy/provisioning.js +32 -8
  671. package/dist/tenancy/provisioning.js.map +1 -1
  672. package/dist/users/repository.d.ts +38 -0
  673. package/dist/users/repository.d.ts.map +1 -1
  674. package/dist/users/repository.js +118 -3
  675. package/dist/users/repository.js.map +1 -1
  676. package/dist/vault/repository.d.ts +67 -0
  677. package/dist/vault/repository.d.ts.map +1 -1
  678. package/dist/vault/repository.js +78 -0
  679. package/dist/vault/repository.js.map +1 -1
  680. package/package.json +19 -4
  681. package/src/db/migrations/0023_user_invite_activation.sql +15 -0
  682. package/src/db/migrations/0024_set_user_password_function.sql +32 -0
  683. package/src/db/migrations/0025_revoke_user_session_function.sql +28 -0
  684. package/src/db/migrations/0026_documents_and_competence.sql +353 -0
  685. package/src/db/migrations/0027_receivable_client_isolation.sql +58 -0
  686. package/src/db/migrations/0028_collection_engine.sql +94 -0
  687. package/src/db/migrations/0029_payment_rail.sql +107 -0
  688. package/src/db/migrations/0030_provider_account_uniqueness.sql +22 -0
  689. package/src/db/migrations/0031_provider_account_environment_scope.sql +21 -0
  690. package/src/db/migrations/0032_settlement_reversal.sql +76 -0
  691. package/src/db/migrations/0033_receivable_idempotency.sql +28 -0
  692. package/src/db/migrations/0034_payment_customer_reconcile.sql +30 -0
  693. package/src/db/migrations/0035_payment_account_environments.sql +61 -0
  694. package/src/db/migrations/0036_primary_backfill_under_force_rls.sql +41 -0
  695. package/src/db/migrations/0037_receivable_generation_source.sql +29 -0
  696. package/src/db/migrations/0038_notification_channels.sql +175 -0
  697. package/src/db/migrations/0039_communication_dispatch_claim.sql +193 -0
  698. package/src/db/migrations/0040_communication_unknown_outcome.sql +99 -0
  699. package/src/db/migrations/0041_channel_binding_routing.sql +146 -0
  700. package/src/db/migrations/0042_channel_route_read_isolation.sql +165 -0
  701. package/src/db/migrations/0043_workload_identity.sql +105 -0
  702. package/src/db/migrations/0044_channel_onboarding_session.sql +96 -0
  703. package/dist/cjs/mail/resend-client.js +0 -103
  704. package/dist/cjs/mail/resend-client.js.map +0 -1
  705. package/dist/mail/resend-client.d.ts +0 -16
  706. package/dist/mail/resend-client.d.ts.map +0 -1
  707. package/dist/mail/resend-client.js +0 -100
  708. package/dist/mail/resend-client.js.map +0 -1
@@ -0,0 +1,671 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LEGAL_ORDER = exports.LEGAL_VERSION = exports.LEGAL_EFFECTIVE_DATE = exports.LEGAL_REVIEW_STATUS = void 0;
4
+ exports.buildLegalDocuments = buildLegalDocuments;
5
+ exports.buildLegalDocument = buildLegalDocument;
6
+ /**
7
+ * Estado da revisão jurídica. Enquanto for `pending`, as páginas exibem o aviso.
8
+ * Trocar para `reviewed` é decisão do titular, não de quem escreve código.
9
+ */
10
+ exports.LEGAL_REVIEW_STATUS = 'pending';
11
+ /** Vigência e versão de toda a base. Um documento alterado sobe o conjunto. */
12
+ exports.LEGAL_EFFECTIVE_DATE = '2026-08-01';
13
+ exports.LEGAL_VERSION = '1.1.0';
14
+ function companyAddress(p) {
15
+ const a = p.company.address;
16
+ return [
17
+ `${a.street}, nº ${a.number}`,
18
+ a.complement,
19
+ a.district,
20
+ `${a.city} - ${a.state}`,
21
+ `CEP ${a.postalCode}`,
22
+ a.country,
23
+ ]
24
+ .filter(Boolean)
25
+ .join(', ');
26
+ }
27
+ function doc(slug, title, description, summary, sections) {
28
+ return {
29
+ slug,
30
+ title,
31
+ description,
32
+ summary,
33
+ sections,
34
+ effectiveDate: exports.LEGAL_EFFECTIVE_DATE,
35
+ version: exports.LEGAL_VERSION,
36
+ };
37
+ }
38
+ // ── 1. Política de Privacidade ──────────────────────────────────────────────
39
+ /**
40
+ * Seção dos canais de mensageria operados em nome do cliente.
41
+ *
42
+ * Devolve lista VAZIA quando o produto não declara nenhum — e é por isso que a
43
+ * política da Dental e a do Connect não mudam ao acrescentar WhatsApp ao Office.
44
+ * Uma seção que aparecesse sempre, dizendo "não operamos canais", seria texto
45
+ * que o titular tem de ler para descobrir que não se aplica a ele.
46
+ *
47
+ * O texto descreve o MECANISMO real: quem possui a conta, como a autorização é
48
+ * dada, o que trafega e como o destinatário interrompe. Nada aqui é promessa
49
+ * jurídica nova — as bases legais e os direitos são os já declarados acima.
50
+ */
51
+ function messagingChannelSections(p) {
52
+ const channels = p.messagingChannels ?? [];
53
+ if (channels.length === 0)
54
+ return [];
55
+ return channels.map((c) => ({
56
+ heading: `Comunicação por ${c.channel}`,
57
+ body: [
58
+ `A conta de ${c.channel} usada para falar com seus clientes é SUA, mantida na plataforma de ${c.provider}${c.region ? ` (tratamento em ${c.region})` : ''}. ${c.authorization}`,
59
+ `Nós operamos essa conta em seu nome, apenas para as comunicações que o serviço executa. Não usamos ${c.channel} para publicidade e não enviamos nada em nome de um escritório para os clientes de outro.`,
60
+ ],
61
+ bullets: [
62
+ ...c.dataHandled.map((d) => `Tratamos: ${d}`),
63
+ `Para interromper: ${c.optOut}`,
64
+ `A autorização pode ser revogada a qualquer momento por você, na sua conta de ${c.provider} ou pelo canal de privacidade. Revogada, o canal para de funcionar imediatamente.`,
65
+ ],
66
+ }));
67
+ }
68
+ function privacidade(p) {
69
+ const company = p.company;
70
+ return doc('privacidade', 'Política de Privacidade', `Como o ${p.productName} coleta, usa, compartilha e protege dados pessoais, conforme a LGPD.`, `Coletamos o mínimo necessário para operar o ${p.productName}, não vendemos dados a ninguém, e você pode pedir acesso ou exclusão a qualquer momento.`, [
71
+ {
72
+ heading: 'Quem trata seus dados',
73
+ body: [
74
+ `O controlador dos dados pessoais tratados no ${p.productName} é ${company.legalName}, nome fantasia ${company.tradeName}, inscrita no CNPJ sob o nº ${company.taxId}, com endereço em ${companyAddress(p)}.`,
75
+ `Para qualquer assunto de privacidade — dúvidas, solicitações ou reclamações — o canal é ${company.privacyEmail}. As solicitações são respondidas nos prazos previstos na legislação aplicável.`,
76
+ ],
77
+ },
78
+ {
79
+ heading: 'Quais dados coletamos',
80
+ body: [
81
+ 'Coletamos apenas o que o serviço precisa para funcionar. Não pedimos dado sensível que não usamos.',
82
+ ],
83
+ bullets: p.personalDataCollected,
84
+ },
85
+ {
86
+ heading: 'Para que usamos',
87
+ body: [
88
+ `A finalidade do tratamento é ${p.purpose}`,
89
+ 'Em concreto, isso significa: criar e manter sua conta, executar as funções que você aciona, cobrar pelo plano contratado, enviar comunicações operacionais do serviço, prevenir fraude e abuso, e cumprir obrigações legais.',
90
+ 'Não usamos seus dados para treinar modelos de inteligência artificial de terceiros nem para publicidade comportamental.',
91
+ ],
92
+ },
93
+ {
94
+ heading: 'Com que base legal',
95
+ bullets: [
96
+ 'Execução de contrato (art. 7º, V da LGPD) — para tudo que é necessário para entregar o serviço que você contratou.',
97
+ 'Cumprimento de obrigação legal (art. 7º, II) — para dados fiscais e registros que a lei nos obriga a guardar.',
98
+ 'Legítimo interesse (art. 7º, IX) — para segurança, prevenção a fraude e melhoria do serviço, sempre ponderado com seus direitos.',
99
+ 'Consentimento (art. 7º, I) — para cookies não essenciais e comunicações de marketing, que você pode revogar quando quiser.',
100
+ ],
101
+ },
102
+ {
103
+ heading: 'Com quem compartilhamos',
104
+ body: [
105
+ 'Não vendemos dados pessoais. Não os cedemos para terceiros usarem por conta própria.',
106
+ 'Compartilhamos apenas com operadores que executam parte do serviço em nosso nome, obrigados contratualmente a tratar os dados só conforme nossas instruções:',
107
+ ],
108
+ bullets: p.subprocessors.length > 0
109
+ ? p.subprocessors.map((s) => `${s.name} — ${s.purpose}${s.region ? ` (tratamento em ${s.region})` : ''}.`)
110
+ : ['Nenhum operador terceiro no momento.'],
111
+ },
112
+ ...messagingChannelSections(p),
113
+ {
114
+ heading: 'Transferência internacional',
115
+ body: [
116
+ 'Alguns operadores acima podem processar dados fora do Brasil. Quando houver transferência internacional, ela deve estar amparada por uma hipótese legal e por um dos mecanismos válidos do art. 33 da LGPD e da Resolução CD/ANPD nº 19/2024, limitada ao mínimo necessário. Você pode solicitar pelo canal de privacidade informações sobre o país de destino e o mecanismo aplicável.',
117
+ ],
118
+ },
119
+ {
120
+ heading: 'Por quanto tempo guardamos',
121
+ bullets: [
122
+ 'Dados de conta: enquanto a conta existir.',
123
+ 'Dados operacionais do serviço: enquanto a conta existir e, após o encerramento, somente pelo período necessário ao cumprimento de obrigação legal, exercício regular de direitos ou solicitação de portabilidade, quando aplicável.',
124
+ 'Registros fiscais e de cobrança: 5 anos, por exigência legal.',
125
+ 'Registros de acesso a aplicação: 6 meses, conforme o Marco Civil da Internet.',
126
+ 'Depois desses prazos, os dados são eliminados ou anonimizados de forma irreversível.',
127
+ ],
128
+ },
129
+ {
130
+ heading: 'Seus direitos',
131
+ body: [
132
+ 'A LGPD garante a você, titular dos dados, os direitos abaixo. Todos são exercidos gratuitamente pelo canal de privacidade.',
133
+ ],
134
+ bullets: [
135
+ 'Confirmar que tratamos seus dados e acessar o que temos.',
136
+ 'Corrigir dado incompleto, inexato ou desatualizado.',
137
+ 'Pedir anonimização, bloqueio ou eliminação de dado desnecessário ou tratado em desconformidade.',
138
+ 'Pedir portabilidade a outro fornecedor.',
139
+ 'Pedir eliminação dos dados tratados com base no seu consentimento.',
140
+ 'Saber com quem compartilhamos seus dados.',
141
+ 'Revogar o consentimento a qualquer tempo.',
142
+ 'Opor-se a tratamento feito com base em legítimo interesse.',
143
+ 'Solicitar revisão de decisão tomada unicamente com base em tratamento automatizado que afete seus interesses.',
144
+ ],
145
+ },
146
+ {
147
+ heading: 'Segurança',
148
+ body: [
149
+ 'Adotamos medidas técnicas e administrativas para proteger os dados: tráfego cifrado, senhas armazenadas com hash, isolamento entre contas de clientes, controle de acesso por papel e registro de auditoria das ações sensíveis.',
150
+ 'Nenhum sistema é imune. Se ocorrer incidente de segurança com risco relevante a você, comunicaremos você e a Autoridade Nacional de Proteção de Dados, conforme o art. 48 da LGPD.',
151
+ ],
152
+ },
153
+ {
154
+ heading: 'Menores de idade',
155
+ body: [
156
+ `O ${p.productName} é um serviço profissional, destinado a ${p.audience}. Não é dirigido a menores de 18 anos e não coletamos intencionalmente dados de crianças e adolescentes.`,
157
+ ],
158
+ },
159
+ {
160
+ heading: 'Mudanças nesta política',
161
+ body: [
162
+ 'Se alterarmos esta política de forma relevante, avisaremos pelos canais do serviço antes de a mudança valer. A data de vigência e a versão no topo desta página indicam qual texto está em vigor.',
163
+ ],
164
+ },
165
+ ]);
166
+ }
167
+ // ── 2. Termos de Uso ────────────────────────────────────────────────────────
168
+ function termos(p) {
169
+ return doc('termos', 'Termos de Uso', `Regras de uso do ${p.productName}: conta, responsabilidades, suspensão e cancelamento.`, `Você contrata o direito de usar o ${p.productName} enquanto a assinatura estiver vigente e as regras forem respeitadas. Pode cancelar quando quiser e solicitar seus dados pelos canais oficiais.`, [
170
+ {
171
+ heading: 'O que este documento é',
172
+ body: [
173
+ `Este é o contrato entre você (ou a empresa que você representa) e ${p.company.legalName} para o uso do ${p.productName}, disponível em ${p.domain}.`,
174
+ 'Ao criar uma conta, você declara que leu, entendeu e concorda com estas regras. Se você aceita em nome de uma empresa, declara ter poderes para isso.',
175
+ ],
176
+ },
177
+ {
178
+ heading: 'A conta',
179
+ bullets: [
180
+ 'Você é responsável pela veracidade dos dados que informa no cadastro.',
181
+ 'Você é responsável por manter sua senha em sigilo e por tudo que acontecer na sua conta.',
182
+ 'Cada pessoa deve ter a própria conta. Compartilhar credenciais compromete a trilha de auditoria e é motivo de suspensão.',
183
+ 'Avise imediatamente pelo canal de contato se suspeitar de acesso indevido.',
184
+ ],
185
+ },
186
+ {
187
+ heading: 'O que você pode fazer',
188
+ body: [
189
+ `Usar o ${p.productName} para ${p.purpose} dentro do plano contratado, dos limites dele e da lei.`,
190
+ ],
191
+ },
192
+ {
193
+ heading: 'O que você não pode fazer',
194
+ bullets: [
195
+ 'Usar o serviço para atividade ilícita ou que viole direito de terceiro.',
196
+ 'Tentar burlar limites do plano, controles de acesso ou isolamento entre contas.',
197
+ 'Acessar dados de outro cliente, ou tentar.',
198
+ 'Fazer engenharia reversa, descompilar ou extrair o código-fonte.',
199
+ 'Revender, sublicenciar ou disponibilizar o serviço a terceiros como se fosse seu.',
200
+ 'Sobrecarregar a infraestrutura de forma automatizada ou abusiva.',
201
+ 'Carregar conteúdo com malware ou que viole direito autoral alheio.',
202
+ ],
203
+ },
204
+ {
205
+ heading: 'Seus dados continuam seus',
206
+ body: [
207
+ 'O conteúdo que você insere no serviço é seu. Não reivindicamos propriedade sobre ele.',
208
+ 'Você nos concede apenas a licença necessária para hospedar, processar e exibir esse conteúdo — o mínimo para o serviço funcionar.',
209
+ `Ao encerrar a conta, você pode solicitar uma cópia dos dados exportáveis pelo canal ${p.contactEmail}. Depois dos prazos e critérios de retenção da Política de Privacidade, os dados são eliminados ou anonimizados, ressalvadas as hipóteses legais de conservação.`,
210
+ ],
211
+ },
212
+ {
213
+ heading: 'Disponibilidade',
214
+ body: [
215
+ 'Trabalhamos para manter o serviço no ar, mas não garantimos disponibilidade ininterrupta. Manutenções, falhas de terceiros e casos fortuitos acontecem.',
216
+ 'Interrupções programadas são avisadas com antecedência sempre que possível.',
217
+ ],
218
+ },
219
+ {
220
+ heading: 'Suspensão e encerramento',
221
+ bullets: [
222
+ `Você pode cancelar a qualquer momento pelo canal ${p.contactEmail}, sem prejuízo de eventual fluxo de cancelamento disponível no próprio serviço.`,
223
+ 'Podemos suspender a conta por inadimplência, conforme a Política de Cobrança.',
224
+ 'Podemos suspender ou encerrar imediatamente em caso de uso ilícito, violação grave destes termos ou risco à segurança de outros clientes.',
225
+ 'Em qualquer encerramento, você mantém o direito de exportar seus dados dentro do prazo de retenção.',
226
+ ],
227
+ },
228
+ {
229
+ heading: 'Limitação de responsabilidade',
230
+ body: [
231
+ 'Respondemos por danos diretos comprovados, limitados ao valor pago por você nos 12 meses anteriores ao evento.',
232
+ 'Não respondemos por lucros cessantes, perda de oportunidade ou danos indiretos.',
233
+ 'Nada aqui afasta responsabilidade que a lei não permita afastar, inclusive perante consumidores.',
234
+ ],
235
+ },
236
+ {
237
+ heading: 'Alterações',
238
+ body: [
239
+ 'Podemos alterar estes termos. Mudança relevante é comunicada com antecedência razoável e, se você não concordar, pode cancelar sem multa.',
240
+ ],
241
+ },
242
+ {
243
+ heading: 'Lei e foro',
244
+ body: [
245
+ `Aplica-se a lei brasileira. Fica eleito o foro de ${p.jurisdiction}, salvo se a lei garantir a você foro diverso.`,
246
+ ],
247
+ },
248
+ ]);
249
+ }
250
+ // ── 3. Política de Cookies ──────────────────────────────────────────────────
251
+ function cookies(p) {
252
+ return doc('cookies', 'Política de Cookies', `Quais cookies o ${p.productName} usa, para quê, e como você controla cada categoria.`, 'Usamos somente cookies necessários para autenticação e segurança. Não ativamos cookies de analytics ou marketing no produto atual.', [
253
+ {
254
+ heading: 'O que são',
255
+ body: [
256
+ 'Cookies são pequenos arquivos que um site grava no seu navegador. Servem para lembrar quem você é entre uma página e outra — sem eles, você precisaria fazer login a cada clique.',
257
+ 'Usamos também tecnologias equivalentes, como armazenamento local do navegador. Tudo aqui vale para elas.',
258
+ ],
259
+ },
260
+ {
261
+ heading: 'Necessários',
262
+ body: ['Sem estes o serviço não funciona, e por isso não dependem de consentimento.'],
263
+ bullets: [
264
+ 'Sessão e autenticação — mantêm você logado e vinculam sua sessão à sua conta.',
265
+ 'Segurança — ajudam a detectar e barrar acesso indevido.',
266
+ 'Preferências essenciais — guardam escolhas indispensáveis ao funcionamento da interface, quando aplicável.',
267
+ ],
268
+ },
269
+ {
270
+ heading: 'Analytics',
271
+ body: [
272
+ `O ${p.productName} não utiliza cookies de analytics no produto atual. Se essa categoria for introduzida, ela permanecerá desativada até que você consinta, e a recusa não limitará funções essenciais.`,
273
+ ],
274
+ },
275
+ {
276
+ heading: 'Marketing',
277
+ body: [
278
+ `O ${p.productName} não usa cookies de marketing ou publicidade comportamental. Se isso mudar, esta política será atualizada e o consentimento será pedido antes.`,
279
+ ],
280
+ },
281
+ {
282
+ heading: 'Como controlar',
283
+ bullets: [
284
+ 'Pelas configurações do seu navegador, que permitem bloquear ou apagar cookies — bloquear os necessários pode impedir o login.',
285
+ `Pelo canal de privacidade (${p.company.privacyEmail}), se preferir tratar por escrito.`,
286
+ 'Se cookies não essenciais forem adotados no futuro, o serviço apresentará um controle de consentimento antes de ativá-los.',
287
+ ],
288
+ },
289
+ ]);
290
+ }
291
+ // ── 4. Política de Cobrança, Assinaturas e Reembolsos ───────────────────────
292
+ function cobranca(p) {
293
+ return doc('cobranca', 'Política de Cobrança, Assinaturas e Reembolsos', `Trial, renovação, cancelamento, inadimplência e reembolso no ${p.productName}.`, `São ${p.trialDays} dias de teste sem cartão. Depois, é assinatura mensal que renova sozinha e que você cancela quando quiser, sem multa.`, [
294
+ {
295
+ heading: 'Teste gratuito',
296
+ bullets: [
297
+ `O teste dura ${p.trialDays} dias, contados da criação da conta.`,
298
+ 'Não pedimos cartão de crédito para começar.',
299
+ 'Durante o teste você usa os recursos do plano escolhido.',
300
+ 'Ao final, se você não contratar, a conta não é cobrada — fica com acesso limitado até que você decida.',
301
+ ],
302
+ },
303
+ {
304
+ heading: 'Assinatura e renovação',
305
+ bullets: [
306
+ 'A assinatura é mensal e renova automaticamente ao fim de cada ciclo.',
307
+ 'O valor é o vigente no momento da contratação. Reajuste é comunicado com pelo menos 30 dias de antecedência e você pode cancelar antes que valha.',
308
+ 'A cobrança é processada pelo nosso parceiro de pagamentos; não armazenamos os dados completos do seu cartão.',
309
+ ],
310
+ },
311
+ {
312
+ heading: 'Upgrade e downgrade',
313
+ bullets: [
314
+ 'Antes de confirmar uma mudança de plano, o serviço ou o canal de atendimento informa quando ela passa a valer e qualquer valor aplicável.',
315
+ 'O tratamento de eventual diferença de preço segue as condições apresentadas no momento da alteração e as regras do meio de pagamento.',
316
+ 'Ao reduzir de plano, confira os limites do novo plano antes — recursos acima do novo limite podem ficar indisponíveis.',
317
+ ],
318
+ },
319
+ {
320
+ heading: 'Cancelamento',
321
+ bullets: [
322
+ `Você pode pedir o cancelamento quando quiser, sem multa e sem justificar, pelo canal ${p.contactEmail}.`,
323
+ 'O acesso continua até o fim do ciclo já pago. Não há cobrança do ciclo seguinte.',
324
+ 'Seus dados permanecem exportáveis conforme o prazo de retenção da Política de Privacidade.',
325
+ ],
326
+ },
327
+ {
328
+ heading: 'Inadimplência e suspensão',
329
+ bullets: [
330
+ 'Se a cobrança falhar, tentamos novamente e avisamos você.',
331
+ 'Persistindo a falta de pagamento, o acesso é bloqueado — os dados NÃO são apagados nesse momento.',
332
+ 'Após o prazo de retenção comunicado, a conta pode ser encerrada e os dados eliminados.',
333
+ 'A reativação é imediata assim que o pagamento é regularizado, desde que dentro do prazo de retenção.',
334
+ ],
335
+ },
336
+ {
337
+ heading: 'Reembolso',
338
+ bullets: [
339
+ 'Arrependimento em até 7 dias da primeira contratação: reembolso integral, conforme o art. 49 do Código de Defesa do Consumidor.',
340
+ 'Indisponibilidade prolongada por falha nossa: reembolso proporcional ao período indisponível.',
341
+ 'Fora dessas hipóteses, não há reembolso de período já usado — mas você também não é cobrado pelo ciclo seguinte ao cancelar.',
342
+ ],
343
+ },
344
+ {
345
+ heading: 'Notas fiscais',
346
+ body: [
347
+ `Os documentos fiscais aplicáveis são emitidos conforme a legislação e os dados informados na contratação. Para solicitar o documento ou corrigir dados fiscais, use ${p.contactEmail}.`,
348
+ ],
349
+ },
350
+ ]);
351
+ }
352
+ // ── 5. Direitos Autorais e Propriedade Intelectual ──────────────────────────
353
+ function propriedadeIntelectual(p) {
354
+ return doc('propriedade-intelectual', 'Direitos Autorais e Propriedade Intelectual', `O que pertence ao ${p.productName} e o que pertence a você.`, 'A plataforma, a marca e o código são nossos. O conteúdo que você cria dentro dela é seu.', [
355
+ {
356
+ heading: 'O que é nosso',
357
+ body: [
358
+ `São de titularidade exclusiva de ${p.company.legalName}, protegidos pela Lei de Direitos Autorais (9.610/98) e pela Lei do Software (9.609/98):`,
359
+ ],
360
+ bullets: [
361
+ 'O código-fonte e o código objeto da plataforma.',
362
+ 'A interface, o layout, a arquitetura de navegação e os fluxos de tela.',
363
+ `As marcas Baruk e ${p.productName}, seus logotipos e sinais distintivos.`,
364
+ 'A documentação, o material de treinamento e o conteúdo de apoio.',
365
+ 'A base de dados estrutural da plataforma — não o conteúdo que você insere nela.',
366
+ ],
367
+ },
368
+ {
369
+ heading: 'O que é seu',
370
+ body: [
371
+ 'O conteúdo que você cadastra, envia ou gera usando a plataforma continua sendo seu. Não adquirimos titularidade sobre ele.',
372
+ 'Nossa licença sobre esse conteúdo é limitada ao necessário para operar o serviço: armazenar, processar, exibir para você e para quem você autorizar, e gerar backups.',
373
+ ],
374
+ },
375
+ {
376
+ heading: 'Uso proibido',
377
+ bullets: [
378
+ 'Copiar, reproduzir ou distribuir qualquer parte da plataforma.',
379
+ 'Criar obra derivada, adaptação ou produto concorrente a partir dela.',
380
+ 'Usar nossas marcas e logotipos sem autorização escrita.',
381
+ 'Remover ou alterar avisos de titularidade.',
382
+ 'Capturar telas ou fluxos para reproduzir a interface em outro produto.',
383
+ ],
384
+ },
385
+ {
386
+ heading: 'Violação',
387
+ body: [
388
+ `Uso indevido enseja suspensão imediata e as medidas cabíveis. Se você identificar violação de direito autoral na plataforma — seu ou de terceiro — comunique ${p.contactEmail} com a descrição e a comprovação da titularidade; apuramos e agimos.`,
389
+ ],
390
+ },
391
+ ]);
392
+ }
393
+ // ── 6. Licenciamento do Software ────────────────────────────────────────────
394
+ function licenca(p) {
395
+ return doc('licenca', 'Licenciamento do Software', `O que você contrata ao assinar o ${p.productName}: uma licença de uso, não o software.`, 'Você compra o direito de usar enquanto a assinatura estiver ativa. Não compra o software, e não pode copiá-lo, revendê-lo ou abri-lo.', [
396
+ {
397
+ heading: 'O que você contrata',
398
+ body: [
399
+ `A assinatura do ${p.productName} concede uma licença de uso: não exclusiva, intransferível, revogável, sem direito de sublicenciar e limitada ao prazo da assinatura.`,
400
+ 'Você não adquire o software, nem cópia dele, nem qualquer direito de propriedade sobre ele. O serviço é entregue como SaaS, executado em nossa infraestrutura.',
401
+ ],
402
+ },
403
+ {
404
+ heading: 'Limites da licença',
405
+ bullets: [
406
+ 'Vale apenas para a pessoa ou empresa titular da conta e seus usuários autorizados.',
407
+ 'Respeita os limites do plano contratado — usuários, volumes e recursos.',
408
+ 'Termina automaticamente com o fim da assinatura.',
409
+ ],
410
+ },
411
+ {
412
+ heading: 'O que a licença não permite',
413
+ bullets: [
414
+ 'Copiar o software ou qualquer parte dele.',
415
+ 'Revender, alugar, emprestar ou prestar serviço a terceiros usando a conta.',
416
+ 'Fazer engenharia reversa, descompilar ou desmontar.',
417
+ 'Contornar controles técnicos de licenciamento ou de limite de plano.',
418
+ 'Usar a plataforma para desenvolver produto concorrente.',
419
+ ],
420
+ },
421
+ {
422
+ heading: 'Componentes de terceiros',
423
+ body: [
424
+ 'A plataforma usa componentes de código aberto, cada um sob a própria licença, que permanecem regidos por ela. Nada nesta política restringe direitos que essas licenças concedam a você.',
425
+ ],
426
+ },
427
+ {
428
+ heading: 'Sem garantia de adequação',
429
+ body: [
430
+ 'O software é licenciado como está, na versão vigente. Não garantimos que atenda a finalidade específica não descrita na documentação, nem que opere livre de qualquer defeito.',
431
+ 'Corrigimos defeitos relevantes dentro do razoável e evoluímos o produto continuamente.',
432
+ ],
433
+ },
434
+ ]);
435
+ }
436
+ // ── 7. Canal LGPD ───────────────────────────────────────────────────────────
437
+ function lgpd(p) {
438
+ const privacyContact = p.company.dpo?.email ?? p.company.privacyEmail;
439
+ const privacyContactDescription = p.company.dpo
440
+ ? `Encarregado: ${p.company.dpo.name} — ${p.company.dpo.email}`
441
+ : `Canal de privacidade da controladora: ${p.company.privacyEmail}. Nenhum encarregado nominal consta deste perfil; a controladora responde diretamente por este canal.`;
442
+ return doc('lgpd', 'Canal LGPD e Exercício de Direitos', `Como falar com o canal de privacidade e exercer seus direitos de titular no ${p.productName}.`, `Para exercer seus direitos, escreva para ${privacyContact}.`, [
443
+ {
444
+ heading: 'Canal de privacidade',
445
+ body: [
446
+ `${p.company.legalName} mantém um canal de comunicação para titulares de dados, nos termos da LGPD e da regulamentação aplicável.`,
447
+ privacyContactDescription,
448
+ `Contato geral: ${p.contactEmail}`,
449
+ ],
450
+ },
451
+ {
452
+ heading: 'O que você pode solicitar',
453
+ bullets: [
454
+ 'Confirmação de que tratamos seus dados.',
455
+ 'Acesso aos dados que temos sobre você.',
456
+ 'Correção de dado incompleto, inexato ou desatualizado.',
457
+ 'Anonimização, bloqueio ou eliminação de dado desnecessário ou excessivo.',
458
+ 'Portabilidade a outro fornecedor.',
459
+ 'Eliminação dos dados tratados com base no consentimento.',
460
+ 'Informação sobre com quem compartilhamos seus dados.',
461
+ 'Revogação do consentimento.',
462
+ 'Revisão de decisão automatizada que afete seus interesses.',
463
+ ],
464
+ },
465
+ {
466
+ heading: 'Como pedir',
467
+ body: [
468
+ 'Escreva para o canal de privacidade informando seu nome, o e-mail cadastrado e qual direito quer exercer. Não é preciso formulário nem formato específico.',
469
+ 'Podemos pedir informação adicional para confirmar sua identidade — é proteção sua, para que ninguém peça seus dados no seu lugar.',
470
+ ],
471
+ },
472
+ {
473
+ heading: 'Prazos',
474
+ bullets: [
475
+ 'Confirmação de tratamento e acesso: resposta imediata em formato simplificado, ou completa em até 15 dias.',
476
+ 'Demais solicitações: resposta dentro do prazo previsto na legislação e na regulamentação aplicáveis; se a análise exigir mais tempo, informamos o andamento e a justificativa.',
477
+ 'Se não pudermos atender, explicamos o motivo — por exemplo, quando a lei nos obriga a reter o dado.',
478
+ ],
479
+ },
480
+ {
481
+ heading: 'Se não ficar satisfeito',
482
+ body: [
483
+ 'Você pode reclamar à Autoridade Nacional de Proteção de Dados (ANPD), pelos canais oficiais em gov.br/anpd. Preferimos resolver antes disso, e nosso canal está aberto.',
484
+ ],
485
+ },
486
+ ]);
487
+ }
488
+ // ── 8. Avisos Legais ────────────────────────────────────────────────────────
489
+ function avisosLegais(p) {
490
+ return doc('avisos-legais', 'Avisos Legais', `Limites de garantia, manutenção, integrações e mudanças no ${p.productName}.`, 'O que esperamos entregar, o que não podemos garantir, e de que terceiros dependemos.', [
491
+ {
492
+ heading: 'Identificação da empresa',
493
+ body: [
494
+ `${p.company.legalName}, nome fantasia ${p.company.tradeName}, CNPJ ${p.company.taxId}, com endereço em ${companyAddress(p)}. Situação cadastral ativa, verificada em ${p.company.verifiedAt.split('-').reverse().join('/')}.`,
495
+ `Domínio institucional: ${p.company.domain}. Contato jurídico: ${p.company.legalEmail}.`,
496
+ ],
497
+ },
498
+ {
499
+ heading: 'Disponibilidade',
500
+ body: [
501
+ 'Buscamos a maior disponibilidade possível, mas não garantimos operação ininterrupta ou livre de erros. Dependemos de infraestrutura, rede e serviços de terceiros que também falham.',
502
+ 'Salvo contrato específico, não há SLA com percentual garantido de disponibilidade.',
503
+ ],
504
+ },
505
+ {
506
+ heading: 'Manutenção',
507
+ body: [
508
+ 'Fazemos manutenções para corrigir, atualizar e melhorar o serviço. Quando previstas e com impacto relevante, avisamos com antecedência. Correções urgentes de segurança podem ser aplicadas sem aviso prévio.',
509
+ ],
510
+ },
511
+ {
512
+ heading: 'Serviços integrados',
513
+ body: [
514
+ 'O serviço depende de terceiros para funcionar. Indisponibilidade ou mudança neles pode afetar funções do produto, e não temos controle sobre isso.',
515
+ ],
516
+ bullets: p.subprocessors.length > 0
517
+ ? p.subprocessors.map((s) => `${s.name} — ${s.purpose}.`)
518
+ : ['Nenhuma integração de terceiro no momento.'],
519
+ },
520
+ {
521
+ heading: 'Links para terceiros',
522
+ body: [
523
+ 'A plataforma pode conter links para sites que não controlamos. Não respondemos pelo conteúdo, pelas práticas de privacidade nem pela disponibilidade deles.',
524
+ ],
525
+ },
526
+ {
527
+ heading: 'Conteúdo dos usuários',
528
+ body: [
529
+ 'O conteúdo inserido pelos clientes é de responsabilidade deles. Não o revisamos previamente. Conteúdo ilícito comunicado pelos canais oficiais é apurado e removido quando cabível.',
530
+ ],
531
+ },
532
+ {
533
+ heading: 'Evolução do serviço',
534
+ body: [
535
+ 'O produto muda: recursos são adicionados, alterados e, eventualmente, descontinuados. Remoção de recurso relevante é comunicada com antecedência razoável.',
536
+ ],
537
+ },
538
+ {
539
+ heading: 'Contato',
540
+ body: [
541
+ `Dúvidas sobre estes avisos: ${p.contactEmail}. Assuntos de privacidade: ${p.company.privacyEmail}.`,
542
+ ],
543
+ },
544
+ ]);
545
+ }
546
+ // ── 2b. Instruções de Exclusão de Dados ─────────────────────────────────────
547
+ /**
548
+ * Como pedir a exclusão dos seus dados — e o que acontece depois.
549
+ *
550
+ * ## Por que é um documento SEPARADO do canal LGPD
551
+ *
552
+ * O `lgpd` explica os NOVE direitos do titular e é escrito para quem quer saber
553
+ * o que pode pedir. Este responde uma pergunta só, e responde operacionalmente:
554
+ * a quem escrever, o que dizer, quanto tempo demora, e o que sobrevive à
555
+ * exclusão porque a lei manda guardar.
556
+ *
557
+ * Existe também porque plataformas externas — a Meta entre elas — exigem uma
558
+ * URL pública, estável, sem login, dedicada a instruções de exclusão. Apontar
559
+ * um requisito desses para uma página de nove direitos é entregar ao titular a
560
+ * tarefa de achar o parágrafo dele.
561
+ *
562
+ * ## O que ele NÃO faz
563
+ *
564
+ * Não promete apagar o que a lei obriga a reter, e diz quais são esses casos. A
565
+ * página que promete exclusão total é a que gera a reclamação quando o
566
+ * documento fiscal continua lá — e ele vai continuar, porque tem de continuar.
567
+ */
568
+ function exclusaoDeDados(p) {
569
+ const canal = p.company.dpo?.email ?? p.company.privacyEmail;
570
+ const comoOsDadosChegam = p.messagingChannels?.length
571
+ ? [
572
+ `Se você recebeu mensagem nossa por ${p.messagingChannels.map((c) => c.channel).join(' ou ')}, seu contato foi cadastrado pelo escritório ou empresa que usa o ${p.productName} — não por nós. Podemos excluí-lo do nosso lado e interromper o envio, e informamos o cliente responsável para que ele faça o mesmo na base dele.`,
573
+ // Como parar o contato SEM apagar tudo: quem só quer silêncio não
574
+ // deveria ser obrigado a pedir exclusão de dados para consegui-lo.
575
+ ...p.messagingChannels.map((c) => `Para interromper apenas as mensagens de ${c.channel}: ${c.optOut}`),
576
+ ]
577
+ : [];
578
+ return doc('exclusao-de-dados', 'Instruções para Exclusão de Dados', `Como solicitar a exclusão dos seus dados pessoais no ${p.productName}, o que é apagado e o que a lei obriga a manter.`, `Escreva para ${canal} pedindo a exclusão. Respondemos em até 15 dias.`, [
579
+ {
580
+ heading: 'Como pedir',
581
+ body: [
582
+ `Escreva para ${canal} com o assunto "Exclusão de dados". Não existe formulário obrigatório nem formato específico.`,
583
+ 'Informe seu nome completo e o e-mail ou telefone pelo qual foi contatado. Precisamos disso para localizar o registro certo — e podemos pedir uma confirmação adicional de identidade, que é proteção sua: sem ela, qualquer pessoa poderia pedir a exclusão dos seus dados.',
584
+ `Contato geral, para qualquer outro assunto: ${p.contactEmail}.`,
585
+ ],
586
+ },
587
+ {
588
+ heading: 'Quem é o responsável pelos seus dados',
589
+ body: [
590
+ `O ${p.productName} é operado por ${p.company.legalName}. ${p.purpose}`,
591
+ `Boa parte dos dados que tratamos chega até nós porque um cliente nosso — o escritório ou a empresa que contratou o ${p.productName} — os cadastrou. Nesses casos ele é o controlador e nós somos o operador: podemos excluir os dados dos nossos sistemas e vamos comunicá-lo, mas a base dele é dele.`,
592
+ 'Se você não sabe qual empresa cadastrou seus dados, escreva assim mesmo: nós identificamos e indicamos o caminho.',
593
+ ...comoOsDadosChegam,
594
+ ],
595
+ },
596
+ {
597
+ heading: 'O que acontece depois do pedido',
598
+ bullets: [
599
+ 'Confirmamos o recebimento e, se necessário, pedimos a confirmação de identidade.',
600
+ 'Localizamos todos os registros associados a você.',
601
+ 'Excluímos ou anonimizamos o que pode ser excluído, incluindo cópias em backup dentro do ciclo normal de retenção.',
602
+ 'Interrompemos qualquer comunicação automática dirigida a você.',
603
+ 'Respondemos dizendo o que foi excluído e o que precisou ser mantido, com o motivo de cada caso.',
604
+ ],
605
+ },
606
+ {
607
+ heading: 'Prazo',
608
+ body: [
609
+ 'Respondemos em até 15 dias corridos. Se a análise exigir mais tempo — por exemplo, quando os dados estão sob a controladoria de um cliente que precisa ser consultado —, informamos o andamento e a justificativa dentro desse mesmo prazo.',
610
+ ],
611
+ },
612
+ {
613
+ heading: 'O que NÃO conseguimos excluir, e por quê',
614
+ body: [
615
+ 'Exclusão total nem sempre é possível, e uma página que prometesse isso estaria mentindo. A lei brasileira obriga a guardar certos registros mesmo depois do pedido:',
616
+ ],
617
+ bullets: [
618
+ 'Documentos e lançamentos fiscais e contábeis, pelos prazos da legislação tributária.',
619
+ 'Registros de acesso a aplicação, pelo prazo do Marco Civil da Internet.',
620
+ 'Dados necessários ao cumprimento de obrigação legal ou regulatória, ou ao exercício regular de direitos em processo.',
621
+ 'Trilhas de auditoria que registram QUE uma ação aconteceu, quando removê-las destruiria a prova de que o próprio pedido de exclusão foi atendido.',
622
+ ],
623
+ },
624
+ {
625
+ heading: 'Encerrar a conta é diferente de excluir os dados',
626
+ body: [
627
+ `Se você tem acesso ao ${p.productName} e quer apenas parar de usá-lo, peça o encerramento da conta pelo mesmo canal. Encerrar suspende o acesso; excluir apaga os dados. Diga o que você quer — os dois pedidos são atendidos, mas têm efeitos diferentes.`,
628
+ ],
629
+ },
630
+ {
631
+ heading: 'Se não ficar satisfeito',
632
+ body: [
633
+ 'Você pode reclamar à Autoridade Nacional de Proteção de Dados (ANPD), pelos canais oficiais em gov.br/anpd. Preferimos resolver antes disso, e este canal está aberto.',
634
+ ],
635
+ },
636
+ ]);
637
+ }
638
+ // ── Montagem ────────────────────────────────────────────────────────────────
639
+ const BUILDERS = {
640
+ privacidade,
641
+ termos,
642
+ 'exclusao-de-dados': exclusaoDeDados,
643
+ cookies,
644
+ cobranca,
645
+ 'propriedade-intelectual': propriedadeIntelectual,
646
+ licenca,
647
+ lgpd,
648
+ 'avisos-legais': avisosLegais,
649
+ };
650
+ /** Ordem de exibição — a mesma do índice e da navegação cruzada. */
651
+ exports.LEGAL_ORDER = [
652
+ 'privacidade',
653
+ 'termos',
654
+ 'exclusao-de-dados',
655
+ 'cookies',
656
+ 'cobranca',
657
+ 'propriedade-intelectual',
658
+ 'licenca',
659
+ 'lgpd',
660
+ 'avisos-legais',
661
+ ];
662
+ function buildLegalDocuments(profile) {
663
+ return exports.LEGAL_ORDER.map((slug) => BUILDERS[slug](profile));
664
+ }
665
+ function buildLegalDocument(profile, slug) {
666
+ const builder = BUILDERS[slug];
667
+ if (!builder)
668
+ return null;
669
+ return builder(profile);
670
+ }
671
+ //# sourceMappingURL=documents.js.map