export interface ElementNode { tagName: string; attributes: Attr[]; parent: ParentNode | null; children: ChildNode[]; } export interface TextNode { tagName: '#text'; parent: ParentNode | null; text: string; } export interface CommentNode { tagName: '#comment'; parent: ParentNode | null; text: string; } export interface DocumentNode { tagName: '#document'; attributes: Attr[]; parent: null; children: ChildNode[]; } export declare type ParentNode = DocumentNode | ElementNode; export declare type ChildNode = ElementNode | TextNode | CommentNode; export declare type AnyNode = DocumentNode | ElementNode | TextNode | CommentNode; export interface NodeExport { name?: string; attr?: AttrsMap; child?: (NodeExport | string)[]; } export interface Attr { name: string; value: string; } export interface ParseXmlOptions { position?: number; noChildNodes?: string[]; keepComments?: boolean; keepDeclarations?: boolean; } export declare type AttrsMap = Record; export declare type Checker = (node: ParentNode, scope: ParentNode) => boolean;