import { BoxedPolygon } from "./interfaces/BoxedPolygon";
import { Point, PointValue } from "./Point";
import { UniformScaleConfig } from "./Scalelable";
import { SizeValue } from "./Size";
export type RectValue = {
    origin: PointValue;
    size: SizeValue;
};
export type RectMinMaxDimensions = {
    minX: number;
    minY: number;
    maxX: number;
    maxY: number;
};
export type RectCorners = {
    topLeftPoint: Point;
    topRightPoint: Point;
    bottomLeftPoint: Point;
    bottomRightPoint: Point;
};
export type RectCornerKey = keyof RectCorners;
export type RectInit = (RectValue & {
    mode: 'originAndSize';
}) | (RectMinMaxDimensions & {
    mode: 'corners';
});
export declare class Rect implements BoxedPolygon<RectValue> {
    origin: Point;
    size: SizeValue;
    constructor(args: RectInit);
    get minX(): number;
    set minX(value: number);
    get minY(): number;
    set minY(value: number);
    get midX(): number;
    set midX(value: number);
    get midY(): number;
    set midY(value: number);
    get maxX(): number;
    set maxX(value: number);
    get maxY(): number;
    set maxY(value: number);
    get asValue(): RectValue;
    get boundingBox(): Rect;
    get width(): number;
    get height(): number;
    get isNaN(): boolean;
    get area(): number;
    get minMaxDimensions(): RectMinMaxDimensions;
    get center(): Point;
    get topMidPoint(): Point;
    get bottomMidPoint(): Point;
    get leftMidPoint(): Point;
    get rightMidPoint(): Point;
    get topLeftPoint(): Point;
    get topRightPoint(): Point;
    get bottomLeftPoint(): Point;
    get bottomRightPoint(): Point;
    get cornerPointsAsArray(): Array<Point>;
    clone(): Rect;
    computeDistanceToOther(other: Rect): number;
    isPointInside(pointValue: PointValue): boolean;
    isEdgeToEdgeWithOther(other: this): boolean;
    isCollidingWithOther(other: this): boolean;
    setPointCenter(newCenterPoint: Point): void;
    getCornerPoint(cornerKey: RectCornerKey): Point;
    setCornerPoint(cornerKey: RectCornerKey, newValue: Point): void;
    applyScaleToNewSize(newSize: SizeValue): void;
    applyUniformScaleByFactor(args: UniformScaleConfig): void;
    scaledUniformallyByFactor(args: UniformScaleConfig): this;
    static initFromValue(args: RectValue): Rect;
}
//# sourceMappingURL=Rect.d.ts.map