import { ReactiveTreeNode, Handler, BaseDriver } from "reactronic";
import { El, ElKind, H, V, 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 _alignmentHorizontal;
    private _alignmentVertical;
    private _alignmentVerticalRowWise;
    private _selfAlignmentHorizontal;
    private _selfAlignmentVertical;
    private _selfAlignmentVerticalRowWise;
    private _selfStretchingStrengthHorizontal;
    private _selfStretchingStrengthVertical;
    private _contentWrapping;
    private _overlayVisible;
    private _text;
    private _textIsFormatted;
    private _textIsEditable;
    private _sealed;
    private _splitView;
    private _hasStylingPresets;
    constructor(node: ReactiveTreeNode<El<T, M>>);
    prepareForUpdate(): void;
    get rank(): number;
    get isBlock(): 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 alignmentHorizontal(): H | undefined;
    set alignmentHorizontal(value: H | undefined);
    get alignmentVertical(): V | undefined;
    set alignmentVertical(value: V | undefined);
    get alignmentVerticalRowWise(): V | undefined;
    set alignmentVerticalRowWise(value: V | undefined);
    get selfAlignmentHorizontal(): H | undefined;
    set selfAlignmentHorizontal(value: H | undefined);
    get selfAlignmentVertical(): V | undefined;
    set selfAlignmentVertical(value: V | undefined);
    get selfAlignmentVerticalRowWise(): V | undefined;
    set selfAlignmentVerticalRowWise(value: V | undefined);
    get selfStretchingStrengthHorizontal(): number | undefined;
    set selfStretchingStrengthHorizontal(value: number | undefined);
    get selfStretchingStrengthVertical(): number | undefined;
    set selfStretchingStrengthVertical(value: number | undefined);
    get contentWrapping(): boolean;
    set contentWrapping(value: boolean);
    get overlayVisible(): boolean | undefined;
    set overlayVisible(value: boolean | undefined);
    get text(): string | undefined;
    set text(value: string | undefined);
    get textIsFormatted(): boolean;
    set textIsFormatted(value: boolean);
    get textIsEditable(): boolean;
    set textIsEditable(value: boolean);
    get sealed(): Direction | undefined;
    set sealed(value: Direction | undefined);
    get splitView(): Direction | undefined;
    set splitView(value: Direction | undefined);
    get partitionSizeInSplitViewPx(): number;
    get style(): CSSStyleDeclaration;
    get action(): Handler<El<T, M>, void> | undefined;
    set action(value: Handler<El<T, M>, void> | undefined);
    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 applyAlignmentHorizontal;
    private static applyAlignmentVertical;
    private static applyAlignmentVerticalRowWise;
    private static applySelfAlignmentHorizontal;
    private static applyPartitionAlignmentVertical;
    private static applySelfAlignmentVertical;
    private static applySelfStretchingStrengthHorizontal;
    private static applySelfStretchingStrengthVertical;
    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;
    static applyText<T extends Element>(element: El<T, any>, value: string | undefined): void;
    static applyTextIsFormatted<T extends Element>(element: El<T, any>, value: boolean): void;
    static applyTextIsEditable<T extends Element>(element: El<T, any>, value: boolean): 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;
    ownReactiveTreeNodeKey: symbol;
};
export declare const StylingClassNameByAlignmentHorizontal: Array<string>;
export declare const StylingClassNameByAlignmentVertical: Array<string>;
export declare const StylingClassNameByAlignmentVerticalRowWise: Array<string>;
export declare const StylingClassNameBySelfAlignmentHorizontal: Array<string>;
export declare const StylingClassNameBySelfAlignmentVertical: Array<string>;
export declare const StylingClassNameByPartitionAlignmentVertical: Array<string>;
export {};
