import * as react_jsx_runtime from 'react/jsx-runtime';
import { ReactNode } from 'react';

type ModelStatus = "idle" | "loading" | "ready" | "error";
interface SentimentResult {
    label: string;
    score: number;
}
interface TransformersProviderProps {
    children: ReactNode;
    moduleUrl?: string;
    loadTimeout?: number;
    maxRetries?: number;
    nonce?: string;
    onLibraryError?: (err: Error) => void;
    onModelError?: (modelId: string, err: Error) => void;
}
interface TransformersContextValue {
    isLibraryLoaded: boolean;
    libraryStatus: ModelStatus;
    libraryError: Error | null;
    models: Record<string, any>;
    modelStatus: Record<string, ModelStatus>;
    modelErrors: Record<string, Error | null>;
    loadModel: <T = unknown>(modelId: string, task?: string, retry?: number) => Promise<T>;
    unloadModel: (modelId: string) => void;
    analyzeSentiment: (text: string, customModel?: string, options?: Record<string, any>) => Promise<SentimentResult[]>;
    transcribeAudio: (audio: Blob | File, options?: Record<string, any>) => Promise<any>;
    /** Suspense-ready promise that resolves when transformers.js is ready */
    readyPromise: Promise<void>;
}
declare function TransformersProvider({ children, moduleUrl, loadTimeout, maxRetries, nonce, onLibraryError, onModelError, }: TransformersProviderProps): react_jsx_runtime.JSX.Element;
declare function useTransformers(): TransformersContextValue;
declare function useTransformersReady(): void;

export { TransformersProvider, useTransformers, useTransformersReady };
export type { ModelStatus, SentimentResult, TransformersProviderProps };
