import { Behaviour } from "../Component.js";
import { type ILayoutGroup, type IRectTransform } from "./Interfaces.js";
import { RectTransform } from "./RectTransform.js";
export declare class Padding {
    left: number;
    right: number;
    top: number;
    bottom: number;
    get vertical(): number;
    get horizontal(): number;
}
export declare enum TextAnchor {
    UpperLeft = 0,
    UpperCenter = 1,
    UpperRight = 2,
    MiddleLeft = 3,
    MiddleCenter = 4,
    MiddleRight = 5,
    LowerLeft = 6,
    LowerCenter = 7,
    LowerRight = 8,
    Custom = 9
}
declare enum Axis {
    Horizontal = "x",
    Vertical = "y"
}
export declare abstract class LayoutGroup extends Behaviour implements ILayoutGroup {
    private _rectTransform;
    private get rectTransform();
    onParentRectTransformChanged(_comp: IRectTransform): void;
    private _needsUpdate;
    get isDirty(): boolean;
    get isLayoutGroup(): boolean;
    updateLayout(): void;
    childAlignment: TextAnchor;
    reverseArrangement: boolean;
    spacing: number;
    padding: Padding;
    minWidth: number;
    minHeight: number;
    flexibleHeight: number;
    flexibleWidth: number;
    preferredHeight: number;
    preferredWidth: number;
    start(): void;
    onEnable(): void;
    onDisable(): void;
    protected abstract onCalculateLayout(rt: RectTransform): any;
    private set m_Spacing(value);
    get m_Spacing(): number;
}
export declare abstract class HorizontalOrVerticalLayoutGroup extends LayoutGroup {
    childControlHeight: boolean;
    childControlWidth: boolean;
    childForceExpandHeight: boolean;
    childForceExpandWidth: boolean;
    childScaleHeight: boolean;
    childScaleWidth: boolean;
    protected abstract get primaryAxis(): Axis;
    protected onCalculateLayout(rect: RectTransform): void;
}
/**
 * [VerticalLayoutGroup](https://engine.needle.tools/docs/api/VerticalLayoutGroup) arranges child UI elements vertically with spacing, padding, and alignment options.
 * @category User Interface
 * @group Components
 */
export declare class VerticalLayoutGroup extends HorizontalOrVerticalLayoutGroup {
    protected get primaryAxis(): Axis;
}
/**
 * [HorizontalLayoutGroup](https://engine.needle.tools/docs/api/HorizontalLayoutGroup) arranges child UI elements horizontally with spacing, padding, and alignment options.
 * @category User Interface
 * @group Components
 */
export declare class HorizontalLayoutGroup extends HorizontalOrVerticalLayoutGroup {
    protected get primaryAxis(): Axis;
}
/**
 * [GridLayoutGroup](https://engine.needle.tools/docs/api/GridLayoutGroup) arranges child UI elements in a grid pattern.
 * @category User Interface
 * @group Components
 */
export declare class GridLayoutGroup extends LayoutGroup {
    protected onCalculateLayout(): void;
}
export {};
