/**
 * There are two possible kind of messages we can receive from native app:
 *     - RequestsFromNativeApp: native app initiates the dialog
 *     - ResponsesFromNativeApp: native app responds to a request initiated by the web
 */
declare type RequestsFromNativeApp = {
    SESSION_RENEWED: {
        type: 'SESSION_RENEWED';
        id: string;
        payload: {
            accessToken: string;
        };
    };
    /**  https://confluence.tid.es/display/CTO/%5BAPPS%5D+Shared+Spec%3A+Top+Bar+customization#id-[APPS]SharedSpec:TopBarcustomization-Iconclickedcallbackbridgemethod */
    NAVIGATION_BAR_ICON_CLICKED: {
        type: 'NAVIGATION_BAR_ICON_CLICKED';
        id: string;
        payload: {
            id: string;
        };
    };
};
export declare type SheetResponse = {
    action: 'SUBMIT' | 'DISMISS';
    result: Array<{
        id: string;
        selectedIds: Array<string>;
    }>;
};
export declare type SnackbarResponse = {
    action: 'DISMISS' | 'BUTTON' | 'TIMEOUT' | 'CONSECUTIVE';
};
declare type DataConnectionResponse = {
    connectionType: 'MOBILE' | 'WIFI ' | 'OTHER' | 'NONE';
    mobileConnectionType?: '2G' | '3G' | '4G' | '5G' | 'OTHER' | 'PERMISSION_REQUIRED' | null;
    mobileCarrier?: string | null;
    mobileSignalStrength?: 'NONE' | 'POOR' | 'MODERATE' | 'GOOD' | 'GREAT' | null;
};
export declare type ResponsesFromNativeApp = {
    SIM_ICC: {
        id: string;
        type: 'SIM_ICC';
        payload: {
            icc: string;
        };
    };
    IMEI: {
        id: string;
        type: 'IMEI';
        payload: {
            imei: string;
        };
    };
    TAC: {
        id: string;
        type: 'TAC';
        payload: {
            tac: string | null;
        };
    };
    IMSI: {
        id: string;
        type: 'IMSI';
        payload: {
            imsi: string;
        };
    };
    ATTACH_TO_EMAIL: {
        id: string;
        type: 'ATTACH_TO_EMAIL';
        payload: void;
    };
    SET_TITLE: {
        id: string;
        type: 'SET_TITLE';
        payload: void;
    };
    PAGE_LOADED: {
        id: string;
        type: 'PAGE_LOADED';
        payload: void;
    };
    BRIDGE_READY: {
        id: string;
        type: 'BRIDGE_READY';
        payload: void;
    };
    ALERT: {
        id: string;
        type: 'ALERT';
        payload: void;
    };
    MESSAGE: {
        id: string;
        type: 'MESSAGE';
        payload: SnackbarResponse;
    };
    CONFIRM: {
        id: string;
        type: 'CONFIRM';
        payload: {
            result: boolean;
        };
    };
    CREATE_CALENDAR_EVENT: {
        id: string;
        type: 'CREATE_CALENDAR_EVENT';
        payload: void;
    };
    GET_CONTACT_DATA: {
        id: string;
        type: 'GET_CONTACT_DATA';
        payload: {
            name?: string;
            email?: string;
            phoneNumber?: string;
            address?: {
                street?: string;
                city?: string;
                country?: string;
                postalCode?: string;
            };
        };
    };
    NAVIGATION_BAR: {
        id: string;
        type: 'NAVIGATION_BAR';
        payload: void;
    };
    SHARE: {
        id: string;
        type: 'SHARE';
        payload: void;
    };
    ERROR: {
        id: string;
        type: 'ERROR';
        payload: {
            code: number;
            reason: string;
        };
    };
    GET_REMOTE_CONFIG: {
        id: string;
        type: 'GET_REMOTE_CONFIG';
        payload: {
            result: {
                [s: string]: string;
            };
        };
    };
    STATUS_REPORT: {
        id: string;
        type: 'STATUS_REPORT';
        payload: void;
    };
    FETCH: {
        id: string;
        type: 'FETCH';
        payload: {
            status: number;
            headers: {
                [key: string]: string;
            };
            body: string;
        };
    };
    OS_PERMISSION_STATUS: {
        id: string;
        type: 'OS_PERMISSION_STATUS';
        payload: {
            granted: boolean;
        };
    };
    REQUEST_PERMISSION_LOCATION: {
        id: string;
        type: 'REQUEST_PERMISSION_LOCATION';
        payload: {
            status: 'granted' | 'denied';
        };
    };
    REQUEST_PERMISSION_BACKGROUND_LOCATION: {
        id: string;
        type: 'REQUEST_PERMISSION_BACKGROUND_LOCATION';
        payload: {
            status: 'granted' | 'denied';
        };
    };
    REQUEST_PERMISSION_MICROPHONE: {
        id: string;
        type: 'REQUEST_PERMISSION_MICROPHONE';
        payload: {
            status: 'granted' | 'denied';
        };
    };
    REQUEST_PERMISSION_NOTIFICATIONS: {
        id: string;
        type: 'REQUEST_PERMISSION_NOTIFICATIONS';
        payload: {
            status: 'granted' | 'denied';
        };
    };
    REQUEST_PERMISSION_CRITICAL_ALERTS: {
        id: string;
        type: 'REQUEST_PERMISSION_CRITICAL_ALERTS';
        payload: {
            status: 'granted' | 'denied';
        };
    };
    REQUEST_PERMISSION_BATTERY_OPTIMIZATION: {
        id: string;
        type: 'REQUEST_PERMISSION_BATTERY_OPTIMIZATION';
        payload: {
            status: 'granted' | 'denied';
        };
    };
    INTERNAL_NAVIGATION: {
        type: 'INTERNAL_NAVIGATION';
        id: string;
        payload: void;
    };
    DISMISS: {
        type: 'DISMISS';
        id: string;
        payload: void;
    };
    VIBRATION: {
        type: 'VIBRATION';
        id: string;
        payload: void;
    };
    FETCH_CONTACTS_DATA: {
        id: string;
        type: 'FETCH_CONTACTS_DATA';
        payload: Array<{
            phoneNumber: string;
            firstName?: string;
            middleName?: string;
            lastName?: string;
            encodedAvatar?: string;
        }>;
    };
    ADD_OR_EDIT_CONTACT: {
        id: string;
        type: 'ADD_OR_EDIT_CONTACT';
        payload: {
            phoneNumber?: string;
            firstName?: string;
            middleName?: string;
            lastName?: string;
            encodedAvatar?: string;
        };
    };
    RENEW_SESSION: {
        type: 'RENEW_SESSION';
        id: string;
        payload: {
            accessToken: string;
        };
    };
    GET_APP_METADATA: {
        type: 'GET_APP_METADATA';
        id: string;
        payload: {
            isInstalled: boolean;
            marketUrl: string;
            appUrl: string;
        };
    };
    GET_DISK_SPACE_INFO: {
        type: 'GET_DISK_SPACE_INFO';
        id: string;
        payload: {
            availableBytes: number;
            totalBytes: number;
        };
    };
    GET_ESIM_INFO: {
        type: 'GET_ESIM_INFO';
        id: string;
        payload: {
            supportsEsim: boolean;
            eid?: string | null;
        };
    };
    SET_TRACKING_PROPERTY: {
        type: 'SET_TRACKING_PROPERTY';
        id: string;
        payload: void;
    };
    SET_ACTION_BEHAVIOR: {
        type: 'SET_ACTION_BEHAVIOR';
        id: string;
        payload: void;
    };
    HIGHLIGHT_TAB: {
        type: 'HIGHLIGHT_TAB';
        id: string;
        payload: void;
    };
    GET_TOPAZ_TOKEN: {
        type: 'GET_TOPAZ_TOKEN';
        id: string;
        payload: {
            token: string;
        };
    };
    GET_TOPAZ_VALUES: {
        type: 'GET_TOPAZ_VALUES';
        id: string;
        payload: {
            syncId?: string;
        };
    };
    LOG_OUT: {
        type: 'LOG_OUT';
        id: string;
        payload: {
            success: boolean;
        };
    };
    SHOW_APP_RATING: {
        type: 'SHOW_APP_RATING';
        id: string;
        payload: void;
    };
    SHEET: {
        type: 'SHEET';
        id: string;
        payload: SheetResponse;
    };
    FETCH_PHONE_NUMBERS: {
        type: 'FETCH_PHONE_NUMBERS';
        id: string;
        payload: Array<{
            id: string;
            value: string;
        }>;
    };
    UPDATE_PHONE_NUMBERS: {
        type: 'UPDATE_PHONE_NUMBERS';
        id: string;
        payload: void;
    };
    GET_ATT_STATUS: {
        type: 'GET_ATT_STATUS';
        id: string;
        payload: {
            status: 'granted' | 'denied' | 'unknown';
        };
    };
    MODEL: {
        type: 'MODEL';
        id: string;
        payload: {
            model: string;
        };
    };
    OPEN_ONBOARDING: {
        type: 'OPEN_ONBOARDING';
        id: string;
        payload: void;
    };
    DATA_CONNECTION_INFO: {
        type: 'DATA_CONNECTION_INFO';
        id: string;
        payload: DataConnectionResponse;
    };
    GET_PINCODE_INFO: {
        type: 'GET_PINCODE_INFO';
        id: string;
        payload: {
            status: 'enabled' | 'disabled';
        };
    };
    GET_PROFILE_IMAGE: {
        type: 'GET_PROFILE_IMAGE';
        id: string;
        payload: {
            image: string | null;
        };
    };
    START_PROFILE_IMAGE_FLOW: {
        type: 'START_PROFILE_IMAGE_FLOW';
        id: string;
        payload: {
            image: string | null;
            isCancelled: boolean;
        };
    };
    SHOW_LINE_SELECTOR: {
        type: 'SHOW_LINE_SELECTOR';
        id: string;
        payload: void;
    };
    TRIGGER_PIN_OR_BIOMETRIC_AUTHENTICATION: {
        type: 'TRIGGER_PIN_OR_BIOMETRIC_AUTHENTICATION';
        id: string;
        payload: {
            result: 'USER_AUTHENTICATED' | 'USER_ENABLED_AUTHENTICATION' | 'LAST_AUTHENTICATION_STILL_VALID' | 'DEVICE_HAS_NO_AUTHENTICATION';
        };
    };
    FOCUS_NAVBAR: {
        type: 'FOCUS_NAVBAR';
        id: string;
        payload: {
            focused: boolean;
        };
    };
    SHARE_BASE64: {
        type: 'SHARE_BASE64';
        id: string;
        payload: void;
    };
    DOWNLOAD_BASE64: {
        type: 'DOWNLOAD_BASE64';
        id: string;
        payload: void;
    };
    GET_BATTERY_INFO: {
        type: 'GET_BATTERY_INFO';
        id: string;
        payload: {
            batteryLevel: number | null;
            isPowerSafeMode: boolean;
        };
    };
    CLIPBOARD_READ_TEXT: {
        type: 'CLIPBOARD_READ_TEXT';
        id: string;
        payload: string;
    };
    CLIPBOARD_WRITE_TEXT: {
        type: 'CLIPBOARD_WRITE_TEXT';
        id: string;
        payload: void;
    };
    SHOW_LOADING_OVERLAY: {
        type: 'SHOW_LOADING_OVERLAY';
        id: string;
        payload: void;
    };
    HIDE_LOADING_OVERLAY: {
        type: 'HIDE_LOADING_OVERLAY';
        id: string;
        payload: void;
    };
    GET_INSTALLATION_ID: {
        type: 'GET_INSTALLATION_ID';
        id: string;
        payload: {
            installationId: string;
        };
    };
    GET_UNSEEN_NOTIFICATIONS_BADGE: {
        type: 'GET_UNSEEN_NOTIFICATIONS_BADGE';
        id: string;
        payload: {
            unseenNotificationCounter: number;
            lastUpdated: number;
        };
    };
    SET_UNSEEN_NOTIFICATIONS_BADGE: {
        type: 'SET_UNSEEN_NOTIFICATIONS_BADGE';
        id: string;
        payload: void;
    };
    REQUEST_DATAMOB_DEVICE_ADMIN: {
        type: 'REQUEST_DATAMOB_DEVICE_ADMIN';
        id: string;
        payload: {
            isAdmin: boolean;
        };
    };
    REGISTER_DATAMOB_USER: {
        type: 'REGISTER_DATAMOB_USER';
        id: string;
        payload: void;
    };
    VALIDATE_DATAMOB_REQUIREMENTS: {
        type: 'VALIDATE_DATAMOB_REQUIREMENTS';
        id: string;
        payload: {
            deviceAdmin: boolean;
            lockPassword: boolean;
            accessibilityOption: boolean;
            invalidPhoneNumber: boolean;
            invalidToken: boolean;
        };
    };
    UNREGISTER_DATAMOB_DEVICE_ADMIN: {
        type: 'UNREGISTER_DATAMOB_DEVICE_ADMIN';
        id: string;
        payload: void;
    };
    DISPLAY_QUALTRICS_INTERCEPT: {
        type: 'DISPLAY_QUALTRICS_INTERCEPT';
        id: string;
        payload: {
            displayed: true;
        };
    };
    SET_QUALTRICS_PROPERTIES: {
        type: 'SET_QUALTRICS_PROPERTIES';
        id: string;
        payload: void;
    };
    IS_QUALTRICS_INTERCEPT_AVAILABLE_FOR_USER: {
        type: 'IS_QUALTRICS_INTERCEPT_AVAILABLE_FOR_USER';
        id: string;
        payload: {
            isAvailable: boolean;
            surveyUrl?: string | null;
        };
    };
    REFRESH_NAV_BAR: {
        type: 'REFRESH_NAV_BAR';
        id: string;
        payload: void;
    };
    GET_APP_DOMAIN: {
        type: 'GET_APP_DOMAIN';
        id: string;
        payload: {
            domain: string;
        };
    };
    SETUP_LOCATOR_SDK_CONFIG: {
        type: 'SETUP_LOCATOR_SDK_CONFIG';
        id: string;
        payload: void;
    };
    GET_LOCATOR_SDK_STATE: {
        type: 'GET_LOCATOR_SDK_STATE';
        id: string;
        payload: {
            state: string;
        };
    };
    SET_LOCATOR_SDK_MODE: {
        type: 'SET_LOCATOR_SDK_MODE';
        id: string;
        payload: void;
    };
    GET_LOCATOR_JWT_TOKEN: {
        type: 'GET_LOCATOR_JWT_TOKEN';
        id: string;
        payload: {
            token: string;
        };
    };
    GET_LOCATOR_PENDING_PERMISSIONS: {
        type: 'GET_LOCATOR_PENDING_PERMISSIONS';
        id: string;
        payload: {
            permissions: Array<string>;
        };
    };
    GET_LOCATOR_SDK_VERSION: {
        type: 'GET_LOCATOR_SDK_VERSION';
        id: string;
        payload: {
            version: string;
        };
    };
    GET_LOCATOR_SDK_SESSION: {
        type: 'GET_LOCATOR_SDK_SESSION';
        id: string;
        payload: {
            session: {
                id: string;
                startAt: number;
                endAt: number | null;
            };
        };
    };
    GET_LOCATOR_SDK_MODE: {
        type: 'GET_LOCATOR_SDK_MODE';
        id: string;
        payload: {
            mode: string;
        };
    };
    GET_LOCATOR_SDK_CONFIG: {
        type: 'GET_LOCATOR_SDK_CONFIG';
        id: string;
        payload: {
            config: Record<string, unknown> | null;
        };
    };
    REQUEST_ALLOWME_BIOMETRICS: {
        type: 'REQUEST_ALLOWME_BIOMETRICS';
        id: string;
        payload: {
            result?: string;
            images: Array<string>;
        };
    };
    INCREASE_APP_RATING_TRIGGER: {
        type: 'INCREASE_APP_RATING_TRIGGER';
        id: string;
        payload: void;
    };
    RESET_APP_RATING_TRIGGER: {
        type: 'RESET_APP_RATING_TRIGGER';
        id: string;
        payload: void;
    };
    APP_RATING_REMIND_ME_LATER: {
        type: 'APP_RATING_REMIND_ME_LATER';
        id: string;
        payload: void;
    };
    GET_BIOMETRICS_AUTHENTICATION_STATUS: {
        type: 'GET_BIOMETRICS_AUTHENTICATION_STATUS';
        id: string;
        payload: {
            result: 'DISABLED' | 'ENABLED' | 'DEVICE_HAS_NO_AUTHENTICATION';
        };
    };
    SET_BIOMETRICS_AUTHENTICATION_STATUS: {
        type: 'SET_BIOMETRICS_AUTHENTICATION_STATUS';
        id: string;
        payload: void;
    };
    OPEN_OCR_SCANNER: {
        type: 'OPEN_OCR_SCANNER';
        id: string;
        payload: {
            scannedText: string;
        };
    };
};
export declare type NativeAppResponsePayload<Type extends keyof ResponsesFromNativeApp> = ResponsesFromNativeApp[Type]['payload'];
declare type NativeAppRequestPayload<Type extends keyof RequestsFromNativeApp> = RequestsFromNativeApp[Type]['payload'];
declare let log: undefined | ((...args: Array<any>) => void);
export declare const setLogger: (logger: typeof log) => void;
/**
 * Returns true if there is a WebView Bridge installed
 */
export declare const isWebViewBridgeAvailable: () => boolean;
/**
 * Send message to native app and waits for response
 */
export declare const postMessageToNativeApp: <T extends keyof ResponsesFromNativeApp>({ type, id, payload }: {
    type: T;
    id?: string | undefined;
    payload?: Object | undefined;
}, timeout?: number | undefined) => Promise<NativeAppResponsePayload<T>>;
export declare type NativeEventHandler = ({ event }: {
    event: string;
}) => {
    action: 'default';
};
export declare const listenToNativeMessage: <T extends keyof RequestsFromNativeApp>(type: T, handler: (payload: NativeAppRequestPayload<T>) => Object | void | Promise<Object>) => (() => void);
export declare const onSessionRenewal: (handler: (payload: {
    accessToken: string;
}) => void) => (() => void);
export {};
