import { UBLEncoder } from '../generic/ubl.encoder.js';
import type { TCreditNote, TDebitNote } from '../../../interfaces/common.js';
/**
 * Encoder for XRechnung (UBL) format
 * Extends the generic UBL encoder with XRechnung-specific customizations
 */
export declare class XRechnungEncoder extends UBLEncoder {
    /**
     * Encodes a credit note into XRechnung XML
     * @param creditNote Credit note to encode
     * @returns XRechnung XML string
     */
    protected encodeCreditNote(creditNote: TCreditNote): Promise<string>;
    /**
     * Encodes a debit note (invoice) into XRechnung XML
     * @param debitNote Debit note to encode
     * @returns XRechnung XML string
     */
    protected encodeDebitNote(debitNote: TDebitNote): Promise<string>;
    /**
     * Applies XRechnung-specific customizations to the document
     * @param doc XML document
     * @param invoice Invoice data
     */
    private applyXRechnungCustomizations;
    /**
     * Adds electronic address to party if not already present
     * @param doc XML document
     * @param partyType Party type selector
     * @param party Party data
     */
    private addElectronicAddressToParty;
    /**
     * Fixes German country codes in the document
     * @param doc XML document
     */
    private fixGermanCountryCodes;
    /**
     * Adds business references from metadata to the document
     * @param doc XML document
     * @param businessReferences Business references from metadata
     */
    private addBusinessReferences;
    /**
     * Enhances payment information from metadata
     * @param doc XML document
     * @param paymentInfo Payment information from metadata
     */
    private enhancePaymentInformation;
    /**
     * Adds date information from metadata
     * @param doc XML document
     * @param dateInfo Date information from metadata
     */
    private addDateInformation;
    /**
     * Enhances party information with contact details from metadata
     * @param doc XML document
     * @param invoice Invoice data
     */
    private enhancePartyInformation;
    /**
     * Adds contact information to a party
     * @param doc XML document
     * @param partySelector Party selector
     * @param contactInfo Contact information from metadata
     */
    private addContactToParty;
    /**
     * Enhances line items with metadata
     * @param doc XML document
     * @param invoice Invoice data
     */
    private enhanceLineItems;
}
