import { EGSUnitInfo } from "../egs";
export declare enum ZATCAPaymentMethods {
    CASH = "10",
    CREDIT = "30",
    BANK_ACCOUNT = "42",
    BANK_CARD = "48"
}
export declare enum ZATCAInvoiceTypes {
    INVOICE = "388",
    DEBIT_NOTE = "383",
    CREDIT_NOTE = "381"
}
export interface ZATCAInvoiceLineItemDiscount {
    amount: number;
    reason: string;
}
export interface ZATCAInvoiceLineItemTax {
    percent_amount: number;
}
interface InvoiceLineItem {
    id: string;
    name: string;
    quantity: number;
    tax_exclusive_price: number;
    other_taxes?: ZATCAInvoiceLineItemTax[];
    discounts?: ZATCAInvoiceLineItemDiscount[];
}
declare type ZeroTaxLineItem = InvoiceLineItem & {
    VAT_percent: 0;
    vat_category: {
        code: "O" | "Z" | "E";
        reason_code?: string;
        reason?: string;
    };
};
declare type LineItem = InvoiceLineItem & {
    VAT_percent: 0.15 | 0.05;
};
export declare type ZATCAInvoiceLineItem = LineItem | ZeroTaxLineItem;
export interface ZATCAInvoicCancelation {
    canceled_serial_invoice_number: string;
    payment_method: ZATCAPaymentMethods;
    reason: string;
}
interface ZatcaInvoice {
    egs_info: EGSUnitInfo;
    invoice_counter_number: number;
    invoice_serial_number: string;
    issue_date: string;
    issue_time: string;
    previous_invoice_hash: string;
    line_items: ZATCAInvoiceLineItem[];
}
declare type CreditDebitInvoice = ZatcaInvoice & {
    invoice_type: ZATCAInvoiceTypes.CREDIT_NOTE | ZATCAInvoiceTypes.DEBIT_NOTE;
    cancelation: ZATCAInvoicCancelation;
};
declare type CashInvoice = ZatcaInvoice & {
    invoice_type: ZATCAInvoiceTypes.INVOICE;
    actual_delivery_date?: string;
    latest_delivery_date?: string;
    payment_method?: "10" | "30" | "42" | "48";
};
declare type TaxInvoice = (CashInvoice | CreditDebitInvoice) & {
    invoice_code: "0100000";
    actual_delivery_date?: string;
};
declare type SimplifiedInvoice = (CashInvoice | CreditDebitInvoice) & {
    invoice_code: "0200000";
};
export declare type ZATCAInvoiceProps = SimplifiedInvoice | TaxInvoice;
export default function populate(props: ZATCAInvoiceProps): string;
export {};
//# sourceMappingURL=simplified_tax_invoice_template.d.ts.map