/**
 * This is a graphical representation of a bicycle pump. A user can move the handle up and down.
 *
 * @author John Blanco
 * @author Siddhartha Chinthapally (Actual Concepts)
 * @author Chris Klusendorf (PhET Interactive Simulations)
 * @author Saurabh Totey
 */
import '../../globals.js';
import '../../chipper/js/browser/initialize-globals.js';
import TProperty from '../../axon/js/TProperty.js';
import TReadOnlyProperty from '../../axon/js/TReadOnlyProperty.js';
import Range from '../../dot/js/Range.js';
import Vector2 from '../../dot/js/Vector2.js';
import StrictOmit from '../../phet-core/js/types/StrictOmit.js';
import Node, { NodeOptions } from '../../scenery/js/nodes/Node.js';
import TColor from '../../scenery/js/util/TColor.js';
import { SoundDragListenerOptions } from './SoundDragListener.js';
import { SoundKeyboardDragListenerOptions } from './SoundKeyboardDragListener.js';
type SelfOptions = {
    width?: number;
    height?: number;
    handleFill?: TColor;
    shaftFill?: TColor;
    bodyFill?: TColor;
    bodyTopFill?: TColor;
    indicatorBackgroundFill?: TColor;
    indicatorRemainingFill?: TColor;
    hoseFill?: TColor;
    baseFill?: TColor;
    hoseCurviness?: number;
    hoseAttachmentOffset?: Vector2;
    nodeEnabledProperty?: TProperty<boolean> | null;
    injectionEnabledProperty?: TProperty<boolean>;
    handleTouchAreaXDilation?: number;
    handleTouchAreaYDilation?: number;
    handleMouseAreaXDilation?: number;
    handleMouseAreaYDilation?: number;
    dragListenerOptions?: StrictOmit<SoundDragListenerOptions, 'drag' | 'tandem'>;
    keyboardDragListenerOptions?: StrictOmit<SoundKeyboardDragListenerOptions, 'drag' | 'keyboardDragDirection' | 'tandem'>;
    handleCursor?: 'ns-resize';
    numberOfParticlesPerPumpAction?: number;
    addParticlesOneAtATime?: boolean;
};
export type BicyclePumpNodeOptions = SelfOptions & NodeOptions;
export default class BicyclePumpNode extends Node {
    readonly nodeEnabledProperty: TProperty<boolean>;
    readonly hoseAttachmentOffset: Vector2;
    private readonly pumpBodyNode;
    private readonly pumpShaftNode;
    private readonly pumpHandleNode;
    private readonly dragListener;
    private readonly keyboardDragListener;
    private readonly dragDelegate;
    private readonly disposeBicyclePumpNode;
    /**
     * @param numberProperty - number of particles in the simulation
     * @param rangeProperty - allowed range
     * @param [providedOptions]
     */
    constructor(numberProperty: TProperty<number>, rangeProperty: TReadOnlyProperty<Range>, providedOptions?: BicyclePumpNodeOptions);
    /**
     * Sets handle and shaft to their initial position.
     */
    private setPumpHandleToInitialPosition;
    reset(): void;
    dispose(): void;
}
export {};
