declare module  wx{

    /**
     * 发起的是https请求。一个微信小程序,同时只能有5个网络请求连接
     */
    export function request(obj:{
        /**开发者服务器接口地址*/
        url:string;
        /**请求的参数 */
        data?:any;
        /**设置请求的header , header中不能设置Referer*/
        header?:any;
        /**默认为GET,有效值:OPTIONS,GET,HEAD,POST,PUT,DELETE,TRACE,CONNECT */
        method?:string;
        /**收到开发者服务成功返回的回调函数,res = {data:"开发者服务器返回的内容"} */
        success?:(res:{})=>void;
        /**接口调用失败的回调函数 */
        fail?:()=>void;
        /**接口调用结束的回调函数(调用成功、失败都会执行) */
        complete?:()=>void;
    }):void;
    /**
     *  将本地资源上传到开发者服务器。如页面通过 wx.chooseImage 等接口获取到一个本地资源的临时文件路径后,可通过此接口将本地资源上传到指定服务器。客户端发起一个HTTPS POST请求,其中 Content-Type 为 multipart/form-data
     */
    export function uploadFile(obj:{
        /**开发者服务器url*/
        url:string;
        /**要上传文件资源的路径 */
        filePath:string;
        /**文件对应的key , 开发者在服务器端通过这个key可以获取到文件二进制内容 */
        name:string;
        /**HTTP 请求 Header */
        header?:any;
        /**HTTP 请求中其他额外的form data */
        fromData?:any;
        /**接口调用成功的回调函数 */
        success?:(res:{})=>void;
        /**接口调用失败的回调函数 */
        fail?:()=>void;
        /**接口调用结束的回调函数(调用成功、失败都会执行) */
        complete?:()=>void;
    }):void;
    /**
     * ​ 下载文件资源到本地。客户端直接发起一个HTTP GET请求,把下载到的资源根据 type 进行处理,并返回文件的本地临时路径。
     */
    export function downloadFile(obj:{
        /**下载资源的 url */
        url:string;
        /**下载资源的类型,用于客户端识别处理,有效值:image/audio/video */
        type?:string;
        /**HTTP 请求 Header */
        header?:any;
        /**下载成功后以 tempFilePath 的形式传给页面,res={tempFilePath:"文件的临时路径"} */
        success?:(res:{})=>void;
        /**接口调用失败的回调函数 */
        fail?:()=>void;
        /**接口调用结束的回调函数(调用成功、失败都会执行) */
        complete?:()=>void;
    }):void;

