import { CameraPosition, Camera, DataCaptureContext, TorchState } from '@scandit/web-datacapture-core';
import { SparkScanPreviewBehavior } from '../SparkScanPreviewBehavior.js';
import { SparkScanViewSettings } from './SparkScanViewSettings.js';
import '@scandit/web-datacapture-core/build/js/private/Serializable';
import './SparkScanMiniPreviewSize.js';
import '../SparkScanScanningMode.js';
import '../SparkScanScanningBehavior.js';
import './SparkScanToastSettings.js';

interface CameraCapabilities {
    isTorchAvailable: boolean;
    isZoomAvailable: boolean;
    cameraPosition: CameraPosition;
}
declare class SparkScanCameraManager {
    private context?;
    private toggleCameraPosition;
    get camera(): Camera | undefined;
    prepareScanning(context: DataCaptureContext, settings: SparkScanViewSettings): Promise<CameraCapabilities>;
    onSwitchToActiveState(torchState: TorchState): Promise<void>;
    onSwitchToInactiveState(previewBehavior: SparkScanPreviewBehavior): Promise<void>;
    onSwitchToIdleState(): Promise<void>;
    onSwitchToErrorState(): Promise<void>;
    stopScanning(): Promise<void>;
    onTorchButtonTap(torchState: TorchState): Promise<void>;
    onCameraSwitchButtonTap(): Promise<CameraCapabilities | undefined>;
    onMiniPreviewZoomButtonTap(zoomFactor: number): Promise<void>;
}

export { type CameraCapabilities, SparkScanCameraManager };
