import { PointF } from "./PointF";
import { ILtrb } from "./ILtrb";
import { Matrix } from "./Matrix";
import { INotifyPropertyChanged } from "../INotifyPropertyChanged";
import { EventWithSenderArg } from "../EventObject";
export declare class RectangleF implements ILtrb, INotifyPropertyChanged<RectangleF, string> {
    private _id;
    private _left;
    private _top;
    private _width;
    private _height;
    private static _tolerance;
    constructor(left?: number, top?: number, width?: number, height?: number);
    toJSON(): {
        left: number;
        top: number;
        width: number;
        height: number;
        id: any;
    };
    get left(): number;
    set left(value: number);
    get top(): number;
    set top(value: number);
    get width(): number;
    set width(value: number);
    get height(): number;
    set height(value: number);
    get id(): any;
    static FromLTRB(left: number, top: number, right: number, bottom: number): RectangleF;
    static fromLtrbObject(obj: ILtrb): RectangleF;
    static FromObject(object: {
        left: number;
        top: number;
        width: number;
        height: number;
    }): RectangleF;
    /**
     * Creates a rectangle that represents the intersetion between a and b.
     * If there is no intersection, empty rectangle is returned.
     */
    static intersect(a: RectangleF, b: RectangleF): RectangleF;
    static union(a: RectangleF, b: RectangleF): RectangleF;
    static get empty(): RectangleF;
    equals(other: RectangleF): boolean;
    static isEqual(a: RectangleF, b: RectangleF, tolerance?: number): boolean;
    contains(point: PointF, includeBorder?: boolean, tolerance?: number): boolean;
    containsRectangle(rectangle: RectangleF): boolean;
    clone(): RectangleF;
    isEmpty(): boolean;
    inflate(size: number): void;
    /**
     * Determines if this rectangle intersects with rect
     */
    intersectsWith(rect: RectangleF): boolean;
    updateByMatrix(matrix: Matrix): this;
    getExpanded(margin: ILtrb): RectangleF;
    toString(): string;
    static fromString(str: string): RectangleF;
    static fromPoints(point1: PointF, point2: PointF): RectangleF;
    static getMatrix(initialRect: RectangleF, targetRect: RectangleF): Matrix;
    static getOverallBounds(rects: RectangleF[]): RectangleF;
    set right(value: number);
    get right(): number;
    set bottom(value: number);
    get bottom(): number;
    get center(): PointF;
    protected _propertyChanged: EventWithSenderArg<RectangleF, string>;
    addPropertyChanged(listener: (sender: RectangleF, eventArgs: string) => void): void;
    removePropertyChanged(listener: (sender: RectangleF, eventArgs: string) => void): void;
}
