/**
 * RoundButton is the base class for round buttons.
 *
 * @author John Blanco (PhET Interactive Simulations)
 * @author Sam Reid (PhET Interactive Simulations)
 */
import '../../../globals.js';
import type TReadOnlyProperty from '../../../axon/js/TReadOnlyProperty.js';
import type Path from '../../../scenery/js/nodes/Path.js';
import type Color from '../../../scenery/js/util/Color.js';
import type TPaint from '../../../scenery/js/util/TPaint.js';
import ButtonInteractionState from './ButtonInteractionState.js';
import type ButtonModel from './ButtonModel.js';
import ButtonNode, { type ButtonNodeOptions } from './ButtonNode.js';
import type RadioButtonInteractionState from './RadioButtonInteractionState.js';
import { type TButtonAppearanceStrategyOptions } from './TButtonAppearanceStrategy.js';
import type TButtonAppearanceStrategy from './TButtonAppearanceStrategy.js';
type SelfOptions = {
    radius?: number | null;
    lineWidth?: number;
    stroke?: TPaint | null;
    touchAreaDilation?: number;
    mouseAreaDilation?: number;
    touchAreaXShift?: number;
    touchAreaYShift?: number;
    mouseAreaXShift?: number;
    mouseAreaYShift?: number;
};
export type RoundButtonOptions = SelfOptions & ButtonNodeOptions;
export default class RoundButton extends ButtonNode {
    static ThreeDAppearanceStrategy: TButtonAppearanceStrategy;
    private readonly buttonNodeConstraint;
    protected constructor(buttonModel: ButtonModel, interactionStateProperty: TReadOnlyProperty<ButtonInteractionState>, providedOptions?: RoundButtonOptions);
}
/**
 * ThreeDAppearanceStrategy is a value for RoundButton options.buttonAppearanceStrategy. It makes a round button
 * look 3D-ish by using gradients that create the appearance of highlighted and shaded edges. The gradients are
 * set up to make the light source appear to be in the upper left.
 */
export declare class ThreeDAppearanceStrategy {
    readonly maxLineWidth: number;
    private readonly disposeThreeDAppearanceStrategy;
    /**
     * @param buttonBackground - the Node for the button's background, sans content
     * @param interactionStateProperty
     * @param baseColorProperty
     * @param [providedOptions]
     */
    constructor(buttonBackground: Path, interactionStateProperty: TReadOnlyProperty<ButtonInteractionState | RadioButtonInteractionState>, baseColorProperty: TReadOnlyProperty<Color>, providedOptions?: TButtonAppearanceStrategyOptions);
    dispose(): void;
}
export {};
//# sourceMappingURL=RoundButton.d.ts.map