import TaskController, { Task } from './TaskController';
export declare function generateId(): number;
export declare const NodeType: {
    ROOT: string;
    PTEXT: string;
};
export interface RenderNode {
    COMPLIER_KEY: number;
    COMPLIER_TYPE: string;
    COMPLIER_PROPS: Record<string, any>;
    COMPLIER_NODES: Record<number, RenderNode>;
    COMPLIER_CHILDREN: number[];
    COMPLIER_TEXT: string;
}
export default class ServerElement {
    type: string;
    taskController: TaskController;
    props?: any;
    text?: string;
    key: number;
    children: Map<number, ServerElement>;
    parent: ServerElement | null;
    firstChildKey: number | null;
    lastChildKey: number | null;
    prevSiblingKey: number | null;
    nextSiblingKey: number | null;
    mounted: boolean;
    deleted: boolean;
    eventsCallbackList: Set<string>;
    constructor(type: string, taskController: TaskController, props?: Record<string, any>);
    requestUpdate(task: Task): void;
    clearEvents(): void;
    addCallback(cbKey: string, cb: (...args: any) => any): void;
    appendChild(child: ServerElement): void;
    removeChild(child: ServerElement, clearEvents?: boolean): void;
    insertBefore(child: ServerElement, nextSibling: ServerElement): void;
    update(propPath: string, updatePropsMap: Record<string, any>): void;
    serialize(): RenderNode;
    delete(): void;
    get orderedChildren(): number[];
    get path(): (string | number)[];
    isMounted(): boolean;
    isDeleted(): boolean;
}