    /**
     * ​ 创建一个 WebSocket 连接;一个微信小程序同时只能有一个WebSocket连接,如果当前已存在一个WebSocket连接,会自动关闭该连接,并重新创建一个WebSocket连接。
     */
    export function connectSocket(obj:{
        /**开发者服务器接口地址,必须是HTTPS协议,且域名必须是后台配置的合法域名 */
        url:string;
        /**请求的数据 */
        data?:any;
        /**HTTP Header */
        header?:any;
        /**	默认是GET,有效值为: OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT */
        method?:string;
        /** 接口调用成功的回调函数*/
        success?:(res:{})=>void;
        /** 接口调用失败的回调函数*/
        fail?:()=>void;
        /**接口调用结束的回调函数(调用成功、失败都会执行) */
        complete?:()=>void;

    }):void;
    /**
     * 监听WebSocket连接打开事件
     */
    export function onSocketOpen(cb:(res?)=>void):void;
    /**
     * 监听WebSocket错误
     */
    export function onSocketError(cb:(res?)=>void):void;
    /**
     * 通过WebSocket连接发送数据,需要先wx.connectSocket,并在wx.onSocketOpen回调之后才能发送。
     */
    export function sendSocketMessage(obj:{
        /** 需要发送的内容*/
        data:string
    }):void;
    /**
     * 监听WebSocket接受到服务器的消息事件
     */
    export function onSocketMessage(cb:(res:{
        /**服务器返回的消息 */
        data?:string
    })=>void):void;
    /**
     * ​ 关闭WebSocket连接
     */
    export function closeSocket(cb:(res:{})=>void):void;
    /**
     * 监听WebSocket关闭
     */
    export function onSocketClose():void;
    /**
     * ​ 从本地相册选择图片或使用相机拍照
     */
    export function chooseImage(obj:{
        /**成功则返回图片的本地文件路径列表tempFilePaths */
        success:(res:{})=>void;
        /**最多可以选择的图片张数,默认9 */
        count?:number;
        /**"original"原图,"compressed"压缩图,默认二者都有 */
        sizeType?:string[];
        /**"album"从相册选图,"camera"使用相机,默认二者都由 */
        sourceType?:string[];
        /**接口调用失败的回调函数 */
        fail?:()=>void;
        /**	接口调用结束的回调函数(调用成功、失败都会执行)*/
        complete?:()=>void;
    }):void;
    /**
     * ​ 预览图片
     */
     export function previewImage(obj:{
         /**需要预览的图片链接列表 */
        urls:string[];
        /**当前显示图片的链接,不填则默认为urls的第一张 */
        current?:string;
        /**接口调用成功的回调函数 */
        success?:(res:{})=>void;
        /**接口调用失败的回调函数 */
        fail?:()=>void;
        /**接口调用结束的回调函数(调用成功、失败都会执行) */
        complete?:()=>void;
    }):void;
    /**
     * ​ 开始录音。当主动调用wx.stopRecord,或者录音超过1分钟时自动结束录音,返回录音文件的临时文件路径
     */
    export function startRecord(obj:{
        /**录音成功后调用,返回录音文件的临时文件路径,res={tempFilePath:"录音文件的临时路径"} */
        success?:(res:{tempFilePath?:string})=>void;
        /**接口调用失败的回调函数 */
        fail?:()=>void
        /**接口调用结束的回调函数(调用成功、失败都会执行) */;
        complete?:()=>void;
    }):void;
    /**
     * ​主动调用停止录音。
     */
    export function stopRecord():void;
    /**
     * ​ ​ 开始播放语音,同时只允许一个语音文件正在播放,如果前一个语音文件还没播放完,将中断前一个语音播放。
     */
    export function playVoice(obj:{
        /**需要播放的语音文件的文件路径 */
        filePath:string;
        /**接口调用成功的回调函数 */
        success?:(res:{})=>void;
        /** 接口调用失败的回调函数*/
        fail?:()=>void;
        /**接口调用结束的回调函数(调用成功、失败都会执行) */
        complete?:()=>void;
    }):void;
    /**
     * 暂停正在播放的语音。再次调用wx.playVoice播放同一个文件时,会从暂停处开始播放。如果想从头开始播放,需要先调用wx.stopVoice
     */
    export function pauseVoice():void;
    /**
     *结束播放语音
     */
    export function stopVoice():void;
    /**
     * 获取音乐播放状态
     */
    export function getBackgroundAudioPlayerState(cb:(data:{
        /**选定音频的长度(单位:s),只有在当前有音乐播放时返回 */
        duration:number;
        /**选定音频的播放位置(单位:s),只有在当前有音乐播放时返回 */
        currentPosition:number;
        /**播放状态(2:没有音乐在播放,1:播放中,0:暂停中) */
        status:number;
        /**音频的下载进度(整数,80 代表 80%),只有在当前有音乐播放时返回 */
        downloadPercent:number;
        /**歌曲数据链接,只有在当前有音乐播放时返回 */
        dataUrl:string;
    }
    )=>void):void;
    /**
     * 播放音乐,同时只能有一首音乐正在播放。
     */
    export function playBackgroundAudio(obj:{
        /**	音乐链接 */
        dataUrl:string;
        /**	音乐标题 */
        title?:string;
        /**	封面URL */
        coverImgUrl?:string;
    }):void;
    /**
     * 暂停播放音乐
     */
    export function pauseBackgroundAudio():void;
    /**
     * 控制音乐播放进度
     */
    export function seekBackgroundAudio(obj:{
        /**音乐位置,单位:秒 */
        position:number;
    }):void;

