/**
 * 根据淘宝API文档编辑
 * https://miniapp.open.taobao.com/docV3.htm?docId=119062&docType=1&source=search
 */

declare namespace my {
    /**
     * 渠道标识
     */
    export enum EntranceTag {
        pop_mytb = "pop_mytb",                  //poplayer弹窗-我淘
        tbhome_appicons = "tbhome_appicons",    //手淘首页双排ICON
        mini_ceiling = "mini_ceiling",          //手淘首页二楼
        hdkf_gamecenter = "hdkf_gamecenter",    //淘宝乐园（游戏广场）
    }

    //设置渲染帧率
    export function setPreferredFramesPerSecond(fps:number);

    /*基础*/
    //应用级事件

    export function onAppShow(callback: Function);//监听小程序切前台事件

    export function offAppShow(callback: Function);//取消监听小程序切前台事件

    export function onAppHide(callback: Function);//监听小程序切后台事件

    export function offAppHide(callback: Function);//取消监听小程序切后台事件

    export function onShow(callback: Function);//监听小程序切前台事件

    export function offShow(callback: Function);//取消监听小程序切前台事件

    export function onHide(callback: Function);//监听小程序切后台事件

    export function offHide(callback: Function);//取消监听小程序切后台事件

    export function onError(callback: (error: any) => void);//监听小程序错误事件

    export function offError(callback: Function);//取消监听小程序错误事件

    export function onUnhandledRejection(callback: (res: any) => void);//监听未处理的 Promise 拒绝事件

    export function offUnhandledRejection(callback: (res: any) => void);//取消监听未处理的 Promise 拒绝事件

    //分包加载

    export function loadSubPackage(param: { name: string, success: (res: any) => void, fail: (res: any) => void });//分包加载

    //插件
    export function getParentAppIdSync(): string;//在插件中获取宿主小程序AppId

    export function loadPlugin(param: { plugin: string, success: (res: any) => void, fail: (res: any) => void, complete: (res: any) => void });//加载动态插件

    //更新
    export function getUpdateManager();//获取版本更新管理器

    /*界面*/
    //导航栏
    export function setNavigationBar(param: any);//设置导航栏文字及样式。
    export function hideBackHome();//隐藏回首页按钮

    //路由
    export function switchTab();//跳转到指定 tabBar 页面，并关闭其他所有非 tabBar 页面

    export function reLaunch();//关闭当前所有页面，跳转到应用内的某个指定页面。

    export function redirectTo();//关闭当前页面，跳转到应用内的某个指定页面。

    export function navigateTo();//从当前页面，跳转到应用内的某个指定页面，以使用 navigateBack 返回到原来页面。

    export function navigateBa();//关闭当前页面，返回上一级或多级页面

    //TabBar
    export function hideTabBar();//隐藏 tabBar

    export function hideTabBarRedDot();//隐藏 tabBar 某一项的右上角的红点

    export function removeTabBarBadge();//移除 tabBar 某一项右上角的文本

    export function setTabBarBadge();//为 tabBar 某一项的右上角添加文本

    export function setTabBarItem();//动态设置 tabBar 某一项的内容

    export function setTabBarStyle();//动态设置 tabBar 的整体样式

    export function showTabBar();//显示 tabBar

    export function showTabBarRedDot();//显示 tabBar 某一项的右上角的红点

    export function onTabItemTap();//点击 tab 时触发

    //交互反馈

    /**
     * 警告框
     * @param param 
     */
    export function alert(param: {
        title: string,
        content: string,
        buttonText: string,
        success?: () => void,
        fail?: () => void,
        complete?: () => void,
    });

    export function confirm(param: { title: string, content: string, success: Function, confirmText?: string, showCancel?: false });//确认框

    export function hideLoading();//隐藏加载提示

    export function hideToast();//隐藏弱提示

    export function prompt();//弹出一个对话框，让用户在对话框内输入文本。

    export function showActionSheet();//显示操作菜单

    export function showLoading();//显示加载提示

    export function showToast();//显示一个弱提示，可选择多少秒之后消失。

    //下拉刷新
    export function startPullDownRefresh();//开始下拉刷新

    export function stopPullDownRefresh();//停止下拉刷新

    //选择城市

    export function chooseCity();//打开城市选择列表

    //选择日期

    export function datePicker();//打开日期选择列表

    //动画

    export function createAnimation();//创建动画实例

    //画布
    export function createCanvasContext();//创建 canvas 绘图上下文

    //地图


    export function createMapContext();//创建并返回一个 map 上下文对象 mapContext

    //键盘


    export function hideKeyboard();//隐藏键盘

    //滚动


    export function pageScrollTo();//滚动到页面的目标位置

    //节点查询


