import { TweenForDurationParams, type TweenAtTimeParams } from "../tween/Tween.js";
export interface MotionProps {
    obj: any;
    propertyToChange: string;
    beginValue?: number;
    actionDuration?: number;
    valueChange?: number | null;
}
export declare class Motion {
    protected obj: any;
    protected propertyToChange: string;
    protected _beginValue: number;
    protected _actionDuration: number;
    protected _listeners: any[];
    protected _currentTime: number;
    protected _prevPos: any;
    protected _pos: any;
    protected _isLooping: boolean;
    protected _startTime: number;
    protected _valueChange: number | null;
    constructor({ obj, propertyToChange, beginValue, actionDuration, valueChange, }: MotionProps);
    getElapsedTime(): number;
    start(): void;
    stop(): void;
    resume(): void;
    rewind(t?: number): void;
    protected addListener(listener: any): void;
    nextFrame(): void;
    prevFrame(): void;
    setTime(t: number): void;
    getTime(): number;
    setBegin(b: number): void;
    getBegin(): number;
    setActionDuration(d: number): void;
    getActionDuration(): number;
    setIsLooping(b: boolean): void;
    getIsLooping(): boolean;
    setObj(obj: any): void;
    getObj(): typeof this.obj;
    setProp(prop: any): void;
    getProp(): string;
    expandParams(params?: null | undefined | TweenAtTimeParams | TweenForDurationParams): {
        lastT: number;
        nextT: number;
        beginValue: number;
        valueChange: number;
        actionDuration: number;
    };
    update(params?: TweenAtTimeParams | undefined | null): typeof this.obj;
    protected removeListener(listener: any): void;
    toString(): string;
}
export default Motion;