    /**
     * 停止播放音乐
     */
    export function stopBackgroundAudio():void;
    /**
     * 监听音乐播放
     */
    export function onBackgroundAudioPlay(cb:()=>void):void;
    /**
     * 监听音乐暂停
     */
    export function onBackgroundAudioPause(cb:()=>void):void;
    /**
     * 监听音乐停止
     */
    export function onBackgroundAudioStop(cb:()=>void):void;
    /**
     * ​ ​ ​ 保存文件到本地
     */
    export function saveFile(obj:{
        /**需要保存的文件的临时路径 */
        tempFilePath:string;
        /**返回文件的保存路径*/
        success?:(res:{
            /**文件的保存路径 */
            savedFilePath:string;
        })=>void;
        /**接口调用失败的回调函数 */
        fail?:()=>void;
        /**接口调用结束的回调函数(调用成功、失败都会执行) */
        complete?:()=>void;
    }):void;
     /**
     * ​ ​ ​ 拍摄视频或从手机相册中选视频,返回视频的临时文件路径。
     */
    export function chooseVideo(obj:{
        /**"album"从相册选视频,"camera"使用相机拍摄,默认为:['album', 'camera'] */
        sourceType?:string;
        /**拍摄视频最长拍摄时间,单位秒。最长支持60秒 */
        maxDuration?:number;
        /**前置或者后置摄像头,默认为前后都有,即:['front', 'back']*/
        camera?:string[];
        /**接口调用成功,返回视频文件的临时文件路径 */
        success?:(res:{
            /**选定视频的临时文件路径 */
            tempFilePath:string;
            /**选定视频的时间长度 */
            duration:number;
            /**选定视频的数据量大小 */
            size:number;
            /**返回选定视频的长 */
            height:number;
            /**返回选定视频的宽 */
            width:number;
        })=>void;
        /**接口调用失败的回调函数 */
        fail?:()=>void;
        /**接口调用结束的回调函数(调用成功、失败都会执行) */
        complete?:()=>void;
    }):void;
    /**
     * 将数据存储在本地缓存中指定的key中,会覆盖掉原来该key对应的内容,这是一个异步接口。
     */
     export function setStorage(obj:{
         /**本地缓存中的指定的key */
         key:string;
          /**需要存储的内容 */
         data:any;
     }):void;
     /**
      * 将DATA存储在本地缓存中指定的KEY中,会覆盖掉原来该KEY对应的内容,这是一个同步接口。
      *@param key 本地缓存中的指定的key
      *@param data 需要存储的内容
      */
     export function setStorageSync( key:string,data:any):void;
     /**
     * 从本地缓存中异步获取指定key对应的内容。
     */
     export function getStorage(obj:{
         /**本地缓存中的指定的key */
         key:string;
         /**接口调用的回调函数 */
         success:(res:{
             /**key对应的内容 */
             data:any
            })=>void;
     }):void;
     /**
      *  从本地缓存中同步获取指定key对应的内容。
      * @param key 本地缓存中的指定的key
      */
    export function getStorageSync(key:string):any;
    /**
      *  ​ 清理本地数据缓存
      */
     export function clearStorage():void;
     /**
      *  ​ 同步清理本地数据缓存
      */
     export function clearStorageSync():void;
     /**
      *  ​ ​ 获取当前的地理位置、速度
      */
     export function getLocation(obj:{
         /**成功获取地理位置的回调 */
        success:(res:{
            /**纬度,浮点数,范围为-90~90,负数表示南纬 */
            latitude:number;
            /**经度,浮点数,范围为-180~180,负数表示西经 */
            longitude:number;
            /**速度,浮点数,单位m/s */
            speed:number;
            /**位置的精确度 */
            accuracy:number;
        })=>void;
         /**默认为"wgs84"返回gps坐标,"gcj02"返回可用于wx.openLocation的坐标 */
        type?:string;
        /**接口调用失败的回调函数 */
        fail?:()=>void;
        /** 接口调用结束的回调函数(调用成功、失败都会执行)*/
        complete?:()=>void;
     }):void;
     /**
      * 使用微信内置地图查看位置
      */
      export function openLocation(obj:{
          /**纬度,范围为-90~90,负数表示南纬 */
        latitude:number;
        /**经度,范围为-180~180,负数表示西经 */
        longitude:number;
        /**缩放比例,范围1~28,默认为28 */
        scale?:number;
        /**在查看位置界面底部显示的超链接,可点击跳转 */
        infoUrl?:string;
        /**位置名 */
        name?:string;
        /**地址的详细说明 */
        address?:string;
        /**接口调用成功的回调函数 */
        success?:(res:{})=>void;
        /**接口调用失败的回调函数 */
        fail?:()=>void;
        /**接口调用结束的回调函数(调用成功、失败都会执行) */
        complete?:()=>void;
     });
      /**
      * 获取网络类型
      */
      export function getNetworkType(obj:{
          /**返回网络类型networkType */
        success:(res:{
            /**返回网络类型2g,3g,4g,wifi */
            networkType:string
        })=>void;
        /**接口调用失败的回调函数 */
        fail?:()=>void;
        /**接口调用结束的回调函数(调用成功、失败都会执行)*/
        complete?:()=>void;
     }):void;
     /**
      * 获取系统信息
      */
      export function getSystemInfo(obj:{
        success:(res:{
            /**手机型号 */
            model:any;
            /**设备像素比 */
            pixelRatio:any;
            /**窗口宽度 */
            windowWidth:any;
            /**窗口高度 */
            windowHeight:any;
            /**微信设置的语言 */
            language:any;
            /**微信版本号 */
            version:any;
        })=>void;
     }):void;
     /**
      * 监听重力感应数据,频率:50次/秒
      */
      export function onAccelerometerChange(cb:(res:{
          /**X 轴 */
          x:number;
          /**Y 轴 */
          y:number;
          /**Z 轴 */
          z:number;
      })=>void):void;
     /**
      * 监听罗盘数据,频率:50次/秒
      */
      export function onCompassChange(cb:(res:{
          /*面对的方向度数 */
          direction:number;
      })=>void):void;