    export function createSelectorQuery();//获取一个节点查询对象 SelectorQuery

    //设置窗口背景


    export function setBackgroundTextStyle();//设置窗口背景样式

    export function setBackgroundColor();//设置窗口背景颜色

    //选项选择器
    //设置页面是否支持下拉


    export function setCanPullDown();//设置页面是否支持下拉

    //选项选择器


    export function optionsSelect();//选项选择器

    //多媒体
    //图片


    export function chooseImage();//拍照或从手机相册中选择图片

    export function compressImage();//压缩图片

    export function saveImage();//保存图片到相册

    export function previewImage();//预览图片

    export function getImageInfo();//获取图片信息

    //视频


    export function chooseVideo();//拍摄视频或从手机相册中选视频

    export function saveVideoToPhotosAlbum();//保存视频到相册

    export function createVideoContext();//创建视频

    //音频

    export interface InnerAudioContext {
        src: string;
        autoplay: boolean;
        onPlay: Function;
        onError: Function;
        onEnded: Function;
        play: Function;
    }

    /**
     * 创建音频
     */
    export function createInnerAudioContext(): InnerAudioContext;
    //录音
    export function getRecorderManager();//获取录音管理器

    //文件


    export function getFileInfo();//获取文件信息

    export function saveFile();//保存文件到本地

    export function getSavedFileInfo();//获取保存的文件信息

    export function getSavedFileList();//获取保存的所有文件信息

    export function removeSavedFile();//删除某个保存的文件

    export function getFileSystemManager();//获取全局唯一的文件管理器

    //缓存


    export function clearStorage();//清除本地数据缓存的异步接口

    export function clearStorageSync();//清除本地数据缓存的同步接口

    export function getStorage();//获取缓存数据的异步接口

    export function getStorageInfo();//获取当前 storage 的相关信息的异步接口

    export function getStorageInfoSync();//获取当前 storage 相关信息的同步接口

    export function getStorageSync();//获取缓存数据的同步接口

    export function removeStorage();//删除缓存数据的异步接口

    export function removeStorageSync();//删除缓存数据的同步接口

    export function setStorage();//将数据存储在本地缓存中指定的 key 中的异步接口

    export function setStorageSync();//同步将数据存储在本地缓存中指定的 key 中的同步接口

    //位置


    export function getLocation();//获取用户当前的地理位置信息

    export function chooseLocation();//使用高德地图选择地理位置

    export function openLocation();//小程序使用淘宝内置地图查看位置

    //网络
    //上传


    export function uploadFile();//上传本地资源到开发者服务器,注意该接口仅支持上传到官方域名，若需要上传其他环境，需要申请白名单

    //下载

    export function downloadFile();//下载网络资源到本地,注意该接口仅支持从官方域名下载资源，若需要其他环境，需要申请白名单

    //发起请求
    export var tb: {
        getInteractiveSDK(): any;
        //发起http请求（仅限轻应用小程序使用）
        request();

        //计步
        getStepsHistory();//获取历史步数

        getDailySteps();//获取当天步数

        supportStepCount();//判断手机是否支持计步

        stepsAuthorizeStatus();//判断手机健康权限是否申请

        requestStepsAuthorization();//申请步数权限

        setStepCountStatus();//设置步数自动上传状态

        getStepsStatus();//获取步数自动上传状态

        requestManufacturerPermission();//申请厂商权限

        checkManufacturerPermission();//检查厂商健康授权状态

        requestSensorPermission();//申请sensors权限

        checkSensorPermission();//检查sensors权限



        //跳转淘宝官方页面


        navigateToTaobaoPage();//打开淘宝官方页面

        //添加轻应用


        checkAddedStatus();//查询轻应用是否被添加
        checkMiniProgramFollowStatus();//查询小游戏是否被添加
        //获取用户设备ID


        getDeviceId();//获取用户设备ID

        //自定义【更多】菜单


        setActionSheet();//自定义更多菜单项

        //配置导航栏扩展能力


        addMenu();//定制导航栏右侧按钮

        //日历提醒


        addCalendarPlan();//添加日历提醒

        checkCalendarPlanIsExist();//查询设置过的日历提醒

        cancelCalendarPlan();//取消日历提醒异步接口

        //添加到桌面


        addToDesktop();//添加小程序到桌面快捷方式



        //错误页


        showErrorView();//显示错误页

        hideErrorView();//隐藏错误页

        //安全


        textRiskIdentification();//文本风险识别

        imgRisk();//图片内容安全

        preventCheat();//业务风控营销反作弊

        //电商能力API
        //SKU


        showSku();//显示指定商品 SKU 选择器

        hideSku();//隐藏正在展示的商品 SKU 选择

        //商品


        collectGoods();//收藏商品

        unCollectGoods();//取消收藏商品

        checkGoodsCollectedStatus();//检查商品是否被收藏

        openDetail();//打开商品详情页

        //店铺


        favorShop();//关注店铺

        checkShopFavoredStatus();//查询店铺关注状态

        unFavorShop();//取消关注店铺

        //购物车


        openCart();//打开购物车

        addToCart();//加入购物车

        //收货地址


        chooseAddress();//打开收货地址选择器

        //消息


        openMessage(param:{sellerNick: string});//打开BC客服聊天

        subscribe();//调起客户端小程序订阅消息界面，返回用户订阅消息的操作结果

        //订单


        confirmCustomOrder();//跳转订单页

        openScuCombination();//打开组合购

        getInteractiveSDK(): any;//获取小游戏互动插件

        //内购虚拟支付
        virtualTrade(param: { itemId: string, outOrderId:string, success: Function, fail: Function });
    };

