1import { PermissionResponse, PermissionStatus, PermissionHookOptions } from 'expo-modules-core';
2import * as React from 'react';
3import { ViewProps } from 'react-native';
4export declare type BarCodePoint = {
5    x: number;
6    y: number;
7};
8export declare type BarCodeSize = {
9    height: number;
10    width: number;
11};
12export declare type BarCodeBounds = {
13    origin: BarCodePoint;
14    size: BarCodeSize;
15};
16export declare type BarCodeScannerResult = {
17    type: string;
18    data: string;
19    bounds?: BarCodeBounds;
20    cornerPoints?: BarCodePoint[];
21};
22export declare type BarCodeEvent = BarCodeScannerResult & {
23    target?: number;
24};
25export declare type BarCodeEventCallbackArguments = {
26    nativeEvent: BarCodeEvent;
27};
28export declare type BarCodeScannedCallback = (params: BarCodeEvent) => void;
29export { PermissionResponse, PermissionStatus, PermissionHookOptions };
30export interface BarCodeScannerProps extends ViewProps {
31    type?: 'front' | 'back' | number;
32    barCodeTypes?: string[];
33    onBarCodeScanned?: BarCodeScannedCallback;
34}
35export declare class BarCodeScanner extends React.Component<BarCodeScannerProps> {
36    lastEvents: {
37        [key: string]: any;
38    };
39    lastEventsTimes: {
40        [key: string]: any;
41    };
42    static Constants: {
43        BarCodeType: any;
44        Type: any;
45    };
46    static ConversionTables: {
47        type: any;
48    };
49    static defaultProps: {
50        type: any;
51        barCodeTypes: unknown[];
52    };
53    static getPermissionsAsync(): Promise<PermissionResponse>;
54    static requestPermissionsAsync(): Promise<PermissionResponse>;
55    /**
56     * Check or request permissions for the barcode scanner.
57     * This uses both `requestPermissionAsync` and `getPermissionsAsync` to interact with the permissions.
58     *
59     * @example
60     * ```ts
61     * const [status, requestPermission] = BarCodeScanner.usePermissions();
62     * ```
63     */
64    static usePermissions: (options?: PermissionHookOptions | undefined) => [PermissionResponse | null, () => Promise<PermissionResponse | null>, () => Promise<PermissionResponse | null>];
65    static scanFromURLAsync(url: string, barCodeTypes?: string[]): Promise<BarCodeScannerResult[]>;
66    render(): JSX.Element;
67    onObjectDetected: (callback?: BarCodeScannedCallback | undefined) => ({ nativeEvent, }: BarCodeEventCallbackArguments) => void;
68    convertNativeProps(props: BarCodeScannerProps): BarCodeScannerProps;
69}
70export declare const Constants: {
71    BarCodeType: any;
72    Type: any;
73}, getPermissionsAsync: typeof BarCodeScanner.getPermissionsAsync, requestPermissionsAsync: typeof BarCodeScanner.requestPermissionsAsync, usePermissions: (options?: PermissionHookOptions | undefined) => [PermissionResponse | null, () => Promise<PermissionResponse | null>, () => Promise<PermissionResponse | null>];
74