import { PDFOptions } from 'puppeteer-core';

interface IGerarBoletoAilos {
    banco: Banco.AILOS;
    dados: {
        bancario: IDadosBancario$4;
        parcela: IParcela$4;
    };
}
interface IDadosBancario$4 {
    numero: string;
    numero_dv: string;
    convenio: string;
    carteira: string;
}
interface IParcela$4 {
    id_boleto: number;
    parcela: number;
    vencimento: string | Date;
    valor: number | string;
    pago: number | string;
    data_emissao: string | Date;
}
interface IGerarPDFAilos {
    banco: Banco.AILOS;
    dados: {
        dadosPDF: IDadosPDF$4;
        generatePDF?: (content: string, config: PDFOptions) => Promise<string>;
    };
}
interface IDadosPDF$4 {
    pagador: {
        nome: string;
        cnpj: string;
        endereco: {
            logradouro: string;
            numero: string;
            bairro: string;
            cep: string;
            municipio: string;
            uf: string;
        };
    };
    beneficiario: {
        nome: string;
        cnpj: string;
        dadosBancario: {
            carteira: string;
            convenio: string;
            agencia: string;
            agenciaDigito: string;
            conta: string;
            contaDigito: string;
            juros: number;
            multa: number;
            desconto: number;
            protesto: number;
        };
        endereco: {
            logradouro: string;
            numero: string;
            bairro: string;
            cep: string;
            municipio: string;
            uf: string;
        };
    };
    boleto: {
        dataVencimento: string;
        dataProcessamento: string;
        dataDocumento: string;
        valorCobrado: number | string;
        valorDocumento: number | string;
        valorDescontoAbatimento: number | string;
        valorOutrasDeducoes: number | string;
        valorMulta: number | string;
        valorAcrescimo: number | string;
        quantidade?: number | string;
        valor?: number | string;
        numeroDocumento: string;
        nossoNumero: string;
        especieDocumento: string;
        aceite: string;
        moeda: string;
        usoDoBanco?: string;
        cip?: string;
        codigoBarra: string;
        linhaDigitavel: string;
        codigoBarraImage?: string;
        instrucao1?: string;
        instrucao2?: string;
        instrucao3?: string;
        instrucao4?: string;
        observacoes?: string[];
        nfs: string;
    };
}
interface IGerarRemessaAilos {
    banco: Banco.AILOS;
    dados: {
        remessa: IDadosRemessa$4;
    };
}
interface IDadosRemessa$4 {
    beneficiario: {
        nome: string;
        cnpj: string;
        endereco: {
            logradouro: string;
            numero: string;
            bairro: string;
            cep: string;
            municipio: string;
            uf: string;
        };
    };
    dadosBancario: {
        carteira: string;
        convenio: string;
        agencia: string;
        agenciaDigito: string;
        conta: string;
        contaDigito: string;
        numeroRemessa: string;
        jurosMes: number;
        multaAtraso: number;
        descontoPagamento: number;
        diasProtesto: number;
    };
    boletos: {
        identificacaoTitulo: string;
        vencimento: string | Date;
        valor: number | string;
        nossoNumero: string;
        numeroDocumento: string;
        parcela: number | string;
        aceite: string;
        pagador: {
            nome: string;
            pessoa: 'F' | 'J';
            cpfCnpj: string;
            endereco: {
                logradouro: string;
                numero: string;
                bairro: string;
                cep: string;
                municipio: string;
                uf: string;
            };
        };
    }[];
}
interface IGerarRetornoAilos {
    banco: Banco.AILOS;
    dados: {
        arquivo: string[];
    };
}
interface IDocumentoRetornoAilos {
    id_documento: string;
    especie: string;
    valor: number;
    valor_multa: number;
    valor_juros: number;
    valor_desconto: number;
    valor_total: number;
}