    //Websocket通信

    export function connectSocket();//创建一个Websocket连接

    //设备
    //canIUse


    export function canIUse();//判断当前小程序的 API、入参或返回值、组件、属性等在当前版本是否支持

    //获取基础库版本号


    export function SDKVersion();//获取基础库版本号

    //系统信息

    /**
     * 获取手机系统信息的同步接口
     */
    export function getSystemInfoSync(): {
        model: string,//手机型号。
        pixelRatio: number,//设备像素比。
        windowWidth: number,//窗口宽度。
        windowHeight: number,//窗口高度。
        language: string,//APP设置的语言。
        version: string,//APP版本号。
        storage: string,//设备磁盘容量。
        currentBattery: string,//当前电量百分比。
        system: string,//系统版本。
        platform: string,//系统名：Android，iOS。
        screenWidth: number,//屏幕宽度。
        screenHeight: number,//屏幕高度。
        brand: string,//手机品牌。
        fontSizeSetting: number,//用户设置字体大小。
        app: string,//当前运行的客户端。
        titleBarHeight: number,//标题栏高度。
        statusBarHeight: number,//状态栏高度。
        screenReaderEnabled: boolean,//设备是否开启无障碍。
    };

    export function getSystemInfo(param: { success: Function });//获取手机系统信息

    //网络状态


    export function getNetworkType();//获取当前网络状态

    export function onNetworkStatusChange();//开始网络状态变化的监听

    export function offNetworkStatusChange();//取消网络状态变化的监听

    //设备方向


    export function offDeviceMotionChange();//解除设备方向监听

    export function onDeviceMotionChange();//监听设备方向

    //剪贴板


    export function setClipboard(param: { text: string, success: Function });//设置剪贴板数据

    export function getClipboard(param: { success: Function });//获取剪贴板数据

    //摇一摇


    export function watchShake();//摇一摇功能

    //振动


    export function vibrate();//调用振动功能

    export function vibrateShort();//较短时间的振动 (40ms)

    export function vibrateLong();//较长时间的振动 (400ms)

    //加速度计


    export function onAccelerometerChange();//监听加速度数据

    export function offAccelerometerChange();//停止监听加速度数据

    //加速度计


    export function onAccelerometerChange();//监听加速度数据

    export function offAccelerometerChange();//停止监听加速度数据



    //陀螺仪


    export function onGyroscopeChange();//监听陀螺仪数据变化事件

    export function offGyroscopeChange();//停止监听陀螺仪数据

    //打电话


    export function makePhoneCall();//拨打电话

    //发短信


    export function sendSMS();//发送短信

    //获取服务器时间


    export function getServerTime();//获取当前服务器时间的毫秒数

    //用户截屏


    export function offUserCaptureScreen();//取消监听截屏事件

    export function onUserCaptureScreen();//监听用户发起的主动截屏事件

    //屏幕亮度


    export function getScreenBrightness();//获取屏幕亮度

    export function setScreenBrightness();//设置屏幕亮度

    export function setKeepScreenOn(param: { keepScreenOn: boolean });//设置屏幕常亮

    //设置


    export function getSetting(param: { withSubscriptions: boolean, success: Function });//获取用户的当前设置

    export function openSetting();//打开小程序设置界面，返回用户权限设置的结果

    //添加手机联系人


    export function addPhoneContact();//添加手机联系人

    //权限引导


    export function showAuthGuide();//显示系统权限引导界面

    //扫码


    export function scan();//调用扫一扫功能

    //内存不足告警


    export function onMemoryWarning();//开始监听内存不足的告警事件

    export function offMemoryWarning();//停止监听内存不足的告警事件

    //获取设备电量


    export function getBatteryInfo();//获取电量的异步接口

