import type { VLibrasPlayerOptions, VLibrasPlayerCallbacks, TranslationOptions } from '../types';
import { VLibrasPlayer } from '../core/vlibras-player';
interface VLibrasPlayerState {
    status: 'idle' | 'initializing' | 'ready' | 'translating' | 'playing' | 'paused' | 'error';
    isLoading: boolean;
    isReady: boolean;
    isTranslating: boolean;
    isPlaying: boolean;
    isPaused: boolean;
    progress: number | null;
    region: 'BR' | 'PT';
    currentText?: string;
    currentGloss?: string;
    errors: {
        fatal: string | null;
        warnings: string[];
    };
    lastTranslation?: {
        text: string;
        timestamp: number;
    };
}
interface UseVLibrasPlayerOptions extends Omit<VLibrasPlayerOptions, keyof VLibrasPlayerCallbacks> {
    containerRef?: {
        current: HTMLElement | null;
    };
    autoInit?: boolean;
    onStateChange?: (state: VLibrasPlayerState) => void;
    onPlayerReady?: () => void;
    onLoad?: () => void;
    onPlayerError?: (error: string, isFatal: boolean) => void;
    onTranslationStart?: () => void;
    onTranslationEnd?: () => void;
    onTranslationError?: (error: string) => void;
    onPlay?: () => void;
    onPlaybackStart?: () => void;
    onPlaybackEnd?: () => void;
    onPause?: () => void;
    onPlaybackPause?: () => void;
    onResume?: () => void;
    onPlaybackResume?: () => void;
    onRestart?: () => void;
    onPlaybackRestart?: () => void;
    onStop?: () => void;
    retryOnError?: boolean;
    maxRetries?: number;
    debounceMs?: number;
}
/**
 * Hook React para VLibras Player com melhores práticas
 *
 * @example
 * ```tsx
 * const containerRef = useRef<HTMLDivElement>(null);
 * const player = useVLibrasPlayer({
 *   containerRef,
 *   autoInit: true,
 *   onPlayerReady: () => console.log('Player pronto!'),
 *   onStateChange: (state) => console.log('Estado:', state.status)
 * });
 *
 * // Usar o player
 * await player.translate('Olá mundo');
 * ```
 */
export declare function useVLibrasPlayer(options?: UseVLibrasPlayerOptions): {
    translate: (text: string, translationOptions?: TranslationOptions) => Promise<void>;
    initializePlayer: () => Promise<void>;
    controls: {
        play: (gloss?: string | null, options?: TranslationOptions) => void;
        pause: () => void;
        resume: () => void;
        stop: () => void;
        restart: () => void;
        repeat: () => void;
    };
    settings: {
        setSpeed: (speed: number) => void;
        setRegion: (region: "BR" | "PT") => void;
        changeAvatar: (avatarName: string) => void;
        toggleSubtitle: () => void;
        playWelcome: () => void;
    };
    utils: {
        clearWarnings: () => void;
        reset: () => void;
        getPlayer: () => VLibrasPlayer | null;
        retry: () => Promise<void>;
    };
    play: (gloss?: string | null, options?: TranslationOptions) => void;
    pause: () => void;
    resume: () => void;
    stop: () => void;
    restart: () => void;
    repeat: () => void;
    setSpeed: (speed: number) => void;
    setRegion: (region: "BR" | "PT") => void;
    changeAvatar: (avatarName: string) => void;
    toggleSubtitle: () => void;
    playWelcome: () => void;
    player: {
        status: "idle" | "playing" | "translating" | "error" | "initializing" | "ready" | "paused";
        loaded: boolean;
        translated: boolean;
        progress: number | null;
        region: "BR" | "PT";
        isTranslating: boolean;
        isPlaying: boolean;
        text: string | undefined;
        gloss: string | undefined;
    };
    error: string | null;
    isLoading: boolean;
    isReady: boolean;
    isTranslating: boolean;
    isPlaying: boolean;
    canTranslate: boolean;
    canPause: boolean;
    canResume: boolean;
    canStop: boolean;
    canRestart: boolean | {
        text: string;
        timestamp: number;
    } | undefined;
    hasWarnings: boolean;
    isBusy: boolean;
    status: "idle" | "initializing" | "ready" | "translating" | "playing" | "paused" | "error";
    isPaused: boolean;
    progress: number | null;
    region: "BR" | "PT";
    currentText?: string;
    currentGloss?: string;
    errors: {
        fatal: string | null;
        warnings: string[];
    };
    lastTranslation?: {
        text: string;
        timestamp: number;
    };
};
export {};
