import type { IEventElement, Releaseable } from './common';
export interface INode extends Releaseable, IEventElement {
    _prev?: INode;
    _next?: INode;
    _uid: number;
    id?: number | string;
    name?: string;
    type?: string;
    parent: INode | null;
    count: number;
    childrenCount: number;
    firstChild: INode | null;
    lastChild: INode | null;
    getChildren: () => INode[];
    getChildAt: (idx: number) => INode | null;
    at: (idx: number) => INode | null;
    insertBefore: (newNode: INode, referenceNode: INode) => INode | null;
    insertAfter: (newNode: INode, referenceNode: INode) => INode | null;
    insertInto: (ele: INode, idx: number) => INode | null;
    insertIntoKeepIdx: (ele: INode, idx: number) => INode | null;
    forEachChildren: (cb: (n: INode, i: number) => void | boolean, reverse?: boolean) => void;
    forEachChildrenAsync: (cb: (n: INode, i: number) => Promise<void | boolean> | void | boolean, reverse?: boolean) => Promise<void>;
    appendChild: (node: INode, highPerformance?: boolean) => INode | null;
    add: (node: INode, highPerformance?: boolean) => INode | null;
    delete: () => void;
    removeChild: (node: INode, highPerformance?: boolean) => INode | null;
    removeAllChild: (deep?: boolean) => void;
    isChildOf: (node: INode) => boolean;
    isParentOf: (node: INode) => boolean;
    isDescendantsOf: (node: INode) => boolean;
    isAncestorsOf: (node: INode) => boolean;
    dispatchEvent: (event: Event) => boolean;
    containNode: (node: INode) => boolean;
    setAllDescendantsProps: (propsName: string, propsValue: any) => any;
    find: (callback: (node: INode, index: number) => boolean, deep: boolean) => INode | null;
    findAll: (callback: (node: INode, index: number) => boolean, deep: boolean) => INode[];
    getElementById: (id: string | number) => INode | null;
    findChildById: (id: string | number) => INode | null;
    findChildByUid: (uid: number) => INode | null;
    getElementsByName: (name: string) => INode[];
    findChildrenByName: (name: string) => INode[];
    getElementsByType: (type: string) => INode[];
}
