declare const easing: {
    bounceIn: (t: number) => number;
    bounceInOut: (t: number) => number;
    bounceOut: (t: number) => number;
    sineInOut: (t: number) => number;
    sineOut: (t: number) => number;
    sineIn: (t: number) => number;
    quintInOut: (t: number) => number;
    quintOut: (t: number) => number;
    quintIn: (t: number) => number;
    quartInOut: (t: number) => number;
    quartOut: (t: number) => number;
    quartIn: (t: number) => number;
    cubicInOut: (t: number) => number;
    cubicIn: (t: number) => number;
    cubicOut: (t: number) => number;
    quadInOut: (t: number) => number;
    quadOut: (t: number) => number;
    quadIn: (t: number) => number;
    linear: (t: number) => number;
};
declare type easingType = keyof typeof easing;

declare interface SmokeDistanceOptions {
    /**
     *
     */
    from: Record<string, any>;
    /**
     *
     */
    to: Record<string, any>;
    /**
     *
     */
    duration: number;
    /**
     *
     */
    delay: number;
    /**
     *
     */
    easing: easingType;
    /**
     *
     */
    onStart?: (keys: Record<string, number>) => void;
    /**
     *
     */
    onUpdate?: (keys: Record<string, number>) => void;
    /**
     *
     */
    onFinish?: (keys: Record<string, number>) => void;
}
declare class SmokeDistance {
    private _from;
    private _to;
    private _duration;
    private _delay;
    private _easing;
    private _onStart;
    private _onUpdate;
    private _onFinish;
    private _startTime;
    private _started;
    private _finished;
    private _timer;
    private _time;
    private _elapsed;
    private _keys;
    constructor(options: SmokeDistanceOptions);
    update(): void;
    start(): void;
    stop(): void;
}

export { SmokeDistance, SmokeDistanceOptions, easingType };
