import { ElementBuildData } from './options'; export declare type ElementProps = { [index: string]: string; }; export declare type ElementType = 'text' | 'tag'; export interface IElement { readonly type: ElementType; readonly name: string; readonly props: ElementProps; readonly isContent: boolean; readonly isLeaf: boolean; readonly data?: string; readonly children: IElement[]; xml(): string; text(): string; html(): string; prop(name: string, value?: string): string; hasContent(): boolean; isText(): boolean; isTag(): boolean; addData(data: string): string; } export interface ElementContructorData { props?: ElementProps; isContent?: boolean; isLeaf?: boolean; data?: string; children?: IElement[]; } export declare class Element implements IElement { readonly type: ElementType; readonly name: string; readonly props: ElementProps; readonly isContent: boolean; readonly isLeaf: boolean; data?: string; readonly children: IElement[]; constructor(type: ElementType, name?: string, data?: ElementContructorData); isText(): boolean; isTag(): boolean; text(): string; hasContent(): boolean; prop(name: string, value?: string): string; xml(): string; html(): string; addData(data: string): string; } export declare class TagElement extends Element { constructor(name: string, data?: ElementContructorData); } export declare class TextElement extends Element { constructor(data?: ElementContructorData); } export declare function buildElementFromData(data: ElementBuildData): TagElement;