       /**
      * 动态设置当前页面的标题
      */
      export function setNavigationBarTitle(obj:{
          /**页面标题 */
        title?:string;
        /** 接口调用成功的回调函数*/
        success?:(res:{})=>void;
        /** 接口调用失败的回调函数*/
        fail?:()=>void;
        /**接口调用结束的回调函数(调用成功、失败都会执行) */
        complete?:()=>void;
     }):void;

     /**
      * 在当前页面显示导航条加载动画
      */
      export function showNavigationBarLoading():void;
      /**
      * 隐藏导航条加载动画
      */
      export function hideNavigationBarLoading():void;
       /**
      * 保留当前页面,跳转到应用内的某个页面,使用wx.navigateBack可以返回到原页面。
      * 注意:为了不让用户在使用小程序时造成困扰,我们规定页面路径只能有五层,请尽量避免多层级的交互方式
      */
      export function navigateTo(obj:{
          /**需要跳转的应用内页面的路径 */
        url:string;
        /**接口调用成功的回调函数 */
        success?:(res:{})=>void;
        /**接口调用失败的回调函数 */
        fail?:()=>void;
        /**接口调用结束的回调函数(调用成功、失败都会执行) */
        complete?:()=>void;
     }):void;
        /**
      * 关闭当前页面,跳转到应用内的某个页面。
      */
     export function redirectTo(obj:{
        /**需要跳转的应用内页面的路径 */
        url:string;
        /**接口调用成功的回调函数*/
        success?:(res:{})=>void;
        /**接口调用失败的回调函数*/
        fail?:()=>void;
        /**接口调用结束的回调函数(调用成功、失败都会执行) */
        complete?:()=>void;
     }):void;
        /**
      * 关闭当前页面,回退前一页面
      */
     export function navigateBack():void;

