import { Object3D } from "three";
import { Behaviour } from "../Component.js";
import { SplineContainer } from "./Spline.js";
/**
 * [SplineWalker](https://engine.needle.tools/docs/api/SplineWalker) Moves an object along a {@link SplineContainer}.
 * Use this with a SplineContainer component.
 *
 * ![](https://cloud.needle.tools/-/media/XIHaiNFsA1IbMZVJepp1aQ.gif)
 *
 * - Example http://samples.needle.tools/splines
 *
 * @summary Moves an object along a spline
 * @category Splines
 * @group Components
 */
export declare class SplineWalker extends Behaviour {
    /**
     * The spline to use/walk along. Add a SplineContainer component to an object and assign it here.
     */
    spline: SplineContainer | null;
    /**
     * The object to move along the spline.
     * If object is undefined then the spline walker will use it's own object (gameObject).
     * If object is null the spline walker will not move any object.
     * @default undefined
    */
    object?: Object3D | null;
    /**
     * If true the object will rotate to look in the direction of the spline while moving along it.
     * @default true
     */
    useLookAt: boolean;
    /**
     * The object to look at while moving along the spline.
     * If null the object will look in the direction of the spline.
     * This can be disabled by setting useLookAt to false.
     * @default null
    */
    lookAt: Object3D | null;
    /**
     * When clamp is set to true, the position01 value will be clamped between 0 and 1 and the object will not loop the spline.
     * @default false
     */
    clamp: boolean;
    /**
     * The current position on the spline. The value ranges from 0 (start of the spline curve) to 1 (end of the spline curve)
     *
     * When setting this value, the position will be updated in the next frame.
     * @default 0
     */
    get position01(): number;
    set position01(v: number);
    /** Resets the position to 0 */
    reset(): void;
    /**
     * If true the SplineWalker will automatically move along the spline
     * @default true
     */
    autoRun: boolean;
    /**
     * The duration in seconds it takes to complete the whole spline when autoWalk is enabled.
     * @default 10
     */
    duration: number;
    /**
     * The strength with which the object is pulled to the spline.
     * This can be used to create a "rubber band" effect when the object is moved away from the spline by other forces.
     * A value of 0 means no pull, a value of 1 means the object is always on the spline.
     * @default 1
     */
    pullStrength: number;
    private _position01;
    private _needsUpdate;
    /** @internal */
    start(): void;
    /** @internal */
    onEnable(): void;
    /** @internal */
    onDisable(): void;
    private onUserInput;
    /** @internal */
    update(): void;
    /**
     * Updates the position of the object based on the current position01 value.
     * @internal
     */
    private updateFromPosition;
    private _lastPosition01;
    private _requiredUpdates;
    private _performedUpdates;
    private _lastPositionVector;
}
