@sinete/nfe 0.0.0 → 0.1.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 (101) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +11 -0
  3. package/README.md +147 -1
  4. package/dist/build/build.d.ts +127 -0
  5. package/dist/build/build.d.ts.map +1 -0
  6. package/dist/build/destinatario.d.ts +19 -0
  7. package/dist/build/destinatario.d.ts.map +1 -0
  8. package/dist/build/ibscbs.d.ts +27 -0
  9. package/dist/build/ibscbs.d.ts.map +1 -0
  10. package/dist/build/icms.d.ts +42 -0
  11. package/dist/build/icms.d.ts.map +1 -0
  12. package/dist/build/nfce.d.ts +122 -0
  13. package/dist/build/nfce.d.ts.map +1 -0
  14. package/dist/build/pl.d.ts +19 -0
  15. package/dist/build/pl.d.ts.map +1 -0
  16. package/dist/build/rejeicoes.d.ts +52 -0
  17. package/dist/build/rejeicoes.d.ts.map +1 -0
  18. package/dist/build/tributos.d.ts +45 -0
  19. package/dist/build/tributos.d.ts.map +1 -0
  20. package/dist/build/values.d.ts +48 -0
  21. package/dist/build/values.d.ts.map +1 -0
  22. package/dist/decimal.d.ts +66 -0
  23. package/dist/decimal.d.ts.map +1 -0
  24. package/dist/format.d.ts +48 -0
  25. package/dist/format.d.ts.map +1 -0
  26. package/dist/ibs-cbs.d.ts +14 -0
  27. package/dist/ibs-cbs.d.ts.map +1 -0
  28. package/dist/ibs-cbs.js +43 -0
  29. package/dist/ibs-cbs.js.map +10 -0
  30. package/dist/index.d.ts +37 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +4370 -0
  33. package/dist/index.js.map +33 -0
  34. package/dist/issues.d.ts +24 -0
  35. package/dist/issues.d.ts.map +1 -0
  36. package/dist/model.d.ts +861 -0
  37. package/dist/model.d.ts.map +1 -0
  38. package/dist/ports.d.ts +109 -0
  39. package/dist/ports.d.ts.map +1 -0
  40. package/dist/rotulo.d.ts +12 -0
  41. package/dist/rotulo.d.ts.map +1 -0
  42. package/dist/rtc.d.ts +65 -0
  43. package/dist/rtc.d.ts.map +1 -0
  44. package/dist/services/client.d.ts +273 -0
  45. package/dist/services/client.d.ts.map +1 -0
  46. package/dist/services/gzip.d.ts +7 -0
  47. package/dist/services/gzip.d.ts.map +1 -0
  48. package/dist/services/index.d.ts +14 -0
  49. package/dist/services/index.d.ts.map +1 -0
  50. package/dist/services/outcome.d.ts +15 -0
  51. package/dist/services/outcome.d.ts.map +1 -0
  52. package/dist/services/proc.d.ts +41 -0
  53. package/dist/services/proc.d.ts.map +1 -0
  54. package/dist/services/recuperar.d.ts +28 -0
  55. package/dist/services/recuperar.d.ts.map +1 -0
  56. package/dist/services/resolver.d.ts +88 -0
  57. package/dist/services/resolver.d.ts.map +1 -0
  58. package/dist/services/soap.d.ts +43 -0
  59. package/dist/services/soap.d.ts.map +1 -0
  60. package/dist/time.d.ts +12 -0
  61. package/dist/time.d.ts.map +1 -0
  62. package/dist/versao-gerada.d.ts +3 -0
  63. package/dist/versao-gerada.d.ts.map +1 -0
  64. package/package.json +58 -3
  65. package/src/build/build.ts +1486 -0
  66. package/src/build/destinatario.ts +212 -0
  67. package/src/build/ibscbs.ts +131 -0
  68. package/src/build/icms.ts +645 -0
  69. package/src/build/nfce.ts +425 -0
  70. package/src/build/pl.ts +73 -0
  71. package/src/build/rejeicoes.ts +142 -0
  72. package/src/build/tributos.ts +217 -0
  73. package/src/build/values.ts +126 -0
  74. package/src/data/arredondamento.json +30 -0
  75. package/src/data/cstat.json +36 -0
  76. package/src/data/fusos.json +17 -0
  77. package/src/data/nfce-urls.json +170 -0
  78. package/src/data/produtor-rural.json +17 -0
  79. package/src/data/reforma.json +6 -0
  80. package/src/data/resp-tec.json +13 -0
  81. package/src/data/servicos.json +44 -0
  82. package/src/data/suframa.json +7 -0
  83. package/src/decimal.ts +231 -0
  84. package/src/format.ts +64 -0
  85. package/src/ibs-cbs.ts +89 -0
  86. package/src/index.ts +153 -0
  87. package/src/issues.ts +80 -0
  88. package/src/model.ts +1033 -0
  89. package/src/ports.ts +96 -0
  90. package/src/rotulo.ts +137 -0
  91. package/src/rtc.ts +305 -0
  92. package/src/services/client.ts +1085 -0
  93. package/src/services/gzip.ts +26 -0
  94. package/src/services/index.ts +43 -0
  95. package/src/services/outcome.ts +50 -0
  96. package/src/services/proc.ts +164 -0
  97. package/src/services/recuperar.ts +91 -0
  98. package/src/services/resolver.ts +127 -0
  99. package/src/services/soap.ts +133 -0
  100. package/src/time.ts +23 -0
  101. package/src/versao-gerada.ts +3 -0
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Montagem dos documentos processados (`nfeProc`, `procEventoNFe`, `ProcInutNFe`) por splice de texto. O documento
3
+ * assinado entra byte a byte como foi assinado e o protocolo entra como fatia da resposta recebida: nada é reparseado
4
+ * para gerar saída nem reserializado (invariante do repositório, ADR 0003).
5
+ */
6
+ import type { XmlDocument, XmlElement } from '@sinete/core/xml';
7
+ /** Namespace dos documentos da NF-e. */
8
+ export declare const NFE_NS = "http://www.portalfiscal.inf.br/nfe";
9
+ /**
10
+ * Recorta o elemento da fonte, acrescentando na tag de abertura só as declarações de namespace que ele usa e que
11
+ * estão em ancestrais fora do recorte. O default entra apenas quando difere de `parentDefaultNs` (o default do
12
+ * envelope onde a fatia vai morar).
13
+ */
14
+ export declare function sliceElement(doc: XmlDocument, el: XmlElement, parentDefaultNs?: string): string;
15
+ /** Documento assinado já conferido: a string como veio (sem a declaração XML) e o que se lê dela. */
16
+ export interface DocumentoAssinado {
17
+ /** O texto que vai no envelope, byte a byte o assinado (só a declaração XML inicial removida). */
18
+ readonly xml: string;
19
+ /** `Id` do elemento assinado (`NFe3526...`, `ID110111...`). */
20
+ readonly id: string;
21
+ /** DigestValue da assinatura (base64). */
22
+ readonly digestValue: string;
23
+ readonly doc: XmlDocument;
24
+ }
25
+ /**
26
+ * Confere que `xml` é um documento `raiz` assinado (no namespace da NF-e, com `Signature` referenciando o filho
27
+ * `elemento`) e devolve a string sem a declaração XML. Lança `ConfigError` para qualquer outra coisa: o serviço nunca
28
+ * "conserta" o documento de quem chama.
29
+ */
30
+ export declare function documentoAssinado(xml: string, raiz: string, elemento: string): DocumentoAssinado;
31
+ /**
32
+ * NF-e assinada de dentro de um `nfeProc` (ou a própria NF-e assinada), como fatia do texto e sem a declaração XML,
33
+ * pronta para `consultar`, `resolverEnvioSemResposta` e a retomada, que recusam raiz sem `xmlns` próprio. O `NFe` dentro
34
+ * do proc herda os namespaces do envelope; eles são declarados na raiz da fatia. O C14N inclusivo do `infNFe` já os
35
+ * enxergava em escopo, então o digest e a assinatura são os mesmos dentro e fora do proc. Nada mais muda nos bytes.
36
+ * Lança `ConfigError` quando não há NF-e assinada (proc de outro documento, NFe sem assinatura, XML malformado).
37
+ */
38
+ export declare function nfeAssinadaDoProc(xml: string): string;
39
+ /** `<raiz xmlns versao>` + partes + `</raiz>`, sem tocar nas partes. */
40
+ export declare function envelope(raiz: string, versao: string, partes: readonly string[]): string;
41
+ //# sourceMappingURL=proc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proc.d.ts","sourceRoot":"","sources":["../../src/services/proc.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAWhE,wCAAwC;AACxC,eAAO,MAAM,MAAM,uCAAuC,CAAC;AAI3D;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,eAAe,GAAE,MAAe,GAAG,MAAM,CAmCvG;AAkBD,qGAAqG;AACrG,MAAM,WAAW,iBAAiB;IAChC,kGAAkG;IAClG,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;CAC3B;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,iBAAiB,CAuBhG;AAOD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAwBrD;AAED,wEAAwE;AACxE,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAExF"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Recuperação de um evento que a SEFAZ registrou e cuja resposta se perdeu.
3
+ *
4
+ * Um pedido de evento sem resposta (timeout, conexão caída), ou respondido com 573 (duplicidade de evento) ou 580
5
+ * (evento já registrado no contexto do cancelamento), pode ter sido registrado. O `cStat` sozinho não prova: 573 e
6
+ * 580 dizem que algo foi registrado antes, não que foi este evento, com este conteúdo e para esta chave. A prova é a
7
+ * consulta da chave, que devolve os `procEventoNFe` que a SEFAZ tem (MOC 7.0, Visão Geral, consulta protocolo). Esta
8
+ * função lê o evento de lá e só o dá como registrado quando o retorno dele diz 135, 136 ou 155 para a mesma chave e o
9
+ * mesmo tipo.
10
+ */
11
+ import type { ConsultaOutcome, EventoRegistrado, NfeClient } from './client.js';
12
+ /** Resultado da recuperação: o evento registrado, com a consulta que o prova, ou só a consulta. */
13
+ export type RecuperacaoEvento = {
14
+ readonly registrado: true;
15
+ readonly evento: EventoRegistrado;
16
+ readonly consulta: ConsultaOutcome;
17
+ } | {
18
+ readonly registrado: false;
19
+ readonly consulta: ConsultaOutcome;
20
+ };
21
+ /**
22
+ * Consulta a chave e devolve o evento `tpEvento` que a SEFAZ registrou para ela (o de maior `nSeqEvento`, quando há
23
+ * vários, como na CC-e). Serve depois de um pedido de evento sem resposta ou respondido com 573 ou 580: nunca conclua
24
+ * que o evento existe só pelo `cStat` do pedido. `registrado: false` quer dizer que a consulta não mostrou o evento
25
+ * (ou não decidiu: veja `consulta`); não quer dizer que o evento não existe.
26
+ */
27
+ export declare function recuperarEventoRegistrado(client: NfeClient, chave: string, tpEvento: string): Promise<RecuperacaoEvento>;
28
+ //# sourceMappingURL=recuperar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recuperar.d.ts","sourceRoot":"","sources":["../../src/services/recuperar.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAIhF,mGAAmG;AACnG,MAAM,MAAM,iBAAiB,GACzB;IAAE,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAA;CAAE,GACpG;IAAE,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAA;CAAE,CAAC;AAkDvE;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,iBAAiB,CAAC,CAU5B"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Envio sem resposta e duplicidade na autorização.
3
+ *
4
+ * Idempotência: a chave de acesso contém o `cNF` e o número da nota, e o `digVal` do protocolo é o DigestValue do
5
+ * conteúdo autorizado. Enquanto o mesmo XML assinado (os mesmos bytes) for reenviado, a SEFAZ ou autoriza, ou devolve
6
+ * duplicidade (204) com o protocolo existente. Gerar outro `cNF`, outro `dhEmi` ou reassinar depois de um envio sem
7
+ * resposta cria uma segunda nota para o mesmo número: a primeira pode ter sido autorizada, e a segunda cai em 539
8
+ * (duplicidade com diferença na chave) ou, pior, é autorizada com outra chave se o número mudar. Por isso:
9
+ *
10
+ * 1. grave o XML assinado antes de enviar;
11
+ * 2. envio sem resposta (timeout, conexão caída) ou 204: consulte a chave (`resolverEnvioSemResposta`);
12
+ * 3. `reenviar` (cStat 217, a NF-e não consta): reenvie exatamente os bytes gravados;
13
+ * 4. `concluida`: o `nfeProc` vem montado com o XML gravado, sem novo envio.
14
+ *
15
+ * O `digVal` é opcional no protocolo (`TProtNFe/infProt/digVal`, minOccurs 0 no `leiauteNFe_v4.00.xsd` do PL_010), e
16
+ * há autorizador que o omite. Sem ele, nada prova que o conteúdo registrado é o destes bytes, e as duas decisões se
17
+ * separam:
18
+ *
19
+ * - denegação (110, 301, 302, 303; MOC 7.0 Anexo I, tabela 4.4.3 e regras 1C17-40, 5E17-40 e 5E17-60) é decisão
20
+ * sobre a chave: a NF-e fica registrada como denegada e o número não pode ser reaproveitado nem inutilizado, qualquer
21
+ * que seja o conteúdo. A resolução é `concluida` com o protocolo, e `conteudo` diz se o `digVal` confere, falta ou
22
+ * difere; o `nfeProc` só vem quando confere;
23
+ * - autorização sem `digVal` não prova que a NF-e autorizada é esta: `sem-prova`, e quem chama decide com um humano.
24
+ *
25
+ * Fontes: MOC 7.0 Anexo I (RV 204 "Duplicidade de NF-e", RV 539 "Duplicidade de NF-e com diferença na Chave de
26
+ * Acesso [chNFe: ...]") e serviço de consulta protocolo (cStat 217; 561, 562 e 613 quando a numeração tem outra NF-e).
27
+ */
28
+ import type { Rejected } from '@sinete/core';
29
+ import type { AutorizacaoOutcome, ConsultaOutcome, NfeClient } from './client.js';
30
+ /**
31
+ * O que o `digVal` do protocolo diz dos bytes assinados: `confere` (é o DigestValue deles), `sem-digval` (o protocolo
32
+ * não o traz) ou `difere` (a SEFAZ registrou outro conteúdo com a mesma chave).
33
+ */
34
+ export type ConteudoDoProtocolo = 'confere' | 'sem-digval' | 'difere';
35
+ /** O que fazer com uma NF-e cujo envio ficou sem resposta ou voltou como duplicidade. */
36
+ export type ResolucaoEnvio =
37
+ /**
38
+ * A chave está decidida: autorizada (ou cancelada) com o mesmo conteúdo, e `outcome` traz o protocolo e o `nfeProc`;
39
+ * ou denegada, com qualquer conteúdo (a denegação é da chave), e `outcome` traz o protocolo, com o `nfeProc` só
40
+ * quando `conteudo` é `confere`.
41
+ */
42
+ {
43
+ readonly acao: 'concluida';
44
+ readonly situacao: 'autorizada' | 'cancelada' | 'denegada';
45
+ readonly conteudo: ConteudoDoProtocolo;
46
+ readonly outcome: AutorizacaoOutcome;
47
+ }
48
+ /** A NF-e não consta na SEFAZ (217): reenvie `nfeAssinada`, os mesmos bytes. */
49
+ | {
50
+ readonly acao: 'reenviar';
51
+ readonly nfeAssinada: string;
52
+ }
53
+ /**
54
+ * Existe outra NF-e para o mesmo número: a mesma chave com outro conteúdo (`digVal` diferente) ou outra chave (539 no
55
+ * envio, ou 561, 562 e 613 na consulta; `chNFe` extraída do `xMotivo` quando vier). Não reenvie: recupere a nota registrada e descarte a local.
56
+ */
57
+ | {
58
+ readonly acao: 'divergente';
59
+ readonly chNFe?: string;
60
+ readonly consulta?: ConsultaOutcome;
61
+ readonly motivo: Rejected | ConsultaOutcome;
62
+ }
63
+ /**
64
+ * A chave está autorizada (ou cancelada), mas o protocolo não traz `digVal`: nada prova que o conteúdo autorizado é o
65
+ * destes bytes. Não reenvie nem descarte a nota local, e não a guarde como autorizada sem conferir o XML registrado
66
+ * na SEFAZ (a Distribuição DF-e ou o portal devolvem a NF-e autorizada).
67
+ */
68
+ | {
69
+ readonly acao: 'sem-prova';
70
+ readonly situacao: 'autorizada' | 'cancelada';
71
+ readonly consulta: ConsultaOutcome;
72
+ }
73
+ /**
74
+ * A consulta não decidiu (serviço paralisado, consumo indevido, rejeição de schema, situação sem protocolo): tente de
75
+ * novo mais tarde, sem descartar a nota local.
76
+ */
77
+ | {
78
+ readonly acao: 'indefinida';
79
+ readonly outcome: ConsultaOutcome;
80
+ };
81
+ /** Chave de acesso que a SEFAZ informa no `xMotivo` da rejeição 539 (`[chNFe:...]`), se houver. */
82
+ export declare function chaveDaDuplicidade(xMotivo: string): string | undefined;
83
+ /**
84
+ * Resolve um envio de autorização sem resposta, ou cuja resposta foi 204 ou 539, consultando a chave da NF-e
85
+ * assinada. `anterior` é o desfecho do envio, quando houve um.
86
+ */
87
+ export declare function resolverEnvioSemResposta(client: NfeClient, nfeAssinada: string, anterior?: AutorizacaoOutcome): Promise<ResolucaoEnvio>;
88
+ //# sourceMappingURL=resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/services/resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,SAAS,EAAgB,MAAM,aAAa,CAAC;AAIhG;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,YAAY,GAAG,QAAQ,CAAC;AAEtE,yFAAyF;AACzF,MAAM,MAAM,cAAc;AACxB;;;;GAIG;AACD;IACE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,WAAW,GAAG,UAAU,CAAC;IAC3D,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;CACtC;AACH,gFAAgF;GAC9E;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAAE;AAC7D;;;GAGG;GACD;IACE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,eAAe,CAAC;CAC7C;AACH;;;;GAIG;GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,WAAW,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAA;CAAE;AACnH;;;GAGG;GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAA;CAAE,CAAC;AAKvE,mGAAmG;AACnG,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEtE;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,kBAAkB,GAC5B,OAAO,CAAC,cAAc,CAAC,CAiCzB"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Chamada SOAP 1.2 a um web service da NF-e 4.00: monta o corpo com o namespace do WSDL (dado em `data/servicos.json`),
3
+ * envia pelo `Transport` injetado e devolve o elemento de retorno como fatia da resposta, com a árvore para leitura.
4
+ */
5
+ import type { Logger } from '@sinete/core';
6
+ import type { XmlDocument, XmlElement } from '@sinete/core/xml';
7
+ import type { EndpointRef, NfeServico, Transport } from '@sinete/transport';
8
+ interface ServicoInfo {
9
+ readonly namespace: string;
10
+ readonly operacao: string;
11
+ readonly envelope?: string;
12
+ /**
13
+ * Autorizadores que pedem a mensagem dentro do elemento da operação do WSDL (`<operacao><nfeDadosMsg>`), como a
14
+ * Distribuição DF-e faz para todos. Valor `operacao`; a fonte fica em `fonteEnvelope`.
15
+ */
16
+ readonly envelopeNoAutorizador?: Readonly<Record<string, string>>;
17
+ readonly fonteEnvelope?: string;
18
+ }
19
+ /** Namespace do WSDL e operação do serviço. */
20
+ export declare function servicoInfo(servico: NfeServico): ServicoInfo;
21
+ /** Corpo SOAP do serviço: a mensagem entra como texto, sem reparse. */
22
+ export declare function soapBodyFor(servico: NfeServico, mensagem: string, autorizador?: string): string;
23
+ /** Resposta de um serviço: o documento inteiro (para fatiar) e o elemento de retorno. */
24
+ export interface RespostaSoap {
25
+ readonly doc: XmlDocument;
26
+ readonly ret: XmlElement;
27
+ readonly status: number;
28
+ }
29
+ export interface ChamadaSoap {
30
+ readonly transport: Transport;
31
+ readonly endpoint: EndpointRef;
32
+ readonly servico: NfeServico;
33
+ readonly mensagem: string;
34
+ /** Nome local do elemento de retorno (`retEnviNFe`, `retConsSitNFe`...). */
35
+ readonly retorno: string;
36
+ readonly timeoutMs?: number;
37
+ readonly signal?: AbortSignal;
38
+ readonly logger: Logger;
39
+ }
40
+ /** Envia e devolve o elemento de retorno. Fault SOAP, retorno ausente ou XML malformado viram `ProtocolError`. */
41
+ export declare function chamar(c: ChamadaSoap): Promise<RespostaSoap>;
42
+ export {};
43
+ //# sourceMappingURL=soap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"soap.d.ts","sourceRoot":"","sources":["../../src/services/soap.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEhE,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAK5E,UAAU,WAAW;IACnB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,qBAAqB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAClE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAID,+CAA+C;AAC/C,wBAAgB,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,WAAW,CAI5D;AAED,uEAAuE;AACvE,wBAAgB,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAM/F;AAED,yFAAyF;AACzF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,4EAA4E;IAC5E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,kHAAkH;AAClH,wBAAsB,MAAM,CAAC,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAsDlE"}
package/dist/time.d.ts ADDED
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Fuso do emitente e formatação dos instantes do leiaute (`TDateTimeUTC`, `AAAA-MM-DDThh:mm:ss±hh:mm`). O fuso vem da
3
+ * tabela `data/fusos.json` pela UF, ou do chamador; nunca do fuso da máquina.
4
+ */
5
+ import type { Clock, Uf } from '@sinete/core';
6
+ /** Instante no tempo, como os relógios do `@sinete/core` o devolvem (o tipo `Date`, sem tocar no global). */
7
+ export type Instante = ReturnType<Clock['now']>;
8
+ /** Deslocamento do horário legal da UF em minutos (`-180` para Brasília). */
9
+ export declare function offsetDaUf(uf: Uf): number;
10
+ /** `TDateTimeUTC` do instante no deslocamento dado. */
11
+ export declare function formatDh(date: Instante, offsetMinutes: number): string;
12
+ //# sourceMappingURL=time.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../src/time.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAI9C,6GAA6G;AAC7G,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAIhD,6EAA6E;AAC7E,wBAAgB,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,MAAM,CAEzC;AAED,uDAAuD;AACvD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAEtE"}
@@ -0,0 +1,3 @@
1
+ /** Versão de `@sinete/nfe`, para o padrão de `verProc`/`verAplic` (`formatarVerProc` do @sinete/core). */
2
+ export declare const VERSAO_PACOTE = "0.1.0";
3
+ //# sourceMappingURL=versao-gerada.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versao-gerada.d.ts","sourceRoot":"","sources":["../src/versao-gerada.ts"],"names":[],"mappings":"AACA,0GAA0G;AAC1G,eAAO,MAAM,aAAa,UAAU,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,61 @@
1
1
  {
2
2
  "name": "@sinete/nfe",
3
- "version": "0.0.0",
4
- "description": "NF-e modelo 55: modelo de entrada tipado, montagem com totais em decimal exato, validação antes de assinar, autorização, consultas, eventos, inutilização, contingência SVC e Distribuição DF-e. Em breve.",
5
- "license": "Apache-2.0"
3
+ "version": "0.1.0",
4
+ "description": "NF-e modelo 55: modelo de entrada tipado, montagem com totais em decimal exato, validação antes de assinar, autorização, consultas, eventos, inutilização, contingência SVC e Distribuição DF-e",
5
+ "keywords": [
6
+ "nfe",
7
+ "dfe",
8
+ "sefaz",
9
+ "nota-fiscal",
10
+ "ibs",
11
+ "cbs",
12
+ "brasil"
13
+ ],
14
+ "license": "Apache-2.0",
15
+ "type": "module",
16
+ "sideEffects": false,
17
+ "engines": {
18
+ "node": "^20.19.0 || >=22.12.0"
19
+ },
20
+ "exports": {
21
+ ".": {
22
+ "types": "./dist/index.d.ts",
23
+ "default": "./dist/index.js"
24
+ },
25
+ "./ibs-cbs": {
26
+ "types": "./dist/ibs-cbs.d.ts",
27
+ "default": "./dist/ibs-cbs.js"
28
+ },
29
+ "./package.json": "./package.json"
30
+ },
31
+ "files": [
32
+ "dist",
33
+ "src",
34
+ "NOTICE"
35
+ ],
36
+ "repository": {
37
+ "type": "git",
38
+ "url": "git+https://github.com/sinete-dev/sinete.git",
39
+ "directory": "packages/nfe"
40
+ },
41
+ "homepage": "https://github.com/sinete-dev/sinete/tree/main/packages/nfe#readme",
42
+ "bugs": "https://github.com/sinete-dev/sinete/issues",
43
+ "scripts": {
44
+ "build": "bun ../../scripts/build.ts ."
45
+ },
46
+ "dependencies": {
47
+ "@sinete/core": "^0.1.0",
48
+ "@sinete/ibs-cbs": "^0.1.0",
49
+ "@sinete/ibs-cbs-dados": "^2026.9.1",
50
+ "@sinete/rejeicoes": "^0.1.0",
51
+ "@sinete/schemas": "^0.1.0",
52
+ "@sinete/transport": "^0.1.0",
53
+ "@sinete/validators": "^0.1.0"
54
+ },
55
+ "devDependencies": {
56
+ "@sinete/sefaz-sim": "^0.1.0"
57
+ },
58
+ "publishConfig": {
59
+ "access": "public"
60
+ }
6
61
  }