     export interface animation{
         /**透明度,参数范围 0~1 */
         opacity(value:any):animation;
         /**颜色值 */
         backgroundColor(color:any):animation;
         /**长度值,如果传入 number 则默认使用 rpx,可传入其他自定义单位的长度值 */
         width(length:any):animation;
         /**长度值,如果传入 number 则默认使用 rpx,可传入其他自定义单位的长度值 */
         height(length:any):animation;
         /**长度值,如果传入 number 则默认使用 rpx,可传入其他自定义单位的长度值 */
         top(length:any):animation;
         /**长度值,如果传入 number 则默认使用 rpx,可传入其他自定义单位的长度值 */
         left(length:any):animation;
         /**长度值,如果传入 number 则默认使用 rpx,可传入其他自定义单位的长度值 */
         bottom(length:any):animation;
         /**长度值,如果传入 number 则默认使用 rpx,可传入其他自定义单位的长度值 */
         right(length:any):animation;

         /**deg的范围-180~180,从原点顺时针旋转一个deg角度 */
         rotate(deg:any):animation;
         /**deg的范围-180~180,从原点顺时针旋转一个deg角度 */
         rotateX(deg:any):animation;
         /**deg的范围-180~180,从原点顺时针旋转一个deg角度 */
         rotateY(deg:any):animation;
         /**deg的范围-180~180,从原点顺时针旋转一个deg角度 */
         rotateZ(deg:any):animation;
         /**deg的范围-180~180,从原点顺时针旋转一个deg角度 */
         rotate3d(x:any,y:any,z:any,deg:any):animation;

         /**一个参数时,表示在X轴、Y轴同时缩放sx倍数;两个参数时表示在X轴缩放sx倍数,在Y轴缩放sy倍数*/
         scale(sx:any,sy?:any):animation;
         /**在X轴缩放sx倍数*/
         scaleX(sx:any):animation;
         /**在Y轴缩放sy倍数*/
         scaleY(sy:any):animation;
         /**在Z轴缩放sy倍数*/
         scaleZ(sz:any):animation;
         /**在X轴缩放sx倍数,在Y轴缩放sy倍数,在Z轴缩放sz倍数 */
         scale3d(sx:any,sy:any,sz:any):animation;

         /**一个参数时,表示在X轴偏移tx,单位rpx;两个参数时,表示在X轴偏移tx,在Y轴偏移ty,单位rpx。 */
         translate(tx:any,ty?:any):animation;
         /**在X轴偏移tx,单位rpx */
         translateX(tx:any):animation;
         /**在Y轴偏移ty,单位rpx */
         translateY(ty:any):animation;
         /**在Y轴偏移tz,单位rpx */
         translateZ(tz:any):animation;
         /**在X轴偏移tx,在Y轴偏移ty,在Z轴偏移tz,单位rpx */
         translate3d(tx:any,ty:any,tz:any):animation;

