import { CameraFaceMode, CameraOpenResult, OpenCameraProps, SwitchCameraResult } from '../camera.types';
import { Camera } from '../camera.domain';
export declare abstract class BaseCameraService implements Camera {
    /** Current video element ID being used for camera stream */
    protected videoElementId: string | null;
    /** Selected camera device ID */
    protected currentDeviceId: string | null;
    /** Current camera facing mode (front/back) */
    protected faceMode: CameraFaceMode;
    /** Active media stream from the camera */
    protected mediaStream: MediaStream | null;
    /** List of available media devices (cameras) */
    protected mediaDevices: MediaDeviceInfo[] | null;
    /** Observer to monitor unauthorized video source changes */
    protected videoMutationObserver: MutationObserver | null;
    abstract openCamera(props: OpenCameraProps): Promise<CameraOpenResult>;
    protected prepareCameraResult(stream: MediaStream, devices: MediaDeviceInfo[], faceMode: CameraFaceMode | null, videoElementId: string): Promise<CameraOpenResult>;
    closeCamera(element?: string): Promise<void>;
    switchCamera(selectedCamera: CameraFaceMode | null, deviceId: string, canvasResolution?: {
        width: number;
        height: number;
    } | null): Promise<SwitchCameraResult | null>;
    isActive(): boolean;
    setVideoElementId(videoElementId: string): void;
    getVideoElementId(): string | null;
    getVideoElementDOM(): HTMLVideoElement | null;
    protected setFaceMode(faceMode: CameraFaceMode): void;
    getFaceMode(): CameraFaceMode;
    protected setMediaStream(mediaStream: MediaStream | null): void;
    getMediaStream(): MediaStream | null;
    protected closeMediaStream(): void;
    private getMediaStreamTrack;
    protected setMediaDevices(devices: MediaDeviceInfo[] | null): void;
    getMediaDevices(): MediaDeviceInfo[] | null;
    protected setCurrentDeviceId(deviceId: string): void;
    getCurrentDeviceId(): string;
    getVideoMutationObserver(): MutationObserver;
    protected closeVideoMutationObserver(): void;
}
