import type { Scene } from "@babylonjs/core/scene";
import type { IAudioPlayer } from "../Audio/IAudioPlayer";
import type { IMmdRuntime } from "../IMmdRuntime";
/**
 * Display time format
 *
 * This enum is used for `MmdPlayerControl.displayTimeFormat`
 */
export declare enum DisplayTimeFormat {
    Seconds = 0,
    Frames = 1
}
/**
 * Mmd player control
 *
 * Create youtube-like player control for MMD
 *
 * It's just a GUI for debugging purposes, so it doesn't offer a lot of customization, and We don't plan to
 */
export declare class MmdPlayerControl {
    autoHidePlayerControl: boolean;
    hidePlayerControlTimeout: number;
    displayTimeFormat: DisplayTimeFormat;
    private readonly _mmdRuntime;
    private readonly _audioPlayer;
    private _newCanvasContainer;
    private _playerContainer;
    private _hidePlayerControlTimeoutId;
    private _playButton;
    private _timeSlider;
    private _soundButton;
    private _volumeSlider;
    private _currentFrameNumberSpan;
    private _endFrameNumberSpan;
    private _speedSlider;
    private _fullscreenButton;
    private readonly _bindedDispose;
    private readonly _scene;
    /**
     * Create a MMD player control
     * @param scene Scene
     * @param mmdRuntime MMD runtime
     * @param audioPlayer Audio player
     * @throws {Error} if failed to get root element
     */
    constructor(scene: Scene, mmdRuntime: IMmdRuntime, audioPlayer?: IAudioPlayer);
    private _createCanvasContainer;
    private _restoreCanvasContainer;
    private _createPlayerControl;
    private readonly _onPlayerControlMouseEnter;
    private readonly _onPlayerControlMouseLeave;
    private readonly _onAnimationPlay;
    private readonly _onAnimationPause;
    private readonly _onAnimationDurationChanged;
    private readonly _onAnimationTick;
    private readonly _onMuteStateChanged;
    private _formattedTimeCacheKey;
    private _formatterTimeCacheValue;
    private _getFormattedTime;
    /**
     * Hide player control
     */
    hidePlayerControl(): void;
    /**
     * Show player control
     */
    showPlayerControl(): void;
    /**
     * Dispose this object
     */
    dispose(): void;
}
