import { ReactiveTreeNode, BaseDriver } from "reactronic";
import { El, ElKind, Horizontal, Vertical, Range, ElPlace, Direction } from "./El.js";
export declare class ElDriver<T extends Element, M = unknown> extends BaseDriver<El<T, M>> {
    create(node: ReactiveTreeNode<El<T, M>>): El<T, M>;
}
export declare class ElImpl<T extends Element = any, M = any> implements El<T, M> {
    readonly node: ReactiveTreeNode<El<T, M>>;
    maxColumnCount: number;
    maxRowCount: number;
    layoutInfo?: ElLayoutInfo;
    native: T;
    model: M;
    private _kind;
    private _place;
    private _coords;
    private _width;
    private _height;
    private _horizontal;
    private _vertical;
    private _contentHorizontal;
    private _contentVertical;
    private _stretchingStrengthHorizontally;
    private _stretchingStrengthVertically;
    private _contentWrapping;
    private _overlayVisible;
    private _sealed;
    private _splitView;
    private _hasStylingPresets;
    constructor(node: ReactiveTreeNode<El<T, M>>);
    prepareForUpdate(): void;
    get index(): number;
    get isDivision(): boolean;
    get isTable(): boolean;
    get isAuxiliary(): boolean;
    get kind(): ElKind;
    set kind(value: ElKind);
    get place(): ElPlace;
    set place(value: ElPlace);
    get width(): Range;
    set width(value: Range);
    get widthPx(): {
        minPx: number;
        maxPx: number;
    };
    set widthPx(value: {
        minPx: number;
        maxPx: number;
    });
    get height(): Range;
    set height(value: Range);
    get heightPx(): {
        minPx: number;
        maxPx: number;
    };
    set heightPx(value: {
        minPx: number;
        maxPx: number;
    });
    get horizontally(): Horizontal | undefined;
    set horizontally(value: Horizontal | undefined);
    get vertically(): Vertical | undefined;
    set vertically(value: Vertical | undefined);
    get contentHorizontally(): Horizontal | undefined;
    set contentHorizontally(value: Horizontal | undefined);
    get contentVertically(): Vertical | undefined;
    set contentVertically(value: Vertical | undefined);
    get stretchingStrengthHorizontally(): number | undefined;
    set stretchingStrengthHorizontally(value: number | undefined);
    get stretchingStrengthVertically(): number | undefined;
    set stretchingStrengthVertically(value: number | undefined);
    get contentWrapping(): boolean;
    set contentWrapping(value: boolean);
    get overlayVisible(): boolean | undefined;
    set overlayVisible(value: boolean | undefined);
    get sealed(): Direction | undefined;
    set sealed(value: Direction | undefined);
    get splitView(): Direction | undefined;
    set splitView(value: Direction | undefined);
    get partitionSizeInSplitViewPx(): number;
    get style(): CSSStyleDeclaration;
    useStylingPreset(stylingPresetName: string, enabled?: boolean): void;
    protected children(onlyAfter?: ElImpl): Generator<ElImpl>;
    static childrenOf(node: ReactiveTreeNode<El>, onlyAfter?: El): Generator<ElImpl>;
    private rowBreak;
    private static applyKind;
    private static applyCoords;
    private static applyWidth;
    private static applyHeight;
    private static applyHorizontal;
    private static applyVertical;
    private static applyStretchingStrengthH;
    private static applyStretchingStrengthV;
    private static applyContentWrapping;
    private static applyOverlayVisible;
    static applySealed<T extends Element>(element: El<T, any>, value: Direction | undefined): void;
    static applySplitView<T extends Element>(element: El<T, any>, value: Direction | undefined): void;
    private static applyStylingPreset;
}
export declare class ElLayoutInfo {
    x: number;
    y: number;
    runningMaxX: number;
    runningMaxY: number;
    alignerX?: ElImpl;
    alignerY?: ElImpl;
    flags: ElLayoutInfoFlags;
    effectiveSizePx: number;
    contentSizeXpx: number;
    contentSizeYpx: number;
    borderSizeYpx: number;
    borderSizeXpx: number;
    isUpdateFinished: boolean;
    constructor(prev: ElLayoutInfo);
}
declare enum ElLayoutInfoFlags {
    none = 0,
    ownCursorPosition = 1,
    usesRunningColumnCount = 2,
    usesRunningRowCount = 4,
    childrenRelayoutIsNeeded = 8
}
export declare const InitialElLayoutInfo: ElLayoutInfo;
export declare class CursorCommand {
    absolute?: string;
    columnShift?: number;
    rowShift?: number;
}
export declare class CursorCommandDriver extends ElDriver<Element, unknown> {
    constructor();
}
export declare const Constants: {
    element: string;
    partition: string;
    wrapper: string;
    splitter: string;
    group: string;
    layouts: string[];
    keyAttrName: string;
    kindAttrName: string;
};
export {};
