import { UnistLiteral, UnistNode, UnistParent } from "./unist";
export interface HastComment extends HastLiteral {
    type: HastType.Comment;
}
export interface HastDoctype extends UnistNode {
    name: string;
    public?: string;
    system?: string;
    type: HastType.Doctype;
}
export interface HastElement extends HastParent {
    children: Array<HastComment | HastElement | HastText>;
    content?: HastRoot;
    properties?: HastProperties;
    tagName: string;
    type: HastType.Element;
}
export interface HastLiteral extends UnistLiteral {
    value: string;
}
export declare type HastNode = HastComment | HastDoctype | HastElement | HastRoot | HastText;
export interface HastParent extends UnistParent {
    children: Array<HastComment | HastDoctype | HastElement | HastText>;
}
export interface HastProperties {
    [propertyName: string]: any;
}
export interface HastRoot extends HastParent {
    type: HastType.Root;
}
export interface HastText extends HastLiteral {
    type: HastType.Text;
}
export declare enum HastType {
    Comment = "comment",
    Doctype = "doctype",
    Element = "element",
    Root = "root",
    Text = "text"
}
export declare function assertNeverHastNode(node: never): never;
