import { IntegrationEnum } from "../enums/IntegrationEnum";
import { StateEnum } from "../enums/StateEnum";
import { FineTypeEnum } from "../enums/FineTypeEnum";
import { InterestEnum } from "../enums/InterestEnum";
import { PaymentStatus } from "../enums/PaymentStatus";
import { DiscountEnum } from "../enums/DiscountEnum";
/**
 * Representa um boleto bancário com todos os dados necessários para emissão e integração.
 */
export declare class Boleto {
    constructor(data?: Partial<Boleto>);
    /** Identificador único do boleto */
    id: number;
    /** Valor do boleto em centavos */
    amount: number;
    /** Data de vencimento do boleto */
    dueDate: Date;
    /** Dias após o vencimento para cancelamento automático */
    daysAfterDueDateForCancellation: number;
    /** CPF ou CNPJ do pagador */
    payerDocument: string;
    /** Nome completo do pagador */
    payerName: string;
    /** E-mail do pagador */
    payerEmail: string;
    /** Telefone do pagador */
    payerPhone: string;
    /** CEP do pagador */
    payerZipCode: string;
    /** Número do endereço do pagador */
    payerNumber: string;
    /** Complemento do endereço do pagador */
    payerComplement: string;
    /** Bairro do pagador */
    payerNeighborhood: string;
    /** Cidade do pagador */
    payerCity: string;
    /**
     * Estado (UF) do pagador.
     * Ex: `SP`, `RJ`, `MG`, etc.
     * Valores válidos: `AC`, `AL`, `AP`, `AM`, `BA`, `CE`, `DF`, `ES`, `GO`, `MA`, `MT`,
     * `MS`, `MG`, `PA`, `PB`, `PR`, `PE`, `PI`, `RJ`, `RN`, `RS`, `RO`, `RR`, `SC`, `SP`, `SE`, `TO`.
     */
    payerState: StateEnum;
    /** Endereço completo do pagador */
    payerAddress: string;
    /** Mensagem personalizada (linha 1) */
    messageLine1: string;
    /** Mensagem personalizada (linha 2) */
    messageLine2: string;
    /**
     * Tipo de desconto aplicado:
     * - `NO_DISCOUNT`: Sem desconto
     * - `FIXED_VALUE_UNTIL_INFORMED_DATE`: Valor fixo até a data informada
     * - `PERCENTAGE_UNTIL_INFORMED_DATE`: Percentual até a data informada
     */
    discount1Code: DiscountEnum;
    /** Percentual do primeiro desconto */
    discount1Rate: number;
    /** Valor fixo do primeiro desconto */
    discount1Value: number;
    /** Data limite para o primeiro desconto */
    discount1Date: Date;
    /**
     * Tipo de desconto aplicado:
     * - `NO_DISCOUNT`: Sem desconto
     * - `FIXED_VALUE_UNTIL_INFORMED_DATE`: Valor fixo até a data informada
     * - `PERCENTAGE_UNTIL_INFORMED_DATE`: Percentual até a data informada
     */
    discount2Code: DiscountEnum;
    /** Percentual do segundo desconto */
    discount2Rate: number;
    /** Valor fixo do segundo desconto */
    discount2Value: number;
    /** Data limite para o segundo desconto */
    discount2Date: Date;
    /**
     * Tipo de multa a ser aplicada:
     * - `NO_FINE`: Sem multa
     * - `AMOUNT`: Valor fixo
     * - `PERCENT`: Percentual sobre o valor do boleto
     */
    fineCode: FineTypeEnum;
    /** Data de início da multa */
    fineDate: Date | null;
    /** Percentual da multa */
    fineRate: number;
    /** Valor fixo da multa */
    fineValue: number;
    /**
     * Tipo de juros aplicável ao boleto:
     * - `AMOUNT_PER_DAY`: Valor fixo por dia de atraso
     * - `MONTHLY_RATE`: Percentual mensal de juros
     * - `EXEMPT`: Isento de juros
     */
    interestCode: InterestEnum;
    /** Data de início da cobrança de juros */
    interestDate: Date | null;
    /** Percentual dos juros */
    interestRate: number;
    /** Valor fixo dos juros */
    interestValue: number;
    /** Nome do beneficiário final do boleto */
    finalBeneficiaryName: string;
    /** Documento (CPF/CNPJ) do beneficiário final */
    finalBeneficiaryDocument: string;
    /** CEP do beneficiário final */
    finalBeneficiaryZipCode: string;
    /** Endereço do beneficiário final */
    finalBeneficiaryAddress: string;
    /** Bairro do beneficiário final */
    finalBeneficiaryNeighborhood: string;
    /** Cidade do beneficiário final */
    finalBeneficiaryCity: string;
    /**
     * Estado (UF) do beneficiário final.
     * Ex: `SP`, `RJ`, `MG`, etc.
     * Valores válidos: `AC`, `AL`, `AP`, `AM`, `BA`, `CE`, `DF`, `ES`, `GO`, `MA`, `MT`,
     * `MS`, `MG`, `PA`, `PB`, `PR`, `PE`, `PI`, `RJ`, `RN`, `RS`, `RO`, `RR`, `SC`, `SP`, `SE`, `TO`.
     */
    finalBeneficiaryState: StateEnum;
    /** Código de barras do boleto */
    barcode: string;
    /** Linha digitável do boleto */
    digitableLine: string;
    /** Código QR para pagamento instantâneo (ex: PIX) */
    qrcode: string;
    /** Código de referência interno do sistema */
    referenceCode: string;
    /** Código de integração com a instituição bancária */
    integrationBankingCode: string;
    /**
     * Tipo de integração utilizada com a instituição bancária:
     * - `SICOOB`
     * - `SICREDI`
     * - `INTER`
     * - `SANTANDER`
     * - `BANCODOBRASIL`
     * - `BRADESCO`
     * - `ITAU`
     */
    integrationType: IntegrationEnum;
    /**
     * Status atual do boleto:
     * - `EXPIRED`: Expirado (data de validade final ultrapassada)
     * - `OVERDUE`: Vencido (vencimento ultrapassado, mas ainda válido)
     * - `OPEN`: Aberto (ainda aguardando pagamento)
     * - `PAID`: Pago
     * - `CANCELLED`: Cancelado
     * - `PROCESSING`: Em processamento (aguardando confirmação bancária)
     */
    status?: PaymentStatus;
}
