import { BaseValidator } from './base.validator.js';
import { ValidationLevel } from '../interfaces.js';
import type { ValidationResult } from '../interfaces.js';
/**
 * Validator for UBL (Universal Business Language) invoice format
 * Implements validation rules according to EN16931 and UBL 2.1 specification
 */
export declare class UBLValidator extends BaseValidator {
    private static NS_INVOICE;
    private static NS_CAC;
    private static NS_CBC;
    private xmlDoc;
    private customizationId;
    constructor(xml: string);
    /**
     * Validates the UBL invoice against the specified level
     * @param level Validation level
     * @returns Validation result
     */
    validate(level?: ValidationLevel): ValidationResult;
    /**
     * Validates XML against schema
     * @returns True if schema validation passed
     */
    protected validateSchema(): boolean;
    /**
     * Validates structure of the XML document
     * @returns True if structure validation passed
     */
    private validateStructure;
    /**
     * Validates business rules
     * @returns True if business rule validation passed
     */
    protected validateBusinessRules(): boolean;
    /**
     * Gets the root node name (Invoice or CreditNote)
     * @returns Root node name
     */
    private getRootNodeName;
    /**
     * Detects UBL customization ID from the XML
     */
    private detectCustomizationId;
    /**
     * Checks if invoice is an XRechnung
     * @returns True if XRechnung customization ID is present
     */
    private isXRechnung;
    /**
     * Validates amount calculations in the invoice
     * @returns True if amount validation passed
     */
    private validateAmounts;
    /**
     * Validates mutually exclusive fields
     * @returns True if validation passed
     */
    private validateMutuallyExclusiveFields;
    /**
     * Validates seller VAT identifier requirements
     * @returns True if validation passed
     */
    private validateSellerVatIdentifier;
    /**
     * Validates XRechnung specific rules
     * @returns True if validation passed
     */
    private validateXRechnungRules;
    /**
     * Helper method to check if a node exists
     * @param xpathExpression XPath to check
     * @returns True if node exists
     */
    private exists;
    /**
     * Helper method to get a number value from XPath
     * @param xpathExpression XPath to get number from
     * @returns Number value or NaN if not found
     */
    private getNumberValue;
}
