import * as React from 'react';
import { IPreviewController } from '@dcl/schemas/dist/dapps/preview';
import './EmoteControls.css';
export declare type EmoteControlsProps = {
    wearablePreviewId: string;
    className?: string;
    hideFrameInput?: boolean;
    hideProgressInput?: boolean;
    hidePlayButton?: boolean;
    hideSoundButton?: boolean;
    wearablePreviewController?: IPreviewController;
    renderPlayButton?: (props: {
        isPlaying: boolean;
        onPlay: () => Promise<void>;
        onPause: () => Promise<void>;
        onToggle: () => Promise<void>;
    }) => React.ReactNode;
    renderSoundButton?: (props: {
        isSoundEnabled: boolean;
        hasSound: boolean;
        onToggle: () => void;
    }) => React.ReactNode;
    renderProgressBar?: (props: {
        frame: number;
        length: number;
        onChange: (value: number) => Promise<void>;
        onMouseUp: () => Promise<void>;
    }) => React.ReactNode;
    renderFrameInput?: (props: {
        frame: number;
        onChange: (value: number) => Promise<void>;
    }) => React.ReactNode;
};
declare type EmoteControlsState = {
    frame: number;
    isPlaying: boolean;
    playingIntervalId?: number;
    length?: number;
    isSoundEnabled: boolean;
    hasSound: boolean;
    shouldResumePlaying: boolean;
    isChangingFrame: boolean;
};
export declare class EmoteControls extends React.PureComponent<EmoteControlsProps, EmoteControlsState> {
    previewController: IPreviewController | undefined;
    state: EmoteControlsState;
    handleAnimationLoop: () => void;
    handleAnimationEnd: () => void;
    handleAnimationPause: () => void;
    handleAnimationPlay: () => Promise<void>;
    handleAnimationPlaying: ({ length }: {
        length: any;
    }) => void;
    componentDidMount(): void;
    handlePlay: () => Promise<void>;
    handlePause: () => Promise<void>;
    handlePlayPause: () => Promise<void>;
    handleSoundToggle: () => void;
    handleFrameChange: (value: number) => Promise<void>;
    handleMouseUp: () => Promise<void>;
    componentDidUpdate(): Promise<void>;
    render(): JSX.Element;
}
export {};
