import '../../globals.js';
import '../../chipper/js/browser/initialize-globals.js';
import Property from '../../axon/js/Property.js';
import TReadOnlyProperty from '../../axon/js/TReadOnlyProperty.js';
import Bounds2 from '../../dot/js/Bounds2.js';
import Range from '../../dot/js/Range.js';
import StrictOmit from '../../phet-core/js/types/StrictOmit.js';
import { InteractiveHighlightingOptions } from '../../scenery/js/accessibility/voicing/InteractiveHighlighting.js';
import DragListener from '../../scenery/js/listeners/DragListener.js';
import KeyboardDragListener from '../../scenery/js/listeners/KeyboardDragListener.js';
import Node, { NodeOptions } from '../../scenery/js/nodes/Node.js';
import TColor from '../../scenery/js/util/TColor.js';
import { BooleanRectangularToggleButtonOptions } from '../../sun/js/buttons/BooleanRectangularToggleButton.js';
import { RectangularPushButtonOptions } from '../../sun/js/buttons/RectangularPushButton.js';
import TSoundPlayer from '../../tambo/js/TSoundPlayer.js';
import { NumberDisplayOptions } from './NumberDisplay.js';
import PhetFont from './PhetFont.js';
import { SoundDragListenerOptions } from './SoundDragListener.js';
import { SoundKeyboardDragListenerOptions } from './SoundKeyboardDragListener.js';
import Stopwatch from './Stopwatch.js';
type SelfOptions = {
    cursor?: string;
    numberDisplayRange?: Range;
    iconHeight?: number;
    iconFill?: TColor;
    iconLineWidth?: number;
    backgroundBaseColor?: TColor;
    buttonBaseColor?: TColor;
    resetButtonSoundPlayer?: TSoundPlayer;
    xSpacing?: number;
    ySpacing?: number;
    xMargin?: number;
    yMargin?: number;
    numberDisplayOptions?: NumberDisplayOptions;
    dragBoundsProperty?: Property<Bounds2> | null;
    dragListenerOptions?: SoundDragListenerOptions;
    keyboardDragListenerOptions?: SoundKeyboardDragListenerOptions;
    playPauseButtonOptions?: BooleanRectangularToggleButtonOptions;
    resetButtonOptions?: RectangularPushButtonOptions;
    includePlayPauseResetButtons?: boolean;
    otherControls?: Node[];
};
type ParentOptions = InteractiveHighlightingOptions & NodeOptions;
export type StopwatchNodeOptions = SelfOptions & StrictOmit<ParentOptions, 'children' | 'interactiveHighlightEnabled'>;
type FormatterOptions = {
    showAsMinutesAndSeconds?: boolean;
    numberOfDecimalPlaces?: number;
    bigNumberFont?: number;
    smallNumberFont?: number;
    unitsFont?: number;
    units?: string | TReadOnlyProperty<string>;
    valueUnitsPattern?: string | TReadOnlyProperty<string>;
};
declare const StopwatchNode_base: typeof Node & import("../../phet-core.js").Constructor<import("../../scenery/js/accessibility/voicing/InteractiveHighlighting.js").TInteractiveHighlighting<Node>>;
export default class StopwatchNode extends StopwatchNode_base {
    private readonly numberDisplay;
    readonly dragListener: DragListener | null;
    readonly keyboardDragListener: KeyboardDragListener | null;
    private readonly disposeStopwatchNode;
    static readonly NUMBER_FONT_FAMILY = "\"Trebuchet MS\", \"Lucida Grande\", monospace";
    static readonly DEFAULT_FONT: PhetFont;
    /**
     * A value for options.numberDisplayOptions.numberFormatter where time is interpreted as minutes and seconds.
     * The format is MM:SS.CC, where M=minutes, S=seconds, C=centiseconds. The returned string is plain text, so all
     * digits will be the same size, and the client is responsible for setting the font size.
     */
    static readonly PLAIN_TEXT_MINUTES_AND_SECONDS: (time: number) => string;
    /**
     * A value for options.numberDisplayOptions.numberFormatter where time is interpreted as minutes and seconds.
     * The format is format MM:SS.cc, where M=minutes, S=seconds, c=centiseconds. The string returned is in RichText
     * format, with the 'c' digits in a smaller font.
     */
    static readonly RICH_TEXT_MINUTES_AND_SECONDS: (time: number) => string;
    constructor(stopwatch: Stopwatch, providedOptions?: StopwatchNodeOptions);
    dispose(): void;
    /**
     * Gets the centiseconds (hundredths-of-a-second) string for a time value.
     */
    static getDecimalPlaces(time: number, numberDecimalPlaces: number): string;
    /**
     * Creates a custom value for options.numberDisplayOptions.numberFormatter, passed to NumberDisplay. When using
     * this method, you will also need to use NumberDisplayOptions.numberFormatterDependencies, to tell NumberDisplay
     * about the dependencies herein. See https://github.com/phetsims/scenery-phet/issues/781.
     * This will typically be something like:
     *
     * numberFormatter: StopwatchNode.createRichTextNumberFormatter( {
     *   units: unitsProperty,
     *   ...
     * } ),
     * numberFormatterDependencies: [
     *   string_scenery_phet_stopwatchValueUnitsPattern_StringProperty,
     *   unitsProperty
     * ],
     */
    static createRichTextNumberFormatter(providedOptions?: FormatterOptions): (time: number) => string;
}
export {};
