import { UBLBaseEncoder } from '../ubl.encoder.js'; import type { TCreditNote, TDebitNote } from '../../../interfaces/common.js'; /** * UBL Encoder implementation * Provides encoding functionality for UBL 2.1 invoice and credit note documents */ export declare class UBLEncoder extends UBLBaseEncoder { /** * Encodes a credit note into UBL XML * @param creditNote Credit note to encode * @returns UBL XML string */ protected encodeCreditNote(creditNote: TCreditNote): Promise; /** * Encodes a debit note (invoice) into UBL XML * @param debitNote Debit note to encode * @returns UBL XML string */ protected encodeDebitNote(debitNote: TDebitNote): Promise; /** * Adds common document elements to both invoice and credit note * @param doc XML document * @param invoice Invoice or credit note data * @param documentType Document type (Invoice or CreditNote) */ private addCommonElements; /** * Adds credit note specific data to the document * @param doc XML document * @param creditNote Credit note data */ private addCreditNoteSpecificData; /** * Adds invoice specific data to the document * @param doc XML document * @param invoice Invoice data */ private addInvoiceSpecificData; /** * Adds party information (supplier or customer) * @param doc XML document * @param parentElement Parent element * @param elementName Element name (AccountingSupplierParty or AccountingCustomerParty) * @param party Party data */ private addParty; /** * Adds payment terms information * @param doc XML document * @param parentElement Parent element * @param invoice Invoice data */ private addPaymentTerms; /** * Adds payment means information * @param doc XML document * @param parentElement Parent element * @param invoice Invoice data */ private addPaymentMeans; /** * Adds tax total information * @param doc XML document * @param parentElement Parent element * @param invoice Invoice data */ private addTaxTotal; /** * Adds legal monetary total information * @param doc XML document * @param parentElement Parent element * @param invoice Invoice data */ private addLegalMonetaryTotal; /** * Adds invoice lines * @param doc XML document * @param parentElement Parent element * @param invoice Invoice data */ private addInvoiceLines; /** * Helper method to append a simple element with text content * @param doc XML document * @param parentElement Parent element * @param elementName Element name * @param textContent Text content */ private appendElement; /** * Helper method to get country code from country name * Simple implementation that assumes the country name is already a code * @param countryName Country name * @returns Country code (2-letter ISO code) */ private getCountryCode; }