type Optional = T | undefined; export type DimensionModes = 'px' | '%' | 'fr' | 'fitContent' | 'gridUnit' | 'fillParent'; export type Dimension = { value: number; mode: Modes; }; interface DimensionCache { get(key: string): Type | undefined; set(key: string, dimension: Type): void; clear(): void; } export declare namespace Dimension { export const configure: { enableCaching: (c: DimensionCache>) => void; }; export function build(dimension: Dimension): Dimension; export function build(value: number, mode: Mode): Dimension; export const gridUnit: (value: number) => Dimension<"gridUnit">; export const fitContent: (value: number) => Dimension<"fitContent">; export const fillParent: (value: number) => Dimension<"fillParent">; export const px: (value: number) => Dimension<"px">; export const percent: (value: number) => Dimension<"%">; interface DimensionBuilder { asFirst: () => Dimension; asSecond: () => Dimension; as(mode: Mode1 | Mode2): Dimension; value: number; } export function add(d: Dimension<'px'>, d2: Dimension<'px'>): DimensionBuilder<'px', 'px'>; export function add(d: Dimension, d2: Dimension): DimensionBuilder; export function add(d: Dimension, d2: Dimension, parentSpace: number): DimensionBuilder; export function minus(d: Dimension<'px'>, d2: Dimension<'px'>): DimensionBuilder<'px', 'px'>; export function minus(d: Dimension, d2: Dimension): DimensionBuilder; export function minus(d: Dimension, d2: Dimension, parentSpace: number): DimensionBuilder; export function min(d: Dimension<'px'>, d2: Dimension<'px'>): DimensionBuilder<'px', 'px'>; export function min(d: Dimension, d2: Dimension): DimensionBuilder; export function min(d: Dimension, d2: Dimension, parentSpace: number): DimensionBuilder; export function max(d: Dimension<'px'>, d2: Dimension<'px'>): DimensionBuilder<'px', 'px'>; export function max(d: Dimension, d2: Dimension): DimensionBuilder; export function max(d: Dimension, d2: Dimension, parentSpace: number): DimensionBuilder; export const toPx: | undefined>(d: T, parentSpace: number) => T extends Dimension<"gridUnit" | "px" | "fitContent" | "fillParent"> ? Dimension<"px"> : Optional>; export const toGridUnit: | undefined>(d: T, parentSpace: number) => GridUnitBuilder; export {}; } declare class GridUnitBuilder | undefined, Output = Input extends Dimension<'gridUnit' | 'fitContent' | 'px' | 'fillParent'> ? Dimension<'gridUnit' | 'fitContent' | 'fillParent'> : Optional>> { private dimension; private parentSpace; constructor(dimension: Input, parentSpace: number); roundDown(): Output; roundUp(): Output; raw(): Output; } export {}; //# sourceMappingURL=Dimension.d.ts.map