import { Align, AlignContent, Direction, FlexBoxOptions, FlexStyle, Justify, Position, Size } from './types'; export interface PaddingBox { top: number; right: number; bottom: number; left: number; } declare abstract class FlexNode { id?: string; metadata?: unknown; readonly size: Size; readonly position: Position; style: FlexStyle; constructor(style?: Partial); abstract build(): void; } export declare class FlexElement extends FlexNode { build(): void; } export declare class FlexBox extends FlexNode { readonly children: FlexNode[]; direction: Direction; wrap: 'nowrap' | 'wrap' | 'wrap-reverse'; columnGap: number; rowGap: number; justifyContent: Justify; alignItems: Align; alignContent: AlignContent; padding: PaddingBox; constructor(width: number, height: number, opts?: FlexBoxOptions); addChild(style: Partial): FlexElement; addChild(box: FlexBox, style?: Partial): FlexBox; private getContainerMetrics; private buildFlexLines; private measureLineCrossSizes; private isDeferredCrossAxisPercentChild; private resolveCrossAxisLayout; private calculateAlignContent; private distributeMainAxisSizes; private calculateJustifySpacing; private getFinalLineHeight; private getCrossSize; private positionChildren; build(): void; } export declare function resolvePaddingBox(padding?: FlexBoxOptions['padding']): PaddingBox; export declare class RootFlexBox extends FlexBox { constructor(width: number, height: number, opts?: FlexBoxOptions); getLayout(): Record; private _collectLayout; } export {};