import { CIIBaseEncoder } from '../cii.encoder.js'; import type { TCreditNote, TDebitNote } from '../../../interfaces/common.js'; /** * Encoder for ZUGFeRD invoice format */ export declare class ZUGFeRDEncoder extends CIIBaseEncoder { constructor(); /** * Encodes a credit note into ZUGFeRD XML * @param creditNote Credit note to encode * @returns ZUGFeRD XML string */ protected encodeCreditNote(creditNote: TCreditNote): Promise; /** * Encodes a debit note (invoice) into ZUGFeRD XML * @param debitNote Debit note to encode * @returns ZUGFeRD XML string */ protected encodeDebitNote(debitNote: TDebitNote): Promise; /** * Creates a base ZUGFeRD XML document * @returns XML document with basic structure */ private createBaseXml; /** * Adds ZUGFeRD profile information to the XML document * @param doc XML document */ private addProfile; /** * Sets the document type code in the XML document * @param doc XML document * @param typeCode Document type code (380 for invoice, 381 for credit note) */ private setDocumentTypeCode; /** * Adds common invoice data to the XML document * @param doc XML document * @param invoice Invoice data */ private addCommonInvoiceData; /** * Adds agreement section with seller and buyer information * @param doc XML document * @param transactionElement Transaction element * @param invoice Invoice data */ private addAgreementSection; /** * Adds party information to an element * @param doc XML document * @param partyElement Party element * @param party Party data */ private addPartyInfo; /** * Adds delivery section with delivery information * @param doc XML document * @param transactionElement Transaction element * @param invoice Invoice data */ private addDeliverySection; /** * Adds settlement section with payment terms and totals * @param doc XML document * @param transactionElement Transaction element * @param invoice Invoice data */ private addSettlementSection; /** * Adds tax details to the settlement section * @param doc XML document * @param settlementElement Settlement element * @param invoice Invoice data */ private addTaxDetails; /** * Adds monetary summation to the settlement section * @param doc XML document * @param settlementElement Settlement element * @param invoice Invoice data */ private addMonetarySummation; /** * Adds line items to the XML document * @param doc XML document * @param transactionElement Transaction element * @param invoice Invoice data */ private addLineItems; /** * Formats a date as YYYYMMDD * @param timestamp Timestamp to format * @returns Formatted date string */ private formatDateYYYYMMDD; }