export declare type Render<E = unknown, O = void> = (element: E, options: O) => void | Promise<void>;
export declare type SuperRender<E = unknown, O = void> = ((render: (options: O) => void, element: E) => void);
export declare type AsyncSuperRender<O = unknown, E = void> = ((render: (options: O) => Promise<void>, element: E) => Promise<void>);
export declare type Customize<E = unknown, O = void> = (element: E, options: O) => void;
export declare type AsyncCustomize<E = unknown, O = void> = (element: E, options: O) => Promise<void>;
export interface RxNodeType<E = unknown, O = void> {
    readonly name: string;
    readonly sequential: boolean;
    initialize?(node: RxNode<E, O>): void;
    mount?(node: RxNode<E, O>): void;
    render?(node: RxNode<E, O>, args: unknown): void;
    finalize?(node: RxNode<E, O>, initiator: RxNode): void;
}
export interface RxNodeInstance<E = unknown, O = void> {
    readonly uuid: number;
    readonly level: number;
    revision: number;
    native?: E;
    model?: unknown;
    children: ReadonlyArray<RxNode>;
    buffer: Array<RxNode> | undefined;
    guests: ReadonlyArray<RxNode>;
    resizeObserver?: ResizeObserver;
    rerender(node: RxNode<E, O>): void;
}
export declare class RxNode<E = any, O = any> {
    readonly id: string;
    readonly args: unknown;
    readonly render: Render<E, O>;
    readonly superRender: SuperRender<E, O> | undefined;
    priority: number;
    childrenShuffling: boolean;
    readonly type: RxNodeType<E, O>;
    readonly inline: boolean;
    readonly creator: RxNode;
    readonly host: RxNode;
    instance?: RxNodeInstance<E, O> | undefined;
    old?: RxNode<E, O>;
    prevSibling?: RxNode;
    get parent(): RxNode;
    get revision(): number;
    get native(): E | undefined;
    set native(e: E | undefined);
    get resizeObserver(): ResizeObserver | undefined;
    constructor(id: string, args: unknown, render: Render<E, O>, superRender: SuperRender<E, O> | undefined, priority: number, childrenShuffling: boolean, type: RxNodeType<E, O>, inline: boolean, creator: RxNode, host: RxNode, instance?: RxNodeInstance<E, O> | undefined);
}
