import '../../assert/js/assert.js';
import '../../globals.js';
import { EmptySelfOptions } from '../../phet-core/js/optionize.js';
import { Rectangle, RectangleOptions, TPaint } from '../../scenery/js/imports.js';
type SelfOptions = EmptySelfOptions;
export type GradientRectangleOptions = SelfOptions & RectangleOptions;
export default class GradientRectangle extends Rectangle {
    private _leftMargin;
    private _rightMargin;
    private _topMargin;
    private _bottomMargin;
    private _extension;
    private _roundMargins;
    private readonly _fillProperty;
    private readonly _borderOverrideProperty;
    private readonly _borderProperty;
    private readonly roundedShape;
    private readonly rectangularShape;
    private readonly leftSide;
    private readonly rightSide;
    private readonly topSide;
    private readonly bottomSide;
    private readonly topLeftCorner;
    private readonly topRightCorner;
    private readonly bottomLeftCorner;
    private readonly bottomRightCorner;
    constructor(providedOptions?: GradientRectangleOptions);
    /**
     * Updates the rounded-ness of the margins.
     */
    private invalidateRoundMargins;
    /**
     * Updates the rounded-ness of the margins.
     */
    private invalidateGradients;
    /**
     * Custom behavior so we can see when the rectangle dimensions change.
     */
    protected invalidateRectangle(): void;
    /**
     * Handles repositioning of the margins.
     */
    private invalidateMargin;
    /**
     * Overrides disposal to clean up some extra things.
     */
    dispose(): void;
    /**
     * We want to be notified of fill changes.
     */
    setFill(fill: TPaint): this;
    /**
     * We don't want to allow strokes.
     */
    setStroke(stroke: TPaint): this;
    /**
     * Sets the left-side margin amount (the amount in local-coordinate units from the left edge of the rectangle to
     * where the margin ends).
     */
    set leftMargin(value: number);
    /**
     * Gets the left-side margin amount.
     */
    get leftMargin(): number;
    /**
     * Sets the right-side margin amount (the amount in local-coordinate units from the right edge of the rectangle to
     * where the margin ends).
     */
    set rightMargin(value: number);
    /**
     * Gets the right-side margin amount.
     */
    get rightMargin(): number;
    /**
     * Sets the top-side margin amount (the amount in local-coordinate units from the top edge of the rectangle to
     * where the margin ends).
     */
    set topMargin(value: number);
    /**
     * Gets the top-side margin amount.
     */
    get topMargin(): number;
    /**
     * Sets the bottom-side margin amount (the amount in local-coordinate units from the bottom edge of the rectangle to
     * where the margin ends).
     */
    set bottomMargin(value: number);
    /**
     * Gets the bottom-side margin amount.
     */
    get bottomMargin(): number;
    /**
     * Sets the left and right margin amounts.
     */
    set xMargin(value: number);
    /**
     * Gets the left and right margin amounts.
     */
    get xMargin(): number;
    /**
     * Sets the top and bottom margin amounts.
     */
    set yMargin(value: number);
    /**
     * Gets the top and bottom margin amounts.
     */
    get yMargin(): number;
    /**
     * Sets all of the margin amounts.
     */
    set margin(value: number);
    /**
     * Gets the top and bottom margin amounts.
     */
    get margin(): number;
    /**
     * Sets whether the corners of the margin will be rounded or not.
     */
    set roundMargins(value: boolean);
    /**
     * Returns whether the corners of the margin are rounded or not.
     */
    get roundMargins(): boolean;
    /**
     * Sets the border "fade" color (that is on the other side of the gradient).
     */
    set border(value: TPaint);
    /**
     * Returns the border color (see the setter)
     */
    get border(): TPaint;
    /**
     * Sets the extension amount (from 0 to <1) of where the "starting" gradient amount should be.
     */
    set extension(value: number);
    /**
     * Returns the extension amount (see the setter).
     */
    get extension(): number;
    mutate(options?: GradientRectangleOptions): this;
}
export {};
//# sourceMappingURL=GradientRectangle.d.ts.map