interface IGerarBoletoBradesco {
    banco: Banco.BRADESCO;
    dados: {
        bancario: IDadosBancario$3;
        parcela: IParcela$3;
        bradesco?: boolean;
    };
}
interface IDadosBancario$3 {
    numero: string;
    numero_dv: string;
    convenio: string;
    carteira: string;
}
interface IParcela$3 {
    id_boleto: number;
    parcela: number;
    vencimento: string | Date;
    valor: number | string;
    pago: number | string;
    data_emissao: string | Date;
}
interface IGerarPDFBradesco {
    banco: Banco.BRADESCO;
    dados: {
        dadosPDF: IDadosPDF$3;
        generatePDF?: (content: string, config: PDFOptions) => Promise<string>;
    };
}
interface IDadosPDF$3 {
    pagador: {
        nome: string;
        endereco: {
            logradouro: string;
            numero: string;
            bairro: string;
            cep: string;
            municipio: string;
            uf: string;
        };
    };
    beneficiario: {
        nome: string;
        cnpj: string;
        dadosBancarios: {
            carteira: string;
            convenio: string;
            agencia: string;
            agenciaDigito: string;
            conta: string;
            contaDigito: string;
        };
        endereco: {
            logradouro: string;
            numero: string;
            bairro: string;
            cep: string;
            municipio: string;
            uf: string;
        };
    };
    boleto: {
        dataVencimento: string;
        dataProcessamento: string;
        dataDocumento: string;
        valorCobrado: number | string;
        valorDocumento: number | string;
        valorDescontoAbatimento: number | string;
        valorOutrasDeducoes: number | string;
        valorMulta: number | string;
        valorAcrescimo: number | string;
        quantidade?: number | string;
        valor?: number | string;
        numeroDocumento: string;
        nossoNumero: string;
        especieDocumento: string;
        aceite: 'S' | 'N';
        moeda: string;
        usoDoBanco?: string;
        cip?: string;
        codigoBarra: string;
        codigoBarraImage?: string;
        instrucao1?: string;
        instrucao2?: string;
        instrucao3?: string;
    };
}
interface IGerarRemessaBradesco {
    banco: Banco.BRADESCO;
    dados: {
        remessa: IDadosRemessa$3;
        bradesco?: boolean;
    };
}
interface IDadosRemessa$3 {
    beneficiario: {
        nome: string;
        cnpj: string;
        endereco: {
            logradouro: string;
            numero: string;
            bairro: string;
            cep: string;
            municipio: string;
            uf: string;
        };
    };
    dadosBancario: {
        carteira: string;
        convenio: string;
        agencia: string;
        agenciaDigito: string;
        conta: string;
        contaDigito: string;
        numeroRemessa: string;
        jurosMes: number;
        multaAtraso: number;
        descontoPagamento: number;
        diasProtesto: number;
    };
    boletos: {
        identificacaoTitulo: string;
        vencimento: string | Date;
        valor: number | string;
        nossoNumero: string;
        numeroDocumento: string;
        parcela: number | string;
        pagador: {
            nome: string;
            pessoa: 'F' | 'J';
            cpfCnpj: string;
            endereco: {
                logradouro: string;
                numero: string;
                bairro: string;
                cep: string;
                municipio: string;
                uf: string;
            };
        };
    }[];
}
interface IGerarRetornoBradesco {
    banco: Banco.BRADESCO;
    dados: {
        arquivo: string[];
    };
}

