/** @packageDocumentation
 * @module Tween
 */
/**
 * Adapted from:
 *
 * Tween.js - Licensed under the MIT license
 * https://github.com/tweenjs/tween.js
 * ----------------------------------------------
 *
 * See https://github.com/tweenjs/tween.js/graphs/contributors for the full list of contributors.
 * Thank you all, you're awesome!
 */
/** A group of `Tween`s. This class is called `Group` in the tween.js library.
 * @note Unlike tween.js, we do NOT create any global instances of this class
 * like the global object `TWEEN` in tween.js. You must create an instance of this class, and then create [[Tween]]s by
 * calling [[Tweens.create]] or by calling `new Tween()` and pass your Group as its first argument.
 * @see The [tween.js users guide](https://github.com/tweenjs/tween.js/blob/master/docs/user_guide.md)
 * @public
 */
export declare class Tweens {
    private _tweens;
    private _tweensAddedDuringUpdate;
    private _nextId;
    nextId(): number;
    getAll(): any[];
    removeAll(): void;
    add(tween: Tween): void;
    remove(tween: Tween): void;
    update(time?: number, preserve?: boolean): boolean;
    /** Create a new Tween owned by this Group. Equivalent to `new TWEEN.Tween` in tween.js library. */
    create(from: any, opts?: {
        to: any;
        duration: number;
        onUpdate: UpdateCallback;
        onComplete?: TweenCallback;
        delay?: number;
        start?: boolean;
        easing?: EasingFunction;
        interpolation?: InterpolationFunction;
    }): Tween;
}
/**
 * @public
 * @extensions
 */
export type TweenCallback = (obj: any) => void;
/**
 * @public
 * @extensions
 */
export type UpdateCallback = (obj: any, t: number) => void;
/**
 * @public
 * @extensions
 */
export type EasingFunction = (k: number) => number;
/**
 * @public
 * @extensions
 */
export type InterpolationFunction = (v: any, k: number) => number;
/** A Tween for interpolating values of an object. Instances of this class are owned by a `Tweens` group.
 * @see The [tween.js users guide](https://github.com/tweenjs/tween.js/blob/master/docs/user_guide.md)
 * @public
 */
export declare class Tween {
    private _group;
    private _object;
    private _isPaused;
    private _pauseStart;
    private _valuesStart;
    private _valuesEnd;
    private _valuesStartRepeat;
    private _duration;
    private _repeat;
    private _repeatDelayTime?;
    private _yoyo;
    private _isPlaying;
    private _reversed;
    private _delayTime;
    private _startTime?;
    private _easingFunction;
    private _interpolationFunction;
    private _chainedTweens;
    private _onStartCallback?;
    private _onStartCallbackFired;
    private _onUpdateCallback?;
    private _onRepeatCallback?;
    private _onCompleteCallback?;
    private _onStopCallback?;
    private _id;
    constructor(_group: Tweens, _object: any);
    getId(): number;
    get isPlaying(): boolean;
    get isPaused(): boolean;
    to(properties: any, duration?: number): this;
    duration(d: number): this;
    start(time?: string | number): this;
    stop(): this;
    end(): this;
    pause(time: number): this;
    resume(time?: number): this;
    stopChainedTweens(): void;
    group(group: Tweens): this;
    delay(amount?: number): this;
    repeat(times: number): this;
    repeatDelay(amount: number): this;
    yoyo(yoyo: boolean): this;
    easing(easingFunction?: EasingFunction): this;
    interpolation(interpolationFunction?: InterpolationFunction): this;
    chain(...tweens: Tween[]): this;
    onStart(callback: TweenCallback): this;
    onUpdate(callback: UpdateCallback): this;
    onRepeat(callback: TweenCallback): this;
    onComplete(callback?: TweenCallback): this;
    onStop(callback: TweenCallback): this;
    update(time: number): boolean;
}
/** Easing functions from tween.js
 * @public
 */
export declare const Easing: {
    Linear: {
        None: (k: number) => number;
    };
    Quadratic: {
        In: (k: number) => number;
        Out: (k: number) => number;
        InOut: (k: number) => number;
    };
    Cubic: {
        In: (k: number) => number;
        Out: (k: number) => number;
        InOut: (k: number) => number;
    };
    Quartic: {
        In: (k: number) => number;
        Out: (k: number) => number;
        InOut: (k: number) => number;
    };
    Quintic: {
        In: (k: number) => number;
        Out: (k: number) => number;
        InOut: (k: number) => number;
    };
    Sinusoidal: {
        In: (k: number) => number;
        Out: (k: number) => number;
        InOut: (k: number) => number;
    };
    Exponential: {
        In: (k: number) => number;
        Out: (k: number) => number;
        InOut: (k: number) => number;
    };
    Circular: {
        In: (k: number) => number;
        Out: (k: number) => number;
        InOut: (k: number) => number;
    };
    Elastic: {
        In: (k: number) => number;
        Out: (k: number) => number;
        InOut: (k: number) => number;
    };
    Back: {
        In: (k: number) => number;
        Out: (k: number) => number;
        InOut: (k: number) => number;
    };
    Bounce: {
        In: (k: number) => number;
        Out: (k: number) => number;
        InOut: (k: number) => number;
    };
};
/** Interpolation functions from tween.js
 *  @public
 */
export declare const Interpolation: {
    Linear: (v: any, k: number) => number;
    Bezier: (v: any, k: number) => number;
    CatmullRom: (v: any, k: number) => number;
    Utils: {
        Linear: (p0: number, p1: number, t: number) => number;
        Bernstein: (n: number, i: number) => number;
        Factorial: (n: number) => number;
        CatmullRom: (p0: number, p1: number, p2: number, p3: number, t: number) => number;
    };
};
//# sourceMappingURL=Tween.d.ts.map