import type { TimingFunction } from "./utils";
export declare enum StopMethodFlags {
    Immediate = 0,
    Reset = 1,
    Reverse = 2
}
export type StopMethodOptions = 'reverse' | 'reset' | 'immediate';
export declare const getStopMethodFlag: (method: string | undefined) => StopMethodFlags;
export interface TickerSettings {
    delay: number;
    duration: number;
    easing: string | TimingFunction;
    loop: boolean;
    repeat: number;
    reverse: boolean;
    stopMethod: StopMethodOptions;
    autoPlay: boolean;
}
export interface TickerLifecycle {
    onStart?: (ticker: Ticker) => void;
    onProgress?: (ticker: Ticker) => void;
    onEnd?: (ticker: Ticker) => void;
    onStop?: (ticker: Ticker) => void;
    onPause?: (ticker: Ticker) => void;
    onResume?: (ticker: Ticker) => void;
    onRepeat?: (ticker: Ticker) => void;
}
export declare enum TickerState {
    Pending = 0,
    Playing = 1,
    Stopping = 2,
    Paused = 3,
    Destroyed = 4,
    Stopped = 5,
    Finished = 6
}
export interface Ticker extends Omit<TickerSettings, 'stopMethod'>, TickerLifecycle {
    id: number;
    state: TickerState;
    stopMethod: StopMethodFlags;
    repeatCount: number;
    startedAt: number;
    pausedAt: number;
    progressTime: number;
}
export declare const TickerSettingsKeys: {
    delay: boolean;
    duration: boolean;
    loop: boolean;
    repeat: boolean;
    reverse: boolean;
    stopMethod: boolean;
    autoPlay: boolean;
};
export declare function generateTickerId(): number;
export declare class TickerClass {
    readonly id: number;
    delay: number;
    duration: number;
    loop: boolean;
    repeat: number;
    reverse: boolean;
    stopMethod: StopMethodFlags;
    pausedAt: number;
    startTime: number;
    endTime: number;
    progressTime: number;
    constructor(settings: TickerSettings);
    firstTick(time: number): void;
    tick(time: number): void;
}
