import { Quaternion, Vector2, Vector3 } from "three";
import * as ThreeMeshUI from 'three-mesh-ui';
import { type DocumentedOptions as ThreeMeshUIEveryOptions } from "three-mesh-ui/build/types/core/elements/MeshUIBaseElement.js";
import { BaseUIComponent } from "./BaseUIComponent.js";
import { type IRectTransform, type IRectTransformChangedReceiver } from "./Interfaces.js";
export declare class Size {
    width: number;
    height: number;
}
export declare class Rect {
    x: number;
    y: number;
    width: number;
    height: number;
}
/**
* [RectTransform](https://engine.needle.tools/docs/api/RectTransform) defines a rectangle for UI layout with anchoring, pivoting, and positioning capabilities.
* @summary UI Rectangle Transform
* @category User Interface
* @group Components
*/
export declare class RectTransform extends BaseUIComponent implements IRectTransform, IRectTransformChangedReceiver {
    get parent(): RectTransform | undefined;
    get translation(): Vector3;
    get rotation(): Quaternion;
    get scale(): Vector3;
    private _anchoredPosition;
    get anchoredPosition(): Vector2;
    private set anchoredPosition(value);
    sizeDelta: Vector2;
    pivot: Vector2;
    anchorMin: Vector2;
    anchorMax: Vector2;
    /** Optional min width in pixel, set to undefined to disable it */
    minWidth?: number;
    /** Optional min height in pixel, set to undefined to disable it */
    minHeight?: number;
    get width(): number;
    get height(): number;
    private lastMatrix;
    private rectBlock;
    private _transformNeedsUpdate;
    private _initialPosition;
    private _parentRectTransform?;
    private _lastUpdateFrame;
    awake(): void;
    onEnable(): void;
    onDisable(): void;
    onParentRectTransformChanged(comp: IRectTransform): void;
    get isDirty(): boolean;
    markDirty(): void;
    /** Will update the transforms if it changed or is dirty */
    updateTransform(): void;
    private canUpdate;
    private onApplyTransform;
    private _lastAnchoring;
    /** applies the position offset to the passed in vector */
    private applyAnchoring;
    /** applies the pivot offset to the passed in vector */
    private applyPivot;
    getBasicOptions(): ThreeMeshUIEveryOptions;
    private ensureValidSize;
    private _createdBlocks;
    private _createdTextBlocks;
    createNewBlock(opts?: ThreeMeshUIEveryOptions | object): ThreeMeshUI.Block;
    createNewText(opts?: ThreeMeshUIEveryOptions | object): ThreeMeshUI.Block;
}
