import { ReactiveTreeVariable } from "reactronic";
export declare enum Axis {
    X = 0,
    Y = 1
}
export type NoUnit = void;
export type DistanceUnit = "px" | "ln" | "em" | "rem" | "vw" | "vh" | "%" | "f";
export declare class Dimension<T = NoUnit> {
    num: number;
    unit?: T;
    constructor(num: number, unit?: T);
    clone(): Dimension<T>;
    equalsTo(another: Dimension<T>): boolean;
    static parse<T>(text: string): Dimension<T>;
    static emit<T>(value: Dimension<T>): string;
    static readonly gFontSizePx: ReactiveTreeVariable<number>;
    private static readonly gLineSizePx;
    static get lineSizePx(): number;
    static set lineSizePx(value: number);
    static getLineSizePx(): ReactiveTreeVariable<number>;
}
export declare function dim<T = NoUnit>(num: number, unit?: T): Dimension<T>;
export type SizeConverterOptions = {
    axis: Axis;
    lineSizePx: number;
    fontSizePx: number;
    containerSizeXpx: number;
    containerSizeYpx: number;
};
export declare const BodyFontSize: number;
export declare const BodySmallFontSize: number;
export declare function px(num: number): Dimension<DistanceUnit>;
export declare function ln(num: number): Dimension<DistanceUnit>;
export declare function fromPx(value: number, unit: DistanceUnit, options: SizeConverterOptions): number;
export declare function fromPx<T>(value: Dimension<T>, options: SizeConverterOptions): number;
export declare function toPx(value: number, unit: DistanceUnit, options: SizeConverterOptions): number;
export declare function toPx<T>(value: Dimension<T>, options: SizeConverterOptions): number;
