import {type TurboModule, TurboModuleRegistry} from "react-native";

export interface Spec extends TurboModule {
    createInstance(): string;

    destroyInstance(isaId: string): boolean;

    requestCameraPermission(): void;

    open(): void;

    close(): void;

    setCameraView(viewId: number): void;

    selectCamera(position: number): void;

    getCameraPosition(): Promise<number>;

    setFocus(floatX: number, floatY: number, focusMode: number): void;

    getFocusMode(): Promise<number>;

    setZoomFactor(factor: number): void;

    getZoomFactor(): Promise<number>;

    enableEnhancedFeatures(features: number): void;

    disableEnhancedFeatures(features: number): void;

    setScanRegion(region: unknown | null | undefined): void;

    getScanRegion(): Promise<unknown | null | undefined>;

    turnOnTorch(): void;

    turnOffTorch(): void;

    setResolution(resolution: number): void;

    getResolution(): Promise<unknown>;

    beep(): void;

    vibrate(): void;

    convertRectToViewCoordinates(rect: unknown): unknown;

    convertPointToViewCoordinates(point: unknown): unknown;
}

export default TurboModuleRegistry.get<Spec>("DynamsoftCameraView") as Spec | null;
