open-index/open-npm huggingface dataset:
npm package: @nestjs-fiscal/banking
Description: O pacote `banking` contém as definições, contratos e entidades agnósticas (interfaces) para integrações bancárias dentro do ecossistema NestJS Fiscal BR.
Latest version: 1.0.0

# @nestjs-fiscal/banking

O pacote `banking` contém as definições, contratos e entidades agnósticas (interfaces) para integrações bancárias dentro do ecossistema NestJS Fiscal BR.

## Instalação

```bash
npm install @nestjs-fiscal/banking
```

## O que este pacote contém?

Atualmente, este pacote exporta contratos e interfaces padronizadas para implementações de *Banking as a Service (BaaS)* e provedores bancários.

- **`BankProvider` Interface:**
  Define o contrato básico que todos os módulos integradores bancários (como o Firebank) devem implementar para realizar operações financeiras padronizadas (ex: gerar boletos, pagamentos via Pix, conciliação).

## Exemplo de Uso (Criando seu próprio provedor)

```typescript
import { BankProvider } from '@nestjs-fiscal/banking';

export class MeuBancoProvider implements BankProvider {
  async emitirBoleto(dados: any): Promise<any> {
    // Integração com a API do MeuBanco...
  }

  async consultarPagamento(idTrasnacao: string): Promise<any> {
    // ...
  }
}
```

A vantagem de depender deste pacote é não acoplar a sua regra de negócio a um Gateway/API bancária específica, respeitando a Inversão de Dependência da Clean Architecture.
npm package: @nestjs-fiscal/certificate
Description: Responsável por fornecer as implementações concretas (infraestrutura) para a manipulação de certificados digitais e assinatura de XMLs, baseando-se nas interfaces definidas no pacote `@nestjs-fiscal/core`.
Latest version: 1.0.0

# @nestjs-fiscal/certificate

Responsável por fornecer as implementações concretas (infraestrutura) para a manipulação de certificados digitais e assinatura de XMLs, baseando-se nas interfaces definidas no pacote `@nestjs-fiscal/core`.

## Instalação

```bash
npm install @nestjs-fiscal/certificate @nestjs-fiscal/core
```

## O que este pacote contém?

- `XmlCryptoCertificateSigner`: Uma implementação concreta da interface `CertificateSignerRepository` que utiliza `node-forge` e `xml-crypto` para validar e assinar strings XML (usando Padrão XMLDSig).
- Repositórios em Memória: Classes como `InMemoryCertificateRepository` úteis principalmente para ambientes de Teste/Playground sem uso de banco de dados real.

## Exemplo de Uso

Ao prover suas dependências no seu módulo NestJS, você utilizará a implementação concreta daqui para satisfazer a interface abstrata exigida pelo Core.

```typescript
import { Module } from '@nestjs/common';
import { XmlCryptoCertificateSigner } from '@nestjs-fiscal/certificate';

@Module({
  providers: [
    {
      // Provedor amarrado à interface do 'core'
      provide: 'CertificateSigner', 
      useClass: XmlCryptoCertificateSigner,
    },
    // ...
  ]
})
export class FiscalModule {}
```
npm package: @nestjs-fiscal/core
Description: O pacote `core` contém as interfaces, entidades de domínio e os casos de uso base para emissão e assinatura de documentos fiscais. Ele define os contratos que as outras camadas do sistema deverão seguir.
Latest version: 1.0.0

# @nestjs-fiscal/core

O pacote `core` contém as interfaces, entidades de domínio e os casos de uso base para emissão e assinatura de documentos fiscais. Ele define os contratos que as outras camadas do sistema deverão seguir.

## Instalação

```bash
npm install @nestjs-fiscal/core
```

## O que este pacote contém?

- **Entidades de Domínio:** Modelos base, como `Certificate`, que representam o conceito de um certificado digital.
- **Interfaces:** Interfaces para injeção de dependência (`CertificateSignerRepository`, `CertificateRepository`).
- **DTOs:** Objetos de transferência de dados padronizados (ex: `CreateNFeDTO`).
- **Casos de Uso Base:** Lógica agnóstica de frameworks para `GenerateNFeUseCase` e `SignXmlUseCase`.
- **Utilitários:** Funções auxiliares, como geradores de chave de acesso (`NFeAccessKeyUtil`).

## Exemplo de Uso (Interfaces e Casos de Uso)

Geralmente, você utilizará as classes e interfaces deste pacote para construir outras funcionalidades ou ao configurar seu módulo principal.

```typescript
import { SignXmlUseCase, CertificateSignerRepository, CertificateRepository } from '@nestjs-fiscal/core';

// Injeção manual ou no módulo
const signUseCase = new SignXmlUseCase(
  certificateRepo, // Implementação de CertificateRepository
  signer           // Implementação de CertificateSignerRepository
);

const signedXml = await signUseCase.execute({
  certificateId: 'id-do-certificado-no-banco',
  xml: '<nfe>...</nfe>',
  certificateFile: bufferDoPfx,
  password: 'senha do cerificado',
  referenceTag: 'infNFe',
  referenceAttribute: 'idNFe'
});
```