         /**参数范围-180~180;一个参数时,Y轴坐标不变,X轴坐标延顺时针倾斜ax度;两个参数时,分别在X轴倾斜ax度,在Y轴倾斜ay度 */
         skew(ax:any,ay?:any):animation;
         /**参数范围-180~180;Y轴坐标不变,X轴坐标延顺时针倾斜ax度 */
         skewX(ax:any):animation;
         /**参数范围-180~180;X轴坐标不变,Y轴坐标延顺时针倾斜ay度 */
         skewY(ay:any):animation;
         matrix(a:any,b:any,c:any,d:any,tx:any,ty:any):animation;
         matrix3D(a1, b1, c1, d1, a2, b2, c2, d2, a3, b3, c3, d3, a4, b4, c4, d4):animation;
         step(obj:{
               /**动画持续时间,单位ms,默认值 400 */
            duration?:number;
             /** 定义动画的效果,默认值"linear",有效值:"linear","ease","ease-in","ease-in-out","ease-out","step-start","step-end"*/
            timingFunction?:string;
             /**动画持续时间,单位 ms,默认值 0 */
            delay?:number;
              /**设置transform-origin,默认为"50% 50%" */
            transformOrigin?:string;
        }):void;
        /**注意: export 方法每次调用后会清掉之前的动画操作 */
         export():any;
     }
        /**
         *  创建一个动画实例animation。调用实例的方法来描述动画。最后通过动画实例的export方法导出动画数据传递给组件的animation属性。
        *  注意: export 方法每次调用后会清掉之前的动画操作
      */
     export function createAnimation(obj:{
         /**动画持续时间,单位ms,默认值 400 */
        duration?:number;
        /** 定义动画的效果,默认值"linear",有效值:"linear","ease","ease-in","ease-in-out","ease-out","step-start","step-end"*/
        timingFunction?:string;
        /**动画持续时间,单位 ms,默认值 0 */
        delay?:number;
        /**设置transform-origin,默认为"50% 50%" */
        transformOrigin?:string;

     }):animation;

