import type { EventEmitter } from '@visactor/vutils';
import type { ITimeline } from './timeline';
import type { IStage } from '../stage';
export type TickerMode = 'raf' | 'timeout' | 'manual';
export declare enum STATUS {
    INITIAL = 0,
    RUNNING = 1,
    PAUSE = 2
}
export interface ITickHandler {
    tick: (interval: number, cb: (handler: ITickHandler) => void) => void;
    tickTo?: (t: number, cb: (handler: ITickHandler, params?: {
        once: boolean;
    }) => void) => void;
    getTime: () => number;
    release: () => void;
}
export interface ITickerHandlerStatic {
    new (): ITickHandler;
}
export interface ITicker extends EventEmitter {
    setFPS?: (fps: number) => void;
    setInterval?: (interval: number) => void;
    getFPS?: () => number;
    getInterval?: () => number;
    tick: (interval: number) => void;
    tickAt?: (time: number) => void;
    pause: () => boolean;
    resume: () => boolean;
    start: (force?: boolean) => boolean;
    stop: () => void;
    addTimeline: (timeline: ITimeline) => void;
    remTimeline: (timeline: ITimeline) => void;
    trySyncTickStatus: () => void;
    getTimelines: () => ITimeline[];
    release: () => void;
    bindStage: (stage: IStage) => void;
    autoStop: boolean;
}
