@baruk/core 0.4.2 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (576) hide show
  1. package/.baruk-provenance.json +4 -4
  2. package/CHANGELOG.md +42 -0
  3. package/dist/audit/repository.d.ts +33 -1
  4. package/dist/audit/repository.d.ts.map +1 -1
  5. package/dist/audit/repository.js +41 -7
  6. package/dist/audit/repository.js.map +1 -1
  7. package/dist/auth/service.d.ts +21 -0
  8. package/dist/auth/service.d.ts.map +1 -1
  9. package/dist/auth/service.js +46 -1
  10. package/dist/auth/service.js.map +1 -1
  11. package/dist/billing/ar-repository.d.ts +41 -1
  12. package/dist/billing/ar-repository.d.ts.map +1 -1
  13. package/dist/billing/ar-repository.js +82 -6
  14. package/dist/billing/ar-repository.js.map +1 -1
  15. package/dist/billing/provider-account.d.ts +38 -0
  16. package/dist/billing/provider-account.d.ts.map +1 -1
  17. package/dist/billing/provider-account.js +58 -2
  18. package/dist/billing/provider-account.js.map +1 -1
  19. package/dist/billing/repository.d.ts +44 -0
  20. package/dist/billing/repository.d.ts.map +1 -1
  21. package/dist/billing/repository.js +49 -5
  22. package/dist/billing/repository.js.map +1 -1
  23. package/dist/cjs/audit/repository.js +41 -7
  24. package/dist/cjs/audit/repository.js.map +1 -1
  25. package/dist/cjs/auth/service.js +46 -1
  26. package/dist/cjs/auth/service.js.map +1 -1
  27. package/dist/cjs/billing/ar-repository.js +82 -6
  28. package/dist/cjs/billing/ar-repository.js.map +1 -1
  29. package/dist/cjs/billing/provider-account.js +60 -1
  30. package/dist/cjs/billing/provider-account.js.map +1 -1
  31. package/dist/cjs/billing/repository.js +51 -5
  32. package/dist/cjs/billing/repository.js.map +1 -1
  33. package/dist/cjs/clients/ibge.js +117 -0
  34. package/dist/cjs/clients/ibge.js.map +1 -0
  35. package/dist/cjs/clients/registry/http.js +157 -0
  36. package/dist/cjs/clients/registry/http.js.map +1 -0
  37. package/dist/cjs/clients/registry/ibge-municipios.js +28 -0
  38. package/dist/cjs/clients/registry/ibge-municipios.js.map +1 -0
  39. package/dist/cjs/clients/registry/ibge.js +63 -0
  40. package/dist/cjs/clients/registry/ibge.js.map +1 -0
  41. package/dist/cjs/clients/registry/lookup.js +191 -0
  42. package/dist/cjs/clients/registry/lookup.js.map +1 -0
  43. package/dist/cjs/clients/registry/provider.js +34 -0
  44. package/dist/cjs/clients/registry/provider.js.map +1 -0
  45. package/dist/cjs/clients/registry/resolve.js +47 -0
  46. package/dist/cjs/clients/registry/resolve.js.map +1 -0
  47. package/dist/cjs/clients/registry/serpro.js +149 -0
  48. package/dist/cjs/clients/registry/serpro.js.map +1 -0
  49. package/dist/cjs/clients/registry/service.js +230 -0
  50. package/dist/cjs/clients/registry/service.js.map +1 -0
  51. package/dist/cjs/clients/registry/synthetic.js +165 -0
  52. package/dist/cjs/clients/registry/synthetic.js.map +1 -0
  53. package/dist/cjs/clients/repository.js +190 -9
  54. package/dist/cjs/clients/repository.js.map +1 -1
  55. package/dist/cjs/collection/branding.js +190 -0
  56. package/dist/cjs/collection/branding.js.map +1 -1
  57. package/dist/cjs/collection/clearance-store.js +74 -0
  58. package/dist/cjs/collection/clearance-store.js.map +1 -0
  59. package/dist/cjs/collection/communication-runtime.js +65 -2
  60. package/dist/cjs/collection/communication-runtime.js.map +1 -1
  61. package/dist/cjs/collection/engine.js +20 -0
  62. package/dist/cjs/collection/engine.js.map +1 -1
  63. package/dist/cjs/collection/policy.js +29 -1
  64. package/dist/cjs/collection/policy.js.map +1 -1
  65. package/dist/cjs/communication/clearance.js +18 -0
  66. package/dist/cjs/communication/clearance.js.map +1 -0
  67. package/dist/cjs/communication/dry-run-scenario.js +5 -0
  68. package/dist/cjs/communication/dry-run-scenario.js.map +1 -1
  69. package/dist/cjs/communication/engine.js +12 -0
  70. package/dist/cjs/communication/engine.js.map +1 -1
  71. package/dist/cjs/communication/policy.js.map +1 -1
  72. package/dist/cjs/competence/business-days.js +155 -0
  73. package/dist/cjs/competence/business-days.js.map +1 -0
  74. package/dist/cjs/competence/catalog-validation.js +174 -0
  75. package/dist/cjs/competence/catalog-validation.js.map +1 -0
  76. package/dist/cjs/competence/obligation-preview.js +190 -0
  77. package/dist/cjs/competence/obligation-preview.js.map +1 -0
  78. package/dist/cjs/competence/repository.js +330 -17
  79. package/dist/cjs/competence/repository.js.map +1 -1
  80. package/dist/cjs/dashboard/pilot-panel.js +90 -0
  81. package/dist/cjs/dashboard/pilot-panel.js.map +1 -0
  82. package/dist/cjs/dashboard/repository.js +11 -1
  83. package/dist/cjs/dashboard/repository.js.map +1 -1
  84. package/dist/cjs/db/client.js +17 -11
  85. package/dist/cjs/db/client.js.map +1 -1
  86. package/dist/cjs/db/provision-e2e-identity.js +116 -0
  87. package/dist/cjs/db/provision-e2e-identity.js.map +1 -0
  88. package/dist/cjs/fiscal/applicability.js +164 -0
  89. package/dist/cjs/fiscal/applicability.js.map +1 -0
  90. package/dist/cjs/fiscal/collection/authorization.js +186 -0
  91. package/dist/cjs/fiscal/collection/authorization.js.map +1 -0
  92. package/dist/cjs/fiscal/collection/competence.js +97 -0
  93. package/dist/cjs/fiscal/collection/competence.js.map +1 -0
  94. package/dist/cjs/fiscal/collection/first-contact.js +204 -0
  95. package/dist/cjs/fiscal/collection/first-contact.js.map +1 -0
  96. package/dist/cjs/fiscal/collection/plan.js +122 -0
  97. package/dist/cjs/fiscal/collection/plan.js.map +1 -0
  98. package/dist/cjs/fiscal/conditions.js +198 -0
  99. package/dist/cjs/fiscal/conditions.js.map +1 -0
  100. package/dist/cjs/fiscal/contracts/nfse-adn-contract.js +390 -0
  101. package/dist/cjs/fiscal/contracts/nfse-adn-contract.js.map +1 -0
  102. package/dist/cjs/fiscal/contracts/nfse-adn-endpoint.js +108 -0
  103. package/dist/cjs/fiscal/contracts/nfse-adn-endpoint.js.map +1 -0
  104. package/dist/cjs/fiscal/contracts/nfse-adn-envelope.js +220 -0
  105. package/dist/cjs/fiscal/contracts/nfse-adn-envelope.js.map +1 -0
  106. package/dist/cjs/fiscal/coverage/model.js +137 -0
  107. package/dist/cjs/fiscal/coverage/model.js.map +1 -0
  108. package/dist/cjs/fiscal/coverage/requests.js +99 -0
  109. package/dist/cjs/fiscal/coverage/requests.js.map +1 -0
  110. package/dist/cjs/fiscal/credentials/inspect.js +182 -0
  111. package/dist/cjs/fiscal/credentials/inspect.js.map +1 -0
  112. package/dist/cjs/fiscal/credentials/material.js +168 -0
  113. package/dist/cjs/fiscal/credentials/material.js.map +1 -0
  114. package/dist/cjs/fiscal/credentials/onboarding.js +266 -0
  115. package/dist/cjs/fiscal/credentials/onboarding.js.map +1 -0
  116. package/dist/cjs/fiscal/credentials/readiness.js +190 -0
  117. package/dist/cjs/fiscal/credentials/readiness.js.map +1 -0
  118. package/dist/cjs/fiscal/eligibility.js +199 -0
  119. package/dist/cjs/fiscal/eligibility.js.map +1 -0
  120. package/dist/cjs/fiscal/enrollment.js +134 -0
  121. package/dist/cjs/fiscal/enrollment.js.map +1 -0
  122. package/dist/cjs/fiscal/ingestion/__fixtures__/nfse.js +128 -0
  123. package/dist/cjs/fiscal/ingestion/__fixtures__/nfse.js.map +1 -0
  124. package/dist/cjs/fiscal/ingestion/adn-transport.js +229 -0
  125. package/dist/cjs/fiscal/ingestion/adn-transport.js.map +1 -0
  126. package/dist/cjs/fiscal/ingestion/direction.js +36 -0
  127. package/dist/cjs/fiscal/ingestion/direction.js.map +1 -0
  128. package/dist/cjs/fiscal/ingestion/nfse-adn.js +228 -0
  129. package/dist/cjs/fiscal/ingestion/nfse-adn.js.map +1 -0
  130. package/dist/cjs/fiscal/ingestion/pipeline.js +704 -0
  131. package/dist/cjs/fiscal/ingestion/pipeline.js.map +1 -0
  132. package/dist/cjs/fiscal/ingestion/provider.js +51 -0
  133. package/dist/cjs/fiscal/ingestion/provider.js.map +1 -0
  134. package/dist/cjs/fiscal/ingestion/repository.js +132 -0
  135. package/dist/cjs/fiscal/ingestion/repository.js.map +1 -0
  136. package/dist/cjs/fiscal/ingestion/synthetic-provider.js +103 -0
  137. package/dist/cjs/fiscal/ingestion/synthetic-provider.js.map +1 -0
  138. package/dist/cjs/fiscal/ingestion/synthetic-transport-types.js +13 -0
  139. package/dist/cjs/fiscal/ingestion/synthetic-transport-types.js.map +1 -0
  140. package/dist/cjs/fiscal/ingestion/synthetic-transport.js +61 -0
  141. package/dist/cjs/fiscal/ingestion/synthetic-transport.js.map +1 -0
  142. package/dist/cjs/fiscal/ingestion/xml-reader.js +121 -0
  143. package/dist/cjs/fiscal/ingestion/xml-reader.js.map +1 -0
  144. package/dist/cjs/fiscal/repository.js +470 -0
  145. package/dist/cjs/fiscal/repository.js.map +1 -0
  146. package/dist/cjs/fiscal/sync/circuit.js +124 -0
  147. package/dist/cjs/fiscal/sync/circuit.js.map +1 -0
  148. package/dist/cjs/fiscal/sync/intervention.js +140 -0
  149. package/dist/cjs/fiscal/sync/intervention.js.map +1 -0
  150. package/dist/cjs/fiscal/sync/lease.js +146 -0
  151. package/dist/cjs/fiscal/sync/lease.js.map +1 -0
  152. package/dist/cjs/fiscal/sync/observability.js +244 -0
  153. package/dist/cjs/fiscal/sync/observability.js.map +1 -0
  154. package/dist/cjs/fiscal/sync/orchestrator.js +490 -0
  155. package/dist/cjs/fiscal/sync/orchestrator.js.map +1 -0
  156. package/dist/cjs/fiscal/sync/policy.js +143 -0
  157. package/dist/cjs/fiscal/sync/policy.js.map +1 -0
  158. package/dist/cjs/fiscal/sync/reprocess.js +241 -0
  159. package/dist/cjs/fiscal/sync/reprocess.js.map +1 -0
  160. package/dist/cjs/fiscal/sync/retry.js +183 -0
  161. package/dist/cjs/fiscal/sync/retry.js.map +1 -0
  162. package/dist/cjs/fiscal/sync/secret-boundary.js +123 -0
  163. package/dist/cjs/fiscal/sync/secret-boundary.js.map +1 -0
  164. package/dist/cjs/fiscal/transport/https.js +309 -0
  165. package/dist/cjs/fiscal/transport/https.js.map +1 -0
  166. package/dist/cjs/fiscal/transport/synthetic-tls.js +380 -0
  167. package/dist/cjs/fiscal/transport/synthetic-tls.js.map +1 -0
  168. package/dist/cjs/fiscal/transport/types.js +93 -0
  169. package/dist/cjs/fiscal/transport/types.js.map +1 -0
  170. package/dist/cjs/import/br-documents.js +85 -0
  171. package/dist/cjs/import/br-documents.js.map +1 -0
  172. package/dist/cjs/import/clients-import.js +347 -40
  173. package/dist/cjs/import/clients-import.js.map +1 -1
  174. package/dist/cjs/index.js +461 -73
  175. package/dist/cjs/index.js.map +1 -1
  176. package/dist/cjs/legal/documents.js +164 -19
  177. package/dist/cjs/legal/documents.js.map +1 -1
  178. package/dist/cjs/legal/index.js +3 -1
  179. package/dist/cjs/legal/index.js.map +1 -1
  180. package/dist/cjs/legal/types.js.map +1 -1
  181. package/dist/cjs/onboarding/persistence.js +4 -4
  182. package/dist/cjs/onboarding/persistence.js.map +1 -1
  183. package/dist/cjs/pilot/go-live-checklist.js +212 -0
  184. package/dist/cjs/pilot/go-live-checklist.js.map +1 -0
  185. package/dist/cjs/pilot/milestone.js +79 -0
  186. package/dist/cjs/pilot/milestone.js.map +1 -0
  187. package/dist/cjs/platform/capabilities.js +173 -0
  188. package/dist/cjs/platform/capabilities.js.map +1 -0
  189. package/dist/cjs/platform/job-contract.js +411 -0
  190. package/dist/cjs/platform/job-contract.js.map +1 -0
  191. package/dist/cjs/rbac/catalog.js +110 -0
  192. package/dist/cjs/rbac/catalog.js.map +1 -1
  193. package/dist/cjs/subscription-billing/index.js +9 -1
  194. package/dist/cjs/subscription-billing/index.js.map +1 -1
  195. package/dist/cjs/subscription-billing/platform-exemption.js +121 -0
  196. package/dist/cjs/subscription-billing/platform-exemption.js.map +1 -0
  197. package/dist/cjs/subscription-billing/service.js +246 -78
  198. package/dist/cjs/subscription-billing/service.js.map +1 -1
  199. package/dist/cjs/tenancy/features.js +131 -0
  200. package/dist/cjs/tenancy/features.js.map +1 -0
  201. package/dist/cjs/tenancy/settings.js +224 -0
  202. package/dist/cjs/tenancy/settings.js.map +1 -0
  203. package/dist/cjs/users/repository.js +24 -1
  204. package/dist/cjs/users/repository.js.map +1 -1
  205. package/dist/cjs/vault/repository.js +92 -5
  206. package/dist/cjs/vault/repository.js.map +1 -1
  207. package/dist/clients/ibge.d.ts +17 -0
  208. package/dist/clients/ibge.d.ts.map +1 -0
  209. package/dist/clients/ibge.js +112 -0
  210. package/dist/clients/ibge.js.map +1 -0
  211. package/dist/clients/registry/http.d.ts +61 -0
  212. package/dist/clients/registry/http.d.ts.map +1 -0
  213. package/dist/clients/registry/http.js +151 -0
  214. package/dist/clients/registry/http.js.map +1 -0
  215. package/dist/clients/registry/ibge-municipios.d.ts +25 -0
  216. package/dist/clients/registry/ibge-municipios.d.ts.map +1 -0
  217. package/dist/clients/registry/ibge-municipios.js +25 -0
  218. package/dist/clients/registry/ibge-municipios.js.map +1 -0
  219. package/dist/clients/registry/ibge.d.ts +62 -0
  220. package/dist/clients/registry/ibge.d.ts.map +1 -0
  221. package/dist/clients/registry/ibge.js +57 -0
  222. package/dist/clients/registry/ibge.js.map +1 -0
  223. package/dist/clients/registry/lookup.d.ts +94 -0
  224. package/dist/clients/registry/lookup.d.ts.map +1 -0
  225. package/dist/clients/registry/lookup.js +184 -0
  226. package/dist/clients/registry/lookup.js.map +1 -0
  227. package/dist/clients/registry/provider.d.ts +124 -0
  228. package/dist/clients/registry/provider.d.ts.map +1 -0
  229. package/dist/clients/registry/provider.js +39 -0
  230. package/dist/clients/registry/provider.js.map +1 -0
  231. package/dist/clients/registry/resolve.d.ts +36 -0
  232. package/dist/clients/registry/resolve.d.ts.map +1 -0
  233. package/dist/clients/registry/resolve.js +44 -0
  234. package/dist/clients/registry/resolve.js.map +1 -0
  235. package/dist/clients/registry/serpro.d.ts +57 -0
  236. package/dist/clients/registry/serpro.d.ts.map +1 -0
  237. package/dist/clients/registry/serpro.js +143 -0
  238. package/dist/clients/registry/serpro.js.map +1 -0
  239. package/dist/clients/registry/service.d.ts +59 -0
  240. package/dist/clients/registry/service.d.ts.map +1 -0
  241. package/dist/clients/registry/service.js +225 -0
  242. package/dist/clients/registry/service.js.map +1 -0
  243. package/dist/clients/registry/synthetic.d.ts +30 -0
  244. package/dist/clients/registry/synthetic.d.ts.map +1 -0
  245. package/dist/clients/registry/synthetic.js +161 -0
  246. package/dist/clients/registry/synthetic.js.map +1 -0
  247. package/dist/clients/repository.d.ts +158 -0
  248. package/dist/clients/repository.d.ts.map +1 -1
  249. package/dist/clients/repository.js +186 -9
  250. package/dist/clients/repository.js.map +1 -1
  251. package/dist/collection/branding.d.ts +65 -0
  252. package/dist/collection/branding.d.ts.map +1 -1
  253. package/dist/collection/branding.js +186 -0
  254. package/dist/collection/branding.js.map +1 -1
  255. package/dist/collection/clearance-store.d.ts +39 -0
  256. package/dist/collection/clearance-store.d.ts.map +1 -0
  257. package/dist/collection/clearance-store.js +69 -0
  258. package/dist/collection/clearance-store.js.map +1 -0
  259. package/dist/collection/communication-runtime.d.ts +37 -0
  260. package/dist/collection/communication-runtime.d.ts.map +1 -1
  261. package/dist/collection/communication-runtime.js +63 -1
  262. package/dist/collection/communication-runtime.js.map +1 -1
  263. package/dist/collection/engine.d.ts +23 -0
  264. package/dist/collection/engine.d.ts.map +1 -1
  265. package/dist/collection/engine.js +20 -0
  266. package/dist/collection/engine.js.map +1 -1
  267. package/dist/collection/policy.d.ts +25 -0
  268. package/dist/collection/policy.d.ts.map +1 -1
  269. package/dist/collection/policy.js +27 -0
  270. package/dist/collection/policy.js.map +1 -1
  271. package/dist/communication/clearance.d.ts +53 -0
  272. package/dist/communication/clearance.d.ts.map +1 -0
  273. package/dist/communication/clearance.js +15 -0
  274. package/dist/communication/clearance.js.map +1 -0
  275. package/dist/communication/dry-run-scenario.d.ts.map +1 -1
  276. package/dist/communication/dry-run-scenario.js +5 -0
  277. package/dist/communication/dry-run-scenario.js.map +1 -1
  278. package/dist/communication/engine.d.ts +10 -0
  279. package/dist/communication/engine.d.ts.map +1 -1
  280. package/dist/communication/engine.js +12 -0
  281. package/dist/communication/engine.js.map +1 -1
  282. package/dist/communication/policy.d.ts +16 -0
  283. package/dist/communication/policy.d.ts.map +1 -1
  284. package/dist/communication/policy.js.map +1 -1
  285. package/dist/competence/business-days.d.ts +51 -0
  286. package/dist/competence/business-days.d.ts.map +1 -0
  287. package/dist/competence/business-days.js +145 -0
  288. package/dist/competence/business-days.js.map +1 -0
  289. package/dist/competence/catalog-validation.d.ts +86 -0
  290. package/dist/competence/catalog-validation.d.ts.map +1 -0
  291. package/dist/competence/catalog-validation.js +168 -0
  292. package/dist/competence/catalog-validation.js.map +1 -0
  293. package/dist/competence/obligation-preview.d.ts +103 -0
  294. package/dist/competence/obligation-preview.d.ts.map +1 -0
  295. package/dist/competence/obligation-preview.js +184 -0
  296. package/dist/competence/obligation-preview.js.map +1 -0
  297. package/dist/competence/repository.d.ts +139 -1
  298. package/dist/competence/repository.d.ts.map +1 -1
  299. package/dist/competence/repository.js +325 -17
  300. package/dist/competence/repository.js.map +1 -1
  301. package/dist/dashboard/pilot-panel.d.ts +100 -0
  302. package/dist/dashboard/pilot-panel.d.ts.map +1 -0
  303. package/dist/dashboard/pilot-panel.js +87 -0
  304. package/dist/dashboard/pilot-panel.js.map +1 -0
  305. package/dist/dashboard/repository.d.ts.map +1 -1
  306. package/dist/dashboard/repository.js +11 -1
  307. package/dist/dashboard/repository.js.map +1 -1
  308. package/dist/db/client.d.ts +45 -0
  309. package/dist/db/client.d.ts.map +1 -1
  310. package/dist/db/client.js +16 -11
  311. package/dist/db/client.js.map +1 -1
  312. package/dist/db/migrate.d.ts +36 -1
  313. package/dist/db/migrate.d.ts.map +1 -1
  314. package/dist/db/migrate.js +199 -32
  315. package/dist/db/migrate.js.map +1 -1
  316. package/dist/db/provision-e2e-identity.d.ts +2 -0
  317. package/dist/db/provision-e2e-identity.d.ts.map +1 -0
  318. package/dist/db/provision-e2e-identity.js +114 -0
  319. package/dist/db/provision-e2e-identity.js.map +1 -0
  320. package/dist/fiscal/applicability.d.ts +73 -0
  321. package/dist/fiscal/applicability.d.ts.map +1 -0
  322. package/dist/fiscal/applicability.js +160 -0
  323. package/dist/fiscal/applicability.js.map +1 -0
  324. package/dist/fiscal/collection/authorization.d.ts +152 -0
  325. package/dist/fiscal/collection/authorization.d.ts.map +1 -0
  326. package/dist/fiscal/collection/authorization.js +178 -0
  327. package/dist/fiscal/collection/authorization.js.map +1 -0
  328. package/dist/fiscal/collection/competence.d.ts +66 -0
  329. package/dist/fiscal/collection/competence.d.ts.map +1 -0
  330. package/dist/fiscal/collection/competence.js +90 -0
  331. package/dist/fiscal/collection/competence.js.map +1 -0
  332. package/dist/fiscal/collection/first-contact.d.ts +103 -0
  333. package/dist/fiscal/collection/first-contact.d.ts.map +1 -0
  334. package/dist/fiscal/collection/first-contact.js +201 -0
  335. package/dist/fiscal/collection/first-contact.js.map +1 -0
  336. package/dist/fiscal/collection/plan.d.ts +74 -0
  337. package/dist/fiscal/collection/plan.d.ts.map +1 -0
  338. package/dist/fiscal/collection/plan.js +119 -0
  339. package/dist/fiscal/collection/plan.js.map +1 -0
  340. package/dist/fiscal/conditions.d.ts +99 -0
  341. package/dist/fiscal/conditions.d.ts.map +1 -0
  342. package/dist/fiscal/conditions.js +190 -0
  343. package/dist/fiscal/conditions.js.map +1 -0
  344. package/dist/fiscal/contracts/nfse-adn-contract.d.ts +315 -0
  345. package/dist/fiscal/contracts/nfse-adn-contract.d.ts.map +1 -0
  346. package/dist/fiscal/contracts/nfse-adn-contract.js +386 -0
  347. package/dist/fiscal/contracts/nfse-adn-contract.js.map +1 -0
  348. package/dist/fiscal/contracts/nfse-adn-endpoint.d.ts +13 -0
  349. package/dist/fiscal/contracts/nfse-adn-endpoint.d.ts.map +1 -0
  350. package/dist/fiscal/contracts/nfse-adn-endpoint.js +103 -0
  351. package/dist/fiscal/contracts/nfse-adn-endpoint.js.map +1 -0
  352. package/dist/fiscal/contracts/nfse-adn-envelope.d.ts +77 -0
  353. package/dist/fiscal/contracts/nfse-adn-envelope.d.ts.map +1 -0
  354. package/dist/fiscal/contracts/nfse-adn-envelope.js +215 -0
  355. package/dist/fiscal/contracts/nfse-adn-envelope.js.map +1 -0
  356. package/dist/fiscal/coverage/model.d.ts +114 -0
  357. package/dist/fiscal/coverage/model.d.ts.map +1 -0
  358. package/dist/fiscal/coverage/model.js +130 -0
  359. package/dist/fiscal/coverage/model.js.map +1 -0
  360. package/dist/fiscal/coverage/requests.d.ts +70 -0
  361. package/dist/fiscal/coverage/requests.d.ts.map +1 -0
  362. package/dist/fiscal/coverage/requests.js +95 -0
  363. package/dist/fiscal/coverage/requests.js.map +1 -0
  364. package/dist/fiscal/credentials/inspect.d.ts +114 -0
  365. package/dist/fiscal/credentials/inspect.d.ts.map +1 -0
  366. package/dist/fiscal/credentials/inspect.js +178 -0
  367. package/dist/fiscal/credentials/inspect.js.map +1 -0
  368. package/dist/fiscal/credentials/material.d.ts +81 -0
  369. package/dist/fiscal/credentials/material.d.ts.map +1 -0
  370. package/dist/fiscal/credentials/material.js +164 -0
  371. package/dist/fiscal/credentials/material.js.map +1 -0
  372. package/dist/fiscal/credentials/onboarding.d.ts +119 -0
  373. package/dist/fiscal/credentials/onboarding.d.ts.map +1 -0
  374. package/dist/fiscal/credentials/onboarding.js +259 -0
  375. package/dist/fiscal/credentials/onboarding.js.map +1 -0
  376. package/dist/fiscal/credentials/readiness.d.ts +119 -0
  377. package/dist/fiscal/credentials/readiness.d.ts.map +1 -0
  378. package/dist/fiscal/credentials/readiness.js +186 -0
  379. package/dist/fiscal/credentials/readiness.js.map +1 -0
  380. package/dist/fiscal/eligibility.d.ts +106 -0
  381. package/dist/fiscal/eligibility.d.ts.map +1 -0
  382. package/dist/fiscal/eligibility.js +194 -0
  383. package/dist/fiscal/eligibility.js.map +1 -0
  384. package/dist/fiscal/enrollment.d.ts +91 -0
  385. package/dist/fiscal/enrollment.d.ts.map +1 -0
  386. package/dist/fiscal/enrollment.js +126 -0
  387. package/dist/fiscal/enrollment.js.map +1 -0
  388. package/dist/fiscal/ingestion/__fixtures__/nfse.d.ts +57 -0
  389. package/dist/fiscal/ingestion/__fixtures__/nfse.d.ts.map +1 -0
  390. package/dist/fiscal/ingestion/__fixtures__/nfse.js +121 -0
  391. package/dist/fiscal/ingestion/__fixtures__/nfse.js.map +1 -0
  392. package/dist/fiscal/ingestion/adn-transport.d.ts +123 -0
  393. package/dist/fiscal/ingestion/adn-transport.d.ts.map +1 -0
  394. package/dist/fiscal/ingestion/adn-transport.js +220 -0
  395. package/dist/fiscal/ingestion/adn-transport.js.map +1 -0
  396. package/dist/fiscal/ingestion/direction.d.ts +60 -0
  397. package/dist/fiscal/ingestion/direction.d.ts.map +1 -0
  398. package/dist/fiscal/ingestion/direction.js +32 -0
  399. package/dist/fiscal/ingestion/direction.js.map +1 -0
  400. package/dist/fiscal/ingestion/nfse-adn.d.ts +91 -0
  401. package/dist/fiscal/ingestion/nfse-adn.d.ts.map +1 -0
  402. package/dist/fiscal/ingestion/nfse-adn.js +222 -0
  403. package/dist/fiscal/ingestion/nfse-adn.js.map +1 -0
  404. package/dist/fiscal/ingestion/pipeline.d.ts +168 -0
  405. package/dist/fiscal/ingestion/pipeline.d.ts.map +1 -0
  406. package/dist/fiscal/ingestion/pipeline.js +699 -0
  407. package/dist/fiscal/ingestion/pipeline.js.map +1 -0
  408. package/dist/fiscal/ingestion/provider.d.ts +206 -0
  409. package/dist/fiscal/ingestion/provider.d.ts.map +1 -0
  410. package/dist/fiscal/ingestion/provider.js +47 -0
  411. package/dist/fiscal/ingestion/provider.js.map +1 -0
  412. package/dist/fiscal/ingestion/repository.d.ts +82 -0
  413. package/dist/fiscal/ingestion/repository.d.ts.map +1 -0
  414. package/dist/fiscal/ingestion/repository.js +127 -0
  415. package/dist/fiscal/ingestion/repository.js.map +1 -0
  416. package/dist/fiscal/ingestion/synthetic-provider.d.ts +92 -0
  417. package/dist/fiscal/ingestion/synthetic-provider.d.ts.map +1 -0
  418. package/dist/fiscal/ingestion/synthetic-provider.js +99 -0
  419. package/dist/fiscal/ingestion/synthetic-provider.js.map +1 -0
  420. package/dist/fiscal/ingestion/synthetic-transport-types.d.ts +19 -0
  421. package/dist/fiscal/ingestion/synthetic-transport-types.d.ts.map +1 -0
  422. package/dist/fiscal/ingestion/synthetic-transport-types.js +9 -0
  423. package/dist/fiscal/ingestion/synthetic-transport-types.js.map +1 -0
  424. package/dist/fiscal/ingestion/synthetic-transport.d.ts +55 -0
  425. package/dist/fiscal/ingestion/synthetic-transport.d.ts.map +1 -0
  426. package/dist/fiscal/ingestion/synthetic-transport.js +57 -0
  427. package/dist/fiscal/ingestion/synthetic-transport.js.map +1 -0
  428. package/dist/fiscal/ingestion/xml-reader.d.ts +55 -0
  429. package/dist/fiscal/ingestion/xml-reader.d.ts.map +1 -0
  430. package/dist/fiscal/ingestion/xml-reader.js +112 -0
  431. package/dist/fiscal/ingestion/xml-reader.js.map +1 -0
  432. package/dist/fiscal/repository.d.ts +220 -0
  433. package/dist/fiscal/repository.d.ts.map +1 -0
  434. package/dist/fiscal/repository.js +449 -0
  435. package/dist/fiscal/repository.js.map +1 -0
  436. package/dist/fiscal/sync/circuit.d.ts +86 -0
  437. package/dist/fiscal/sync/circuit.d.ts.map +1 -0
  438. package/dist/fiscal/sync/circuit.js +118 -0
  439. package/dist/fiscal/sync/circuit.js.map +1 -0
  440. package/dist/fiscal/sync/intervention.d.ts +81 -0
  441. package/dist/fiscal/sync/intervention.d.ts.map +1 -0
  442. package/dist/fiscal/sync/intervention.js +135 -0
  443. package/dist/fiscal/sync/intervention.js.map +1 -0
  444. package/dist/fiscal/sync/lease.d.ts +118 -0
  445. package/dist/fiscal/sync/lease.d.ts.map +1 -0
  446. package/dist/fiscal/sync/lease.js +139 -0
  447. package/dist/fiscal/sync/lease.js.map +1 -0
  448. package/dist/fiscal/sync/observability.d.ts +148 -0
  449. package/dist/fiscal/sync/observability.d.ts.map +1 -0
  450. package/dist/fiscal/sync/observability.js +239 -0
  451. package/dist/fiscal/sync/observability.js.map +1 -0
  452. package/dist/fiscal/sync/orchestrator.d.ts +132 -0
  453. package/dist/fiscal/sync/orchestrator.d.ts.map +1 -0
  454. package/dist/fiscal/sync/orchestrator.js +487 -0
  455. package/dist/fiscal/sync/orchestrator.js.map +1 -0
  456. package/dist/fiscal/sync/policy.d.ts +87 -0
  457. package/dist/fiscal/sync/policy.d.ts.map +1 -0
  458. package/dist/fiscal/sync/policy.js +136 -0
  459. package/dist/fiscal/sync/policy.js.map +1 -0
  460. package/dist/fiscal/sync/reprocess.d.ts +76 -0
  461. package/dist/fiscal/sync/reprocess.d.ts.map +1 -0
  462. package/dist/fiscal/sync/reprocess.js +237 -0
  463. package/dist/fiscal/sync/reprocess.js.map +1 -0
  464. package/dist/fiscal/sync/retry.d.ts +82 -0
  465. package/dist/fiscal/sync/retry.d.ts.map +1 -0
  466. package/dist/fiscal/sync/retry.js +176 -0
  467. package/dist/fiscal/sync/retry.js.map +1 -0
  468. package/dist/fiscal/sync/secret-boundary.d.ts +169 -0
  469. package/dist/fiscal/sync/secret-boundary.d.ts.map +1 -0
  470. package/dist/fiscal/sync/secret-boundary.js +116 -0
  471. package/dist/fiscal/sync/secret-boundary.js.map +1 -0
  472. package/dist/fiscal/transport/https.d.ts +86 -0
  473. package/dist/fiscal/transport/https.d.ts.map +1 -0
  474. package/dist/fiscal/transport/https.js +303 -0
  475. package/dist/fiscal/transport/https.js.map +1 -0
  476. package/dist/fiscal/transport/synthetic-tls.d.ts +99 -0
  477. package/dist/fiscal/transport/synthetic-tls.d.ts.map +1 -0
  478. package/dist/fiscal/transport/synthetic-tls.js +374 -0
  479. package/dist/fiscal/transport/synthetic-tls.js.map +1 -0
  480. package/dist/fiscal/transport/types.d.ts +134 -0
  481. package/dist/fiscal/transport/types.d.ts.map +1 -0
  482. package/dist/fiscal/transport/types.js +88 -0
  483. package/dist/fiscal/transport/types.js.map +1 -0
  484. package/dist/import/br-documents.d.ts +26 -0
  485. package/dist/import/br-documents.d.ts.map +1 -0
  486. package/dist/import/br-documents.js +78 -0
  487. package/dist/import/br-documents.js.map +1 -0
  488. package/dist/import/clients-import.d.ts +122 -4
  489. package/dist/import/clients-import.d.ts.map +1 -1
  490. package/dist/import/clients-import.js +341 -41
  491. package/dist/import/clients-import.js.map +1 -1
  492. package/dist/index.d.ts +145 -13
  493. package/dist/index.d.ts.map +1 -1
  494. package/dist/index.js +120 -7
  495. package/dist/index.js.map +1 -1
  496. package/dist/legal/documents.d.ts +12 -1
  497. package/dist/legal/documents.d.ts.map +1 -1
  498. package/dist/legal/documents.js +162 -18
  499. package/dist/legal/documents.js.map +1 -1
  500. package/dist/legal/index.d.ts +2 -2
  501. package/dist/legal/index.d.ts.map +1 -1
  502. package/dist/legal/index.js +1 -1
  503. package/dist/legal/index.js.map +1 -1
  504. package/dist/legal/types.d.ts +114 -2
  505. package/dist/legal/types.d.ts.map +1 -1
  506. package/dist/legal/types.js.map +1 -1
  507. package/dist/onboarding/persistence.d.ts +10 -1
  508. package/dist/onboarding/persistence.d.ts.map +1 -1
  509. package/dist/onboarding/persistence.js +4 -4
  510. package/dist/onboarding/persistence.js.map +1 -1
  511. package/dist/pilot/go-live-checklist.d.ts +41 -0
  512. package/dist/pilot/go-live-checklist.d.ts.map +1 -0
  513. package/dist/pilot/go-live-checklist.js +209 -0
  514. package/dist/pilot/go-live-checklist.js.map +1 -0
  515. package/dist/pilot/milestone.d.ts +56 -0
  516. package/dist/pilot/milestone.d.ts.map +1 -0
  517. package/dist/pilot/milestone.js +74 -0
  518. package/dist/pilot/milestone.js.map +1 -0
  519. package/dist/platform/capabilities.d.ts +88 -0
  520. package/dist/platform/capabilities.d.ts.map +1 -0
  521. package/dist/platform/capabilities.js +169 -0
  522. package/dist/platform/capabilities.js.map +1 -0
  523. package/dist/platform/job-contract.d.ts +232 -0
  524. package/dist/platform/job-contract.d.ts.map +1 -0
  525. package/dist/platform/job-contract.js +403 -0
  526. package/dist/platform/job-contract.js.map +1 -0
  527. package/dist/rbac/catalog.d.ts.map +1 -1
  528. package/dist/rbac/catalog.js +110 -0
  529. package/dist/rbac/catalog.js.map +1 -1
  530. package/dist/subscription-billing/index.d.ts +8 -5
  531. package/dist/subscription-billing/index.d.ts.map +1 -1
  532. package/dist/subscription-billing/index.js +4 -3
  533. package/dist/subscription-billing/index.js.map +1 -1
  534. package/dist/subscription-billing/platform-exemption.d.ts +89 -0
  535. package/dist/subscription-billing/platform-exemption.d.ts.map +1 -0
  536. package/dist/subscription-billing/platform-exemption.js +113 -0
  537. package/dist/subscription-billing/platform-exemption.js.map +1 -0
  538. package/dist/subscription-billing/service.d.ts +74 -0
  539. package/dist/subscription-billing/service.d.ts.map +1 -1
  540. package/dist/subscription-billing/service.js +182 -16
  541. package/dist/subscription-billing/service.js.map +1 -1
  542. package/dist/tenancy/features.d.ts +69 -0
  543. package/dist/tenancy/features.d.ts.map +1 -0
  544. package/dist/tenancy/features.js +123 -0
  545. package/dist/tenancy/features.js.map +1 -0
  546. package/dist/tenancy/settings.d.ts +63 -0
  547. package/dist/tenancy/settings.d.ts.map +1 -0
  548. package/dist/tenancy/settings.js +218 -0
  549. package/dist/tenancy/settings.js.map +1 -0
  550. package/dist/users/repository.d.ts +16 -1
  551. package/dist/users/repository.d.ts.map +1 -1
  552. package/dist/users/repository.js +24 -1
  553. package/dist/users/repository.js.map +1 -1
  554. package/dist/vault/repository.d.ts +69 -1
  555. package/dist/vault/repository.d.ts.map +1 -1
  556. package/dist/vault/repository.js +88 -5
  557. package/dist/vault/repository.js.map +1 -1
  558. package/package.json +10 -2
  559. package/src/db/migrations/0045_role_write_scope.sql +122 -0
  560. package/src/db/migrations/0046_pilot_activation_model.sql +184 -0
  561. package/src/db/migrations/0047_recipient_clearance.sql +89 -0
  562. package/src/db/migrations/0048_item_type_note.sql +16 -0
  563. package/src/db/migrations/0049_national_fiscal_engine.sql +279 -0
  564. package/src/db/migrations/0050_fiscal_vocabulary_readonly.sql +29 -0
  565. package/src/db/migrations/0051_seed_rules_from_catalog.sql +72 -0
  566. package/src/db/migrations/0052_fiscal_rule_delete_scope.sql +57 -0
  567. package/src/db/migrations/0053_rule_validity_lower_bound.sql +44 -0
  568. package/src/db/migrations/0054_tenant_profile_and_rule_source.sql +89 -0
  569. package/src/db/migrations/0055_job_capability_contract.sql +300 -0
  570. package/src/db/migrations/0056_fiscal_document_ingestion.sql +337 -0
  571. package/src/db/migrations/0057_fiscal_pending_event_inbox.sql +228 -0
  572. package/src/db/migrations/0058_fiscal_operational_engine.sql +516 -0
  573. package/src/db/migrations/0059_fiscal_contract_version.sql +59 -0
  574. package/src/db/migrations/0060_fiscal_credential_vault_and_run_authorization.sql +321 -0
  575. package/src/db/migrations/0061_client_official_registry_provenance.sql +193 -0
  576. package/src/db/migrations/0062_first_contact_and_capability_truth.sql +119 -0
