import { ReactiveTreeNode, Handler } from "reactronic";
import { El } from "./El.js";
import { ElDriver } from "./ElDriver.js";
export declare class WebDriver<T extends Element, M = unknown> extends ElDriver<T, M> {
    assignNativeElement(node: ReactiveTreeNode<El<T, M>>): void;
    runPreparation(node: ReactiveTreeNode<El<T, M>>): void | Promise<void>;
    runFinalization(node: ReactiveTreeNode<El<T, M>>, isLeader: boolean): boolean;
    runMount(node: ReactiveTreeNode<El<T, M>>): void;
    rebuildBody(node: ReactiveTreeNode<El<T, M>>): void | Promise<void>;
    private assignExtraAttributesAndProperties;
    private clearExtraAttributesAndProperties;
    static getOwnNodeOfNativeElement<T extends Element>(element: T): ReactiveTreeNode<El<T>> | undefined;
    static findBrotherlyHost<T extends Element, R extends Element>(node: ReactiveTreeNode<El<T>>): ReactiveTreeNode<El<R>> | undefined;
    static findBrotherlyPrevSibling<T extends Element, R extends Element>(node: ReactiveTreeNode<El<T>>): ReactiveTreeNode<El<R>> | undefined;
    static get blinkingEffect(): boolean;
    static set blinkingEffect(value: boolean);
}
export declare class StaticDriver<T extends HTMLElement> extends WebDriver<T> {
    readonly native: T;
    constructor(native: T, name: string, isPartition: boolean, initialize?: Handler<El<T>>);
    assignNativeElement(node: ReactiveTreeNode<El<T>>): void;
}
export declare class HtmlDriver<T extends HTMLElement, M = any> extends WebDriver<T, M> {
    assignNativeElement(node: ReactiveTreeNode<El<T, M>>): void;
}
export declare class SvgDriver<T extends SVGElement, M = any> extends WebDriver<T, M> {
    assignNativeElement(node: ReactiveTreeNode<El<T, M>>): void;
}
