import { default as React } from 'react';
import { CharacterRegistry } from './puppetCharacter';
import { NicePuppetShowDocument, PuppetScene, PuppetShowPlayerState } from './puppetShowTypes';
import { TimelineState } from './puppetTimeline';

export interface PuppetPlayerContextValue {
    document: NicePuppetShowDocument | null;
    playerState: PuppetShowPlayerState;
    play: () => void;
    pause: () => void;
    stop: () => void;
    seek: (timeMs: number) => void;
    seekToScene: (sceneIndex: number) => void;
    setPlaybackSpeed: (speed: number) => void;
    setVolume: (volume: number) => void;
    toggleMute: () => void;
    nextScene: () => void;
    previousScene: () => void;
    setLoop: (loop: boolean) => void;
}
export declare function usePuppetPlayer(): PuppetPlayerContextValue;
export interface UsePuppetShowPlayerOptions {
    document: NicePuppetShowDocument;
    autoPlay?: boolean;
    loop?: boolean;
    initialVolume?: number;
    initialSpeed?: number;
    onSceneChange?: (sceneIndex: number, scene: PuppetScene) => void;
    onEnd?: () => void;
}
export interface UsePuppetShowPlayerResult {
    playerState: PuppetShowPlayerState;
    timelineState: TimelineState | null;
    characterRegistry: CharacterRegistry;
    play: () => void;
    pause: () => void;
    stop: () => void;
    seek: (timeMs: number) => void;
    seekToScene: (sceneIndex: number) => void;
    setPlaybackSpeed: (speed: number) => void;
    setVolume: (volume: number) => void;
    toggleMute: () => void;
    nextScene: () => void;
    previousScene: () => void;
    setLoop: (loop: boolean) => void;
}
export declare function usePuppetShowPlayer(options: UsePuppetShowPlayerOptions): UsePuppetShowPlayerResult;
export interface PuppetShowPlayerProps {
    document: NicePuppetShowDocument;
    autoPlay?: boolean;
    loop?: boolean;
    showControls?: boolean;
    className?: string;
    style?: React.CSSProperties;
    onSceneChange?: (sceneIndex: number, scene: PuppetScene) => void;
    onEnd?: () => void;
}
export declare function PuppetShowPlayer({ document, autoPlay, loop, showControls, className, style, onSceneChange, onEnd, }: PuppetShowPlayerProps): React.ReactElement;
export interface PuppetShowMiniPlayerProps {
    document: NicePuppetShowDocument;
    width?: number;
    height?: number;
    autoPlay?: boolean;
    className?: string;
    style?: React.CSSProperties;
}
export declare function PuppetShowMiniPlayer({ document, width, height, autoPlay, className, style, }: PuppetShowMiniPlayerProps): React.ReactElement;
//# sourceMappingURL=puppetPlayer.d.ts.map