interface IGerarBoletoSicredi {
    banco: Banco.SICREDI;
    dados: {
        bancario: IDadosBancario$2;
        parcela: IParcela$2;
    };
}
interface IDadosBancario$2 {
    agencia: string;
    posto: string;
    codigoCedente: string;
    tipoCobranca: string;
    tipoCarteira: string;
}
interface IParcela$2 {
    id_boleto: number;
    parcela: number;
    vencimento: string | Date;
    valor: number | string;
    pago: number | string;
    data_emissao: string | Date;
    numeroUnico: string;
}
interface IGerarPDFSicredi {
    banco: Banco.SICREDI;
    dados: {
        dadosPDF: IDadosPDF$2;
        generatePDF?: (content: string, config: PDFOptions) => Promise<string>;
    };
}
interface IDadosPDF$2 {
    pagador: {
        nome: string;
        cnpj: string;
        cpf?: boolean;
        endereco: {
            logradouro: string;
            numero: string;
            bairro: string;
            cep: string;
            municipio: string;
            uf: string;
        };
    };
    beneficiario: {
        nome: string;
        cnpj: string;
        dadosBancario: {
            carteira: string;
            convenio: string;
            agencia: string;
            numero: string;
            posto: string;
            juros: number;
            multa: number;
            desconto: number;
            protesto: number;
        };
        endereco: {
            logradouro: string;
            numero: string;
            bairro: string;
            cep: string;
            municipio: string;
            uf: string;
        };
    };
    boleto: {
        dataVencimento: string;
        dataProcessamento: string;
        dataDocumento: string;
        valorCobrado: number | string;
        valorDocumento: number | string;
        valorDescontoAbatimento: number | string;
        valorOutrasDeducoes: number | string;
        valorMulta: number | string;
        valorAcrescimo: number | string;
        quantidade?: number | string;
        valor?: number | string;
        numeroDocumento: string;
        nossoNumero: string;
        especieDocumento: string;
        aceite: string;
        moeda: string;
        usoDoBanco?: string;
        cip?: string;
        codigoBarra: string;
        linhaDigitavel: string;
        codigoBarraImage?: string;
        instrucao1?: string;
        instrucao2?: string;
        instrucao3?: string;
        instrucao4?: string;
        observacoes?: string[];
        nfs: string;
    };
}
interface IGerarRemessaSicredi {
    banco: Banco.SICREDI;
    dados: {
        remessa: IDadosRemessa$2;
        Sicredi?: boolean;
    };
}
interface IDadosRemessa$2 {
    beneficiario: {
        nome: string;
        cnpj: string;
        endereco: {
            logradouro: string;
            numero: string;
            bairro: string;
            cep: string;
            municipio: string;
            uf: string;
        };
    };
    dadosBancario: {
        agencia: string;
        posto: string;
        codigo_cedente: string;
        numeroRemessa: string;
        jurosMes: number;
        multaAtraso: number;
        descontoPagamento: number;
        diasProtesto: number;
    };
    boletos: {
        identificacaoTitulo: string;
        vencimento: string | Date;
        emissao: string | Date;
        valor: number | string;
        nossoNumero: string;
        numeroDocumento: string;
        parcela: number | string;
        aceite: string;
        pagador: {
            nome: string;
            pessoa: 'F' | 'J';
            cpfCnpj: string;
            endereco: {
                logradouro: string;
                numero: string;
                bairro: string;
                cep: string;
                municipio: string;
                uf: string;
            };
        };
    }[];
}
interface IGerarRetornoSicredi {
    banco: Banco.SICREDI;
    dados: {
        arquivo: string[];
    };
}

