import React from "react";
import ScanbotSDK from "./scanbot-sdk";
import { ScannerConfiguration } from "./model/configuration/scanner-configuration";
import { type DeepPartial } from "./core-types";
import ScanbotCameraView from "./view/scanbot-camera-view";
import { CameraFacingMode, CameraInfo } from "./model/camera-info";
import { WorkerBridge } from "./worker/worker-bridge";
import { Root } from "react-dom/client";
export declare class ScanbotCameraProps {
    configuration: ScannerConfiguration;
    root: Root;
    container?: HTMLElement;
    onSuccess?: (scanner: any) => void;
    onFailure?: (err: Error) => void;
    sdk?: ScanbotSDK;
    /**
     * The user should check that the license is valid before using a Scanner.
     * In case the license expires while the scanner is open, `onLicenseError` will be called.
     */
    onLicenseError?: () => void;
}
export declare class ScanbotCameraState {
    videoReady: boolean;
    sdkReady: boolean;
    zoom?: number;
}
export declare abstract class ScannerView<P extends ScanbotCameraProps, S extends ScanbotCameraState> extends React.Component<P, S> {
    static DEFAULT_DETECTION_RESOLUTION: number;
    static DETECTION_RESOLUTION_4K: number;
    protected constructor(props: P);
    camera: ScanbotCameraView | null;
    disposed?: boolean;
    get bridge(): WorkerBridge;
    dispose(): void;
    updateConfiguration(configuration: DeepPartial<ScannerConfiguration>): void;
    onSdkReady(): Promise<void>;
    /**
     * Internal functions
     */
    componentDidMount(): void;
    componentWillUnmount(): void;
    isSupported(): boolean;
    onVideoReady: () => void;
    onVideoError: (err: Error) => void;
    setZoom(zoom: number): void;
    setFacingMode(mode: CameraFacingMode): Promise<void>;
    switchCamera(deviceId: string, mirrored?: boolean, mode?: CameraFacingMode): Promise<void>;
    getActiveCameraInfo(): CameraInfo | undefined;
    fetchAvailableCameras(): Promise<CameraInfo[]>;
    protected renderSpinner(color: string): React.JSX.Element;
    setTorchState(enabled: boolean): Promise<void>;
    getCapabilities(): MediaTrackCapabilities | undefined;
}