      export interface context{
        /**
         * 获取当前context上存储的绘图动作
         */
          getActions():any;
          /**
           * 清空当前的存储绘图动作
           */
          clearActions():void;
          /**
           * 对横纵坐标进行缩放
           * @param scaleWidth 横坐标缩放的倍数(1=100%,0.5=50%,2=200%,依次类推)
           * @param scaleHeight 纵坐标缩放的倍数(1=100%,0.5=50%,2=200%,依次类推)
           */
          scale(scaleWidth:number,scaleHeight:number):void;
          /**
           * 对坐标轴进行顺时针旋转
           * @param value 旋转角度,以弧度计(degrees * Math.PI/180;degrees范围为0~360)
           */
          rotate(value:number):void;
          /**
           * 对坐标原点进行缩放
           * @param x 水平坐标平移量
           * @param y 竖直坐标平移量
           */
          translate(x:number,y:number):void;
          /**
           * 保存当前坐标轴的缩放、旋转、平移信息
           */
          save():void;
          /**
           * 恢复之前保存过的坐标轴的缩放、旋转、平移信息
           */
          restore():void;
          /**
           * 清除画布上在该矩形区域内的内容
           * @param x 矩形区域左上角的x坐标
           * @param y 矩形区域左上角的y坐标
           * @param width 矩形区域的宽度
           * @param height 矩形区域的高度
           */
          clearRect(x:number,y:number,width:number,height:number):void;
          /**
           * 在画布上绘制被填充的文本。
           * @param text 在画布上输出的文本
           * @param x 绘制文本的左上角x坐标位置
           * @param y 绘制文本的左上角y坐标位置
           */
          fillText(text:string,x:number,y:number):void;
          /**
           * 绘制图像,图像保持原始尺寸。
           * @param imageResource 所要绘制的图片资源(通过chooseImage得到一个文件路径或者一个项目目录内的图片);
           * @param x 图像左上角的x坐标
           * @param y 图像左上角的y坐标
           */
          drawImage(imageResource:string,x:number,y:number):void;
          /**
           * 对当前路径进行填充
           */
          fill():void;
            /**
           * 对当前路径进行描边
           */
          stroke():void;
          /**开始一个路径 */
          beginPath():void;
          /**关闭一个路径。 */
          closePath():void;
           /**把路径移动到画布中的指定点,不创建线条。。
            * @param x 目标位置的x坐标
            * @param y 目标位置的y坐标
           */
          moveTo(x:number,y:number):void;
          /**在当前位置添加一个新点,然后在画布中创建从该点到最后指定点的路径。
            * @param x 目标位置的x坐标
            * @param y 目标位置的y坐标
          */
          lineTo(x:number,y:number):void;
          /**添加一个矩形路径到当前路径。
            * @param x 矩形路径左上角的x坐标
            * @param y 矩形路径左上角的y坐标
            * @param width 矩形路径的宽度
            * @param height 矩形路径的高度
           */
          rect(x:number,y:number,width:number,height:number):void;
          /** 添加一个弧形路径到当前路径,顺时针绘制。
           * @param x 矩形路径左上角的x坐标
           * @param y 矩形路径左上角的y坐标
           * @param radius 矩形路径的宽度
           * @param startAngle 起始弧度
           * @param sweepAngle 从起始弧度开始,扫过的弧度
          */
          arc(x:number,y:number,radius:number,startAngle:number,sweepAngle:number):void;
          /**创建二次贝塞尔曲线路径。
           *  @param crpx 贝塞尔控制点的x坐标
           *  @param cpy 贝塞尔控制点的y坐标
           *  @param x 结束点的x坐标
           *  @param y 结束点的y坐标
          */
          quadraticCurveTo(crpx:number,cpy:number,x:number,y:number):void;
          /**创建三次方贝塞尔曲线路径。
           *  @param cp1x 第一个贝塞尔控制点的 x 坐标
           *  @param cp1y 第一个贝塞尔控制点的 y 坐标
           *  @param cp2x 第二个贝塞尔控制点的 x 坐标
           *  @param cp2y 第二个贝塞尔控制点的 y 坐标
           *  @param x 结束点的x坐标
           *  @param y 结束点的y坐标
          */
          bezierCurveTo(cp1x:number,cp1y:number,cp2x:number,cp2y:number,x:number,y:number):void;
          /**设置纯色填充。
           * @param color 设置为填充样式的颜色('rgb(255, 0, 0)'或'rgba(255, 0, 0, 0.6)'或'#ff0000'格式的颜色字符串)
          */
          setFillStyle(color:string):void;
          /**设置纯色描边
           * @param color 设置为填充样式的颜色('rgb(255, 0, 0)'或'rgba(255, 0, 0, 0.6)'或'#ff0000'格式的颜色字符串)
          */
          setStrokeStyle(color:string):void;
          /**设置阴影样式。
           *  @param offsetX 阴影相对于形状在水平方向的偏移
           *  @param offsetY 阴影相对于形状在竖直方向的偏移
           *  @param blur 阴影的模糊级别,数值越大越模糊(0~100)
           *  @param color 阴影的颜色('rgb(255, 0, 0)'或'rgba(255, 0, 0, 0.6)'或'#ff0000'格式的颜色字符串)
          */
          setShadow(offsetX:number,offsetY:number,blur:number,color:any):void;
          /**设置字体的字号。
           * @param fontSize 字体的字号
          */
          setFontSize(fontSize:number):void;
          /**设置线条的宽度。
           * @param lineWidth 线条的宽度
          */
          setLineWidth(lineWidth:number):void;
          /**设置线条的结束端点样式。
           * @param lineCap 线条的结束端点样式('butt'、'round'、'square')
          */
          setLineCap(lineCap:string):void;
          /**设置两条线相交时,所创建的拐角类型。
           * @param lineJoin 两条线相交时,所创建的拐角类型('bevel'、'round'、'miter')
          */
          setLineJoin(lineJoin:string):void;
          /**设置最大斜接长度,斜接长度指的是在两条线交汇处内角和外角之间的距离。 当setLineJoin为'miter'时才有效。超过最大倾斜长度的,连接处将以lineJoin为bevel来显示
           * @param miterLimit 最大斜接长度
          */
          setMiterLimit(miterLimit:number):void;
      }
      /**
       * 创建并返回绘图上下文context对象。
​         context只是一个记录方法调用的容器,用于生成记录绘制行为的actions数组。context跟<canvas/>不存在对应关系,一个context生成画布的绘制动作数组可以应用于多个<canvas/>。
       */
      export function createContext():context;