A arquitetura do projeto garante que o `core` seja isolado e testável sem depender de bibliotecas externas de I/O.
npm package: @nestjs-fiscal/nfe
Description: O pacote `nfe` contém toda a lógica específica para a emissão, validação, cancelamento e inutilização de Notas Fiscais Eletrônicas (NFe v4.00) dentro da arquitetura do NestJS Fiscal BR.
Latest version: 1.0.0

# @nestjs-fiscal/nfe

O pacote `nfe` contém toda a lógica específica para a emissão, validação, cancelamento e inutilização de Notas Fiscais Eletrônicas (NFe v4.00) dentro da arquitetura do NestJS Fiscal BR.

## Instalação

```bash
npm install @nestjs-fiscal/nfe @nestjs-fiscal/core
```

## O que este pacote contém?

- **Use Cases Principais:**
  - `SubmitNFeUseCase`: Fluxo completo de cálculo de impostos, preenchimento, assinatura, validação XSD e envio para a SEFAZ.
  - `CancelNFeUseCase`: Fluxo de cancelamento de evento de NFe.
  - `InutilizarNFeUseCase`: Fluxo para inutilização de numeração de NFe.
  - `GenerateDanfeUseCase`: Geração do PDF (DANFE) a partir do XML.
- **Builders XML:**
  - `NFeXmlBuilder`, `EnviNFeBuilder`, `CancelNFeBuilder`, `InutNFeBuilder`.
- **Serviços Fiscais:**
  - `TaxEngineService`: Motor de cálculo rudimentar para ICMS, IPI, PIS, COFINS com base no CST/CSOSN.
  - `NFeSignerService`: Serviço orquestrador de assinatura.
  - `NFeXsdValidator`: Validação estrutural do XML contra os schemas XSD oficiais da SEFAZ v4.00.
- **Gateways:**
  - `SoapSefazGateway`: Implementação para comunicação direta via SOAP com os Web Services da SEFAZ, utilizando comunicação baseada em certificados digitais (mTLS/HTTPS).

## Exemplo de Uso

Configuração do Módulo no seu sistema NestJS:

```typescript
import { Module } from '@nestjs/common';
import { SubmitNFeUseCase, TaxEngineService, NFeXmlBuilder, EnviNFeBuilder, NFeXsdValidator, SoapSefazGateway } from '@nestjs-fiscal/nfe';
import { SignXmlUseCase, GenerateNFeUseCase } from '@nestjs-fiscal/core';

@Module({
  providers: [
    TaxEngineService,
    NFeXmlBuilder,
    EnviNFeBuilder,
    {
      provide: NFeXsdValidator,
      useFactory: () => new NFeXsdValidator(),
    },
    // ... Provedores base (como repositório e signXml)
    {
      provide: SubmitNFeUseCase,
      useFactory: (gen, sign, xml, val, env, tax, repo) => {
        // Inicialize com o certificado p12 da empresa para as requests SOAP
        const gateway = new SoapSefazGateway(empresaCertP12Buffer, 'senha-certificado');
        return new SubmitNFeUseCase(gen, sign, xml, val, env, gateway, tax, repo);
      },
      inject: [GenerateNFeUseCase, SignXmlUseCase, NFeXmlBuilder, NFeXsdValidator, EnviNFeBuilder, TaxEngineService, 'NFeRepository'],
    }
  ]
})
export class NFeModule {}
```

### Executando a emissão:

```typescript
const result = await this.submitNFeUseCase.execute({
  dto: nfDtoData,           // Dados do CreateNFeDTO
  idLote: '1', 
  certificateId: 'id-cert', // Para assinatura
  certificateFile: pfxBuf,  // Buffer do pfx
  password: 'senha'
});

console.log('Chave de Acesso:', result.accessKey);
console.log('Resposta da SEFAZ:', result.sefazResponse);
```
npm package: @nestjs-fiscal/providers-firebank
Description: Este pacote fornece a implementação concreta das interfaces de `banking` (`BankProvider`) para o provedor de BaaS **Firebank**.
Latest version: 1.0.0

# @nestjs-fiscal/providers-firebank

Este pacote fornece a implementação concreta das interfaces de `banking` (`BankProvider`) para o provedor de BaaS **Firebank**.

## Instalação

```bash
npm install @nestjs-fiscal/providers-firebank @nestjs-fiscal/banking
```

## O que este pacote contém?

- Casos de uso e integrações específicas para as APIs do Firebank.
- Implementação dos contratos definidos em `@nestjs-fiscal/banking`.

## Exemplo de Uso (Conceitual)

No seu módulo NestJS, injete este provedor quando a interface `BankProvider` for solicitada:

```typescript
import { Module } from '@nestjs/common';
import { FirebankService } from '@nestjs-fiscal/providers-firebank'; // Fictício, verifique a classe principal exportada

@Module({
  providers: [
    {
      provide: 'BankProvider',
      useClass: FirebankService
    }
  ]
})
export class BankingModule {}
```