/**
 * FastNative 调用Android或IOS原生方法工具
 * @author Janesen
 */
export declare namespace FastNative {
    /**
     * 执行本地方法核心类
     */
    class Core {
        private static methodInfos;
        private static getKey;
        private static showError;
        /**
         * 是否是安卓客户端
         */
        static isAndroid(): boolean;
        /**
         * 是否是ios客户端
         */
        static isIOS(): boolean;
        /**
         * 执行手机客户端原生方法
         * @param methodName 方法名称
         * @param methodParams 方法参数，Array格式，按照原生方法的参数顺序设置
         * @param callBack 回调函数
         */
        static execute(methodName: string, methodParams: any, callBack?: (result: {
            success: boolean;
            message: string;
            data: any;
        }) => void): void;
        /**
         * 手机原生方法回执时调用
         * @param key 回调函数的唯一标识
         * @param result 回调结果
         */
        static appCallBack(key: string, result: string): void;
        /**
         * 递归执行回调，针对同一个浏览器下嵌入iframe问题
         * @param targetWindow 目标window
         * @param key
         * @param result
         * @private
         */
        private static doAppCallBack;
        /**
         * 手机原生方法回执时调用
         * @param key 回调函数的唯一标识
         * @param result 回调结果
         */
        static executeAppCallBack(key: string, result: string): void;
        /**
         * 手机原生方法执行错误时调用
         * @param message 错误信息
         */
        static error(message: string): void;
        /**
         * 可同步或异步执行手机客户端原生方法
         * @param methodName 方法名称
         * @param methodParams 方法参数，Array格式，按照原生方法的参数顺序设置
         * @param callBack 回调函数
         */
        static executeByPromise(methodName: string, methodParams: any, callBack?: (result: {
            success: boolean;
            message: string;
            data?: any;
        }) => void): Promise<{
            success: boolean;
            message: string;
            data: any;
        }>;
    }
    /**
     * BaseApp 创息公司封装的常用本地原生APP功能
     */
    class BaseApp extends Core {
        /**
         * 打开指定包名的APP
         * @param packageName APP的包名
         * @param callBack 调用成功后的回调函数
         */
        static openApp(packageName: string, callBack?: (success: boolean, message: string) => void): Promise<{
            success: boolean;
            message: string;
        }>;
        /**
         * 打开系统浏览器
         * @param url 地址
         * @param callBack 调用成功后的回调函数
         */
        static openSysBrowser(url: string, callBack?: (success: boolean, message: string) => void): Promise<{
            success: boolean;
            message: string;
        }>;
        /**
         * 关闭手机输入键盘
         * @param callBack 调用成功后的回调函数
         */
        static closeKeyboard(callBack?: (success: boolean, message: string) => void): Promise<{
            success: boolean;
            message: string;
            data: string;
        }>;
        /**
         * 关闭浏览器窗口
         * @param callBack 调用成功后的回调函数
         */
        static closeWindow(callBack?: (success: boolean, message: string) => void): Promise<{
            success: boolean;
            message: string;
            data: string;
        }>;
        /**
         * 复制内容到剪贴板中
         * @param content 复制的内容
         * @param callBack 调用成功后的回调函数
         */
        static copy(content: string, callBack?: (success: boolean, message: string) => void): Promise<{
            success: boolean;
            message: string;
            data: string;
        }>;
        /**
         * 下载文件，会弹出下载对话框并显示下载进度
         * @param url 文件的网络地址
         * @param fileName 文件名，主要用于区别文件的类型，所以建议传参
         * @param doneAction 文件下载成功后，操作文件的方式，可选值：share（分享文件）、open（打开文件）
         * @param callBack 调用成功后的回调函数
         */
        static downloadFile(url: string, fileName: string, doneAction?: string, callBack?: (success: boolean, message: string) => void): Promise<{
            success: boolean;
            message: string;
            data: string;
        }>;
        /**
         * 获取APP的版本描述
         * @param callBack 获取成功后的回调函数
         */
        static getAppLevel(callBack?: (success: boolean, message: string, data: string) => void): Promise<{
            success: boolean;
            message: string;
            data: string;
        }>;
        /**
         * 获取APP的安卓SDK版本号
         * @param callBack 获取成功后的回调函数
         */
        static getAndroidLevel(callBack?: (success: boolean, message: string, data: number) => void): Promise<{
            success: boolean;
            message: string;
            data: number;
        }>;
        /**
         * 获取缓存在手机APP中的数据【async】
         * @param cacheKey 缓存的Key
         * @param callBack 获取成功后的回调函数，函数结构：function(success:boolean,message:string,data:string){}
         */
        static getCache(cacheKey: string, callBack?: (success: boolean, message: string, data: string) => void): Promise<{
            success: boolean;
            message: string;
            data: string;
        }>;
        /**
         * 获取手机APP状态栏的高度
         * @param callBack 获取成功后的回调函数，函数结构：function(success:boolean,message:string,data:int){}
         */
        static getStatusHeight(callBack?: (success: boolean, message: string, data: number) => void): Promise<{
            success: boolean;
            message: string;
            data: string;
        }>;
        /**
         * 弹出全局等待框
         * @param message 等待的消息
         * @param callBack 调用成功后的回调函数
         */
        static showLoadingDialog(message: string, callBack?: (success: boolean, message: string) => void): Promise<{
            success: boolean;
            message: string;
            data: string;
        }>;
        /**
         * 关闭全局等待框
         * @param callBack 调用成功后的回调函数
         */
        static hideLoadingDialog(callBack?: (success: boolean, message: string) => void): Promise<{
            success: boolean;
            message: string;
            data: string;
        }>;
        /**
         * 打开系统忽略APP电源设置
         * @param callBack 调用成功后的回调函数
         */
        static ignoredPower(callBack?: (success: boolean, message: string) => void): Promise<{
            success: boolean;
            message: string;
            data: string;
        }>;
        /**
         * 打开APP的系统通知设置
         * @param callBack 调用成功后的回调函数
         */
        static notifySet(callBack?: (success: boolean, message: string) => void): Promise<{
            success: boolean;
            message: string;
            data: string;
        }>;
        /**
         * 在新的窗口浏览器中打开链接地址
         * @param url 链接地址
         * @param closeSelf 打开新的窗口后是否关闭当前窗口
         * @param callBack 调用成功后的回调函数
         */
        static openBrowser(url: string, closeSelf: boolean, callBack?: (success: boolean, message: string) => void): Promise<{
            success: boolean;
            message: string;
            data: string;
        }>;
        /**
         * 打开一个文件，如果是图片类型则调用图片浏览器打开，如果是mp4类型 则打开视频播放器，否则下载成功后打开文件
         * @param url 文件地址
         * @param fileName 文件名，主要用于区别文件的类型，所以建议传参
         * @param callBack 调用成功后的回调函数
         */
        static openFile(url: string, fileName: string, callBack?: (success: boolean, message: string) => void): Promise<{
            success: boolean;
            message: string;
            data: string;
        }>;
        /**
         * 打开输入键盘
         * @param callBack 调用成功后的回调函数
         */
        static openKeyboard(callBack?: (success: boolean, message: string) => void): Promise<{
            success: boolean;
            message: string;
            data: string;
        }>;
        /**
         * 打开淘宝的商品链接
         * @param url 商品链接
         * @param callBack 调用成功后的回调函数
         */
        static openTaobaoA(url: string, callBack?: (success: boolean, message: string) => void): Promise<{
            success: boolean;
            message: string;
            data: string;
        }>;
        /**
         * 打开淘宝的商家详情页链接
         * @param sellerId 商家门店的ID
         * @param callBack 调用成功后的回调函数
         */
        static openTaobaoB(sellerId: string, callBack?: (success: boolean, message: string) => void): Promise<{
            success: boolean;
            message: string;
            data: string;
        }>;
        /**
         * 打开淘宝的商品详情页面
         * @param numIid 商品ID
         * @param callBack 调用成功后的回调函数
         */
        static openTaobaoC(numIid: string, callBack?: (success: boolean, message: string) => void): Promise<{
            success: boolean;
            message: string;
            data: string;
        }>;
        /**
         * 打开一个地址，如果地址是http开头则调用浏览器打开，否则调用第三方APP打开，例如：wx://
         * @param url 地址
         * @param callBack 调用成功后的回调函数
         */
        static openUrl(url: string, callBack?: (success: boolean, message: string) => void): Promise<{
            success: boolean;
            message: string;
            data: string;
        }>;
        /**
         * 发送全局事件通知到APP原生代码中
         * @param notifyName 事件名称
         * @param callBack 调用成功后的回调函数
         */
        static postNotify(notifyName: string, callBack?: (success: boolean, message: string) => void): Promise<{
            success: boolean;
            message: string;
            data: string;
        }>;
        /**
         * 发送网页页面事件，此将会触发页面 {@link FastNative.CrosheInject.onEvent} 函数
         * @param eventName 事件名称
         * @param callBack 调用成功后的回调函数
         */
        static postEvent(eventName: string, callBack?: (success: boolean, message: string) => void): Promise<{
            success: boolean;
            message: string;
            data: string;
        }>;
        /**
         * 删除缓存在APP中的数据
         * @param key 缓存的标识
         * @param callBack 调用成功后的回调函数
         */
        static removeCache(key: string, callBack?: (success: boolean, message: string) => void): Promise<{
            success: boolean;
            message: string;
            data: string;
        }>;
        /**
         * 上报异常信息
         * @param error 异常信息
         * @param callBack 调用成功后的回调函数
         */
        static reportBug(error: string, callBack?: (success: boolean, message: string) => void): Promise<{
            success: boolean;
            message: string;
            data: string;
        }>;
        /**
         * 保存图片到手机相册中
         * @param url 图片地址
         * @param callBack 调用成功后的回调函数
         */
        static saveImage(url: string, callBack?: (success: boolean, message: string) => void): Promise<{
            success: boolean;
            message: string;
            data: string;
        }>;
        /**
         * 缓存数据到APP中
         * @param key 缓存的key
         * @param data 缓存的数据
         * @param callBack 调用成功后的回调函数
         */
        static setCache(key: string, data: string, callBack?: (success: boolean, message: string) => void): Promise<{
            success: boolean;
            message: string;
            data: string;
        }>;
        /**
         * 设置图片为剪切状态，一般在选择图片前调用
         * @param crop 是否进行图片剪切
         * @param callBack 调用成功后的回调函数
         */
        static setCrop(crop: boolean, callBack?: (success: boolean, message: string) => void): Promise<{
            success: boolean;
            message: string;
            data: string;
        }>;
        /**
         * 设置当前浏览器的图片集，
         * @param images 图片集，多个图片以 英文逗号（,）隔开，例如：http://12123/12.png,http://12123/124.png
         * @param callBack 调用成功后的回调函数
         */
        static setImages(images: string, callBack?: (success: boolean, message: string) => void): Promise<{
            success: boolean;
            message: string;
            data: string;
        }>;
        /**
         * 预设浏览器的标题
         * @param title 标题
         * @param callBack  调用成功后的回调函数
         */
        static setWebTitle(title: string, callBack?: (success: boolean, message: string) => void): Promise<{
            success: boolean;
            message: string;
            data: string;
        }>;
        /**
         * 弹出提示消息
         * @param message 消息内容
         * @param callBack 调用成功后的回调函数
         */
        static toast(message: string, callBack?: (success: boolean, message: string) => void): Promise<{
            success: boolean;
            message: string;
            data: string;
        }>;
        /**
         * 发起APP支付，命名使用中文规范，为了ios上架
         * @param payType 支付类型 1 支付宝支付，2 微信支付
         * @param orderPrefix 订单前缀，例如：PY
         * @param orderTitle 订单标题
         * @param orderMoney 订单金额
         * @param orderData 订单携带的额外数据
         * @param callBack 支付完成回调，
         */
        static appZF(payType: number, orderPrefix: string, orderTitle: string, orderMoney: number, orderData: string, callBack?: (success: boolean, message: string, data: any) => void): Promise<{
            success: boolean;
            message: string;
            data: any;
        }>;
        /**
         * 发起APP登录授权
         * @param authorType 授权类型 1 只获取授权码 2 获取授权后的用户信息
         * @param appType APP类型 1 支付宝授权，2 微信授权
         * @param callBack 授权完成回调
         * <br/>
         * 当授权类型为1时：回调授权码字符串
         * <br/>
         * 当授权类型为2时：微信回调的JSON实体：{@link WXUserInfo}，支付宝回调的JSON实体：{@link APUserInfo}
         */
        static appAuthor(authorType: number, appType: number, callBack?: (success: boolean, message: string, data: WXUserInfo | APUserInfo | String | undefined) => void): Promise<{
            success: boolean;
            message: string;
            data: WXUserInfo | APUserInfo | String | undefined;
        }>;
        /**
         * 发起苹果支付
         * @param productId 产品ID
         * @param orderPrefix 订单前缀，例如：PY
         * @param orderTitle 订单标题
         * @param orderMoney 订单金额
         * @param orderData 订单携带的额外数据
         * @param callBack 支付完成回调，
         */
        static applePay(productId: string, orderPrefix: string, orderTitle: string, orderMoney: number, orderData: string, callBack?: (success: boolean, message: string, data: any) => void): Promise<{
            success: boolean;
            message: string;
            data: string;
        }>;
        /**
         * 发起分享
         * @param url 分享网页地址
         * @param title 分享标题
         * @param content 分享的内容
         * @param imgUrl 网页的缩率图地址
         * @param type 分享类型，可选值有：1（微信朋友圈）、2（微信好友）、3（QQ好友）、4（QQ空间）
         * @param callBack 调用成功后的回调函数
         */
        static shareUrl(url: string, title: string, content: string, imgUrl: string, type: number, callBack?: (success: boolean, message: string, data: any) => void): Promise<{
            success: boolean;
            message: string;
            data: string;
        }>;
        /**
         * 获取当前手机定位
         * @param callBack 调用成功后的回调函数
         */
        static getLocation(callBack?: (success: boolean, message: string, data: LocationInfo) => void): Promise<{
            success: boolean;
            message: string;
            data: LocationInfo;
        }>;
        /**
         * 打开地图选择位置
         * @param callBack 调用成功后的回调函数
         */
        static selectMap(callBack?: (success: boolean, message: string, data: LocationInfo) => void): Promise<{
            success: boolean;
            message: string;
            data: LocationInfo;
        }>;
        /**
         * 在地图上查看位置
         * @param lng 经度
         * @param lat 纬度
         * @param address 详细位置
         * @param callBack 调用成功后的回调函数
         */
        static showMap(lng: string, lat: string, address: string, callBack?: (success: boolean, message: string) => void): Promise<{
            success: boolean;
            message: string;
            data: string;
        }>;
        /**
         * 开启地图导航
         * @param lng 经度
         * @param lat 纬度
         * @param callBack 调用成功后的回调函数
         */
        static startNav(lng: string, lat: string, callBack?: (success: boolean, message: string) => void): Promise<{
            success: boolean;
            message: string;
            data: string;
        }>;
        /**
         * 获取APP配置的全局参数
         * @param callBack 获取成功后的回调函数，函数结构：function(success:boolean,message:string,data:string){}
         */
        static getFinalParams(callBack?: (success: boolean, message: string, data: any) => void): Promise<{
            success: boolean;
            message: string;
            data: any;
        }>;
        /**
         * 发起会话聊天
         * @param code 会话编号
         * @param type 聊天类型 0 单聊 1 群聊
         * @param callBack 获取成功后的回调函数，函数结构：function(success:boolean,message:string,data:string){}
         */
        static chat(code: string, type: number, callBack?: (success: boolean, message: string, data: string) => void): Promise<{
            success: boolean;
            message: string;
            data: string;
        }>;
        /**
         * 获取聊天配置
         * @param code 会话编号
         * @param type 枚举值：top 是否置顶  mute 是否静音
         * @param callBack
         */
        static getChatConfig(code: string, type: string, callBack?: (success: boolean, message: string, data: any) => void): Promise<{
            success: boolean;
            message: string;
            data: any;
        }>;
        /**
         * 设置聊天配置
         * @param code 会话编号
         * @param type 枚举值：top 是否置顶  mute 是否静音 clear 清除聊天记录
         * @param value 配置的值，top和mute配置boolean值
         * @param callBack
         */
        static chatConfig(code: string, type: string, value: any, callBack?: (success: boolean, message: string, data: string) => void): Promise<{
            success: boolean;
            message: string;
            data: string;
        }>;
        /**
         * 发起扫描二维码
         * @param callBack 调用成功后的回调函数
         */
        static startScanner(callBack?: (success: boolean, message: string, data: string) => void): Promise<{
            success: boolean;
            message: string;
            data: string;
        }>;
        /**
         * 进入发送短信界面
         * @param phone 手机号码，多个使用分号（;）分割
         * @param content 短信内容
         * @param callBack 调用成功后的回调函数
         */
        static sendSMS(phone: string, content: string, callBack?: (success: boolean, message: string, data: string) => void): Promise<{
            success: boolean;
            message: string;
            data: string;
        }>;
        /**
         * 获取本地通讯录数据
         * @param callBack 调用成功后的回调函数
         */
        static getLocalContact(callBack?: (success: boolean, message: string, data: ContactInfo[]) => void): Promise<{
            success: boolean;
            message: string;
            data: ContactInfo[];
        }>;
    }
    /**
     * CrosheApp 创息公司APP常用的功能JS调用
     */
    class CrosheApp extends BaseApp {
        /**
         * 判断是否在创息内置安卓浏览器，注意此方法必须在页面加载完毕后判断更准确
         */
        static isCrosheAndroid(): boolean;
        /**
         * 判断是否在创息内置的ios浏览器，注意此方法必须在页面加载完毕后判断更准确
         */
        static isCrosheIOS(): boolean;
        /**
         * 查看图片
         * @param url 图片地址
         * @param imageList 图片所在的集合
         */
        static showImages(url: string, imageList?: string[]): Promise<void>;
        /**
         * 选择图片
         * @param crop 是否进行剪裁
         * @param multi 是否批量选择图片
         * @param callBack 回调函数
         */
        static selectImage(crop: boolean, multi: boolean, callBack: (base64File: string) => void): Promise<void>;
        /**
         * 弹出评论框
         * @param hint 提示语
         * @param callBack 回调函数
         */
        static showComment(hint: string, callBack: (content: string) => void): void;
        /**
         * 检查APP版本更新
         */
        static checkLevel(): void;
        /**
         * 退出APP登录
         */
        static logout(): void;
        /**
         * 清除APP文件缓存
         */
        static clearCache(): void;
    }
    /**
     * CrosheInject 由原生调用本地JS页面的方法，【重要：方法的作用域必须是window ，否则无法APP原生代码无法调用】
     */
    abstract class CrosheInject {
        /**
         * 当APP向浏览器页面发送事件或者网页自身调用 {@link FastNative.BaseApp.postEvent} 时，会触发未关闭的网页页面里的此函数，
         * @param eventName 事件名
         */
        abstract onEvent(eventName: string): void;
        /**
         * 当前APP触发字母索引时调用网页自身调用 {@link FastNative.BaseApp.postEvent} 时，会触发未关闭的网页页面里的此函数，
         * @param letter
         */
        abstract onLetter(letter: string): void;
    }
    /**
     * LocationInfo 获取定位返回的实体信息
     */
    class LocationInfo {
        /**
         * 纬度
         */
        latitude: number;
        /**
         * 经度
         */
        longitude: number;
        /**
         * 详情位置
         */
        address: string;
        /**
         * 省份
         */
        province: string;
        /**
         * 城市
         */
        city: string;
        /**
         * 区
         */
        area: string;
    }
    /**
     * AnyInfo 不可预测的实体信息，请根据实际返回数据为准
     */
    class AnyInfo {
    }
    /**
     * ContactInfo 通讯录实体信息
     */
    class ContactInfo {
        /**
         * 通讯录唯一标识ID
         */
        contactId: string | undefined;
        /**
         * 姓名
         */
        contactName: string | undefined;
        /**
         * 手机号码
         */
        contactPhone: string | undefined;
        /**
         * 姓名的拼音字母
         */
        allLetter: string | undefined;
        /**
         * 通讯录排序的首字母
         */
        sortKey: string | undefined;
    }
    /**
     * 微信授权返回的实体信息
     */
    class WXUserInfo {
        /**
         * 普通用户的标识，对当前开发者帐号唯一
         */
        openid: string | undefined;
        /**
         * 普通用户昵称
         */
        nickname: string | undefined;
        /**
         * 普通用户性别，1为男性，2为女性
         */
        sex: number | undefined;
        /**
         * 使用语言
         */
        language: string | undefined;
        /**
         * 所在城市
         */
        city: string | undefined;
        /**
         * 所在省份
         */
        province: string | undefined;
        /**
         * 所在国家
         */
        country: string | undefined;
        /**
         * 用户头像，最后一个数值代表正方形头像大小（有0、46、64、96、132数值可选，0代表640*640正方形头像），用户没有头像时该项为空
         */
        headimgurl: string | undefined;
        /**
         * 用户统一标识。针对一个微信开放平台帐号下的应用，同一用户的unionid是唯一的。
         */
        unionid: string | undefined;
        /**
         * 用户特权信息，json数组，如微信沃卡用户为（chinaunicom）
         */
        privilege: Array<string> | undefined;
    }
    /**
     * 支付宝用户实体信息
     */
    class APUserInfo {
        /**
         * 用户头像地址
         */
        avatar: string | undefined;
        /**
         * 所在城市
         */
        city: string | undefined;
        /**
         * 性别。枚举值如下：F：女性；M：男性。
         */
        gender: string | undefined;
        /**
         * 用户昵称
         */
        nick_name: string | undefined;
        /**
         * 所在省份
         */
        province: string | undefined;
        /**
         * 支付宝用户的userId
         */
        user_id: string | undefined;
    }
}