      export function drawCanvas(obj:{
          /**画布标识,传入<canvas/>的cavas-id */
          canvasId:string;
          /**绘图动作数组,由wx.createContext创建的context,调用getActions方法导出绘图动作数组。 */
          actions:[any];
      }):void;
      /**​ 收起键盘 */
      export function hideKeyboard():void;
      /** 停止当前页面下拉刷新*/
      export function stopPullDownRefresh():void;
      /**
       * 调用接口获取登录凭证(code)进而换取用户登录态信息,包括用户的唯一标识(openid) 及本次登录的 会话密钥(session_key)。用户数据的加解密通讯需要依赖会话密钥完成。
       */
      export function login(obj:{
          /**接口调用成功的回调函数 */
        success?:(res:{
            /**调用结果 */
            errMsg:string;
            /**用户允许登录后,回调内容会带上code(有效期五分钟),开发者需要将code发送到开发者服务器后台,使用code换取session_key api,将code换成openid和session_key */
            code:string;
        })=>void;
        /**接口调用失败的回调函数*/
        fail?:()=>void;
        /**接口调用结束的回调函数(调用成功、失败都会执行)*/
        complete?:()=>void;
     }):void;
     /**
      * 获取用户信息,需要先调用wx.login接口
      */
     export function getUserInfo(obj:{
         success:(res:{
             /**用户信息对象 */
             userInfo:any;
             /**原始数据,用于计算签名。 */
             rawData:string;
             /**使用rawData+sessionkey签名得到的哈希值,用于校验用户信息。 */
             signature:string;
             /**用sessionKey加密后做base64encode的数据 */
             encryptData:string;
         })=>void;
     }):void;
     /**
      * 发起微信支付
      */
     export function requestPayment(obj:{
         /**时间戳从1970年1月1日00:00:00至今的秒数,即当前的时间 */
         timeStamp:number;
         /**随机字符串,长度为32个字符以下。 */
         nonceStr:string;
         /**统一下单接口返回的prepay_id参数值,提交格式如:prepay_id=* */
         package:string;
         /**签名算法,暂支持MD5 */
         signType:string;
         /**签名,具体签名方案参见微信公众号支付帮助文档(https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_3&t=1474537654457); */
         paySign:string;
        /**接口调用成功的回调函数 */
        success?:(res:{})=>void;
         /**接口调用失败的回调函数*/
        fail?:()=>void;
        /**接口调用结束的回调函数(调用成功、失败都会执行)*/
        complete?:()=>void;
     }):void;
}
/**函数用来注册一个小程序。接受一个object参数,其指定小程序的生命周期函数等。 */
declare function App(obj:{
    /**生命周期函数--监听小程序初始化(当小程序初始化完成时,会触发onLaunch(全局只触发一次)) */
    onLaunch?:()=>void;
    /**生命周期函数--监听小程序显示(当小程序启动,或从后台进入前台显示,会触发onShow) */
    onShow?:()=>void;
    /**生命周期函数--监听小程序隐藏(	当小程序从前台进入后台,会触发onHide) */
    onHide?:()=>void;
}):void;
declare function Page(obj:{
    /**页面的初始数据 */
    data?:{};
    /**生命周期函数--监听页面加载 */
    onLoad?:()=>void;
    /**生命周期函数--监听页面渲染完成 */
    onReady?:()=>void;
    /**生命周期函数--监听页面显示 */
    onShow?:()=>void;
    /**生命周期函数--监听页面隐藏 */
    onHide?:()=>void;
    /**生命周期函数--监听页面卸载 */
    onUnload?:()=>void;
}):void;
/*全局的getApp()函数,可以获取到小程序实例 */
declare function getApp():{
    /**用户获取当前页面的实例。 */
    getCurrentPage:()=>void
}