@@ -0,0 +1,126 @@
1
+ import { uuidv7 } from '@baruk/shared';
2
+ import { appendAudit } from '../audit/audit.js';
3
+ import { getTenantFiscalAutomation, } from './eligibility.js';
4
+ /**
5
+ * Declara em que ambiente o escritório opera automação fiscal.
6
+ *
7
+ * `production` é a fronteira entre ensaio e operação real: a partir dela, o
8
+ * material de um contribuinte pode ser apresentado a um servidor da Receita. Por
9
+ * isso o ato é auditado com o modo anterior e o novo — "passou a ser produção"
10
+ * não responde a pergunta que se faz meses depois.
11
+ */
12
+ export async function setTenantFiscalAutomation(tx, input) {
13
+ const anterior = await getTenantFiscalAutomation(tx);
14
+ const ligando = input.mode !== 'disabled';
15
+ await tx `
16
+ INSERT INTO tenant_fiscal_automation (tenant_id, mode, enabled_at, enabled_by, note, updated_at)
17
+ VALUES (
18
+ current_setting('app.current_tenant')::uuid, ${input.mode},
19
+ ${ligando ? new Date() : null}, ${ligando ? input.actorId : null},
20
+ ${input.note ?? null}, now()
21
+ )
22
+ ON CONFLICT (tenant_id) DO UPDATE SET
23
+ mode = EXCLUDED.mode,
24
+ enabled_at = EXCLUDED.enabled_at,
25
+ enabled_by = EXCLUDED.enabled_by,
26
+ note = EXCLUDED.note,
27
+ updated_at = now()
28
+ `;
29
+ await appendAudit(tx, {
30
+ actorId: input.actorId,
31
+ action: 'fiscal_automation_mode_changed',
32
+ resourceType: 'tenant_fiscal_automation',
33
+ resourceId: null,
34
+ metadata: { from: anterior.mode, to: input.mode, note: input.note ?? null },
35
+ });
36
+ return getTenantFiscalAutomation(tx);
37
+ }
38
+ export async function listClientFiscalEnrollments(tx, clientId) {
39
+ const rows = await tx `
40
+ SELECT document_type, enrolled_at, enrolled_by, revoked_at, note
41
+ FROM client_fiscal_enrollment
42
+ WHERE client_id = ${clientId}
43
+ ORDER BY document_type, enrolled_at DESC
44
+ `;
45
+ return rows.map((r) => ({
46
+ documentType: r.document_type,
47
+ enrolledAt: r.enrolled_at.toISOString(),
48
+ enrolledBy: r.enrolled_by,
49
+ revokedAt: r.revoked_at?.toISOString() ?? null,
50
+ note: r.note,
51
+ active: r.revoked_at === null,
52
+ }));
53
+ }
54
+ /**
55
+ * Matricula um cliente para UM tipo de documento.
56
+ *
57
+ * A granularidade é o ponto: NFS-e e NF-e são conectores diferentes, com
58
+ * maturidades diferentes. Uma matrícula que valesse "para tudo" habilitaria o
59
+ * cliente num conector que talvez nem exista.
60
+ *
61
+ * Rematricular um cliente revogado o reativa — e o registro guarda as duas
62
+ * datas, porque quem revogou tinha um motivo e ele não deve sumir.
63
+ */
64
+ export async function enrollClientFiscal(tx, input) {
65
+ await tx `
66
+ INSERT INTO client_fiscal_enrollment (
67
+ id, tenant_id, client_id, document_type, enrolled_at, enrolled_by, note
68
+ ) VALUES (
69
+ ${uuidv7()}, current_setting('app.current_tenant')::uuid, ${input.clientId},
70
+ ${input.documentType}, now(), ${input.actorId}, ${input.note ?? null}
71
+ )
72
+ -- O índice único é PARCIAL (WHERE revoked_at IS NULL), e o ON CONFLICT
73
+ -- precisa repetir o predicado: sem ele o Postgres não sabe qual índice usar
74
+ -- e a instrução falha.
75
+ --
76
+ -- E a consequência do índice ser parcial é desejável: rematricular um
77
+ -- cliente que foi revogado cria uma linha NOVA em vez de reescrever a
78
+ -- antiga. Quem revogou tinha um motivo, e ele fica no registro.
79
+ ON CONFLICT (tenant_id, client_id, document_type) WHERE revoked_at IS NULL
80
+ DO UPDATE SET
81
+ enrolled_at = now(), enrolled_by = ${input.actorId}, note = ${input.note ?? null}
82
+ `;
83
+ await appendAudit(tx, {
84
+ actorId: input.actorId,
85
+ action: 'fiscal_enrollment_created',
86
+ resourceType: 'client_fiscal_enrollment',
87
+ resourceId: null,
88
+ metadata: { clientId: input.clientId, documentType: input.documentType },
89
+ });
90
+ return listClientFiscalEnrollments(tx, input.clientId);
91
+ }
92
+ /** Tira o cliente da automação. Não apaga o histórico. */
93
+ export async function revokeClientFiscalEnrollment(tx, input) {
94
+ await tx `
95
+ UPDATE client_fiscal_enrollment
96
+ SET revoked_at = now(), revoked_by = ${input.actorId},
97
+ note = COALESCE(${input.reason ?? null}, note)
98
+ WHERE client_id = ${input.clientId}
99
+ AND document_type = ${input.documentType}
100
+ AND revoked_at IS NULL
101
+ `;
102
+ await appendAudit(tx, {
103
+ actorId: input.actorId,
104
+ action: 'fiscal_enrollment_revoked',
105
+ resourceType: 'client_fiscal_enrollment',
106
+ resourceId: null,
107
+ metadata: {
108
+ clientId: input.clientId,
109
+ documentType: input.documentType,
110
+ reason: input.reason ?? null,
111
+ },
112
+ });
113
+ return listClientFiscalEnrollments(tx, input.clientId);
114
+ }
115
+ /** As duas chaves numa leitura só, para a tela não fazer duas viagens. */
116
+ export async function readFiscalEnrollmentView(tx, clientId) {
117
+ return {
118
+ automation: await getTenantFiscalAutomation(tx),
119
+ enrollments: await listClientFiscalEnrollments(tx, clientId),
120
+ };
121
+ }
122
+ /** O ambiente declarado casa com o pedido? Chave-geral do portão. */
123
+ export function automationCovers(automation, environment) {
124
+ return automation.mode !== 'disabled' && automation.mode === environment;
125
+ }
126
+ //# sourceMappingURL=enrollment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enrollment.js","sourceRoot":"","sources":["../../src/fiscal/enrollment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EACL,yBAAyB,GAI1B,MAAM,kBAAkB,CAAC;AAqD1B;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,EAAM,EACN,KAA4E;IAE5E,MAAM,QAAQ,GAAG,MAAM,yBAAyB,CAAC,EAAE,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC;IAE1C,MAAM,EAAE,CAAA;;;qDAG2C,KAAK,CAAC,IAAI;QACvD,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;QAC9D,KAAK,CAAC,IAAI,IAAI,IAAI;;;;;;;;GAQvB,CAAC;IAEF,MAAM,WAAW,CAAC,EAAE,EAAE;QACpB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,MAAM,EAAE,gCAAgC;QACxC,YAAY,EAAE,0BAA0B;QACxC,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE;KAC5E,CAAC,CAAC;IAEH,OAAO,yBAAyB,CAAC,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,EAAM,EACN,QAAgB;IAEhB,MAAM,IAAI,GAAG,MAAM,EAAE,CAQpB;;;yBAGsB,QAAQ;;GAE9B,CAAC;IACF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACtB,YAAY,EAAE,CAAC,CAAC,aAAmC;QACnD,UAAU,EAAE,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE;QACvC,UAAU,EAAE,CAAC,CAAC,WAAW;QACzB,SAAS,EAAE,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,IAAI;QAC9C,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,MAAM,EAAE,CAAC,CAAC,UAAU,KAAK,IAAI;KAC9B,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,EAAM,EACN,KAKC;IAED,MAAM,EAAE,CAAA;;;;QAIF,MAAM,EAAE,kDAAkD,KAAK,CAAC,QAAQ;QACxE,KAAK,CAAC,YAAY,YAAY,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,IAAI,IAAI,IAAI;;;;;;;;;;;2CAW/B,KAAK,CAAC,OAAO,YAAY,KAAK,CAAC,IAAI,IAAI,IAAI;GACnF,CAAC;IAEF,MAAM,WAAW,CAAC,EAAE,EAAE;QACpB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,MAAM,EAAE,2BAA2B;QACnC,YAAY,EAAE,0BAA0B;QACxC,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE;KACzE,CAAC,CAAC;IAEH,OAAO,2BAA2B,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;AACzD,CAAC;AAED,0DAA0D;AAC1D,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,EAAM,EACN,KAKC;IAED,MAAM,EAAE,CAAA;;8CAEoC,KAAK,CAAC,OAAO;6BAC9B,KAAK,CAAC,MAAM,IAAI,IAAI;yBACxB,KAAK,CAAC,QAAQ;6BACV,KAAK,CAAC,YAAY;;GAE5C,CAAC;IAEF,MAAM,WAAW,CAAC,EAAE,EAAE;QACpB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,MAAM,EAAE,2BAA2B;QACnC,YAAY,EAAE,0BAA0B;QACxC,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE;YACR,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI;SAC7B;KACF,CAAC,CAAC;IAEH,OAAO,2BAA2B,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;AACzD,CAAC;AAED,0EAA0E;AAC1E,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,EAAM,EACN,QAAgB;IAEhB,OAAO;QACL,UAAU,EAAE,MAAM,yBAAyB,CAAC,EAAE,CAAC;QAC/C,WAAW,EAAE,MAAM,2BAA2B,CAAC,EAAE,EAAE,QAAQ,CAAC;KAC7D,CAAC;AACJ,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,gBAAgB,CAC9B,UAAkC,EAClC,WAA8B;IAE9B,OAAO,UAAU,CAAC,IAAI,KAAK,UAAU,IAAI,UAAU,CAAC,IAAI,KAAK,WAAW,CAAC;AAC3E,CAAC"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Fixtures SINTÉTICAS de NFS-e, conformes ao leiaute oficial.
3
+ *
4
+ * Nenhum documento de pessoa ou empresa real. Os CNPJ usados são os de teste
5
+ * consagrados (`11.222.333/0001-81` e derivados com DV válido) e os nomes são
6
+ * inventados. O município é Goiânia (5208707) porque é o do escritório piloto,
7
+ * e o dado é público.
8
+ *
9
+ * A estrutura segue `NFSe_v1.01.xsd` / `tiposComplexos_v1.01.xsd`
10
+ * (`nfse-esquemas_xsd-v1-01-20260209.zip`, 09/02/2026): raiz `NFSe`, atributo
11
+ * `versao`, `infNFSe` com `@Id` de 53 posições, `emit`, `DPS/infDPS/toma`,
12
+ * `valores`, e o bloco `IBSCBS` que a v1.01 já traz.
13
+ *
14
+ * A chave obedece a regra do XSD: `"NFS" + IBGE(7) + AmbGer(1) + TpInsc(1) +
15
+ * Insc(14) + nNFSe(13) + AAMM(4) + cNum(9) + DV(1)`.
16
+ */
17
+ interface NfseFixtureInput {
18
+ nNFSe: string;
19
+ cNum: string;
20
+ emitCnpj?: string;
21
+ emitNome?: string;
22
+ tomaCnpj?: string;
23
+ tomaNome?: string;
24
+ /** Intermediário (`interm` do DPS). Ausente = o bloco não é emitido. */
25
+ intermCnpj?: string;
26
+ intermNome?: string;
27
+ /** `false` remove o bloco `toma` — o caso em que a direção não decide. */
28
+ withToma?: boolean;
29
+ dhProc?: string;
30
+ valor?: string;
31
+ anoMes?: string;
32
+ withIbsCbs?: boolean;
33
+ }
34
+ /** Monta a chave de 53 posições exatamente como o XSD a descreve. */
35
+ export declare function nfseAccessKey(input: {
36
+ nNFSe: string;
37
+ cNum: string;
38
+ anoMes: string;
39
+ emitCnpj: string;
40
+ dv?: string;
41
+ }): string;
42
+ export declare function nfseFixture(input: NfseFixtureInput): string;
43
+ /** Evento de cancelamento sobre uma chave existente. */
44
+ export declare function nfseCancellationFixture(chNFSe: string, seq?: string): string;
45
+ /** XML malformado — tag não fechada. */
46
+ export declare const MALFORMED_XML = "<NFSe versao=\"1.01\"><infNFSe Id=\"NFS1\">";
47
+ /** XML bem formado, mas de raiz que este adapter não reconhece. */
48
+ export declare const UNKNOWN_ROOT_XML = "<?xml version=\"1.0\"?><DPS xmlns=\"http://www.sped.fazenda.gov.br/nfse\" versao=\"1.01\"><infDPS/></DPS>";
49
+ /**
50
+ * Ataque XXE clássico. O leitor tem de RECUSAR na entrada — e a recusa não
51
+ * depende de configuração, porque ele não sabe expandir entidade.
52
+ */
53
+ export declare const XXE_ATTACK_XML = "<?xml version=\"1.0\"?>\n<!DOCTYPE NFSe [<!ENTITY xxe SYSTEM \"file:///etc/passwd\">]>\n<NFSe xmlns=\"http://www.sped.fazenda.gov.br/nfse\" versao=\"1.01\">\n <infNFSe Id=\"NFS52087071211222333000181000000000000126090000000010\">\n <emit><CNPJ>&xxe;</CNPJ><xNome>x</xNome></emit>\n </infNFSe>\n</NFSe>";
54
+ /** Chave fora do formato de 53 posições. */
55
+ export declare function nfseInvalidKeyFixture(): string;
56
+ export {};
57
+ //# sourceMappingURL=nfse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nfse.d.ts","sourceRoot":"","sources":["../../../../src/fiscal/ingestion/__fixtures__/nfse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,UAAU,gBAAgB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAMD,qEAAqE;AACrE,wBAAgB,aAAa,CAAC,KAAK,EAAE;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,GAAG,MAAM,CAYT;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CA+D3D;AAED,wDAAwD;AACxD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAM,GAAG,MAAM,CAUzE;AAED,wCAAwC;AACxC,eAAO,MAAM,aAAa,gDAA4C,CAAC;AAEvE,mEAAmE;AACnE,eAAO,MAAM,gBAAgB,8GAC0E,CAAC;AAExG;;;GAGG;AACH,eAAO,MAAM,cAAc,uTAMnB,CAAC;AAET,4CAA4C;AAC5C,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C"}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Fixtures SINTÉTICAS de NFS-e, conformes ao leiaute oficial.
3
+ *
4
+ * Nenhum documento de pessoa ou empresa real. Os CNPJ usados são os de teste
5
+ * consagrados (`11.222.333/0001-81` e derivados com DV válido) e os nomes são
6
+ * inventados. O município é Goiânia (5208707) porque é o do escritório piloto,
7
+ * e o dado é público.
8
+ *
9
+ * A estrutura segue `NFSe_v1.01.xsd` / `tiposComplexos_v1.01.xsd`
10
+ * (`nfse-esquemas_xsd-v1-01-20260209.zip`, 09/02/2026): raiz `NFSe`, atributo
11
+ * `versao`, `infNFSe` com `@Id` de 53 posições, `emit`, `DPS/infDPS/toma`,
12
+ * `valores`, e o bloco `IBSCBS` que a v1.01 já traz.
13
+ *
14
+ * A chave obedece a regra do XSD: `"NFS" + IBGE(7) + AmbGer(1) + TpInsc(1) +
15
+ * Insc(14) + nNFSe(13) + AAMM(4) + cNum(9) + DV(1)`.
16
+ */
17
+ const IBGE_GOIANIA = '5208707';
18
+ const AMB_GERADOR = '1';
19
+ const TIPO_INSCRICAO_CNPJ = '2';
20
+ /** Monta a chave de 53 posições exatamente como o XSD a descreve. */
21
+ export function nfseAccessKey(input) {
22
+ const key = 'NFS' +
23
+ IBGE_GOIANIA +
24
+ AMB_GERADOR +
25
+ TIPO_INSCRICAO_CNPJ +
26
+ input.emitCnpj.padStart(14, '0') +
27
+ input.nNFSe.padStart(13, '0') +
28
+ input.anoMes +
29
+ input.cNum.padStart(9, '0') +
30
+ (input.dv ?? '0');
31
+ return key;
32
+ }
33
+ export function nfseFixture(input) {
34
+ const emitCnpj = input.emitCnpj ?? '11222333000181';
35
+ const tomaCnpj = input.tomaCnpj ?? '04252011000110';
36
+ const dhProc = input.dhProc ?? '2026-09-03T14:20:00-03:00';
37
+ const anoMes = input.anoMes ?? '2609';
38
+ const valor = input.valor ?? '1500.00';
39
+ const chave = nfseAccessKey({ nNFSe: input.nNFSe, cNum: input.cNum, anoMes, emitCnpj });
40
+ return `<?xml version="1.0" encoding="UTF-8"?>
41
+ <NFSe xmlns="http://www.sped.fazenda.gov.br/nfse" versao="1.01">
42
+ <infNFSe Id="${chave}">
43
+ <xLocEmi>Goiania</xLocEmi>
44
+ <xLocPrestacao>Goiania</xLocPrestacao>
45
+ <nNFSe>${input.nNFSe}</nNFSe>
46
+ <cLocIncid>${IBGE_GOIANIA}</cLocIncid>
47
+ <xLocIncid>Goiania</xLocIncid>
48
+ <verAplic>SINTETICO-1.0</verAplic>
49
+ <ambGer>${AMB_GERADOR}</ambGer>
50
+ <tpEmis>1</tpEmis>
51
+ <procEmi>1</procEmi>
52
+ <cStat>100</cStat>
53
+ <dhProc>${dhProc}</dhProc>
54
+ <nDFSe>${input.nNFSe}</nDFSe>
55
+ <emit>
56
+ <CNPJ>${emitCnpj}</CNPJ>
57
+ <IM>123456</IM>
58
+ <xNome>${input.emitNome ?? 'Prestadora Sintetica Ltda'}</xNome>
59
+ </emit>
60
+ <DPS>
61
+ <infDPS>${input.withToma === false
62
+ ? ''
63
+ : `
64
+ <toma>
65
+ <CNPJ>${tomaCnpj}</CNPJ>
66
+ <xNome>${input.tomaNome ?? 'Tomadora Sintetica Ltda'}</xNome>
67
+ </toma>`}${input.intermCnpj
68
+ ? `
69
+ <interm>
70
+ <CNPJ>${input.intermCnpj}</CNPJ>
71
+ <xNome>${input.intermNome ?? 'Intermediaria Sintetica Ltda'}</xNome>
72
+ </interm>`
73
+ : ''}
74
+ </infDPS>
75
+ </DPS>
76
+ <valores>
77
+ <vServPrest>${valor}</vServPrest>
78
+ <vLiq>${valor}</vLiq>
79
+ </valores>${input.withIbsCbs === false
80
+ ? ''
81
+ : `
82
+ <IBSCBS>
83
+ <gIBSCBS>
84
+ <vBC>${valor}</vBC>
85
+ </gIBSCBS>
86
+ </IBSCBS>`}
87
+ </infNFSe>
88
+ </NFSe>`;
89
+ }
90
+ /** Evento de cancelamento sobre uma chave existente. */
91
+ export function nfseCancellationFixture(chNFSe, seq = '1') {
92
+ return `<?xml version="1.0" encoding="UTF-8"?>
93
+ <evento xmlns="http://www.sped.fazenda.gov.br/nfse" versao="1.01">
94
+ <infEvento Id="EVT${chNFSe.slice(3, 20)}">
95
+ <chNFSe>${chNFSe}</chNFSe>
96
+ <tpEvento>101101</tpEvento>
97
+ <nSeqEvento>${seq}</nSeqEvento>
98
+ <dhEvento>2026-09-05T09:00:00-03:00</dhEvento>
99
+ </infEvento>
100
+ </evento>`;
101
+ }
102
+ /** XML malformado — tag não fechada. */
103
+ export const MALFORMED_XML = '<NFSe versao="1.01"><infNFSe Id="NFS1">';
104
+ /** XML bem formado, mas de raiz que este adapter não reconhece. */
105
+ export const UNKNOWN_ROOT_XML = '<?xml version="1.0"?><DPS xmlns="http://www.sped.fazenda.gov.br/nfse" versao="1.01"><infDPS/></DPS>';
106
+ /**
107
+ * Ataque XXE clássico. O leitor tem de RECUSAR na entrada — e a recusa não
108
+ * depende de configuração, porque ele não sabe expandir entidade.
109
+ */
110
+ export const XXE_ATTACK_XML = `<?xml version="1.0"?>
111
+ <!DOCTYPE NFSe [<!ENTITY xxe SYSTEM "file:///etc/passwd">]>
112
+ <NFSe xmlns="http://www.sped.fazenda.gov.br/nfse" versao="1.01">
113
+ <infNFSe Id="NFS52087071211222333000181000000000000126090000000010">
114
+ <emit><CNPJ>&xxe;</CNPJ><xNome>x</xNome></emit>
115
+ </infNFSe>
116
+ </NFSe>`;
117
+ /** Chave fora do formato de 53 posições. */
118
+ export function nfseInvalidKeyFixture() {
119
+ return nfseFixture({ nNFSe: '1', cNum: '1' }).replace(/Id="NFS\d+"/, 'Id="NFS123"');
120
+ }
121
+ //# sourceMappingURL=nfse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nfse.js","sourceRoot":"","sources":["../../../../src/fiscal/ingestion/__fixtures__/nfse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAoBH,MAAM,YAAY,GAAG,SAAS,CAAC;AAC/B,MAAM,WAAW,GAAG,GAAG,CAAC;AACxB,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEhC,qEAAqE;AACrE,MAAM,UAAU,aAAa,CAAC,KAM7B;IACC,MAAM,GAAG,GACP,KAAK;QACL,YAAY;QACZ,WAAW;QACX,mBAAmB;QACnB,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC;QAChC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC;QAC7B,KAAK,CAAC,MAAM;QACZ,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;QAC3B,CAAC,KAAK,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC;IACpB,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,gBAAgB,CAAC;IACpD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,gBAAgB,CAAC;IACpD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,2BAA2B,CAAC;IAC3D,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC;IACtC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,SAAS,CAAC;IACvC,MAAM,KAAK,GAAG,aAAa,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAExF,OAAO;;iBAEQ,KAAK;;;aAGT,KAAK,CAAC,KAAK;iBACP,YAAY;;;cAGf,WAAW;;;;cAIX,MAAM;aACP,KAAK,CAAC,KAAK;;cAEV,QAAQ;;eAEP,KAAK,CAAC,QAAQ,IAAI,2BAA2B;;;gBAIpD,KAAK,CAAC,QAAQ,KAAK,KAAK;QACtB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC;;kBAEM,QAAQ;mBACP,KAAK,CAAC,QAAQ,IAAI,yBAAyB;gBAExD,GACE,KAAK,CAAC,UAAU;QACd,CAAC,CAAC;;kBAEM,KAAK,CAAC,UAAU;mBACf,KAAK,CAAC,UAAU,IAAI,8BAA8B;kBACnD;QACR,CAAC,CAAC,EACN;;;;oBAIc,KAAK;cACX,KAAK;gBAEb,KAAK,CAAC,UAAU,KAAK,KAAK;QACxB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC;;;eAGK,KAAK;;cAGhB;;QAEI,CAAC;AACT,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,uBAAuB,CAAC,MAAc,EAAE,GAAG,GAAG,GAAG;IAC/D,OAAO;;sBAEa,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;cAC3B,MAAM;;kBAEF,GAAG;;;UAGX,CAAC;AACX,CAAC;AAED,wCAAwC;AACxC,MAAM,CAAC,MAAM,aAAa,GAAG,yCAAyC,CAAC;AAEvE,mEAAmE;AACnE,MAAM,CAAC,MAAM,gBAAgB,GAC3B,qGAAqG,CAAC;AAExG;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;QAMtB,CAAC;AAET,4CAA4C;AAC5C,MAAM,UAAU,qBAAqB;IACnC,OAAO,WAAW,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;AACtF,CAAC"}
@@ -0,0 +1,123 @@
1
+ import { type ClientTlsMaterial, type FiscalTransport } from '../transport/types.js';
2
+ import { type AdnEnvelopeProfile } from '../contracts/nfse-adn-contract.js';
3
+ import { FiscalProviderError, type FiscalEnvironmentTag, type FiscalFetchResult } from './provider.js';
4
+ /**
5
+ * O transporte do ADN — pronto até onde a documentação oficial chega, e parado
6
+ * exatamente onde ela para.
7
+ *
8
+ * ## O que está PROVADO aqui, e o que está apenas PREPARADO
9
+ *
10
+ * **Provado**: a resolução e a AUTORIZAÇÃO do destino (allowlist), a forma da
11
+ * requisição, o encadeamento de NSU, a montagem do TLS mútuo, os tetos de
12
+ * tamanho e de descompressão, e o mapeamento de erro. Tudo isso é exercitado
13
+ * contra o servidor TLS sintético em toda execução da suíte.
14
+ *
15
+ * **Preparado, não provado**: os nomes dos campos do envelope e o status HTTP de
16
+ * cada desfecho. Não por falta de procura: as dezesseis URLs de Swagger que o
17
+ * gov.br publica para o ADN — oito módulos × dois ambientes — não devolvem UM
18
+ * byte de HTTP sem certificado ICP-Brasil de cliente (medido em 2026-09-08). O
19
+ * host que documenta a API é o mesmo que exige a credencial para documentá-la.
20
+ *
21
+ * Por isso o perfil oficial tem `verified: false`, e por isso este transporte
22
+ * recusa `homologation` E `production` — não apenas produção, como na fase
23
+ * anterior. Produção restrita é servidor do governo tanto quanto produção; um
24
+ * parser suposto contra ela devolveria zero documentos com sucesso aparente do
25
+ * mesmo jeito, e o cursor avançaria sobre lotes vazios até a fiscalização.
26
+ *
27
+ * ## Dois portões independentes, e é de propósito
28
+ *
29
+ * 1. `ADN_ENVELOPE_UNVERIFIED` — não sabemos ler a resposta.
30
+ * 2. `ADN_REAL_TRANSPORT_DISABLED` — ninguém autorizou falar.
31
+ *
32
+ * Nenhum implica o outro. No dia em que alguém conferir o envelope, o portão 1
33
+ * abre e o 2 continua fechado — porque ver a resposta uma vez não é o mesmo que
34
+ * autorizar o produto a sincronizar carteira de cliente sozinho.
35
+ */
36
+ /** @deprecated Use `NFSE_ADN_HOSTS`. Mantido para não quebrar quem já importa. */
37
+ export declare const ADN_HOSTS: Readonly<Record<"production" | "homologation", string>>;
38
+ /**
39
+ * @deprecated Use `NFSE_ADN_ENVELOPE_SHAPE_VERIFIED` (envelope) ou
40
+ * `NFSE_ADN_PAYLOAD_SHAPE_VERIFIED` (conteúdo).
41
+ *
42
+ * A constante única confundia duas perguntas: sabemos ler o XML da NFS-e (sim,
43
+ * contra o XSD oficial v1.01) e sabemos ler o envelope que o embrulha (não).
44
+ * Um leitor concluía do `false` que também não sabíamos ler o documento.
45
+ */
46
+ export declare const ADN_RESPONSE_SHAPE_VERIFIED = false;
47
+ export interface AdnDfeTransportOptions {
48
+ environment: FiscalEnvironmentTag;
49
+ /** Material do contribuinte. Sem ele o handshake do ADN nem começa. */
50
+ tls: ClientTlsMaterial;
51
+ /** Base do serviço. Passa pela allowlist; nunca é destino livre. */
52
+ baseUrl?: string;
53
+ /** Transporte injetável. Ausente = HTTPS real com o material acima. */
54
+ transport?: FiscalTransport;
55
+ /**
56
+ * O perfil de envelope. Ausente = o do ambiente.
57
+ *
58
+ * Injetável porque é assim que o portão 2 fica testável em isolamento: com um
59
+ * perfil já conferido, o portão 1 passa e o 2 é quem recusa. Um teste que só
60
+ * conseguisse ver o primeiro "não" nunca provaria que existe um segundo.
61
+ */
62
+ profile?: AdnEnvelopeProfile;
63
+ timeoutMs?: number;
64
+ }
65
+ /**
66
+ * Resolve a URL de um lote.
67
+ *
68
+ * `GET /DFe/{NSU}` — o NSU é a posição de onde continuar. `0` é o começo
69
+ * disponível, e é o que se envia quando não há cursor: não existe "sem
70
+ * parâmetro" nesta API.
71
+ *
72
+ * Cursor ilegível LANÇA, e não volta para `0` em silêncio como fazia antes.
73
+ * Voltar para `0` contra o ambiente nacional refaz a varredura inteira do
74
+ * cliente — que é consumo, e consumo excessivo é o `cStat 656`, cujo bloqueio
75
+ * recai sobre o CNPJ do CLIENTE. Um cursor corrompido é defeito para
76
+ * investigar, não condição para recomeçar.
77
+ */
78
+ export declare function adnDfeUrl(baseUrl: string, fromNsu: string | null): string;
79
+ /** `GET /NFSe/{ChaveAcesso}/Eventos` — os eventos de um documento específico. */
80
+ export declare function adnEventsUrl(baseUrl: string, accessKey: string): string;
81
+ /**
82
+ * Status HTTP → erro do provedor, com a espera que o servidor pediu.
83
+ *
84
+ * A tradução mora aqui porque ela é do PROTOCOLO: `429` com `Retry-After` é o
85
+ * servidor dizendo quando voltar, e o motor de retentativa consome essa data em
86
+ * vez de estimar uma.
87
+ *
88
+ * ## O `404` deixou de significar "lote vazio"
89
+ *
90
+ * Ele era mapeado para "não há documento neste NSU" por analogia com o
91
+ * `cStat 137` da NF-e. A analogia não se sustenta: o ADN publica um MECANISMO
92
+ * PRÓPRIO para dizer isso — os códigos `E2215` e `E2230` do ANEXO_IV — e não
93
+ * publica status HTTP nenhum. Traduzir um status suposto em lote vazio é
94
+ * exatamente a fabricação de sucesso que esta fase existe para eliminar.
95
+ *
96
+ * Agora o `404` devolve `null` para que o CORPO seja lido: se ele trouxer o
97
+ * código oficial, o leitor de envelope o reconhece como "sem documentos"; se não
98
+ * trouxer, o leitor recusa. A decisão passa a sair do que o ADN diz, e não do
99
+ * que supomos que o status dele significa.
100
+ */
101
+ export declare function mapAdnStatus(status: number, headers: Readonly<Record<string, string>>, now?: Date): FiscalProviderError | null;
102
+ /** O perfil que um ambiente usa quando o chamador não escolhe. */
103
+ export declare function defaultAdnProfile(environment: FiscalEnvironmentTag): AdnEnvelopeProfile;
104
+ /**
105
+ * Os portões do transporte real, em ordem, e o motivo de cada um.
106
+ *
107
+ * Exportada porque a tela precisa dizer POR QUE não sincroniza — e porque um
108
+ * portão que só existe dentro de uma função não é conferível por teste sem
109
+ * construir o transporte inteiro.
110
+ */
111
+ export declare function assertAdnTransportAllowed(environment: FiscalEnvironmentTag, profile: AdnEnvelopeProfile): void;
112
+ /** O transporte do ADN, pronto para receber uma credencial real — e travado. */
113
+ export declare function createAdnDfeTransport(options: AdnDfeTransportOptions): {
114
+ readonly contractVersion: string;
115
+ readonly profileId: string;
116
+ fetchDfe(input: {
117
+ actorDocument: string;
118
+ fromNsu: string | null;
119
+ batchLimit: number;
120
+ environment: FiscalEnvironmentTag;
121
+ }): Promise<FiscalFetchResult>;
122
+ };
123
+ //# sourceMappingURL=adn-transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adn-transport.d.ts","sourceRoot":"","sources":["../../../src/fiscal/ingestion/adn-transport.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACrB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAOL,KAAK,kBAAkB,EACxB,MAAM,mCAAmC,CAAC;AAG3C,OAAO,EACL,mBAAmB,EACnB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACvB,MAAM,eAAe,CAAC;AAEvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,kFAAkF;AAClF,eAAO,MAAM,SAAS,yDAAiB,CAAC;AAExC;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B,QAAmC,CAAC;AAE5E,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,oBAAoB,CAAC;IAClC,uEAAuE;IACvE,GAAG,EAAE,iBAAiB,CAAC;IACvB,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uEAAuE;IACvE,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAKzE;AAED,iFAAiF;AACjF,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAOvE;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACzC,GAAG,GAAE,IAAiB,GACrB,mBAAmB,GAAG,IAAI,CAsB5B;AAED,kEAAkE;AAClE,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,oBAAoB,GAAG,kBAAkB,CAIvF;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,oBAAoB,EACjC,OAAO,EAAE,kBAAkB,GAC1B,IAAI,CA+BN;AAED,gFAAgF;AAChF,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG;IACtE,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE;QACd,aAAa,EAAE,MAAM,CAAC;QACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,oBAAoB,CAAC;KACnC,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAChC,CAiFA"}