import '../../chipper/js/browser/initialize-globals.js';
import '../../assert/js/assert.js';
import '../../globals.js';
import { Path, PathOptions } from '../../scenery/js/imports.js';
type SelfOptions = {
    headHeight?: number;
    headWidth?: number;
    tailWidth?: number;
    isHeadDynamic?: boolean;
    scaleTailToo?: boolean;
    fractionalHeadHeight?: number;
    doubleHead?: boolean;
};
export type ArrowNodeOptions = SelfOptions & PathOptions;
export default class ArrowNode extends Path {
    constructor(tailX: number, tailY: number, tipX: number, tipY: number, providedOptions?: ArrowNodeOptions);
    private _tailX;
    get tailX(): number;
    private _tailY;
    private readonly options;
    private shapePoints;
    get tailY(): number;
    private _tipX;
    get tipX(): number;
    private _tipY;
    get tipY(): number;
    /**
     * Sets the tail and tip positions to update the arrow shape.
     * If the tail and tip are at the same point, the arrow is not shown.
     */
    setTailAndTip(tailX: number, tailY: number, tipX: number, tipY: number): void;
    /**
     * Initialize or update the shape. Only called if the number of points in the shape changes.
     */
    private updateShape;
    /**
     * Sets the tail position.
     */
    setTail(tailX: number, tailY: number): void;
    /**
     * Sets the tip position.
     */
    setTip(tipX: number, tipY: number): void;
    /**
     * Update the internal shapePoints array which is used to populate the points in the Shape instance.
     * Returns true if the number of points in the array has changed, which would require building a new shape instance.
     */
    private updateShapePoints;
    /**
     * Sets the tail width.
     */
    setTailWidth(tailWidth: number): void;
    /**
     * Sets whether the arrow has one or two heads.
     */
    setDoubleHead(doubleHead: boolean): void;
}
export {};
//# sourceMappingURL=ArrowNode.d.ts.map