import Clip from './Clip'; 
 | 
import { ArrayLike, Dictionary } from '../core/types'; 
 | 
import { AnimationEasing } from './easing'; 
 | 
import Animation from './Animation'; 
 | 
declare type NumberArray = ArrayLike<number>; 
 | 
declare type InterpolatableType = string | number | NumberArray | NumberArray[]; 
 | 
export declare function cloneValue(value: InterpolatableType): number | any[]; 
 | 
declare type ValueType = 0 | 1 | 2 | 3 | 4 | 5 | 6; 
 | 
declare type Keyframe = { 
 | 
    time: number; 
 | 
    value: unknown; 
 | 
    percent: number; 
 | 
    rawValue: unknown; 
 | 
    easing?: AnimationEasing; 
 | 
    easingFunc?: (percent: number) => number; 
 | 
    additiveValue?: unknown; 
 | 
}; 
 | 
declare class Track { 
 | 
    keyframes: Keyframe[]; 
 | 
    propName: string; 
 | 
    valType: ValueType; 
 | 
    discrete: boolean; 
 | 
    _invalid: boolean; 
 | 
    private _finished; 
 | 
    private _needsSort; 
 | 
    private _additiveTrack; 
 | 
    private _additiveValue; 
 | 
    private _lastFr; 
 | 
    private _lastFrP; 
 | 
    constructor(propName: string); 
 | 
    isFinished(): boolean; 
 | 
    setFinished(): void; 
 | 
    needsAnimate(): boolean; 
 | 
    getAdditiveTrack(): Track; 
 | 
    addKeyframe(time: number, rawValue: unknown, easing?: AnimationEasing): Keyframe; 
 | 
    prepare(maxTime: number, additiveTrack?: Track): void; 
 | 
    step(target: any, percent: number): void; 
 | 
    private _addToTarget; 
 | 
} 
 | 
declare type DoneCallback = () => void; 
 | 
declare type AbortCallback = () => void; 
 | 
export declare type OnframeCallback<T> = (target: T, percent: number) => void; 
 | 
export declare type AnimationPropGetter<T> = (target: T, key: string) => InterpolatableType; 
 | 
export declare type AnimationPropSetter<T> = (target: T, key: string, value: InterpolatableType) => void; 
 | 
export default class Animator<T> { 
 | 
    animation?: Animation; 
 | 
    targetName?: string; 
 | 
    scope?: string; 
 | 
    __fromStateTransition?: string; 
 | 
    private _tracks; 
 | 
    private _trackKeys; 
 | 
    private _target; 
 | 
    private _loop; 
 | 
    private _delay; 
 | 
    private _maxTime; 
 | 
    private _force; 
 | 
    private _paused; 
 | 
    private _started; 
 | 
    private _allowDiscrete; 
 | 
    private _additiveAnimators; 
 | 
    private _doneCbs; 
 | 
    private _onframeCbs; 
 | 
    private _abortedCbs; 
 | 
    private _clip; 
 | 
    constructor(target: T, loop: boolean, allowDiscreteAnimation?: boolean, additiveTo?: Animator<any>[]); 
 | 
    getMaxTime(): number; 
 | 
    getDelay(): number; 
 | 
    getLoop(): boolean; 
 | 
    getTarget(): T; 
 | 
    changeTarget(target: T): void; 
 | 
    when(time: number, props: Dictionary<any>, easing?: AnimationEasing): this; 
 | 
    whenWithKeys(time: number, props: Dictionary<any>, propNames: string[], easing?: AnimationEasing): this; 
 | 
    pause(): void; 
 | 
    resume(): void; 
 | 
    isPaused(): boolean; 
 | 
    duration(duration: number): this; 
 | 
    private _doneCallback; 
 | 
    private _abortedCallback; 
 | 
    private _setTracksFinished; 
 | 
    private _getAdditiveTrack; 
 | 
    start(easing?: AnimationEasing): this; 
 | 
    stop(forwardToLast?: boolean): void; 
 | 
    delay(time: number): this; 
 | 
    during(cb: OnframeCallback<T>): this; 
 | 
    done(cb: DoneCallback): this; 
 | 
    aborted(cb: AbortCallback): this; 
 | 
    getClip(): Clip; 
 | 
    getTrack(propName: string): Track; 
 | 
    getTracks(): Track[]; 
 | 
    stopTracks(propNames: string[], forwardToLast?: boolean): boolean; 
 | 
    saveTo(target: T, trackKeys?: readonly string[], firstOrLast?: boolean): void; 
 | 
    __changeFinalValue(finalProps: Dictionary<any>, trackKeys?: readonly string[]): void; 
 | 
} 
 | 
export declare type AnimatorTrack = Track; 
 | 
export {}; 
 |