import { CheckOptions, MultiResult, PermissionOptions, RequestOptions, Result } from '.';
import { Status } from './index.common';
export * from './index.common';
export declare namespace PermissionsIOS {
    enum NSType {
        Location = "location",
        Camera = "camera",
        Microphone = "microphone",
        Photo = "photo",
        Contacts = "contacts",
        Event = "event",
        Reminder = "reminder",
        Bluetooth = "bluetooth",
        Notification = "notification",
        BackgroundRefresh = "backgroundRefresh",
        NSPTypeSpeechRecognition = "speechRecognition",
        MediaLibrary = "mediaLibrary",
        Motion = "motion"
    }
    function openSettings(): Promise<unknown>;
    function canOpenSettings(): Promise<boolean>;
    function getPermissionStatus(type: any, json: any): Promise<Status>;
    function requestPermission(perm: any, options: any): Promise<Status>;
}
type IOSPermissionTypes = `${PermissionsIOS.NSType}`;
type ObjectIOSPermissionsRest = {
    [key in IOSPermissionTypes]: PermissionOptions;
};
export declare function canOpenSettings(): Promise<boolean>;
export declare function openSettings(): Promise<unknown>;
export declare function openNotificationSettings(): Promise<boolean>;
export declare function getTypes(): ("location" | "camera" | "microphone" | "photo" | "contacts" | "event" | "reminder" | "bluetooth" | "notification" | "backgroundRefresh" | "speechRecognition" | "mediaLibrary" | "motion")[];
export declare function check(permission: IOSPermissionTypes, options?: CheckOptions): Promise<Status>;
export declare function request<T extends IOSPermissionTypes | Record<IOSPermissionTypes, any>>(permission: T, options?: RequestOptions): Promise<Result<T>>;
export declare function checkMultiple<T extends Partial<ObjectIOSPermissionsRest>>(permissions: T): Promise<MultiResult>;
export declare function hasExactAlarmPermission(): boolean;
export declare function requestExactAlarmPermission(): Promise<boolean>;