interface IGerarBoletoSicoob {
    banco: Banco.SICOOB;
    dados: {
        bancario: IDadosBancario$1;
        parcela: IParcela$1;
    };
}
interface IDadosBancario$1 {
    agencia: string;
    codigo_cliente: string;
    codigo_cliente_dv: string;
    modalidade: string;
}
interface IParcela$1 {
    id_boleto: number;
    parcela: number;
    vencimento: string | Date;
    valor: number | string;
}
interface IGerarPDFSicoob {
    banco: Banco.SICOOB;
    dados: {
        dadosPDF: IDadosPDF$1;
        generatePDF?: (content: string, config: PDFOptions) => Promise<string>;
    };
}
interface IDadosPDF$1 {
    beneficiario: {
        nome: string;
        dadosBancario: {
            agencia: string;
            codigo_cliente: string;
            carteira: string;
            juros: number;
            multa: number;
            desconto: number;
            protesto: number;
        };
    };
    pagador: {
        nome: string;
        cnpj: string;
        endereco: {
            logradouro: string;
            numero: string;
            bairro: string;
            cep: string;
            municipio: string;
            uf: string;
        };
    };
    boleto: {
        dataVencimento: string;
        dataProcessamento: string;
        dataDocumento: string;
        valorCobrado: number | string;
        valorDocumento: number | string;
        valorDescontoAbatimento: number | string;
        valorOutrasDeducoes: number | string;
        valorMulta: number | string;
        valorAcrescimo: number | string;
        quantidade?: number | string;
        valor?: number | string;
        parcela: number | string;
        aceite: string;
        numeroDocumento: string;
        nossoNumero: string;
        especieDocumento: string;
        moeda: string;
        usoDoBanco?: string;
        codigoBarra: string;
        linhaDigitavel: string;
        codigoBarraImage?: string;
        localPagamento?: string;
        instrucao1?: string;
        instrucao2?: string;
        instrucao3?: string;
        instrucao4?: string;
        observacoes?: string[];
        nfs: string;
    };
}
interface IGerarRemessaSicoob {
    banco: Banco.SICOOB;
    dados: {
        remessa: IDadosRemessa$1;
    };
}
interface IDadosRemessa$1 {
    beneficiario: {
        nome: string;
        cnpj: string;
    };
    dadosBancario: {
        carteira: string;
        agencia: string;
        agenciaDigito: string;
        conta: string;
        contaDigito: string;
        numeroRemessa: string;
        jurosMes: number;
        multaAtraso: number;
        diasProtesto: number;
        modalidade: string;
    };
    boletos: {
        identificacaoTitulo: string;
        vencimento: string | Date;
        valor: number | string;
        nossoNumero: string;
        numeroDocumento: string;
        parcela: number | string;
        aceite: string;
        pagador: {
            nome: string;
            pessoa: 'F' | 'J';
            cpfCnpj: string;
            endereco: {
                logradouro: string;
                numero: string;
                bairro: string;
                cep: string;
                municipio: string;
                uf: string;
            };
        };
    }[];
}
interface IGerarRetornoSicoob {
    banco: Banco.SICOOB;
    dados: {
        arquivo: string[];
    };
}