    export function getBatteryInfoSync();//获取电量的同步接口

    //传统蓝牙


    export function openBluetoothAdapter();//初始化小程序蓝牙模块

    export function closeBluetoothAdapter();//关闭本机蓝牙模块

    export function getBluetoothAdapterState();//获取本机蓝牙模块状态

    export function getBluetoothDevices();//获取所有已发现的蓝牙设备

    export function getConnectedBluetoothDevices();//获取处于已连接状态的设备

    export function onBluetoothDeviceFound();//搜索到新的蓝牙设备时触发此事件

    export function offBluetoothDeviceFound();//移除寻找到新的蓝牙设备事件的监听

    export function startBluetoothDevicesDiscovery();//开始搜寻附近的蓝牙外围设备

    export function stopBluetoothDevicesDiscovery();//停止搜寻附近的蓝牙外围设备

    export function onBluetoothAdapterStateChange();//监听本机蓝牙状态变化的事件

    export function offBluetoothAdapterStateChange();//取消监听本机蓝牙状态变化的事件

    //低功耗蓝牙


    export function connectBLEDevice();//连接低功耗蓝牙设备

    export function disconnectBLEDevice();//断开与低功耗蓝牙设备的连接

    export function getBLEDeviceCharacteristics();//获取蓝牙设备所有特征值

    export function getBLEDeviceServices();//获取蓝牙设备所有服务

    export function notifyBLECharacteristicValueChange();//启用低功耗蓝牙设备特征值变化时的 notify 功能

    export function offBLECharacteristicValueChange();//取消监听低功耗蓝牙设备的特征值变化的事件

    export function offBLEConnectionStateChanged();//取消监听低功耗蓝牙连接的错误事件，包括设备丢失，连接异常断开等

    export function onBLECharacteristicValueChange();//监听低功耗蓝牙设备的特征值变化的事件

    export function onBLEConnectionStateChanged();//监听低功耗蓝牙连接的错误事件，包括设备丢失，连接异常断开等

    export function readBLECharacteristicValue();//读取低功耗蓝牙设备特征值中的数据

    export function writeBLECharacteristicValue();//向低功耗蓝牙设备特征值中写入数据

    export function setBLEMTU();//设置蓝牙最大传输单元

    //iBeacons


    export function getBeacons();//获取已经搜索到的iBeacon设备

    export function onBeaconUpdate();//监听 iBeacon 设备的更新事件

    export function offBeaconUpdate();//取消监听 iBeacon 设备的更新事件

    export function startBeaconDiscovery();//开始搜索iBeacon设备

    export function stopBeaconDiscovery();//停止搜索iBeacon设备

    export function offBeaconServiceChange();//取消监听 iBeacon 服务的状态变化

    export function onBeaconServiceChange();//监听 iBeacon 服务的状态变化

    //Wi - Fi


    export function connectWifi();//连接Wifi

    //分享


    export function hideShareMenu();//隐藏分享按钮

    export function showSharePanel();//唤起分享面板

    export function onShareAppMessage();


    //开放能力 API
    //用户授权

    export function authorize(param: {scopes: string, success: Function, fail: Function});//获取用户授权

    //获取授权用户信息


    export function getAuthUserInfo(param: { success: Function });//获取授权用户信息

    //小程序跳转


    export function navigateBackMiniProgram();//跳转回上一个小程序，只有当另一个小程序跳转到当前小程序时才能调用成功。

    export function navigateToMiniProgram();//跳转到其他小程序

    //退出当前小程序


    export function exit();//退出当前小程序


    //千牛端扩展API
    //请前往【API - 千牛端扩展API】查看

    //webview组件控制


    export function createWebViewContext();//通过创建webviewContext提供从小程序向web-view发送消息的能力。创建并返回 web-view 上下文 webViewContext 对象。

    //数据安全


    export function rsa();//非对称加密

    //小程序当前运行版本类型


    export function getRunScene();//用于获取当前小程序的运行版本

    //自定义分析


    export function reportAnalytics();//自定义分析数据的上报接口

    //模板实例化


    export function getExtConfig();//获取模板ext.json中的ext配置

    export function getExtConfigSync();//同步获取模板ext.json中的ext配置

    //小部件


    export function getRelationAppId();//获取小部件关联的小程序AppID

    export function getRelationAppInfo();//获取小部件关联的小程序信息



    export function setGestureMode();//设置小部件手势交互模式

    export function navigateToRelationMiniProgram();//小部件跳转到关联的小程序

    export function widgetDowngrade();//小部件降级API

    export function getSceneInfo();//获取小部件场景信息

    export function getBizData();//获取商家配置的表单数据


    export function createRewardedAd(param: { adUnitId: string }) //创建激励视频广告实例
}