import { Clave } from './Clave';
import { FullConsecutive } from './FullConsecutive';
import { OrderLine } from './OrderLine';
import { Person } from './Person';
import { ReferenceInformation } from './ReferenceInformation';
import { SummaryProps } from './Summary.type';
export type InvoiceProps = {
    clave: Clave;
    providerId: string;
    fullConsecutive: FullConsecutive;
    issueDate: Date;
    emitter: Person;
    receiver?: Person;
    orderLines: OrderLine[];
    conditionSale?: string;
    deadlineCredit?: string;
    paymentMethod?: string;
    summaryInvoice?: SummaryProps;
    referenceInformation?: ReferenceInformation;
    currencyCode?: string;
    exchangeRate?: string;
    others?: {
        OtroTexto: string;
    };
};
type OrderLineSum = {
    totalAmount: number;
    totalTaxes: number;
    totalExempt: number;
    totalExonerated: number;
    totalNonTaxable: number;
};
export declare class Document {
    readonly props: InvoiceProps;
    constructor(props: InvoiceProps);
    get clave(): string;
    get fullConsecutive(): string;
    get providerId(): string;
    get activityCode(): string;
    get issueDate(): Date;
    get emitter(): Person;
    get receiver(): Person | undefined;
    get orderLines(): OrderLine[];
    get conditionSale(): string | undefined;
    get deadlineCredit(): string | undefined;
    get paymentMethod(): string | undefined;
    get others(): {
        OtroTexto: string;
    } | undefined;
    get summaryInvoice(): SummaryProps;
    get referenceInformation(): ReferenceInformation | undefined;
    private isAService;
    private isTaxable;
    private isExempt;
    private isExonerated;
    private isNonTaxable;
    private sumLines;
    sumServicesLines(): OrderLineSum;
    sumMerchandiseLines(): OrderLineSum;
    sumOrderLines(): OrderLineSum;
    static create(props: InvoiceProps): Document;
}
export {};