interface IGerarBoletoBancoBrasil {
    banco: Banco.BANCO_BRASIL;
    dados: {
        bancario: IDadosBancario;
        parcela: IParcela;
    };
}
interface IDadosBancario {
    convenio: string;
    agencia: string;
    numero: string;
    numero_dv: string;
    carteira: string;
}
interface IParcela {
    id_boleto: number;
    vencimento: string | Date;
    valor: number | string;
}
interface IGerarPDFBancoBrasil {
    banco: Banco.BANCO_BRASIL;
    dados: {
        dadosPDF: IDadosPDF;
    };
}
interface IDadosPDF {
    pagador: {
        nome: string;
        cnpj: string;
        endereco: {
            logradouro: string;
            numero: string;
            bairro: string;
            cep: string;
            municipio: string;
            uf: string;
        };
    };
    beneficiario: {
        nome: string;
        cnpj: string;
        dadosBancario: {
            carteira: string;
            variacao_carteira: string;
            convenio: string;
            agencia: string;
            agenciaDigito: string;
            conta: string;
            contaDigito: string;
            juros: number;
            multa: number;
            desconto: number;
            protesto: number;
        };
        endereco: {
            logradouro: string;
            numero: string;
            bairro: string;
            cep: string;
            municipio: string;
            uf: string;
        };
    };
    boleto: {
        dataVencimento: string;
        dataProcessamento: string;
        dataDocumento: string;
        valorCobrado: number | string;
        valorDocumento: number | string;
        valorDescontoAbatimento: number | string;
        valorOutrasDeducoes: number | string;
        valorMulta: number | string;
        valorAcrescimo: number | string;
        quantidade?: number | string;
        valor?: number | string;
        numeroDocumento: string;
        nossoNumero: string;
        especieDocumento: string;
        aceite: string;
        moeda: string;
        usoDoBanco?: string;
        cip?: string;
        codigoBarra: string;
        linhaDigitavel: string;
        codigoBarraImage?: string;
        instrucao1?: string;
        instrucao2?: string;
        instrucao3?: string;
        instrucao4?: string;
        observacoes?: string[];
        nfs: string;
    };
}
interface IGerarRemessaBancoBrasil {
    banco: Banco.BANCO_BRASIL;
    dados: {
        remessa: IDadosRemessa;
    };
}
interface IDadosRemessa {
    beneficiario: {
        nome: string;
        cnpj: string;
        endereco: {
            logradouro: string;
            numero: string;
            bairro: string;
            cep: string;
            municipio: string;
            uf: string;
        };
    };
    dadosBancario: {
        carteira: string;
        variacao_carteira: string;
        convenio: string;
        agencia: string;
        agenciaDigito: string;
        conta: string;
        contaDigito: string;
        numeroRemessa: string;
        jurosMes: number;
        multaAtraso: number;
        descontoPagamento: number;
        diasProtesto: number;
    };
    boletos: {
        tipoDocumento: 'NFE' | 'FIN' | 'FAT';
        id_boleto: number;
        identificacaoTitulo: string;
        vencimento: string | Date;
        valor: number | string;
        nossoNumero: string;
        numeroDocumento: string;
        parcela: number | string;
        aceite: string;
        pagador: {
            nome: string;
            pessoa: 'F' | 'J';
            cpfCnpj: string;
            endereco: {
                logradouro: string;
                numero: string;
                bairro: string;
                cep: string;
                municipio: string;
                uf: string;
            };
        };
    }[];
}
interface IGerarRetornoBancoBrasil {
    banco: Banco.BANCO_BRASIL;
    dados: {
        arquivo: string[];
    };
}

type IGerarBoleto = IGerarBoletoAilos | IGerarBoletoBradesco | IGerarBoletoSicredi | IGerarBoletoSicoob | IGerarBoletoBancoBrasil;
type IGerarPDF = IGerarPDFAilos | IGerarPDFBradesco | IGerarPDFSicredi | IGerarPDFSicoob | IGerarPDFBancoBrasil;
type IGerarRemessa = IGerarRemessaAilos | IGerarRemessaBradesco | IGerarRemessaSicredi | IGerarRemessaSicoob | IGerarRemessaBancoBrasil;
type IGerarRetorno = IGerarRetornoAilos | IGerarRetornoBradesco | IGerarRetornoSicredi | IGerarRetornoSicoob | IGerarRetornoBancoBrasil;
declare enum Banco {
    AILOS = "085",
    BRADESCO = "005",
    SICREDI = "748",
    SICOOB = "756",
    BANCO_BRASIL = "001"
}

declare function gerar({ banco, dados }: IGerarBoleto): {
    linhaDigitavel: string;
    fatorVencimento: string;
    valor: string;
    nossoNumero: string;
    campoLivre: string;
    digitoGeral: string;
    codigoBarra: string;
} | null | undefined;

declare function pdf({ banco, dados }: IGerarPDF): Promise<{
    erro: boolean;
    dados: string;
} | {
    erro: boolean;
    dados: null;
}> | undefined;

declare function remessa({ banco, dados }: IGerarRemessa): {
    download: string;
    arquivo: string;
} | Promise<{
    download: string;
    arquivo: string;
} | null> | null | undefined;

declare function retorno({ banco, dados }: IGerarRetorno): IDocumentoRetornoAilos[] | null | undefined;

interface IConfig {
    apiClient?: {
        url?: string;
        authorization?: string;
    };
}
declare function defineConfig({ apiClient }: IConfig): void;

declare const _default: {
    gerar: typeof gerar;
    pdf: typeof pdf;
    remessa: typeof remessa;
    retorno: typeof retorno;
};

export { Banco, _default as default, defineConfig };
