/**
 * Utils to parse, format and write XML.
 * @module
 */
import type { XmlSchema } from './xsd';
export declare function parseXMLArray(xml: string): unknown[] | undefined;
export declare function formatXMLArray(arr: unknown[]): string;
declare function parseXml(xml: string): ParsedXmlNodes;
export declare function buildXml({ parsedXml, indent, baseSpace, cursorTag, endWithNewLine }: {
    parsedXml: ParsedXmlNodes;
    indent?: number;
    baseSpace?: string;
    cursorTag?: string;
    endWithNewLine?: boolean;
}): string;
export declare function getElementFromParsedXml(xml: Record<string, unknown>): string | null;
/**
 * Returns the different paths to the possible merge positions
 * @param param0
 * @returns
 */
export declare function findPossibleMergePositions({ baseXml, element, typesPaths, cursorTag }: {
    baseXml: ParsedXmlNodes;
    element: string;
    typesPaths: XmlSchema['typePaths'];
    cursorTag?: string;
}): {
    path: {
        pos: number;
        key: string;
    }[];
    withCursor: boolean;
}[];
export declare function getXmlAttributes(xml: {
    [key: string]: ParsedXmlNodes | ParsedXmlNode[] | ParsedXmlAttribute | undefined;
    ':@'?: ParsedXmlAttribute | undefined;
}): Record<string, string>;
export declare function mergeParsedXml({ baseXml, newXml, typesPaths, cursorTag }: {
    baseXml: ParsedXmlNodes;
    newXml: ParsedXmlNodes;
    cursorTag?: string;
    typesPaths: XmlSchema['typePaths'];
}): ParsedXmlNodes;
declare function formatXml({ xml, indent }: {
    xml: string;
    indent?: number;
}): string;
declare function formatComment(comment: string): string;
type ParsedXmlAttribute = Record<string, string>;
type ParsedXmlNode = {
    '#text'?: string;
    [key: string]: ParsedXmlAttribute | Array<ParsedXmlNode> | string | undefined;
};
type parsedXmlComment = {
    '#comment': string;
};
type ParsedXmlNodes = Array<parsedXmlComment | {
    ':@'?: ParsedXmlAttribute;
    [key: string]: ParsedXmlNodes | Array<ParsedXmlNode> | ParsedXmlAttribute | undefined;
}>;
export type { ParsedXmlNodes, ParsedXmlNode, parsedXmlComment, ParsedXmlAttribute };
export { parseXml, formatXml, formatComment };
