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<string>;
    /**
     * Encodes a debit note (invoice) into UBL XML
     * @param debitNote Debit note to encode
     * @returns UBL XML string
     */
    protected encodeDebitNote(debitNote: TDebitNote): Promise<string>;
    /**
     * 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;
    /**
     * Preserves metadata from invoice to enhance UBL XML output
     * @param doc XML document
     * @param root Root element
     * @param invoice Invoice data
     */
    private preserveMetadata;
    /**
     * Adds business references from metadata to UBL document
     * @param doc XML document
     * @param root Root element
     * @param businessReferences Business references from metadata
     */
    private addBusinessReferencesToUBL;
    /**
     * Enhances payment information from metadata in UBL document
     * @param doc XML document
     * @param root Root element
     * @param paymentInfo Payment information from metadata
     */
    private enhancePaymentInformationUBL;
    /**
     * Adds date information from metadata to UBL document
     * @param doc XML document
     * @param root Root element
     * @param dateInfo Date information from metadata
     */
    private addDateInformationUBL;
    /**
     * Enhances party information with contact details from metadata
     * @param doc XML document
     * @param invoice Invoice data
     */
    private enhancePartyInformationUBL;
    /**
     * Enhances a party with GLN, additional identifiers, and contact info
     * @param doc XML document
     * @param partySelector Party selector
     * @param partyData Party data
     */
    private enhancePartyUBL;
    /**
     * Adds contact information to a party in UBL document
     * @param doc XML document
     * @param partySelector Party selector
     * @param contactInfo Contact information from metadata
     */
    private addContactToPartyUBL;
    /**
     * Enhances line items with metadata in UBL document
     * @param doc XML document
     * @param invoice Invoice data
     */
    private enhanceLineItemsUBL;
}
