/**
 * Copyright (c) Haiku 2016-2018. All rights reserved.
 */
import HaikuBase from './HaikuBase';
import HaikuComponent from './HaikuComponent';
export declare const enum TimeUnit {
    Millisecond = "ms",
    Frame = "fr"
}
export default class HaikuTimeline extends HaikuBase {
    options: any;
    component: any;
    name: any;
    descriptor: any;
    _globalClockTime: any;
    _localElapsedTime: any;
    _localExplicitlySetTime: any;
    _maxExplicitlyDefinedTime: any;
    _isPlaying: any;
    constructor(component: any, name: any, descriptor: any, options: any);
    private getMs;
    assignOptions(options: any): void;
    ensureClockIsRunning(): void;
    /**
     * @method setComponent
     * @description Internal hook to allow Haiku to hot swap on-stage components during editing.
     */
    setComponent(component: any): void;
    updateInternalProperties(updatedGlobalClockTime: any): void;
    doUpdateWithGlobalClockTime(globalClockTime: any): void;
    resetMaxDefinedTimeFromDescriptor(descriptor: any): void;
    isTimeControlled(): boolean;
    controlTime(controlledTimeToSet: any, updatedGlobalClockTime: any): void;
    /**
     * @method getName
     * @description Return the name of this timeline
     */
    getName(): any;
    /**
     * @method getMaxTime
     * @description Return the maximum time that this timeline will reach, in ms.
     */
    getMaxTime(): any;
    /**
     * @method getClockTime
     * @description Return the global clock time that this timeline is at, in ms,
     * whether or not our local time matches it or it has exceeded our max.
     * This value is ultimately managed by the clock and passed in.
     */
    getClockTime(): any;
    /**
     * @method getElapsedTime
     * @description Return the amount of time that has elapsed on this timeline since
     * it started updating, up to the most recent time update it received from the clock.
     * Note that for inactive timelines, this value will cease increasing as of the last update.
     */
    getElapsedTime(): any;
    /**
     * @method getControlledTime
     * @description If time has been explicitly set here via time control, this value will
     * be the number of that setting.
     */
    getControlledTime(): any;
    /**
     * @method getBoundedTime
     * @description Return the locally elapsed time, or the maximum time of this timeline,
     * whichever is smaller. Useful if you want to know what the "effective" time of this
     * timeline is, not necessarily how much has elapsed in an absolute sense. This is used
     * in the renderer to determine what value to calculate "now" deterministically.
     */
    getBoundedTime(): any;
    /**
     * @method getTime
     * @description Convenience wrapper. Currently returns the bounded time. There's an argument
     * that this should return the elapsed time, though. #TODO
     */
    getTime(): any;
    /**
     * @method getBoundedFrame
     * @description Return the current frame up to the maximum frame available for this timeline's duration.
     */
    getBoundedFrame(): number;
    /**
     * @method getUnboundedFrame
     * @description Return the current frame, even if it is above the maximum frame.
     */
    getUnboundedFrame(): number;
    /**
     * @method getFrame
     * @description Return the bounded frame.
     * There's an argument that this should return the absolute frame. #TODO
     */
    getFrame(): number;
    /**
     * @method isPlaying
     * @description Returns T/F if the timeline is playing
     */
    isPlaying(): boolean;
    /**
     * @method isExplicitlyPaused
     * @description Returns T/F if the timeline has actually been paused; differentiate from
     * the falsy state timelines have when first constructed.
     */
    isExplicitlyPaused(): boolean;
    /**
     * @method isFrozen
     * @description Returns T/F if the timeline is frozen
     */
    isFrozen(): boolean;
    /**
     * @method isFinished
     * @description Returns T/F if the timeline is finished.
     * If this timeline is set to loop, it is never "finished".
     */
    isFinished(): boolean;
    isUnfinished(): boolean;
    duration(): any;
    getDuration(): any;
    setRepeat(bool: any): void;
    getRepeat(): boolean;
    isRepeating(): boolean;
    isLooping(): boolean;
    freeze(): void;
    unfreeze(): void;
    start(maybeGlobalClockTime: any, descriptor: any): void;
    startSoftly(maybeGlobalClockTime: any, descriptor: any): void;
    stop(maybeGlobalClockTime: any, descriptor: any): void;
    stopSoftly(maybeGlobalClockTime: any, descriptor: any): void;
    pause(): void;
    pauseSoftly(): void;
    play(options?: any): void;
    playSoftly(): void;
    seek(amount: number, unit?: TimeUnit): void;
    private seekSoftly;
    gotoAndPlay(amount: number, unit?: TimeUnit): void;
    gotoAndStop(amount: number, unit?: TimeUnit): void;
    static __name__: string;
    static all: () => HaikuTimeline[];
    static where: (criteria: any) => HaikuTimeline[];
    static create: (component: HaikuComponent, name: any, descriptor: any, config: any) => HaikuTimeline;
}
