/// export declare type Size = { width: number; height: number; }; export declare type Interval = { lb: number; ub: number; }; export declare type SizeInterval = { width: Interval; height: Interval; }; export declare type Position = { x: number; y: number; }; export declare type BBox = { x: number; y: number; width: number; height: number; }; export declare type Paint = (bbox: BBox, children: Component[], boundary?: string) => JSX.Element; export declare type Layout = (interval: SizeInterval, children: Component[]) => { size: Size; ownPosition?: Position; positions: Partial[]; boundary?: string; }; export declare class Component { children: Component[]; _layout: Layout; _paint: Paint; size?: Size; position?: Partial; boundary?: string; parent?: Component; constructor(children: Component[], layout: Layout, paint: Paint, boundary?: string); layout(interval: SizeInterval): { size: Size; positions: Partial[]; boundary: string | undefined; }; paint(): JSX.Element; mod(...modify: ((component: Component) => Component)[]): Component; } export declare type ModifierPaint = (bbox: BBox, child: Component) => JSX.Element; export declare type ModifierLayout = (interval: SizeInterval, child: Component) => { size: Size; position: Position; }; export declare class Modifier extends Component { constructor(child: Component, layout: ModifierLayout, paint: ModifierPaint); } export declare type ModifierFn = (component: Component) => Modifier; //# sourceMappingURL=componentTypes.d.ts.map