import { WaveAudio, EventBase } from '@awayjs/core';
import { Timeline } from '../base/Timeline';
import { DisplayObject } from './DisplayObject';
import { Sprite } from './Sprite';
interface IScene {
    offset: number;
    name: string;
    labels: ILabel[];
    numFrames: number;
}
interface ILabel {
    frame: number;
    name: string;
}
export declare class MovieClip extends Sprite {
    static movieClipSoundsManagerClass: any;
    private static _movieClips;
    private static _activeSounds;
    static stopSounds(sound?: WaveAudio): void;
    static assetType: string;
    static getNewMovieClip(timeline: Timeline): MovieClip;
    static clearPool(): void;
    symbolID: number;
    preventScript: boolean;
    private _timeline;
    private _scenes;
    private _buttonMode;
    private _isButton;
    private _onMouseOver;
    private _onMouseOut;
    private _onMouseDown;
    private _onMouseUp;
    private _onMouseUpOutside;
    private _time;
    private _currentFrameIndex;
    private _isPlaying;
    private _currentSceneIndex;
    private _sceneDirty;
    private _skipAdvance;
    private _isInit;
    _sessionID_childs: NumberMap<DisplayObject>;
    private _sounds;
    _useHandCursor: boolean;
    private _soundVolume;
    private _skipFramesForStream;
    private _soundStreams;
    /**
     * Mark that operation provided by timeline except a script, some operation not allowed from script
     * `removeChild` should not remove a child name
     * @private
     */
    private _isTimelinePass;
    /**
     * Some symbols can be a sprite. This means that when we spawn it, we should track only first frame.
     * @private
     */
    private _isSprite;
    get isSprite(): boolean;
    buttonEnabled: boolean;
    initSoundStream(streamInfo: any, maxFrameNum: number): void;
    addSoundStreamBlock(frameNum: number, streamBlock: any): void;
    private stopCurrentStream;
    private resetStreamStopped;
    private _syncSounds;
    constructor(timeline: Timeline, spriteMode?: boolean);
    /**
     * Reduce frames of timeline to sprite mode.
     * Used for UIComponents, where timeline store more that 1 frame
     */
    transformToSprite(): void;
    startSound(sound: WaveAudio, loopsToPlay: number, onSoundComplete?: (event: EventBase) => void): void;
    stopSounds(sound?: WaveAudio): void;
    /**
     * Compute scene index by global frame index
     * @param frameIndex
     * @private
     */
    private getSceneIndexByFrame;
    private getSceneIndex;
    set currentSceneName(scene: string);
    get currentSceneName(): string;
    get currentScene(): IScene;
    get scenes(): IScene[];
    set scenes(value: IScene[]);
    get isPlaying(): boolean;
    get soundVolume(): number;
    set soundVolume(value: number);
    stopSound(sound: WaveAudio): void;
    buttonReset(): void;
    getMouseCursor(): string;
    queueFrameScripts(timeline: Timeline, frame_idx: number, scriptPass1: boolean): void;
    registerScriptObject(child: DisplayObject): void;
    unregisterScriptObject(child: DisplayObject): void;
    dispose(): void;
    disposeValues(): void;
    get useHandCursor(): boolean;
    set useHandCursor(value: boolean);
    get buttonMode(): boolean;
    set buttonMode(value: boolean);
    get isButton(): boolean;
    set isButton(value: boolean);
    get isInit(): boolean;
    set isInit(value: boolean);
    get timeline(): Timeline;
    set timeline(value: Timeline);
    /**
     *
     */
    loop: boolean;
    get numFrames(): number;
    jumpToLabel(label: string, offset?: number): boolean;
    /**
     * the current index of the current active frame
     */
    constructedKeyFrameIndex: number;
    reset(fireScripts?: boolean, resetSelf?: boolean): void;
    set currentFrameIndex(value: number);
    get currentFrameIndex(): number;
    get currentFrameIndexRelative(): number;
    set currentFrameIndexRelative(value: number);
    jumpToIndex(value: number, sceneIndex?: string | number): boolean;
    addButtonListeners(): void;
    removeButtonListeners(): void;
    getTimelineChildAtSessionID(sessionID: number): DisplayObject;
    constructFrame(timeline: Timeline, start_construct_idx: number, target_keyframe_idx: number, jump_forward: boolean, frame_idx: number, queue_pass2: boolean, queue_script: boolean): void;
    addTimelineChildAtDepth(child: DisplayObject, depth: number, sessionID: number): DisplayObject;
    removeTimelineChildAtDepth(depth: number): void;
    removeChildAtInternal(index: number): DisplayObject;
    get assetType(): string;
    /**
     * Starts playback of animation from current position
     */
    play(): void;
    /**
     * Stop playback of animation and hold current position
     */
    stop(): void;
    clone(): MovieClip;
    copyTo(movieClip: MovieClip): void;
    advanceFrameInternal(): void;
    advanceFrame(): void;
    logHierarchy(depth?: number): void;
    printHierarchyName(depth: number, target: DisplayObject): void;
    clear(): void;
    private _onChannelCompleteStopError;
    private _stopChannels;
    private _removeSound;
}
export {};
//# sourceMappingURL=MovieClip.d.ts.map