import type { EmitterSubscription } from 'react-native';
export declare enum Priority {
    HIGH_ACCURACY = 100,
    BALANCED_POWER_ACCURACY = 102,
    LOW_POWER = 104,
    NO_POWER = 105
}
export declare type Priorities = {
    /**
     * Request the most accurate locations available.
     */
    HIGH_ACCURACY: Priority.HIGH_ACCURACY;
    /**
     * Request "block" level accuracy.
     */
    BALANCED_POWER_ACCURACY: Priority.BALANCED_POWER_ACCURACY;
    /**
     * Request "city" level accuracy.
     */
    LOW_POWER: Priority.LOW_POWER;
    /**
     * Request the best accuracy possible with zero additional power consumption.
     */
    NO_POWER: Priority.NO_POWER;
};
export declare type Config = {
    priority?: Priority;
    /**
     * Whether or not location is required by the calling app in order to continue.
     * Set this to true if location is required to continue and false if having location provides
     * better results, but is not required. This changes the wording/appearance of the dialog accordingly.
     */
    alwaysShow?: boolean;
    /**
     * Sets whether the client wants BLE scan to be enabled.
     * When this flag is set to true, if the platform supports BLE scan mode and Bluetooth is off,
     * the dialog will prompt the user to enable BLE scan. If the platform doesn't support BLE scan mode,
     * the dialog will prompt to enable Bluetooth.
     */
    needBle?: boolean;
};
export declare type Listener = (args: {
    locationEnabled: boolean;
}) => void;
export declare type LocationStatus = boolean | undefined;
export declare type LocationSettings = [LocationStatus, () => void];
export interface LocationEnablerType {
    /**
     * Static object contain a list quality of service for location updates.
     * If your application wants high accuracy location it should set prioprity to 'HIGH_ACCURACY'
     * If you want negligible power impact, but to still receive location updates when available,
     * then set priority to 'NO_POWER'.
     */
    PRIORITIES: Priorities;
    /**
     * Hook let you check the user's device location status 'on' / 'off' and method let you display an activity where they can turn location 'on'.
     *
     * @param config -
     * @param initial? -
     * @returns LocationSettings - location status
     */
    useLocationSettings(config: Config, initial?: LocationStatus): LocationSettings;
    /**
     * Checking if the user's device location is turned off.
     *
     * @param config -
     */
    checkSettings(config: Config): void;
    /**
     * Display an activity where the user's can turn location 'on'.
     *
     * @param config -
     */
    requestResolutionSettings(config: Config): void;
    /**
     * Adds a listener to be invoked when onChangeLocationSettings are emitted.
     * An optional calling context may be provided. The data arguments emitted
     * will be passed to the listener function.
     *
     * @param listener - Function to invoke when the specified event is emitted
     * @param context - Optional context object to use when invoking the listener
     */
    addListener(listener: Listener, context?: any): EmitterSubscription;
    /**
     * Similar to addListener, except that the listener is removed after it is
     * invoked once.
     *
     * @param listener - Function to invoke only once when the specified event is emitted
     * @param context - context object to use when invoking the listener
     */
    once(listener: Listener, context?: any): EmitterSubscription;
}
