xiansin 2 éve
commit
97f86cbc64
100 módosított fájl, 58487 hozzáadás és 0 törlés
  1. 2 0
      README.md
  2. 14 0
      mini/.editorconfig
  3. 201 0
      mini/.eslintrc.js
  4. 5 0
      mini/.gitignore
  5. 35 0
      mini/App.vue
  6. 10 0
      mini/api/index.js
  7. 55 0
      mini/api/user/index.js
  8. 30 0
      mini/components/CheckLogin/index.vue
  9. 144 0
      mini/components/Episode/index.vue
  10. 92 0
      mini/components/NavBar/index.vue
  11. 307 0
      mini/components/Recharge/index.vue
  12. 112 0
      mini/components/SwiperBox/index.vue
  13. 151 0
      mini/components/TabBar/index.vue
  14. 20 0
      mini/index.html
  15. 32 0
      mini/main.js
  16. 87 0
      mini/manifest.json
  17. 2602 0
      mini/package-lock.json
  18. 7 0
      mini/package.json
  19. 49 0
      mini/pages.json
  20. 38 0
      mini/pages/login.vue
  21. 44 0
      mini/project.config.json
  22. 7 0
      mini/project.private.config.json
  23. 13 0
      mini/setting.js
  24. 17 0
      mini/static/css/common.scss
  25. 266 0
      mini/static/css/flex.scss
  26. 3 0
      mini/static/css/iconfont.css
  27. 12 0
      mini/static/css/mixin.scss
  28. 172 0
      mini/static/css/store-buy.scss
  29. 8 0
      mini/static/css/variable.scss
  30. BIN
      mini/static/font/iconfont.eot
  31. 46 0
      mini/static/font/iconfont.svg
  32. BIN
      mini/static/font/iconfont.ttf
  33. BIN
      mini/static/font/iconfont.woff
  34. BIN
      mini/static/font/iconfont.woff2
  35. BIN
      mini/static/image/default-head-img.png
  36. BIN
      mini/static/image/default-movie.png
  37. BIN
      mini/static/image/gold-bag.png
  38. BIN
      mini/static/image/gold.png
  39. BIN
      mini/static/image/member-line-bg.png
  40. BIN
      mini/static/image/member-selected-bg.png
  41. BIN
      mini/static/image/my-page/contact.png
  42. BIN
      mini/static/image/my-page/order.png
  43. BIN
      mini/static/image/my-page/protocol.png
  44. BIN
      mini/static/image/my-page/recharge.png
  45. BIN
      mini/static/image/my-page/share.png
  46. BIN
      mini/static/image/my-recharge-bg.png
  47. BIN
      mini/static/image/playing.png
  48. BIN
      mini/static/image/tab/home-HL.png
  49. BIN
      mini/static/image/tab/home.png
  50. BIN
      mini/static/image/tab/my-HL.png
  51. BIN
      mini/static/image/tab/my.png
  52. BIN
      mini/static/image/tab/trace-HL.png
  53. BIN
      mini/static/image/tab/trace.png
  54. BIN
      mini/static/image/video.png
  55. 8 0
      mini/store/getters.js
  56. 17 0
      mini/store/index.js
  57. 31 0
      mini/store/modules/tab.js
  58. 38 0
      mini/store/modules/user.js
  59. 213 0
      mini/types-tips-test/miniprogram-api-typings/CHANGELOG.md
  60. 21 0
      mini/types-tips-test/miniprogram-api-typings/LICENSE
  61. 63 0
      mini/types-tips-test/miniprogram-api-typings/README-en.md
  62. 64 0
      mini/types-tips-test/miniprogram-api-typings/README.md
  63. 1 0
      mini/types-tips-test/miniprogram-api-typings/index.d.ts
  64. 2662 0
      mini/types-tips-test/miniprogram-api-typings/package-lock.json
  65. 45 0
      mini/types-tips-test/miniprogram-api-typings/package.json
  66. 1 0
      mini/types-tips-test/miniprogram-api-typings/types/index.d.ts
  67. 135 0
      mini/types-tips-test/miniprogram-api-typings/types/wx/index.d.ts
  68. 25888 0
      mini/types-tips-test/miniprogram-api-typings/types/wx/lib.wx.api.d.ts
  69. 270 0
      mini/types-tips-test/miniprogram-api-typings/types/wx/lib.wx.app.d.ts
  70. 68 0
      mini/types-tips-test/miniprogram-api-typings/types/wx/lib.wx.behavior.d.ts
  71. 924 0
      mini/types-tips-test/miniprogram-api-typings/types/wx/lib.wx.cloud.d.ts
  72. 675 0
      mini/types-tips-test/miniprogram-api-typings/types/wx/lib.wx.component.d.ts
  73. 1435 0
      mini/types-tips-test/miniprogram-api-typings/types/wx/lib.wx.event.d.ts
  74. 263 0
      mini/types-tips-test/miniprogram-api-typings/types/wx/lib.wx.page.d.ts
  75. 4 0
      mini/types-tips-test/miniprogram-api-typings/typings.json
  76. 207 0
      mini/types-tips-test/uni-app/app.d.ts
  77. 34 0
      mini/types-tips-test/uni-app/bytedance.d.ts
  78. 2988 0
      mini/types-tips-test/uni-app/cloud.d.ts
  79. 7 0
      mini/types-tips-test/uni-app/common.d.ts
  80. 7 0
      mini/types-tips-test/uni-app/index.d.ts
  81. 66 0
      mini/types-tips-test/uni-app/kuaishou.d.ts
  82. 244 0
      mini/types-tips-test/uni-app/page.d.ts
  83. 16137 0
      mini/types-tips-test/uni-app/uni.d.ts
  84. 13 0
      mini/types-tips-test/uni-app/vue.d.ts
  85. 39 0
      mini/types-tips-test/vue/types/index.d.ts
  86. 207 0
      mini/types-tips-test/vue/types/options.d.ts
  87. 8 0
      mini/types-tips-test/vue/types/plugin.d.ts
  88. 48 0
      mini/types-tips-test/vue/types/umd.d.ts
  89. 76 0
      mini/types-tips-test/vue/types/vnode.d.ts
  90. 132 0
      mini/types-tips-test/vue/types/vue.d.ts
  91. 7 0
      mini/types-tips-test/vuex/types/README.md
  92. 69 0
      mini/types-tips-test/vuex/types/helpers.d.ts
  93. 150 0
      mini/types-tips-test/vuex/types/index.d.ts
  94. 19 0
      mini/types-tips-test/vuex/types/vue.d.ts
  95. 79 0
      mini/uni.scss
  96. 21 0
      mini/uni_modules/uview-ui/LICENSE
  97. 104 0
      mini/uni_modules/uview-ui/README.md
  98. 293 0
      mini/uni_modules/uview-ui/changelog.md
  99. 78 0
      mini/uni_modules/uview-ui/components/u--form/u--form.vue
  100. 47 0
      mini/uni_modules/uview-ui/components/u--image/u--image.vue

+ 2 - 0
README.md

xqd
@@ -0,0 +1,2 @@
+# 极创社小程序
+

+ 14 - 0
mini/.editorconfig

xqd
@@ -0,0 +1,14 @@
+# https://editorconfig.org
+root = true
+
+[*]
+charset = utf-8
+indent_style = space
+indent_size = 2
+end_of_line = lf
+insert_final_newline = true
+trim_trailing_whitespace = true
+
+[*.md]
+insert_final_newline = false
+trim_trailing_whitespace = false

+ 201 - 0
mini/.eslintrc.js

xqd
@@ -0,0 +1,201 @@
+module.exports = {
+  root: true,
+  "env": {
+    browser: true,
+    node: true,
+    es6: true,
+  },
+  extends: ['plugin:vue/recommended', 'eslint:recommended'],
+  parserOptions: {
+    parser: 'babel-eslint',
+    sourceType: 'module'
+  },
+  globals: {
+    uni: true,
+    wx: true,
+    tt: true,
+    ks: true
+  },
+  rules: {
+    "vue/max-attributes-per-line": [2, {
+      "singleline": 10,
+      "multiline": {
+        "max": 1,
+        "allowFirstLine": false
+      }
+    }],
+    "vue/singleline-html-element-content-newline": "off",
+    "vue/multiline-html-element-content-newline":"off",
+    "vue/name-property-casing": ["error", "PascalCase"],
+    "vue/no-v-html": "off",
+    'accessor-pairs': 2,
+    'arrow-spacing': [2, {
+      'before': true,
+      'after': true
+    }],
+    'block-spacing': [2, 'always'],
+    'brace-style': [2, '1tbs', {
+      'allowSingleLine': true
+    }],
+    'camelcase': [0, {
+      'properties': 'always'
+    }],
+    'comma-dangle': [2, 'never'],
+    'comma-spacing': [2, {
+      'before': false,
+      'after': true
+    }],
+    'comma-style': [2, 'last'],
+    'constructor-super': 2,
+    'curly': [2, 'multi-line'],
+    'dot-location': [2, 'property'],
+    'eol-last': 2,
+    'eqeqeq': ["error", "always", {"null": "ignore"}],
+    'generator-star-spacing': [2, {
+      'before': true,
+      'after': true
+    }],
+    'handle-callback-err': [2, '^(err|error)$'],
+    'indent': [2, 2, {
+      'SwitchCase': 1
+    }],
+    'jsx-quotes': [2, 'prefer-single'],
+    'key-spacing': [2, {
+      'beforeColon': false,
+      'afterColon': true
+    }],
+    'keyword-spacing': [2, {
+      'before': true,
+      'after': true
+    }],
+    'new-cap': [2, {
+      'newIsCap': true,
+      'capIsNew': false
+    }],
+    'new-parens': 2,
+    'no-array-constructor': 2,
+    'no-caller': 2,
+    'no-console': 'off',
+    'no-class-assign': 2,
+    'no-cond-assign': 2,
+    'no-const-assign': 2,
+    'no-control-regex': 0,
+    'no-delete-var': 2,
+    'no-dupe-args': 2,
+    'no-dupe-class-members': 2,
+    'no-dupe-keys': 2,
+    'no-duplicate-case': 2,
+    'no-empty-character-class': 2,
+    'no-empty-pattern': 2,
+    'no-eval': 2,
+    'no-ex-assign': 2,
+    'no-extend-native': 2,
+    'no-extra-bind': 2,
+    'no-extra-boolean-cast': 2,
+    'no-extra-parens': [2, 'functions'],
+    'no-fallthrough': 2,
+    'no-floating-decimal': 2,
+    'no-func-assign': 2,
+    'no-implied-eval': 2,
+    'no-inner-declarations': [2, 'functions'],
+    'no-invalid-regexp': 2,
+    'no-irregular-whitespace': 2,
+    'no-iterator': 2,
+    'no-label-var': 2,
+    'no-labels': [2, {
+      'allowLoop': false,
+      'allowSwitch': false
+    }],
+    'no-lone-blocks': 2,
+    'no-mixed-spaces-and-tabs': 2,
+    'no-multi-spaces': 2,
+    'no-multi-str': 2,
+    'no-multiple-empty-lines': [2, {
+      'max': 1
+    }],
+    'no-native-reassign': 2,
+    'no-negated-in-lhs': 2,
+    'no-new-object': 2,
+    'no-new-require': 2,
+    'no-new-symbol': 2,
+    'no-new-wrappers': 2,
+    'no-obj-calls': 2,
+    'no-octal': 2,
+    'no-octal-escape': 2,
+    'no-path-concat': 2,
+    'no-proto': 2,
+    'no-redeclare': 2,
+    'no-regex-spaces': 2,
+    'no-return-assign': [2, 'except-parens'],
+    'no-self-assign': 2,
+    'no-self-compare': 2,
+    'no-sequences': 2,
+    'no-shadow-restricted-names': 2,
+    'no-spaced-func': 2,
+    'no-sparse-arrays': 2,
+    'no-this-before-super': 2,
+    'no-throw-literal': 2,
+    'no-trailing-spaces': 2,
+    'no-undef': 2,
+    'no-undef-init': 2,
+    'no-unexpected-multiline': 2,
+    'no-unmodified-loop-condition': 2,
+    'no-unneeded-ternary': [2, {
+      'defaultAssignment': false
+    }],
+    'no-unreachable': 2,
+    'no-unsafe-finally': 2,
+    'no-unused-vars': [2, {
+      'vars': 'all',
+      'args': 'none'
+    }],
+    'no-useless-call': 2,
+    'no-useless-computed-key': 2,
+    'no-useless-constructor': 2,
+    'no-useless-escape': 0,
+    'no-whitespace-before-property': 2,
+    'no-with': 2,
+    'one-var': [2, {
+      'initialized': 'never'
+    }],
+    'operator-linebreak': [2, 'after', {
+      'overrides': {
+        '?': 'before',
+        ':': 'before'
+      }
+    }],
+    'padded-blocks': [2, 'never'],
+    'quotes': [2, 'single', {
+      'avoidEscape': true,
+      'allowTemplateLiterals': true
+    }],
+    'semi': [2, 'never'],
+    'semi-spacing': [2, {
+      'before': false,
+      'after': true
+    }],
+    'space-before-blocks': [2, 'always'],
+    'space-before-function-paren': [2, 'never'],
+    'space-in-parens': [2, 'never'],
+    'space-infix-ops': 2,
+    'space-unary-ops': [2, {
+      'words': true,
+      'nonwords': false
+    }],
+    'spaced-comment': [2, 'always', {
+      'markers': ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ',']
+    }],
+    'template-curly-spacing': [2, 'never'],
+    'use-isnan': 2,
+    'valid-typeof': 2,
+    'wrap-iife': [2, 'any'],
+    'yield-star-spacing': [2, 'both'],
+    'yoda': [2, 'never'],
+    'prefer-const': 2,
+    'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
+    'object-curly-spacing': [2, 'always', {
+      objectsInObjects: false
+    }],
+    'array-bracket-spacing': [2, 'never']
+  }
+}

+ 5 - 0
mini/.gitignore

xqd
@@ -0,0 +1,5 @@
+/node_modules
+/unpackage
+/.hbuilderx
+/.idea
+

+ 35 - 0
mini/App.vue

xqd
@@ -0,0 +1,35 @@
+<script>
+
+export default {
+  globalData: {
+    isLogin: false
+  },
+  async onLaunch(options) {
+    console.log('App Launch')
+    const path = options.path ? '/' + options.path : '/pages/index/index'
+    if (this.$api.user.isLogin()) {
+      await this.$api.user.info().then(res => {
+        this.$store.dispatch('user/info', res.data)
+      })
+    } else {
+      uni.reLaunch({
+        url: '/pages/login?path=' + path
+      })
+    }
+  },
+  onShow() {
+    console.log('App Show')
+  },
+  onHide() {
+    console.log('App Hide')
+  }
+}
+</script>
+
+<style lang="scss">
+	/*每个页面公共css */
+  @import "@/uni_modules/uview-ui/index.scss";
+  @import '@/static/css/flex.scss';
+  @import '@/static/css/common.scss';
+  @import '@/static/css/iconfont.css';
+</style>

+ 10 - 0
mini/api/index.js

xqd
@@ -0,0 +1,10 @@
+import user from './user/index'
+const api = {
+  user,
+  setting,
+  episode,
+  sign,
+  pay
+}
+
+export default api

+ 55 - 0
mini/api/user/index.js

xqd
@@ -0,0 +1,55 @@
+/**
+ * Created by JianJia.Zhou<jianjia.zhou> on 2022/8/14.
+ */
+import { getToken } from '../../utils/auth'
+
+const request = uni.$u.http
+
+export async function login() {
+  console.log('-->data', 1)
+  return new Promise(resolve => {
+    uni.showLoading({
+      title: '数据加载中...',
+      mask: true
+    })
+    uni.login({
+      provider: uni.$u.platform,
+      success: loginRes => {
+        console.log('-->data', loginRes)
+        uni.hideLoading()
+        const url = '/auth/kuaishou'
+
+        return request.post(
+          url,
+          { code: loginRes.code, anonymousCode: loginRes.anonymousCode }
+        ).then(res => {
+          resolve(res)
+        })
+      }
+    })
+  })
+}
+
+export function update(data) {
+  return request.post(
+    'user/update',
+    data
+  )
+}
+
+export async function info() {
+  return request.get(
+    'user/info'
+  )
+}
+
+export function isLogin() {
+  return !!getToken()
+}
+
+export default {
+  login,
+  update,
+  info,
+  isLogin
+}

+ 30 - 0
mini/components/CheckLogin/index.vue

xqd
@@ -0,0 +1,30 @@
+<template>
+  <view class="check-login">
+    <u-loading-page
+      :loading="!isLogin"
+      :bg-color="$colors.bgColor"
+      :color="$colors.primaryColor"
+      :loading-color="$colors.primaryColor"
+    />
+  </view>
+</template>
+
+<script>
+export default {
+  name: 'CheckLogin',
+  data() {
+    return {}
+  },
+  computed: {
+    isLogin() {
+      return this.$api.user.isLogin()
+    }
+  },
+  methods: {}
+}
+</script>
+
+<style lang="scss" scoped>
+    .check-login {
+    }
+</style>

+ 144 - 0
mini/components/Episode/index.vue

xqd
@@ -0,0 +1,144 @@
+<template>
+  <view class="episode" :style="[customStyle]" @click="handlePlay">
+    <view class="cover-image" :style="[imageStyle]">
+      <view v-if="rank" class="rank" :class="{first: rank === 1}">
+        <text>{{ rank }}</text>
+      </view>
+      <image :src="episode.cover_img" mode="aspectFill" :style="[imageStyle]" />
+      <view v-if="recent" class="special">最近播放 </view>
+      <view v-if="guess" class="special guess">猜你喜欢 </view>
+    </view>
+    <u-text
+      :text="episode.name"
+      :lines="1"
+      size="32rpx"
+      margin="20rpx 0 10rpx"
+      :color="$colors.defaultColor"
+    />
+    <view class="status-box dir-left-nowrap">
+      <u-text
+        :text="episode.status_text"
+        :lines="1"
+        size="24rpx"
+        :custom-style="{flex: 'unset'}"
+        :color="$colors.primaryColor"
+      />
+      <u-text
+        :text="`共${episode.total}集`"
+        :lines="1"
+        size="24rpx"
+        margin="0 0 0 10rpx"
+        :color="$colors.infoColor"
+      />
+    </view>
+  </view></template>
+
+<script>
+import UText from '../../uni_modules/uview-ui/components/u--text/u--text'
+export default {
+  name: 'Episode',
+  components: { UText },
+  props: {
+    episode: {
+      type: Object,
+      required: true
+    },
+    customStyle: {
+      type: Object,
+      default() {
+        return {}
+      }
+    },
+    imageStyle: {
+      type: Object,
+      default() {
+        return {}
+      }
+    },
+    recent: {
+      type: Boolean,
+      default: false
+    },
+    guess: {
+      type: Boolean,
+      default: false
+    },
+    rank: {
+      type: Number,
+      default: 0
+    },
+    redirect: {
+      type: Boolean,
+      default: true
+    }
+  },
+  data() {
+    return {}
+  },
+  computed: {},
+  methods: {
+    handlePlay() {
+      if (!this.redirect) return
+      this.$u.route({
+        url: '/pages/episode/play',
+        params: {
+          id: this.episode.id
+        }
+      })
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+    .episode {
+      width: calc((#{750rpx} - #{80rpx}) / 3);
+      margin-bottom: 30rpx;
+      .cover-image{
+        position: relative;
+        overflow: hidden;
+        height: 330rpx;
+        image{
+          width: 100%;
+          height: inherit;
+        }
+        .special{
+          background: rgba(48, 98, 97, 0.65);
+          text-align: center;
+          color: #fff;
+          padding: 10rpx 0;
+          position: absolute;
+          bottom: 0;
+          width: 100%;
+          font-size: 26rpx;
+          &.guess{
+            background: rgba(124, 78, 112, 0.65);
+          }
+        }
+        .rank{
+          position: absolute;
+          top: -35rpx;
+          left: -35rpx;
+          width: 70rpx;
+          height: 70rpx;
+          transform: rotate(45deg);
+          background: rgba(251, 54, 81, 0.6);
+          color: #fff;
+          font-size: 26rpx;
+          z-index: 99;
+          &.first{
+            background: #FE3552;
+          }
+          text{
+            position: absolute;
+            right: 5px;
+            top: 10px;
+            transform: rotate(-45deg);
+          }
+        }
+      }
+      .status-box{
+
+      }
+    }
+</style>

+ 92 - 0
mini/components/NavBar/index.vue

xqd
@@ -0,0 +1,92 @@
+<template>
+  <view class="nav-bar main-center cross-center">
+    <view
+      v-for="(item,index) in navItem"
+      :key="index"
+      class="item dir-top-wrap cross-center"
+      @click="handleRedirect(item)"
+    >
+      <view
+        class="icon"
+        :style="{
+          backgroundImage: `url(${item.icon})`
+        }"
+      />
+      <text>{{ item.name }}</text>
+    </view>
+    <!--充值-->
+    <recharge :show.sync="recharge.show" />
+  </view>
+</template>
+
+<script>
+
+import Recharge from '../Recharge/index'
+export default {
+  name: 'NavBar',
+  components: { Recharge },
+  data() {
+    return {
+      types: {
+        1: { href: '/pages/index/rank' },
+        2: { href: '/pages/index/news' },
+        3: { href: '/pages/member/index' },
+        4: { href: '/pages/sign/index' },
+        5: { type: 'recharge' }
+      },
+      navItem: [
+        { icon: '', name: '排行榜', href: '/pages/index/rank' },
+        { icon: '', name: '最新', href: '/pages/index/news' },
+        { icon: '', name: '会员', href: '/pages/member/index' },
+        { icon: '', name: '签到', href: '/pages/sign/index' },
+        { icon: '', name: '充值', type: 'recharge' }
+      ],
+      recharge: { show: false }
+    }
+  },
+  computed: {},
+  created() {
+    this.getData()
+  },
+  methods: {
+    handleRedirect(item) {
+      if (item.type === 'recharge') {
+        this.recharge.show = true
+      } else if (item.href) {
+        this.$u.route(item.href)
+      }
+    },
+    getData() {
+      /**
+       * type 1 -排行榜 2 -最新  3 -会员 4 -签到 5 -充值
+       */
+      this.$api.setting.navBar().then(res => {
+        const data = res.data
+        data.forEach(obj => {
+          Object.assign(obj, this.types[obj.type])
+        })
+        this.navItem = data
+      })
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+  .nav-bar {
+    .item{
+      flex: 1;
+      font-size: 32rpx;
+      .icon{
+        width: 100rpx;
+        height: 100rpx;
+        background-repeat: no-repeat;
+        background-size: 100%;
+        background-position: center;
+      }
+      text{
+        color: #fff;
+      }
+    }
+  }
+</style>

+ 307 - 0
mini/components/Recharge/index.vue

xqd
@@ -0,0 +1,307 @@
+<template>
+  <view class="recharge">
+    <u-popup
+      :show="show"
+      :mode="mode"
+      round="20rpx"
+      :close-on-click-overlay="false"
+      @close="close"
+    >
+      <view class="container" :class="{bottom: mode === 'bottom'}">
+        <template v-if="type === 'play'">
+          <view class="play-container">
+            <view class="header main-between cross-center">
+              <text>感谢您的支持,本集解锁后可继续观看</text>
+              <u-icon name="arrow-down" size="28rpx" @click="close" />
+            </view>
+            <view class="episode main-between cross-center">
+              <view class="detail">
+                <view class="name">{{ episode.name }} 第{{ list.sort }}集</view>
+                <view class="sale-box main-left cross-center">
+                  <view class="sale-price cross-center">专享价{{ list.sale_price }}金币</view>
+                  <view class="origin-price cross-center">原价{{ list.origin_price }}金币</view>
+                </view>
+              </view>
+              <view class="buy-num">{{ buyNum }}人购买</view>
+            </view>
+          </view>
+          <view class="static-text main-between cross-center">
+            <text>充值金币</text>
+            <view class="overage">账户余额:<text>{{ userInfo.info.integral }}金币</text></view>
+          </view>
+        </template>
+        <template v-else>
+          <view class="static-text main-between cross-center">
+            <text>充值金币</text>
+            <u-icon name="close-circle" size="52rpx" color="#BEBDBB" @click="close" />
+          </view>
+          <view class="overage">账户余额:<text>{{ userInfo.info.integral }}金币</text></view>
+        </template>
+
+        <view class="recharge-group dir-left-wrap">
+          <view
+            v-for="(combo,index) in combos"
+            :key="index"
+            class="recharge-item dir-top-wrap main-center cross-center"
+            :class="{active: rechargeActive === index}"
+            @click="rechargeActive = index"
+          >
+            <text class="price">{{ combo.price }}元</text>
+            <text class="gold">{{ combo.gold }}+{{ combo.gift }}金币</text>
+            <text class="gift">多送{{ combo.gift }}金币</text>
+          </view>
+        </view>
+
+        <view class="btn" @click="handleRecharge">充值</view>
+      </view>
+    </u-popup>
+  </view>
+</template>
+
+<script>
+import { mapState } from 'vuex'
+export default {
+  name: 'Recharge',
+  props: {
+    show: {
+      type: Boolean,
+      default: false
+    },
+    mode: {
+      type: String,
+      default: 'center'
+    },
+    type: {
+      type: String,
+      default: 'normal'
+    },
+    episode: {
+      type: Object,
+      default() {
+        return {}
+      }
+    },
+    list: {
+      type: Object,
+      default() {
+        return {}
+      }
+    }
+  },
+  data() {
+    return {
+      modal: {
+        show: false
+      },
+      combos: [],
+      rechargeActive: 0,
+      buyNum: 0
+    }
+  },
+  computed: {
+    ...mapState({
+      userInfo: seate => seate.user.info
+    })
+  },
+  watch: {
+    show(val) {
+      this.modal.show = val
+    }
+  },
+  created() {
+    this.getCombo()
+    this.getBuyNum()
+  },
+  methods: {
+    getCombo() {
+      this.$api.setting.rechargeCombo().then(res => {
+        this.combos = res.data
+      })
+    },
+    close() {
+      this.$emit('update:show', false)
+    },
+    getBuyNum() {
+      if (this.type === 'play') {
+        this.$api.episode.listBuyNum(this.list.id).then(res => {
+          this.buyNum = res.data
+        })
+      }
+    },
+    handleRecharge() {
+      const item = this.combos[this.rechargeActive]
+      this.$loading('请稍后...')
+      this.$api.user.recharge.create({ id: item.id }).then(res => {
+        console.log('-->data', res)
+        // #ifdef MP-TOUTIAO
+        tt.pay({
+          service: 5,
+          orderInfo: {
+            order_id: res.data.order_id,
+            order_token: res.data.order_token
+          },
+          success: payRes => {
+            if (payRes.code === 0) {
+              this.$loading('支付结果查询中...')
+              this.query()
+            } else {
+              this.$u.toast('支付失败')
+            }
+          },
+          fail: err => {
+            console.log('-->data', err)
+            // 调起收银台失败处理逻辑
+          }
+        })
+        // #endif
+        // #ifdef MP-KUAISHOU
+        ks.pay({
+          serviceId: '1',
+          orderInfo: {
+            order_no: res.data.order_id,
+            order_info_token: res.data.order_token
+          },
+          success: payRes => {
+            this.$loading('支付结果查询中...')
+            this.query()
+          },
+          fail: err => {
+            console.log('-->data', err)
+            // 调起收银台失败处理逻辑
+          }
+        })
+        // #endif
+        this.$hideLoading()
+      }).catch(() => {
+        this.$hideLoading()
+      })
+    },
+    query() {
+      if (this.interval) return
+      this.interval = setInterval(() => {
+        this.$api.pay.query(this.payId).then(res => {
+          this.$hideLoading()
+          this.$u.toast('支付成功')
+          clearInterval(this.interval)
+          // 获取用户信息
+          this.$api.user.info().then(res => {
+            this.$store.dispatch('user/info', res.data)
+          })
+        }).catch(err => {
+          this.$hideLoading()
+        })
+      }, 1000)
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+    .recharge {
+      font-size: 28rpx;
+      .container{
+        width: 700rpx;
+        border: 2rpx solid;
+        padding: 30rpx;
+        &.bottom{
+          width: 750rpx;
+          border: unset;
+        }
+        .static-text{
+          font-size: 36rpx;
+          font-weight: 600;
+          margin-bottom: 40rpx;
+          .overage{
+            font-size: 28rpx;
+            color: $info-color;
+          }
+        }
+        .overage{
+          color: $info-color;
+          text{
+            color: #FB3651 ;
+          }
+        }
+        // 播放充值
+        .play-container{
+          .episode{
+            margin: 40rpx 0 ;
+            background: linear-gradient(270deg, #6EEBE8, #FF74B9);
+            border-radius: 20rpx;
+            height: 180rpx;
+            padding: 20rpx;
+            .detail{
+              .name{
+                color: $default-color;
+                font-weight: 600;
+              }
+              .sale-box{
+                margin-top: 40rpx;
+                .sale-price{
+                  color: $primary-color;
+                  font-size: 28rpx;
+                }
+                .origin-price{
+                  color: $default-color;
+                  font-size: 24rpx;
+                  margin-left: 20rpx;
+                  text-decoration: line-through;
+                  opacity: .6;
+                  margin-top: 6rpx;
+                }
+              }
+            }
+            .buy-num{
+              color: $default-color;
+              min-width: 80px;
+              text-align: center;
+            }
+          }
+        }
+        // 充值套餐
+        .recharge-group{
+          margin-top: 30rpx;
+          .recharge-item{
+            border: 4rpx solid $primary-color;
+            width: calc(#{600rpx} / 2);
+            margin-right: 20rpx;
+            margin-bottom: 20rpx;
+            border-radius: 10rpx;
+            padding: 40rpx 20rpx;
+            transition: .3s;
+            &:nth-child(2n){
+              margin-right: 0;
+            }
+            &.active{
+              background: #1b1e32;
+              border: 4rpx solid #1b1e32;
+              .price{
+                color: $default-color;
+              }
+            }
+            .price{
+              margin-bottom: 40rpx;
+              font-size: 38rpx;
+            }
+            .gold{
+              color: $primary-color;
+              margin-bottom: 10rpx;
+            }
+            .gift{
+              color: $info-color;
+            }
+          }
+        }
+        .btn{
+          background: linear-gradient(270deg, #6EEBE8 0%, #FF74B9 100%);
+          width: 90%;
+          margin: 40rpx auto;
+          padding: 20rpx 0;
+          text-align: center;
+          border-radius: 40rpx;
+          color: $default-color;
+          letter-spacing: .1rem;
+        }
+      }
+    }
+</style>

+ 112 - 0
mini/components/SwiperBox/index.vue

xqd
@@ -0,0 +1,112 @@
+<template>
+  <view
+    class="swiper-box "
+    :class="{
+      loading:loading,
+      'main-center':loading,
+      'cross-center': loading
+    }"
+    :style="{height: height}"
+  >
+    <u-loading-icon :show="loading" vertical />
+    <u-swiper
+      v-if="list.length"
+      :list="list"
+      :height="height"
+      :radius="radius"
+      style="width: 100%"
+      :indicator="true"
+      :show-title="true"
+      indicator-mode="dot"
+      :indicator-style="{bottom: '24rpx'}"
+      @click="handleClick"
+      @change="handleChange"
+    >
+      <view
+        slot="indicator"
+        class="indicator"
+      >
+        <view
+          v-for="(item, index) in list"
+          :key="index"
+          class="indicator__dot"
+          :class="[index === currentNum && 'indicator__dot--active']"
+        />
+      </view>
+    </u-swiper>
+  </view>
+</template>
+
+<script>
+
+export default {
+  name: 'SwiperBox',
+  props: {
+    height: {
+      type: [Number, String],
+      default: '330rpx'
+    },
+    radius: {
+      type: [Number, String],
+      default: '10rpx'
+    }
+  },
+  data() {
+    return {
+      loading: true,
+      list: [],
+      currentNum: 0
+    }
+  },
+  computed: {
+  },
+  created() {
+    this.getSwiper()
+  },
+  methods: {
+    handleClick(index) {
+      const item = this.list[index]
+      console.log('-->data', item)
+    },
+    handleChange(e) {
+      this.currentNum = e.current
+    },
+    getSwiper() {
+      this.$api.setting.banner().then(res => {
+        this.loading = false
+        res.data.forEach(obj => {
+          this.list.push(obj.image)
+        })
+      })
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+  .swiper-box{
+    margin: 20rpx 0;
+    border-radius: 8rpx;
+    &.loading{
+      background-color: #1B203C;
+    }
+    .indicator {
+      display: flex;
+      flex-direction: row;
+      justify-content: center;
+
+      &__dot {
+        height: 20rpx;
+        width: 20rpx;
+        border-radius: 50%;
+        background-color: rgba(255, 255, 255, 0.35);
+        margin: 0 10px;
+        transition: background-color 0.3s;
+
+        &--active {
+          background-color: #6EEBE8;
+        }
+      }
+    }
+  }
+</style>

+ 151 - 0
mini/components/TabBar/index.vue

xqd
@@ -0,0 +1,151 @@
+<template>
+  <view class="tab-bar">
+    <view class="content main-between cross-center">
+      <view
+        v-for="(item,index) in list"
+        :key="index"
+        class="tab-item dir-top-wrap cross-center main-center"
+        :class="{active: active === index}"
+        @click="handleSwitch(index)"
+      >
+        <view class="icon">
+          <image :src="active === index ? (item.selected_icon ? item.selected_icon : item.selectedIconPath) : (item.icon ? item.icon : item.iconPath)" mode="aspectFit" />
+        </view>
+        <text>{{ item.text }}</text>
+      </view>
+    </view>
+  </view>
+</template>
+
+<script>
+import { mapState } from 'vuex'
+
+export default {
+  name: 'TabBar',
+  data() {
+    return {
+      color: '#8a8a8a',
+      selectedColor: '#6EEBE8',
+      types: {
+        1: {
+          'pagePath': '/pages/index/index',
+          'iconPath': '/static/image/tab/home.png',
+          'selectedIconPath': '/static/image/tab/home-HL.png'
+        },
+        2: {
+          'pagePath': '/pages/trace/index',
+          'iconPath': '/static/image/tab/trace.png',
+          'selectedIconPath': '/static/image/tab/trace-HL.png'
+        },
+        3: {
+          'pagePath': '/pages/my/index',
+          'iconPath': '/static/image/tab/my.png',
+          'selectedIconPath': '/static/image/tab/my-HL.png'
+        }
+      },
+      list: [
+        {
+          'pagePath': '/pages/index/index',
+          'iconPath': '/static/image/tab/home.png',
+          'selectedIconPath': '/static/image/tab/home-HL.png',
+          'text': '首页'
+        },
+        {
+          'pagePath': '/pages/trace/index',
+          'iconPath': '/static/image/tab/trace.png',
+          'selectedIconPath': '/static/image/tab/trace-HL.png',
+          'text': '追剧'
+        },
+        {
+          'pagePath': '/pages/my/index',
+          'iconPath': '/static/image/tab/my.png',
+          'selectedIconPath': '/static/image/tab/my-HL.png',
+          'text': '我的'
+        }
+      ]
+    }
+  },
+  computed: {
+    ...mapState({
+      active: seate => seate.tab.index
+    })
+  },
+  created() {
+    this.calc()
+    uni.hideTabBar()
+    this.getData()
+  },
+  methods: {
+    handleSwitch(index) {
+      if (index === this.active) {
+        return
+      }
+      this.$store.dispatch('tab/index', index)
+      const item = this.list[index]
+      uni.switchTab({
+        url: item.pagePath
+      })
+    },
+    calc() {
+      let active = 1
+      const page = uni.$u.page().replace('//', '/')
+      this.list.forEach((obj, index) => {
+        if (obj.pagePath === page) {
+          active = index
+        }
+      })
+      if (active !== this.active) {
+        this.$store.dispatch('tab/index', active)
+      }
+    },
+    getData() {
+      this.$api.setting.tabBar().then(res => {
+        const data = res.data
+        data.forEach(obj => {
+          Object.assign(obj, this.types[obj.type])
+        })
+
+        console.log('-->data', data)
+
+        this.list = data
+      })
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+  .tab-bar{
+    position: fixed;
+    bottom: 0;
+    left: 0;
+    width: 100%;
+    .content{
+      background: $bg-color;
+      position: absolute;
+      bottom: 0;
+      width: 100%;
+      height: 120rpx;
+      background-size: 110% 100%;
+
+      .tab-item{
+        flex: 1;
+        color: #8a8a8a;
+        transition: .3s;
+        font-size: 24rpx;
+        position: relative;
+        &.active{
+          color: #6EEBE8;
+        }
+        .icon{
+          width: 42rpx;
+          height: 42rpx;
+          image{
+            height: 100%;
+            width: 100%;
+          }
+        }
+      }
+    }
+  }
+</style>

+ 20 - 0
mini/index.html

xqd
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <script>
+      var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
+        CSS.supports('top: constant(a)'))
+      document.write(
+        '<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
+        (coverSupport ? ', viewport-fit=cover' : '') + '" />')
+    </script>
+    <title></title>
+    <!--preload-links-->
+    <!--app-context-->
+  </head>
+  <body>
+    <div id="app"><!--app-html--></div>
+    <script type="module" src="/main.js"></script>
+  </body>
+</html>

+ 32 - 0
mini/main.js

xqd
@@ -0,0 +1,32 @@
+import Vue from 'vue'
+import App from './App'
+import uView from '@/uni_modules/uview-ui'
+
+// vuex store
+import store from './store'
+import mixin from './utils/mixin'
+
+Vue.prototype.$store = store
+
+Vue.config.productionTip = false
+App.mpType = 'app'
+
+// #ifdef MP
+// 引入uView对小程序分享的mixin封装
+const mpShare = require('@/uni_modules/uview-ui/libs/mixin/mpShare.js')
+Vue.mixin(mpShare)
+// #endif
+
+// uView
+Vue.use(uView)
+
+Vue.mixin(mixin)
+
+const app = new Vue({
+  store,
+  ...App
+})
+
+require('utils/request/index')(app)
+
+app.$mount()

+ 87 - 0
mini/manifest.json

xqd
@@ -0,0 +1,87 @@
+{
+    "name" : "user",
+    "appid" : "__UNI__B2F00A6",
+    "description" : "",
+    "versionName" : "1.0.0",
+    "versionCode" : "100",
+    "transformPx" : false,
+    /* 5+App特有相关 */
+    "app-plus" : {
+        "usingComponents" : true,
+        "nvueStyleCompiler" : "uni-app",
+        "compilerVersion" : 3,
+        "splashscreen" : {
+            "alwaysShowBeforeRender" : true,
+            "waiting" : true,
+            "autoclose" : true,
+            "delay" : 0
+        },
+        /* 模块配置 */
+        "modules" : {},
+        /* 应用发布信息 */
+        "distribute" : {
+            /* android打包配置 */
+            "android" : {
+                "permissions" : [
+                    "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
+                    "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
+                    "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.CAMERA\"/>",
+                    "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
+                    "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
+                    "<uses-feature android:name=\"android.hardware.camera\"/>",
+                    "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
+                ]
+            },
+            /* ios打包配置 */
+            "ios" : {},
+            /* SDK配置 */
+            "sdkConfigs" : {}
+        }
+    },
+    /* 快应用特有相关 */
+    "quickapp" : {},
+    /* 小程序特有相关 */
+    "mp-weixin" : {
+        "appid" : "wx4d0105fabd19dfe2",
+        "setting" : {
+            "urlCheck" : false,
+            "minified" : true,
+            "postcss" : false,
+            "es6" : false
+        },
+        "usingComponents" : true,
+        "permission" : {
+            "scope.userLocation" : {
+                "desc" : "你的位置信息将用于小程序定位"
+            }
+        },
+        "uniStatistics" : {
+            "enable" : false
+        }
+    },
+    "mp-alipay" : {
+        "usingComponents" : true
+    },
+    "mp-baidu" : {
+        "usingComponents" : true
+    },
+    "mp-toutiao" : {
+        "usingComponents" : true,
+        "appid" : "tt5b312d8cc40f46b701"
+    },
+    "uniStatistics" : {
+        "enable" : false
+    },
+    "vueVersion" : "2",
+    "mp-kuaishou" : {
+        "appid" : "ks658369973403037900"
+    }
+}

+ 2602 - 0
mini/package-lock.json

xqd
@@ -0,0 +1,2602 @@
+{
+  "name": "mini",
+  "lockfileVersion": 2,
+  "requires": true,
+  "packages": {
+    "": {
+      "devDependencies": {
+        "babel-eslint": "10.1.0",
+        "eslint": "6.7.2",
+        "eslint-plugin-vue": "6.2.2"
+      }
+    },
+    "node_modules/@babel/code-frame": {
+      "version": "7.16.7",
+      "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.16.7.tgz",
+      "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/highlight": "^7.16.7"
+      }
+    },
+    "node_modules/@babel/generator": {
+      "version": "7.17.7",
+      "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.17.7.tgz",
+      "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.17.0",
+        "jsesc": "^2.5.1",
+        "source-map": "^0.5.0"
+      }
+    },
+    "node_modules/@babel/helper-environment-visitor": {
+      "version": "7.16.7",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz",
+      "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.16.7"
+      }
+    },
+    "node_modules/@babel/helper-function-name": {
+      "version": "7.16.7",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz",
+      "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-get-function-arity": "^7.16.7",
+        "@babel/template": "^7.16.7",
+        "@babel/types": "^7.16.7"
+      }
+    },
+    "node_modules/@babel/helper-get-function-arity": {
+      "version": "7.16.7",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz",
+      "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.16.7"
+      }
+    },
+    "node_modules/@babel/helper-hoist-variables": {
+      "version": "7.16.7",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz",
+      "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.16.7"
+      }
+    },
+    "node_modules/@babel/helper-split-export-declaration": {
+      "version": "7.16.7",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz",
+      "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.16.7"
+      }
+    },
+    "node_modules/@babel/helper-validator-identifier": {
+      "version": "7.16.7",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz",
+      "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==",
+      "dev": true
+    },
+    "node_modules/@babel/highlight": {
+      "version": "7.16.10",
+      "resolved": "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.16.10.tgz",
+      "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-validator-identifier": "^7.16.7",
+        "chalk": "^2.0.0",
+        "js-tokens": "^4.0.0"
+      }
+    },
+    "node_modules/@babel/parser": {
+      "version": "7.17.8",
+      "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.17.8.tgz",
+      "integrity": "sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==",
+      "dev": true
+    },
+    "node_modules/@babel/template": {
+      "version": "7.16.7",
+      "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.16.7.tgz",
+      "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==",
+      "dev": true,
+      "dependencies": {
+        "@babel/code-frame": "^7.16.7",
+        "@babel/parser": "^7.16.7",
+        "@babel/types": "^7.16.7"
+      }
+    },
+    "node_modules/@babel/traverse": {
+      "version": "7.17.3",
+      "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.17.3.tgz",
+      "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/code-frame": "^7.16.7",
+        "@babel/generator": "^7.17.3",
+        "@babel/helper-environment-visitor": "^7.16.7",
+        "@babel/helper-function-name": "^7.16.7",
+        "@babel/helper-hoist-variables": "^7.16.7",
+        "@babel/helper-split-export-declaration": "^7.16.7",
+        "@babel/parser": "^7.17.3",
+        "@babel/types": "^7.17.0",
+        "debug": "^4.1.0",
+        "globals": "^11.1.0"
+      }
+    },
+    "node_modules/@babel/traverse/node_modules/globals": {
+      "version": "11.12.0",
+      "resolved": "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz",
+      "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+      "dev": true
+    },
+    "node_modules/@babel/types": {
+      "version": "7.17.0",
+      "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.17.0.tgz",
+      "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-validator-identifier": "^7.16.7",
+        "to-fast-properties": "^2.0.0"
+      }
+    },
+    "node_modules/acorn": {
+      "version": "7.4.1",
+      "resolved": "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz",
+      "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+      "dev": true
+    },
+    "node_modules/acorn-jsx": {
+      "version": "5.3.2",
+      "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+      "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+      "dev": true
+    },
+    "node_modules/ajv": {
+      "version": "6.12.6",
+      "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz",
+      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+      "dev": true,
+      "dependencies": {
+        "fast-deep-equal": "^3.1.1",
+        "fast-json-stable-stringify": "^2.0.0",
+        "json-schema-traverse": "^0.4.1",
+        "uri-js": "^4.2.2"
+      }
+    },
+    "node_modules/ansi-escapes": {
+      "version": "4.3.2",
+      "resolved": "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
+      "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
+      "dev": true,
+      "dependencies": {
+        "type-fest": "^0.21.3"
+      }
+    },
+    "node_modules/ansi-escapes/node_modules/type-fest": {
+      "version": "0.21.3",
+      "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.21.3.tgz",
+      "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
+      "dev": true
+    },
+    "node_modules/ansi-regex": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-4.1.1.tgz",
+      "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
+      "dev": true
+    },
+    "node_modules/ansi-styles": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz",
+      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+      "dev": true,
+      "dependencies": {
+        "color-convert": "^1.9.0"
+      }
+    },
+    "node_modules/argparse": {
+      "version": "1.0.10",
+      "resolved": "https://registry.npmmirror.com/argparse/-/argparse-1.0.10.tgz",
+      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+      "dev": true,
+      "dependencies": {
+        "sprintf-js": "~1.0.2"
+      }
+    },
+    "node_modules/astral-regex": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/astral-regex/-/astral-regex-1.0.0.tgz",
+      "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
+      "dev": true
+    },
+    "node_modules/babel-eslint": {
+      "version": "10.1.0",
+      "resolved": "https://registry.npmmirror.com/babel-eslint/-/babel-eslint-10.1.0.tgz",
+      "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/code-frame": "^7.0.0",
+        "@babel/parser": "^7.7.0",
+        "@babel/traverse": "^7.7.0",
+        "@babel/types": "^7.7.0",
+        "eslint-visitor-keys": "^1.0.0",
+        "resolve": "^1.12.0"
+      }
+    },
+    "node_modules/balanced-match": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz",
+      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+      "dev": true
+    },
+    "node_modules/brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz",
+      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+      "dev": true,
+      "dependencies": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "node_modules/callsites": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz",
+      "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+      "dev": true
+    },
+    "node_modules/chalk": {
+      "version": "2.4.2",
+      "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz",
+      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+      "dev": true,
+      "dependencies": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      }
+    },
+    "node_modules/chardet": {
+      "version": "0.7.0",
+      "resolved": "https://registry.npmmirror.com/chardet/-/chardet-0.7.0.tgz",
+      "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
+      "dev": true
+    },
+    "node_modules/cli-cursor": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-3.1.0.tgz",
+      "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
+      "dev": true,
+      "dependencies": {
+        "restore-cursor": "^3.1.0"
+      }
+    },
+    "node_modules/cli-width": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/cli-width/-/cli-width-3.0.0.tgz",
+      "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==",
+      "dev": true
+    },
+    "node_modules/color-convert": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz",
+      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+      "dev": true,
+      "dependencies": {
+        "color-name": "1.1.3"
+      }
+    },
+    "node_modules/color-name": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz",
+      "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+      "dev": true
+    },
+    "node_modules/concat-map": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz",
+      "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+      "dev": true
+    },
+    "node_modules/cross-spawn": {
+      "version": "6.0.5",
+      "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-6.0.5.tgz",
+      "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+      "dev": true,
+      "dependencies": {
+        "nice-try": "^1.0.4",
+        "path-key": "^2.0.1",
+        "semver": "^5.5.0",
+        "shebang-command": "^1.2.0",
+        "which": "^1.2.9"
+      }
+    },
+    "node_modules/cross-spawn/node_modules/semver": {
+      "version": "5.7.1",
+      "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz",
+      "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+      "dev": true
+    },
+    "node_modules/debug": {
+      "version": "4.3.4",
+      "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.1.2"
+      }
+    },
+    "node_modules/deep-is": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz",
+      "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+      "dev": true
+    },
+    "node_modules/doctrine": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz",
+      "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+      "dev": true,
+      "dependencies": {
+        "esutils": "^2.0.2"
+      }
+    },
+    "node_modules/emoji-regex": {
+      "version": "7.0.3",
+      "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-7.0.3.tgz",
+      "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+      "dev": true
+    },
+    "node_modules/escape-string-regexp": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+      "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+      "dev": true
+    },
+    "node_modules/eslint": {
+      "version": "6.7.2",
+      "resolved": "https://registry.npmmirror.com/eslint/-/eslint-6.7.2.tgz",
+      "integrity": "sha512-qMlSWJaCSxDFr8fBPvJM9kJwbazrhNcBU3+DszDW1OlEwKBBRWsJc7NJFelvwQpanHCR14cOLD41x8Eqvo3Nng==",
+      "dev": true,
+      "dependencies": {
+        "@babel/code-frame": "^7.0.0",
+        "ajv": "^6.10.0",
+        "chalk": "^2.1.0",
+        "cross-spawn": "^6.0.5",
+        "debug": "^4.0.1",
+        "doctrine": "^3.0.0",
+        "eslint-scope": "^5.0.0",
+        "eslint-utils": "^1.4.3",
+        "eslint-visitor-keys": "^1.1.0",
+        "espree": "^6.1.2",
+        "esquery": "^1.0.1",
+        "esutils": "^2.0.2",
+        "file-entry-cache": "^5.0.1",
+        "functional-red-black-tree": "^1.0.1",
+        "glob-parent": "^5.0.0",
+        "globals": "^12.1.0",
+        "ignore": "^4.0.6",
+        "import-fresh": "^3.0.0",
+        "imurmurhash": "^0.1.4",
+        "inquirer": "^7.0.0",
+        "is-glob": "^4.0.0",
+        "js-yaml": "^3.13.1",
+        "json-stable-stringify-without-jsonify": "^1.0.1",
+        "levn": "^0.3.0",
+        "lodash": "^4.17.14",
+        "minimatch": "^3.0.4",
+        "mkdirp": "^0.5.1",
+        "natural-compare": "^1.4.0",
+        "optionator": "^0.8.3",
+        "progress": "^2.0.0",
+        "regexpp": "^2.0.1",
+        "semver": "^6.1.2",
+        "strip-ansi": "^5.2.0",
+        "strip-json-comments": "^3.0.1",
+        "table": "^5.2.3",
+        "text-table": "^0.2.0",
+        "v8-compile-cache": "^2.0.3"
+      }
+    },
+    "node_modules/eslint-plugin-vue": {
+      "version": "6.2.2",
+      "resolved": "https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-6.2.2.tgz",
+      "integrity": "sha512-Nhc+oVAHm0uz/PkJAWscwIT4ijTrK5fqNqz9QB1D35SbbuMG1uB6Yr5AJpvPSWg+WOw7nYNswerYh0kOk64gqQ==",
+      "dev": true,
+      "dependencies": {
+        "natural-compare": "^1.4.0",
+        "semver": "^5.6.0",
+        "vue-eslint-parser": "^7.0.0"
+      }
+    },
+    "node_modules/eslint-plugin-vue/node_modules/semver": {
+      "version": "5.7.1",
+      "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz",
+      "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+      "dev": true
+    },
+    "node_modules/eslint-scope": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz",
+      "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+      "dev": true,
+      "dependencies": {
+        "esrecurse": "^4.3.0",
+        "estraverse": "^4.1.1"
+      }
+    },
+    "node_modules/eslint-scope/node_modules/estraverse": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz",
+      "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+      "dev": true
+    },
+    "node_modules/eslint-visitor-keys": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
+      "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
+      "dev": true
+    },
+    "node_modules/eslint/node_modules/eslint-utils": {
+      "version": "1.4.3",
+      "resolved": "https://registry.npmmirror.com/eslint-utils/-/eslint-utils-1.4.3.tgz",
+      "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==",
+      "dev": true,
+      "dependencies": {
+        "eslint-visitor-keys": "^1.1.0"
+      }
+    },
+    "node_modules/espree": {
+      "version": "6.2.1",
+      "resolved": "https://registry.npmmirror.com/espree/-/espree-6.2.1.tgz",
+      "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==",
+      "dev": true,
+      "dependencies": {
+        "acorn": "^7.1.1",
+        "acorn-jsx": "^5.2.0",
+        "eslint-visitor-keys": "^1.1.0"
+      }
+    },
+    "node_modules/esprima": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz",
+      "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+      "dev": true
+    },
+    "node_modules/esquery": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmmirror.com/esquery/-/esquery-1.4.0.tgz",
+      "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
+      "dev": true,
+      "dependencies": {
+        "estraverse": "^5.1.0"
+      }
+    },
+    "node_modules/esrecurse": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz",
+      "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+      "dev": true,
+      "dependencies": {
+        "estraverse": "^5.2.0"
+      }
+    },
+    "node_modules/estraverse": {
+      "version": "5.3.0",
+      "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz",
+      "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+      "dev": true
+    },
+    "node_modules/esutils": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz",
+      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+      "dev": true
+    },
+    "node_modules/external-editor": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/external-editor/-/external-editor-3.1.0.tgz",
+      "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
+      "dev": true,
+      "dependencies": {
+        "chardet": "^0.7.0",
+        "iconv-lite": "^0.4.24",
+        "tmp": "^0.0.33"
+      }
+    },
+    "node_modules/fast-deep-equal": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+      "dev": true
+    },
+    "node_modules/fast-json-stable-stringify": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+      "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+      "dev": true
+    },
+    "node_modules/fast-levenshtein": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+      "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+      "dev": true
+    },
+    "node_modules/figures": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmmirror.com/figures/-/figures-3.2.0.tgz",
+      "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
+      "dev": true,
+      "dependencies": {
+        "escape-string-regexp": "^1.0.5"
+      }
+    },
+    "node_modules/file-entry-cache": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
+      "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
+      "dev": true,
+      "dependencies": {
+        "flat-cache": "^2.0.1"
+      }
+    },
+    "node_modules/flat-cache": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/flat-cache/-/flat-cache-2.0.1.tgz",
+      "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
+      "dev": true,
+      "dependencies": {
+        "flatted": "^2.0.0",
+        "rimraf": "2.6.3",
+        "write": "1.0.3"
+      }
+    },
+    "node_modules/flatted": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmmirror.com/flatted/-/flatted-2.0.2.tgz",
+      "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==",
+      "dev": true
+    },
+    "node_modules/fs.realpath": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz",
+      "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+      "dev": true
+    },
+    "node_modules/function-bind": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz",
+      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+      "dev": true
+    },
+    "node_modules/functional-red-black-tree": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
+      "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==",
+      "dev": true
+    },
+    "node_modules/glob": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.0.tgz",
+      "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
+      "dev": true,
+      "dependencies": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.0.4",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
+      }
+    },
+    "node_modules/glob-parent": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz",
+      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+      "dev": true,
+      "dependencies": {
+        "is-glob": "^4.0.1"
+      }
+    },
+    "node_modules/globals": {
+      "version": "12.4.0",
+      "resolved": "https://registry.npmmirror.com/globals/-/globals-12.4.0.tgz",
+      "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==",
+      "dev": true,
+      "dependencies": {
+        "type-fest": "^0.8.1"
+      }
+    },
+    "node_modules/has": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/has/-/has-1.0.3.tgz",
+      "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+      "dev": true,
+      "dependencies": {
+        "function-bind": "^1.1.1"
+      }
+    },
+    "node_modules/has-flag": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz",
+      "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+      "dev": true
+    },
+    "node_modules/iconv-lite": {
+      "version": "0.4.24",
+      "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz",
+      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+      "dev": true,
+      "dependencies": {
+        "safer-buffer": ">= 2.1.2 < 3"
+      }
+    },
+    "node_modules/ignore": {
+      "version": "4.0.6",
+      "resolved": "https://registry.npmmirror.com/ignore/-/ignore-4.0.6.tgz",
+      "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
+      "dev": true
+    },
+    "node_modules/import-fresh": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz",
+      "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+      "dev": true,
+      "dependencies": {
+        "parent-module": "^1.0.0",
+        "resolve-from": "^4.0.0"
+      }
+    },
+    "node_modules/imurmurhash": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz",
+      "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+      "dev": true
+    },
+    "node_modules/inflight": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz",
+      "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+      "dev": true,
+      "dependencies": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "node_modules/inherits": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz",
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+      "dev": true
+    },
+    "node_modules/inquirer": {
+      "version": "7.3.3",
+      "resolved": "https://registry.npmmirror.com/inquirer/-/inquirer-7.3.3.tgz",
+      "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==",
+      "dev": true,
+      "dependencies": {
+        "ansi-escapes": "^4.2.1",
+        "chalk": "^4.1.0",
+        "cli-cursor": "^3.1.0",
+        "cli-width": "^3.0.0",
+        "external-editor": "^3.0.3",
+        "figures": "^3.0.0",
+        "lodash": "^4.17.19",
+        "mute-stream": "0.0.8",
+        "run-async": "^2.4.0",
+        "rxjs": "^6.6.0",
+        "string-width": "^4.1.0",
+        "strip-ansi": "^6.0.0",
+        "through": "^2.3.6"
+      }
+    },
+    "node_modules/inquirer/node_modules/ansi-regex": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
+      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+      "dev": true
+    },
+    "node_modules/inquirer/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dev": true,
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      }
+    },
+    "node_modules/inquirer/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      }
+    },
+    "node_modules/inquirer/node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "dependencies": {
+        "color-name": "~1.1.4"
+      }
+    },
+    "node_modules/inquirer/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true
+    },
+    "node_modules/inquirer/node_modules/has-flag": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+      "dev": true
+    },
+    "node_modules/inquirer/node_modules/strip-ansi": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
+      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+      "dev": true,
+      "dependencies": {
+        "ansi-regex": "^5.0.1"
+      }
+    },
+    "node_modules/inquirer/node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "dev": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      }
+    },
+    "node_modules/is-core-module": {
+      "version": "2.8.1",
+      "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.8.1.tgz",
+      "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==",
+      "dev": true,
+      "dependencies": {
+        "has": "^1.0.3"
+      }
+    },
+    "node_modules/is-extglob": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz",
+      "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+      "dev": true
+    },
+    "node_modules/is-fullwidth-code-point": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+      "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
+      "dev": true
+    },
+    "node_modules/is-glob": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
+      "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+      "dev": true,
+      "dependencies": {
+        "is-extglob": "^2.1.1"
+      }
+    },
+    "node_modules/isexe": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz",
+      "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+      "dev": true
+    },
+    "node_modules/js-tokens": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz",
+      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+      "dev": true
+    },
+    "node_modules/js-yaml": {
+      "version": "3.14.1",
+      "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-3.14.1.tgz",
+      "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+      "dev": true,
+      "dependencies": {
+        "argparse": "^1.0.7",
+        "esprima": "^4.0.0"
+      }
+    },
+    "node_modules/jsesc": {
+      "version": "2.5.2",
+      "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz",
+      "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+      "dev": true
+    },
+    "node_modules/json-schema-traverse": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+      "dev": true
+    },
+    "node_modules/json-stable-stringify-without-jsonify": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+      "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+      "dev": true
+    },
+    "node_modules/levn": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmmirror.com/levn/-/levn-0.3.0.tgz",
+      "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
+      "dev": true,
+      "dependencies": {
+        "prelude-ls": "~1.1.2",
+        "type-check": "~0.3.2"
+      }
+    },
+    "node_modules/lodash": {
+      "version": "4.17.21",
+      "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz",
+      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+      "dev": true
+    },
+    "node_modules/mimic-fn": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz",
+      "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+      "dev": true
+    },
+    "node_modules/minimatch": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz",
+      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+      "dev": true,
+      "dependencies": {
+        "brace-expansion": "^1.1.7"
+      }
+    },
+    "node_modules/minimist": {
+      "version": "1.2.5",
+      "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.5.tgz",
+      "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
+      "dev": true
+    },
+    "node_modules/mkdirp": {
+      "version": "0.5.5",
+      "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.5.tgz",
+      "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+      "dev": true,
+      "dependencies": {
+        "minimist": "^1.2.5"
+      }
+    },
+    "node_modules/ms": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+      "dev": true
+    },
+    "node_modules/mute-stream": {
+      "version": "0.0.8",
+      "resolved": "https://registry.npmmirror.com/mute-stream/-/mute-stream-0.0.8.tgz",
+      "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
+      "dev": true
+    },
+    "node_modules/natural-compare": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz",
+      "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+      "dev": true
+    },
+    "node_modules/nice-try": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmmirror.com/nice-try/-/nice-try-1.0.5.tgz",
+      "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+      "dev": true
+    },
+    "node_modules/once": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz",
+      "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+      "dev": true,
+      "dependencies": {
+        "wrappy": "1"
+      }
+    },
+    "node_modules/onetime": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz",
+      "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+      "dev": true,
+      "dependencies": {
+        "mimic-fn": "^2.1.0"
+      }
+    },
+    "node_modules/optionator": {
+      "version": "0.8.3",
+      "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.8.3.tgz",
+      "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
+      "dev": true,
+      "dependencies": {
+        "deep-is": "~0.1.3",
+        "fast-levenshtein": "~2.0.6",
+        "levn": "~0.3.0",
+        "prelude-ls": "~1.1.2",
+        "type-check": "~0.3.2",
+        "word-wrap": "~1.2.3"
+      }
+    },
+    "node_modules/os-tmpdir": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+      "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
+      "dev": true
+    },
+    "node_modules/parent-module": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz",
+      "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+      "dev": true,
+      "dependencies": {
+        "callsites": "^3.0.0"
+      }
+    },
+    "node_modules/path-is-absolute": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+      "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+      "dev": true
+    },
+    "node_modules/path-key": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/path-key/-/path-key-2.0.1.tgz",
+      "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+      "dev": true
+    },
+    "node_modules/path-parse": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz",
+      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+      "dev": true
+    },
+    "node_modules/prelude-ls": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.1.2.tgz",
+      "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==",
+      "dev": true
+    },
+    "node_modules/progress": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmmirror.com/progress/-/progress-2.0.3.tgz",
+      "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+      "dev": true
+    },
+    "node_modules/punycode": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.1.1.tgz",
+      "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+      "dev": true
+    },
+    "node_modules/regexpp": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/regexpp/-/regexpp-2.0.1.tgz",
+      "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
+      "dev": true
+    },
+    "node_modules/resolve": {
+      "version": "1.22.0",
+      "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.0.tgz",
+      "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
+      "dev": true,
+      "dependencies": {
+        "is-core-module": "^2.8.1",
+        "path-parse": "^1.0.7",
+        "supports-preserve-symlinks-flag": "^1.0.0"
+      }
+    },
+    "node_modules/resolve-from": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz",
+      "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+      "dev": true
+    },
+    "node_modules/restore-cursor": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-3.1.0.tgz",
+      "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
+      "dev": true,
+      "dependencies": {
+        "onetime": "^5.1.0",
+        "signal-exit": "^3.0.2"
+      }
+    },
+    "node_modules/rimraf": {
+      "version": "2.6.3",
+      "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-2.6.3.tgz",
+      "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
+      "dev": true,
+      "dependencies": {
+        "glob": "^7.1.3"
+      }
+    },
+    "node_modules/run-async": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmmirror.com/run-async/-/run-async-2.4.1.tgz",
+      "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
+      "dev": true
+    },
+    "node_modules/rxjs": {
+      "version": "6.6.7",
+      "resolved": "https://registry.npmmirror.com/rxjs/-/rxjs-6.6.7.tgz",
+      "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
+      "dev": true,
+      "dependencies": {
+        "tslib": "^1.9.0"
+      }
+    },
+    "node_modules/safer-buffer": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz",
+      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+      "dev": true
+    },
+    "node_modules/semver": {
+      "version": "6.3.0",
+      "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
+      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+      "dev": true
+    },
+    "node_modules/shebang-command": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-1.2.0.tgz",
+      "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+      "dev": true,
+      "dependencies": {
+        "shebang-regex": "^1.0.0"
+      }
+    },
+    "node_modules/shebang-regex": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-1.0.0.tgz",
+      "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+      "dev": true
+    },
+    "node_modules/signal-exit": {
+      "version": "3.0.7",
+      "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz",
+      "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+      "dev": true
+    },
+    "node_modules/slice-ansi": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-2.1.0.tgz",
+      "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
+      "dev": true,
+      "dependencies": {
+        "ansi-styles": "^3.2.0",
+        "astral-regex": "^1.0.0",
+        "is-fullwidth-code-point": "^2.0.0"
+      }
+    },
+    "node_modules/source-map": {
+      "version": "0.5.7",
+      "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.5.7.tgz",
+      "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+      "dev": true
+    },
+    "node_modules/sprintf-js": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz",
+      "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
+      "dev": true
+    },
+    "node_modules/string-width": {
+      "version": "4.2.3",
+      "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+      "dev": true,
+      "dependencies": {
+        "emoji-regex": "^8.0.0",
+        "is-fullwidth-code-point": "^3.0.0",
+        "strip-ansi": "^6.0.1"
+      }
+    },
+    "node_modules/string-width/node_modules/ansi-regex": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
+      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+      "dev": true
+    },
+    "node_modules/string-width/node_modules/emoji-regex": {
+      "version": "8.0.0",
+      "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
+      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+      "dev": true
+    },
+    "node_modules/string-width/node_modules/is-fullwidth-code-point": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+      "dev": true
+    },
+    "node_modules/string-width/node_modules/strip-ansi": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
+      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+      "dev": true,
+      "dependencies": {
+        "ansi-regex": "^5.0.1"
+      }
+    },
+    "node_modules/strip-ansi": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz",
+      "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+      "dev": true,
+      "dependencies": {
+        "ansi-regex": "^4.1.0"
+      }
+    },
+    "node_modules/strip-json-comments": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+      "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+      "dev": true
+    },
+    "node_modules/supports-color": {
+      "version": "5.5.0",
+      "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz",
+      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+      "dev": true,
+      "dependencies": {
+        "has-flag": "^3.0.0"
+      }
+    },
+    "node_modules/supports-preserve-symlinks-flag": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+      "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+      "dev": true
+    },
+    "node_modules/table": {
+      "version": "5.4.6",
+      "resolved": "https://registry.npmmirror.com/table/-/table-5.4.6.tgz",
+      "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
+      "dev": true,
+      "dependencies": {
+        "ajv": "^6.10.2",
+        "lodash": "^4.17.14",
+        "slice-ansi": "^2.1.0",
+        "string-width": "^3.0.0"
+      }
+    },
+    "node_modules/table/node_modules/string-width": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/string-width/-/string-width-3.1.0.tgz",
+      "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+      "dev": true,
+      "dependencies": {
+        "emoji-regex": "^7.0.1",
+        "is-fullwidth-code-point": "^2.0.0",
+        "strip-ansi": "^5.1.0"
+      }
+    },
+    "node_modules/text-table": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz",
+      "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+      "dev": true
+    },
+    "node_modules/through": {
+      "version": "2.3.8",
+      "resolved": "https://registry.npmmirror.com/through/-/through-2.3.8.tgz",
+      "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
+      "dev": true
+    },
+    "node_modules/tmp": {
+      "version": "0.0.33",
+      "resolved": "https://registry.npmmirror.com/tmp/-/tmp-0.0.33.tgz",
+      "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+      "dev": true,
+      "dependencies": {
+        "os-tmpdir": "~1.0.2"
+      }
+    },
+    "node_modules/to-fast-properties": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+      "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+      "dev": true
+    },
+    "node_modules/tslib": {
+      "version": "1.14.1",
+      "resolved": "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz",
+      "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+      "dev": true
+    },
+    "node_modules/type-check": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.3.2.tgz",
+      "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==",
+      "dev": true,
+      "dependencies": {
+        "prelude-ls": "~1.1.2"
+      }
+    },
+    "node_modules/type-fest": {
+      "version": "0.8.1",
+      "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.8.1.tgz",
+      "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
+      "dev": true
+    },
+    "node_modules/uri-js": {
+      "version": "4.4.1",
+      "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz",
+      "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+      "dev": true,
+      "dependencies": {
+        "punycode": "^2.1.0"
+      }
+    },
+    "node_modules/v8-compile-cache": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmmirror.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
+      "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
+      "dev": true
+    },
+    "node_modules/vue-eslint-parser": {
+      "version": "7.11.0",
+      "resolved": "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-7.11.0.tgz",
+      "integrity": "sha512-qh3VhDLeh773wjgNTl7ss0VejY9bMMa0GoDG2fQVyDzRFdiU3L7fw74tWZDHNQXdZqxO3EveQroa9ct39D2nqg==",
+      "dev": true,
+      "dependencies": {
+        "debug": "^4.1.1",
+        "eslint-scope": "^5.1.1",
+        "eslint-visitor-keys": "^1.1.0",
+        "espree": "^6.2.1",
+        "esquery": "^1.4.0",
+        "lodash": "^4.17.21",
+        "semver": "^6.3.0"
+      }
+    },
+    "node_modules/which": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmmirror.com/which/-/which-1.3.1.tgz",
+      "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+      "dev": true,
+      "dependencies": {
+        "isexe": "^2.0.0"
+      }
+    },
+    "node_modules/word-wrap": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.3.tgz",
+      "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
+      "dev": true
+    },
+    "node_modules/wrappy": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz",
+      "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+      "dev": true
+    },
+    "node_modules/write": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/write/-/write-1.0.3.tgz",
+      "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
+      "dev": true,
+      "dependencies": {
+        "mkdirp": "^0.5.1"
+      }
+    }
+  },
+  "dependencies": {
+    "@babel/code-frame": {
+      "version": "7.16.7",
+      "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.16.7.tgz",
+      "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==",
+      "dev": true,
+      "requires": {
+        "@babel/highlight": "^7.16.7"
+      }
+    },
+    "@babel/generator": {
+      "version": "7.17.7",
+      "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.17.7.tgz",
+      "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.17.0",
+        "jsesc": "^2.5.1",
+        "source-map": "^0.5.0"
+      }
+    },
+    "@babel/helper-environment-visitor": {
+      "version": "7.16.7",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz",
+      "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.16.7"
+      }
+    },
+    "@babel/helper-function-name": {
+      "version": "7.16.7",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz",
+      "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-get-function-arity": "^7.16.7",
+        "@babel/template": "^7.16.7",
+        "@babel/types": "^7.16.7"
+      }
+    },
+    "@babel/helper-get-function-arity": {
+      "version": "7.16.7",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz",
+      "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.16.7"
+      }
+    },
+    "@babel/helper-hoist-variables": {
+      "version": "7.16.7",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz",
+      "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.16.7"
+      }
+    },
+    "@babel/helper-split-export-declaration": {
+      "version": "7.16.7",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz",
+      "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.16.7"
+      }
+    },
+    "@babel/helper-validator-identifier": {
+      "version": "7.16.7",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz",
+      "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==",
+      "dev": true
+    },
+    "@babel/highlight": {
+      "version": "7.16.10",
+      "resolved": "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.16.10.tgz",
+      "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-validator-identifier": "^7.16.7",
+        "chalk": "^2.0.0",
+        "js-tokens": "^4.0.0"
+      }
+    },
+    "@babel/parser": {
+      "version": "7.17.8",
+      "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.17.8.tgz",
+      "integrity": "sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==",
+      "dev": true
+    },
+    "@babel/template": {
+      "version": "7.16.7",
+      "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.16.7.tgz",
+      "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==",
+      "dev": true,
+      "requires": {
+        "@babel/code-frame": "^7.16.7",
+        "@babel/parser": "^7.16.7",
+        "@babel/types": "^7.16.7"
+      }
+    },
+    "@babel/traverse": {
+      "version": "7.17.3",
+      "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.17.3.tgz",
+      "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==",
+      "dev": true,
+      "requires": {
+        "@babel/code-frame": "^7.16.7",
+        "@babel/generator": "^7.17.3",
+        "@babel/helper-environment-visitor": "^7.16.7",
+        "@babel/helper-function-name": "^7.16.7",
+        "@babel/helper-hoist-variables": "^7.16.7",
+        "@babel/helper-split-export-declaration": "^7.16.7",
+        "@babel/parser": "^7.17.3",
+        "@babel/types": "^7.17.0",
+        "debug": "^4.1.0",
+        "globals": "^11.1.0"
+      },
+      "dependencies": {
+        "globals": {
+          "version": "11.12.0",
+          "resolved": "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz",
+          "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+          "dev": true
+        }
+      }
+    },
+    "@babel/types": {
+      "version": "7.17.0",
+      "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.17.0.tgz",
+      "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-validator-identifier": "^7.16.7",
+        "to-fast-properties": "^2.0.0"
+      }
+    },
+    "acorn": {
+      "version": "7.4.1",
+      "resolved": "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz",
+      "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+      "dev": true
+    },
+    "acorn-jsx": {
+      "version": "5.3.2",
+      "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+      "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+      "dev": true
+    },
+    "ajv": {
+      "version": "6.12.6",
+      "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz",
+      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+      "dev": true,
+      "requires": {
+        "fast-deep-equal": "^3.1.1",
+        "fast-json-stable-stringify": "^2.0.0",
+        "json-schema-traverse": "^0.4.1",
+        "uri-js": "^4.2.2"
+      }
+    },
+    "ansi-escapes": {
+      "version": "4.3.2",
+      "resolved": "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
+      "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
+      "dev": true,
+      "requires": {
+        "type-fest": "^0.21.3"
+      },
+      "dependencies": {
+        "type-fest": {
+          "version": "0.21.3",
+          "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.21.3.tgz",
+          "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
+          "dev": true
+        }
+      }
+    },
+    "ansi-regex": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-4.1.1.tgz",
+      "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
+      "dev": true
+    },
+    "ansi-styles": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz",
+      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+      "dev": true,
+      "requires": {
+        "color-convert": "^1.9.0"
+      }
+    },
+    "argparse": {
+      "version": "1.0.10",
+      "resolved": "https://registry.npmmirror.com/argparse/-/argparse-1.0.10.tgz",
+      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+      "dev": true,
+      "requires": {
+        "sprintf-js": "~1.0.2"
+      }
+    },
+    "astral-regex": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/astral-regex/-/astral-regex-1.0.0.tgz",
+      "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
+      "dev": true
+    },
+    "babel-eslint": {
+      "version": "10.1.0",
+      "resolved": "https://registry.npmmirror.com/babel-eslint/-/babel-eslint-10.1.0.tgz",
+      "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==",
+      "dev": true,
+      "requires": {
+        "@babel/code-frame": "^7.0.0",
+        "@babel/parser": "^7.7.0",
+        "@babel/traverse": "^7.7.0",
+        "@babel/types": "^7.7.0",
+        "eslint-visitor-keys": "^1.0.0",
+        "resolve": "^1.12.0"
+      }
+    },
+    "balanced-match": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz",
+      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+      "dev": true
+    },
+    "brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz",
+      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+      "dev": true,
+      "requires": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "callsites": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz",
+      "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+      "dev": true
+    },
+    "chalk": {
+      "version": "2.4.2",
+      "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz",
+      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+      "dev": true,
+      "requires": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      }
+    },
+    "chardet": {
+      "version": "0.7.0",
+      "resolved": "https://registry.npmmirror.com/chardet/-/chardet-0.7.0.tgz",
+      "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
+      "dev": true
+    },
+    "cli-cursor": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-3.1.0.tgz",
+      "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
+      "dev": true,
+      "requires": {
+        "restore-cursor": "^3.1.0"
+      }
+    },
+    "cli-width": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/cli-width/-/cli-width-3.0.0.tgz",
+      "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==",
+      "dev": true
+    },
+    "color-convert": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz",
+      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+      "dev": true,
+      "requires": {
+        "color-name": "1.1.3"
+      }
+    },
+    "color-name": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz",
+      "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+      "dev": true
+    },
+    "concat-map": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz",
+      "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+      "dev": true
+    },
+    "cross-spawn": {
+      "version": "6.0.5",
+      "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-6.0.5.tgz",
+      "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+      "dev": true,
+      "requires": {
+        "nice-try": "^1.0.4",
+        "path-key": "^2.0.1",
+        "semver": "^5.5.0",
+        "shebang-command": "^1.2.0",
+        "which": "^1.2.9"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "5.7.1",
+          "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz",
+          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+          "dev": true
+        }
+      }
+    },
+    "debug": {
+      "version": "4.3.4",
+      "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+      "dev": true,
+      "requires": {
+        "ms": "2.1.2"
+      }
+    },
+    "deep-is": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz",
+      "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+      "dev": true
+    },
+    "doctrine": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz",
+      "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+      "dev": true,
+      "requires": {
+        "esutils": "^2.0.2"
+      }
+    },
+    "emoji-regex": {
+      "version": "7.0.3",
+      "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-7.0.3.tgz",
+      "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+      "dev": true
+    },
+    "escape-string-regexp": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+      "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+      "dev": true
+    },
+    "eslint": {
+      "version": "6.7.2",
+      "resolved": "https://registry.npmmirror.com/eslint/-/eslint-6.7.2.tgz",
+      "integrity": "sha512-qMlSWJaCSxDFr8fBPvJM9kJwbazrhNcBU3+DszDW1OlEwKBBRWsJc7NJFelvwQpanHCR14cOLD41x8Eqvo3Nng==",
+      "dev": true,
+      "requires": {
+        "@babel/code-frame": "^7.0.0",
+        "ajv": "^6.10.0",
+        "chalk": "^2.1.0",
+        "cross-spawn": "^6.0.5",
+        "debug": "^4.0.1",
+        "doctrine": "^3.0.0",
+        "eslint-scope": "^5.0.0",
+        "eslint-utils": "^1.4.3",
+        "eslint-visitor-keys": "^1.1.0",
+        "espree": "^6.1.2",
+        "esquery": "^1.0.1",
+        "esutils": "^2.0.2",
+        "file-entry-cache": "^5.0.1",
+        "functional-red-black-tree": "^1.0.1",
+        "glob-parent": "^5.0.0",
+        "globals": "^12.1.0",
+        "ignore": "^4.0.6",
+        "import-fresh": "^3.0.0",
+        "imurmurhash": "^0.1.4",
+        "inquirer": "^7.0.0",
+        "is-glob": "^4.0.0",
+        "js-yaml": "^3.13.1",
+        "json-stable-stringify-without-jsonify": "^1.0.1",
+        "levn": "^0.3.0",
+        "lodash": "^4.17.14",
+        "minimatch": "^3.0.4",
+        "mkdirp": "^0.5.1",
+        "natural-compare": "^1.4.0",
+        "optionator": "^0.8.3",
+        "progress": "^2.0.0",
+        "regexpp": "^2.0.1",
+        "semver": "^6.1.2",
+        "strip-ansi": "^5.2.0",
+        "strip-json-comments": "^3.0.1",
+        "table": "^5.2.3",
+        "text-table": "^0.2.0",
+        "v8-compile-cache": "^2.0.3"
+      },
+      "dependencies": {
+        "eslint-utils": {
+          "version": "1.4.3",
+          "resolved": "https://registry.npmmirror.com/eslint-utils/-/eslint-utils-1.4.3.tgz",
+          "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==",
+          "dev": true,
+          "requires": {
+            "eslint-visitor-keys": "^1.1.0"
+          }
+        }
+      }
+    },
+    "eslint-plugin-vue": {
+      "version": "6.2.2",
+      "resolved": "https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-6.2.2.tgz",
+      "integrity": "sha512-Nhc+oVAHm0uz/PkJAWscwIT4ijTrK5fqNqz9QB1D35SbbuMG1uB6Yr5AJpvPSWg+WOw7nYNswerYh0kOk64gqQ==",
+      "dev": true,
+      "requires": {
+        "natural-compare": "^1.4.0",
+        "semver": "^5.6.0",
+        "vue-eslint-parser": "^7.0.0"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "5.7.1",
+          "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz",
+          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+          "dev": true
+        }
+      }
+    },
+    "eslint-scope": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz",
+      "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+      "dev": true,
+      "requires": {
+        "esrecurse": "^4.3.0",
+        "estraverse": "^4.1.1"
+      },
+      "dependencies": {
+        "estraverse": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz",
+          "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+          "dev": true
+        }
+      }
+    },
+    "eslint-visitor-keys": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
+      "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
+      "dev": true
+    },
+    "espree": {
+      "version": "6.2.1",
+      "resolved": "https://registry.npmmirror.com/espree/-/espree-6.2.1.tgz",
+      "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==",
+      "dev": true,
+      "requires": {
+        "acorn": "^7.1.1",
+        "acorn-jsx": "^5.2.0",
+        "eslint-visitor-keys": "^1.1.0"
+      }
+    },
+    "esprima": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz",
+      "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+      "dev": true
+    },
+    "esquery": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmmirror.com/esquery/-/esquery-1.4.0.tgz",
+      "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
+      "dev": true,
+      "requires": {
+        "estraverse": "^5.1.0"
+      }
+    },
+    "esrecurse": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz",
+      "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+      "dev": true,
+      "requires": {
+        "estraverse": "^5.2.0"
+      }
+    },
+    "estraverse": {
+      "version": "5.3.0",
+      "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz",
+      "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+      "dev": true
+    },
+    "esutils": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz",
+      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+      "dev": true
+    },
+    "external-editor": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/external-editor/-/external-editor-3.1.0.tgz",
+      "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
+      "dev": true,
+      "requires": {
+        "chardet": "^0.7.0",
+        "iconv-lite": "^0.4.24",
+        "tmp": "^0.0.33"
+      }
+    },
+    "fast-deep-equal": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+      "dev": true
+    },
+    "fast-json-stable-stringify": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+      "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+      "dev": true
+    },
+    "fast-levenshtein": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+      "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+      "dev": true
+    },
+    "figures": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmmirror.com/figures/-/figures-3.2.0.tgz",
+      "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
+      "dev": true,
+      "requires": {
+        "escape-string-regexp": "^1.0.5"
+      }
+    },
+    "file-entry-cache": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
+      "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
+      "dev": true,
+      "requires": {
+        "flat-cache": "^2.0.1"
+      }
+    },
+    "flat-cache": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/flat-cache/-/flat-cache-2.0.1.tgz",
+      "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
+      "dev": true,
+      "requires": {
+        "flatted": "^2.0.0",
+        "rimraf": "2.6.3",
+        "write": "1.0.3"
+      }
+    },
+    "flatted": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmmirror.com/flatted/-/flatted-2.0.2.tgz",
+      "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==",
+      "dev": true
+    },
+    "fs.realpath": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz",
+      "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+      "dev": true
+    },
+    "function-bind": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz",
+      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+      "dev": true
+    },
+    "functional-red-black-tree": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
+      "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==",
+      "dev": true
+    },
+    "glob": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.0.tgz",
+      "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
+      "dev": true,
+      "requires": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.0.4",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
+      }
+    },
+    "glob-parent": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz",
+      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+      "dev": true,
+      "requires": {
+        "is-glob": "^4.0.1"
+      }
+    },
+    "globals": {
+      "version": "12.4.0",
+      "resolved": "https://registry.npmmirror.com/globals/-/globals-12.4.0.tgz",
+      "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==",
+      "dev": true,
+      "requires": {
+        "type-fest": "^0.8.1"
+      }
+    },
+    "has": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/has/-/has-1.0.3.tgz",
+      "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+      "dev": true,
+      "requires": {
+        "function-bind": "^1.1.1"
+      }
+    },
+    "has-flag": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz",
+      "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+      "dev": true
+    },
+    "iconv-lite": {
+      "version": "0.4.24",
+      "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz",
+      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+      "dev": true,
+      "requires": {
+        "safer-buffer": ">= 2.1.2 < 3"
+      }
+    },
+    "ignore": {
+      "version": "4.0.6",
+      "resolved": "https://registry.npmmirror.com/ignore/-/ignore-4.0.6.tgz",
+      "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
+      "dev": true
+    },
+    "import-fresh": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz",
+      "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+      "dev": true,
+      "requires": {
+        "parent-module": "^1.0.0",
+        "resolve-from": "^4.0.0"
+      }
+    },
+    "imurmurhash": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz",
+      "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+      "dev": true
+    },
+    "inflight": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz",
+      "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+      "dev": true,
+      "requires": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "inherits": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz",
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+      "dev": true
+    },
+    "inquirer": {
+      "version": "7.3.3",
+      "resolved": "https://registry.npmmirror.com/inquirer/-/inquirer-7.3.3.tgz",
+      "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==",
+      "dev": true,
+      "requires": {
+        "ansi-escapes": "^4.2.1",
+        "chalk": "^4.1.0",
+        "cli-cursor": "^3.1.0",
+        "cli-width": "^3.0.0",
+        "external-editor": "^3.0.3",
+        "figures": "^3.0.0",
+        "lodash": "^4.17.19",
+        "mute-stream": "0.0.8",
+        "run-async": "^2.4.0",
+        "rxjs": "^6.6.0",
+        "string-width": "^4.1.0",
+        "strip-ansi": "^6.0.0",
+        "through": "^2.3.6"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "5.0.1",
+          "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
+          "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+          "dev": true
+        },
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+          "dev": true,
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+          "dev": true,
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+          "dev": true
+        },
+        "has-flag": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+          "dev": true
+        },
+        "strip-ansi": {
+          "version": "6.0.1",
+          "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
+          "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^5.0.1"
+          }
+        },
+        "supports-color": {
+          "version": "7.2.0",
+          "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+          "dev": true,
+          "requires": {
+            "has-flag": "^4.0.0"
+          }
+        }
+      }
+    },
+    "is-core-module": {
+      "version": "2.8.1",
+      "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.8.1.tgz",
+      "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==",
+      "dev": true,
+      "requires": {
+        "has": "^1.0.3"
+      }
+    },
+    "is-extglob": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz",
+      "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+      "dev": true
+    },
+    "is-fullwidth-code-point": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+      "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
+      "dev": true
+    },
+    "is-glob": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
+      "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+      "dev": true,
+      "requires": {
+        "is-extglob": "^2.1.1"
+      }
+    },
+    "isexe": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz",
+      "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+      "dev": true
+    },
+    "js-tokens": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz",
+      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+      "dev": true
+    },
+    "js-yaml": {
+      "version": "3.14.1",
+      "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-3.14.1.tgz",
+      "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+      "dev": true,
+      "requires": {
+        "argparse": "^1.0.7",
+        "esprima": "^4.0.0"
+      }
+    },
+    "jsesc": {
+      "version": "2.5.2",
+      "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz",
+      "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+      "dev": true
+    },
+    "json-schema-traverse": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+      "dev": true
+    },
+    "json-stable-stringify-without-jsonify": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+      "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+      "dev": true
+    },
+    "levn": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmmirror.com/levn/-/levn-0.3.0.tgz",
+      "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
+      "dev": true,
+      "requires": {
+        "prelude-ls": "~1.1.2",
+        "type-check": "~0.3.2"
+      }
+    },
+    "lodash": {
+      "version": "4.17.21",
+      "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz",
+      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+      "dev": true
+    },
+    "mimic-fn": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz",
+      "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+      "dev": true
+    },
+    "minimatch": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz",
+      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+      "dev": true,
+      "requires": {
+        "brace-expansion": "^1.1.7"
+      }
+    },
+    "minimist": {
+      "version": "1.2.5",
+      "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.5.tgz",
+      "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
+      "dev": true
+    },
+    "mkdirp": {
+      "version": "0.5.5",
+      "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.5.tgz",
+      "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+      "dev": true,
+      "requires": {
+        "minimist": "^1.2.5"
+      }
+    },
+    "ms": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+      "dev": true
+    },
+    "mute-stream": {
+      "version": "0.0.8",
+      "resolved": "https://registry.npmmirror.com/mute-stream/-/mute-stream-0.0.8.tgz",
+      "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
+      "dev": true
+    },
+    "natural-compare": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz",
+      "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+      "dev": true
+    },
+    "nice-try": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmmirror.com/nice-try/-/nice-try-1.0.5.tgz",
+      "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+      "dev": true
+    },
+    "once": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz",
+      "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+      "dev": true,
+      "requires": {
+        "wrappy": "1"
+      }
+    },
+    "onetime": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz",
+      "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+      "dev": true,
+      "requires": {
+        "mimic-fn": "^2.1.0"
+      }
+    },
+    "optionator": {
+      "version": "0.8.3",
+      "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.8.3.tgz",
+      "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
+      "dev": true,
+      "requires": {
+        "deep-is": "~0.1.3",
+        "fast-levenshtein": "~2.0.6",
+        "levn": "~0.3.0",
+        "prelude-ls": "~1.1.2",
+        "type-check": "~0.3.2",
+        "word-wrap": "~1.2.3"
+      }
+    },
+    "os-tmpdir": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+      "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
+      "dev": true
+    },
+    "parent-module": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz",
+      "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+      "dev": true,
+      "requires": {
+        "callsites": "^3.0.0"
+      }
+    },
+    "path-is-absolute": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+      "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+      "dev": true
+    },
+    "path-key": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/path-key/-/path-key-2.0.1.tgz",
+      "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+      "dev": true
+    },
+    "path-parse": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz",
+      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+      "dev": true
+    },
+    "prelude-ls": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.1.2.tgz",
+      "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==",
+      "dev": true
+    },
+    "progress": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmmirror.com/progress/-/progress-2.0.3.tgz",
+      "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+      "dev": true
+    },
+    "punycode": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.1.1.tgz",
+      "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+      "dev": true
+    },
+    "regexpp": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/regexpp/-/regexpp-2.0.1.tgz",
+      "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
+      "dev": true
+    },
+    "resolve": {
+      "version": "1.22.0",
+      "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.0.tgz",
+      "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
+      "dev": true,
+      "requires": {
+        "is-core-module": "^2.8.1",
+        "path-parse": "^1.0.7",
+        "supports-preserve-symlinks-flag": "^1.0.0"
+      }
+    },
+    "resolve-from": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz",
+      "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+      "dev": true
+    },
+    "restore-cursor": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-3.1.0.tgz",
+      "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
+      "dev": true,
+      "requires": {
+        "onetime": "^5.1.0",
+        "signal-exit": "^3.0.2"
+      }
+    },
+    "rimraf": {
+      "version": "2.6.3",
+      "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-2.6.3.tgz",
+      "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
+      "dev": true,
+      "requires": {
+        "glob": "^7.1.3"
+      }
+    },
+    "run-async": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmmirror.com/run-async/-/run-async-2.4.1.tgz",
+      "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
+      "dev": true
+    },
+    "rxjs": {
+      "version": "6.6.7",
+      "resolved": "https://registry.npmmirror.com/rxjs/-/rxjs-6.6.7.tgz",
+      "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
+      "dev": true,
+      "requires": {
+        "tslib": "^1.9.0"
+      }
+    },
+    "safer-buffer": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz",
+      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+      "dev": true
+    },
+    "semver": {
+      "version": "6.3.0",
+      "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
+      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+      "dev": true
+    },
+    "shebang-command": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-1.2.0.tgz",
+      "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+      "dev": true,
+      "requires": {
+        "shebang-regex": "^1.0.0"
+      }
+    },
+    "shebang-regex": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-1.0.0.tgz",
+      "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+      "dev": true
+    },
+    "signal-exit": {
+      "version": "3.0.7",
+      "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz",
+      "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+      "dev": true
+    },
+    "slice-ansi": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-2.1.0.tgz",
+      "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
+      "dev": true,
+      "requires": {
+        "ansi-styles": "^3.2.0",
+        "astral-regex": "^1.0.0",
+        "is-fullwidth-code-point": "^2.0.0"
+      }
+    },
+    "source-map": {
+      "version": "0.5.7",
+      "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.5.7.tgz",
+      "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+      "dev": true
+    },
+    "sprintf-js": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz",
+      "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
+      "dev": true
+    },
+    "string-width": {
+      "version": "4.2.3",
+      "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+      "dev": true,
+      "requires": {
+        "emoji-regex": "^8.0.0",
+        "is-fullwidth-code-point": "^3.0.0",
+        "strip-ansi": "^6.0.1"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "5.0.1",
+          "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
+          "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+          "dev": true
+        },
+        "emoji-regex": {
+          "version": "8.0.0",
+          "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
+          "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+          "dev": true
+        },
+        "is-fullwidth-code-point": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+          "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+          "dev": true
+        },
+        "strip-ansi": {
+          "version": "6.0.1",
+          "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
+          "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^5.0.1"
+          }
+        }
+      }
+    },
+    "strip-ansi": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz",
+      "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+      "dev": true,
+      "requires": {
+        "ansi-regex": "^4.1.0"
+      }
+    },
+    "strip-json-comments": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+      "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+      "dev": true
+    },
+    "supports-color": {
+      "version": "5.5.0",
+      "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz",
+      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+      "dev": true,
+      "requires": {
+        "has-flag": "^3.0.0"
+      }
+    },
+    "supports-preserve-symlinks-flag": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+      "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+      "dev": true
+    },
+    "table": {
+      "version": "5.4.6",
+      "resolved": "https://registry.npmmirror.com/table/-/table-5.4.6.tgz",
+      "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
+      "dev": true,
+      "requires": {
+        "ajv": "^6.10.2",
+        "lodash": "^4.17.14",
+        "slice-ansi": "^2.1.0",
+        "string-width": "^3.0.0"
+      },
+      "dependencies": {
+        "string-width": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmmirror.com/string-width/-/string-width-3.1.0.tgz",
+          "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+          "dev": true,
+          "requires": {
+            "emoji-regex": "^7.0.1",
+            "is-fullwidth-code-point": "^2.0.0",
+            "strip-ansi": "^5.1.0"
+          }
+        }
+      }
+    },
+    "text-table": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz",
+      "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+      "dev": true
+    },
+    "through": {
+      "version": "2.3.8",
+      "resolved": "https://registry.npmmirror.com/through/-/through-2.3.8.tgz",
+      "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
+      "dev": true
+    },
+    "tmp": {
+      "version": "0.0.33",
+      "resolved": "https://registry.npmmirror.com/tmp/-/tmp-0.0.33.tgz",
+      "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+      "dev": true,
+      "requires": {
+        "os-tmpdir": "~1.0.2"
+      }
+    },
+    "to-fast-properties": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+      "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+      "dev": true
+    },
+    "tslib": {
+      "version": "1.14.1",
+      "resolved": "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz",
+      "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+      "dev": true
+    },
+    "type-check": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.3.2.tgz",
+      "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==",
+      "dev": true,
+      "requires": {
+        "prelude-ls": "~1.1.2"
+      }
+    },
+    "type-fest": {
+      "version": "0.8.1",
+      "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.8.1.tgz",
+      "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
+      "dev": true
+    },
+    "uri-js": {
+      "version": "4.4.1",
+      "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz",
+      "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+      "dev": true,
+      "requires": {
+        "punycode": "^2.1.0"
+      }
+    },
+    "v8-compile-cache": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmmirror.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
+      "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
+      "dev": true
+    },
+    "vue-eslint-parser": {
+      "version": "7.11.0",
+      "resolved": "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-7.11.0.tgz",
+      "integrity": "sha512-qh3VhDLeh773wjgNTl7ss0VejY9bMMa0GoDG2fQVyDzRFdiU3L7fw74tWZDHNQXdZqxO3EveQroa9ct39D2nqg==",
+      "dev": true,
+      "requires": {
+        "debug": "^4.1.1",
+        "eslint-scope": "^5.1.1",
+        "eslint-visitor-keys": "^1.1.0",
+        "espree": "^6.2.1",
+        "esquery": "^1.4.0",
+        "lodash": "^4.17.21",
+        "semver": "^6.3.0"
+      }
+    },
+    "which": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmmirror.com/which/-/which-1.3.1.tgz",
+      "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+      "dev": true,
+      "requires": {
+        "isexe": "^2.0.0"
+      }
+    },
+    "word-wrap": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.3.tgz",
+      "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
+      "dev": true
+    },
+    "wrappy": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz",
+      "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+      "dev": true
+    },
+    "write": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/write/-/write-1.0.3.tgz",
+      "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
+      "dev": true,
+      "requires": {
+        "mkdirp": "^0.5.1"
+      }
+    }
+  }
+}

+ 7 - 0
mini/package.json

xqd
@@ -0,0 +1,7 @@
+{
+  "devDependencies": {
+    "babel-eslint": "10.1.0",
+    "eslint": "6.7.2",
+    "eslint-plugin-vue": "6.2.2"
+  }
+}

+ 49 - 0
mini/pages.json

xqd
@@ -0,0 +1,49 @@
+{
+  "easycom": {
+    "^u-(.*)": "@/uni_modules/uview-ui/components/u-$1/u-$1.vue",
+    "layout": "@/layout/index.vue"
+  },
+  "pages": [
+    //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
+    {
+      "path": "pages/login",
+      "style": {
+        "navigationBarTitleText": "极创社剧场",
+        "enablePullDownRefresh": false
+      }
+    }
+  ],
+  "globalStyle": {
+    "navigationBarTextStyle": "white", // black or white
+    "navigationBarTitleText": "极创社",
+    "navigationBarBackgroundColor": "#151728",
+    "backgroundColor": "#151728"
+  },
+  "tabBar": {
+    "custom": true,
+    "color": "#8a8a8a",
+    "selectedColor": "#6EEBE8",
+    "backgroundColor": "#17162B",
+    "borderStyle": "black",
+    "list": [
+      {
+        "pagePath": "pages/index/index",
+        "iconPath": "static/image/tab/home.png",
+        "selectedIconPath": "static/image/tab/home-HL.png",
+        "text": "极创社"
+      },
+      {
+        "pagePath": "pages/trace/index",
+        "iconPath": "static/image/tab/trace.png",
+        "selectedIconPath": "static/image/tab/trace-HL.png",
+        "text": "极创社"
+      },
+      {
+        "pagePath": "pages/my/index",
+        "iconPath": "static/image/tab/my.png",
+        "selectedIconPath": "static/image/tab/my-HL.png",
+        "text": "极创社"
+      }
+    ]
+  }
+}

+ 38 - 0
mini/pages/login.vue

xqd
@@ -0,0 +1,38 @@
+<template>
+  <view class="login" />
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      path: '/pages/index/index'
+    }
+  },
+  computed: {},
+  methods: {
+    login() {
+      this.$loading('登陆中...')
+      this.$api.user.login().then(async res => {
+        this.$hideLoading()
+        const { token, user_info } = res.data
+        await this.$store.dispatch('user/token', token)
+        await this.$store.dispatch('user/info', user_info)
+        uni.reLaunch({
+          url: this.path.replace('//', '/')
+        })
+      })
+    }
+  },
+  onLoad(options) {
+    this.path = options.path ? options.path : this.path
+    this.login()
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+    .login{
+
+    }
+</style>

+ 44 - 0
mini/project.config.json

xqd
@@ -0,0 +1,44 @@
+{
+    "appid": "wx4d0105fabd19dfe2",
+    "compileType": "miniprogram",
+    "libVersion": "2.24.2",
+    "packOptions": {
+        "ignore": [],
+        "include": []
+    },
+    "setting": {
+        "urlCheck": true,
+        "coverView": true,
+        "es6": true,
+        "postcss": true,
+        "lazyloadPlaceholderEnable": false,
+        "preloadBackgroundData": false,
+        "minified": true,
+        "autoAudits": false,
+        "uglifyFileName": false,
+        "uploadWithSourceMap": true,
+        "enhance": true,
+        "useMultiFrameRuntime": true,
+        "showShadowRootInWxmlPanel": true,
+        "packNpmManually": false,
+        "packNpmRelationList": [],
+        "minifyWXSS": true,
+        "useStaticServer": true,
+        "showES6CompileOption": false,
+        "checkInvalidKey": true,
+        "babelSetting": {
+            "ignore": [],
+            "disablePlugins": [],
+            "outputPath": ""
+        },
+        "disableUseStrict": false,
+        "useCompilerPlugins": false,
+        "minifyWXML": true
+    },
+    "condition": {},
+    "editorSetting": {
+        "tabIndent": "insertSpaces",
+        "tabSize": 4
+    },
+    "description": "项目配置文件,详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html"
+}

+ 7 - 0
mini/project.private.config.json

xqd
@@ -0,0 +1,7 @@
+{
+    "projectname": "user",
+    "setting": {
+        "compileHotReLoad": true
+    },
+    "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html"
+}

+ 13 - 0
mini/setting.js

xqd
@@ -0,0 +1,13 @@
+/**
+ * Created by JianJia.Zhou<jianjia.zhou> on 2022/3/18.
+ */
+const IS_DEV = process.env.NODE_ENV === 'development'
+
+module.exports = {
+  // 版本
+  VERSION: '0.0.1',
+  // API 接口URL
+  BASE_URL: IS_DEV ? 'http://www.jcs.me/api' : 'https://t3.9026.com/api',
+  // API 接口URL
+  IMAGE_URL: IS_DEV ? 'http://www.jcs.me/static/image' : 'https://t3.9026.com/static/image'
+}

+ 17 - 0
mini/static/css/common.scss

xqd
@@ -0,0 +1,17 @@
+view,image,text,rich-text,progress,button,input,form,label,textarea{
+  box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+}
+
+page,
+uni-page-body{
+  box-sizing: border-box;
+  height: 100%;
+  background: $bg-color;
+  padding-bottom: 80rpx;
+}
+.hidden{
+  display: flex;
+  visibility: hidden;
+}

+ 266 - 0
mini/static/css/flex.scss

xqd
@@ -0,0 +1,266 @@
+.dir-left-nowrap {
+    /* 主轴 排列方式从左侧开始 不换行*/
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-flex-direction: row;
+    flex-direction: row;
+    flex-wrap: nowrap;
+}
+
+.dir-left-wrap {
+    /* 主轴 排列方式从左侧开始 换行*/
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-flex-direction: row;
+    flex-direction: row;
+    flex-wrap: wrap;
+}
+
+.dir-left-wrap-reverse {
+    /* 主轴 排列方式从左侧开始 换行 第一行在下方*/
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-flex-direction: row;
+    flex-direction: row;
+    flex-wrap: wrap-reverse;
+}
+
+.dir-right-nowrap {
+    /* 主轴 排列方式从 右侧开始 */
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-flex-direction: row-reverse;
+    flex-direction: row-reverse;
+    flex-wrap: nowrap;
+}
+
+.dir-right-wrap {
+    /* 主轴 排列方式从 右侧开始 换行*/
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-flex-direction: row;
+    flex-direction: row;
+    flex-wrap: wrap;
+}
+
+.dir-right-wrap-reverse {
+    /* 主轴 排列方式从 右侧开始 换行 第一行在下方*/
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-flex-direction: row;
+    flex-direction: row;
+    flex-wrap: wrap-reverse;
+}
+
+.dir-top-nowrap {
+    /* 主轴 排列方式从顶部开始 不换行 */
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-box-orient: vertical;
+    -webkit-flex-direction: column;
+    flex-direction: column;
+    flex-wrap: nowrap;
+}
+
+.dir-top-wrap {
+    /* 主轴 排列方式从顶部开始  换行*/
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-box-orient: vertical;
+    -webkit-flex-direction: column;
+    flex-direction: column;
+    flex-wrap: wrap;
+}
+
+.dir-top-wrap-reverse {
+    /* 主轴 排列方式从顶部开始 不换行换行 第一行在下方*/
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-box-orient: vertical;
+    -webkit-flex-direction: column;
+    flex-direction: column;
+    flex-wrap: wrap-reverse;
+}
+
+.dir-bottom-nowrap {
+    /* 主轴 排列方式从底部开始 */
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-flex-direction: column-reverse;
+    flex-direction: column-reverse;
+    flex-wrap: nowrap;
+}
+
+.dir-bottom-wrap {
+    /* 主轴 排列方式从底部开始 不换行 换行*/
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-box-orient: vertical;
+    -webkit-flex-direction: column;
+    flex-direction: column;
+    flex-wrap: wrap;
+}
+
+.dir-bottom-wrap-reverse {
+    /* 主轴 排列方式从底部开始 不换行换行 第一行在下方*/
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-box-orient: vertical;
+    -webkit-flex-direction: column;
+    flex-direction: column;
+    flex-wrap: wrap-reverse;
+}
+
+.main-left {
+    /* 主轴 左对齐 */
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-justify-content: flex-start;
+    justify-content: flex-start;
+}
+
+.main-right {
+    /* 主轴 右对齐 */
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-justify-content: flex-end;
+    justify-content: flex-end;
+}
+
+.main-between {
+    /* 主轴 两端对齐 */
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-justify-content: space-between;
+    justify-content: space-between;
+}
+
+.main-center {
+    /* 主轴 居中对齐 */
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-box-pack: center;
+    -webkit-justify-content: center;
+    -ms-flex-pack: center;
+    justify-content: center;
+}
+
+.main-around {
+    /* 主轴 项目位于各行之前、之间、之后都留有空白的容器内*/
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-justify-content: space-around;
+    justify-content: space-around;
+}
+
+.cross-top {
+    /* 交叉轴 起点对齐 */
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-align-items: flex-start;
+    align-items: flex-start;
+}
+
+.cross-bottom {
+    /* 交叉轴 终点对齐 */
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-box-align: end;
+    -webkit-align-items: flex-end;
+    -ms-flex-align: end;
+    -ms-grid-row-align: flex-end;
+    align-items: flex-end;
+}
+
+.cross-baseline {
+    /* 交叉轴 第一行文字基线对齐 */
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-align-items: baseline;
+    align-items: baseline;
+}
+
+.cross-center {
+    /* 交叉轴 居中对齐 */
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-align-items: center;
+    align-items: center;
+}
+
+.cross-stretch {
+    /* 交叉轴 高度并排铺满 高度不固定*/
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-align-items: stretch;
+    align-items: stretch;
+}
+
+.flex-wrap {
+    /* 流模式 第一行在上方 */
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-flex-wrap: wrap;
+    flex-wrap: wrap;
+}
+
+.flex-wrap-reverse {
+    /* 流模式 第一行在下方 */
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-flex-wrap: wrap-reverse;
+    flex-wrap: wrap-reverse;
+}
+
+.box-grow-0 {
+    /* flex 子元素固定宽度*/
+    min-width: 0;
+    -webkit-box-flex: 0;
+    -webkit-flex-grow: 0;
+    -ms-flex-positive: 0;
+    flex-grow: 0;
+    -webkit-flex-shrink: 0;
+    -ms-flex-negative: 0;
+    flex-shrink: 0;
+}
+
+.box-grow-1 {
+    /* flex 子元素等分 */
+    min-width: 0;
+    -webkit-box-flex: 1;
+    -webkit-flex-grow: 1;
+    -ms-flex-positive: 1;
+    flex-grow: 1;
+    -webkit-flex-shrink: 1;
+    -ms-flex-negative: 1;
+    flex-shrink: 1;
+}
+
+.inline-flex {
+    display: -webkit-inline-flex;
+    display: inline-flex;
+}

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 3 - 0
mini/static/css/iconfont.css


+ 12 - 0
mini/static/css/mixin.scss

xqd
@@ -0,0 +1,12 @@
+@mixin vipBorder(){
+  border: 4rpx solid;
+  border-image: linear-gradient(to bottom, #F58A82,#733213) 1;
+  background: linear-gradient(#783518,#EC857C);
+}
+
+@mixin background(){
+  background: linear-gradient(#4C453D, #201B15);
+}
+@mixin backgroundCancel(){
+  background: linear-gradient(#f5f7fa 0%, #c3cfe2 100%);
+}

+ 172 - 0
mini/static/css/store-buy.scss

xqd
@@ -0,0 +1,172 @@
+@import "@/static/css/mixin";
+.store-buy {
+  background: url("@/static/image/buy-bg.jpg") no-repeat top;
+  background-size: 100% 40vh;
+  background-repeat: no-repeat;
+  padding-top: 50rpx;
+  .card{
+    width: 720rpx;
+    margin: 0 auto;
+  }
+  .card-info{
+    background: url("/static/image/coupon_wait_use.png") no-repeat top right;
+    width: 700rpx;
+    flex-shrink: 0;
+    height: 190rpx;
+    background-size: 100% 100%;
+    .left-box{
+      flex: 1;
+      padding: 0 20rpx;
+      .price{
+        white-space: nowrap;
+        color: #888d93;
+        font-size: 28rpx;
+        .num{
+          color: #E8B388;
+          font-size: 60rpx;
+        }
+      }
+      .info-box{
+        margin-left: 20rpx;
+        .tags{
+          margin-top: 10rpx;
+          .tag{
+            background: #FDE7DA;
+            color: #424751;
+            padding: 3rpx 8rpx;
+            margin-right: 8rpx;
+            font-size: 22rpx;
+            border-radius: 6rpx;
+          }
+        }
+      }
+    }
+    .right-box{
+      width: 165rpx;
+    }
+  }
+  .price-tags{
+    margin-bottom: 50rpx;
+    margin-top: 20rpx;
+    padding: 0 20rpx;
+    .price-tag{
+      flex: 1;
+      color: #fff;
+      font-size: 26rpx;
+      padding: 4rpx 6rpx;
+      white-space: nowrap;
+      &.normal-price{
+        background: linear-gradient(#858A90,#4C525E);
+      }
+      &.sale-price{
+        background: linear-gradient(#504740,#1F1A14);
+        margin: 0 50rpx;
+      }
+      &.vip-price{
+        @include vipBorder;
+        border-width: 1rpx;
+      }
+    }
+  }
+  .store-info{
+    background: #fff;
+    border-radius: 10rpx;
+    padding: 10rpx 30rpx;
+  }
+  .desc{
+    .content{
+      color: $text-deep-grey-color;
+    }
+  }
+  .buy-btn{
+    @include background;
+    color: #fff;
+    width: 90vw;
+    margin: 80rpx auto 0rpx;
+    padding: 20rpx 0;
+    border-radius: 10rpx;
+    bottom: 0;
+    text-align: center;
+  }
+  .buy-popup{
+    padding: 30rpx 0;
+    font-size: 26rpx;
+    .goods-box{
+      padding: 0 30rpx;
+      .cover-img{
+        width: 240rpx;
+        height: 200rpx;
+        >image{
+          width: 100%;
+          height: 100%;
+        }
+      }
+      .goods-info{
+        background: #FEF9F6;
+        flex: 1;
+        padding: 20rpx;
+      }
+    }
+    .spec-box{
+      padding: 0 30rpx;
+      font-size: 26rpx;
+      .name{
+        color: $text-black-color;
+      }
+    }
+    .spec-detail{
+      box-shadow: 0 0 10rpx rgba(0,0,0,.15);
+      border-radius: 12rpx;
+      padding: 32rpx 16rpx;
+      .spec-name{
+        color: $text-black-color;
+        text-align: center;
+        padding-bottom: 22rpx;
+      }
+      .detail-box{
+        height: 150rpx;
+        .detail-item{
+          padding: 12rpx 0;
+          text-align: center;
+          color: $text-grey-color;
+          >text{
+            flex: 1;
+          }
+          .name{
+            flex: 2;
+          }
+        }
+      }
+    }
+    .price-box{
+      padding: 16rpx 32rpx;
+      position: relative;
+      margin-bottom: 16rpx;
+      margin-top: 16rpx;
+      &:after{
+        content: "";
+        position: absolute;
+        height: 1rpx;
+        width: 95%;
+        background: $grey-color;
+        bottom: 0;
+        left: 50%;
+        transform: translateX(-50%);
+      }
+      .normal-price{
+        flex: 1;
+        text{
+          margin-right: 16rpx;
+        }
+      }
+      .goods-num{
+        display: flex;
+        flex: 1;
+        justify-content: flex-end;
+      }
+    }
+    .buy-btn{
+      margin-top: 30rpx;
+    }
+  }
+}

+ 8 - 0
mini/static/css/variable.scss

xqd
@@ -0,0 +1,8 @@
+$bg-color: #151729;
+
+$primary-color: #6EEBE8;
+$dark-color: #48979C;
+$default-color: #FFFFFF;
+$info-color: #6F717F;
+
+$pink-color: #FF74B9;

BIN
mini/static/font/iconfont.eot


+ 46 - 0
mini/static/font/iconfont.svg

xqd
@@ -0,0 +1,46 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
+<metadata>
+Created by FontForge 20170731 at Tue Jun 28 05:30:00 2022
+ By Aleksey,,,
+Created by iconfont
+</metadata>
+<defs>
+<font id="iconfont" horiz-adv-x="1024" >
+  <font-face 
+    font-family="iconfont"
+    font-weight="400"
+    font-stretch="normal"
+    units-per-em="1024"
+    panose-1="2 0 5 3 0 0 0 0 0 0"
+    ascent="896"
+    descent="-128"
+    bbox="0 -128 1077 896"
+    underline-thickness="0"
+    underline-position="10"
+    unicode-range="U+E608-E735"
+  />
+<missing-glyph 
+ />
+    <glyph glyph-name=".notdef" 
+ />
+    <glyph glyph-name=".null" horiz-adv-x="0" 
+ />
+    <glyph glyph-name="nonmarkingreturn" horiz-adv-x="341" 
+ />
+    <glyph glyph-name="dian" unicode="&#xe608;" 
+d="M512 576q51 -1 94 -27.5t68 -70t25 -94.5t-25 -94.5t-68 -70t-94.5 -27t-95.5 25.5t-70 70t-26 96t26 96t70 70t96 26z" />
+    <glyph glyph-name="checked" unicode="&#xe637;" 
+d="M302 481l-72 -71l231 -231l512 512l-72 72l-440 -440zM922 384q0 -111 -57 -206q-54 -93 -147 -147q-95 -57 -206 -57t-206 57q-93 54 -147 147q-57 95 -57 206t57 206q54 93 147 147q95 57 206 57q59 0 113 -16l82 82q-108 36 -195 36q-104 0 -199 -40
+q-92 -39 -163 -110t-110 -163q-40 -95 -40 -199t40 -199q39 -92 110 -163t163 -110q95 -40 199 -40t199 40q92 39 163 110t110 163q40 95 40 199h-102z" />
+    <glyph glyph-name="yue" unicode="&#xe69d;" 
+d="M694 558l2 4q37 46 41 98q2 28 -6.5 51t-28 38t-45.5 18t-53 -8q-39 35 -91 35q-48 0 -85 -31q-29 12 -56.5 9.5t-47.5 -18.5q-19 -14 -28 -37.5t-7 -50.5q5 -52 41 -98l6 -8q-54 -38 -99 -85q-52 -55 -82 -115q-38 -75 -38 -152q0 -127 60 -185q29 -28 69 -37
+q21 -5 46 -4h451q20 0 38 4q40 9 69 37q60 58 60 185q0 80 -41 157q-32 62 -88 119q-40 40 -87 74zM809 65q-26 -26 -73 -25h-446q-18 0 -31 3q-24 5 -42 22q-42 40 -42 143q0 117 105 227q34 36 77 68q23 17 41 28l37 22l-34 26q-14 11 -25 25q-16 20 -23 41.5t-5 38.5
+t11.5 24.5t25.5 6t34 -11.5l21 -12l15 18q11 13 26.5 19.5t32.5 6.5t33 -7.5t27 -21.5l15 -19l22 12q17 9 32 10t24.5 -6.5t11.5 -24.5t-5 -38.5t-23 -41.5q-9 -12 -21 -22l-31 -26l34 -21q36 -23 73 -54q61 -53 97 -111q49 -77 49 -156q-1 -103 -43 -143zM560 467l-47 -98
+l-46 98h-103l85 -163h-74v-31h89v-73h-79v-32h79v-89h98v89h80v32h-80v73h89v31h-74l85 163h-102z" />
+    <glyph glyph-name="wechat" unicode="&#xe735;" horiz-adv-x="1076" 
+d="M410 252q-22 -13 -38 -13q-14 1 -23 9q-6 6 -10 16l-3 9l-80 194q-14 40 -7 51q5 8 20 0q9 -5 14 -10q2 -2 29 -22q35 -26 58.5 -40.5t54.5 -12.5q15 2 26 6l528 251q-75 95 -189 150q-117 56 -252 56q-109 0 -209 -38q-97 -37 -171.5 -104t-115.5 -154q-42 -90 -42 -189
+q0 -113 55 -214q54 -98 149 -166l-24 -142q0 -10 5 -14q7 -5 24 3q30 14 130 83q96 -35 199 -35q110 0 210 38q97 37 171.5 104t114.5 154q43 90 43 189q0 114 -57 216q-555 -344 -610 -375z" />
+  </font>
+</defs></svg>

BIN
mini/static/font/iconfont.ttf


BIN
mini/static/font/iconfont.woff


BIN
mini/static/font/iconfont.woff2


BIN
mini/static/image/default-head-img.png


BIN
mini/static/image/default-movie.png


BIN
mini/static/image/gold-bag.png


BIN
mini/static/image/gold.png


BIN
mini/static/image/member-line-bg.png


BIN
mini/static/image/member-selected-bg.png


BIN
mini/static/image/my-page/contact.png


BIN
mini/static/image/my-page/order.png


BIN
mini/static/image/my-page/protocol.png


BIN
mini/static/image/my-page/recharge.png


BIN
mini/static/image/my-page/share.png


BIN
mini/static/image/my-recharge-bg.png


BIN
mini/static/image/playing.png


BIN
mini/static/image/tab/home-HL.png


BIN
mini/static/image/tab/home.png


BIN
mini/static/image/tab/my-HL.png


BIN
mini/static/image/tab/my.png


BIN
mini/static/image/tab/trace-HL.png


BIN
mini/static/image/tab/trace.png


BIN
mini/static/image/video.png


+ 8 - 0
mini/store/getters.js

xqd
@@ -0,0 +1,8 @@
+
+const getters = {
+  token: state => state.user.token,
+  userInfo: state => state.user.info,
+  tabIndex: state => state.tab.index
+}
+export default getters
+

+ 17 - 0
mini/store/index.js

xqd
@@ -0,0 +1,17 @@
+import Vue from 'vue'
+import Vuex from 'vuex'
+import getters from './getters'
+import user from './modules/user'
+import tab from './modules/tab'
+
+Vue.use(Vuex)
+
+const store = new Vuex.Store({
+  modules: {
+    user,
+    tab
+  },
+  getters
+})
+
+export default store

+ 31 - 0
mini/store/modules/tab.js

xqd
@@ -0,0 +1,31 @@
+import Cache from '@/utils/cache'
+import Constant from '@/utils/constant'
+const val = Cache.get(Constant.CACHE_TAB_SELECTED)
+const getDefaultState = () => {
+  return {
+    index: val === undefined ? 1 : val
+  }
+}
+
+const state = getDefaultState()
+
+const mutations = {
+  SET_INDEX: (state, index) => {
+    Cache.set(Constant.CACHE_TAB_SELECTED, index)
+    state.index = index
+  }
+}
+
+const actions = {
+  index({ commit }, index) {
+    commit('SET_INDEX', index)
+  }
+}
+
+export default {
+  namespaced: true,
+  state,
+  mutations,
+  actions
+}
+

+ 38 - 0
mini/store/modules/user.js

xqd
@@ -0,0 +1,38 @@
+import { getToken, setToken } from '@/utils/auth'
+import Cache from '@/utils/cache'
+const getDefaultState = () => {
+  return {
+    token: getToken(),
+    info: Cache.get('userInfo')
+  }
+}
+
+const state = getDefaultState()
+
+const mutations = {
+  SET_TOKEN: (state, token) => {
+    setToken(token)
+    state.token = token
+  },
+  SET_INFO: (state, info) => {
+    Cache.set('userInfo', info)
+    state.info = info
+  }
+}
+
+const actions = {
+  token({ commit }, token) {
+    commit('SET_TOKEN', token)
+  },
+  info({ commit }, info) {
+    commit('SET_INFO', info)
+  }
+}
+
+export default {
+  namespaced: true,
+  state,
+  mutations,
+  actions
+}
+

+ 213 - 0
mini/types-tips-test/miniprogram-api-typings/CHANGELOG.md

xqd
@@ -0,0 +1,213 @@
+## 2022-01-20 v3.4.5
+- 更新 API 定义到 2.21.3
+
+## 2021-08-24 v3.4.4
+- 更新 API 定义到 2.20.1
+
+## 2021-08-24 v3.4.3
+- 更新 API 定义到 2.19.2
+- 补充自定义组件获取更新性能接口定义
+
+## 2021-08-02 v3.4.2
+- 更新 API 定义到 2.19.0
+- 重新整理了注释,包括:
+  - 加入插件支持情况、版本和说明
+  - 将支持和废弃情况挪到前面,使其更不容易因为接口说明太长而被忽略
+  - 移除文首、文末和多余(连续超过两个)的空行
+  - 修复几个链接
+
+## 2021-07-07 v3.4.1
+- 移除一个意外加入的非预期字符
+
+## 2021-07-07 v3.4.0
+- 更新 API 定义到 2.18.0
+- 更新来自文档代码示例的测试用例
+- 更新 npm 依赖以解决安全问题
+- 修复 [#202](https://github.com/wechat-miniprogram/api-typings/issues/202), [#204](https://github.com/wechat-miniprogram/api-typings/issues/204)
+
+## 2021-04-21 v3.3.2
+- 更新 API 定义到 2.16.1
+
+## 2021-04-09 v3.3.1
+- 更新 API 定义到 2.16.0
+
+## 2021-03-02 v3.3.0
+- 更新部分新接口定义
+- 支持泛型([#177](https://github.com/wechat-miniprogram/api-typings/issues/177))
+- 支持索引签名,以支持 `wx.requestSubscribeMessage`([#175](https://github.com/wechat-miniprogram/api-typings/issues/175))
+
+## 2021-02-22 v3.2.3
+- 更新 API 定义到 2.15.0
+- 修复 `Component.triggerEvent` 的 `detail` 类型
+- 修复几个接口的定义([#193](https://github.com/wechat-miniprogram/api-typings/issues/193), [#185](https://github.com/wechat-miniprogram/api-typings/issues/185), [#180](https://github.com/wechat-miniprogram/api-typings/issues/180))
+- 修改 `MethodOption` 以解决 [#161](https://github.com/wechat-miniprogram/api-typings/issues/161)(鸣谢:[@Lienviws](https://github.com/Lienviws))
+
+## 2021-01-14 v3.2.2
+- 修复几个接口未 Promise 化的问题
+
+## 2021-01-06 v3.2.1
+- 更新 API 定义到 2.14.1
+- 补齐 `virtualHost` ([#174](https://github.com/wechat-miniprogram/api-typings/issues/174))
+
+## 2020-11-13 v3.2.0
+- 更新 API 定义到 2.14.0
+- 补齐 NFC 接口的错误码
+
+## 2020-11-04 v3.1.6
+- 补齐 `requirePlugin` 和 `requireMiniProgram`
+
+## 2020-10-29 v3.1.5
+- 更新 API 定义
+- 修复代码格式问题(`no-unnecessary-qualifier`)
+
+## 2020-10-28 v3.1.4
+- 更新 API 定义到 2.13.2
+- 为被废弃的接口增加了 `@deprecated` 标识
+
+## 2020-10-14 v3.1.3
+- 修复 `ICustomTimelineContent` 的 `query` 的类型
+
+## 2020-09-30 v3.1.2
+- 更新 API 定义到 2.13.1
+
+## 2020-09-24 v3.1.1
+- 更新 API 定义到 2.13.0
+- 改变了嵌套命名空间的写法
+- 支持 `Component` 的第五个泛型参数,用于将自定义组件作为页面根组件使用的情况
+
+## 2020-09-22 v3.1.0
+- 将代码风格检查从 tslint 迁移到 eslint
+
+## 2020-08-19 v3.0.2
+- 更新 API 定义
+- 合并 PR [#151](https://github.com/wechat-miniprogram/api-typings/pull/151), [#152](https://github.com/wechat-miniprogram/api-typings/pull/152),补齐事件类型,补齐 `onShareTimeline`
+
+## 2020-08-19 v3.0.2
+- 更新 API 定义
+- 合并 PR [#124](https://github.com/wechat-miniprogram/api-typings/pull/124), [#145](https://github.com/wechat-miniprogram/api-typings/pull/145),修复两个动画接口的问题
+
+## 2020-08-03 v3.0.1
+- 更新 API 定义
+- 修复某些取消监听的接口(`off`)的参数不为可选值的问题
+
+## 2020-07-30 v3.0.0
+- 由于基础库接口基本向前兼容,不再与基础库保持版本同步
+- 更新 API 定义到 2.12.0
+
+## 2020-06-15 v2.11.0-1
+- 该版本继续合并了一部分完全相同的 interface / callback,是一个 **破坏性改动**,原本字面上引用了这些 interface / callback 的代码可能会报错。
+- 为 `Component` 构造器增加第四个泛型,以允许在自定义组件上挂载自定义的字段 ([#133](https://github.com/wechat-miniprogram/api-typings/issues/133))
+- 修复一些接口错误 ([#134](https://github.com/wechat-miniprogram/api-typings/issues/134))
+- 补齐 `App` 的 `onThemeChange` ([#135](https://github.com/wechat-miniprogram/api-typings/issues/135))
+- 补齐 `Page` 的 `onAddToFavorites` ([#136](https://github.com/wechat-miniprogram/api-typings/issues/136))
+
+## 2020-05-20 v2.11.0
+- 同步 API 定义到基础库 2.11.0
+- 该版本继续合并了一部分完全相同的 interface / callback,是一个 **破坏性改动**,原本字面上引用了这些 interface / callback 的代码可能会报错。
+- 修复接口错误 ([#126](https://github.com/wechat-miniprogram/api-typings/issues/126))
+
+## 2020-04-20 v2.10.4
+- 同步 API 定义到基础库 2.10.4
+- 在之前的版本中,分属于不同接口的两个 interface / callback 即使完全相同,也会拥有不同的名字。在这次更新中,他们将合并为同一个(如 `FileSystemManagerGetFileInfoCompleteCallback` 和 `WxGetFileInfoCompleteCallback` 都变成了 `GetFileInfoCompleteCallback`)。这是一个 **破坏性改动**,原本字面上引用了这些 interface / callback 的代码可能会报错。
+- 修复了一些取消监听接口(off callback)的参数错误 ([#120](https://github.com/wechat-miniprogram/api-typings/issues/120))
+
+## 2020-04-03 v2.10.3-1
+- 补齐 `Component` 的 `getOpenerEventChannel` ([#112](https://github.com/wechat-miniprogram/api-typings/issues/113) by [@baranwang](https://github.com/baranwang))
+- 加入了部分事件的定义 ([#115](https://github.com/wechat-miniprogram/api-typings/issues/115) by [@zenml](https://github.com/zenml))
+- 更新了小程序·云开发的 API 定义 ([#92](https://github.com/wechat-miniprogram/api-typings/issues/92))
+
+## 2020-03-26 v2.10.3
+- 同步 API 定义到基础库 2.10.3
+
+## 2020-03-18 v2.10.2-1
+- 支持 API Promise 化调用 ([#105](https://github.com/wechat-miniprogram/api-typings/issues/105)) 
+
+## 2020-03-06 v2.10.2
+- 同步 API 定义到基础库 2.10.2
+
+## 2020-02-10 v2.10.1-1
+- 允许重写部分全局变量 (由 `const` 改为 `let`)  ([#102](https://github.com/wechat-miniprogram/api-typings/issues/102)) 
+- 补齐 `Page` 上的 `options` 字段 ([#101](https://github.com/wechat-miniprogram/api-typings/issues/101) by [@baranwang](https://github.com/baranwang)) 
+
+## 2020-01-19 v2.10.1
+- 同步 API 定义到基础库 2.10.1
+- 补齐 `Component` `selectOwnerComponent`, `animate`, `clearAnimation` ([#96](https://github.com/wechat-miniprogram/api-typings/issues/96)) 
+- 补齐 `App` `onUnhandledRejection` ([#99](https://github.com/wechat-miniprogram/api-typings/issues/99)) 
+
+## 2020-01-07 v2.10.0-1
+- 修复接口错误 ([#95](https://github.com/wechat-miniprogram/api-typings/issues/95)) 
+
+## 2020-01-07 v2.10.0
+- 同步 API 定义到基础库 2.10.0
+
+## 2019-12-20 v2.9.4
+- 同步 API 定义到基础库 2.9.4
+- 修正一些接口错误 ([#88](https://github.com/wechat-miniprogram/api-typings/issues/88),[#89](https://github.com/wechat-miniprogram/api-typings/issues/89),[#91](https://github.com/wechat-miniprogram/api-typings/issues/91)) 
+
+## 2019-12-06 v2.9.3
+- 同步 API 定义到基础库 2.9.3
+- 补齐 `Component` 纯数据字段 (`pureDataPattern`) 
+- 支持 `Component` 的属性监听器使用 `string` 类型
+
+## 2019-11-14 v2.9.2
+- 同步 API 定义到基础库 2.9.2
+- 补齐 `Behaviors` 中缺少的一些选项
+
+## 2019-11-06 v2.9.1
+- 同步 API 定义到基础库 2.9.1
+
+## 2019-10-23 v2.9.0
+- 同步 API 定义到基础库 2.9.0
+
+## 2019-10-10 v2.8.3-1
+- 修复注释文档中不可用的链接
+- 组件实例类型支持 `Partial` 的自定义方法 ([用例](https://github.com/wechat-miniprogram/api-typings/blob/master/test/issue.test.ts#L170-L185)) 
+
+## 2019-09-19 v2.8.3
+- 同步 API 定义到基础库 2.8.3
+- `getApp` 支持范型 ([#77](https://github.com/wechat-miniprogram/api-typings/issues/77)) 
+- 修正一些接口错误 ([#73](https://github.com/wechat-miniprogram/api-typings/issues/73), [#75](https://github.com/wechat-miniprogram/api-typings/issues/75), [#79](https://github.com/wechat-miniprogram/api-typings/issues/79)) 
+- 补齐 `require`, `exports`, `module.exports` 定义,以支持在没有 `@types/node` 下编译
+
+## 2019-09-10 v2.8.2
+- 同步 API 定义到基础库 2.8.2
+- 加强了参数为可选值的方法参数类型定义和注释 (如 `FileSystemManager.appendFileSync` 的 `encoding`) 
+
+## 2019-08-30 v2.8.1
+- 同步 API 定义到基础库 2.8.1
+- 修复了部分最低基础库显示为 `[object Object]` 的问题
+
+## 2019-08-20 v2.8.0-2
+
+- 将 `object` 改为 `Record<string, any>`,以允许任意属性和方法
+- 自定义组件属性构造器为 `ObjectConstructor` 时,类型推导为 `Record<string, any>` 而不是 `object`
+- 修正 `component` 参数的类型为页面或自定义组件实例
+- 补齐 `console: WechatMiniprogram.Console` 全局变量
+- 修正一些其他的接口类型错误
+
+## 2019-08-14 v2.8.0-1
+
+- 补齐 `styleIsolation` 到 `ComponentOption`
+
+## 2019-08-14 v2.8.0
+
+- 同步 API 定义到基础库 2.8.0
+- 不再向全局暴露 `IAnyObject`,收回到命名空间 `WechatMiniprogram` 内
+- 对齐代码规范,使用 4 空格缩进,不再使用分号等
+- 小幅改动 behavior, component 和 page 的定义,使其对 data 和 properties 等的类型推断更准确
+- 修复了一些其他问题 ([#60](https://github.com/wechat-miniprogram/api-typings/issues/60), [#59](https://github.com/wechat-miniprogram/api-typings/issues/59), [#48](https://github.com/wechat-miniprogram/api-typings/issues/48), [#47](https://github.com/wechat-miniprogram/api-typings/issues/47), [#45](https://github.com/wechat-miniprogram/api-typings/issues/45), [#33](https://github.com/wechat-miniprogram/api-typings/issues/33), [#13](https://github.com/wechat-miniprogram/api-typings/issues/13)) 
+
+## 2019-08-08 v2.7.7-2
+
+- 补齐了部分接口 fail 回调的错误码 ([#51](https://github.com/wechat-miniprogram/api-typings/issues/51)) 
+
+## 2019-08-06 v2.7.7-1
+
+- 重写了 page, component 和 behavior 的定义,替换原来不完整的定义,使其更全面,更准确 ([#46](https://github.com/wechat-miniprogram/api-typings/issues/46), [#40](https://github.com/wechat-miniprogram/api-typings/issues/40), [#30](https://github.com/wechat-miniprogram/api-typings/issues/30), [#28](https://github.com/wechat-miniprogram/api-typings/issues/28), [#27](https://github.com/wechat-miniprogram/api-typings/issues/27)) 
+
+## 2019-07-31 v2.7.7
+
+- 同步 API 定义到基础库 2.7.7
+- 将命名空间从 `Wx` 更改为更正式的 `WechatMiniprogram`,这是一个 **破坏性改动**,原本字面上引用了 `Wx` 命名空间的代码可能失效
+- 修复了云开发的定义无法使用的问题 ([#25](https://github.com/wechat-miniprogram/api-typings/issues/25), [#32](https://github.com/wechat-miniprogram/api-typings/issues/32), [#42](https://github.com/wechat-miniprogram/api-typings/issues/42)) 
+- 修复了一些其它问题 ([#11](https://github.com/wechat-miniprogram/api-typings/issues/11), [#35](https://github.com/wechat-miniprogram/api-typings/issues/35), [#43](https://github.com/wechat-miniprogram/api-typings/issues/43))

+ 21 - 0
mini/types-tips-test/miniprogram-api-typings/LICENSE

xqd
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2019 
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.

+ 63 - 0
mini/types-tips-test/miniprogram-api-typings/README-en.md

xqd
@@ -0,0 +1,63 @@
+# Wechat Mini Program API Typings
+
+> [中文版本](./README.md)
+
+[![Published on DefinitelyTyped](https://img.shields.io/npm/v/@types/wechat-miniprogram?label=%40types)](https://www.npmjs.com/package/@types/wechat-miniprogram)
+[![Published on NPM](https://img.shields.io/npm/v/miniprogram-api-typings.svg?style=flat)](https://www.npmjs.com/package/miniprogram-api-typings)
+[![MIT License](https://img.shields.io/github/license/wechat-miniprogram/api-typings.svg)](https://github.com/wechat-miniprogram/api-typings)
+[![GitHub Actions Test Status](https://github.com/wechat-miniprogram/api-typings/actions/workflows/test.yml/badge.svg?branch=master)](https://github.com/wechat-miniprogram/api-typings/actions/workflows/test.yml)
+
+Type definitions for APIs of Wechat Mini Program in TypeScript
+
+## Install
+
+### By DefinitelyTyped
+
+```bash
+npm install @types/wechat-miniprogram
+```
+
+or:
+
+### By standalone npm package
+
+```bash
+npm install miniprogram-api-typings
+```
+
+Manually import it after installed:
+
+- `import 'miniprogram-api-typings';`
+
+Or specify types in typescript config:
+
+- Specify `types: ["miniprogram-api-typings"]` in `tsconfig.json`
+
+Or reference by [Triple-Slash Directives](https://www.typescriptlang.org/docs/handbook/triple-slash-directives.html):
+
+- `/// <reference path="node_modules/miniprogram-api-typings/index.d.ts" />`
+
+## Changelog
+
+See [CHANGELOG.md](https://github.com/wechat-miniprogram/api-typings/blob/master/CHANGELOG.md) (Chinese only)
+
+## Contribution
+
+Definitions of Wechat APIs (`lib.wx.api.d.ts`) are auto-generated together with our [documentations](https://developers.weixin.qq.com/miniprogram/en/dev/api/), therefore PRs including that file will __not__ be merged. If you found some APIs defined wrongly, create an issue instead.
+
+Both PR and issue are welcomed for definitions of pages (`Page`), custom components (`Component`) and other else, since they are written manually. Help us improve this definition if you have any bug reports or suggestions! Thanks for contributing!
+
+### Contributors
+
+- [Baran](https://github.com/baranwang)
+- [MinLiang Zeng](https://github.com/zenml/)
+- [Garfield Lee](https://github.com/Garfield550)
+- [Mr.Hope](https://github.com/Mister-Hope)
+
+### Automated tests
+
+We use [`tsd`](https://github.com/SamVerschueren/tsd) to check if this definition is working properly. All test cases are under folder `test`.
+
+To perform an automated test, clone this repo, `npm install --save-dev` and `npm test`.
+
+If you have test case that fails the test, an issue or PR will be great. Strong test case that passes are also welcomed.

+ 64 - 0
mini/types-tips-test/miniprogram-api-typings/README.md

xqd
@@ -0,0 +1,64 @@
+# 微信小程序定义文件
+
+> [English version](./README-en.md)
+
+[![已在 DefinitelyTyped 发布](https://img.shields.io/npm/v/@types/wechat-miniprogram?label=%40types)](https://www.npmjs.com/package/@types/wechat-miniprogram)
+[![已在 NPM 发布](https://img.shields.io/npm/v/miniprogram-api-typings.svg?style=flat)](https://www.npmjs.com/package/miniprogram-api-typings)
+[![MIT 协议](https://img.shields.io/github/license/wechat-miniprogram/api-typings.svg)](https://github.com/wechat-miniprogram/api-typings)
+[![GitHub Actions 测试状况](https://github.com/wechat-miniprogram/api-typings/actions/workflows/test.yml/badge.svg?branch=master)](https://github.com/wechat-miniprogram/api-typings/actions/workflows/test.yml)
+
+微信小程序 API 的 TypeScript 类型定义文件
+
+## 安装
+
+### 通过 DefinitelyTyped
+
+```bash
+npm install @types/wechat-miniprogram
+```
+
+或:
+
+### 通过独立 npm 包
+
+```bash
+npm install miniprogram-api-typings
+```
+
+安装后手动导入:
+
+- `import 'miniprogram-api-typings';`
+
+或者在 ts 配置中指定:
+
+- 在 `tsconfig.json` 中指定 `types: ["miniprogram-api-typings"]`
+
+或者通过 [三斜杠指令](https://www.tslang.cn/docs/handbook/triple-slash-directives.html) 引用:
+
+- `/// <reference path="node_modules/miniprogram-api-typings/index.d.ts" />`
+
+## 更新日志
+
+参考 [CHANGELOG.md](https://github.com/wechat-miniprogram/api-typings/blob/master/CHANGELOG.md)
+
+## 贡献
+
+API 的定义文件(`lib.wx.api.d.ts`)是随 [文档](https://developers.weixin.qq.com/miniprogram/dev/api/) 一起自动生成的,如果发现了 API 接口的定义错误,请提一个 issue 给我们,关于 API 的 PR 将 __不会__ 被接受。
+
+如果有针对页面(`Page`)、自定义组件(`Component`)等接口的 bug 和建议,欢迎 PR 或提一个 issue 给我们。非常感谢!
+
+### 贡献者
+
+- [Baran](https://github.com/baranwang)
+- [MinLiang Zeng](https://github.com/zenml/)
+- [Garfield Lee](https://github.com/Garfield550)
+- [Mr.Hope](https://github.com/Mister-Hope)
+- [chs97](https://github.com/chs97)
+
+### 测试
+
+本定义文件使用 [`tsd`](https://github.com/SamVerschueren/tsd) 进行测试,所有的测试样例放在 `test` 目录下。
+
+想执行测试的话,克隆本项目并完成 `npm install --save-dev` 后执行 `npm test` 即可。
+
+如果您发现了不能通过自动化测试的测试样例,可以提交 PR 或者提一个 issue。当然,能通过自动化测试的强有力的测试样例也是欢迎的。

+ 1 - 0
mini/types-tips-test/miniprogram-api-typings/index.d.ts

xqd
@@ -0,0 +1 @@
+/// <reference path="./types/index.d.ts" />

+ 2662 - 0
mini/types-tips-test/miniprogram-api-typings/package-lock.json

xqd
@@ -0,0 +1,2662 @@
+{
+  "name": "miniprogram-api-typings",
+  "version": "3.4.5",
+  "lockfileVersion": 1,
+  "requires": true,
+  "dependencies": {
+    "@babel/code-frame": {
+      "version": "7.12.11",
+      "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.12.11.tgz",
+      "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==",
+      "dev": true,
+      "requires": {
+        "@babel/highlight": "^7.10.4"
+      }
+    },
+    "@babel/helper-validator-identifier": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
+      "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
+      "dev": true
+    },
+    "@babel/highlight": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.18.6.tgz",
+      "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-validator-identifier": "^7.18.6",
+        "chalk": "^2.0.0",
+        "js-tokens": "^4.0.0"
+      },
+      "dependencies": {
+        "chalk": {
+          "version": "2.4.2",
+          "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz",
+          "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^3.2.1",
+            "escape-string-regexp": "^1.0.5",
+            "supports-color": "^5.3.0"
+          }
+        },
+        "escape-string-regexp": {
+          "version": "1.0.5",
+          "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+          "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+          "dev": true
+        }
+      }
+    },
+    "@babel/parser": {
+      "version": "7.17.8",
+      "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.17.8.tgz",
+      "integrity": "sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ=="
+    },
+    "@eslint/eslintrc": {
+      "version": "0.4.3",
+      "resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz",
+      "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==",
+      "dev": true,
+      "requires": {
+        "ajv": "^6.12.4",
+        "debug": "^4.1.1",
+        "espree": "^7.3.0",
+        "globals": "^13.9.0",
+        "ignore": "^4.0.6",
+        "import-fresh": "^3.2.1",
+        "js-yaml": "^3.13.1",
+        "minimatch": "^3.0.4",
+        "strip-json-comments": "^3.1.1"
+      },
+      "dependencies": {
+        "ignore": {
+          "version": "4.0.6",
+          "resolved": "https://registry.npmmirror.com/ignore/-/ignore-4.0.6.tgz",
+          "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
+          "dev": true
+        }
+      }
+    },
+    "@humanwhocodes/config-array": {
+      "version": "0.5.0",
+      "resolved": "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz",
+      "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==",
+      "dev": true,
+      "requires": {
+        "@humanwhocodes/object-schema": "^1.2.0",
+        "debug": "^4.1.1",
+        "minimatch": "^3.0.4"
+      }
+    },
+    "@humanwhocodes/object-schema": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmmirror.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
+      "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
+      "dev": true
+    },
+    "@nodelib/fs.scandir": {
+      "version": "2.1.5",
+      "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+      "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+      "dev": true,
+      "requires": {
+        "@nodelib/fs.stat": "2.0.5",
+        "run-parallel": "^1.1.9"
+      }
+    },
+    "@nodelib/fs.stat": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+      "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+      "dev": true
+    },
+    "@nodelib/fs.walk": {
+      "version": "1.2.8",
+      "resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+      "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+      "dev": true,
+      "requires": {
+        "@nodelib/fs.scandir": "2.1.5",
+        "fastq": "^1.6.0"
+      }
+    },
+    "@sindresorhus/is": {
+      "version": "0.14.0",
+      "resolved": "https://registry.npmmirror.com/@sindresorhus/is/-/is-0.14.0.tgz",
+      "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==",
+      "dev": true
+    },
+    "@szmarczak/http-timer": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz",
+      "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==",
+      "dev": true,
+      "requires": {
+        "defer-to-connect": "^1.0.1"
+      }
+    },
+    "@types/eslint": {
+      "version": "7.29.0",
+      "resolved": "https://registry.npmmirror.com/@types/eslint/-/eslint-7.29.0.tgz",
+      "integrity": "sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==",
+      "dev": true,
+      "requires": {
+        "@types/estree": "*",
+        "@types/json-schema": "*"
+      }
+    },
+    "@types/estree": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.0.tgz",
+      "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==",
+      "dev": true
+    },
+    "@types/json-schema": {
+      "version": "7.0.11",
+      "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.11.tgz",
+      "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
+      "dev": true
+    },
+    "@types/minimist": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmmirror.com/@types/minimist/-/minimist-1.2.2.tgz",
+      "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==",
+      "dev": true
+    },
+    "@types/normalize-package-data": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmmirror.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz",
+      "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==",
+      "dev": true
+    },
+    "@typescript-eslint/eslint-plugin": {
+      "version": "4.33.0",
+      "resolved": "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz",
+      "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==",
+      "dev": true,
+      "requires": {
+        "@typescript-eslint/experimental-utils": "4.33.0",
+        "@typescript-eslint/scope-manager": "4.33.0",
+        "debug": "^4.3.1",
+        "functional-red-black-tree": "^1.0.1",
+        "ignore": "^5.1.8",
+        "regexpp": "^3.1.0",
+        "semver": "^7.3.5",
+        "tsutils": "^3.21.0"
+      }
+    },
+    "@typescript-eslint/experimental-utils": {
+      "version": "4.33.0",
+      "resolved": "https://registry.npmmirror.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz",
+      "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==",
+      "dev": true,
+      "requires": {
+        "@types/json-schema": "^7.0.7",
+        "@typescript-eslint/scope-manager": "4.33.0",
+        "@typescript-eslint/types": "4.33.0",
+        "@typescript-eslint/typescript-estree": "4.33.0",
+        "eslint-scope": "^5.1.1",
+        "eslint-utils": "^3.0.0"
+      }
+    },
+    "@typescript-eslint/parser": {
+      "version": "4.33.0",
+      "resolved": "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-4.33.0.tgz",
+      "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==",
+      "dev": true,
+      "requires": {
+        "@typescript-eslint/scope-manager": "4.33.0",
+        "@typescript-eslint/types": "4.33.0",
+        "@typescript-eslint/typescript-estree": "4.33.0",
+        "debug": "^4.3.1"
+      }
+    },
+    "@typescript-eslint/scope-manager": {
+      "version": "4.33.0",
+      "resolved": "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz",
+      "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==",
+      "dev": true,
+      "requires": {
+        "@typescript-eslint/types": "4.33.0",
+        "@typescript-eslint/visitor-keys": "4.33.0"
+      }
+    },
+    "@typescript-eslint/types": {
+      "version": "4.33.0",
+      "resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-4.33.0.tgz",
+      "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==",
+      "dev": true
+    },
+    "@typescript-eslint/typescript-estree": {
+      "version": "4.33.0",
+      "resolved": "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz",
+      "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==",
+      "dev": true,
+      "requires": {
+        "@typescript-eslint/types": "4.33.0",
+        "@typescript-eslint/visitor-keys": "4.33.0",
+        "debug": "^4.3.1",
+        "globby": "^11.0.3",
+        "is-glob": "^4.0.1",
+        "semver": "^7.3.5",
+        "tsutils": "^3.21.0"
+      }
+    },
+    "@typescript-eslint/visitor-keys": {
+      "version": "4.33.0",
+      "resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz",
+      "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==",
+      "dev": true,
+      "requires": {
+        "@typescript-eslint/types": "4.33.0",
+        "eslint-visitor-keys": "^2.0.0"
+      }
+    },
+    "@vue/compiler-core": {
+      "version": "3.2.31",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.31.tgz",
+      "integrity": "sha512-aKno00qoA4o+V/kR6i/pE+aP+esng5siNAVQ422TkBNM6qA4veXiZbSe8OTXHXquEi/f6Akc+nLfB4JGfe4/WQ==",
+      "requires": {
+        "@babel/parser": "^7.16.4",
+        "@vue/shared": "3.2.31",
+        "estree-walker": "^2.0.2",
+        "source-map": "^0.6.1"
+      }
+    },
+    "@vue/compiler-dom": {
+      "version": "3.2.31",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.31.tgz",
+      "integrity": "sha512-60zIlFfzIDf3u91cqfqy9KhCKIJgPeqxgveH2L+87RcGU/alT6BRrk5JtUso0OibH3O7NXuNOQ0cDc9beT0wrg==",
+      "requires": {
+        "@vue/compiler-core": "3.2.31",
+        "@vue/shared": "3.2.31"
+      }
+    },
+    "@vue/compiler-sfc": {
+      "version": "3.2.31",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.2.31.tgz",
+      "integrity": "sha512-748adc9msSPGzXgibHiO6T7RWgfnDcVQD+VVwYgSsyyY8Ans64tALHZANrKtOzvkwznV/F4H7OAod/jIlp/dkQ==",
+      "requires": {
+        "@babel/parser": "^7.16.4",
+        "@vue/compiler-core": "3.2.31",
+        "@vue/compiler-dom": "3.2.31",
+        "@vue/compiler-ssr": "3.2.31",
+        "@vue/reactivity-transform": "3.2.31",
+        "@vue/shared": "3.2.31",
+        "estree-walker": "^2.0.2",
+        "magic-string": "^0.25.7",
+        "postcss": "^8.1.10",
+        "source-map": "^0.6.1"
+      }
+    },
+    "@vue/compiler-ssr": {
+      "version": "3.2.31",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.31.tgz",
+      "integrity": "sha512-mjN0rqig+A8TVDnsGPYJM5dpbjlXeHUm2oZHZwGyMYiGT/F4fhJf/cXy8QpjnLQK4Y9Et4GWzHn9PS8AHUnSkw==",
+      "requires": {
+        "@vue/compiler-dom": "3.2.31",
+        "@vue/shared": "3.2.31"
+      }
+    },
+    "@vue/devtools-api": {
+      "version": "6.1.3",
+      "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.1.3.tgz",
+      "integrity": "sha512-79InfO2xHv+WHIrH1bHXQUiQD/wMls9qBk6WVwGCbdwP7/3zINtvqPNMtmSHXsIKjvUAHc8L0ouOj6ZQQRmcXg==",
+      "dev": true
+    },
+    "@vue/reactivity": {
+      "version": "3.2.31",
+      "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.31.tgz",
+      "integrity": "sha512-HVr0l211gbhpEKYr2hYe7hRsV91uIVGFYNHj73njbARVGHQvIojkImKMaZNDdoDZOIkMsBc9a1sMqR+WZwfSCw==",
+      "requires": {
+        "@vue/shared": "3.2.31"
+      }
+    },
+    "@vue/reactivity-transform": {
+      "version": "3.2.31",
+      "resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.2.31.tgz",
+      "integrity": "sha512-uS4l4z/W7wXdI+Va5pgVxBJ345wyGFKvpPYtdSgvfJfX/x2Ymm6ophQlXXB6acqGHtXuBqNyyO3zVp9b1r0MOA==",
+      "requires": {
+        "@babel/parser": "^7.16.4",
+        "@vue/compiler-core": "3.2.31",
+        "@vue/shared": "3.2.31",
+        "estree-walker": "^2.0.2",
+        "magic-string": "^0.25.7"
+      }
+    },
+    "@vue/runtime-core": {
+      "version": "3.2.31",
+      "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.31.tgz",
+      "integrity": "sha512-Kcog5XmSY7VHFEMuk4+Gap8gUssYMZ2+w+cmGI6OpZWYOEIcbE0TPzzPHi+8XTzAgx1w/ZxDFcXhZeXN5eKWsA==",
+      "requires": {
+        "@vue/reactivity": "3.2.31",
+        "@vue/shared": "3.2.31"
+      }
+    },
+    "@vue/runtime-dom": {
+      "version": "3.2.31",
+      "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.31.tgz",
+      "integrity": "sha512-N+o0sICVLScUjfLG7u9u5XCjvmsexAiPt17GNnaWHJUfsKed5e85/A3SWgKxzlxx2SW/Hw7RQxzxbXez9PtY3g==",
+      "requires": {
+        "@vue/runtime-core": "3.2.31",
+        "@vue/shared": "3.2.31",
+        "csstype": "^2.6.8"
+      }
+    },
+    "@vue/server-renderer": {
+      "version": "3.2.31",
+      "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.31.tgz",
+      "integrity": "sha512-8CN3Zj2HyR2LQQBHZ61HexF5NReqngLT3oahyiVRfSSvak+oAvVmu8iNLSu6XR77Ili2AOpnAt1y8ywjjqtmkg==",
+      "requires": {
+        "@vue/compiler-ssr": "3.2.31",
+        "@vue/shared": "3.2.31"
+      }
+    },
+    "@vue/shared": {
+      "version": "3.2.31",
+      "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.31.tgz",
+      "integrity": "sha512-ymN2pj6zEjiKJZbrf98UM2pfDd6F2H7ksKw7NDt/ZZ1fh5Ei39X5tABugtT03ZRlWd9imccoK0hE8hpjpU7irQ=="
+    },
+    "acorn": {
+      "version": "7.4.1",
+      "resolved": "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz",
+      "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+      "dev": true
+    },
+    "acorn-jsx": {
+      "version": "5.3.2",
+      "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+      "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+      "dev": true
+    },
+    "ajv": {
+      "version": "6.12.6",
+      "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz",
+      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+      "dev": true,
+      "requires": {
+        "fast-deep-equal": "^3.1.1",
+        "fast-json-stable-stringify": "^2.0.0",
+        "json-schema-traverse": "^0.4.1",
+        "uri-js": "^4.2.2"
+      }
+    },
+    "ansi-align": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmmirror.com/ansi-align/-/ansi-align-3.0.1.tgz",
+      "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==",
+      "dev": true,
+      "requires": {
+        "string-width": "^4.1.0"
+      }
+    },
+    "ansi-colors": {
+      "version": "4.1.3",
+      "resolved": "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-4.1.3.tgz",
+      "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==",
+      "dev": true
+    },
+    "ansi-escapes": {
+      "version": "4.3.2",
+      "resolved": "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
+      "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
+      "dev": true,
+      "requires": {
+        "type-fest": "^0.21.3"
+      },
+      "dependencies": {
+        "type-fest": {
+          "version": "0.21.3",
+          "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.21.3.tgz",
+          "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
+          "dev": true
+        }
+      }
+    },
+    "ansi-regex": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
+      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+      "dev": true
+    },
+    "ansi-styles": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz",
+      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+      "dev": true,
+      "requires": {
+        "color-convert": "^1.9.0"
+      }
+    },
+    "argparse": {
+      "version": "1.0.10",
+      "resolved": "https://registry.npmmirror.com/argparse/-/argparse-1.0.10.tgz",
+      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+      "dev": true,
+      "requires": {
+        "sprintf-js": "~1.0.2"
+      }
+    },
+    "array-union": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz",
+      "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+      "dev": true
+    },
+    "arrify": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/arrify/-/arrify-1.0.1.tgz",
+      "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==",
+      "dev": true
+    },
+    "astral-regex": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/astral-regex/-/astral-regex-2.0.0.tgz",
+      "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
+      "dev": true
+    },
+    "balanced-match": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz",
+      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+      "dev": true
+    },
+    "boxen": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmmirror.com/boxen/-/boxen-4.2.0.tgz",
+      "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==",
+      "dev": true,
+      "requires": {
+        "ansi-align": "^3.0.0",
+        "camelcase": "^5.3.1",
+        "chalk": "^3.0.0",
+        "cli-boxes": "^2.2.0",
+        "string-width": "^4.1.0",
+        "term-size": "^2.1.0",
+        "type-fest": "^0.8.1",
+        "widest-line": "^3.1.0"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+          "dev": true,
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "chalk": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmmirror.com/chalk/-/chalk-3.0.0.tgz",
+          "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+          "dev": true,
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+          "dev": true
+        },
+        "has-flag": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "7.2.0",
+          "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+          "dev": true,
+          "requires": {
+            "has-flag": "^4.0.0"
+          }
+        },
+        "type-fest": {
+          "version": "0.8.1",
+          "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.8.1.tgz",
+          "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
+          "dev": true
+        }
+      }
+    },
+    "brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz",
+      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+      "dev": true,
+      "requires": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "braces": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz",
+      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+      "dev": true,
+      "requires": {
+        "fill-range": "^7.0.1"
+      }
+    },
+    "cacheable-request": {
+      "version": "6.1.0",
+      "resolved": "https://registry.npmmirror.com/cacheable-request/-/cacheable-request-6.1.0.tgz",
+      "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==",
+      "dev": true,
+      "requires": {
+        "clone-response": "^1.0.2",
+        "get-stream": "^5.1.0",
+        "http-cache-semantics": "^4.0.0",
+        "keyv": "^3.0.0",
+        "lowercase-keys": "^2.0.0",
+        "normalize-url": "^4.1.0",
+        "responselike": "^1.0.2"
+      },
+      "dependencies": {
+        "get-stream": {
+          "version": "5.2.0",
+          "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-5.2.0.tgz",
+          "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+          "dev": true,
+          "requires": {
+            "pump": "^3.0.0"
+          }
+        },
+        "lowercase-keys": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmmirror.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
+          "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
+          "dev": true
+        }
+      }
+    },
+    "callsites": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz",
+      "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+      "dev": true
+    },
+    "camelcase": {
+      "version": "5.3.1",
+      "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
+      "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+      "dev": true
+    },
+    "camelcase-keys": {
+      "version": "6.2.2",
+      "resolved": "https://registry.npmmirror.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz",
+      "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==",
+      "dev": true,
+      "requires": {
+        "camelcase": "^5.3.1",
+        "map-obj": "^4.0.0",
+        "quick-lru": "^4.0.1"
+      }
+    },
+    "chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
+      "requires": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+          "dev": true,
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+          "dev": true,
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+          "dev": true
+        },
+        "has-flag": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "7.2.0",
+          "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+          "dev": true,
+          "requires": {
+            "has-flag": "^4.0.0"
+          }
+        }
+      }
+    },
+    "ci-info": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/ci-info/-/ci-info-2.0.0.tgz",
+      "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
+      "dev": true
+    },
+    "cli-boxes": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmmirror.com/cli-boxes/-/cli-boxes-2.2.1.tgz",
+      "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==",
+      "dev": true
+    },
+    "clone-response": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/clone-response/-/clone-response-1.0.3.tgz",
+      "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==",
+      "dev": true,
+      "requires": {
+        "mimic-response": "^1.0.0"
+      }
+    },
+    "color-convert": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz",
+      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+      "dev": true,
+      "requires": {
+        "color-name": "1.1.3"
+      }
+    },
+    "color-name": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz",
+      "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+      "dev": true
+    },
+    "concat-map": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz",
+      "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+      "dev": true
+    },
+    "configstore": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmmirror.com/configstore/-/configstore-5.0.1.tgz",
+      "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==",
+      "dev": true,
+      "requires": {
+        "dot-prop": "^5.2.0",
+        "graceful-fs": "^4.1.2",
+        "make-dir": "^3.0.0",
+        "unique-string": "^2.0.0",
+        "write-file-atomic": "^3.0.0",
+        "xdg-basedir": "^4.0.0"
+      }
+    },
+    "cross-spawn": {
+      "version": "7.0.3",
+      "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz",
+      "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+      "dev": true,
+      "requires": {
+        "path-key": "^3.1.0",
+        "shebang-command": "^2.0.0",
+        "which": "^2.0.1"
+      }
+    },
+    "crypto-random-string": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
+      "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==",
+      "dev": true
+    },
+    "csstype": {
+      "version": "2.6.20",
+      "resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.20.tgz",
+      "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA=="
+    },
+    "debug": {
+      "version": "4.3.4",
+      "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+      "dev": true,
+      "requires": {
+        "ms": "2.1.2"
+      }
+    },
+    "decamelize": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz",
+      "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
+      "dev": true
+    },
+    "decamelize-keys": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmmirror.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz",
+      "integrity": "sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==",
+      "dev": true,
+      "requires": {
+        "decamelize": "^1.1.0",
+        "map-obj": "^1.0.0"
+      },
+      "dependencies": {
+        "map-obj": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmmirror.com/map-obj/-/map-obj-1.0.1.tgz",
+          "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==",
+          "dev": true
+        }
+      }
+    },
+    "decompress-response": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmmirror.com/decompress-response/-/decompress-response-3.3.0.tgz",
+      "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==",
+      "dev": true,
+      "requires": {
+        "mimic-response": "^1.0.0"
+      }
+    },
+    "deep-extend": {
+      "version": "0.6.0",
+      "resolved": "https://registry.npmmirror.com/deep-extend/-/deep-extend-0.6.0.tgz",
+      "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+      "dev": true
+    },
+    "deep-is": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz",
+      "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+      "dev": true
+    },
+    "defer-to-connect": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmmirror.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz",
+      "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==",
+      "dev": true
+    },
+    "dir-glob": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz",
+      "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+      "dev": true,
+      "requires": {
+        "path-type": "^4.0.0"
+      }
+    },
+    "doctrine": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz",
+      "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+      "dev": true,
+      "requires": {
+        "esutils": "^2.0.2"
+      }
+    },
+    "dot-prop": {
+      "version": "5.3.0",
+      "resolved": "https://registry.npmmirror.com/dot-prop/-/dot-prop-5.3.0.tgz",
+      "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
+      "dev": true,
+      "requires": {
+        "is-obj": "^2.0.0"
+      }
+    },
+    "duplexer3": {
+      "version": "0.1.5",
+      "resolved": "https://registry.npmmirror.com/duplexer3/-/duplexer3-0.1.5.tgz",
+      "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==",
+      "dev": true
+    },
+    "emoji-regex": {
+      "version": "8.0.0",
+      "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
+      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+      "dev": true
+    },
+    "end-of-stream": {
+      "version": "1.4.4",
+      "resolved": "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz",
+      "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+      "dev": true,
+      "requires": {
+        "once": "^1.4.0"
+      }
+    },
+    "enquirer": {
+      "version": "2.3.6",
+      "resolved": "https://registry.npmmirror.com/enquirer/-/enquirer-2.3.6.tgz",
+      "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
+      "dev": true,
+      "requires": {
+        "ansi-colors": "^4.1.1"
+      }
+    },
+    "error-ex": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmmirror.com/error-ex/-/error-ex-1.3.2.tgz",
+      "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+      "dev": true,
+      "requires": {
+        "is-arrayish": "^0.2.1"
+      }
+    },
+    "escape-goat": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmmirror.com/escape-goat/-/escape-goat-2.1.1.tgz",
+      "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==",
+      "dev": true
+    },
+    "escape-string-regexp": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+      "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+      "dev": true
+    },
+    "eslint": {
+      "version": "7.32.0",
+      "resolved": "https://registry.npmmirror.com/eslint/-/eslint-7.32.0.tgz",
+      "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==",
+      "dev": true,
+      "requires": {
+        "@babel/code-frame": "7.12.11",
+        "@eslint/eslintrc": "^0.4.3",
+        "@humanwhocodes/config-array": "^0.5.0",
+        "ajv": "^6.10.0",
+        "chalk": "^4.0.0",
+        "cross-spawn": "^7.0.2",
+        "debug": "^4.0.1",
+        "doctrine": "^3.0.0",
+        "enquirer": "^2.3.5",
+        "escape-string-regexp": "^4.0.0",
+        "eslint-scope": "^5.1.1",
+        "eslint-utils": "^2.1.0",
+        "eslint-visitor-keys": "^2.0.0",
+        "espree": "^7.3.1",
+        "esquery": "^1.4.0",
+        "esutils": "^2.0.2",
+        "fast-deep-equal": "^3.1.3",
+        "file-entry-cache": "^6.0.1",
+        "functional-red-black-tree": "^1.0.1",
+        "glob-parent": "^5.1.2",
+        "globals": "^13.6.0",
+        "ignore": "^4.0.6",
+        "import-fresh": "^3.0.0",
+        "imurmurhash": "^0.1.4",
+        "is-glob": "^4.0.0",
+        "js-yaml": "^3.13.1",
+        "json-stable-stringify-without-jsonify": "^1.0.1",
+        "levn": "^0.4.1",
+        "lodash.merge": "^4.6.2",
+        "minimatch": "^3.0.4",
+        "natural-compare": "^1.4.0",
+        "optionator": "^0.9.1",
+        "progress": "^2.0.0",
+        "regexpp": "^3.1.0",
+        "semver": "^7.2.1",
+        "strip-ansi": "^6.0.0",
+        "strip-json-comments": "^3.1.0",
+        "table": "^6.0.9",
+        "text-table": "^0.2.0",
+        "v8-compile-cache": "^2.0.3"
+      },
+      "dependencies": {
+        "eslint-utils": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmmirror.com/eslint-utils/-/eslint-utils-2.1.0.tgz",
+          "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
+          "dev": true,
+          "requires": {
+            "eslint-visitor-keys": "^1.1.0"
+          },
+          "dependencies": {
+            "eslint-visitor-keys": {
+              "version": "1.3.0",
+              "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
+              "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
+              "dev": true
+            }
+          }
+        },
+        "ignore": {
+          "version": "4.0.6",
+          "resolved": "https://registry.npmmirror.com/ignore/-/ignore-4.0.6.tgz",
+          "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
+          "dev": true
+        }
+      }
+    },
+    "eslint-formatter-pretty": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmmirror.com/eslint-formatter-pretty/-/eslint-formatter-pretty-4.1.0.tgz",
+      "integrity": "sha512-IsUTtGxF1hrH6lMWiSl1WbGaiP01eT6kzywdY1U+zLc0MP+nwEnUiS9UI8IaOTUhTeQJLlCEWIbXINBH4YJbBQ==",
+      "dev": true,
+      "requires": {
+        "@types/eslint": "^7.2.13",
+        "ansi-escapes": "^4.2.1",
+        "chalk": "^4.1.0",
+        "eslint-rule-docs": "^1.1.5",
+        "log-symbols": "^4.0.0",
+        "plur": "^4.0.0",
+        "string-width": "^4.2.0",
+        "supports-hyperlinks": "^2.0.0"
+      }
+    },
+    "eslint-rule-docs": {
+      "version": "1.1.235",
+      "resolved": "https://registry.npmmirror.com/eslint-rule-docs/-/eslint-rule-docs-1.1.235.tgz",
+      "integrity": "sha512-+TQ+x4JdTnDoFEXXb3fDvfGOwnyNV7duH8fXWTPD1ieaBmB8omj7Gw/pMBBu4uI2uJCCU8APDaQJzWuXnTsH4A==",
+      "dev": true
+    },
+    "eslint-scope": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz",
+      "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+      "dev": true,
+      "requires": {
+        "esrecurse": "^4.3.0",
+        "estraverse": "^4.1.1"
+      }
+    },
+    "eslint-utils": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/eslint-utils/-/eslint-utils-3.0.0.tgz",
+      "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
+      "dev": true,
+      "requires": {
+        "eslint-visitor-keys": "^2.0.0"
+      }
+    },
+    "eslint-visitor-keys": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
+      "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
+      "dev": true
+    },
+    "espree": {
+      "version": "7.3.1",
+      "resolved": "https://registry.npmmirror.com/espree/-/espree-7.3.1.tgz",
+      "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==",
+      "dev": true,
+      "requires": {
+        "acorn": "^7.4.0",
+        "acorn-jsx": "^5.3.1",
+        "eslint-visitor-keys": "^1.3.0"
+      },
+      "dependencies": {
+        "eslint-visitor-keys": {
+          "version": "1.3.0",
+          "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
+          "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
+          "dev": true
+        }
+      }
+    },
+    "esprima": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz",
+      "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+      "dev": true
+    },
+    "esquery": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmmirror.com/esquery/-/esquery-1.4.0.tgz",
+      "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
+      "dev": true,
+      "requires": {
+        "estraverse": "^5.1.0"
+      },
+      "dependencies": {
+        "estraverse": {
+          "version": "5.3.0",
+          "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz",
+          "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+          "dev": true
+        }
+      }
+    },
+    "esrecurse": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz",
+      "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+      "dev": true,
+      "requires": {
+        "estraverse": "^5.2.0"
+      },
+      "dependencies": {
+        "estraverse": {
+          "version": "5.3.0",
+          "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz",
+          "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+          "dev": true
+        }
+      }
+    },
+    "estraverse": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz",
+      "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+      "dev": true
+    },
+    "estree-walker": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
+      "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
+    },
+    "esutils": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz",
+      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+      "dev": true
+    },
+    "fast-deep-equal": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+      "dev": true
+    },
+    "fast-glob": {
+      "version": "3.2.11",
+      "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.2.11.tgz",
+      "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==",
+      "dev": true,
+      "requires": {
+        "@nodelib/fs.stat": "^2.0.2",
+        "@nodelib/fs.walk": "^1.2.3",
+        "glob-parent": "^5.1.2",
+        "merge2": "^1.3.0",
+        "micromatch": "^4.0.4"
+      }
+    },
+    "fast-json-stable-stringify": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+      "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+      "dev": true
+    },
+    "fast-levenshtein": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+      "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+      "dev": true
+    },
+    "fastq": {
+      "version": "1.13.0",
+      "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.13.0.tgz",
+      "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
+      "dev": true,
+      "requires": {
+        "reusify": "^1.0.4"
+      }
+    },
+    "file-entry-cache": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+      "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+      "dev": true,
+      "requires": {
+        "flat-cache": "^3.0.4"
+      }
+    },
+    "fill-range": {
+      "version": "7.0.1",
+      "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz",
+      "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+      "dev": true,
+      "requires": {
+        "to-regex-range": "^5.0.1"
+      }
+    },
+    "find-up": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz",
+      "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+      "dev": true,
+      "requires": {
+        "locate-path": "^5.0.0",
+        "path-exists": "^4.0.0"
+      }
+    },
+    "flat-cache": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmmirror.com/flat-cache/-/flat-cache-3.0.4.tgz",
+      "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
+      "dev": true,
+      "requires": {
+        "flatted": "^3.1.0",
+        "rimraf": "^3.0.2"
+      }
+    },
+    "flatted": {
+      "version": "3.2.6",
+      "resolved": "https://registry.npmmirror.com/flatted/-/flatted-3.2.6.tgz",
+      "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==",
+      "dev": true
+    },
+    "fs.realpath": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz",
+      "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+      "dev": true
+    },
+    "function-bind": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz",
+      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+      "dev": true
+    },
+    "functional-red-black-tree": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
+      "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==",
+      "dev": true
+    },
+    "get-stream": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-4.1.0.tgz",
+      "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+      "dev": true,
+      "requires": {
+        "pump": "^3.0.0"
+      }
+    },
+    "glob": {
+      "version": "7.2.3",
+      "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz",
+      "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+      "dev": true,
+      "requires": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.1.1",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
+      }
+    },
+    "glob-parent": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz",
+      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+      "dev": true,
+      "requires": {
+        "is-glob": "^4.0.1"
+      }
+    },
+    "global-dirs": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/global-dirs/-/global-dirs-2.1.0.tgz",
+      "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==",
+      "dev": true,
+      "requires": {
+        "ini": "1.3.7"
+      }
+    },
+    "globals": {
+      "version": "13.17.0",
+      "resolved": "https://registry.npmmirror.com/globals/-/globals-13.17.0.tgz",
+      "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==",
+      "dev": true,
+      "requires": {
+        "type-fest": "^0.20.2"
+      }
+    },
+    "globby": {
+      "version": "11.1.0",
+      "resolved": "https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz",
+      "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+      "dev": true,
+      "requires": {
+        "array-union": "^2.1.0",
+        "dir-glob": "^3.0.1",
+        "fast-glob": "^3.2.9",
+        "ignore": "^5.2.0",
+        "merge2": "^1.4.1",
+        "slash": "^3.0.0"
+      }
+    },
+    "got": {
+      "version": "9.6.0",
+      "resolved": "https://registry.npmmirror.com/got/-/got-9.6.0.tgz",
+      "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==",
+      "dev": true,
+      "requires": {
+        "@sindresorhus/is": "^0.14.0",
+        "@szmarczak/http-timer": "^1.1.2",
+        "cacheable-request": "^6.0.0",
+        "decompress-response": "^3.3.0",
+        "duplexer3": "^0.1.4",
+        "get-stream": "^4.1.0",
+        "lowercase-keys": "^1.0.1",
+        "mimic-response": "^1.0.1",
+        "p-cancelable": "^1.0.0",
+        "to-readable-stream": "^1.0.0",
+        "url-parse-lax": "^3.0.0"
+      }
+    },
+    "graceful-fs": {
+      "version": "4.2.10",
+      "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz",
+      "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
+      "dev": true
+    },
+    "hard-rejection": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/hard-rejection/-/hard-rejection-2.1.0.tgz",
+      "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==",
+      "dev": true
+    },
+    "has": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/has/-/has-1.0.3.tgz",
+      "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+      "dev": true,
+      "requires": {
+        "function-bind": "^1.1.1"
+      }
+    },
+    "has-flag": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz",
+      "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+      "dev": true
+    },
+    "has-yarn": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/has-yarn/-/has-yarn-2.1.0.tgz",
+      "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==",
+      "dev": true
+    },
+    "hosted-git-info": {
+      "version": "2.8.9",
+      "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
+      "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
+      "dev": true
+    },
+    "http-cache-semantics": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmmirror.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
+      "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==",
+      "dev": true
+    },
+    "ignore": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.2.0.tgz",
+      "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
+      "dev": true
+    },
+    "import-fresh": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz",
+      "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+      "dev": true,
+      "requires": {
+        "parent-module": "^1.0.0",
+        "resolve-from": "^4.0.0"
+      }
+    },
+    "import-lazy": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/import-lazy/-/import-lazy-2.1.0.tgz",
+      "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==",
+      "dev": true
+    },
+    "imurmurhash": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz",
+      "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+      "dev": true
+    },
+    "indent-string": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/indent-string/-/indent-string-4.0.0.tgz",
+      "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
+      "dev": true
+    },
+    "inflight": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz",
+      "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+      "dev": true,
+      "requires": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "inherits": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz",
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+      "dev": true
+    },
+    "ini": {
+      "version": "1.3.7",
+      "resolved": "https://registry.npmmirror.com/ini/-/ini-1.3.7.tgz",
+      "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==",
+      "dev": true
+    },
+    "irregular-plurals": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmmirror.com/irregular-plurals/-/irregular-plurals-3.3.0.tgz",
+      "integrity": "sha512-MVBLKUTangM3EfRPFROhmWQQKRDsrgI83J8GS3jXy+OwYqiR2/aoWndYQ5416jLE3uaGgLH7ncme3X9y09gZ3g==",
+      "dev": true
+    },
+    "is-arrayish": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.2.1.tgz",
+      "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+      "dev": true
+    },
+    "is-ci": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/is-ci/-/is-ci-2.0.0.tgz",
+      "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
+      "dev": true,
+      "requires": {
+        "ci-info": "^2.0.0"
+      }
+    },
+    "is-core-module": {
+      "version": "2.10.0",
+      "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.10.0.tgz",
+      "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==",
+      "dev": true,
+      "requires": {
+        "has": "^1.0.3"
+      }
+    },
+    "is-extglob": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz",
+      "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+      "dev": true
+    },
+    "is-fullwidth-code-point": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+      "dev": true
+    },
+    "is-glob": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
+      "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+      "dev": true,
+      "requires": {
+        "is-extglob": "^2.1.1"
+      }
+    },
+    "is-installed-globally": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmmirror.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz",
+      "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==",
+      "dev": true,
+      "requires": {
+        "global-dirs": "^2.0.1",
+        "is-path-inside": "^3.0.1"
+      }
+    },
+    "is-npm": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/is-npm/-/is-npm-4.0.0.tgz",
+      "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==",
+      "dev": true
+    },
+    "is-number": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
+      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+      "dev": true
+    },
+    "is-obj": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/is-obj/-/is-obj-2.0.0.tgz",
+      "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
+      "dev": true
+    },
+    "is-path-inside": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmmirror.com/is-path-inside/-/is-path-inside-3.0.3.tgz",
+      "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+      "dev": true
+    },
+    "is-plain-obj": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+      "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
+      "dev": true
+    },
+    "is-typedarray": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/is-typedarray/-/is-typedarray-1.0.0.tgz",
+      "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
+      "dev": true
+    },
+    "is-unicode-supported": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
+      "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
+      "dev": true
+    },
+    "is-yarn-global": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmmirror.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz",
+      "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==",
+      "dev": true
+    },
+    "isexe": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz",
+      "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+      "dev": true
+    },
+    "js-tokens": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz",
+      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+      "dev": true
+    },
+    "js-yaml": {
+      "version": "3.14.1",
+      "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-3.14.1.tgz",
+      "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+      "dev": true,
+      "requires": {
+        "argparse": "^1.0.7",
+        "esprima": "^4.0.0"
+      }
+    },
+    "json-buffer": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/json-buffer/-/json-buffer-3.0.0.tgz",
+      "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==",
+      "dev": true
+    },
+    "json-parse-even-better-errors": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+      "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+      "dev": true
+    },
+    "json-schema-traverse": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+      "dev": true
+    },
+    "json-stable-stringify-without-jsonify": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+      "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+      "dev": true
+    },
+    "keyv": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/keyv/-/keyv-3.1.0.tgz",
+      "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==",
+      "dev": true,
+      "requires": {
+        "json-buffer": "3.0.0"
+      }
+    },
+    "kind-of": {
+      "version": "6.0.3",
+      "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz",
+      "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+      "dev": true
+    },
+    "latest-version": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmmirror.com/latest-version/-/latest-version-5.1.0.tgz",
+      "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==",
+      "dev": true,
+      "requires": {
+        "package-json": "^6.3.0"
+      }
+    },
+    "levn": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz",
+      "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+      "dev": true,
+      "requires": {
+        "prelude-ls": "^1.2.1",
+        "type-check": "~0.4.0"
+      }
+    },
+    "lines-and-columns": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmmirror.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+      "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+      "dev": true
+    },
+    "locate-path": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz",
+      "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+      "dev": true,
+      "requires": {
+        "p-locate": "^4.1.0"
+      }
+    },
+    "lodash.merge": {
+      "version": "4.6.2",
+      "resolved": "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz",
+      "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+      "dev": true
+    },
+    "lodash.truncate": {
+      "version": "4.4.2",
+      "resolved": "https://registry.npmmirror.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
+      "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==",
+      "dev": true
+    },
+    "log-symbols": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmmirror.com/log-symbols/-/log-symbols-4.1.0.tgz",
+      "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
+      "dev": true,
+      "requires": {
+        "chalk": "^4.1.0",
+        "is-unicode-supported": "^0.1.0"
+      }
+    },
+    "lowercase-keys": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
+      "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
+      "dev": true
+    },
+    "lru-cache": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz",
+      "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+      "dev": true,
+      "requires": {
+        "yallist": "^4.0.0"
+      }
+    },
+    "magic-string": {
+      "version": "0.25.9",
+      "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz",
+      "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+      "requires": {
+        "sourcemap-codec": "^1.4.8"
+      }
+    },
+    "make-dir": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-3.1.0.tgz",
+      "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+      "dev": true,
+      "requires": {
+        "semver": "^6.0.0"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "6.3.0",
+          "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
+          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+          "dev": true
+        }
+      }
+    },
+    "map-obj": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/map-obj/-/map-obj-4.3.0.tgz",
+      "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==",
+      "dev": true
+    },
+    "meow": {
+      "version": "7.1.1",
+      "resolved": "https://registry.npmmirror.com/meow/-/meow-7.1.1.tgz",
+      "integrity": "sha512-GWHvA5QOcS412WCo8vwKDlTelGLsCGBVevQB5Kva961rmNfun0PCbv5+xta2kUMFJyR8/oWnn7ddeKdosbAPbA==",
+      "dev": true,
+      "requires": {
+        "@types/minimist": "^1.2.0",
+        "camelcase-keys": "^6.2.2",
+        "decamelize-keys": "^1.1.0",
+        "hard-rejection": "^2.1.0",
+        "minimist-options": "4.1.0",
+        "normalize-package-data": "^2.5.0",
+        "read-pkg-up": "^7.0.1",
+        "redent": "^3.0.0",
+        "trim-newlines": "^3.0.0",
+        "type-fest": "^0.13.1",
+        "yargs-parser": "^18.1.3"
+      },
+      "dependencies": {
+        "type-fest": {
+          "version": "0.13.1",
+          "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.13.1.tgz",
+          "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==",
+          "dev": true
+        }
+      }
+    },
+    "merge2": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz",
+      "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+      "dev": true
+    },
+    "micromatch": {
+      "version": "4.0.5",
+      "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz",
+      "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+      "dev": true,
+      "requires": {
+        "braces": "^3.0.2",
+        "picomatch": "^2.3.1"
+      }
+    },
+    "mimic-response": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/mimic-response/-/mimic-response-1.0.1.tgz",
+      "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
+      "dev": true
+    },
+    "min-indent": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/min-indent/-/min-indent-1.0.1.tgz",
+      "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
+      "dev": true
+    },
+    "minimatch": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz",
+      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+      "dev": true,
+      "requires": {
+        "brace-expansion": "^1.1.7"
+      }
+    },
+    "minimist": {
+      "version": "1.2.6",
+      "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.6.tgz",
+      "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
+      "dev": true
+    },
+    "minimist-options": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmmirror.com/minimist-options/-/minimist-options-4.1.0.tgz",
+      "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==",
+      "dev": true,
+      "requires": {
+        "arrify": "^1.0.1",
+        "is-plain-obj": "^1.1.0",
+        "kind-of": "^6.0.3"
+      }
+    },
+    "ms": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+      "dev": true
+    },
+    "nanoid": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.1.tgz",
+      "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw=="
+    },
+    "natural-compare": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz",
+      "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+      "dev": true
+    },
+    "normalize-package-data": {
+      "version": "2.5.0",
+      "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+      "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+      "dev": true,
+      "requires": {
+        "hosted-git-info": "^2.1.4",
+        "resolve": "^1.10.0",
+        "semver": "2 || 3 || 4 || 5",
+        "validate-npm-package-license": "^3.0.1"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "5.7.1",
+          "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz",
+          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+          "dev": true
+        }
+      }
+    },
+    "normalize-url": {
+      "version": "4.5.1",
+      "resolved": "https://registry.npmmirror.com/normalize-url/-/normalize-url-4.5.1.tgz",
+      "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==",
+      "dev": true
+    },
+    "once": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz",
+      "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+      "dev": true,
+      "requires": {
+        "wrappy": "1"
+      }
+    },
+    "optionator": {
+      "version": "0.9.1",
+      "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.9.1.tgz",
+      "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
+      "dev": true,
+      "requires": {
+        "deep-is": "^0.1.3",
+        "fast-levenshtein": "^2.0.6",
+        "levn": "^0.4.1",
+        "prelude-ls": "^1.2.1",
+        "type-check": "^0.4.0",
+        "word-wrap": "^1.2.3"
+      }
+    },
+    "p-cancelable": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmmirror.com/p-cancelable/-/p-cancelable-1.1.0.tgz",
+      "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==",
+      "dev": true
+    },
+    "p-limit": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz",
+      "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+      "dev": true,
+      "requires": {
+        "p-try": "^2.0.0"
+      }
+    },
+    "p-locate": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz",
+      "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+      "dev": true,
+      "requires": {
+        "p-limit": "^2.2.0"
+      }
+    },
+    "p-try": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz",
+      "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+      "dev": true
+    },
+    "package-json": {
+      "version": "6.5.0",
+      "resolved": "https://registry.npmmirror.com/package-json/-/package-json-6.5.0.tgz",
+      "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==",
+      "dev": true,
+      "requires": {
+        "got": "^9.6.0",
+        "registry-auth-token": "^4.0.0",
+        "registry-url": "^5.0.0",
+        "semver": "^6.2.0"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "6.3.0",
+          "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
+          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+          "dev": true
+        }
+      }
+    },
+    "parent-module": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz",
+      "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+      "dev": true,
+      "requires": {
+        "callsites": "^3.0.0"
+      }
+    },
+    "parse-json": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz",
+      "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+      "dev": true,
+      "requires": {
+        "@babel/code-frame": "^7.0.0",
+        "error-ex": "^1.3.1",
+        "json-parse-even-better-errors": "^2.3.0",
+        "lines-and-columns": "^1.1.6"
+      }
+    },
+    "path-exists": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz",
+      "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+      "dev": true
+    },
+    "path-is-absolute": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+      "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+      "dev": true
+    },
+    "path-key": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz",
+      "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+      "dev": true
+    },
+    "path-parse": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz",
+      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+      "dev": true
+    },
+    "path-type": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz",
+      "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+      "dev": true
+    },
+    "picocolors": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz",
+      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
+    },
+    "picomatch": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz",
+      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+      "dev": true
+    },
+    "plur": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/plur/-/plur-4.0.0.tgz",
+      "integrity": "sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg==",
+      "dev": true,
+      "requires": {
+        "irregular-plurals": "^3.2.0"
+      }
+    },
+    "postcss": {
+      "version": "8.4.12",
+      "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.12.tgz",
+      "integrity": "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==",
+      "requires": {
+        "nanoid": "^3.3.1",
+        "picocolors": "^1.0.0",
+        "source-map-js": "^1.0.2"
+      }
+    },
+    "prelude-ls": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz",
+      "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+      "dev": true
+    },
+    "prepend-http": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/prepend-http/-/prepend-http-2.0.0.tgz",
+      "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==",
+      "dev": true
+    },
+    "progress": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmmirror.com/progress/-/progress-2.0.3.tgz",
+      "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+      "dev": true
+    },
+    "pump": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/pump/-/pump-3.0.0.tgz",
+      "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+      "dev": true,
+      "requires": {
+        "end-of-stream": "^1.1.0",
+        "once": "^1.3.1"
+      }
+    },
+    "punycode": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.1.1.tgz",
+      "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+      "dev": true
+    },
+    "pupa": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmmirror.com/pupa/-/pupa-2.1.1.tgz",
+      "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==",
+      "dev": true,
+      "requires": {
+        "escape-goat": "^2.0.0"
+      }
+    },
+    "queue-microtask": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz",
+      "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+      "dev": true
+    },
+    "quick-lru": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmmirror.com/quick-lru/-/quick-lru-4.0.1.tgz",
+      "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==",
+      "dev": true
+    },
+    "rc": {
+      "version": "1.2.8",
+      "resolved": "https://registry.npmmirror.com/rc/-/rc-1.2.8.tgz",
+      "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+      "dev": true,
+      "requires": {
+        "deep-extend": "^0.6.0",
+        "ini": "~1.3.0",
+        "minimist": "^1.2.0",
+        "strip-json-comments": "~2.0.1"
+      },
+      "dependencies": {
+        "strip-json-comments": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+          "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
+          "dev": true
+        }
+      }
+    },
+    "read-pkg": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmmirror.com/read-pkg/-/read-pkg-5.2.0.tgz",
+      "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
+      "dev": true,
+      "requires": {
+        "@types/normalize-package-data": "^2.4.0",
+        "normalize-package-data": "^2.5.0",
+        "parse-json": "^5.0.0",
+        "type-fest": "^0.6.0"
+      },
+      "dependencies": {
+        "type-fest": {
+          "version": "0.6.0",
+          "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.6.0.tgz",
+          "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
+          "dev": true
+        }
+      }
+    },
+    "read-pkg-up": {
+      "version": "7.0.1",
+      "resolved": "https://registry.npmmirror.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz",
+      "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==",
+      "dev": true,
+      "requires": {
+        "find-up": "^4.1.0",
+        "read-pkg": "^5.2.0",
+        "type-fest": "^0.8.1"
+      },
+      "dependencies": {
+        "type-fest": {
+          "version": "0.8.1",
+          "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.8.1.tgz",
+          "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
+          "dev": true
+        }
+      }
+    },
+    "redent": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/redent/-/redent-3.0.0.tgz",
+      "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==",
+      "dev": true,
+      "requires": {
+        "indent-string": "^4.0.0",
+        "strip-indent": "^3.0.0"
+      }
+    },
+    "regexpp": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmmirror.com/regexpp/-/regexpp-3.2.0.tgz",
+      "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
+      "dev": true
+    },
+    "registry-auth-token": {
+      "version": "4.2.2",
+      "resolved": "https://registry.npmmirror.com/registry-auth-token/-/registry-auth-token-4.2.2.tgz",
+      "integrity": "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==",
+      "dev": true,
+      "requires": {
+        "rc": "1.2.8"
+      }
+    },
+    "registry-url": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmmirror.com/registry-url/-/registry-url-5.1.0.tgz",
+      "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==",
+      "dev": true,
+      "requires": {
+        "rc": "^1.2.8"
+      }
+    },
+    "require-from-string": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz",
+      "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
+      "dev": true
+    },
+    "resolve": {
+      "version": "1.22.1",
+      "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.1.tgz",
+      "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
+      "dev": true,
+      "requires": {
+        "is-core-module": "^2.9.0",
+        "path-parse": "^1.0.7",
+        "supports-preserve-symlinks-flag": "^1.0.0"
+      }
+    },
+    "resolve-from": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz",
+      "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+      "dev": true
+    },
+    "responselike": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/responselike/-/responselike-1.0.2.tgz",
+      "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==",
+      "dev": true,
+      "requires": {
+        "lowercase-keys": "^1.0.0"
+      }
+    },
+    "reusify": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz",
+      "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+      "dev": true
+    },
+    "rimraf": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz",
+      "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+      "dev": true,
+      "requires": {
+        "glob": "^7.1.3"
+      }
+    },
+    "run-parallel": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz",
+      "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+      "dev": true,
+      "requires": {
+        "queue-microtask": "^1.2.2"
+      }
+    },
+    "semver": {
+      "version": "7.3.7",
+      "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz",
+      "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
+      "dev": true,
+      "requires": {
+        "lru-cache": "^6.0.0"
+      }
+    },
+    "semver-diff": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmmirror.com/semver-diff/-/semver-diff-3.1.1.tgz",
+      "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==",
+      "dev": true,
+      "requires": {
+        "semver": "^6.3.0"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "6.3.0",
+          "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
+          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+          "dev": true
+        }
+      }
+    },
+    "shebang-command": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz",
+      "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+      "dev": true,
+      "requires": {
+        "shebang-regex": "^3.0.0"
+      }
+    },
+    "shebang-regex": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz",
+      "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+      "dev": true
+    },
+    "signal-exit": {
+      "version": "3.0.7",
+      "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz",
+      "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+      "dev": true
+    },
+    "slash": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz",
+      "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+      "dev": true
+    },
+    "slice-ansi": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-4.0.0.tgz",
+      "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
+      "dev": true,
+      "requires": {
+        "ansi-styles": "^4.0.0",
+        "astral-regex": "^2.0.0",
+        "is-fullwidth-code-point": "^3.0.0"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+          "dev": true,
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+          "dev": true,
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+          "dev": true
+        }
+      }
+    },
+    "source-map": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
+      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+    },
+    "source-map-js": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz",
+      "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw=="
+    },
+    "sourcemap-codec": {
+      "version": "1.4.8",
+      "resolved": "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
+      "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA=="
+    },
+    "spdx-correct": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmmirror.com/spdx-correct/-/spdx-correct-3.1.1.tgz",
+      "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
+      "dev": true,
+      "requires": {
+        "spdx-expression-parse": "^3.0.0",
+        "spdx-license-ids": "^3.0.0"
+      }
+    },
+    "spdx-exceptions": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmmirror.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
+      "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
+      "dev": true
+    },
+    "spdx-expression-parse": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmmirror.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+      "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+      "dev": true,
+      "requires": {
+        "spdx-exceptions": "^2.1.0",
+        "spdx-license-ids": "^3.0.0"
+      }
+    },
+    "spdx-license-ids": {
+      "version": "3.0.11",
+      "resolved": "https://registry.npmmirror.com/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz",
+      "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==",
+      "dev": true
+    },
+    "sprintf-js": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz",
+      "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
+      "dev": true
+    },
+    "string-width": {
+      "version": "4.2.3",
+      "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+      "dev": true,
+      "requires": {
+        "emoji-regex": "^8.0.0",
+        "is-fullwidth-code-point": "^3.0.0",
+        "strip-ansi": "^6.0.1"
+      }
+    },
+    "strip-ansi": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
+      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+      "dev": true,
+      "requires": {
+        "ansi-regex": "^5.0.1"
+      }
+    },
+    "strip-indent": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/strip-indent/-/strip-indent-3.0.0.tgz",
+      "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
+      "dev": true,
+      "requires": {
+        "min-indent": "^1.0.0"
+      }
+    },
+    "strip-json-comments": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+      "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+      "dev": true
+    },
+    "supports-color": {
+      "version": "5.5.0",
+      "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz",
+      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+      "dev": true,
+      "requires": {
+        "has-flag": "^3.0.0"
+      }
+    },
+    "supports-hyperlinks": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmmirror.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz",
+      "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==",
+      "dev": true,
+      "requires": {
+        "has-flag": "^4.0.0",
+        "supports-color": "^7.0.0"
+      },
+      "dependencies": {
+        "has-flag": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "7.2.0",
+          "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+          "dev": true,
+          "requires": {
+            "has-flag": "^4.0.0"
+          }
+        }
+      }
+    },
+    "supports-preserve-symlinks-flag": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+      "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+      "dev": true
+    },
+    "table": {
+      "version": "6.8.0",
+      "resolved": "https://registry.npmmirror.com/table/-/table-6.8.0.tgz",
+      "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==",
+      "dev": true,
+      "requires": {
+        "ajv": "^8.0.1",
+        "lodash.truncate": "^4.4.2",
+        "slice-ansi": "^4.0.0",
+        "string-width": "^4.2.3",
+        "strip-ansi": "^6.0.1"
+      },
+      "dependencies": {
+        "ajv": {
+          "version": "8.11.0",
+          "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.11.0.tgz",
+          "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==",
+          "dev": true,
+          "requires": {
+            "fast-deep-equal": "^3.1.1",
+            "json-schema-traverse": "^1.0.0",
+            "require-from-string": "^2.0.2",
+            "uri-js": "^4.2.2"
+          }
+        },
+        "json-schema-traverse": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+          "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+          "dev": true
+        }
+      }
+    },
+    "term-size": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmmirror.com/term-size/-/term-size-2.2.1.tgz",
+      "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==",
+      "dev": true
+    },
+    "text-table": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz",
+      "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+      "dev": true
+    },
+    "to-readable-stream": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz",
+      "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==",
+      "dev": true
+    },
+    "to-regex-range": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
+      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+      "dev": true,
+      "requires": {
+        "is-number": "^7.0.0"
+      }
+    },
+    "trim-newlines": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmmirror.com/trim-newlines/-/trim-newlines-3.0.1.tgz",
+      "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==",
+      "dev": true
+    },
+    "tsd": {
+      "version": "0.14.0",
+      "resolved": "https://registry.npmmirror.com/tsd/-/tsd-0.14.0.tgz",
+      "integrity": "sha512-fl1gS5orAwqIb0P2xMdppgCrwv1BfCJn67wBzRBCV9OUaWHVXHqiIqL6yX/519xFgT1ZOaLMhr5W9XDo8kuuRA==",
+      "dev": true,
+      "requires": {
+        "eslint-formatter-pretty": "^4.0.0",
+        "globby": "^11.0.1",
+        "meow": "^7.0.1",
+        "path-exists": "^4.0.0",
+        "read-pkg-up": "^7.0.0",
+        "update-notifier": "^4.1.0"
+      }
+    },
+    "tslib": {
+      "version": "1.14.1",
+      "resolved": "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz",
+      "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+      "dev": true
+    },
+    "tsutils": {
+      "version": "3.21.0",
+      "resolved": "https://registry.npmmirror.com/tsutils/-/tsutils-3.21.0.tgz",
+      "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
+      "dev": true,
+      "requires": {
+        "tslib": "^1.8.1"
+      }
+    },
+    "type-check": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz",
+      "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+      "dev": true,
+      "requires": {
+        "prelude-ls": "^1.2.1"
+      }
+    },
+    "type-fest": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz",
+      "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+      "dev": true
+    },
+    "typedarray-to-buffer": {
+      "version": "3.1.5",
+      "resolved": "https://registry.npmmirror.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
+      "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
+      "dev": true,
+      "requires": {
+        "is-typedarray": "^1.0.0"
+      }
+    },
+    "typescript": {
+      "version": "4.7.4",
+      "resolved": "https://registry.npmmirror.com/typescript/-/typescript-4.7.4.tgz",
+      "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==",
+      "dev": true
+    },
+    "unique-string": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/unique-string/-/unique-string-2.0.0.tgz",
+      "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==",
+      "dev": true,
+      "requires": {
+        "crypto-random-string": "^2.0.0"
+      }
+    },
+    "update-notifier": {
+      "version": "4.1.3",
+      "resolved": "https://registry.npmmirror.com/update-notifier/-/update-notifier-4.1.3.tgz",
+      "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==",
+      "dev": true,
+      "requires": {
+        "boxen": "^4.2.0",
+        "chalk": "^3.0.0",
+        "configstore": "^5.0.1",
+        "has-yarn": "^2.1.0",
+        "import-lazy": "^2.1.0",
+        "is-ci": "^2.0.0",
+        "is-installed-globally": "^0.3.1",
+        "is-npm": "^4.0.0",
+        "is-yarn-global": "^0.3.0",
+        "latest-version": "^5.0.0",
+        "pupa": "^2.0.1",
+        "semver-diff": "^3.1.1",
+        "xdg-basedir": "^4.0.0"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+          "dev": true,
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "chalk": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmmirror.com/chalk/-/chalk-3.0.0.tgz",
+          "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+          "dev": true,
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+          "dev": true
+        },
+        "has-flag": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "7.2.0",
+          "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+          "dev": true,
+          "requires": {
+            "has-flag": "^4.0.0"
+          }
+        }
+      }
+    },
+    "uri-js": {
+      "version": "4.4.1",
+      "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz",
+      "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+      "dev": true,
+      "requires": {
+        "punycode": "^2.1.0"
+      }
+    },
+    "url-parse-lax": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
+      "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==",
+      "dev": true,
+      "requires": {
+        "prepend-http": "^2.0.0"
+      }
+    },
+    "v8-compile-cache": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmmirror.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
+      "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
+      "dev": true
+    },
+    "validate-npm-package-license": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmmirror.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+      "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
+      "dev": true,
+      "requires": {
+        "spdx-correct": "^3.0.0",
+        "spdx-expression-parse": "^3.0.0"
+      }
+    },
+    "vue": {
+      "version": "3.2.31",
+      "resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.31.tgz",
+      "integrity": "sha512-odT3W2tcffTiQCy57nOT93INw1auq5lYLLYtWpPYQQYQOOdHiqFct9Xhna6GJ+pJQaF67yZABraH47oywkJgFw==",
+      "requires": {
+        "@vue/compiler-dom": "3.2.31",
+        "@vue/compiler-sfc": "3.2.31",
+        "@vue/runtime-dom": "3.2.31",
+        "@vue/server-renderer": "3.2.31",
+        "@vue/shared": "3.2.31"
+      }
+    },
+    "vuex": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmmirror.com/vuex/-/vuex-4.0.2.tgz",
+      "integrity": "sha512-M6r8uxELjZIK8kTKDGgZTYX/ahzblnzC4isU1tpmEuOIIKmV+TRdc+H4s8ds2NuZ7wpUTdGRzJRtoj+lI+pc0Q==",
+      "dev": true,
+      "requires": {
+        "@vue/devtools-api": "^6.0.0-beta.11"
+      }
+    },
+    "which": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz",
+      "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+      "dev": true,
+      "requires": {
+        "isexe": "^2.0.0"
+      }
+    },
+    "widest-line": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/widest-line/-/widest-line-3.1.0.tgz",
+      "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==",
+      "dev": true,
+      "requires": {
+        "string-width": "^4.0.0"
+      }
+    },
+    "word-wrap": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.3.tgz",
+      "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
+      "dev": true
+    },
+    "wrappy": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz",
+      "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+      "dev": true
+    },
+    "write-file-atomic": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmmirror.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
+      "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
+      "dev": true,
+      "requires": {
+        "imurmurhash": "^0.1.4",
+        "is-typedarray": "^1.0.0",
+        "signal-exit": "^3.0.2",
+        "typedarray-to-buffer": "^3.1.5"
+      }
+    },
+    "xdg-basedir": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz",
+      "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==",
+      "dev": true
+    },
+    "yallist": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz",
+      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+      "dev": true
+    },
+    "yargs-parser": {
+      "version": "18.1.3",
+      "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-18.1.3.tgz",
+      "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
+      "dev": true,
+      "requires": {
+        "camelcase": "^5.0.0",
+        "decamelize": "^1.2.0"
+      }
+    }
+  }
+}

+ 45 - 0
mini/types-tips-test/miniprogram-api-typings/package.json

xqd
@@ -0,0 +1,45 @@
+{
+  "name": "miniprogram-api-typings",
+  "version": "3.4.5",
+  "description": "Type definitions for APIs of Wechat Mini Program in TypeScript",
+  "main": "./index.d.ts",
+  "types": "./index.d.ts",
+  "scripts": {
+    "test": "npm run tsd && npm run eslint",
+    "tsd": "tsd",
+    "eslint": "eslint --config .eslintrc.js types/**/*.ts"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/wechat-miniprogram/api-typings.git"
+  },
+  "author": "Wechat Miniprogram <wx-miniprogram@qq.com>",
+  "license": "MIT",
+  "bugs": {
+    "url": "https://github.com/wechat-miniprogram/api-typings/issues"
+  },
+  "homepage": "https://github.com/wechat-miniprogram/api-typings#readme",
+  "devDependencies": {
+    "@typescript-eslint/eslint-plugin": "^4.15.2",
+    "@typescript-eslint/parser": "^4.15.2",
+    "eslint": "^7.20.0",
+    "tsd": "^0.14.0",
+    "typescript": "^4.1.5",
+    "vuex": "^4.0.2"
+  },
+  "tsd": {
+    "directory": "test"
+  },
+  "files": [
+    "LICENSE",
+    "CHANGELOG.md",
+    "README.md",
+    "README-en.md",
+    "index.d.ts",
+    "typings.json",
+    "types/"
+  ],
+  "dependencies": {
+    "vue": "^3.2.31"
+  }
+}

+ 1 - 0
mini/types-tips-test/miniprogram-api-typings/types/index.d.ts

xqd
@@ -0,0 +1 @@
+/// <reference path="./wx/index.d.ts" />

+ 135 - 0
mini/types-tips-test/miniprogram-api-typings/types/wx/index.d.ts

xqd
@@ -0,0 +1,135 @@
+
+/*! *****************************************************************************
+Copyright (c) 2022 Tencent, Inc. All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+***************************************************************************** */
+
+/// <reference path="./lib.wx.app.d.ts" />
+/// <reference path="./lib.wx.page.d.ts" />
+/// <reference path="./lib.wx.api.d.ts" />
+/// <reference path="./lib.wx.cloud.d.ts" />
+/// <reference path="./lib.wx.component.d.ts" />
+/// <reference path="./lib.wx.behavior.d.ts" />
+/// <reference path="./lib.wx.event.d.ts" />
+
+declare namespace WechatMiniprogram {
+    type IAnyObject = Record<string, any>
+    type Optional<F> = F extends (arg: infer P) => infer R ? (arg?: P) => R : F
+    type OptionalInterface<T> = { [K in keyof T]: Optional<T[K]> }
+    interface AsyncMethodOptionLike {
+        success?: (...args: any[]) => void
+    }
+    type PromisifySuccessResult<
+        P,
+        T extends AsyncMethodOptionLike
+    > = P extends {
+        success: any
+    }
+        ? void
+        : P extends { fail: any }
+        ? void
+        : P extends { complete: any }
+        ? void
+        : Promise<Parameters<Exclude<T['success'], undefined>>[0]>
+
+    //  TODO: Extract real definition from `lib.dom.d.ts` to replace this
+    type IIRFilterNode = any
+    type WaveShaperNode = any
+    type ConstantSourceNode = any
+    type OscillatorNode = any
+    type GainNode = any
+    type BiquadFilterNode = any
+    type PeriodicWaveNode = any
+    type BufferSourceNode = any
+    type ChannelSplitterNode = any
+    type ChannelMergerNode = any
+    type DelayNode = any
+    type DynamicsCompressorNode = any
+    type ScriptProcessorNode = any
+    type PannerNode = any
+    type AudioListener = any
+    type WebGLTexture = any
+    type WebGLRenderingContext = any
+}
+
+// @ts-ignore
+declare let console: WechatMiniprogram.Console
+
+declare let wx: WechatMiniprogram.Wx
+/** 引入模块。返回模块通过 `module.exports` 或 `exports` 暴露的接口。 */
+declare function require(
+    /** 需要引入模块文件相对于当前文件的相对路径,或 npm 模块名,或 npm 模块路径。不支持绝对路径 */
+    module: string
+): any
+/** 引入插件。返回插件通过 `main` 暴露的接口。 */
+declare function requirePlugin(
+    /** 需要引入的插件的 alias */
+    module: string
+): any
+/** 插件引入当前使用者小程序。返回使用者小程序通过 [插件配置中 `export` 暴露的接口](https://developers.weixin.qq.com/miniprogram/dev/framework/plugin/using.html#%E5%AF%BC%E5%87%BA%E5%88%B0%E6%8F%92%E4%BB%B6)。
+ *
+ * 该接口只在插件中存在
+ *
+ * 最低基础库: `2.11.1` */
+declare function requireMiniProgram(): any
+/** 当前模块对象 */
+declare let module: {
+    /** 模块向外暴露的对象,使用 `require` 引用该模块时可以获取 */
+    exports: any
+}
+/** `module.exports` 的引用 */
+declare let exports: any
+
+/** [clearInterval(number intervalID)](https://developers.weixin.qq.com/miniprogram/dev/api/base/timer/clearInterval.html)
+ *
+ * 取消由 setInterval 设置的定时器。 */
+declare function clearInterval(
+    /** 要取消的定时器的 ID */
+    intervalID: number
+): void
+/** [clearTimeout(number timeoutID)](https://developers.weixin.qq.com/miniprogram/dev/api/base/timer/clearTimeout.html)
+ *
+ * 取消由 setTimeout 设置的定时器。 */
+declare function clearTimeout(
+    /** 要取消的定时器的 ID */
+    timeoutID: number
+): void
+/** [number setInterval(function callback, number delay, any rest)](https://developers.weixin.qq.com/miniprogram/dev/api/base/timer/setInterval.html)
+ *
+ * 设定一个定时器。按照指定的周期(以毫秒计)来执行注册的回调函数 */
+declare function setInterval(
+    /** 回调函数 */
+    callback: (...args: any[]) => any,
+    /** 执行回调函数之间的时间间隔,单位 ms。 */
+    delay?: number,
+    /** param1, param2, ..., paramN 等附加参数,它们会作为参数传递给回调函数。 */
+    rest?: any
+): number
+/** [number setTimeout(function callback, number delay, any rest)](https://developers.weixin.qq.com/miniprogram/dev/api/base/timer/setTimeout.html)
+ *
+ * 设定一个定时器。在定时到期以后执行注册的回调函数 */
+declare function setTimeout(
+    /** 回调函数 */
+    callback: (...args: any[]) => any,
+    /** 延迟的时间,函数的调用会在该延迟之后发生,单位 ms。 */
+    delay?: number,
+    /** param1, param2, ..., paramN 等附加参数,它们会作为参数传递给回调函数。 */
+    rest?: any
+): number

+ 25888 - 0
mini/types-tips-test/miniprogram-api-typings/types/wx/lib.wx.api.d.ts

xqd
@@ -0,0 +1,25888 @@
+/*! *****************************************************************************
+Copyright (c) 2022 Tencent, Inc. All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+***************************************************************************** */
+
+declare namespace WechatMiniprogram {
+    interface AccessFailCallbackResult {
+        /** 错误信息
+         *
+         * 可选值:
+         * - 'fail no such file or directory ${path}': 文件/目录不存在;
+         * - 'fail sdcard not mounted': Android sdcard 挂载失败; */
+        errMsg: string
+    }
+    interface AccessOption {
+        /** 要判断是否存在的文件/目录路径 (本地路径) */
+        path: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: AccessCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: AccessFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: AccessSuccessCallback
+    }
+    /** 帐号信息 */
+    interface AccountInfo {
+        /** 小程序帐号信息 */
+        miniProgram: MiniProgram
+        /** 插件帐号信息(仅在插件中调用时包含这一项) */
+        plugin: Plugin
+    }
+    interface AddCardOption {
+        /** 需要添加的卡券列表 */
+        cardList: AddCardRequestInfo[]
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: AddCardCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: AddCardFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: AddCardSuccessCallback
+    }
+    /** 需要添加的卡券列表 */
+    interface AddCardRequestInfo {
+        /** 卡券的扩展参数。需将 CardExt 对象 JSON 序列化为**字符串**传入 */
+        cardExt: string
+        /** 卡券 ID */
+        cardId: string
+    }
+    /** 卡券添加结果列表 */
+    interface AddCardResponseInfo {
+        /** 卡券的扩展参数,结构请参考下文 */
+        cardExt: string
+        /** 用户领取到卡券的 ID */
+        cardId: string
+        /** 加密 code,为用户领取到卡券的code加密后的字符串,解密请参照:[code 解码接口](https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1499332673_Unm7V) */
+        code: string
+        /** 是否成功 */
+        isSuccess: boolean
+    }
+    interface AddCardSuccessCallbackResult {
+        /** 卡券添加结果列表 */
+        cardList: AddCardResponseInfo[]
+        errMsg: string
+    }
+    interface AddCustomLayerOption {
+        /** 个性化图层id */
+        layerId: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: AddCustomLayerCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: AddCustomLayerFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: AddCustomLayerSuccessCallback
+    }
+    interface AddFileToFavoritesOption {
+        /** 要收藏的文件地址,必须为本地路径或临时路径 */
+        filePath: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: AddFileToFavoritesCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: AddFileToFavoritesFailCallback
+        /** 自定义文件名,若留空则使用filePath中的文件名 */
+        fileName?: string
+        /** 接口调用成功的回调函数 */
+        success?: AddFileToFavoritesSuccessCallback
+    }
+    interface AddGroundOverlayOption {
+        /** 图片覆盖的经纬度范围 */
+        bounds: MapBounds
+        /** 图片图层 id */
+        id: string
+        /** 图片路径,支持网络图片、临时路径、代码包路径 */
+        src: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: AddGroundOverlayCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: AddGroundOverlayFailCallback
+        /** 图层透明度 */
+        opacity?: number
+        /** 接口调用成功的回调函数 */
+        success?: AddGroundOverlaySuccessCallback
+        /** 是否可见 */
+        visible?: boolean
+        /** 图层绘制顺序 */
+        zIndex?: number
+    }
+    interface AddMarkersOption {
+        /** 同传入 map 组件的 marker 属性 */
+        markers: any[]
+        /** 是否先清空地图上所有 marker */
+        clear?: boolean
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: AddMarkersCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: AddMarkersFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: AddMarkersSuccessCallback
+    }
+    interface AddPhoneCalendarOption {
+        /** 开始时间的 unix 时间戳 */
+        startTime: number
+        /** 日历事件标题 */
+        title: string
+        /** 是否提醒,默认 true */
+        alarm?: boolean
+        /** 提醒提前量,单位秒,默认 0 表示开始时提醒 */
+        alarmOffset?: number
+        /** 是否全天事件,默认 false */
+        allDay?: boolean
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: AddPhoneCalendarCompleteCallback
+        /** 事件说明 */
+        description?: string
+        /** 结束时间的 unix 时间戳,默认与开始时间相同 */
+        endTime?: string
+        /** 接口调用失败的回调函数 */
+        fail?: AddPhoneCalendarFailCallback
+        /** 事件位置 */
+        location?: string
+        /** 接口调用成功的回调函数 */
+        success?: AddPhoneCalendarSuccessCallback
+    }
+    interface AddPhoneContactOption {
+        /** 名字 */
+        firstName: string
+        /** 联系地址城市 */
+        addressCity?: string
+        /** 联系地址国家 */
+        addressCountry?: string
+        /** 联系地址邮政编码 */
+        addressPostalCode?: string
+        /** 联系地址省份 */
+        addressState?: string
+        /** 联系地址街道 */
+        addressStreet?: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: AddPhoneContactCompleteCallback
+        /** 电子邮件 */
+        email?: string
+        /** 接口调用失败的回调函数 */
+        fail?: AddPhoneContactFailCallback
+        /** 住宅地址城市 */
+        homeAddressCity?: string
+        /** 住宅地址国家 */
+        homeAddressCountry?: string
+        /** 住宅地址邮政编码 */
+        homeAddressPostalCode?: string
+        /** 住宅地址省份 */
+        homeAddressState?: string
+        /** 住宅地址街道 */
+        homeAddressStreet?: string
+        /** 住宅传真 */
+        homeFaxNumber?: string
+        /** 住宅电话 */
+        homePhoneNumber?: string
+        /** 公司电话 */
+        hostNumber?: string
+        /** 姓氏 */
+        lastName?: string
+        /** 中间名 */
+        middleName?: string
+        /** 手机号 */
+        mobilePhoneNumber?: string
+        /** 昵称 */
+        nickName?: string
+        /** 公司 */
+        organization?: string
+        /** 头像本地文件路径 */
+        photoFilePath?: string
+        /** 备注 */
+        remark?: string
+        /** 接口调用成功的回调函数 */
+        success?: AddPhoneContactSuccessCallback
+        /** 职位 */
+        title?: string
+        /** 网站 */
+        url?: string
+        /** 微信号 */
+        weChatNumber?: string
+        /** 工作地址城市 */
+        workAddressCity?: string
+        /** 工作地址国家 */
+        workAddressCountry?: string
+        /** 工作地址邮政编码 */
+        workAddressPostalCode?: string
+        /** 工作地址省份 */
+        workAddressState?: string
+        /** 工作地址街道 */
+        workAddressStreet?: string
+        /** 工作传真 */
+        workFaxNumber?: string
+        /** 工作电话 */
+        workPhoneNumber?: string
+    }
+    interface AddPhoneRepeatCalendarOption {
+        /** 开始时间的 unix 时间戳 (1970年1月1日开始所经过的秒数) */
+        startTime: number
+        /** 日历事件标题 */
+        title: string
+        /** 是否提醒,默认 true */
+        alarm?: boolean
+        /** 提醒提前量,单位秒,默认 0 表示开始时提醒 */
+        alarmOffset?: number
+        /** 是否全天事件,默认 false */
+        allDay?: boolean
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: AddPhoneRepeatCalendarCompleteCallback
+        /** 事件说明 */
+        description?: string
+        /** 结束时间的 unix 时间戳,默认与开始时间相同 */
+        endTime?: string
+        /** 接口调用失败的回调函数 */
+        fail?: AddPhoneRepeatCalendarFailCallback
+        /** 事件位置 */
+        location?: string
+        /** 重复周期结束时间的 unix 时间戳,不填表示一直重复 */
+        repeatEndTime?: number
+        /** 重复周期,默认 month 每月重复 */
+        repeatInterval?: string
+        /** 接口调用成功的回调函数 */
+        success?: AddPhoneRepeatCalendarSuccessCallback
+    }
+    interface AddServiceOption {
+        /** 描述service的Object */
+        service: BLEPeripheralService
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: AddServiceCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: AddServiceFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: AddServiceSuccessCallback
+    }
+    interface AddVideoToFavoritesOption {
+        /** 要收藏的视频地址,必须为本地路径或临时路径 */
+        videoPath: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: AddVideoToFavoritesCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: AddVideoToFavoritesFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: AddVideoToFavoritesSuccessCallback
+        /** 缩略图路径,若留空则使用视频首帧 */
+        thumbPath?: string
+    }
+    interface AddVisualLayerOption {
+        /** 可视化图层id([创建图层指引](https://lbs.qq.com/dev/console/layers/layerEdit)) */
+        layerId: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: AddVisualLayerCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: AddVisualLayerFailCallback
+        /** 刷新周期,单位秒 */
+        interval?: number
+        /** 图层透明度 */
+        opacity?: number
+        /** 接口调用成功的回调函数 */
+        success?: AddVisualLayerSuccessCallback
+        /** 图层绘制顺序 */
+        zIndex?: number
+    }
+    /** 广播自定义参数 */
+    interface AdvertiseReqObj {
+        /** 需要基础库: `2.20.1`
+         *
+         * 以 beacon 设备形式广播的参数。 */
+        beacon?: BeaconInfoObj
+        /** 当前设备是否可连接 */
+        connectable?: boolean
+        /** 广播中 deviceName 字段,默认为空 */
+        deviceName?: string
+        /** 广播的制造商信息。仅安卓支持,iOS 因系统限制无法定制。 */
+        manufacturerData?: ManufacturerData[]
+        /** 要广播的服务 UUID 列表。使用 16/32 位 UUID 时请参考注意事项。 */
+        serviceUuids?: string[]
+    }
+    /** animationData */
+    interface AnimationExportResult {
+        actions: IAnyObject[]
+    }
+    /** 动画效果 */
+    interface AnimationOption {
+        /** 动画变化时间,单位 ms */
+        duration?: number
+        /** 动画变化方式
+         *
+         * 可选值:
+         * - 'linear': 动画从头到尾的速度是相同的;
+         * - 'easeIn': 动画以低速开始;
+         * - 'easeOut': 动画以低速结束;
+         * - 'easeInOut': 动画以低速开始和结束; */
+        timingFunc?: 'linear' | 'easeIn' | 'easeOut' | 'easeInOut'
+    }
+    interface AppAuthorizeSetting {
+        /** 允许微信使用相册的开关(仅 iOS 有效) */
+        albumAuthorized: 'authorized' | 'denied' | 'not determined'
+        /** 允许微信使用蓝牙的开关(仅 iOS 有效) */
+        bluetoothAuthorized: 'authorized' | 'denied' | 'not determined'
+        /** 允许微信使用摄像头的开关 */
+        cameraAuthorized: 'authorized' | 'denied' | 'not determined'
+        /** 允许微信使用定位的开关 */
+        locationAuthorized: 'authorized' | 'denied' | 'not determined'
+        /** 定位准确度。true 表示模糊定位,false 表示精确定位(仅 iOS 有效) */
+        locationReducedAccuracy: boolean
+        /** 允许微信使用麦克风的开关 */
+        microphoneAuthorized: 'authorized' | 'denied' | 'not determined'
+        /** 允许微信通知带有提醒的开关(仅 iOS 有效) */
+        notificationAlertAuthorized: 'authorized' | 'denied' | 'not determined'
+        /** 允许微信通知的开关 */
+        notificationAuthorized: 'authorized' | 'denied' | 'not determined'
+        /** 允许微信通知带有标记的开关(仅 iOS 有效) */
+        notificationBadgeAuthorized: 'authorized' | 'denied' | 'not determined'
+        /** 允许微信通知带有声音的开关(仅 iOS 有效) */
+        notificationSoundAuthorized: 'authorized' | 'denied' | 'not determined'
+        /** 允许微信读写日历的开关 */
+        phoneCalendarAuthorized: 'authorized' | 'denied' | 'not determined'
+    }
+    interface AppBaseInfo {
+        /** 客户端基础库版本 */
+        SDKVersion: string
+        /** 是否已打开调试。可通过右上角菜单或 [wx.setEnableDebug](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/wx.setEnableDebug.html) 打开调试。 */
+        enableDebug: boolean
+        /** 当前小程序运行的宿主环境 */
+        host: Host
+        /** 微信设置的语言 */
+        language: string
+        /** 微信版本号 */
+        version: string
+        /** 系统当前主题,取值为`light`或`dark`,全局配置`"darkmode":true`时才能获取,否则为 undefined (不支持小游戏)
+         *
+         * 可选值:
+         * - 'dark': 深色主题;
+         * - 'light': 浅色主题; */
+        theme?: 'dark' | 'light'
+    }
+    interface AppendFileFailCallbackResult {
+        /** 错误信息
+         *
+         * 可选值:
+         * - 'fail no such file or directory, open ${filePath}': 指定的 filePath 文件不存在;
+         * - 'fail illegal operation on a directory, open "${filePath}"': 指定的 filePath 是一个已经存在的目录;
+         * - 'fail permission denied, open ${dirPath}': 指定的 filePath 路径没有写权限;
+         * - 'fail sdcard not mounted': Android sdcard 挂载失败; */
+        errMsg: string
+    }
+    interface AppendFileOption {
+        /** 要追加的文本或二进制数据 */
+        data: string | ArrayBuffer
+        /** 要追加内容的文件路径 (本地路径) */
+        filePath: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: AppendFileCompleteCallback
+        /** 指定写入文件的字符编码
+         *
+         * 可选值:
+         * - 'ascii': ;
+         * - 'base64': ;
+         * - 'binary': ;
+         * - 'hex': ;
+         * - 'ucs2': 以小端序读取;
+         * - 'ucs-2': 以小端序读取;
+         * - 'utf16le': 以小端序读取;
+         * - 'utf-16le': 以小端序读取;
+         * - 'utf-8': ;
+         * - 'utf8': ;
+         * - 'latin1': ; */
+        encoding?:
+            | 'ascii'
+            | 'base64'
+            | 'binary'
+            | 'hex'
+            | 'ucs2'
+            | 'ucs-2'
+            | 'utf16le'
+            | 'utf-16le'
+            | 'utf-8'
+            | 'utf8'
+            | 'latin1'
+        /** 接口调用失败的回调函数 */
+        fail?: AppendFileFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: AppendFileSuccessCallback
+    }
+    /** 需要基础库: `2.19.0`
+     *
+     * AudioBuffer接口表示存在内存里的一段短小的音频资源,利用[WebAudioContext.decodeAudioData](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/WebAudioContext.decodeAudioData.html)方法从一个音频文件构建,或者利用 [AudioContext.createBuffer](#)从原始数据构建。把音频放入AudioBuffer后,可以传入到一个 AudioBufferSourceNode进行播放。 */
+    interface AudioBuffer {
+        /** 返回存储在缓存区的PCM数据的时长(单位为秒) */
+        duration: number
+        /** 返回存储在缓存区的PCM数据的采样帧率 */
+        length: number
+        /** 储存在缓存区的PCM数据的通道数 */
+        numberOfChannels: number
+        /** 存储在缓存区的PCM数据的采样率(单位为sample/s) */
+        sampleRate: number
+    }
+    interface AuthPrivateMessageOption {
+        /** shareTicket。可以从 wx.onShow 中获取。详情 [shareTicket](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/share.html) */
+        shareTicket: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: AuthPrivateMessageCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: AuthPrivateMessageFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: AuthPrivateMessageSuccessCallback
+    }
+    interface AuthPrivateMessageSuccessCallbackResult {
+        /** 经过加密的activityId,解密后可得到原始的activityId。若解密后得到的activityId可以与开发者后台的活动id对应上则验证通过,否则表明valid字段不可靠(被篡改) 详细见[加密数据解密算法](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html) */
+        encryptedData: string
+        /** 错误信息 */
+        errMsg: string
+        /** 加密算法的初始向量,详细见[加密数据解密算法](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html) */
+        iv: string
+        /** 验证是否通过 */
+        valid: boolean
+    }
+    /** 用户授权设置信息,详情参考[权限](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/authorize.html) */
+    interface AuthSetting {
+        /** 是否授权通讯地址,已取消此项授权,会默认返回true */
+        'scope.address'?: boolean
+        /** 是否授权小程序在后台运行蓝牙,对应接口 [wx.openBluetoothAdapterBackground](#) */
+        'scope.bluetoothBackground'?: boolean
+        /** 是否授权摄像头,对应[[camera](https://developers.weixin.qq.com/miniprogram/dev/component/camera.html)](https://developers.weixin.qq.com/miniprogram/dev/component/camera.html) 组件 */
+        'scope.camera'?: boolean
+        /** 是否授权获取发票,已取消此项授权,会默认返回true */
+        'scope.invoice'?: boolean
+        /** 是否授权发票抬头,已取消此项授权,会默认返回true */
+        'scope.invoiceTitle'?: boolean
+        /** 是否授权录音功能,对应接口 [wx.startRecord](https://developers.weixin.qq.com/miniprogram/dev/api/media/recorder/wx.startRecord.html) */
+        'scope.record'?: boolean
+        /** 是否授权用户信息,对应接口 [wx.getUserInfo](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/user-info/wx.getUserInfo.html) */
+        'scope.userInfo'?: boolean
+        /** 是否授权地理位置,对应接口 [wx.getLocation](https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.getLocation.html), [wx.chooseLocation](https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.chooseLocation.html) */
+        'scope.userLocation'?: boolean
+        /** 是否授权微信运动步数,对应接口 [wx.getWeRunData](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/werun/wx.getWeRunData.html) */
+        'scope.werun'?: boolean
+        /** 是否授权保存到相册 [wx.saveImageToPhotosAlbum](https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.saveImageToPhotosAlbum.html), [wx.saveVideoToPhotosAlbum](https://developers.weixin.qq.com/miniprogram/dev/api/media/video/wx.saveVideoToPhotosAlbum.html) */
+        'scope.writePhotosAlbum'?: boolean
+    }
+    interface AuthorizeForMiniProgramOption {
+        /** 需要获取权限的 scope,详见 [scope 列表](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/authorize.html#scope-列表)
+         *
+         * 可选值:
+         * - 'scope.record': ;
+         * - 'scope.writePhotosAlbum': ;
+         * - 'scope.camera': ; */
+        scope: 'scope.record' | 'scope.writePhotosAlbum' | 'scope.camera'
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: AuthorizeForMiniProgramCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: AuthorizeForMiniProgramFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: AuthorizeForMiniProgramSuccessCallback
+    }
+    interface AuthorizeOption {
+        /** 需要获取权限的 scope,详见 [scope 列表](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/authorize.html#scope-列表) */
+        scope: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: AuthorizeCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: AuthorizeFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: AuthorizeSuccessCallback
+    }
+    /** 设备特征列表 */
+    interface BLECharacteristic {
+        /** 该特征支持的操作类型 */
+        properties: BLECharacteristicProperties
+        /** 蓝牙设备特征的 UUID */
+        uuid: string
+    }
+    /** 该特征支持的操作类型 */
+    interface BLECharacteristicProperties {
+        /** 该特征是否支持 indicate 操作 */
+        indicate: boolean
+        /** 该特征是否支持 notify 操作 */
+        notify: boolean
+        /** 该特征是否支持 read 操作 */
+        read: boolean
+        /** 该特征是否支持 write 操作 */
+        write: boolean
+    }
+    interface BLEPeripheralServerCloseOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: FileSystemManagerCloseCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: SocketTaskCloseFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: FileSystemManagerCloseSuccessCallback
+    }
+    /** 描述service的Object */
+    interface BLEPeripheralService {
+        /** characteristics列表 */
+        characteristics: Characteristic[]
+        /** 蓝牙服务的 UUID */
+        uuid: string
+    }
+    /** 设备服务列表 */
+    interface BLEService {
+        /** 该服务是否为主服务 */
+        isPrimary: boolean
+        /** 蓝牙设备服务的 UUID */
+        uuid: string
+    }
+    /** BackgroundAudioManager 实例,可通过 [wx.getBackgroundAudioManager](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/wx.getBackgroundAudioManager.html) 获取。
+*
+* **示例代码**
+*
+* ```js
+const backgroundAudioManager = wx.getBackgroundAudioManager()
+
+backgroundAudioManager.title = '此时此刻'
+backgroundAudioManager.epname = '此时此刻'
+backgroundAudioManager.singer = '许巍'
+backgroundAudioManager.coverImgUrl = 'http://y.gtimg.cn/music/photo_new/T002R300x300M000003rsKF44GyaSk.jpg?max_age=2592000'
+// 设置了 src 之后会自动播放
+backgroundAudioManager.src = 'http://ws.stream.qqmusic.qq.com/M500001VfvsJ21xFqb.mp3?guid=ffffffff82def4af4b12b3cd9337d5e7&uin=346897220&vkey=6292F51E1E384E061FF02C31F716658E5C81F5594D561F2E88B854E81CAAB7806D5E4F103E55D33C16F3FAC506D1AB172DE8600B37E43FAD&fromtag=46'
+``` */
+    interface BackgroundAudioManager {
+        /** 音频已缓冲的时间,仅保证当前播放时间点到此时间点内容已缓冲。(只读) */
+        buffered: number
+        /** 封面图 URL,用于做原生音频播放器背景图。原生音频播放器中的分享功能,分享出去的卡片配图及背景也将使用该图。 */
+        coverImgUrl: string
+        /** 当前音频的播放位置(单位:s),只有在有合法 src 时返回。(只读) */
+        currentTime: number
+        /** 当前音频的长度(单位:s),只有在有合法 src 时返回。(只读) */
+        duration: number
+        /** 专辑名,原生音频播放器中的分享功能,分享出去的卡片简介,也将使用该值。 */
+        epname: string
+        /** 当前是否暂停或停止。(只读) */
+        paused: boolean
+        /** 需要基础库: `2.11.0`
+         *
+         * 播放速度。范围 0.5-2.0,默认为 1。(Android 需要 6 及以上版本) */
+        playbackRate: number
+        /** 需要基础库: `1.9.94`
+         *
+         * 音频协议。默认值为 'http',设置 'hls' 可以支持播放 HLS 协议的直播音频。 */
+        protocol: string
+        /** 需要基础库: `2.13.0`
+         *
+         * `origin`: 发送完整的referrer; `no-referrer`: 不发送。格式固定为 `https://servicewechat.com/{appid}/{version}/page-frame.html`,其中 {appid} 为小程序的 appid,{version} 为小程序的版本号,版本号为 0 表示为开发版、体验版以及审核版本,版本号为 devtools 表示为开发者工具,其余为正式版本; */
+        referrerPolicy: string
+        /** 歌手名,原生音频播放器中的分享功能,分享出去的卡片简介,也将使用该值。 */
+        singer: string
+        /** 音频的数据源([2.2.3](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 开始支持云文件ID)。默认为空字符串,**当设置了新的 src 时,会自动开始播放**,目前支持的格式有 m4a, aac, mp3, wav。 */
+        src: string
+        /** 音频开始播放的位置(单位:s)。 */
+        startTime: number
+        /** 音频标题,用于原生音频播放器音频标题(必填)。原生音频播放器中的分享功能,分享出去的卡片标题,也将使用该值。 */
+        title: string
+        /** 页面链接,原生音频播放器中的分享功能,分享出去的卡片简介,也将使用该值。 */
+        webUrl: string
+    }
+    /** Beacon 设备 */
+    interface BeaconInfo {
+        /** Beacon 设备的距离,单位 m。iOS 上,proximity 为 0 时,accuracy 为 -1。 */
+        accuracy: number
+        /** Beacon 设备的主 ID */
+        major: number
+        /** Beacon 设备的次 ID */
+        minor: number
+        /** 表示设备距离的枚举值(仅iOS)
+         *
+         * 可选值:
+         * - 0: 信号太弱不足以计算距离,或非 iOS 设备;
+         * - 1: 十分近;
+         * - 2: 比较近;
+         * - 3: 远; */
+        proximity: 0 | 1 | 2 | 3
+        /** 表示设备的信号强度,单位 dBm */
+        rssi: number
+        /** Beacon 设备广播的 UUID */
+        uuid: string
+    }
+    /** 需要基础库: `2.20.1`
+     *
+     * 以 beacon 设备形式广播的参数。 */
+    interface BeaconInfoObj {
+        /** Beacon 设备的主 ID */
+        major: number
+        /** Beacon 设备的次 ID */
+        minor: number
+        /** Beacon 设备广播的 UUID */
+        uuid: string
+        /** 用于判断距离设备 1 米时 RSSI 大小的参考值 */
+        measuredPower?: number
+    }
+    interface BlueToothDevice {
+        /** 当前蓝牙设备的信号强度,单位 dBm */
+        RSSI: number
+        /** 当前蓝牙设备的广播数据段中的 ManufacturerData 数据段。 */
+        advertisData: ArrayBuffer
+        /** 当前蓝牙设备的广播数据段中的 ServiceUUIDs 数据段 */
+        advertisServiceUUIDs: string[]
+        /** 蓝牙设备 id */
+        deviceId: string
+        /** 当前蓝牙设备的广播数据段中的 LocalName 数据段 */
+        localName: string
+        /** 蓝牙设备名称,某些设备可能没有 */
+        name: string
+        /** 当前蓝牙设备的广播数据段中的 ServiceData 数据段 */
+        serviceData: IAnyObject
+    }
+    /** 搜索到的设备列表 */
+    interface BluetoothDeviceInfo {
+        /** 用于区分设备的 id */
+        deviceId: string
+        /** 蓝牙设备名称,某些设备可能没有 */
+        name: string
+    }
+    interface BlurOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: BlurCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: BlurFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: BlurSuccessCallback
+    }
+    interface BoundingClientRectCallbackResult {
+        /** 节点的下边界坐标 */
+        bottom: number
+        /** 节点的 dataset */
+        dataset: IAnyObject
+        /** 节点的高度 */
+        height: number
+        /** 节点的 ID */
+        id: string
+        /** 节点的左边界坐标 */
+        left: number
+        /** 节点的右边界坐标 */
+        right: number
+        /** 节点的上边界坐标 */
+        top: number
+        /** 节点的宽度 */
+        width: number
+    }
+    /** 目标边界 */
+    interface BoundingClientRectResult {
+        /** 下边界 */
+        bottom: number
+        /** 高度 */
+        height: number
+        /** 左边界 */
+        left: number
+        /** 右边界 */
+        right: number
+        /** 上边界 */
+        top: number
+        /** 宽度 */
+        width: number
+    }
+    interface CameraContextStartRecordOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: StartRecordCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: StartRecordFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: CameraContextStartRecordSuccessCallback
+        /** 超过30s或页面 `onHide` 时会结束录像 */
+        timeoutCallback?: StartRecordTimeoutCallback
+    }
+    interface CameraContextStopRecordOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: StopRecordCompleteCallback
+        /** 启动视频压缩,压缩效果同`chooseVideo` */
+        compressed?: boolean
+        /** 接口调用失败的回调函数 */
+        fail?: StopRecordFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: CameraContextStopRecordSuccessCallback
+    }
+    interface CameraFrameListenerStartOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: StartCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: StartFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: StartSuccessCallback
+    }
+    /** 需要基础库: `2.7.0`
+     *
+     * Canvas 实例,可通过 [SelectorQuery](https://developers.weixin.qq.com/miniprogram/dev/api/wxml/SelectorQuery.html) 获取。
+     *
+     * **示例代码**
+     *
+     * 2D Canvas 示例
+     * [在微信开发者工具中查看示例](https://developers.weixin.qq.com/s/SHfgCmmq7UcM)
+     *
+     * WebGL 示例
+     * [在微信开发者工具中查看示例](https://developers.weixin.qq.com/s/qEGUOqmf7T8z) */
+    interface Canvas {
+        /** 画布高度 */
+        height: number
+        /** 画布宽度 */
+        width: number
+    }
+    /** canvas 组件的绘图上下文。CanvasContext 是旧版的接口, 新版 Canvas 2D 接口与 Web 一致。 */
+    interface CanvasContext {
+        /** 需要基础库: `1.9.90`
+         *
+         * 填充颜色。用法同 [CanvasContext.setFillStyle()](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.setFillStyle.html)。 */
+        fillStyle: string | CanvasGradient
+        /** 需要基础库: `1.9.90`
+         *
+         * 当前字体样式的属性。符合 [CSS font 语法](https://developer.mozilla.org/zh-CN/docs/Web/CSS/font) 的 DOMString 字符串,至少需要提供字体大小和字体族名。默认值为 10px sans-serif。 */
+        font: string
+        /** 全局画笔透明度。范围 0-1,0 表示完全透明,1 表示完全不透明。 */
+        globalAlpha: number
+        /** 需要基础库: `1.9.90`
+         *
+         * 在绘制新形状时应用的合成操作的类型。目前安卓版本只适用于 `fill` 填充块的合成,用于 `stroke` 线段的合成效果都是 `source-over`。
+         *
+         * 目前支持的操作有
+         * - 安卓:xor, source-over, source-atop, destination-out, lighter, overlay, darken, lighten, hard-light
+         * - iOS:xor, source-over, source-atop, destination-over, destination-out, lighter, multiply, overlay, darken, lighten, color-dodge, color-burn, hard-light, soft-light, difference, exclusion, saturation, luminosity */
+        globalCompositeOperation: string
+        /** 需要基础库: `1.9.90`
+         *
+         * 线条的端点样式。用法同 [CanvasContext.setLineCap()](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.setLineCap.html)。 */
+        lineCap: string
+        /** 需要基础库: `1.9.90`
+         *
+         * 虚线偏移量,初始值为0 */
+        lineDashOffset: number
+        /** 需要基础库: `1.9.90`
+         *
+         * 线条的交点样式。用法同 [CanvasContext.setLineJoin()](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.setLineJoin.html)。
+         *
+         * 可选值:
+         * - 'bevel': 斜角;
+         * - 'round': 圆角;
+         * - 'miter': 尖角; */
+        lineJoin: 'bevel' | 'round' | 'miter'
+        /** 需要基础库: `1.9.90`
+         *
+         * 线条的宽度。用法同 [CanvasContext.setLineWidth()](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.setLineWidth.html)。 */
+        lineWidth: number
+        /** 需要基础库: `1.9.90`
+         *
+         * 最大斜接长度。用法同 [CanvasContext.setMiterLimit()](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.setMiterLimit.html)。 */
+        miterLimit: number
+        /** 需要基础库: `1.9.90`
+         *
+         * 阴影的模糊级别 */
+        shadowBlur: number
+        /** 需要基础库: `1.9.90`
+         *
+         * 阴影的颜色 */
+        shadowColor: number
+        /** 需要基础库: `1.9.90`
+         *
+         * 阴影相对于形状在水平方向的偏移 */
+        shadowOffsetX: number
+        /** 需要基础库: `1.9.90`
+         *
+         * 阴影相对于形状在竖直方向的偏移 */
+        shadowOffsetY: number
+        /** 需要基础库: `1.9.90`
+         *
+         * 边框颜色。用法同 [CanvasContext.setStrokeStyle()](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.setStrokeStyle.html)。 */
+        strokeStyle: string | CanvasGradient
+    }
+    interface CanvasGetImageDataOption {
+        /** 画布标识,传入 [canvas](https://developers.weixin.qq.com/miniprogram/dev/component/canvas.html) 组件的 `canvas-id` 属性。 */
+        canvasId: string
+        /** 将要被提取的图像数据矩形区域的高度 */
+        height: number
+        /** 将要被提取的图像数据矩形区域的宽度 */
+        width: number
+        /** 将要被提取的图像数据矩形区域的左上角横坐标 */
+        x: number
+        /** 将要被提取的图像数据矩形区域的左上角纵坐标 */
+        y: number
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: CanvasGetImageDataCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: CanvasGetImageDataFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: CanvasGetImageDataSuccessCallback
+    }
+    interface CanvasGetImageDataSuccessCallbackResult {
+        /** 图像像素点数据,一维数组,每四项表示一个像素点的 rgba */
+        data: Uint8ClampedArray
+        /** 图像数据矩形的高度 */
+        height: number
+        /** 图像数据矩形的宽度 */
+        width: number
+        errMsg: string
+    }
+    interface CanvasPutImageDataOption {
+        /** 画布标识,传入 [canvas](https://developers.weixin.qq.com/miniprogram/dev/component/canvas.html) 组件的 canvas-id 属性。 */
+        canvasId: string
+        /** 图像像素点数据,一维数组,每四项表示一个像素点的 rgba */
+        data: Uint8ClampedArray
+        /** 源图像数据矩形区域的高度 */
+        height: number
+        /** 源图像数据矩形区域的宽度 */
+        width: number
+        /** 源图像数据在目标画布中的位置偏移量(x 轴方向的偏移量) */
+        x: number
+        /** 源图像数据在目标画布中的位置偏移量(y 轴方向的偏移量) */
+        y: number
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: CanvasPutImageDataCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: CanvasPutImageDataFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: CanvasPutImageDataSuccessCallback
+    }
+    interface CanvasToTempFilePathOption {
+        /** 画布标识,传入 [canvas](https://developers.weixin.qq.com/miniprogram/dev/component/canvas.html) 组件实例 (canvas type="2d" 时使用该属性)。 */
+        canvas?: IAnyObject
+        /** 画布标识,传入 [canvas](https://developers.weixin.qq.com/miniprogram/dev/component/canvas.html) 组件的 canvas-id */
+        canvasId?: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: CanvasToTempFilePathCompleteCallback
+        /** 需要基础库: `1.2.0`
+         *
+         * 输出的图片的高度 */
+        destHeight?: number
+        /** 需要基础库: `1.2.0`
+         *
+         * 输出的图片的宽度 */
+        destWidth?: number
+        /** 接口调用失败的回调函数 */
+        fail?: CanvasToTempFilePathFailCallback
+        /** 需要基础库: `1.7.0`
+         *
+         * 目标文件的类型
+         *
+         * 可选值:
+         * - 'jpg': jpg 图片;
+         * - 'png': png 图片; */
+        fileType?: 'jpg' | 'png'
+        /** 需要基础库: `1.2.0`
+         *
+         * 指定的画布区域的高度 */
+        height?: number
+        /** 需要基础库: `1.7.0`
+         *
+         * 图片的质量,目前仅对 jpg 有效。取值范围为 (0, 1],不在范围内时当作 1.0 处理。 */
+        quality?: number
+        /** 接口调用成功的回调函数 */
+        success?: CanvasToTempFilePathSuccessCallback
+        /** 需要基础库: `1.2.0`
+         *
+         * 指定的画布区域的宽度 */
+        width?: number
+        /** 需要基础库: `1.2.0`
+         *
+         * 指定的画布区域的左上角横坐标 */
+        x?: number
+        /** 需要基础库: `1.2.0`
+         *
+         * 指定的画布区域的左上角纵坐标 */
+        y?: number
+    }
+    interface CanvasToTempFilePathSuccessCallbackResult {
+        /** 生成文件的临时路径 (本地路径) */
+        tempFilePath: string
+        errMsg: string
+    }
+    /** characteristics列表 */
+    interface Characteristic {
+        /** characteristic 的 UUID */
+        uuid: string
+        /** 描述符数据 */
+        descriptors?: CharacteristicDescriptor[]
+        /** 特征权限 */
+        permission?: CharacteristicPermission
+        /** 特征支持的操作 */
+        properties?: CharacteristicProperties
+        /** 特征对应的二进制值 */
+        value?: ArrayBuffer
+    }
+    /** 描述符数据 */
+    interface CharacteristicDescriptor {
+        /** Descriptor 的 UUID */
+        uuid: string
+        /** 描述符的权限 */
+        permission?: DescriptorPermission
+        /** 描述符数据 */
+        value?: ArrayBuffer
+    }
+    /** 特征权限 */
+    interface CharacteristicPermission {
+        /** 加密读请求 */
+        readEncryptionRequired?: boolean
+        /** 可读 */
+        readable?: boolean
+        /** 加密写请求 */
+        writeEncryptionRequired?: boolean
+        /** 可写 */
+        writeable?: boolean
+    }
+    /** 特征支持的操作 */
+    interface CharacteristicProperties {
+        /** 回包 */
+        indicate?: boolean
+        /** 订阅 */
+        notify?: boolean
+        /** 读 */
+        read?: boolean
+        /** 写 */
+        write?: boolean
+        /** 无回复写 */
+        writeNoResponse?: boolean
+    }
+    interface CheckIsOpenAccessibilityOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: CheckIsOpenAccessibilityCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: CheckIsOpenAccessibilityFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: CheckIsOpenAccessibilitySuccessCallback
+    }
+    interface CheckIsOpenAccessibilitySuccessCallbackOption {
+        /** iOS 上开启辅助功能旁白,安卓开启 talkback 时返回 true */
+        open: boolean
+    }
+    interface CheckIsSoterEnrolledInDeviceOption {
+        /** 认证方式
+         *
+         * 可选值:
+         * - 'fingerPrint': 指纹识别;
+         * - 'facial': 人脸识别;
+         * - 'speech': 声纹识别(暂未支持); */
+        checkAuthMode: 'fingerPrint' | 'facial' | 'speech'
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: CheckIsSoterEnrolledInDeviceCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: CheckIsSoterEnrolledInDeviceFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: CheckIsSoterEnrolledInDeviceSuccessCallback
+    }
+    interface CheckIsSoterEnrolledInDeviceSuccessCallbackResult {
+        /** 错误信息 */
+        errMsg: string
+        /** 是否已录入信息 */
+        isEnrolled: boolean
+    }
+    interface CheckIsSupportSoterAuthenticationOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: CheckIsSupportSoterAuthenticationCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: CheckIsSupportSoterAuthenticationFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: CheckIsSupportSoterAuthenticationSuccessCallback
+    }
+    interface CheckIsSupportSoterAuthenticationSuccessCallbackResult {
+        /** 该设备支持的可被SOTER识别的生物识别方式
+         *
+         * 可选值:
+         * - 'fingerPrint': 指纹识别;
+         * - 'facial': 人脸识别;
+         * - 'speech': 声纹识别(暂未支持); */
+        supportMode: Array<'fingerPrint' | 'facial' | 'speech'>
+        errMsg: string
+    }
+    interface CheckSessionOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: CheckSessionCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: CheckSessionFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: CheckSessionSuccessCallback
+    }
+    interface ChooseAddressOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ChooseAddressCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: ChooseAddressFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: ChooseAddressSuccessCallback
+    }
+    interface ChooseAddressSuccessCallbackResult {
+        /** 国标收货地址第二级地址 */
+        cityName: string
+        /** 国标收货地址第三级地址 */
+        countyName: string
+        /** 详细收货地址信息(包括街道地址) */
+        detailInfo: string
+        /** 新选择器详细收货地址信息 */
+        detailInfoNew: string
+        /** 错误信息 */
+        errMsg: string
+        /** 收货地址国家码 */
+        nationalCode: string
+        /** 邮编 */
+        postalCode: string
+        /** 国标收货地址第一级地址 */
+        provinceName: string
+        /** 国标收货地址第四级地址 */
+        streetName: string
+        /** 收货人手机号码 */
+        telNumber: string
+        /** 收货人姓名 */
+        userName: string
+    }
+    interface ChooseContactOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ChooseContactCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: ChooseContactFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: ChooseContactSuccessCallback
+    }
+    interface ChooseContactSuccessCallbackOption {
+        /** 联系人姓名 */
+        displayName: string
+        /** 手机号 */
+        phoneNumber: string
+        /** 选定联系人的所有手机号(部分 Android 系统只能选联系人而不能选特定手机号) */
+        phoneNumberList: string
+    }
+    /** 返回选择的文件的本地临时文件对象数组 */
+    interface ChooseFile {
+        /** 选择的文件名称 */
+        name: string
+        /** 本地临时文件路径 (本地路径) */
+        path: string
+        /** 本地临时文件大小,单位 B */
+        size: number
+        /** 选择的文件的会话发送时间,Unix时间戳,工具暂不支持此属性 */
+        time: number
+        /** 选择的文件类型
+         *
+         * 可选值:
+         * - 'video': 选择了视频文件;
+         * - 'image': 选择了图片文件;
+         * - 'file': 选择了除图片和视频的文件; */
+        type: 'video' | 'image' | 'file'
+    }
+    interface ChooseImageOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ChooseImageCompleteCallback
+        /** 最多可以选择的图片张数 */
+        count?: number
+        /** 接口调用失败的回调函数 */
+        fail?: ChooseImageFailCallback
+        /** 所选的图片的尺寸
+         *
+         * 可选值:
+         * - 'original': 原图;
+         * - 'compressed': 压缩图; */
+        sizeType?: Array<'original' | 'compressed'>
+        /** 选择图片的来源
+         *
+         * 可选值:
+         * - 'album': 从相册选图;
+         * - 'camera': 使用相机; */
+        sourceType?: Array<'album' | 'camera'>
+        /** 接口调用成功的回调函数 */
+        success?: ChooseImageSuccessCallback
+    }
+    interface ChooseImageSuccessCallbackResult {
+        /** 图片的本地临时文件路径列表 (本地路径) */
+        tempFilePaths: string[]
+        /** 需要基础库: `1.2.0`
+         *
+         * 图片的本地临时文件列表 */
+        tempFiles: ImageFile[]
+        errMsg: string
+    }
+    interface ChooseInvoiceOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ChooseInvoiceCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: ChooseInvoiceFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: ChooseInvoiceSuccessCallback
+    }
+    interface ChooseInvoiceSuccessCallbackResult {
+        /** 用户选中的发票信息,格式为一个 JSON 字符串,包含三个字段: card_id:所选发票卡券的 cardId,encrypt_code:所选发票卡券的加密 code,报销方可以通过 cardId 和 encryptCode 获得报销发票的信息,app_id: 发票方的 appId。 */
+        invoiceInfo: string
+        errMsg: string
+    }
+    interface ChooseInvoiceTitleOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ChooseInvoiceTitleCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: ChooseInvoiceTitleFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: ChooseInvoiceTitleSuccessCallback
+    }
+    interface ChooseInvoiceTitleSuccessCallbackResult {
+        /** 银行账号 */
+        bankAccount: string
+        /** 银行名称 */
+        bankName: string
+        /** 单位地址 */
+        companyAddress: string
+        /** 错误信息 */
+        errMsg: string
+        /** 抬头税号 */
+        taxNumber: string
+        /** 手机号码 */
+        telephone: string
+        /** 抬头名称 */
+        title: string
+        /** 抬头类型
+         *
+         * 可选值:
+         * - 0: 单位;
+         * - 1: 个人; */
+        type: 0 | 1
+    }
+    interface ChooseLicensePlateOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ChooseLicensePlateCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: ChooseLicensePlateFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: ChooseLicensePlateSuccessCallback
+    }
+    interface ChooseLicensePlateSuccessCallbackResult {
+        /** 用户选择的车牌号 */
+        plateNumber: string
+        errMsg: string
+    }
+    interface ChooseLocationOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ChooseLocationCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: ChooseLocationFailCallback
+        /** 需要基础库: `2.9.0`
+         *
+         * 目标地纬度 */
+        latitude?: number
+        /** 需要基础库: `2.9.0`
+         *
+         * 目标地经度 */
+        longitude?: number
+        /** 接口调用成功的回调函数 */
+        success?: ChooseLocationSuccessCallback
+    }
+    interface ChooseLocationSuccessCallbackResult {
+        /** 详细地址 */
+        address: string
+        /** 纬度,浮点数,范围为-90~90,负数表示南纬。使用 gcj02 国测局坐标系 */
+        latitude: number
+        /** 经度,浮点数,范围为-180~180,负数表示西经。使用 gcj02 国测局坐标系 */
+        longitude: number
+        /** 位置名称 */
+        name: string
+        errMsg: string
+    }
+    interface ChooseMediaOption {
+        /** 仅在 sourceType 为 camera 时生效,使用前置或后置摄像头
+         *
+         * 可选值:
+         * - 'back': 使用后置摄像头;
+         * - 'front': 使用前置摄像头; */
+        camera?: 'back' | 'front'
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ChooseMediaCompleteCallback
+        /** 最多可以选择的文件个数 */
+        count?: number
+        /** 接口调用失败的回调函数 */
+        fail?: ChooseMediaFailCallback
+        /** 拍摄视频最长拍摄时间,单位秒。时间范围为 3s 至 60s 之间。不限制相册。 */
+        maxDuration?: number
+        /** 文件类型
+         *
+         * 可选值:
+         * - 'image': 只能拍摄图片或从相册选择图片;
+         * - 'video': 只能拍摄视频或从相册选择视频;
+         * - 'mix': 可同时选择图片和视频; */
+        mediaType?: Array<'image' | 'video' | 'mix'>
+        /** 仅对 mediaType 为 image 时有效,是否压缩所选文件 */
+        sizeType?: string[]
+        /** 图片和视频选择的来源
+         *
+         * 可选值:
+         * - 'album': 从相册选择;
+         * - 'camera': 使用相机拍摄; */
+        sourceType?: Array<'album' | 'camera'>
+        /** 接口调用成功的回调函数 */
+        success?: ChooseMediaSuccessCallback
+    }
+    interface ChooseMediaSuccessCallbackResult {
+        /** 本地临时文件列表 */
+        tempFiles: MediaFile[]
+        /** 文件类型,有效值有 image 、video、mix */
+        type: string
+        errMsg: string
+    }
+    interface ChooseMessageFileOption {
+        /** 最多可以选择的文件个数,可以 0~100 */
+        count: number
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ChooseMessageFileCompleteCallback
+        /** 需要基础库: `2.6.0`
+         *
+         * 根据文件拓展名过滤,仅 type==file 时有效。每一项都不能是空字符串。默认不过滤。 */
+        extension?: string[]
+        /** 接口调用失败的回调函数 */
+        fail?: ChooseMessageFileFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: ChooseMessageFileSuccessCallback
+        /** 所选的文件的类型
+         *
+         * 可选值:
+         * - 'all': 从所有文件选择;
+         * - 'video': 只能选择视频文件;
+         * - 'image': 只能选择图片文件;
+         * - 'file': 可以选择除了图片和视频之外的其它的文件; */
+        type?: 'all' | 'video' | 'image' | 'file'
+    }
+    interface ChooseMessageFileSuccessCallbackResult {
+        /** 返回选择的文件的本地临时文件对象数组 */
+        tempFiles: ChooseFile[]
+        errMsg: string
+    }
+    interface ChoosePoiOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ChoosePoiCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: ChoosePoiFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: ChoosePoiSuccessCallback
+    }
+    interface ChoosePoiSuccessCallbackResult {
+        /** 详细地址 */
+        address: string
+        /** 城市名称 */
+        city: number
+        /** 纬度,浮点数,范围为-90~90,负数表示南纬。使用 gcj02 国测局坐标系 */
+        latitude: number
+        /** 经度,浮点数,范围为-180~180,负数表示西经。使用 gcj02 国测局坐标系 */
+        longitude: number
+        /** 位置名称 */
+        name: string
+        /** 选择城市时,值为 1,选择精确位置时,值为 2 */
+        type: number
+        errMsg: string
+    }
+    interface ChooseVideoOption {
+        /** 默认拉起的是前置或者后置摄像头。部分 Android 手机下由于系统 ROM 不支持无法生效
+         *
+         * 可选值:
+         * - 'back': 默认拉起后置摄像头;
+         * - 'front': 默认拉起前置摄像头; */
+        camera?: 'back' | 'front'
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ChooseVideoCompleteCallback
+        /** 需要基础库: `1.6.0`
+         *
+         * 是否压缩所选择的视频文件 */
+        compressed?: boolean
+        /** 接口调用失败的回调函数 */
+        fail?: ChooseVideoFailCallback
+        /** 拍摄视频最长拍摄时间,单位秒 */
+        maxDuration?: number
+        /** 视频选择的来源
+         *
+         * 可选值:
+         * - 'album': 从相册选择视频;
+         * - 'camera': 使用相机拍摄视频; */
+        sourceType?: Array<'album' | 'camera'>
+        /** 接口调用成功的回调函数 */
+        success?: ChooseVideoSuccessCallback
+    }
+    interface ChooseVideoSuccessCallbackResult {
+        /** 选定视频的时间长度 */
+        duration: number
+        /** 返回选定视频的高度 */
+        height: number
+        /** 选定视频的数据量大小 */
+        size: number
+        /** 选定视频的临时文件路径 (本地路径) */
+        tempFilePath: string
+        /** 返回选定视频的宽度 */
+        width: number
+        errMsg: string
+    }
+    interface ClearOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ClearCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: ClearFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: ClearSuccessCallback
+    }
+    interface ClearStorageOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ClearStorageCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: ClearStorageFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: ClearStorageSuccessCallback
+    }
+    /** 菜单按钮的布局位置信息 */
+    interface ClientRect {
+        /** 下边界坐标,单位:px */
+        bottom: number
+        /** 高度,单位:px */
+        height: number
+        /** 左边界坐标,单位:px */
+        left: number
+        /** 右边界坐标,单位:px */
+        right: number
+        /** 上边界坐标,单位:px */
+        top: number
+        /** 宽度,单位:px */
+        width: number
+    }
+    interface CloseBLEConnectionOption {
+        /** 蓝牙设备 id */
+        deviceId: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: CloseBLEConnectionCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: CloseBLEConnectionFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: CloseBLEConnectionSuccessCallback
+    }
+    interface CloseBluetoothAdapterOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: CloseBluetoothAdapterCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: CloseBluetoothAdapterFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: CloseBluetoothAdapterSuccessCallback
+    }
+    interface CloseFailCallbackResult {
+        /** 错误信息
+         *
+         * 可选值:
+         * - 'bad file descriptor': 无效的文件描述符; */
+        errMsg: string
+    }
+    interface CloseSocketOption {
+        /** 一个数字值表示关闭连接的状态号,表示连接被关闭的原因。 */
+        code?: number
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: CloseSocketCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: CloseSocketFailCallback
+        /** 一个可读的字符串,表示连接被关闭的原因。这个字符串必须是不长于 123 字节的 UTF-8 文本(不是字符)。 */
+        reason?: string
+        /** 接口调用成功的回调函数 */
+        success?: CloseSocketSuccessCallback
+    }
+    interface CloseSyncOption {
+        /** 需要被关闭的文件描述符。fd 通过 [FileSystemManager.open](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.open.html) 或 [FileSystemManager.openSync](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.openSync.html) 接口获得 */
+        fd: string
+    }
+    /** 颜色。可以用以下几种方式来表示 canvas 中使用的颜色:
+     *
+     * - RGB 颜色: 如 `'rgb(255, 0, 0)'`
+     * - RGBA 颜色:如 `'rgba(255, 0, 0, 0.3)'`
+     * - 16 进制颜色: 如 `'#FF0000'`
+     * - 预定义的颜色: 如 `'red'`
+     *
+     * 其中预定义颜色有以下148个:
+     * *注意**: Color Name 大小写不敏感
+     *
+     * | Color Name           | HEX     |
+     * | -------------------- | ------- |
+     * | AliceBlue            | #F0F8FF |
+     * | AntiqueWhite         | #FAEBD7 |
+     * | Aqua                 | #00FFFF |
+     * | Aquamarine           | #7FFFD4 |
+     * | Azure                | #F0FFFF |
+     * | Beige                | #F5F5DC |
+     * | Bisque               | #FFE4C4 |
+     * | Black                | #000000 |
+     * | BlanchedAlmond       | #FFEBCD |
+     * | Blue                 | #0000FF |
+     * | BlueViolet           | #8A2BE2 |
+     * | Brown                | #A52A2A |
+     * | BurlyWood            | #DEB887 |
+     * | CadetBlue            | #5F9EA0 |
+     * | Chartreuse           | #7FFF00 |
+     * | Chocolate            | #D2691E |
+     * | Coral                | #FF7F50 |
+     * | CornflowerBlue       | #6495ED |
+     * | Cornsilk             | #FFF8DC |
+     * | Crimson              | #DC143C |
+     * | Cyan                 | #00FFFF |
+     * | DarkBlue             | #00008B |
+     * | DarkCyan             | #008B8B |
+     * | DarkGoldenRod        | #B8860B |
+     * | DarkGray             | #A9A9A9 |
+     * | DarkGrey             | #A9A9A9 |
+     * | DarkGreen            | #006400 |
+     * | DarkKhaki            | #BDB76B |
+     * | DarkMagenta          | #8B008B |
+     * | DarkOliveGreen       | #556B2F |
+     * | DarkOrange           | #FF8C00 |
+     * | DarkOrchid           | #9932CC |
+     * | DarkRed              | #8B0000 |
+     * | DarkSalmon           | #E9967A |
+     * | DarkSeaGreen         | #8FBC8F |
+     * | DarkSlateBlue        | #483D8B |
+     * | DarkSlateGray        | #2F4F4F |
+     * | DarkSlateGrey        | #2F4F4F |
+     * | DarkTurquoise        | #00CED1 |
+     * | DarkViolet           | #9400D3 |
+     * | DeepPink             | #FF1493 |
+     * | DeepSkyBlue          | #00BFFF |
+     * | DimGray              | #696969 |
+     * | DimGrey              | #696969 |
+     * | DodgerBlue           | #1E90FF |
+     * | FireBrick            | #B22222 |
+     * | FloralWhite          | #FFFAF0 |
+     * | ForestGreen          | #228B22 |
+     * | Fuchsia              | #FF00FF |
+     * | Gainsboro            | #DCDCDC |
+     * | GhostWhite           | #F8F8FF |
+     * | Gold                 | #FFD700 |
+     * | GoldenRod            | #DAA520 |
+     * | Gray                 | #808080 |
+     * | Grey                 | #808080 |
+     * | Green                | #008000 |
+     * | GreenYellow          | #ADFF2F |
+     * | HoneyDew             | #F0FFF0 |
+     * | HotPink              | #FF69B4 |
+     * | IndianRed            | #CD5C5C |
+     * | Indigo               | #4B0082 |
+     * | Ivory                | #FFFFF0 |
+     * | Khaki                | #F0E68C |
+     * | Lavender             | #E6E6FA |
+     * | LavenderBlush        | #FFF0F5 |
+     * | LawnGreen            | #7CFC00 |
+     * | LemonChiffon         | #FFFACD |
+     * | LightBlue            | #ADD8E6 |
+     * | LightCoral           | #F08080 |
+     * | LightCyan            | #E0FFFF |
+     * | LightGoldenRodYellow | #FAFAD2 |
+     * | LightGray            | #D3D3D3 |
+     * | LightGrey            | #D3D3D3 |
+     * | LightGreen           | #90EE90 |
+     * | LightPink            | #FFB6C1 |
+     * | LightSalmon          | #FFA07A |
+     * | LightSeaGreen        | #20B2AA |
+     * | LightSkyBlue         | #87CEFA |
+     * | LightSlateGray       | #778899 |
+     * | LightSlateGrey       | #778899 |
+     * | LightSteelBlue       | #B0C4DE |
+     * | LightYellow          | #FFFFE0 |
+     * | Lime                 | #00FF00 |
+     * | LimeGreen            | #32CD32 |
+     * | Linen                | #FAF0E6 |
+     * | Magenta              | #FF00FF |
+     * | Maroon               | #800000 |
+     * | MediumAquaMarine     | #66CDAA |
+     * | MediumBlue           | #0000CD |
+     * | MediumOrchid         | #BA55D3 |
+     * | MediumPurple         | #9370DB |
+     * | MediumSeaGreen       | #3CB371 |
+     * | MediumSlateBlue      | #7B68EE |
+     * | MediumSpringGreen    | #00FA9A |
+     * | MediumTurquoise      | #48D1CC |
+     * | MediumVioletRed      | #C71585 |
+     * | MidnightBlue         | #191970 |
+     * | MintCream            | #F5FFFA |
+     * | MistyRose            | #FFE4E1 |
+     * | Moccasin             | #FFE4B5 |
+     * | NavajoWhite          | #FFDEAD |
+     * | Navy                 | #000080 |
+     * | OldLace              | #FDF5E6 |
+     * | Olive                | #808000 |
+     * | OliveDrab            | #6B8E23 |
+     * | Orange               | #FFA500 |
+     * | OrangeRed            | #FF4500 |
+     * | Orchid               | #DA70D6 |
+     * | PaleGoldenRod        | #EEE8AA |
+     * | PaleGreen            | #98FB98 |
+     * | PaleTurquoise        | #AFEEEE |
+     * | PaleVioletRed        | #DB7093 |
+     * | PapayaWhip           | #FFEFD5 |
+     * | PeachPuff            | #FFDAB9 |
+     * | Peru                 | #CD853F |
+     * | Pink                 | #FFC0CB |
+     * | Plum                 | #DDA0DD |
+     * | PowderBlue           | #B0E0E6 |
+     * | Purple               | #800080 |
+     * | RebeccaPurple        | #663399 |
+     * | Red                  | #FF0000 |
+     * | RosyBrown            | #BC8F8F |
+     * | RoyalBlue            | #4169E1 |
+     * | SaddleBrown          | #8B4513 |
+     * | Salmon               | #FA8072 |
+     * | SandyBrown           | #F4A460 |
+     * | SeaGreen             | #2E8B57 |
+     * | SeaShell             | #FFF5EE |
+     * | Sienna               | #A0522D |
+     * | Silver               | #C0C0C0 |
+     * | SkyBlue              | #87CEEB |
+     * | SlateBlue            | #6A5ACD |
+     * | SlateGray            | #708090 |
+     * | SlateGrey            | #708090 |
+     * | Snow                 | #FFFAFA |
+     * | SpringGreen          | #00FF7F |
+     * | SteelBlue            | #4682B4 |
+     * | Tan                  | #D2B48C |
+     * | Teal                 | #008080 |
+     * | Thistle              | #D8BFD8 |
+     * | Tomato               | #FF6347 |
+     * | Turquoise            | #40E0D0 |
+     * | Violet               | #EE82EE |
+     * | Wheat                | #F5DEB3 |
+     * | White                | #FFFFFF |
+     * | WhiteSmoke           | #F5F5F5 |
+     * | Yellow               | #FFFF00 |
+     * | YellowGreen          | #9ACD32 | */
+    interface Color {}
+    interface CompressImageOption {
+        /** 图片路径,图片的路径,支持本地路径、代码包路径 */
+        src: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: CompressImageCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: CompressImageFailCallback
+        /** 压缩质量,范围0~100,数值越小,质量越低,压缩率越高(仅对jpg有效)。 */
+        quality?: number
+        /** 接口调用成功的回调函数 */
+        success?: CompressImageSuccessCallback
+    }
+    interface CompressImageSuccessCallbackResult {
+        /** 压缩后图片的临时文件路径 (本地路径) */
+        tempFilePath: string
+        errMsg: string
+    }
+    interface CompressVideoOption {
+        /** 码率,单位 kbps */
+        bitrate: number
+        /** 帧率 */
+        fps: number
+        /** 压缩质量
+         *
+         * 可选值:
+         * - 'low': 低;
+         * - 'medium': 中;
+         * - 'high': 高; */
+        quality: 'low' | 'medium' | 'high'
+        /** 相对于原视频的分辨率比例,取值范围(0, 1] */
+        resolution: number
+        /** 视频文件路径,可以是临时文件路径也可以是永久文件路径 */
+        src: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: CompressVideoCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: CompressVideoFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: CompressVideoSuccessCallback
+    }
+    interface CompressVideoSuccessCallbackResult {
+        /** 压缩后的大小,单位 kB */
+        size: string
+        /** 压缩后的临时文件地址 */
+        tempFilePath: string
+        errMsg: string
+    }
+    interface ConnectSocketOption {
+        /** 开发者服务器 wss 接口地址 */
+        url: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ConnectSocketCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: ConnectSocketFailCallback
+        /** HTTP Header,Header 中不能设置 Referer */
+        header?: IAnyObject
+        /** 需要基础库: `2.8.0`
+         *
+         * 是否开启压缩扩展 */
+        perMessageDeflate?: boolean
+        /** 需要基础库: `1.4.0`
+         *
+         * 子协议数组 */
+        protocols?: string[]
+        /** 接口调用成功的回调函数 */
+        success?: ConnectSocketSuccessCallback
+        /** 需要基础库: `2.4.0`
+         *
+         * 建立 TCP 连接的时候的 TCP_NODELAY 设置 */
+        tcpNoDelay?: boolean
+        /** 需要基础库: `2.10.0`
+         *
+         * 超时时间,单位为毫秒 */
+        timeout?: number
+    }
+    interface ConnectWifiOption {
+        /** Wi-Fi 设备 SSID */
+        SSID: string
+        /** Wi-Fi 设备密码 */
+        password: string
+        /** Wi-Fi 设备 BSSID */
+        BSSID?: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ConnectWifiCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: ConnectWifiFailCallback
+        /** 需要基础库: `2.12.0`
+         *
+         * 跳转到系统设置页进行连接,仅安卓生效 */
+        maunal?: boolean
+        /** 接口调用成功的回调函数 */
+        success?: ConnectWifiSuccessCallback
+    }
+    /** 一个字典对象,它指定是否应该禁用规范化(默认启用规范化) */
+    interface Constraints {
+        /** 如果指定为true则禁用标准化,默认为false */
+        disableNormalization?: boolean
+    }
+    interface ContextCallbackResult {
+        /** 节点对应的 Context 对象 */
+        context: IAnyObject
+    }
+    interface CopyFileFailCallbackResult {
+        /** 错误信息
+         *
+         * 可选值:
+         * - 'fail permission denied, copyFile ${srcPath} -> ${destPath}': 指定目标文件路径没有写权限;
+         * - 'fail no such file or directory, copyFile ${srcPath} -> ${destPath}': 源文件不存在,或目标文件路径的上层目录不存在;
+         * - 'fail the maximum size of the file storage limit is exceeded': 存储空间不足;
+         * - 'fail sdcard not mounted': Android sdcard 挂载失败; */
+        errMsg: string
+    }
+    interface CopyFileOption {
+        /** 目标文件路径,支持本地路径 */
+        destPath: string
+        /** 源文件路径,支持本地路径 */
+        srcPath: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: CopyFileCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: CopyFileFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: CopyFileSuccessCallback
+    }
+    interface CreateBLEConnectionOption {
+        /** 蓝牙设备 id */
+        deviceId: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: CreateBLEConnectionCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: CreateBLEConnectionFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: CreateBLEConnectionSuccessCallback
+        /** 超时时间,单位 ms,不填表示不会超时 */
+        timeout?: number
+    }
+    interface CreateBLEPeripheralServerOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: CreateBLEPeripheralServerCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: CreateBLEPeripheralServerFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: CreateBLEPeripheralServerSuccessCallback
+    }
+    interface CreateBLEPeripheralServerSuccessCallbackResult {
+        /** [BLEPeripheralServer](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/BLEPeripheralServer.html)
+         *
+         * 外围设备的服务端。 */
+        server: BLEPeripheralServer
+        errMsg: string
+    }
+    interface CreateInnerAudioContextOption {
+        /** 需要基础库: `2.19.0`
+         *
+         * 是否使用 WebAudio 作为底层音频驱动,默认关闭。对于短音频、播放频繁的音频建议开启此选项,开启后将获得更优的性能表现。由于开启此选项后也会带来一定的内存增长,因此对于长音频建议关闭此选项。 */
+        useWebAudioImplement?: boolean
+    }
+    /** 选项 */
+    interface CreateIntersectionObserverOption {
+        /** 初始的相交比例,如果调用时检测到的相交比例与这个值不相等且达到阈值,则会触发一次监听器的回调函数。 */
+        initialRatio?: number
+        /** 需要基础库: `2.0.0`
+         *
+         * 是否同时观测多个目标节点(而非一个),如果设为 true ,observe 的 targetSelector 将选中多个节点(注意:同时选中过多节点将影响渲染性能) */
+        observeAll?: boolean
+        /** 一个数值数组,包含所有阈值。 */
+        thresholds?: number[]
+    }
+    interface CreateInterstitialAdOption {
+        /** 广告单元 id */
+        adUnitId: string
+    }
+    interface CreateMediaRecorderOption {
+        /** 指定录制的时长(s),到达自动停止。最大 7200,最小 5 */
+        duration?: number
+        /** 视频 fps */
+        fps?: number
+        /** 视频关键帧间隔 */
+        gop?: number
+        /** 视频比特率(kbps),最小值 600,最大值 3000 */
+        videoBitsPerSecond?: number
+    }
+    interface CreateOffscreenCanvasOption {
+        /** 在自定义组件下,当前组件实例的 this */
+        compInst?: Component.TrivialInstance | Page.TrivialInstance
+        /** 画布高度 */
+        height?: number
+        /** 创建的离屏 canvas 类型
+         *
+         * 可选值:
+         * - 'webgl': webgl类型上下文;
+         * - '2d': 2d类型上下文; */
+        type?: 'webgl' | '2d'
+        /** 画布宽度 */
+        width?: number
+    }
+    interface CreateRewardedVideoAdOption {
+        /** 广告单元 id */
+        adUnitId: string
+        /** 需要基础库: `2.8.0`
+         *
+         * 是否启用多例模式,默认为false */
+        multiton?: boolean
+    }
+    /** 可选参数 */
+    interface CreateWorkerOption {
+        /** 需要基础库: `2.13.0`
+         *
+         * 是否使用实验worker。在iOS下,实验worker的JS运行效率比非实验worker提升近十倍,如需在worker内进行重度计算的建议开启此选项。同时,实验worker存在极小概率会在系统资源紧张时被系统回收,因此建议配合 worker.onProcessKilled 事件使用,在worker被回收后可重新创建一个。 */
+        useExperimentalWorker?: boolean
+    }
+    interface CurrentState {
+        /** 当前缓存中的日志条数 */
+        logCount: number
+        /** 当前缓存中最大可存日志条数 */
+        maxLogCount: number
+        /** 当前缓存最大可用空间,以字节为单位 */
+        maxSize: number
+        /** 当前缓存中已使用空间,以字节为单位 */
+        size: number
+    }
+    /** 弹幕内容 */
+    interface Danmu {
+        /** 弹幕文字 */
+        text: string
+        /** 弹幕颜色 */
+        color?: string
+    }
+    /** 可选的字体描述符 */
+    interface DescOption {
+        /** 字体样式,可选值为 normal / italic / oblique */
+        style?: string
+        /** 设置小型大写字母的字体显示文本,可选值为 normal / small-caps / inherit */
+        variant?: string
+        /** 字体粗细,可选值为 normal / bold / 100 / 200../ 900 */
+        weight?: string
+    }
+    /** 描述符的权限 */
+    interface DescriptorPermission {
+        /** 读 */
+        read?: boolean
+        /** 写 */
+        write?: boolean
+    }
+    /** 指定 marker 移动到的目标点 */
+    interface DestinationOption {
+        /** 纬度 */
+        latitude: number
+        /** 经度 */
+        longitude: number
+    }
+    interface DeviceInfo {
+        /** 应用二进制接口类型(仅 Android 支持) */
+        abi: string
+        /** 设备性能等级(仅 Android 支持)。取值为:-2 或 0(该设备无法运行小游戏),-1(性能未知),>=1(设备性能值,该值越高,设备性能越好,目前最高不到50) */
+        benchmarkLevel: number
+        /** 设备品牌 */
+        brand: string
+        /** 设备型号。新机型刚推出一段时间会显示unknown,微信会尽快进行适配。 */
+        model: string
+        /** 客户端平台 */
+        platform: string
+        /** 操作系统及版本 */
+        system: string
+    }
+    interface DisableAlertBeforeUnloadOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: DisableAlertBeforeUnloadCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: DisableAlertBeforeUnloadFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: DisableAlertBeforeUnloadSuccessCallback
+    }
+    interface DownloadFileOption {
+        /** 下载资源的 url */
+        url: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: DownloadFileCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: DownloadFileFailCallback
+        /** 需要基础库: `1.8.0`
+         *
+         * 指定文件下载后存储的路径 (本地路径) */
+        filePath?: string
+        /** HTTP 请求的 Header,Header 中不能设置 Referer */
+        header?: IAnyObject
+        /** 接口调用成功的回调函数 */
+        success?: DownloadFileSuccessCallback
+        /** 需要基础库: `2.10.0`
+         *
+         * 超时时间,单位为毫秒 */
+        timeout?: number
+    }
+    interface DownloadFileSuccessCallbackResult {
+        /** 用户文件路径 (本地路径)。传入 filePath 时会返回,跟传入的 filePath 一致 */
+        filePath: string
+        /** 需要基础库: `2.10.4`
+         *
+         * 网络请求过程中一些调试信息,[查看详细说明](https://developers.weixin.qq.com/miniprogram/dev/framework/performance/network.html) */
+        profile: RequestProfile
+        /** 开发者服务器返回的 HTTP 状态码 */
+        statusCode: number
+        /** 临时文件路径 (本地路径)。没传入 filePath 指定文件存储路径时会返回,下载后的文件会存储到一个临时文件 */
+        tempFilePath: string
+        errMsg: string
+    }
+    interface DownloadTaskOnProgressUpdateCallbackResult {
+        /** 下载进度百分比 */
+        progress: number
+        /** 预期需要下载的数据总长度,单位 Bytes */
+        totalBytesExpectedToWrite: number
+        /** 已经下载的数据长度,单位 Bytes */
+        totalBytesWritten: number
+    }
+    interface EnableAlertBeforeUnloadOption {
+        /** 询问对话框内容 */
+        message: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: EnableAlertBeforeUnloadCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: EnableAlertBeforeUnloadFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: EnableAlertBeforeUnloadSuccessCallback
+    }
+    /** 文件读取结果。res.entries 是一个对象,key是文件路径,value是一个对象 FileItem ,表示该文件的读取结果。每个 FileItem 包含 data (文件内容) 和 errMsg (错误信息) 属性。 */
+    interface EntriesResult {
+        /** 文件路径 */
+        [path: string]: ZipFileItem
+    }
+    /** 要读取的压缩包内的文件列表(当传入"all" 时表示读取压缩包内所有文件) */
+    interface EntryItem {
+        /** 压缩包内文件路径 */
+        path: string
+        /** 指定读取文件的字符编码,如果不传 encoding,则以 ArrayBuffer 格式读取文件的二进制内容
+         *
+         * 可选值:
+         * - 'ascii': ;
+         * - 'base64': ;
+         * - 'binary': ;
+         * - 'hex': ;
+         * - 'ucs2': 以小端序读取;
+         * - 'ucs-2': 以小端序读取;
+         * - 'utf16le': 以小端序读取;
+         * - 'utf-16le': 以小端序读取;
+         * - 'utf-8': ;
+         * - 'utf8': ;
+         * - 'latin1': ; */
+        encoding?:
+            | 'ascii'
+            | 'base64'
+            | 'binary'
+            | 'hex'
+            | 'ucs2'
+            | 'ucs-2'
+            | 'utf16le'
+            | 'utf-16le'
+            | 'utf-8'
+            | 'utf8'
+            | 'latin1'
+        /** 指定文件的长度,如果不指定,则读到文件末尾。有效范围:[1, fileLength]。单位:byte */
+        length?: number
+        /** 从文件指定位置开始读,如果不指定,则从文件头开始读。读取的范围应该是左闭右开区间 [position, position+length)。有效范围:[0, fileLength - 1]。单位:byte */
+        position?: number
+    }
+    interface ExitFullScreenOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ExitFullScreenCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: ExitFullScreenFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: ExitFullScreenSuccessCallback
+    }
+    interface ExitMiniProgramOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ExitMiniProgramCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: ExitMiniProgramFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: ExitMiniProgramSuccessCallback
+    }
+    interface ExitPictureInPictureOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ExitPictureInPictureCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: ExitPictureInPictureFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: ExitPictureInPictureSuccessCallback
+    }
+    interface ExitVoIPChatOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ExitVoIPChatCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: ExitVoIPChatFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: ExitVoIPChatSuccessCallback
+    }
+    /** 客服信息 */
+    interface ExtInfoOption {
+        /** 客服链接 */
+        url: string
+    }
+    interface ExtractDataSourceOption {
+        /** 视频源地址,只支持本地文件 */
+        source: string
+    }
+    /** 人脸角度信息,取值范围 [-1, 1],数值越接近 0 表示越正对摄像头 */
+    interface FaceAngel {
+        /** 仰俯角(点头) */
+        pitch: number
+        /** 翻滚角(左右倾) */
+        roll: number
+        /** 偏航角(摇头) */
+        yaw: number
+    }
+    /** 人脸置信度,取值范围 [0, 1],数值越大置信度越高(遮挡越少) */
+    interface FaceConf {
+        /** 整体可信度 */
+        global: number
+        /** 左眼可信度 */
+        leftEye: number
+        /** 嘴巴可信度 */
+        mouth: number
+        /** 鼻子可信度 */
+        nose: number
+        /** 右眼可信度 */
+        rightEye: number
+    }
+    interface FaceDetectOption {
+        /** 图像像素点数据,每四项表示一个像素点的 RGBA */
+        frameBuffer: ArrayBuffer
+        /** 图像高度 */
+        height: number
+        /** 图像宽度 */
+        width: number
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: FaceDetectCompleteCallback
+        /** 是否返回当前图像的人脸角度信息 */
+        enableAngle?: boolean
+        /** 是否返回当前图像的人脸的置信度(可表示器官遮挡情况) */
+        enableConf?: boolean
+        /** 是否返回多张人脸的信息 */
+        enableMultiFace?: boolean
+        /** 是否返回当前图像的人脸(106 个点) */
+        enablePoint?: boolean
+        /** 接口调用失败的回调函数 */
+        fail?: FaceDetectFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: FaceDetectSuccessCallback
+    }
+    interface FaceDetectSuccessCallbackResult {
+        /** 人脸角度信息,取值范围 [-1, 1],数值越接近 0 表示越正对摄像头 */
+        angleArray: FaceAngel
+        /** 人脸置信度,取值范围 [0, 1],数值越大置信度越高(遮挡越少) */
+        confArray: FaceConf
+        /** 脸部正方框数值,对象包含 height, weight, originX, originY 四个属性 */
+        detectRect: IAnyObject
+        /** 多人模式(enableMultiFace)下的人脸信息,每个对象包含上述其它属性 */
+        faceInfo: IAnyObject[]
+        /** 人脸 106 个点位置数组,数组每个对象包含 x 和 y */
+        pointArray: IAnyObject[]
+        /** 脸部中心点横坐标,检测不到人脸则为 -1 */
+        x: number
+        /** 脸部中心点纵坐标,检测不到人脸则为 -1 */
+        y: number
+        errMsg: string
+    }
+    interface Fields {
+        /** 需要基础库: `2.1.0`
+         *
+         * 指定样式名列表,返回节点对应样式名的当前值 */
+        computedStyle?: string[]
+        /** 需要基础库: `2.4.2`
+         *
+         * 是否返回节点对应的 Context 对象 */
+        context?: boolean
+        /** 是否返回节点 dataset */
+        dataset?: boolean
+        /** 是否返回节点 id */
+        id?: boolean
+        /** 是否返回节点 mark */
+        mark?: boolean
+        /** 需要基础库: `2.7.0`
+         *
+         * 是否返回节点对应的 Node 实例 */
+        node?: boolean
+        /** 指定属性名列表,返回节点对应属性名的当前属性值(只能获得组件文档中标注的常规属性值,id class style 和事件绑定的属性值不可获取) */
+        properties?: string[]
+        /** 是否返回节点布局位置(`left` `right` `top` `bottom`) */
+        rect?: boolean
+        /** 否 是否返回节点的 `scrollLeft` `scrollTop`,节点必须是 `scroll-view` 或者 `viewport` */
+        scrollOffset?: boolean
+        /** 是否返回节点尺寸(`width` `height`) */
+        size?: boolean
+    }
+    interface FileItem {
+        /** 文件保存时的时间戳,从1970/01/01 08:00:00 到当前时间的秒数 */
+        createTime: number
+        /** 文件路径 (本地路径) */
+        filePath: string
+        /** 本地文件大小,以字节为单位 */
+        size: number
+    }
+    interface FileSystemManagerCloseOption {
+        /** 需要被关闭的文件描述符。fd 通过 [FileSystemManager.open](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.open.html) 或 [FileSystemManager.openSync](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.openSync.html) 接口获得 */
+        fd: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: FileSystemManagerCloseCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: FileSystemManagerCloseFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: FileSystemManagerCloseSuccessCallback
+    }
+    interface FileSystemManagerGetFileInfoOption {
+        /** 要读取的文件路径 (本地路径) */
+        filePath: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetFileInfoCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: FileSystemManagerGetFileInfoFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: FileSystemManagerGetFileInfoSuccessCallback
+    }
+    interface FileSystemManagerGetFileInfoSuccessCallbackResult {
+        /** 文件大小,以字节为单位 */
+        size: number
+        errMsg: string
+    }
+    interface FileSystemManagerGetSavedFileListOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetSavedFileListCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetSavedFileListFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: FileSystemManagerGetSavedFileListSuccessCallback
+    }
+    interface FileSystemManagerGetSavedFileListSuccessCallbackResult {
+        /** 文件数组 */
+        fileList: FileItem[]
+        errMsg: string
+    }
+    interface FileSystemManagerRemoveSavedFileOption {
+        /** 需要删除的文件路径 (本地路径) */
+        filePath: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: RemoveSavedFileCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: FileSystemManagerRemoveSavedFileFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: RemoveSavedFileSuccessCallback
+    }
+    interface FileSystemManagerSaveFileOption {
+        /** 临时存储文件路径 (本地路径) */
+        tempFilePath: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: SaveFileCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: FileSystemManagerSaveFileFailCallback
+        /** 要存储的文件路径 (本地路径) */
+        filePath?: string
+        /** 接口调用成功的回调函数 */
+        success?: SaveFileSuccessCallback
+    }
+    /** 打开的文件信息数组,只有从聊天素材场景打开(scene为1173)才会携带该参数 */
+    interface ForwardMaterials {
+        /** 文件名 */
+        name: string
+        /** 文件路径(如果是webview则是url) */
+        path: string
+        /** 文件大小 */
+        size: number
+        /** 文件的mimetype类型 */
+        type: string
+    }
+    /** 视频帧数据,若取不到则返回 null。当缓冲区为空的时候可能暂停取不到数据。 */
+    interface FrameDataOptions {
+        /** 帧数据 */
+        data: ArrayBuffer
+        /** 帧数据高度 */
+        height: number
+        /** 帧原始 dts */
+        pkDts: number
+        /** 帧原始 pts */
+        pkPts: number
+        /** 帧数据宽度 */
+        width: number
+    }
+    interface FromScreenLocationOption {
+        /** x 坐标值 */
+        x: number
+        /** y 坐标值 */
+        y: number
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: FromScreenLocationCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: FromScreenLocationFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: FromScreenLocationSuccessCallback
+    }
+    interface FstatFailCallbackResult {
+        /** 错误信息
+         *
+         * 可选值:
+         * - 'bad file descriptor': 无效的文件描述符;
+         * - 'fail permission denied': 指定的 fd 路径没有读权限; */
+        errMsg: string
+    }
+    interface FstatOption {
+        /** 文件描述符。fd 通过 [FileSystemManager.open](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.open.html) 或 [FileSystemManager.openSync](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.openSync.html) 接口获得 */
+        fd: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: FstatCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: FstatFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: FstatSuccessCallback
+    }
+    interface FstatSuccessCallbackResult {
+        /** [Stats](https://developers.weixin.qq.com/miniprogram/dev/api/file/Stats.html)
+         *
+         * Stats 对象,包含了文件的状态信息 */
+        stats: Stats
+        errMsg: string
+    }
+    interface FstatSyncOption {
+        /** 文件描述符。fd 通过 [FileSystemManager.open](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.open.html) 或 [FileSystemManager.openSync](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.openSync.html) 接口获得 */
+        fd: string
+    }
+    interface FtruncateFailCallbackResult {
+        /** 错误信息
+         *
+         * 可选值:
+         * - 'bad file descriptor': 无效的文件描述符;
+         * - 'fail permission denied': 指定的 fd 没有写权限;
+         * - 'fail the maximum size of the file storage limit is exceeded': 存储空间不足;
+         * - 'fail sdcard not mounted': android sdcard 挂载失败; */
+        errMsg: string
+    }
+    interface FtruncateOption {
+        /** 文件描述符。fd 通过 [FileSystemManager.open](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.open.html) 或 [FileSystemManager.openSync](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.openSync.html) 接口获得 */
+        fd: string
+        /** 截断位置,默认0。如果 length 小于文件长度(单位:字节),则只有前面 length 个字节会保留在文件中,其余内容会被删除;如果 length 大于文件长度,则会对其进行扩展,并且扩展部分将填充空字节('\0') */
+        length: number
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: FtruncateCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: FtruncateFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: FtruncateSuccessCallback
+    }
+    interface FtruncateSyncOption {
+        /** 文件描述符。fd 通过 [FileSystemManager.open](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.open.html) 或 [FileSystemManager.openSync](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.openSync.html) 接口获得 */
+        fd: string
+        /** 截断位置,默认0。如果 length 小于文件长度(单位:字节),则只有前面 length 个字节会保留在文件中,其余内容会被删除;如果 length 大于文件长度,则会对其进行扩展,并且扩展部分将填充空字节('\0') */
+        length: number
+    }
+    interface GeneralCallbackResult {
+        /** 错误信息 */
+        errMsg: string
+    }
+    interface GetAtqaOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetAtqaCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetAtqaFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetAtqaSuccessCallback
+    }
+    interface GetAtqaSuccessCallbackResult {
+        /** 返回 ATQA/SENS_RES 数据 */
+        atqa: ArrayBuffer
+        errMsg: string
+    }
+    interface GetAvailableAudioSourcesOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetAvailableAudioSourcesCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetAvailableAudioSourcesFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetAvailableAudioSourcesSuccessCallback
+    }
+    interface GetAvailableAudioSourcesSuccessCallbackResult {
+        /** 支持的音频输入源列表,可在 [RecorderManager.start()](https://developers.weixin.qq.com/miniprogram/dev/api/media/recorder/RecorderManager.start.html) 接口中使用。返回值定义参考 https://developer.android.com/reference/kotlin/android/media/MediaRecorder.AudioSource
+         *
+         * 可选值:
+         * - 'auto': 自动设置,默认使用手机麦克风,插上耳麦后自动切换使用耳机麦克风,所有平台适用;
+         * - 'buildInMic': 手机麦克风,仅限 iOS;
+         * - 'headsetMic': 耳机麦克风,仅限 iOS;
+         * - 'mic': 麦克风(没插耳麦时是手机麦克风,插耳麦时是耳机麦克风),仅限 Android;
+         * - 'camcorder': 同 mic,适用于录制音视频内容,仅限 Android;
+         * - 'voice_communication': 同 mic,适用于实时沟通,仅限 Android;
+         * - 'voice_recognition': 同 mic,适用于语音识别,仅限 Android; */
+        audioSources: Array<
+            | 'auto'
+            | 'buildInMic'
+            | 'headsetMic'
+            | 'mic'
+            | 'camcorder'
+            | 'voice_communication'
+            | 'voice_recognition'
+        >
+        errMsg: string
+    }
+    interface GetBLEDeviceCharacteristicsOption {
+        /** 蓝牙设备 id。需要已经通过 [wx.createBLEConnection](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.createBLEConnection.html) 建立连接 */
+        deviceId: string
+        /** 蓝牙服务 UUID。需要先调用 [wx.getBLEDeviceServices](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.getBLEDeviceServices.html) 获取 */
+        serviceId: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetBLEDeviceCharacteristicsCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetBLEDeviceCharacteristicsFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetBLEDeviceCharacteristicsSuccessCallback
+    }
+    interface GetBLEDeviceCharacteristicsSuccessCallbackResult {
+        /** 设备特征列表 */
+        characteristics: BLECharacteristic[]
+        errMsg: string
+    }
+    interface GetBLEDeviceRSSIOption {
+        /** 蓝牙设备 id */
+        deviceId: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetBLEDeviceRSSICompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetBLEDeviceRSSIFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetBLEDeviceRSSISuccessCallback
+    }
+    interface GetBLEDeviceRSSISuccessCallbackResult {
+        /** 信号强度,单位 dBm */
+        RSSI: number
+        errMsg: string
+    }
+    interface GetBLEDeviceServicesOption {
+        /** 蓝牙设备 id。需要已经通过 [wx.createBLEConnection](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.createBLEConnection.html) 建立连接 */
+        deviceId: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetBLEDeviceServicesCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetBLEDeviceServicesFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetBLEDeviceServicesSuccessCallback
+    }
+    interface GetBLEDeviceServicesSuccessCallbackResult {
+        /** 设备服务列表 */
+        services: BLEService[]
+        errMsg: string
+    }
+    interface GetBLEMTUOption {
+        /** 蓝牙设备 id */
+        deviceId: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetBLEMTUCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetBLEMTUFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetBLEMTUSuccessCallback
+        /** 写模式 (iOS 特有参数)
+         *
+         * 可选值:
+         * - 'write': 有回复写;
+         * - 'writeNoResponse': 无回复写; */
+        writeType?: 'write' | 'writeNoResponse'
+    }
+    interface GetBLEMTUSuccessCallbackResult {
+        /** 最大传输单元 */
+        mtu: number
+        errMsg: string
+    }
+    interface GetBackgroundAudioPlayerStateOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetBackgroundAudioPlayerStateCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetBackgroundAudioPlayerStateFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetBackgroundAudioPlayerStateSuccessCallback
+    }
+    interface GetBackgroundAudioPlayerStateSuccessCallbackResult {
+        /** 选定音频的播放位置(单位:s),只有在音乐播放中时返回 */
+        currentPosition: number
+        /** 歌曲数据链接,只有在音乐播放中时返回 */
+        dataUrl: string
+        /** 音频的下载进度百分比,只有在音乐播放中时返回 */
+        downloadPercent: number
+        /** 选定音频的长度(单位:s),只有在音乐播放中时返回 */
+        duration: number
+        /** 播放状态
+         *
+         * 可选值:
+         * - 0: 暂停中;
+         * - 1: 播放中;
+         * - 2: 没有音乐播放; */
+        status: 0 | 1 | 2
+        errMsg: string
+    }
+    interface GetBackgroundFetchDataOption {
+        /** 缓存数据类别,取值为 periodic 或 pre */
+        fetchType: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetBackgroundFetchDataCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetBackgroundFetchDataFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetBackgroundFetchDataSuccessCallback
+    }
+    interface GetBackgroundFetchDataSuccessCallbackResult {
+        /** 缓存数据 */
+        fetchedData: string
+        /** 小程序页面路径 */
+        path: string
+        /** 传给页面的 query 参数 */
+        query: string
+        /** 进入小程序的场景值 */
+        scene: number
+        /** 客户端拿到缓存数据的时间戳。(注:安卓 timeStamp 单位是 ms,iOS timeStamp 单位是 s) */
+        timeStamp: number
+        errMsg: string
+    }
+    interface GetBackgroundFetchTokenOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetBackgroundFetchTokenCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetBackgroundFetchTokenFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetBackgroundFetchTokenSuccessCallback
+    }
+    interface GetBackgroundFetchTokenSuccessCallbackResult {
+        /** 接口调用结果 */
+        errMsg: string
+        /** 自定义的登录态 */
+        token: number
+    }
+    interface GetBatteryInfoOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetBatteryInfoCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetBatteryInfoFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetBatteryInfoSuccessCallback
+    }
+    interface GetBatteryInfoSuccessCallbackResult {
+        /** 是否正在充电中 */
+        isCharging: boolean
+        /** 设备电量,范围 1 - 100 */
+        level: number
+        errMsg: string
+    }
+    interface GetBatteryInfoSyncResult {
+        /** 是否正在充电中 */
+        isCharging: boolean
+        /** 设备电量,范围 1 - 100 */
+        level: number
+    }
+    interface GetBeaconsOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetBeaconsCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetBeaconsFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetBeaconsSuccessCallback
+    }
+    interface GetBeaconsSuccessCallbackResult {
+        /** Beacon 设备列表 */
+        beacons: BeaconInfo[]
+        errMsg: string
+    }
+    interface GetBluetoothAdapterStateOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetBluetoothAdapterStateCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetBluetoothAdapterStateFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetBluetoothAdapterStateSuccessCallback
+    }
+    interface GetBluetoothAdapterStateSuccessCallbackResult {
+        /** 蓝牙适配器是否可用 */
+        available: boolean
+        /** 是否正在搜索设备 */
+        discovering: boolean
+        errMsg: string
+    }
+    interface GetBluetoothDevicesOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetBluetoothDevicesCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetBluetoothDevicesFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetBluetoothDevicesSuccessCallback
+    }
+    interface GetBluetoothDevicesSuccessCallbackResult {
+        /** UUID 对应的已连接设备列表 */
+        devices: BlueToothDevice[]
+        errMsg: string
+    }
+    interface GetCenterLocationOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetCenterLocationCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetCenterLocationFailCallback
+        /** 图标路径,支持网络路径、本地路径、代码包路径 */
+        iconPath?: string
+        /** 接口调用成功的回调函数 */
+        success?: GetCenterLocationSuccessCallback
+    }
+    interface GetCenterLocationSuccessCallbackResult {
+        /** 纬度 */
+        latitude: number
+        /** 经度 */
+        longitude: number
+        errMsg: string
+    }
+    interface GetChannelsLiveInfoOption {
+        /** 视频号 id,以“sph”开头的id,可在视频号助手获取 */
+        finderUserName: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetChannelsLiveInfoCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetChannelsLiveInfoFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetChannelsLiveInfoSuccessCallback
+    }
+    interface GetChannelsLiveInfoSuccessCallbackResult {
+        /** 直播主题 */
+        description: string
+        /** 直播 feedId */
+        feedId: string
+        /** 视频号头像 */
+        headUrl: string
+        /** 视频号昵称 */
+        nickname: string
+        /** 直播 nonceId */
+        nonceId: string
+        /** 直播状态,2直播中,3直播结束 */
+        status: number
+        errMsg: string
+    }
+    interface GetChannelsLiveNoticeInfoOption {
+        /** 视频号 id,以“sph”开头的id,可在视频号助手获取 */
+        finderUserName: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetChannelsLiveNoticeInfoCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetChannelsLiveNoticeInfoFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetChannelsLiveNoticeInfoSuccessCallback
+    }
+    interface GetChannelsLiveNoticeInfoSuccessCallbackResult {
+        /** 直播封面 */
+        headUrl: string
+        /** 视频号昵称 */
+        nickname: string
+        /** 预告 id */
+        noticeId: string
+        /** 是否可预约 */
+        reservable: boolean
+        /** 开始时间 */
+        startTime: string
+        /** 预告状态:0可用 1取消 2已用 */
+        status: number
+        errMsg: string
+    }
+    interface GetClipboardDataOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetClipboardDataCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetClipboardDataFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetClipboardDataSuccessCallback
+    }
+    interface GetClipboardDataSuccessCallbackOption {
+        /** 剪贴板的内容 */
+        data: string
+    }
+    interface GetConnectedBluetoothDevicesOption {
+        /** 蓝牙设备主服务的 UUID 列表(支持 16/32/128 位 UUID) */
+        services: string[]
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetConnectedBluetoothDevicesCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetConnectedBluetoothDevicesFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetConnectedBluetoothDevicesSuccessCallback
+    }
+    interface GetConnectedBluetoothDevicesSuccessCallbackResult {
+        /** 搜索到的设备列表 */
+        devices: BluetoothDeviceInfo[]
+        errMsg: string
+    }
+    interface GetConnectedWifiOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetConnectedWifiCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetConnectedWifiFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetConnectedWifiSuccessCallback
+    }
+    interface GetConnectedWifiSuccessCallbackResult {
+        /** [WifiInfo](https://developers.weixin.qq.com/miniprogram/dev/api/device/wifi/WifiInfo.html)
+         *
+         * Wi-Fi 信息 */
+        wifi: WifiInfo
+        errMsg: string
+    }
+    interface GetContentsOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetContentsCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetContentsFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetContentsSuccessCallback
+    }
+    interface GetContentsSuccessCallbackResult {
+        /** 表示内容的delta对象 */
+        delta: IAnyObject
+        /** 带标签的HTML内容 */
+        html: string
+        /** 纯文本内容 */
+        text: string
+        errMsg: string
+    }
+    interface GetExtConfigOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetExtConfigCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetExtConfigFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetExtConfigSuccessCallback
+    }
+    interface GetExtConfigSuccessCallbackResult {
+        /** 第三方平台自定义的数据 */
+        extConfig: IAnyObject
+        errMsg: string
+    }
+    interface GetFileInfoFailCallbackResult {
+        /** 错误信息
+         *
+         * 可选值:
+         * - 'fail file not exist': 指定的 filePath 找不到文件; */
+        errMsg: string
+    }
+    interface GetGroupEnterInfoOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetGroupEnterInfoCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetGroupEnterInfoFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetGroupEnterInfoSuccessCallback
+    }
+    interface GetGroupEnterInfoSuccessCallbackResult {
+        /** 需要基础库: `2.7.0`
+         *
+         * 敏感数据对应的云 ID,开通[云开发](https://developers.weixin.qq.com/miniprogram/dev/wxcloud/basis/getting-started.html)的小程序才会返回,可通过云调用直接获取开放数据,详细见[云调用直接获取开放数据](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html#method-cloud) */
+        cloudID: string
+        /** 包括敏感数据在内的完整转发信息的加密数据,详细见[加密数据解密算法](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html) */
+        encryptedData: string
+        /** 错误信息 */
+        errMsg: string
+        /** 加密算法的初始向量,详细见[加密数据解密算法](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html) */
+        iv: string
+    }
+    interface GetHCEStateOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetHCEStateCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetHCEStateFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetHCEStateSuccessCallback
+    }
+    interface GetHistoricalBytesOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetHistoricalBytesCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetHistoricalBytesFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetHistoricalBytesSuccessCallback
+    }
+    interface GetHistoricalBytesSuccessCallbackResult {
+        /** 返回历史二进制数据 */
+        histBytes: ArrayBuffer
+        errMsg: string
+    }
+    interface GetImageInfoOption {
+        /** 图片的路径,支持网络路径、本地路径、代码包路径 */
+        src: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetImageInfoCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetImageInfoFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetImageInfoSuccessCallback
+    }
+    interface GetImageInfoSuccessCallbackResult {
+        /** 图片原始高度,单位px。不考虑旋转。 */
+        height: number
+        /** 需要基础库: `1.9.90`
+         *
+         * [拍照时设备方向](http://sylvana.net/jpegcrop/exif_orientation.html)
+         *
+         * 可选值:
+         * - 'up': 默认方向(手机横持拍照),对应 Exif 中的 1。或无 orientation 信息。;
+         * - 'up-mirrored': 同 up,但镜像翻转,对应 Exif 中的 2;
+         * - 'down': 旋转180度,对应 Exif 中的 3;
+         * - 'down-mirrored': 同 down,但镜像翻转,对应 Exif 中的 4;
+         * - 'left-mirrored': 同 left,但镜像翻转,对应 Exif 中的 5;
+         * - 'right': 顺时针旋转90度,对应 Exif 中的 6;
+         * - 'right-mirrored': 同 right,但镜像翻转,对应 Exif 中的 7;
+         * - 'left': 逆时针旋转90度,对应 Exif 中的 8; */
+        orientation:
+            | 'up'
+            | 'up-mirrored'
+            | 'down'
+            | 'down-mirrored'
+            | 'left-mirrored'
+            | 'right'
+            | 'right-mirrored'
+            | 'left'
+        /** 图片的本地路径 */
+        path: string
+        /** 需要基础库: `1.9.90`
+         *
+         * 图片格式 */
+        type: string
+        /** 图片原始宽度,单位px。不考虑旋转。 */
+        width: number
+        errMsg: string
+    }
+    interface GetLatestUserKeyOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetLatestUserKeyCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetLatestUserKeyFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetLatestUserKeySuccessCallback
+    }
+    interface GetLatestUserKeySuccessCallbackResult {
+        /** 用户加密密钥 */
+        encryptKey: string
+        /** 密钥过期时间 */
+        expireTime: number
+        /** 密钥初始向量 */
+        iv: string
+        /** 密钥版本 */
+        version: number
+        errMsg: string
+    }
+    interface GetLocalIPAddressOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetLocalIPAddressCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetLocalIPAddressFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetLocalIPAddressSuccessCallback
+    }
+    interface GetLocalIPAddressSuccessCallbackResult {
+        /** 错误信息 */
+        errMsg: string
+        /** 本机局域网IP地址 */
+        localip: string
+    }
+    interface GetLocationOption {
+        /** 需要基础库: `1.6.0`
+         *
+         * 传入 true 会返回高度信息,由于获取高度需要较高精确度,会减慢接口返回速度 */
+        altitude?: boolean
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetLocationCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetLocationFailCallback
+        /** 需要基础库: `2.9.0`
+         *
+         * 高精度定位超时时间(ms),指定时间内返回最高精度,该值3000ms以上高精度定位才有效果 */
+        highAccuracyExpireTime?: number
+        /** 需要基础库: `2.9.0`
+         *
+         * 开启高精度定位 */
+        isHighAccuracy?: boolean
+        /** 接口调用成功的回调函数 */
+        success?: GetLocationSuccessCallback
+        /** wgs84 返回 gps 坐标,gcj02 返回可用于 wx.openLocation 的坐标 */
+        type?: string
+    }
+    interface GetLocationSuccessCallbackResult {
+        /** 位置的精确度,反应与真实位置之间的接近程度,可以理解成10即与真实位置相差10m,越小越精确 */
+        accuracy: number
+        /** 需要基础库: `1.2.0`
+         *
+         * 高度,单位 m */
+        altitude: number
+        /** 需要基础库: `1.2.0`
+         *
+         * 水平精度,单位 m */
+        horizontalAccuracy: number
+        /** 纬度,范围为 -90~90,负数表示南纬 */
+        latitude: number
+        /** 经度,范围为 -180~180,负数表示西经 */
+        longitude: number
+        /** 速度,单位 m/s */
+        speed: number
+        /** 需要基础库: `1.2.0`
+         *
+         * 垂直精度,单位 m(Android 无法获取,返回 0) */
+        verticalAccuracy: number
+        errMsg: string
+    }
+    interface GetLogManagerOption {
+        /** 需要基础库: `2.3.2`
+         *
+         * 取值为0/1,取值为0表示会把 `App`、`Page` 的生命周期函数和 `wx` 命名空间下的函数调用写入日志,取值为1则不会。默认值是 0 */
+        level?: number
+    }
+    interface GetMaxTransceiveLengthOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetMaxTransceiveLengthCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetMaxTransceiveLengthFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetMaxTransceiveLengthSuccessCallback
+    }
+    interface GetMaxTransceiveLengthSuccessCallbackResult {
+        /** 最大传输长度 */
+        length: number
+        errMsg: string
+    }
+    interface GetNetworkTypeOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetNetworkTypeCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetNetworkTypeFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetNetworkTypeSuccessCallback
+    }
+    interface GetNetworkTypeSuccessCallbackResult {
+        /** 网络类型
+         *
+         * 可选值:
+         * - 'wifi': wifi 网络;
+         * - '2g': 2g 网络;
+         * - '3g': 3g 网络;
+         * - '4g': 4g 网络;
+         * - '5g': 5g 网络;
+         * - 'unknown': Android 下不常见的网络类型;
+         * - 'none': 无网络; */
+        networkType: 'wifi' | '2g' | '3g' | '4g' | '5g' | 'unknown' | 'none'
+        /** 信号强弱,单位 dbm */
+        signalStrength: number
+        errMsg: string
+    }
+    interface GetRandomValuesOption {
+        /** 整数,生成随机数的字节数,最大 1048576 */
+        length: number
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetRandomValuesCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetRandomValuesFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetRandomValuesSuccessCallback
+    }
+    interface GetRandomValuesSuccessCallbackResult {
+        /** 随机数内容,长度为传入的字节数 */
+        randomValues: ArrayBuffer
+        errMsg: string
+    }
+    interface GetRegionOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetRegionCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetRegionFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetRegionSuccessCallback
+    }
+    interface GetRegionSuccessCallbackResult {
+        /** 东北角经纬度 */
+        northeast: MapPostion
+        /** 西南角经纬度 */
+        southwest: MapPostion
+        errMsg: string
+    }
+    interface GetRotateOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetRotateCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetRotateFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetRotateSuccessCallback
+    }
+    interface GetRotateSuccessCallbackResult {
+        /** 旋转角 */
+        rotate: number
+        errMsg: string
+    }
+    interface GetSakOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetSakCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetSakFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetSakSuccessCallback
+    }
+    interface GetSakSuccessCallbackResult {
+        /** 返回 SAK/SEL_RES 数据 */
+        sak: number
+        errMsg: string
+    }
+    interface GetSavedFileInfoOption {
+        /** 文件路径 (本地路径) */
+        filePath: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetSavedFileInfoCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetSavedFileInfoFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetSavedFileInfoSuccessCallback
+    }
+    interface GetSavedFileInfoSuccessCallbackResult {
+        /** 文件保存时的时间戳,从1970/01/01 08:00:00 到该时刻的秒数 */
+        createTime: number
+        /** 文件大小,单位 B */
+        size: number
+        errMsg: string
+    }
+    interface GetScaleOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetScaleCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetScaleFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetScaleSuccessCallback
+    }
+    interface GetScaleSuccessCallbackResult {
+        /** 缩放值 */
+        scale: number
+        errMsg: string
+    }
+    interface GetScreenBrightnessOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetScreenBrightnessCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetScreenBrightnessFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetScreenBrightnessSuccessCallback
+    }
+    interface GetScreenBrightnessSuccessCallbackOption {
+        /** 屏幕亮度值,范围 0 ~ 1,0 最暗,1 最亮 */
+        value: number
+    }
+    interface GetSelectedTextRangeOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetSelectedTextRangeCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetSelectedTextRangeFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetSelectedTextRangeSuccessCallback
+    }
+    interface GetSelectedTextRangeSuccessCallbackResult {
+        /** 输入框光标结束位置 */
+        end: number
+        /** 输入框光标起始位置 */
+        start: number
+        errMsg: string
+    }
+    interface GetSelectionTextOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetSelectionTextCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetSelectionTextFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetSelectionTextSuccessCallback
+    }
+    interface GetSelectionTextSuccessCallbackResult {
+        /** 纯文本内容 */
+        text: string
+        errMsg: string
+    }
+    interface GetSettingOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetSettingCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetSettingFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetSettingSuccessCallback
+        /** 需要基础库: `2.10.1`
+         *
+         * 是否同时获取用户订阅消息的订阅状态,默认不获取。注意:withSubscriptions 只返回用户勾选过订阅面板中的“总是保持以上选择,不再询问”的订阅消息。 */
+        withSubscriptions?: boolean
+    }
+    interface GetSettingSuccessCallbackResult {
+        /** [AuthSetting](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/setting/AuthSetting.html)
+         *
+         * 用户授权结果 */
+        authSetting: AuthSetting
+        /** [SubscriptionsSetting](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/setting/SubscriptionsSetting.html)
+         *
+         * 需要基础库: `2.10.1`
+         *
+         * 用户订阅消息设置,接口参数`withSubscriptions`值为`true`时才会返回。 */
+        subscriptionsSetting: SubscriptionsSetting
+        /** [AuthSetting](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/setting/AuthSetting.html)
+         *
+         * 在插件中调用时,当前宿主小程序的用户授权结果 */
+        miniprogramAuthSetting?: AuthSetting
+        errMsg: string
+    }
+    interface GetShareInfoOption {
+        /** shareTicket */
+        shareTicket: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetShareInfoCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetShareInfoFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetShareInfoSuccessCallback
+        /** 需要基础库: `1.9.90`
+         *
+         * 超时时间,单位 ms */
+        timeout?: number
+    }
+    interface GetSkewOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetSkewCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetSkewFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetSkewSuccessCallback
+    }
+    interface GetSkewSuccessCallbackResult {
+        /** 倾斜角 */
+        skew: number
+        errMsg: string
+    }
+    interface GetStorageInfoOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetStorageInfoCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetStorageInfoFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetStorageInfoSuccessCallback
+    }
+    interface GetStorageInfoSuccessCallbackOption {
+        /** 当前占用的空间大小, 单位 KB */
+        currentSize: number
+        /** 当前 storage 中所有的 key */
+        keys: string[]
+        /** 限制的空间大小,单位 KB */
+        limitSize: number
+    }
+    interface GetStorageInfoSyncOption {
+        /** 当前占用的空间大小, 单位 KB */
+        currentSize: number
+        /** 当前 storage 中所有的 key */
+        keys: string[]
+        /** 限制的空间大小,单位 KB */
+        limitSize: number
+    }
+    interface GetStorageOption<T = any> {
+        /** 本地缓存中指定的 key */
+        key: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetStorageCompleteCallback
+        /** 需要基础库: `2.21.3`
+         *
+         * 是否开启加密存储。只有异步的 getStorage 接口支持开启加密存储。开启后,将会对 data 使用 AES128 解密,接口回调耗时将会增加。若开启加密存储,setStorage 和 getStorage 需要同时声明 encrypt 的值为 true */
+        encrypt?: boolean
+        /** 接口调用失败的回调函数 */
+        fail?: GetStorageFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetStorageSuccessCallback<T>
+    }
+    interface GetStorageSuccessCallbackResult<T = any> {
+        /** key对应的内容 */
+        data: T
+        errMsg: string
+    }
+    interface GetSystemInfoAsyncOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetSystemInfoAsyncCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetSystemInfoAsyncFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetSystemInfoAsyncSuccessCallback
+    }
+    interface GetSystemInfoOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetSystemInfoCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetSystemInfoFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetSystemInfoSuccessCallback
+    }
+    interface GetUserInfoOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetUserInfoCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetUserInfoFailCallback
+        /** 显示用户信息的语言
+         *
+         * 可选值:
+         * - 'en': 英文;
+         * - 'zh_CN': 简体中文;
+         * - 'zh_TW': 繁体中文; */
+        lang?: 'en' | 'zh_CN' | 'zh_TW'
+        /** 接口调用成功的回调函数 */
+        success?: GetUserInfoSuccessCallback
+        /** 是否带上登录态信息。当 withCredentials 为 true 时,要求此前有调用过 wx.login 且登录态尚未过期,此时返回的数据会包含 encryptedData, iv 等敏感信息;当 withCredentials 为 false 时,不要求有登录态,返回的数据不包含 encryptedData, iv 等敏感信息。 */
+        withCredentials?: boolean
+    }
+    interface GetUserInfoSuccessCallbackResult {
+        /** 需要基础库: `2.7.0`
+         *
+         * 敏感数据对应的云 ID,开通[云开发](https://developers.weixin.qq.com/miniprogram/dev/wxcloud/basis/getting-started.html)的小程序才会返回,可通过云调用直接获取开放数据,详细见[云调用直接获取开放数据](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html#method-cloud) */
+        cloudID: string
+        /** 包括敏感数据在内的完整用户信息的加密数据,详见 [用户数据的签名验证和加解密](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html#加密数据解密算法) */
+        encryptedData: string
+        /** 加密算法的初始向量,详见 [用户数据的签名验证和加解密](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html#加密数据解密算法) */
+        iv: string
+        /** 不包括敏感信息的原始数据字符串,用于计算签名 */
+        rawData: string
+        /** 使用 sha1( rawData + sessionkey ) 得到字符串,用于校验用户信息,详见 [用户数据的签名验证和加解密](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html) */
+        signature: string
+        /** [UserInfo](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/user-info/UserInfo.html)
+         *
+         * 用户信息对象,不包含 openid 等敏感信息 */
+        userInfo: UserInfo
+        errMsg: string
+    }
+    interface GetUserProfileOption {
+        /** 声明获取用户个人信息后的用途,不超过30个字符 */
+        desc: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetUserProfileCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetUserProfileFailCallback
+        /** 显示用户信息的语言
+         *
+         * 可选值:
+         * - 'en': 英文;
+         * - 'zh_CN': 简体中文;
+         * - 'zh_TW': 繁体中文; */
+        lang?: 'en' | 'zh_CN' | 'zh_TW'
+        /** 接口调用成功的回调函数 */
+        success?: GetUserProfileSuccessCallback
+    }
+    interface GetUserProfileSuccessCallbackResult {
+        /** 需要基础库: `2.10.4`
+         *
+         * 敏感数据对应的云 ID,开通[云开发](https://developers.weixin.qq.com/miniprogram/dev/wxcloud/basis/getting-started.html)的小程序才会返回,可通过云调用直接获取开放数据,详细见[云调用直接获取开放数据](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html#method-cloud) */
+        cloudID: string
+        /** 需要基础库: `2.10.4`
+         *
+         * 包括敏感数据在内的完整用户信息的加密数据,详见 [用户数据的签名验证和加解密](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html#加密数据解密算法) */
+        encryptedData: string
+        /** 需要基础库: `2.10.4`
+         *
+         * 加密算法的初始向量,详见 [用户数据的签名验证和加解密](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html#加密数据解密算法) */
+        iv: string
+        /** 需要基础库: `2.10.4`
+         *
+         * 不包括敏感信息的原始数据字符串,用于计算签名 */
+        rawData: string
+        /** 需要基础库: `2.10.4`
+         *
+         * 使用 sha1( rawData + sessionkey ) 得到字符串,用于校验用户信息,详见 [用户数据的签名验证和加解密](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html) */
+        signature: string
+        /** [UserInfo](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/user-info/UserInfo.html)
+         *
+         * 需要基础库: `2.10.4`
+         *
+         * 用户信息对象 */
+        userInfo: UserInfo
+        errMsg: string
+    }
+    interface GetVideoInfoOption {
+        /** 视频文件路径,可以是临时文件路径也可以是永久文件路径 */
+        src: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetVideoInfoCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetVideoInfoFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetVideoInfoSuccessCallback
+    }
+    interface GetVideoInfoSuccessCallbackResult {
+        /** 视频码率,单位 kbps */
+        bitrate: number
+        /** 视频长度 */
+        duration: number
+        /** 视频帧率 */
+        fps: number
+        /** 视频的长,单位 px */
+        height: number
+        /** 画面方向
+         *
+         * 可选值:
+         * - 'up': 默认;
+         * - 'down': 180度旋转;
+         * - 'left': 逆时针旋转90度;
+         * - 'right': 顺时针旋转90度;
+         * - 'up-mirrored': 同up,但水平翻转;
+         * - 'down-mirrored': 同down,但水平翻转;
+         * - 'left-mirrored': 同left,但垂直翻转;
+         * - 'right-mirrored': 同right,但垂直翻转; */
+        orientation:
+            | 'up'
+            | 'down'
+            | 'left'
+            | 'right'
+            | 'up-mirrored'
+            | 'down-mirrored'
+            | 'left-mirrored'
+            | 'right-mirrored'
+        /** 视频大小,单位 kB */
+        size: number
+        /** 视频格式 */
+        type: string
+        /** 视频的宽,单位 px */
+        width: number
+        errMsg: string
+    }
+    interface GetWeRunDataOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetWeRunDataCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetWeRunDataFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetWeRunDataSuccessCallback
+    }
+    interface GetWeRunDataSuccessCallbackResult {
+        /** 需要基础库: `2.7.0`
+         *
+         * 敏感数据对应的云 ID,开通云开发的小程序才会返回,可通过云调用直接获取开放数据,详细见[云调用直接获取开放数据](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html#method-cloud) */
+        cloudID: string
+        /** 包括敏感数据在内的完整用户信息的加密数据,详细见[加密数据解密算法](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html)。解密后得到的数据结构见后文 */
+        encryptedData: string
+        /** 加密算法的初始向量,详细见[加密数据解密算法](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html) */
+        iv: string
+        errMsg: string
+    }
+    interface GetWifiListOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetWifiListCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetWifiListFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: GetWifiListSuccessCallback
+    }
+    interface HideHomeButtonOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: HideHomeButtonCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: HideHomeButtonFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: HideHomeButtonSuccessCallback
+    }
+    interface HideKeyboardOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: HideKeyboardCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: HideKeyboardFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: HideKeyboardSuccessCallback
+    }
+    interface HideLoadingOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: HideLoadingCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: HideLoadingFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: HideLoadingSuccessCallback
+    }
+    interface HideNavigationBarLoadingOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: HideNavigationBarLoadingCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: HideNavigationBarLoadingFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: HideNavigationBarLoadingSuccessCallback
+    }
+    interface HideShareMenuOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: HideShareMenuCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: HideShareMenuFailCallback
+        /** 需要基础库: `2.11.3`
+         *
+         * 本接口为 Beta 版本,暂只在 Android 平台支持。需要隐藏的转发按钮名称列表,默认['shareAppMessage', 'shareTimeline']。按钮名称合法值包含 "shareAppMessage"、"shareTimeline" 两种 */
+        menus?: string[]
+        /** 接口调用成功的回调函数 */
+        success?: HideShareMenuSuccessCallback
+    }
+    interface HideTabBarOption {
+        /** 是否需要动画效果 */
+        animation?: boolean
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: HideTabBarCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: HideTabBarFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: HideTabBarSuccessCallback
+    }
+    interface HideTabBarRedDotOption {
+        /** tabBar 的哪一项,从左边算起 */
+        index: number
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: HideTabBarRedDotCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: HideTabBarRedDotFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: HideTabBarRedDotSuccessCallback
+    }
+    interface HideToastOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: HideToastCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: HideToastFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: HideToastSuccessCallback
+    }
+    /** 检测结果 */
+    interface HitTestRes {
+        /** 包含位置、旋转、放缩信息的矩阵,以列为主序 */
+        transform: Float32Array
+    }
+    interface Host {
+        /** 宿主 app 对应的 appId */
+        appId: string
+    }
+    /** 需要基础库: `2.7.0`
+     *
+     * 图片对象 */
+    interface Image {
+        /** 图片的真实高度 */
+        height: number
+        /** 图片加载发生错误后触发的回调函数 */
+        onerror: (...args: any[]) => any
+        /** 图片加载完成后触发的回调函数 */
+        onload: (...args: any[]) => any
+        /** 需要基础库: `2.13.0`
+         *
+         * `origin`: 发送完整的referrer; `no-referrer`: 不发送。格式固定为 `https://servicewechat.com/{appid}/{version}/page-frame.html`,其中 {appid} 为小程序的 appid,{version} 为小程序的版本号,版本号为 0 表示为开发版、体验版以及审核版本,版本号为 devtools 表示为开发者工具,其余为正式版本; */
+        referrerPolicy: string
+        /** 图片的 URL。v2.11.0 起支持传递 base64 Data URI */
+        src: string
+        /** 图片的真实宽度 */
+        width: number
+    }
+    /** 需要基础库: `2.9.0`
+     *
+     * ImageData 对象 */
+    interface ImageData {
+        /** 一维数组,包含以 RGBA 顺序的数据,数据使用 0 至 255(包含)的整数表示 */
+        data: Uint8ClampedArray
+        /** 使用像素描述 ImageData 的实际高度 */
+        height: number
+        /** 使用像素描述 ImageData 的实际宽度 */
+        width: number
+    }
+    /** 需要基础库: `1.2.0`
+     *
+     * 图片的本地临时文件列表 */
+    interface ImageFile {
+        /** 本地临时文件路径 (本地路径) */
+        path: string
+        /** 本地临时文件大小,单位 B */
+        size: number
+    }
+    interface IncludePointsOption {
+        /** 要显示在可视区域内的坐标点列表 */
+        points: MapPostion[]
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: IncludePointsCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: IncludePointsFailCallback
+        /** 坐标点形成的矩形边缘到地图边缘的距离,单位像素。格式为[上,右,下,左],安卓上只能识别数组第一项,上下左右的padding一致。开发者工具暂不支持padding参数。 */
+        padding?: number[]
+        /** 接口调用成功的回调函数 */
+        success?: IncludePointsSuccessCallback
+    }
+    interface InitFaceDetectOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: InitFaceDetectCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: InitFaceDetectFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: InitFaceDetectSuccessCallback
+    }
+    interface InitMarkerClusterOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: InitMarkerClusterCompleteCallback
+        /** 启用默认的聚合样式 */
+        enableDefaultStyle?: boolean
+        /** 接口调用失败的回调函数 */
+        fail?: InitMarkerClusterFailCallback
+        /** 聚合算法的可聚合距离,即距离小于该值的点会聚合至一起,以像素为单位 */
+        gridSize?: boolean
+        /** 接口调用成功的回调函数 */
+        success?: InitMarkerClusterSuccessCallback
+        /** 点击已经聚合的标记点时是否实现聚合分离 */
+        zoomOnClick?: boolean
+    }
+    /** InnerAudioContext 实例,可通过 [wx.createInnerAudioContext](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/wx.createInnerAudioContext.html) 接口获取实例。注意,音频播放过程中,可能被系统中断,可通过 [wx.onAudioInterruptionBegin](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.onAudioInterruptionBegin.html)、[wx.onAudioInterruptionEnd](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.onAudioInterruptionEnd.html)事件来处理这种情况。
+*
+* **支持格式**
+*
+* | 格式 | iOS  | Android |
+* | ---- | ---- | ------- |
+* | flac | x    | √       |
+* | m4a  | √    | √       |
+* | ogg  | x    | √       |
+* | ape  | x    | √       |
+* | amr  | x    | √       |
+* | wma  | x    | √       |
+* | wav  | √    | √       |
+* | mp3  | √    | √       |
+* | mp4  | x    | √       |
+* | aac  | √    | √       |
+* | aiff | √    | x       |
+* | caf  | √    | x       |
+*
+* **示例代码**
+*
+* ```js
+const innerAudioContext = wx.createInnerAudioContext()
+innerAudioContext.autoplay = true
+innerAudioContext.src = 'http://ws.stream.qqmusic.qq.com/M500001VfvsJ21xFqb.mp3?guid=ffffffff82def4af4b12b3cd9337d5e7&uin=346897220&vkey=6292F51E1E384E061FF02C31F716658E5C81F5594D561F2E88B854E81CAAB7806D5E4F103E55D33C16F3FAC506D1AB172DE8600B37E43FAD&fromtag=46'
+innerAudioContext.onPlay(() => {
+  console.log('开始播放')
+})
+innerAudioContext.onError((res) => {
+  console.log(res.errMsg)
+  console.log(res.errCode)
+})
+``` */
+    interface InnerAudioContext {
+        /** 是否自动开始播放,默认为 `false` */
+        autoplay: boolean
+        /** 音频缓冲的时间点,仅保证当前播放时间点到此时间点内容已缓冲(只读) */
+        buffered: number
+        /** 当前音频的播放位置(单位 s)。只有在当前有合法的 src 时返回,时间保留小数点后 6 位(只读) */
+        currentTime: number
+        /** 当前音频的长度(单位 s)。只有在当前有合法的 src 时返回(只读) */
+        duration: number
+        /** 是否循环播放,默认为 `false` */
+        loop: boolean
+        /** 是否遵循系统静音开关,默认为 `true`。当此参数为 `false` 时,即使用户打开了静音开关,也能继续发出声音。从 2.3.0 版本开始此参数不生效,使用 [wx.setInnerAudioOption](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/wx.setInnerAudioOption.html) 接口统一设置。 */
+        obeyMuteSwitch: boolean
+        /** 当前是是否暂停或停止状态(只读) */
+        paused: boolean
+        /** 需要基础库: `2.11.0`
+         *
+         * 播放速度。范围 0.5-2.0,默认为 1。(Android 需要 6 及以上版本) */
+        playbackRate: number
+        /** 需要基础库: `2.13.0`
+         *
+         * `origin`: 发送完整的referrer; `no-referrer`: 不发送。格式固定为 `https://servicewechat.com/{appid}/{version}/page-frame.html`,其中 {appid} 为小程序的 appid,{version} 为小程序的版本号,版本号为 0 表示为开发版、体验版以及审核版本,版本号为 devtools 表示为开发者工具,其余为正式版本; */
+        referrerPolicy: string
+        /** 音频资源的地址,用于直接播放。[2.2.3](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 开始支持云文件ID */
+        src: string
+        /** 开始播放的位置(单位:s),默认为 0 */
+        startTime: number
+        /** 需要基础库: `1.9.90`
+         *
+         * 音量。范围 0~1。默认为 1 */
+        volume: number
+    }
+    interface InnerAudioContextOnErrorCallbackResult {
+        /** 可选值:
+         * - 10001: 系统错误;
+         * - 10002: 网络错误;
+         * - 10003: 文件错误;
+         * - 10004: 格式错误;
+         * - -1: 未知错误; */
+        errCode: 10001 | 10002 | 10003 | 10004 | -1
+        errMsg: string
+    }
+    interface InsertDividerOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: InsertDividerCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: InsertDividerFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: InsertDividerSuccessCallback
+    }
+    interface InsertImageOption {
+        /** 图片地址,仅支持 http(s)、base64、云图片(2.8.0)、临时文件(2.8.3)。 */
+        src: string
+        /** 图像无法显示时的替代文本 */
+        alt?: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: InsertImageCompleteCallback
+        /** data 被序列化为 name=value;name1=value2 的格式挂在属性 data-custom 上 */
+        data?: IAnyObject
+        /** 添加到图片 img 标签上的类名 */
+        extClass?: string
+        /** 接口调用失败的回调函数 */
+        fail?: InsertImageFailCallback
+        /** 图片高度 (pixels/百分比) */
+        height?: string
+        /** 接口调用成功的回调函数 */
+        success?: InsertImageSuccessCallback
+        /** 图片宽度(pixels/百分比) */
+        width?: string
+    }
+    interface InsertTextOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: InsertTextCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: InsertTextFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: InsertTextSuccessCallback
+        /** 文本内容 */
+        text?: string
+    }
+    interface IntersectionObserverObserveCallbackResult {
+        /** 目标边界 */
+        boundingClientRect: BoundingClientRectResult
+        /** 节点自定义数据属性 */
+        dataset: Record<string, any>
+        /** 节点 ID */
+        id: string
+        /** 相交比例 */
+        intersectionRatio: number
+        /** 相交区域的边界 */
+        intersectionRect: IntersectionRectResult
+        /** 参照区域的边界 */
+        relativeRect: RelativeRectResult
+        /** 相交检测时的时间戳 */
+        time: number
+    }
+    /** 相交区域的边界 */
+    interface IntersectionRectResult {
+        /** 下边界 */
+        bottom: number
+        /** 高度 */
+        height: number
+        /** 左边界 */
+        left: number
+        /** 右边界 */
+        right: number
+        /** 上边界 */
+        top: number
+        /** 宽度 */
+        width: number
+    }
+    interface InterstitialAdOnErrorCallbackResult {
+        /** 错误码
+         *
+         * 可选值:
+         * - 1000: 后端接口调用失败;
+         * - 1001: 参数错误;
+         * - 1002: 广告单元无效;
+         * - 1003: 内部错误;
+         * - 1004: 无合适的广告;
+         * - 1005: 广告组件审核中;
+         * - 1006: 广告组件被驳回;
+         * - 1007: 广告组件被封禁;
+         * - 1008: 广告单元已关闭; */
+        errCode: 1000 | 1001 | 1002 | 1003 | 1004 | 1005 | 1006 | 1007 | 1008
+        /** 错误信息 */
+        errMsg: string
+    }
+    interface IsBluetoothDevicePairedOption {
+        /** 蓝牙设备 id */
+        deviceId: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: IsBluetoothDevicePairedCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: IsBluetoothDevicePairedFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: IsBluetoothDevicePairedSuccessCallback
+    }
+    interface IsConnectedOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: IsConnectedCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: IsConnectedFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: IsConnectedSuccessCallback
+    }
+    interface JoinVoIPChatOption {
+        /** 小游戏内此房间/群聊的 ID。同一时刻传入相同 groupId 的用户会进入到同个实时语音房间。 */
+        groupId: string
+        /** 验证所需的随机字符串 */
+        nonceStr: string
+        /** 签名,用于验证小游戏的身份 */
+        signature: string
+        /** 验证所需的时间戳 */
+        timeStamp: number
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: JoinVoIPChatCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: JoinVoIPChatFailCallback
+        /** 静音设置 */
+        muteConfig?: MuteConfig
+        /** 房间类型
+         *
+         * 可选值:
+         * - 'voice': 音频房间,用于语音通话;
+         * - 'video': 视频房间,结合 [voip-room](https://developers.weixin.qq.com/miniprogram/dev/component/voip-room.html) 组件可显示成员画面; */
+        roomType?: 'voice' | 'video'
+        /** 接口调用成功的回调函数 */
+        success?: JoinVoIPChatSuccessCallback
+    }
+    interface JoinVoIPChatSuccessCallbackResult {
+        /** 错误码 */
+        errCode: number
+        /** 调用结果 */
+        errMsg: string
+        /** 在此通话中的成员 openId 名单 */
+        openIdList: string[]
+    }
+    interface LaunchOptionsApp {
+        /** 需要基础库: `2.20.0`
+         *
+         * API 类别
+         *
+         * 可选值:
+         * - 'default': 默认类别;
+         * - 'nativeFunctionalized': 原生功能化,视频号直播商品、商品橱窗等场景打开的小程序;
+         * - 'browseOnly': 仅浏览,朋友圈快照页等场景打开的小程序;
+         * - 'embedded': 内嵌,通过打开半屏小程序能力打开的小程序; */
+        apiCategory:
+            | 'default'
+            | 'nativeFunctionalized'
+            | 'browseOnly'
+            | 'embedded'
+        /** 打开的文件信息数组,只有从聊天素材场景打开(scene为1173)才会携带该参数 */
+        forwardMaterials: ForwardMaterials[]
+        /** 启动小程序的路径 (代码包路径) */
+        path: string
+        /** 启动小程序的 query 参数 */
+        query: IAnyObject
+        /** 来源信息。从另一个小程序、公众号或 App 进入小程序时返回。否则返回 `{}`。(参见后文注意) */
+        referrerInfo: ReferrerInfo
+        /** 启动小程序的[场景值](https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/scene.html) */
+        scene: number
+        /** 从微信群聊/单聊打开小程序时,chatType 表示具体微信群聊/单聊类型
+         *
+         * 可选值:
+         * - 1: 微信联系人单聊;
+         * - 2: 企业微信联系人单聊;
+         * - 3: 普通微信群聊;
+         * - 4: 企业微信互通群聊; */
+        chatType?: 1 | 2 | 3 | 4
+        /** shareTicket,详见[获取更多转发信息](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/share.html) */
+        shareTicket?: string
+    }
+    interface LivePlayerContextRequestFullScreenOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: RequestFullScreenCompleteCallback
+        /** 设置全屏时的方向
+         *
+         * 可选值:
+         * - 0: 正常竖向;
+         * - 90: 屏幕逆时针90度;
+         * - -90: 屏幕顺时针90度; */
+        direction?: 0 | 90 | -90
+        /** 接口调用失败的回调函数 */
+        fail?: RequestFullScreenFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: RequestFullScreenSuccessCallback
+    }
+    interface LivePlayerContextSnapshotOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: SnapshotCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: SnapshotFailCallback
+        /** 需要基础库: `2.10.0`
+         *
+         * 图片的质量,默认原图。有效值为 raw、compressed */
+        quality?: string
+        /** 接口调用成功的回调函数 */
+        success?: LivePlayerContextSnapshotSuccessCallback
+    }
+    interface LivePlayerContextSnapshotSuccessCallbackResult {
+        /** 图片的高度 */
+        height: string
+        /** 图片文件的临时路径 (本地路径) */
+        tempImagePath: string
+        /** 图片的宽度 */
+        width: string
+        errMsg: string
+    }
+    interface LivePusherContextSnapshotOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: SnapshotCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: SnapshotFailCallback
+        /** 需要基础库: `2.10.0`
+         *
+         * 图片的质量,默认原图。有效值为 raw、compressed */
+        quality?: string
+        /** 接口调用成功的回调函数 */
+        success?: LivePusherContextSnapshotSuccessCallback
+    }
+    interface LivePusherContextSnapshotSuccessCallbackResult {
+        /** 图片的高度 */
+        height: string
+        /** 图片文件的临时路径 */
+        tempImagePath: string
+        /** 图片的宽度 */
+        width: string
+        errMsg: string
+    }
+    interface LoadFontFaceCompleteCallbackResult {
+        /** 加载字体结果 */
+        status: string
+    }
+    interface LoadFontFaceOption {
+        /** 定义的字体名称 */
+        family: string
+        /** 字体资源的地址。建议格式为 TTF 和 WOFF,WOFF2 在低版本的iOS上会不兼容。 */
+        source: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: LoadFontFaceCompleteCallback
+        /** 可选的字体描述符 */
+        desc?: DescOption
+        /** 接口调用失败的回调函数 */
+        fail?: LoadFontFaceFailCallback
+        /** 需要基础库: `2.10.0`
+         *
+         * 是否全局生效 */
+        global?: boolean
+        /** 字体作用范围,可选值为 webview / native,默认 webview,设置 native 可在 Canvas 2D 下使用 */
+        scopes?: any[]
+        /** 接口调用成功的回调函数 */
+        success?: LoadFontFaceSuccessCallback
+    }
+    interface LocalInfo {
+        /** 接收消息的 socket 的地址 */
+        address: string
+        /** 使用的协议族,为 IPv4 或者 IPv6 */
+        family: string
+        /** 端口号 */
+        port: number
+    }
+    interface LoginOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: LoginCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: LoginFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: LoginSuccessCallback
+        /** 需要基础库: `1.9.90`
+         *
+         * 超时时间,单位ms */
+        timeout?: number
+    }
+    interface LoginSuccessCallbackResult {
+        /** 用户登录凭证(有效期五分钟)。开发者需要在开发者服务器后台调用 [auth.code2Session](https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/login/auth.code2Session.html),使用 code 换取 openid、unionid、session_key 等信息 */
+        code: string
+        errMsg: string
+    }
+    interface MakeBluetoothPairOption {
+        /** 蓝牙设备 id */
+        deviceId: string
+        /** pin 码,Base64 格式。 */
+        pin: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: MakeBluetoothPairCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: MakeBluetoothPairFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: MakeBluetoothPairSuccessCallback
+        /** 超时时间,单位 ms */
+        timeout?: number
+    }
+    interface MakePhoneCallOption {
+        /** 需要拨打的电话号码 */
+        phoneNumber: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: MakePhoneCallCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: MakePhoneCallFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: MakePhoneCallSuccessCallback
+    }
+    /** 广播的制造商信息。仅安卓支持,iOS 因系统限制无法定制。 */
+    interface ManufacturerData {
+        /** 制造商ID,0x 开头的十六进制 */
+        manufacturerId: string
+        /** 制造商信息 */
+        manufacturerSpecificData?: ArrayBuffer
+    }
+    /** 图片覆盖的经纬度范围 */
+    interface MapBounds {
+        /** 东北角经纬度 */
+        northeast: MapPostion
+        /** 西南角经纬度 */
+        southwest: MapPostion
+    }
+    interface MapPostion {
+        /** 纬度 */
+        latitude: number
+        /** 经度 */
+        longitude: number
+    }
+    /** 用来扩展(或收缩)参照节点布局区域的边界 */
+    interface Margins {
+        /** 节点布局区域的下边界 */
+        bottom?: number
+        /** 节点布局区域的左边界 */
+        left?: number
+        /** 节点布局区域的右边界 */
+        right?: number
+        /** 节点布局区域的上边界 */
+        top?: number
+    }
+    /** MediaAudioPlayer 实例,可通过 [wx.createMediaAudioPlayer](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/wx.createMediaAudioPlayer.html) 接口获取实例。 */
+    interface MediaAudioPlayer {
+        /** 音量。范围 0~1。默认为 1 */
+        volume: number
+    }
+    /** 本地临时文件列表 */
+    interface MediaFile {
+        /** 视频的时间长度 */
+        duration: number
+        /** 文件类型
+         *
+         * 可选值:
+         * - 'image': 图片;
+         * - 'video': 视频; */
+        fileType: 'image' | 'video'
+        /** 视频的高度 */
+        height: number
+        /** 本地临时文件大小,单位 B */
+        size: number
+        /** 本地临时文件路径 (本地路径) */
+        tempFilePath: string
+        /** 视频缩略图临时文件路径 */
+        thumbTempFilePath: string
+        /** 视频的宽度 */
+        width: number
+    }
+    interface MediaQueryObserverObserveCallbackResult {
+        /** 页面的当前状态是否满足所指定的 media query */
+        matches: boolean
+    }
+    /** 需要预览的资源列表 */
+    interface MediaSource {
+        /** 图片或视频的地址 */
+        url: string
+        /** 视频的封面图片 */
+        poster?: string
+        /** 资源的类型,默认为图片
+         *
+         * 可选值:
+         * - 'image': 图片;
+         * - 'video': 视频; */
+        type?: 'image' | 'video'
+    }
+    /** 需要基础库: `2.9.0`
+     *
+     * 可通过 [MediaContainer.extractDataSource](https://developers.weixin.qq.com/miniprogram/dev/api/media/video-processing/MediaContainer.extractDataSource.html) 返回。
+     *
+     * [MediaTrack](https://developers.weixin.qq.com/miniprogram/dev/api/media/video-processing/MediaTrack.html) 音频或视频轨道,可以对轨道进行一些操作 */
+    interface MediaTrack {
+        /** 轨道长度,只读 */
+        duration: number
+        /** 轨道类型,只读
+         *
+         * 可选值:
+         * - 'audio': 音频轨道;
+         * - 'video': 视频轨道; */
+        kind: 'audio' | 'video'
+        /** 音量,音频轨道下有效,可写 */
+        volume: number
+    }
+    /** 小程序帐号信息 */
+    interface MiniProgram {
+        /** 小程序 appId */
+        appId: string
+        /** 需要基础库: `2.10.0`
+         *
+         * 小程序版本
+         *
+         * 可选值:
+         * - 'develop': 开发版;
+         * - 'trial': 体验版;
+         * - 'release': 正式版; */
+        envVersion: 'develop' | 'trial' | 'release'
+        /** 需要基础库: `2.10.2`
+         *
+         * 线上小程序版本号 */
+        version: string
+    }
+    interface MkdirFailCallbackResult {
+        /** 错误信息
+         *
+         * 可选值:
+         * - 'fail no such file or directory ${dirPath}': 上级目录不存在(该错误仅在 recursive = false 时生效);
+         * - 'fail permission denied, open ${dirPath}': 指定的 filePath 路径没有写权限;
+         * - 'fail file already exists ${dirPath}': 有同名文件或目录(该错误仅在 recursive = false 时生效);
+         * - 'fail sdcard not mounted': Android sdcard 挂载失败; */
+        errMsg: string
+    }
+    interface MkdirOption {
+        /** 创建的目录路径 (本地路径) */
+        dirPath: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: MkdirCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: MkdirFailCallback
+        /** 需要基础库: `2.3.0`
+         *
+         * 是否在递归创建该目录的上级目录后再创建该目录。如果对应的上级目录已经存在,则不创建该上级目录。如 dirPath 为 a/b/c/d 且 recursive 为 true,将创建 a 目录,再在 a 目录下创建 b 目录,以此类推直至创建 a/b/c 目录下的 d 目录。 */
+        recursive?: boolean
+        /** 接口调用成功的回调函数 */
+        success?: MkdirSuccessCallback
+    }
+    interface MoveAlongOption {
+        /** 平滑移动的时间 */
+        duration: number
+        /** 指定 marker */
+        markerId: number
+        /** 移动路径的坐标串,坐标点格式 `{longitude, latitude}` */
+        path: any[]
+        /** 根据路径方向自动改变 marker 的旋转角度 */
+        autoRotate?: boolean
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: MoveAlongCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: MoveAlongFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: MoveAlongSuccessCallback
+    }
+    interface MoveToLocationOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: MoveToLocationCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: MoveToLocationFailCallback
+        /** 需要基础库: `2.8.0`
+         *
+         * 纬度 */
+        latitude?: number
+        /** 需要基础库: `2.8.0`
+         *
+         * 经度 */
+        longitude?: number
+        /** 接口调用成功的回调函数 */
+        success?: MoveToLocationSuccessCallback
+    }
+    /** 静音设置 */
+    interface MuteConfig {
+        /** 是否静音耳机 */
+        muteEarphone?: boolean
+        /** 是否静音麦克风 */
+        muteMicrophone?: boolean
+    }
+    interface MuteOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: MuteCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: MuteFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: MuteSuccessCallback
+    }
+    /** 需要基础库: `2.11.2` */
+    interface NFCAdapter {
+        /** 标签类型枚举 */
+        tech: TechType
+    }
+    interface NavigateBackMiniProgramOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: NavigateBackMiniProgramCompleteCallback
+        /** 需要返回给上一个小程序的数据,上一个小程序可在 `App.onShow` 中获取到这份数据。 [详情](https://developers.weixin.qq.com/miniprogram/dev/reference/api/App.html)。 */
+        extraData?: IAnyObject
+        /** 接口调用失败的回调函数 */
+        fail?: NavigateBackMiniProgramFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: NavigateBackMiniProgramSuccessCallback
+    }
+    interface NavigateBackOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: NavigateBackCompleteCallback
+        /** 返回的页面数,如果 delta 大于现有页面数,则返回到首页。 */
+        delta?: number
+        /** 接口调用失败的回调函数 */
+        fail?: NavigateBackFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: NavigateBackSuccessCallback
+    }
+    interface NavigateToMiniProgramOption {
+        /** 要打开的小程序 appId */
+        appId: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: NavigateToMiniProgramCompleteCallback
+        /** 要打开的小程序版本。仅在当前小程序为开发版或体验版时此参数有效。如果当前小程序是正式版,则打开的小程序必定是正式版。
+         *
+         * 可选值:
+         * - 'develop': 开发版;
+         * - 'trial': 体验版;
+         * - 'release': 正式版; */
+        envVersion?: 'develop' | 'trial' | 'release'
+        /** 需要传递给目标小程序的数据,目标小程序可在 `App.onLaunch`,`App.onShow` 中获取到这份数据。如果跳转的是小游戏,可以在 [wx.onShow](#)、[wx.getLaunchOptionsSync](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/life-cycle/wx.getLaunchOptionsSync.html) 中可以获取到这份数据数据。 */
+        extraData?: IAnyObject
+        /** 接口调用失败的回调函数 */
+        fail?: NavigateToMiniProgramFailCallback
+        /** 打开的页面路径,如果为空则打开首页。path 中 ? 后面的部分会成为 query,在小程序的 `App.onLaunch`、`App.onShow` 和 `Page.onLoad` 的回调函数或小游戏的 [wx.onShow](#) 回调函数、[wx.getLaunchOptionsSync](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/life-cycle/wx.getLaunchOptionsSync.html) 中可以获取到 query 数据。对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar"。 */
+        path?: string
+        /** 需要基础库: `2.18.1`
+         *
+         * 小程序链接,当传递该参数后,可以不传 appId 和 path。链接可以通过【小程序菜单】->【复制链接】获取。 */
+        shortLink?: string
+        /** 接口调用成功的回调函数 */
+        success?: NavigateToMiniProgramSuccessCallback
+    }
+    interface NavigateToOption {
+        /** 需要跳转的应用内非 tabBar 的页面的路径 (代码包路径), 路径后可以带参数。参数与路径之间使用 `?` 分隔,参数键与参数值用 `=` 相连,不同参数用 `&` 分隔;如 'path?key=value&key2=value2' */
+        url: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: NavigateToCompleteCallback
+        /** 页面间通信接口,用于监听被打开页面发送到当前页面的数据。基础库 2.7.3 开始支持。 */
+        events?: IAnyObject
+        /** 接口调用失败的回调函数 */
+        fail?: NavigateToFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: NavigateToSuccessCallback
+    }
+    interface NavigateToSuccessCallbackResult {
+        /** [EventChannel](https://developers.weixin.qq.com/miniprogram/dev/api/route/EventChannel.html)
+         *
+         * 和被打开页面进行通信 */
+        eventChannel: EventChannel
+        errMsg: string
+    }
+    interface NdefCloseOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: NdefCloseCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: NdefCloseFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: NdefCloseSuccessCallback
+    }
+    interface NdefConnectOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ConnectCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: ConnectFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: ConnectSuccessCallback
+    }
+    interface NodeCallbackResult {
+        /** 节点对应的 Node 实例 */
+        node: IAnyObject
+    }
+    interface NotifyBLECharacteristicValueChangeOption {
+        /** 蓝牙特征的 UUID */
+        characteristicId: string
+        /** 蓝牙设备 id */
+        deviceId: string
+        /** 蓝牙特征对应服务的 UUID */
+        serviceId: string
+        /** 是否启用 notify */
+        state: boolean
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: NotifyBLECharacteristicValueChangeCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: NotifyBLECharacteristicValueChangeFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: NotifyBLECharacteristicValueChangeSuccessCallback
+        /** 需要基础库: `2.4.0`
+         *
+         * 设置特征订阅类型,有效值有 `notification` 和 `indication` */
+        type?: string
+    }
+    /** media query 描述符 */
+    interface ObserveDescriptor {
+        /** 页面高度( px 为单位) */
+        height: number
+        /** 页面最大高度( px 为单位) */
+        maxHeight: number
+        /** 页面最大宽度( px 为单位) */
+        maxWidth: number
+        /** 页面最小高度( px 为单位) */
+        minHeight: number
+        /** 页面最小宽度( px 为单位) */
+        minWidth: number
+        /** 屏幕方向( `landscape` 或 `portrait` ) */
+        orientation: string
+        /** 页面宽度( px 为单位) */
+        width: number
+    }
+    /** 设置 type 监听单个类型的指标,设置 entryTypes 监听多个类型指标。 */
+    interface ObserveOption {
+        /** 指标类型列表。不能和 type 同时使用。 */
+        entryTypes?: string[]
+        /** 指标类型。不能和 entryTypes 同时使用
+         *
+         * 可选值:
+         * - 'navigation': 路由;
+         * - 'render': 渲染;
+         * - 'script': 脚本; */
+        type?: 'navigation' | 'render' | 'script'
+    }
+    /** 需要基础库: `2.7.0`
+     *
+     * 离屏 canvas 实例,可通过 [wx.createOffscreenCanvas](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/wx.createOffscreenCanvas.html) 创建。 */
+    interface OffscreenCanvas {
+        /** 画布高度 */
+        height: number
+        /** 画布宽度 */
+        width: number
+    }
+    interface OnAccelerometerChangeCallbackResult {
+        /** X 轴 */
+        x: number
+        /** Y 轴 */
+        y: number
+        /** Z 轴 */
+        z: number
+    }
+    interface OnBLECharacteristicValueChangeCallbackResult {
+        /** 蓝牙特征的 UUID */
+        characteristicId: string
+        /** 蓝牙设备 id */
+        deviceId: string
+        /** 蓝牙特征对应服务的 UUID */
+        serviceId: string
+        /** 特征最新的值 */
+        value: ArrayBuffer
+    }
+    interface OnBLEConnectionStateChangeCallbackResult {
+        /** 是否处于已连接状态 */
+        connected: boolean
+        /** 蓝牙设备 id */
+        deviceId: string
+    }
+    interface OnBLEMTUChangeCallbackResult {
+        /** 蓝牙设备 id */
+        deviceId: string
+        /** 最大传输单元 */
+        mtu: number
+    }
+    interface OnBLEPeripheralConnectionStateChangedCallbackResult {
+        /** 连接目前状态 */
+        connected: boolean
+        /** 连接状态变化的设备 id */
+        deviceId: string
+        /** server 的 UUID */
+        serverId: string
+    }
+    interface OnBackgroundFetchDataCallbackResult {
+        /** 缓存数据类别,取值为 periodic 或 pre */
+        fetchType: string
+        /** 缓存数据 */
+        fetchedData: string
+        /** 小程序页面路径 */
+        path: string
+        /** 传给页面的 query 参数 */
+        query: string
+        /** 进入小程序的场景值 */
+        scene: number
+        /** 客户端拿到缓存数据的时间戳 */
+        timeStamp: number
+    }
+    interface OnBeaconServiceChangeCallbackResult {
+        /** 服务目前是否可用 */
+        available: boolean
+        /** 目前是否处于搜索状态 */
+        discovering: boolean
+    }
+    interface OnBeaconUpdateCallbackResult {
+        /** 当前搜寻到的所有 Beacon 设备列表 */
+        beacons: BeaconInfo[]
+    }
+    interface OnBluetoothAdapterStateChangeCallbackResult {
+        /** 蓝牙适配器是否可用 */
+        available: boolean
+        /** 蓝牙适配器是否处于搜索状态 */
+        discovering: boolean
+    }
+    interface OnBluetoothDeviceFoundCallbackResult {
+        /** 新搜索到的设备列表 */
+        devices: BlueToothDevice[]
+    }
+    interface OnCameraFrameCallbackResult {
+        /** 图像像素点数据,一维数组,每四项表示一个像素点的 rgba */
+        data: ArrayBuffer
+        /** 图像数据矩形的高度 */
+        height: number
+        /** 图像数据矩形的宽度 */
+        width: number
+    }
+    interface OnCharacteristicReadRequestCallbackResult {
+        /** 唯一标识码,调用 [writeCharacteristicValue](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/BLEPeripheralServer.writeCharacteristicValue.html) 时使用 */
+        callbackId: number
+        /** 蓝牙特征的 UUID */
+        characteristicId: string
+        /** 蓝牙特征对应服务的 UUID */
+        serviceId: string
+    }
+    interface OnCharacteristicSubscribedCallbackResult {
+        /** 蓝牙特征的 UUID */
+        characteristicId: string
+        /** 蓝牙特征对应服务的 UUID */
+        serviceId: string
+    }
+    interface OnCharacteristicWriteRequestCallbackResult {
+        /** 唯一标识码,调用 [writeCharacteristicValue](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/BLEPeripheralServer.writeCharacteristicValue.html) 时使用 */
+        callbackId: number
+        /** 蓝牙特征的 UUID */
+        characteristicId: string
+        /** 蓝牙特征对应服务的 UUID */
+        serviceId: string
+        /** 请求写入特征的二进制数据值 */
+        value: ArrayBuffer
+    }
+    interface OnCheckForUpdateCallbackResult {
+        /** 是否有新版本 */
+        hasUpdate: boolean
+    }
+    interface OnChunkReceivedCallbackResult {
+        /** 开发者服务器每次返回新chunk时的Response */
+        res: Result
+    }
+    interface OnCompassChangeCallbackResult {
+        /** 需要基础库: `2.4.0`
+         *
+         * 精度 */
+        accuracy: number | string
+        /** 面对的方向度数 */
+        direction: number
+    }
+    interface OnCopyUrlCallbackResult {
+        /** 用短链打开小程序时当前页面携带的查询字符串。小程序中使用时,应在进入页面时调用 `wx.onCopyUrl` 自定义 `query`,退出页面时调用 `wx.offCopyUrl`,防止影响其它页面。 */
+        query: string
+    }
+    interface OnDeviceMotionChangeCallbackResult {
+        /** 当 手机坐标 X/Y 和 地球 X/Y 重合时,绕着 Z 轴转动的夹角为 alpha,范围值为 [0, 2*PI)。逆时针转动为正。 */
+        alpha: number
+        /** 当手机坐标 Y/Z 和地球 Y/Z 重合时,绕着 X 轴转动的夹角为 beta。范围值为 [-1*PI, PI) 。顶部朝着地球表面转动为正。也有可能朝着用户为正。 */
+        beta: number
+        /** 当手机 X/Z 和地球 X/Z 重合时,绕着 Y 轴转动的夹角为 gamma。范围值为 [-1*PI/2, PI/2)。右边朝着地球表面转动为正。 */
+        gamma: number
+    }
+    interface OnDiscoveredCallbackResult {
+        /** NdefMessage 数组,消息格式为 {id: ArrayBuffer, type: ArrayBuffer, payload: ArrayBuffer} */
+        messages: any[]
+        /** tech 数组,用于匹配NFC卡片具体可以使用什么标准(NfcA等实例)处理 */
+        techs: any[]
+    }
+    interface OnFrameRecordedCallbackResult {
+        /** 录音分片数据 */
+        frameBuffer: ArrayBuffer
+        /** 当前帧是否正常录音结束前的最后一帧 */
+        isLastFrame: boolean
+    }
+    interface OnGetWifiListCallbackResult {
+        /** Wi-Fi 列表数据 */
+        wifiList: WifiInfo[]
+    }
+    interface OnGyroscopeChangeCallbackResult {
+        /** x 轴的角速度 */
+        x: number
+        /** y 轴的角速度 */
+        y: number
+        /** z 轴的角速度 */
+        z: number
+    }
+    interface OnHCEMessageCallbackResult {
+        /** `messageType=1` 时 ,客户端接收到 NFC 设备的指令 */
+        data: ArrayBuffer
+        /** 消息类型
+         *
+         * 可选值:
+         * - 1: HCE APDU Command类型,小程序需对此指令进行处理,并调用 sendHCEMessage 接口返回处理指令;
+         * - 2: 设备离场事件类型; */
+        messageType: 1 | 2
+        /** `messageType=2` 时,原因 */
+        reason: number
+    }
+    interface OnHeadersReceivedCallbackResult {
+        /** 开发者服务器返回的 HTTP Response Header */
+        header: IAnyObject
+    }
+    interface OnKeyboardHeightChangeCallbackResult {
+        /** 键盘高度 */
+        height: number
+    }
+    interface OnLocalServiceFoundCallbackResult {
+        /** 服务的 ip 地址 */
+        ip: string
+        /** 服务的端口 */
+        port: number
+        /** 服务的名称 */
+        serviceName: string
+        /** 服务的类型 */
+        serviceType: string
+    }
+    interface OnLocalServiceLostCallbackResult {
+        /** 服务的名称 */
+        serviceName: string
+        /** 服务的类型 */
+        serviceType: string
+    }
+    interface OnLocationChangeCallbackResult {
+        /** 位置的精确度 */
+        accuracy: number
+        /** 需要基础库: `1.2.0`
+         *
+         * 高度,单位 m */
+        altitude: number
+        /** 需要基础库: `1.2.0`
+         *
+         * 水平精度,单位 m */
+        horizontalAccuracy: number
+        /** 纬度,范围为 -90~90,负数表示南纬。使用 gcj02 国测局坐标系 */
+        latitude: number
+        /** 经度,范围为 -180~180,负数表示西经。使用 gcj02 国测局坐标系 */
+        longitude: number
+        /** 速度,单位 m/s */
+        speed: number
+        /** 需要基础库: `1.2.0`
+         *
+         * 垂直精度,单位 m(Android 无法获取,返回 0) */
+        verticalAccuracy: number
+    }
+    interface OnLocationChangeErrorCallbackResult {
+        /** 错误码 */
+        errCode: number
+    }
+    interface OnMemoryWarningCallbackResult {
+        /** 内存告警等级,只有 Android 才有,对应系统宏定义
+         *
+         * 可选值:
+         * - 5: TRIM_MEMORY_RUNNING_MODERATE;
+         * - 10: TRIM_MEMORY_RUNNING_LOW;
+         * - 15: TRIM_MEMORY_RUNNING_CRITICAL; */
+        level: 5 | 10 | 15
+    }
+    interface OnNetworkStatusChangeCallbackResult {
+        /** 当前是否有网络连接 */
+        isConnected: boolean
+        /** 网络类型
+         *
+         * 可选值:
+         * - 'wifi': wifi 网络;
+         * - '2g': 2g 网络;
+         * - '3g': 3g 网络;
+         * - '4g': 4g 网络;
+         * - 'unknown': Android 下不常见的网络类型;
+         * - 'none': 无网络; */
+        networkType: 'wifi' | '2g' | '3g' | '4g' | 'unknown' | 'none'
+    }
+    interface OnNetworkWeakChangeCallbackResult {
+        /** 当前网络类型 */
+        networkType: string
+        /** 当前是否处于弱网状态 */
+        weakNet: boolean
+    }
+    interface OnOpenCallbackResult {
+        /** 需要基础库: `2.0.0`
+         *
+         * 连接成功的 HTTP 响应 Header */
+        header: IAnyObject
+        /** 需要基础库: `2.10.4`
+         *
+         * 网络请求过程中一些调试信息 */
+        profile: SocketProfile
+    }
+    interface OnPageNotFoundCallbackResult {
+        /** 是否本次启动的首个页面(例如从分享等入口进来,首个页面是开发者配置的分享页面) */
+        isEntryPage: boolean
+        /** 不存在页面的路径 (代码包路径) */
+        path: string
+        /** 打开不存在页面的 query 参数 */
+        query: IAnyObject
+    }
+    interface OnSocketOpenCallbackResult {
+        /** 需要基础库: `2.0.0`
+         *
+         * 连接成功的 HTTP 响应 Header */
+        header: IAnyObject
+    }
+    interface OnStopCallbackResult {
+        /** 录音总时长,单位:ms */
+        duration: number
+        /** 录音文件大小,单位:Byte */
+        fileSize: number
+        /** 录音文件的临时路径 (本地路径) */
+        tempFilePath: string
+    }
+    interface OnThemeChangeCallbackResult {
+        /** 系统当前的主题,取值为`light`或`dark`
+         *
+         * 可选值:
+         * - 'dark': 深色主题;
+         * - 'light': 浅色主题; */
+        theme: 'dark' | 'light'
+    }
+    interface OnUnhandledRejectionCallbackResult {
+        /** 被拒绝的 Promise 对象 */
+        promise: Promise<any>
+        /** 拒绝原因,一般是一个 Error 对象 */
+        reason: string
+    }
+    interface OnVoIPChatInterruptedCallbackResult {
+        /** 错误码 */
+        errCode: number
+        /** 调用结果(错误原因) */
+        errMsg: string
+    }
+    interface OnVoIPChatMembersChangedCallbackResult {
+        /** 错误码 */
+        errCode: number
+        /** 调用结果 */
+        errMsg: string
+        /** 还在实时语音通话中的成员 openId 名单 */
+        openIdList: string[]
+    }
+    interface OnVoIPChatSpeakersChangedCallbackResult {
+        /** 错误码 */
+        errCode: number
+        /** 调用结果(错误原因) */
+        errMsg: string
+        /** 还在实时语音通话中的成员 openId 名单 */
+        openIdList: string[]
+    }
+    interface OnVoIPChatStateChangedCallbackResult {
+        /** 事件码 */
+        code: number
+        /** 附加信息 */
+        data: IAnyObject
+        /** 错误码 */
+        errCode: number
+        /** 调用结果 */
+        errMsg: string
+    }
+    interface OnVoIPVideoMembersChangedCallbackResult {
+        /** 错误码 */
+        errCode: number
+        /** 调用结果 */
+        errMsg: string
+        /** 开启视频的成员名单 */
+        openIdList: string[]
+    }
+    interface OnWifiConnectedCallbackResult {
+        /** [WifiInfo](https://developers.weixin.qq.com/miniprogram/dev/api/device/wifi/WifiInfo.html)
+         *
+         * Wi-Fi 信息 */
+        wifi: WifiInfo
+    }
+    interface OnWindowResizeCallbackResult {
+        size: Size
+    }
+    interface OpenAppAuthorizeSettingOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: OpenAppAuthorizeSettingCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: OpenAppAuthorizeSettingFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: OpenAppAuthorizeSettingSuccessCallback
+    }
+    interface OpenBluetoothAdapterOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: OpenBluetoothAdapterCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: OpenBluetoothAdapterFailCallback
+        /** 需要基础库: `2.10.0`
+         *
+         * 蓝牙模式,可作为主/从设备,仅 iOS 需要。
+         *
+         * 可选值:
+         * - 'central': 主机模式;
+         * - 'peripheral': 从机(外围设备)模式; */
+        mode?: 'central' | 'peripheral'
+        /** 接口调用成功的回调函数 */
+        success?: OpenBluetoothAdapterSuccessCallback
+    }
+    interface OpenCardOption {
+        /** 需要打开的卡券列表 */
+        cardList: OpenCardRequestInfo[]
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: OpenCardCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: OpenCardFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: OpenCardSuccessCallback
+    }
+    /** 需要打开的卡券列表 */
+    interface OpenCardRequestInfo {
+        /** 卡券 ID */
+        cardId: string
+        /** 由 [wx.addCard](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/card/wx.addCard.html) 的返回对象中的加密 code 通过解密后得到,解密请参照:[code 解码接口](https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1499332673_Unm7V) */
+        code: string
+    }
+    interface OpenChannelsActivityOption {
+        /** 视频 feedId */
+        feedId: string
+        /** 视频号 id,以“sph”开头的id,可在视频号助手获取 */
+        finderUserName: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: OpenChannelsActivityCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: OpenChannelsActivityFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: OpenChannelsActivitySuccessCallback
+    }
+    interface OpenChannelsEventOption {
+        /** 活动 id */
+        eventId: string
+        /** 视频号 id,以“sph”开头的id,可在视频号助手获取 */
+        finderUserName: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: OpenChannelsEventCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: OpenChannelsEventFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: OpenChannelsEventSuccessCallback
+    }
+    interface OpenChannelsLiveOption {
+        /** 视频号 id,以“sph”开头的id,可在视频号助手获取 */
+        finderUserName: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: OpenChannelsLiveCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: OpenChannelsLiveFailCallback
+        /** 直播 feedId,通过 getChannelsLiveInfo 接口获取(基础库 v2.19.2 之前的版本需要填写) */
+        feedId?: string
+        /** 直播 nonceId,通过 getChannelsLiveInfo 接口获取(基础库 v2.19.2 之前的版本需要填写) */
+        nonceId?: string
+        /** 接口调用成功的回调函数 */
+        success?: OpenChannelsLiveSuccessCallback
+    }
+    interface OpenChannelsUserProfileOption {
+        /** 视频号 id */
+        finderUserName: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: OpenChannelsUserProfileCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: OpenChannelsUserProfileFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: OpenChannelsUserProfileSuccessCallback
+    }
+    interface OpenCustomerServiceChatOption {
+        /** 企业ID */
+        corpId: string
+        /** 客服信息 */
+        extInfo: ExtInfoOption
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: OpenCustomerServiceChatCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: OpenCustomerServiceChatFailCallback
+        /** 气泡消息图片 */
+        sendMessageImg?: string
+        /** 气泡消息小程序路径 */
+        sendMessagePath?: string
+        /** 气泡消息标题 */
+        sendMessageTitle?: string
+        /** 是否发送小程序气泡消息 */
+        showMessageCard?: boolean
+        /** 接口调用成功的回调函数 */
+        success?: OpenCustomerServiceChatSuccessCallback
+    }
+    interface OpenDocumentOption {
+        /** 文件路径 (本地路径) ,可通过 downloadFile 获得 */
+        filePath: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: OpenDocumentCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: OpenDocumentFailCallback
+        /** 需要基础库: `1.4.0`
+         *
+         * 文件类型,指定文件类型打开文件
+         *
+         * 可选值:
+         * - 'doc': doc 格式;
+         * - 'docx': docx 格式;
+         * - 'xls': xls 格式;
+         * - 'xlsx': xlsx 格式;
+         * - 'ppt': ppt 格式;
+         * - 'pptx': pptx 格式;
+         * - 'pdf': pdf 格式; */
+        fileType?: 'doc' | 'docx' | 'xls' | 'xlsx' | 'ppt' | 'pptx' | 'pdf'
+        /** 需要基础库: `2.11.0`
+         *
+         * 是否显示右上角菜单 */
+        showMenu?: boolean
+        /** 接口调用成功的回调函数 */
+        success?: OpenDocumentSuccessCallback
+    }
+    interface OpenEmbeddedMiniProgramOption {
+        /** 要打开的小程序 appId */
+        appId: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: OpenEmbeddedMiniProgramCompleteCallback
+        /** 要打开的小程序版本。仅在当前小程序为开发版或体验版时此参数有效。如果当前小程序是正式版,则打开的小程序必定是正式版。
+         *
+         * 可选值:
+         * - 'develop': 开发版;
+         * - 'trial': 体验版;
+         * - 'release': 正式版; */
+        envVersion?: 'develop' | 'trial' | 'release'
+        /** 需要传递给目标小程序的数据,目标小程序可在 `App.onLaunch`,`App.onShow` 中获取到这份数据。如果跳转的是小游戏,可以在 [wx.onShow](#)、[wx.getLaunchOptionsSync](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/life-cycle/wx.getLaunchOptionsSync.html) 中可以获取到这份数据数据。 */
+        extraData?: IAnyObject
+        /** 接口调用失败的回调函数 */
+        fail?: OpenEmbeddedMiniProgramFailCallback
+        /** 打开的页面路径,如果为空则打开首页。path 中 ? 后面的部分会成为 query,在小程序的 `App.onLaunch`、`App.onShow` 和 `Page.onLoad` 的回调函数或小游戏的 [wx.onShow](#) 回调函数、[wx.getLaunchOptionsSync](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/life-cycle/wx.getLaunchOptionsSync.html) 中可以获取到 query 数据。对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar"。 */
+        path?: string
+        /** 小程序链接,当传递该参数后,可以不传 appId 和 path。链接可以通过【小程序菜单】->【复制链接】获取。 */
+        shortLink?: string
+        /** 接口调用成功的回调函数 */
+        success?: OpenEmbeddedMiniProgramSuccessCallback
+    }
+    interface OpenFailCallbackResult {
+        /** 错误信息
+         *
+         * 可选值:
+         * - 'fail no such file or directory "${filePath}"': 上级目录不存在; */
+        errMsg: string
+    }
+    interface OpenLocationOption {
+        /** 纬度,范围为-90~90,负数表示南纬。使用 gcj02 国测局坐标系 */
+        latitude: number
+        /** 经度,范围为-180~180,负数表示西经。使用 gcj02 国测局坐标系 */
+        longitude: number
+        /** 地址的详细说明 */
+        address?: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: OpenLocationCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: OpenLocationFailCallback
+        /** 位置名 */
+        name?: string
+        /** 缩放比例,范围5~18 */
+        scale?: number
+        /** 接口调用成功的回调函数 */
+        success?: OpenLocationSuccessCallback
+    }
+    interface OpenMapAppOption {
+        /** 目的地名称 */
+        destination: string
+        /** 目的地纬度 */
+        latitude: number
+        /** 目的地经度 */
+        longitude: number
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: OpenMapAppCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: OpenMapAppFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: OpenMapAppSuccessCallback
+    }
+    interface OpenOption {
+        /** 文件路径 (本地路径) */
+        filePath: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: OpenCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: OpenFailCallback
+        /** 文件系统标志,默认值: 'r'
+         *
+         * 可选值:
+         * - 'a': 打开文件用于追加。 如果文件不存在,则创建该文件;
+         * - 'ax': 类似于 'a',但如果路径存在,则失败;
+         * - 'a+': 打开文件用于读取和追加。 如果文件不存在,则创建该文件;
+         * - 'ax+': 类似于 'a+',但如果路径存在,则失败;
+         * - 'as': 打开文件用于追加(在同步模式中)。 如果文件不存在,则创建该文件;
+         * - 'as+': 打开文件用于读取和追加(在同步模式中)。 如果文件不存在,则创建该文件;
+         * - 'r': 打开文件用于读取。 如果文件不存在,则会发生异常;
+         * - 'r+': 打开文件用于读取和写入。 如果文件不存在,则会发生异常;
+         * - 'w': 打开文件用于写入。 如果文件不存在则创建文件,如果文件存在则截断文件;
+         * - 'wx': 类似于 'w',但如果路径存在,则失败;
+         * - 'w+': 打开文件用于读取和写入。 如果文件不存在则创建文件,如果文件存在则截断文件;
+         * - 'wx+': 类似于 'w+',但如果路径存在,则失败; */
+        flag?:
+            | 'a'
+            | 'ax'
+            | 'a+'
+            | 'ax+'
+            | 'as'
+            | 'as+'
+            | 'r'
+            | 'r+'
+            | 'w'
+            | 'wx'
+            | 'w+'
+            | 'wx+'
+        /** 接口调用成功的回调函数 */
+        success?: OpenSuccessCallback
+    }
+    interface OpenSettingOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: OpenSettingCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: OpenSettingFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: OpenSettingSuccessCallback
+        /** 需要基础库: `2.10.3`
+         *
+         * 是否同时获取用户订阅消息的订阅状态,默认不获取。注意:withSubscriptions 只返回用户勾选过订阅面板中的“总是保持以上选择,不再询问”的订阅消息。 */
+        withSubscriptions?: boolean
+    }
+    interface OpenSettingSuccessCallbackResult {
+        /** [AuthSetting](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/setting/AuthSetting.html)
+         *
+         * 用户授权结果 */
+        authSetting: AuthSetting
+        /** [SubscriptionsSetting](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/setting/SubscriptionsSetting.html)
+         *
+         * 需要基础库: `2.10.3`
+         *
+         * 用户订阅消息设置,接口参数`withSubscriptions`值为`true`时才会返回。 */
+        subscriptionsSetting: SubscriptionsSetting
+        errMsg: string
+    }
+    interface OpenSuccessCallbackResult {
+        /** 文件描述符 */
+        fd: string
+        errMsg: string
+    }
+    interface OpenSyncOption {
+        /** 文件路径 (本地路径) */
+        filePath: string
+        /** 文件系统标志,默认值: 'r'
+         *
+         * 可选值:
+         * - 'a': 打开文件用于追加。 如果文件不存在,则创建该文件;
+         * - 'ax': 类似于 'a',但如果路径存在,则失败;
+         * - 'a+': 打开文件用于读取和追加。 如果文件不存在,则创建该文件;
+         * - 'ax+': 类似于 'a+',但如果路径存在,则失败;
+         * - 'as': 打开文件用于追加(在同步模式中)。 如果文件不存在,则创建该文件;
+         * - 'as+': 打开文件用于读取和追加(在同步模式中)。 如果文件不存在,则创建该文件;
+         * - 'r': 打开文件用于读取。 如果文件不存在,则会发生异常;
+         * - 'r+': 打开文件用于读取和写入。 如果文件不存在,则会发生异常;
+         * - 'w': 打开文件用于写入。 如果文件不存在则创建文件,如果文件存在则截断文件;
+         * - 'wx': 类似于 'w',但如果路径存在,则失败;
+         * - 'w+': 打开文件用于读取和写入。 如果文件不存在则创建文件,如果文件存在则截断文件;
+         * - 'wx+': 类似于 'w+',但如果路径存在,则失败; */
+        flag?:
+            | 'a'
+            | 'ax'
+            | 'a+'
+            | 'ax+'
+            | 'as'
+            | 'as+'
+            | 'r'
+            | 'r+'
+            | 'w'
+            | 'wx'
+            | 'w+'
+            | 'wx+'
+    }
+    interface OpenSystemBluetoothSettingOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: OpenSystemBluetoothSettingCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: OpenSystemBluetoothSettingFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: OpenSystemBluetoothSettingSuccessCallback
+    }
+    interface OpenVideoEditorOption {
+        /** 视频源的路径,只支持本地路径 */
+        filePath: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: OpenVideoEditorCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: OpenVideoEditorFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: OpenVideoEditorSuccessCallback
+    }
+    interface OpenVideoEditorSuccessCallbackResult {
+        /** 剪辑后生成的视频文件的时长,单位毫秒(ms) */
+        duration: number
+        /** 剪辑后生成的视频文件大小,单位字节数(byte) */
+        size: number
+        /** 编辑后生成的视频文件的临时路径 */
+        tempFilePath: string
+        /** 编辑后生成的缩略图文件的临时路径 */
+        tempThumbPath: string
+        errMsg: string
+    }
+    interface PageScrollToOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: PageScrollToCompleteCallback
+        /** 滚动动画的时长,单位 ms */
+        duration?: number
+        /** 接口调用失败的回调函数 */
+        fail?: PageScrollToFailCallback
+        /** 滚动到页面的目标位置,单位 px */
+        scrollTop?: number
+        /** 需要基础库: `2.7.3`
+         *
+         * 选择器 */
+        selector?: string
+        /** 接口调用成功的回调函数 */
+        success?: PageScrollToSuccessCallback
+    }
+    /** 需要基础库: `2.11.0`
+     *
+     * Canvas 2D API 的接口 Path2D 用来声明路径,此路径稍后会被CanvasRenderingContext2D 对象使用。CanvasRenderingContext2D 接口的 路径方法 也存在于 Path2D 这个接口中,允许你在 canvas 中根据需要创建可以保留并重用的路径。 */
+    interface Path2D {}
+    interface PauseBGMOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: PauseBGMCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: PauseBGMFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: PauseBGMSuccessCallback
+    }
+    interface PauseBackgroundAudioOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: PauseBackgroundAudioCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: PauseBackgroundAudioFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: PauseBackgroundAudioSuccessCallback
+    }
+    interface PauseOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: PauseCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: PauseFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: PauseSuccessCallback
+    }
+    interface PauseVoiceOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: PauseVoiceCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: PauseVoiceFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: PauseVoiceSuccessCallback
+    }
+    /** 单条性能数据 */
+    interface PerformanceEntry {
+        /** 耗时 ms。仅对于表示阶段的指标有效。 */
+        duration: number
+        /** 指标类型
+         *
+         * 可选值:
+         * - 'navigation': 路由;
+         * - 'render': 渲染;
+         * - 'script': 脚本; */
+        entryType: 'navigation' | 'render' | 'script'
+        /** 需要基础库: `2.21.2`
+         *
+         * 注入文件列表。仅 evaluateScript 指标有效。 */
+        fileList: string[]
+        /** 需要基础库: `2.21.2`
+         *
+         * 首次渲染参数在渲染层收到的时间。仅 firstRender 指标有效。 */
+        initDataRecvTime: number
+        /** 需要基础库: `2.21.2`
+         *
+         * 首次渲染参数从逻辑层发出的时间。仅 firstRender 指标有效。 */
+        initDataSendTime: number
+        /** 分包名,主包表示为 __APP__ (2.21.2 开始)。仅 evaluateScript 指标有效。 */
+        moduleName: string
+        /** 指标名称
+         *
+         * 可选值:
+         * - 'appLaunch': 小程序启动耗时。起点为用户点击小程序图标,或小程序被拉起的时间;终点为首页 onReady。(entryType: navigation);
+         * - 'route': 路由处理耗时。(entryType: navigation);
+         * - 'firstRender': 页面首次渲染耗时。起点为逻辑层收到路由事件,包括逻辑层页面与组件初始化、VD 同步、渲染层执行渲染的时间;终点为首页 onReady。(entryType: render);
+         * - 'firstPaint': [页面首次绘制](https://developer.mozilla.org/en-US/docs/Glossary/First_paint)。第一个像素渲染到屏幕上所用的时间。(entryType: render);
+         * - 'firstContentfulPaint': [页面首次内容绘制](https://developer.mozilla.org/en-US/docs/Glossary/First_contentful_paint)。第一块内容渲染到屏幕上所用的时间。(entryType: render);
+         * - 'evaluateScript': 逻辑层 JS 代码注入耗时。(entryType: script); */
+        name:
+            | 'appLaunch'
+            | 'route'
+            | 'firstRender'
+            | 'firstPaint'
+            | 'firstContentfulPaint'
+            | 'evaluateScript'
+        /** 路由真正响应开始时间。仅 navigation 类型指标有效。 */
+        navigationStart: number
+        /** 路由详细类型,与小程序路由方法对应。仅 navigation 类型指标有效。 */
+        navigationType: string
+        /** 页面路径。仅 render 和 navigation 类型指标有效。 */
+        path: string
+        /** 开始时间,不同指标的具体含义会有差异 */
+        startTime: number
+        /** 需要基础库: `2.21.2`
+         *
+         * 渲染层代码注入完成时间。仅 firstRender 指标有效。 */
+        viewLayerReadyTime: number
+        /** 需要基础库: `2.21.2`
+         *
+         * 渲染层执行渲染结束时间。仅 firstRender 指标有效。 */
+        viewLayerRenderEndTime: number
+        /** 需要基础库: `2.21.2`
+         *
+         * 渲染层执行渲染开始时间。仅 firstRender 指标有效。 */
+        viewLayerRenderStartTime: number
+    }
+    /** 需要基础库: `2.11.0`
+     *
+     * PerformanceObserver 对象,用于监听性能相关事件 */
+    interface PerformanceObserver {
+        /** 获取当前支持的所有性能指标类型 */
+        supportedEntryTypes: any[]
+    }
+    /** 平面跟踪配置 */
+    interface PlaneTrack {
+        /** 平面跟踪配置模式,目前只支持 1(检测横向平面) */
+        mode: number
+    }
+    interface PlayBGMOption {
+        /** 加入背景混音的资源地址 */
+        url: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: PlayBGMCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: PlayBGMFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: PlayBGMSuccessCallback
+    }
+    interface PlayBackgroundAudioOption {
+        /** 音乐链接,目前支持的格式有 m4a, aac, mp3, wav */
+        dataUrl: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: PlayBackgroundAudioCompleteCallback
+        /** 封面URL */
+        coverImgUrl?: string
+        /** 接口调用失败的回调函数 */
+        fail?: PlayBackgroundAudioFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: PlayBackgroundAudioSuccessCallback
+        /** 音乐标题 */
+        title?: string
+    }
+    interface PlayOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: PlayCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: PlayFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: PlaySuccessCallback
+    }
+    interface PlayVoiceOption {
+        /** 需要播放的语音文件的文件路径 (本地路径) */
+        filePath: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: PlayVoiceCompleteCallback
+        /** 需要基础库: `1.6.0`
+         *
+         * 指定播放时长,到达指定的播放时长后会自动停止播放,单位:秒 */
+        duration?: number
+        /** 接口调用失败的回调函数 */
+        fail?: PlayVoiceFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: PlayVoiceSuccessCallback
+    }
+    /** 插件帐号信息(仅在插件中调用时包含这一项) */
+    interface Plugin {
+        /** 插件 appId */
+        appId: string
+        /** 插件版本号 */
+        version: string
+    }
+    interface PluginLoginOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: PluginLoginCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: PluginLoginFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: PluginLoginSuccessCallback
+    }
+    interface PluginLoginSuccessCallbackResult {
+        /** 用于换取 openpid 的凭证(有效期五分钟)。插件开发者可以用此 code 在开发者服务器后台调用 [auth.getPluginOpenPId](https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/user-info/auth.getPluginOpenPId.html) 换取 openpid。 */
+        code: string
+        errMsg: string
+    }
+    interface PreviewImageOption {
+        /** 需要预览的图片链接列表。[2.2.3](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 起支持云文件ID。 */
+        urls: string[]
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: PreviewImageCompleteCallback
+        /** 当前显示图片的链接 */
+        current?: string
+        /** 接口调用失败的回调函数 */
+        fail?: PreviewImageFailCallback
+        /** 需要基础库: `2.13.0`
+         *
+         * `origin`: 发送完整的referrer; `no-referrer`: 不发送。格式固定为 `https://servicewechat.com/{appid}/{version}/page-frame.html`,其中 {appid} 为小程序的 appid,{version} 为小程序的版本号,版本号为 0 表示为开发版、体验版以及审核版本,版本号为 devtools 表示为开发者工具,其余为正式版本; */
+        referrerPolicy?: string
+        /** 需要基础库: `2.13.0`
+         *
+         * 是否显示长按菜单。
+         *
+         * 支持识别的码:小程序码
+         *
+         * 仅小程序支持识别的码:微信个人码、微信群码、企业微信个人码、 企业微信群码与企业微信互通群码; */
+        showmenu?: boolean
+        /** 接口调用成功的回调函数 */
+        success?: PreviewImageSuccessCallback
+    }
+    interface PreviewMediaOption {
+        /** 需要预览的资源列表 */
+        sources: MediaSource[]
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: PreviewMediaCompleteCallback
+        /** 当前显示的资源序号 */
+        current?: number
+        /** 接口调用失败的回调函数 */
+        fail?: PreviewMediaFailCallback
+        /** 需要基础库: `2.13.0`
+         *
+         * `origin`: 发送完整的referrer; `no-referrer`: 不发送。格式固定为 `https://servicewechat.com/{appid}/{version}/page-frame.html`,其中 {appid} 为小程序的 appid,{version} 为小程序的版本号,版本号为 0 表示为开发版、体验版以及审核版本,版本号为 devtools 表示为开发者工具,其余为正式版本; */
+        referrerPolicy?: string
+        /** 需要基础库: `2.13.0`
+         *
+         * 是否显示长按菜单。
+         *
+         * 支持识别的码:小程序码
+         *
+         * 仅小程序支持识别的码:微信个人码、微信群码、企业微信个人码、 企业微信群码与企业微信互通群码; */
+        showmenu?: boolean
+        /** 接口调用成功的回调函数 */
+        success?: PreviewMediaSuccessCallback
+    }
+    interface ReLaunchOption {
+        /** 需要跳转的应用内页面路径 (代码包路径),路径后可以带参数。参数与路径之间使用?分隔,参数键与参数值用=相连,不同参数用&分隔;如 'path?key=value&key2=value2' */
+        url: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ReLaunchCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: ReLaunchFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: ReLaunchSuccessCallback
+    }
+    interface ReadBLECharacteristicValueOption {
+        /** 蓝牙特征的 UUID */
+        characteristicId: string
+        /** 蓝牙设备 id */
+        deviceId: string
+        /** 蓝牙特征对应服务的 UUID */
+        serviceId: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ReadBLECharacteristicValueCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: ReadBLECharacteristicValueFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: ReadBLECharacteristicValueSuccessCallback
+    }
+    interface ReadCompressedFileFailCallbackResult {
+        /** 错误信息
+         *
+         * 可选值:
+         * - 'fail decompress fail': 指定的 compressionAlgorithm 与文件实际压缩格式不符;
+         * - 'fail no such file or directory, open ${filePath}': 指定的 filePath 所在目录不存在;
+         * - 'fail permission denied, open ${dirPath}': 指定的 filePath 路径没有读权限; */
+        errMsg: string
+    }
+    interface ReadCompressedFileOption {
+        /** 文件压缩类型,目前仅支持 'br'。
+         *
+         * 可选值:
+         * - 'br': brotli压缩文件; */
+        compressionAlgorithm: 'br'
+        /** 要读取的文件的路径 (本地用户文件或代码包文件) */
+        filePath: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ReadCompressedFileCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: ReadCompressedFileFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: ReadCompressedFileSuccessCallback
+    }
+    interface ReadCompressedFileSuccessCallbackResult {
+        /** 文件内容 */
+        data: ArrayBuffer
+        errMsg: string
+    }
+    interface ReadCompressedFileSyncOption {
+        /** 文件压缩类型,目前仅支持 'br'。
+         *
+         * 可选值:
+         * - 'br': brotli压缩文件; */
+        compressionAlgorithm: 'br'
+        /** 要读取的文件的路径 (本地用户文件或代码包文件) */
+        filePath: string
+    }
+    interface ReadFailCallbackResult {
+        /** 错误信息
+         *
+         * 可选值:
+         * - 'bad file descriptor': 无效的文件描述符;
+         * - 'fail permission denied': 指定的 fd 路径没有读权限;
+         * - 'fail the value of "offset" is out of range': 传入的 offset 不合法;
+         * - 'fail the value of "length" is out of range': 传入的 length 不合法;
+         * - 'fail sdcard not mounted': android sdcard 挂载失败;
+         * - 'bad file descriptor': 无效的文件描述符; */
+        errMsg: string
+    }
+    interface ReadFileFailCallbackResult {
+        /** 错误信息
+         *
+         * 可选值:
+         * - 'fail no such file or directory, open ${filePath}': 指定的 filePath 所在目录不存在;
+         * - 'fail permission denied, open ${dirPath}': 指定的 filePath 路径没有读权限;
+         * - 'fail sdcard not mounted': Android sdcard 挂载失败; */
+        errMsg: string
+    }
+    interface ReadFileOption {
+        /** 要读取的文件的路径 (本地路径) */
+        filePath: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ReadFileCompleteCallback
+        /** 指定读取文件的字符编码,如果不传 encoding,则以 ArrayBuffer 格式读取文件的二进制内容
+         *
+         * 可选值:
+         * - 'ascii': ;
+         * - 'base64': ;
+         * - 'binary': ;
+         * - 'hex': ;
+         * - 'ucs2': 以小端序读取;
+         * - 'ucs-2': 以小端序读取;
+         * - 'utf16le': 以小端序读取;
+         * - 'utf-16le': 以小端序读取;
+         * - 'utf-8': ;
+         * - 'utf8': ;
+         * - 'latin1': ; */
+        encoding?:
+            | 'ascii'
+            | 'base64'
+            | 'binary'
+            | 'hex'
+            | 'ucs2'
+            | 'ucs-2'
+            | 'utf16le'
+            | 'utf-16le'
+            | 'utf-8'
+            | 'utf8'
+            | 'latin1'
+        /** 接口调用失败的回调函数 */
+        fail?: ReadFileFailCallback
+        /** 需要基础库: `2.10.0`
+         *
+         * 指定文件的长度,如果不指定,则读到文件末尾。有效范围:[1, fileLength]。单位:byte */
+        length?: number
+        /** 需要基础库: `2.10.0`
+         *
+         * 从文件指定位置开始读,如果不指定,则从文件头开始读。读取的范围应该是左闭右开区间 [position, position+length)。有效范围:[0, fileLength - 1]。单位:byte */
+        position?: number
+        /** 接口调用成功的回调函数 */
+        success?: ReadFileSuccessCallback
+    }
+    interface ReadFileSuccessCallbackResult {
+        /** 文件内容 */
+        data: string | ArrayBuffer
+        errMsg: string
+    }
+    interface ReadOption {
+        /** 数据写入的缓冲区,必须是 ArrayBuffer 实例 */
+        arrayBuffer: ArrayBuffer
+        /** 文件描述符。fd 通过 [FileSystemManager.open](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.open.html) 或 [FileSystemManager.openSync](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.openSync.html) 接口获得 */
+        fd: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ReadCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: ReadFailCallback
+        /** 要从文件中读取的字节数,默认0 */
+        length?: number
+        /** 缓冲区中的写入偏移量,默认0 */
+        offset?: number
+        /** 文件读取的起始位置,如不传或传 null,则会从当前文件指针的位置读取。如果 position 是正整数,则文件指针位置会保持不变并从 position 读取文件。 */
+        position?: number
+        /** 接口调用成功的回调函数 */
+        success?: ReadSuccessCallback
+    }
+    /** 文件读取结果。 通过 [FileSystemManager.readSync](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.readSync.html) 接口返回 */
+    interface ReadResult {
+        /** 被写入的缓存区的对象,即接口入参的 arrayBuffer */
+        arrayBuffer: ArrayBuffer
+        /** 实际读取的字节数 */
+        bytesRead: number
+    }
+    interface ReadSuccessCallbackResult {
+        /** 被写入的缓存区的对象,即接口入参的 arrayBuffer */
+        arrayBuffer: ArrayBuffer
+        /** 实际读取的字节数 */
+        bytesRead: number
+        errMsg: string
+    }
+    interface ReadSyncOption {
+        /** 数据写入的缓冲区,必须是 ArrayBuffer 实例 */
+        arrayBuffer: ArrayBuffer
+        /** 文件描述符。fd 通过 [FileSystemManager.open](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.open.html) 或 [FileSystemManager.openSync](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.openSync.html) 接口获得 */
+        fd: string
+        /** 要从文件中读取的字节数,默认0 */
+        length?: number
+        /** 缓冲区中的写入偏移量,默认0 */
+        offset?: number
+        /** 文件读取的起始位置,如不传或传 null,则会从当前文件指针的位置读取。如果 position 是正整数,则文件指针位置会保持不变并从 position 读取文件。 */
+        position?: number
+    }
+    interface ReadZipEntryOption {
+        /** 要读取的压缩包内的文件列表(当传入"all" 时表示读取压缩包内所有文件) */
+        entries: EntryItem[] | 'all'
+        /** 要读取的压缩包的路径 (本地路径) */
+        filePath: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ReadZipEntryCompleteCallback
+        /** 统一指定读取文件的字符编码,只在 entries 值为"all"时有效。如果 entries 值为"all"且不传 encoding,则以 ArrayBuffer 格式读取文件的二进制内容
+         *
+         * 可选值:
+         * - 'ascii': ;
+         * - 'base64': ;
+         * - 'binary': ;
+         * - 'hex': ;
+         * - 'ucs2': 以小端序读取;
+         * - 'ucs-2': 以小端序读取;
+         * - 'utf16le': 以小端序读取;
+         * - 'utf-16le': 以小端序读取;
+         * - 'utf-8': ;
+         * - 'utf8': ;
+         * - 'latin1': ; */
+        encoding?:
+            | 'ascii'
+            | 'base64'
+            | 'binary'
+            | 'hex'
+            | 'ucs2'
+            | 'ucs-2'
+            | 'utf16le'
+            | 'utf-16le'
+            | 'utf-8'
+            | 'utf8'
+            | 'latin1'
+        /** 接口调用失败的回调函数 */
+        fail?: ReadZipEntryFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: ReadZipEntrySuccessCallback
+    }
+    interface ReadZipEntrySuccessCallbackResult {
+        /** 文件读取结果。res.entries 是一个对象,key是文件路径,value是一个对象 FileItem ,表示该文件的读取结果。每个 FileItem 包含 data (文件内容) 和 errMsg (错误信息) 属性。 */
+        entries: EntriesResult
+        errMsg: string
+    }
+    interface ReaddirFailCallbackResult {
+        /** 错误信息
+         *
+         * 可选值:
+         * - 'fail no such file or directory ${dirPath}': 目录不存在;
+         * - 'fail not a directory ${dirPath}': dirPath 不是目录;
+         * - 'fail permission denied, open ${dirPath}': 指定的 filePath 路径没有读权限;
+         * - 'fail sdcard not mounted': Android sdcard 挂载失败; */
+        errMsg: string
+    }
+    interface ReaddirOption {
+        /** 要读取的目录路径 (本地路径) */
+        dirPath: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ReaddirCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: ReaddirFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: ReaddirSuccessCallback
+    }
+    interface ReaddirSuccessCallbackResult {
+        /** 指定目录下的文件名数组。 */
+        files: string[]
+        errMsg: string
+    }
+    interface RecorderManagerStartOption {
+        /** 需要基础库: `2.1.0`
+         *
+         * 指定录音的音频输入源,可通过 [wx.getAvailableAudioSources()](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/wx.getAvailableAudioSources.html) 获取当前可用的音频源
+         *
+         * 可选值:
+         * - 'auto': 自动设置,默认使用手机麦克风,插上耳麦后自动切换使用耳机麦克风,所有平台适用;
+         * - 'buildInMic': 手机麦克风,仅限 iOS;
+         * - 'headsetMic': 有线耳机麦克风,仅限 iOS;
+         * - 'mic': 麦克风(没插耳麦时是手机麦克风,插耳麦时是耳机麦克风),仅限 Android;
+         * - 'camcorder': 同 mic,适用于录制音视频内容,仅限 Android;
+         * - 'voice_communication': 同 mic,适用于实时沟通,仅限 Android;
+         * - 'voice_recognition': 同 mic,适用于语音识别,仅限 Android; */
+        audioSource?:
+            | 'auto'
+            | 'buildInMic'
+            | 'headsetMic'
+            | 'mic'
+            | 'camcorder'
+            | 'voice_communication'
+            | 'voice_recognition'
+        /** 录音的时长,单位 ms,最大值 600000(10 分钟) */
+        duration?: number
+        /** 编码码率,有效值见下表格 */
+        encodeBitRate?: number
+        /** 音频格式
+         *
+         * 可选值:
+         * - 'mp3': mp3 格式;
+         * - 'aac': aac 格式;
+         * - 'wav': wav 格式;
+         * - 'PCM': pcm 格式; */
+        format?: 'mp3' | 'aac' | 'wav' | 'PCM'
+        /** 指定帧大小,单位 KB。传入 frameSize 后,每录制指定帧大小的内容后,会回调录制的文件内容,不指定则不会回调。暂仅支持 mp3、pcm 格式。 */
+        frameSize?: number
+        /** 录音通道数
+         *
+         * 可选值:
+         * - 1: 1 个通道;
+         * - 2: 2 个通道; */
+        numberOfChannels?: 1 | 2
+        /** 采样率(pc不支持)
+         *
+         * 可选值:
+         * - 8000: 8000 采样率;
+         * - 11025: 11025 采样率;
+         * - 12000: 12000 采样率;
+         * - 16000: 16000 采样率;
+         * - 22050: 22050 采样率;
+         * - 24000: 24000 采样率;
+         * - 32000: 32000 采样率;
+         * - 44100: 44100 采样率;
+         * - 48000: 48000 采样率; */
+        sampleRate?:
+            | 8000
+            | 11025
+            | 12000
+            | 16000
+            | 22050
+            | 24000
+            | 32000
+            | 44100
+            | 48000
+    }
+    interface RedirectToOption {
+        /** 需要跳转的应用内非 tabBar 的页面的路径 (代码包路径), 路径后可以带参数。参数与路径之间使用 `?` 分隔,参数键与参数值用 `=` 相连,不同参数用 `&` 分隔;如 'path?key=value&key2=value2' */
+        url: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: RedirectToCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: RedirectToFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: RedirectToSuccessCallback
+    }
+    interface RedoOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: RedoCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: RedoFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: RedoSuccessCallback
+    }
+    /** 来源信息。从另一个小程序、公众号或 App 进入小程序时返回。否则返回 `{}`。(参见后文注意) */
+    interface ReferrerInfo {
+        /** 来源小程序、公众号或 App 的 appId */
+        appId: string
+        /** 来源小程序传过来的数据,scene=1037或1038时支持 */
+        extraData: IAnyObject
+    }
+    /** 参照区域的边界 */
+    interface RelativeRectResult {
+        /** 下边界 */
+        bottom: number
+        /** 左边界 */
+        left: number
+        /** 右边界 */
+        right: number
+        /** 上边界 */
+        top: number
+    }
+    /** 发送端地址信息 */
+    interface RemoteInfo {
+        /** 发送消息的 socket 的地址 */
+        address: string
+        /** 使用的协议族,为 IPv4 或者 IPv6 */
+        family: string
+        /** 端口号 */
+        port: number
+        /** message 的大小,单位:字节 */
+        size: number
+    }
+    interface RemoveCustomLayerOption {
+        /** 个性化图层id */
+        layerId: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: RemoveCustomLayerCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: RemoveCustomLayerFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: RemoveCustomLayerSuccessCallback
+    }
+    interface RemoveFormatOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: RemoveFormatCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: RemoveFormatFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: RemoveFormatSuccessCallback
+    }
+    interface RemoveGroundOverlayOption {
+        /** 图片图层 id */
+        id: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: RemoveGroundOverlayCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: RemoveGroundOverlayFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: RemoveGroundOverlaySuccessCallback
+    }
+    interface RemoveMarkersOption {
+        /** marker 的 id 集合。 */
+        markerIds: any[]
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: RemoveMarkersCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: RemoveMarkersFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: RemoveMarkersSuccessCallback
+    }
+    interface RemoveSavedFileFailCallbackResult {
+        /** 错误信息
+         *
+         * 可选值:
+         * - 'fail file not exist': 指定的 tempFilePath 找不到文件; */
+        errMsg: string
+    }
+    interface RemoveServiceOption {
+        /** service 的 UUID */
+        serviceId: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: RemoveServiceCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: RemoveServiceFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: RemoveServiceSuccessCallback
+    }
+    interface RemoveStorageOption {
+        /** 本地缓存中指定的 key */
+        key: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: RemoveStorageCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: RemoveStorageFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: RemoveStorageSuccessCallback
+    }
+    interface RemoveTabBarBadgeOption {
+        /** tabBar 的哪一项,从左边算起 */
+        index: number
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: RemoveTabBarBadgeCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: RemoveTabBarBadgeFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: RemoveTabBarBadgeSuccessCallback
+    }
+    interface RemoveVisualLayerOption {
+        /** 可视化图层id */
+        layerId: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: RemoveVisualLayerCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: RemoveVisualLayerFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: RemoveVisualLayerSuccessCallback
+    }
+    interface RenameFailCallbackResult {
+        /** 错误信息
+         *
+         * 可选值:
+         * - 'fail permission denied, rename ${oldPath} -> ${newPath}': 指定源文件或目标文件没有写权限;
+         * - 'fail no such file or directory, rename ${oldPath} -> ${newPath}': 源文件不存在,或目标文件路径的上层目录不存在; */
+        errMsg: string
+    }
+    interface RenameOption {
+        /** 新文件路径,支持本地路径 */
+        newPath: string
+        /** 源文件路径,支持本地路径 */
+        oldPath: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: RenameCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: RenameFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: RenameSuccessCallback
+    }
+    /** Canvas 绘图上下文。
+     *
+     * ****
+     *
+     * - 通过 Canvas.getContext('2d') 接口可以获取 CanvasRenderingContext2D 对象,实现了 [HTML Canvas 2D Context](https://www.w3.org/TR/2dcontext/) 定义的属性、方法。
+     * - 通过 Canvas.getContext('webgl') 或 OffscreenCanvas.getContext('webgl') 接口可以获取 WebGLRenderingContext 对象,实现了 [WebGL 1.0](https://www.khronos.org/registry/webgl/specs/latest/1.0/) 定义的所有属性、方法、常量。
+     * - CanvasRenderingContext2D 的 drawImage 方法 2.10.0 起支持传入通过 [SelectorQuery](https://developers.weixin.qq.com/miniprogram/dev/api/wxml/SelectorQuery.html) 获取的 video 对象
+     *
+     * **示例代码**
+     *
+     * video 画到 2D Canvas 示例
+     * [在微信开发者工具中查看示例](https://developers.weixin.qq.com/s/tJTak7mU7sfX) */
+    interface RenderingContext {}
+    interface RequestOption<
+        T extends string | IAnyObject | ArrayBuffer =
+            | string
+            | IAnyObject
+            | ArrayBuffer
+    > {
+        /** 开发者服务器接口地址 */
+        url: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: RequestCompleteCallback
+        /** 请求的参数 */
+        data?: string | IAnyObject | ArrayBuffer
+        /** 返回的数据格式
+         *
+         * 可选值:
+         * - 'json': 返回的数据为 JSON,返回后会对返回的数据进行一次 JSON.parse;
+         * - '其他': 不对返回的内容进行 JSON.parse; */
+        dataType?: 'json' | '其他'
+        /** 需要基础库: `2.10.4`
+         *
+         * 开启 cache */
+        enableCache?: boolean
+        /** 需要基础库: `2.20.2`
+         *
+         * 开启 transfer-encoding chunked。 */
+        enableChunked?: boolean
+        /** 需要基础库: `2.10.4`
+         *
+         * 开启 http2 */
+        enableHttp2?: boolean
+        /** 需要基础库: `2.19.1`
+         *
+         * 是否开启 HttpDNS 服务。如开启,需要同时填入 httpDNSServiceId 。 HttpDNS 用法详见 [移动解析HttpDNS](https://developers.weixin.qq.com/miniprogram/dev/framework/ability/HTTPDNS.html) */
+        enableHttpDNS?: boolean
+        /** 需要基础库: `2.10.4`
+         *
+         * 开启 quic */
+        enableQuic?: boolean
+        /** 接口调用失败的回调函数 */
+        fail?: RequestFailCallback
+        /** 设置请求的 header,header 中不能设置 Referer。
+         *
+         * `content-type` 默认为 `application/json` */
+        header?: IAnyObject
+        /** 需要基础库: `2.19.1`
+         *
+         * HttpDNS 服务商 Id。 HttpDNS 用法详见 [移动解析HttpDNS](https://developers.weixin.qq.com/miniprogram/dev/framework/ability/HTTPDNS.html) */
+        httpDNSServiceId?: boolean
+        /** HTTP 请求方法
+         *
+         * 可选值:
+         * - 'OPTIONS': HTTP 请求 OPTIONS;
+         * - 'GET': HTTP 请求 GET;
+         * - 'HEAD': HTTP 请求 HEAD;
+         * - 'POST': HTTP 请求 POST;
+         * - 'PUT': HTTP 请求 PUT;
+         * - 'DELETE': HTTP 请求 DELETE;
+         * - 'TRACE': HTTP 请求 TRACE;
+         * - 'CONNECT': HTTP 请求 CONNECT; */
+        method?:
+            | 'OPTIONS'
+            | 'GET'
+            | 'HEAD'
+            | 'POST'
+            | 'PUT'
+            | 'DELETE'
+            | 'TRACE'
+            | 'CONNECT'
+        /** 需要基础库: `1.7.0`
+         *
+         * 响应的数据类型
+         *
+         * 可选值:
+         * - 'text': 响应的数据为文本;
+         * - 'arraybuffer': 响应的数据为 ArrayBuffer; */
+        responseType?: 'text' | 'arraybuffer'
+        /** 接口调用成功的回调函数 */
+        success?: RequestSuccessCallback<T>
+        /** 需要基础库: `2.10.0`
+         *
+         * 超时时间,单位为毫秒 */
+        timeout?: number
+    }
+    interface RequestOrderPaymentOption {
+        /** 随机字符串,长度为32个字符以下 */
+        nonceStr: string
+        /** 统一下单接口返回的 prepay_id 参数值,提交格式如:prepay_id=*** */
+        package: string
+        /** 签名,具体见微信支付文档 */
+        paySign: string
+        /** 时间戳,从 1970 年 1 月 1 日 00:00:00 至今的秒数,即当前的时间 */
+        timeStamp: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: RequestOrderPaymentCompleteCallback
+        /** 外部APP用户ID */
+        extUserUin?: string
+        /** 接口调用失败的回调函数 */
+        fail?: RequestOrderPaymentFailCallback
+        /** 订单信息,仅在需要校验的场景下需要传递,具体见[接口说明](https://developers.weixin.qq.com/miniprogram/dev/framework/ministore/minishopopencomponent2/API/order/requestOrderPayment) */
+        orderInfo?: IAnyObject
+        /** 签名算法,应与后台下单时的值一致
+         *
+         * 可选值:
+         * - 'MD5': 仅在 v2 版本接口适用;
+         * - 'HMAC-SHA256': 仅在 v2 版本接口适用;
+         * - 'RSA': 仅在 v3 版本接口适用; */
+        signType?: 'MD5' | 'HMAC-SHA256' | 'RSA'
+        /** 接口调用成功的回调函数 */
+        success?: RequestOrderPaymentSuccessCallback
+    }
+    interface RequestPaymentOption {
+        /** 随机字符串,长度为32个字符以下 */
+        nonceStr: string
+        /** 统一下单接口返回的 prepay_id 参数值,提交格式如:prepay_id=*** */
+        package: string
+        /** 签名,具体见微信支付文档 */
+        paySign: string
+        /** 时间戳,从 1970 年 1 月 1 日 00:00:00 至今的秒数,即当前的时间 */
+        timeStamp: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: RequestPaymentCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: RequestPaymentFailCallback
+        /** 签名算法,应与后台下单时的值一致
+         *
+         * 可选值:
+         * - 'MD5': 仅在 v2 版本接口适用;
+         * - 'HMAC-SHA256': 仅在 v2 版本接口适用;
+         * - 'RSA': 仅在 v3 版本接口适用; */
+        signType?: 'MD5' | 'HMAC-SHA256' | 'RSA'
+        /** 接口调用成功的回调函数 */
+        success?: RequestPaymentSuccessCallback
+    }
+    interface RequestPictureInPictureOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: RequestPictureInPictureCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: RequestPictureInPictureFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: RequestPictureInPictureSuccessCallback
+    }
+    /** 需要基础库: `2.10.4`
+     *
+     * 网络请求过程中一些调试信息,[查看详细说明](https://developers.weixin.qq.com/miniprogram/dev/framework/performance/network.html) */
+    interface RequestProfile {
+        /** SSL建立完成的时间,如果不是安全连接,则值为 0 */
+        SSLconnectionEnd: number
+        /** SSL建立连接的时间,如果不是安全连接,则值为 0 */
+        SSLconnectionStart: number
+        /** HTTP(TCP) 完成建立连接的时间(完成握手),如果是持久连接,则与 fetchStart 值相等。注意如果在传输层发生了错误且重新建立连接,则这里显示的是新建立的连接完成的时间。注意这里握手结束,包括安全连接建立完成、SOCKS 授权通过 */
+        connectEnd: number
+        /** HTTP(TCP) 开始建立连接的时间,如果是持久连接,则与 fetchStart 值相等。注意如果在传输层发生了错误且重新建立连接,则这里显示的是新建立的连接开始的时间 */
+        connectStart: number
+        /** DNS 域名查询完成的时间,如果使用了本地缓存(即无 DNS 查询)或持久连接,则与 fetchStart 值相等 */
+        domainLookupEnd: number
+        /** DNS 域名查询开始的时间,如果使用了本地缓存(即无 DNS 查询)或持久连接,则与 fetchStart 值相等 */
+        domainLookupStart: number
+        /** 评估当前网络下载的kbps */
+        downstreamThroughputKbpsEstimate: number
+        /** 评估的网络状态 unknown, offline, slow 2g, 2g, 3g, 4g, last/0, 1, 2, 3, 4, 5, 6 */
+        estimate_nettype: number
+        /** 组件准备好使用 HTTP 请求抓取资源的时间,这发生在检查本地缓存之前 */
+        fetchStart: number
+        /** 协议层根据多个请求评估当前网络的 rtt(仅供参考) */
+        httpRttEstimate: number
+        /** 当前请求的IP */
+        peerIP: string
+        /** 当前请求的端口 */
+        port: number
+        /** 使用协议类型,有效值:http1.1, h2, quic, unknown */
+        protocol: string
+        /** 收到字节数 */
+        receivedBytedCount: number
+        /** 最后一个 HTTP 重定向完成时的时间。有跳转且是同域名内部的重定向才算,否则值为 0 */
+        redirectEnd: number
+        /** 第一个 HTTP 重定向发生时的时间。有跳转且是同域名内的重定向才算,否则值为 0 */
+        redirectStart: number
+        /** HTTP请求读取真实文档结束的时间 */
+        requestEnd: number
+        /** HTTP请求读取真实文档开始的时间(完成建立连接),包括从本地读取缓存。连接错误重连时,这里显示的也是新建立连接的时间 */
+        requestStart: number
+        /** HTTP 响应全部接收完成的时间(获取到最后一个字节),包括从本地读取缓存 */
+        responseEnd: number
+        /** HTTP 开始接收响应的时间(获取到第一个字节),包括从本地读取缓存 */
+        responseStart: number
+        /** 当次请求连接过程中实时 rtt */
+        rtt: number
+        /** 发送的字节数 */
+        sendBytesCount: number
+        /** 是否复用连接 */
+        socketReused: boolean
+        /** 当前网络的实际下载kbps */
+        throughputKbps: number
+        /** 传输层根据多个请求评估的当前网络的 rtt(仅供参考) */
+        transportRttEstimate: number
+    }
+    interface RequestSubscribeDeviceMessageFailCallbackResult {
+        /** 接口调用失败错误码,有可能为空 */
+        errCode: number
+        /** 接口调用失败错误信息 */
+        errMsg: string
+    }
+    interface RequestSubscribeDeviceMessageOption {
+        /** 设备型号 id 。通过微信公众平台注册设备获得。 */
+        modelId: string
+        /** 设备唯一序列号。由厂商分配,长度不能超过128字节。字符只接受数字,大小写字母,下划线(_)和连字符(-)。 */
+        sn: string
+        /** 设备票据,5分钟内有效。 */
+        snTicket: string
+        /** 需要订阅的消息模板的 id 的集合,一次调用最多可订阅3条消息 */
+        tmplIds: any[]
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: RequestSubscribeDeviceMessageCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: RequestSubscribeDeviceMessageFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: RequestSubscribeDeviceMessageSuccessCallback
+    }
+    interface RequestSubscribeDeviceMessageSuccessCallbackResult {
+        /** [TEMPLATE_ID]是动态的键,即模板id,值包括'accept'、'reject'、'ban'、'filter'、'acceptWithAudio'。'accept'表示用户同意订阅该条id对应的模板消息,'reject'表示用户拒绝订阅该条id对应的模板消息,'ban'表示已被后台封禁,'acceptWithAudio' 表示用户接收订阅消息并开启了语音提醒,'filter'表示该模板因为模板标题同名被后台过滤。例如 { errMsg: "requestSubscribeDeviceMessage:ok", zun-LzcQyW-edafCVvzPkK4de2Rllr1fFpw2A_x0oXE: "accept"} 表示用户同意订阅zun-LzcQyW-edafCVvzPkK4de2Rllr1fFpw2A_x0oXE这条消息 */
+        [TEMPLATE_ID: string]: string
+        /** 接口调用成功时errMsg值为'requestSubscribeDeviceMessage:ok' */
+        errMsg: string
+    }
+    interface RequestSubscribeMessageFailCallbackResult {
+        /** 接口调用失败错误码 */
+        errCode: number
+        /** 接口调用失败错误信息 */
+        errMsg: string
+    }
+    interface RequestSubscribeMessageOption {
+        /** 需要订阅的消息模板的id的集合,一次调用最多可订阅3条消息(注意:iOS客户端7.0.6版本、Android客户端7.0.7版本之后的一次性订阅/长期订阅才支持多个模板消息,iOS客户端7.0.5版本、Android客户端7.0.6版本之前的一次订阅只支持一个模板消息)消息模板id在[微信公众平台(mp.weixin.qq.com)-功能-订阅消息]中配置。每个tmplId对应的模板标题需要不相同,否则会被过滤。 */
+        tmplIds: any[]
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: RequestSubscribeMessageCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: RequestSubscribeMessageFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: RequestSubscribeMessageSuccessCallback
+    }
+    interface RequestSubscribeMessageSuccessCallbackResult {
+        /** [TEMPLATE_ID]是动态的键,即模板id,值包括'accept'、'reject'、'ban'、'filter'。'accept'表示用户同意订阅该条id对应的模板消息,'reject'表示用户拒绝订阅该条id对应的模板消息,'ban'表示已被后台封禁,'filter'表示该模板因为模板标题同名被后台过滤。例如 { errMsg: "requestSubscribeMessage:ok", zun-LzcQyW-edafCVvzPkK4de2Rllr1fFpw2A_x0oXE: "accept"} 表示用户同意订阅zun-LzcQyW-edafCVvzPkK4de2Rllr1fFpw2A_x0oXE这条消息 */
+        [TEMPLATE_ID: string]: string
+        /** 接口调用成功时errMsg值为'requestSubscribeMessage:ok' */
+        errMsg: string
+    }
+    interface RequestSuccessCallbackResult<
+        T extends string | IAnyObject | ArrayBuffer =
+            | string
+            | IAnyObject
+            | ArrayBuffer
+    > {
+        /** 需要基础库: `2.10.0`
+         *
+         * 开发者服务器返回的 cookies,格式为字符串数组 */
+        cookies: string[]
+        /** 开发者服务器返回的数据 */
+        data: T
+        /** 需要基础库: `1.2.0`
+         *
+         * 开发者服务器返回的 HTTP Response Header */
+        header: IAnyObject
+        /** 需要基础库: `2.10.4`
+         *
+         * 网络请求过程中一些调试信息,[查看详细说明](https://developers.weixin.qq.com/miniprogram/dev/framework/performance/network.html) */
+        profile: RequestProfile
+        /** 开发者服务器返回的 HTTP 状态码 */
+        statusCode: number
+        errMsg: string
+    }
+    interface ReserveChannelsLiveOption {
+        /** 预告 id,通过 getChannelsLiveNoticeInfo 接口获取 */
+        noticeId: string
+    }
+    /** 开发者服务器每次返回新chunk时的Response */
+    interface Result {
+        /** 返回的chunk buffer */
+        data: ArrayBuffer
+    }
+    interface ResumeBGMOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ResumeBGMCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: ResumeBGMFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: ResumeBGMSuccessCallback
+    }
+    interface ResumeOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ResumeCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: ResumeFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: ResumeSuccessCallback
+    }
+    interface RewardedVideoAdOnCloseCallbackResult {
+        /** 需要基础库: `2.1.0`
+         *
+         * 视频是否是在用户完整观看的情况下被关闭的 */
+        isEnded: boolean
+    }
+    interface RewardedVideoAdOnErrorCallbackResult {
+        /** 需要基础库: `2.2.2`
+         *
+         * 错误码
+         *
+         * 可选值:
+         * - 1000: 后端接口调用失败;
+         * - 1001: 参数错误;
+         * - 1002: 广告单元无效;
+         * - 1003: 内部错误;
+         * - 1004: 无合适的广告;
+         * - 1005: 广告组件审核中;
+         * - 1006: 广告组件被驳回;
+         * - 1007: 广告组件被封禁;
+         * - 1008: 广告单元已关闭; */
+        errCode: 1000 | 1001 | 1002 | 1003 | 1004 | 1005 | 1006 | 1007 | 1008
+        /** 错误信息 */
+        errMsg: string
+    }
+    interface RmdirFailCallbackResult {
+        /** 错误信息
+         *
+         * 可选值:
+         * - 'fail no such file or directory ${dirPath}': 目录不存在;
+         * - 'fail directory not empty': 目录不为空;
+         * - 'fail permission denied, open ${dirPath}': 指定的 dirPath 路径没有写权限;
+         * - 'fail sdcard not mounted': Android sdcard 挂载失败; */
+        errMsg: string
+    }
+    interface RmdirOption {
+        /** 要删除的目录路径 (本地路径) */
+        dirPath: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: RmdirCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: RmdirFailCallback
+        /** 需要基础库: `2.3.0`
+         *
+         * 是否递归删除目录。如果为 true,则删除该目录和该目录下的所有子目录以及文件。 */
+        recursive?: boolean
+        /** 接口调用成功的回调函数 */
+        success?: RmdirSuccessCallback
+    }
+    interface SafeArea {
+        /** 安全区域右下角纵坐标 */
+        bottom: number
+        /** 安全区域的高度,单位逻辑像素 */
+        height: number
+        /** 安全区域左上角横坐标 */
+        left: number
+        /** 安全区域右下角横坐标 */
+        right: number
+        /** 安全区域左上角纵坐标 */
+        top: number
+        /** 安全区域的宽度,单位逻辑像素 */
+        width: number
+    }
+    interface SaveFileFailCallbackResult {
+        /** 错误信息
+         *
+         * 可选值:
+         * - 'fail tempFilePath file not exist': 指定的 tempFilePath 找不到文件;
+         * - 'fail permission denied, open "${filePath}"': 指定的 filePath 路径没有写权限;
+         * - 'fail no such file or directory "${dirPath}"': 上级目录不存在;
+         * - 'fail the maximum size of the file storage limit is exceeded': 存储空间不足;
+         * - 'fail sdcard not mounted': Android sdcard 挂载失败; */
+        errMsg: string
+    }
+    interface SaveFileSuccessCallbackResult {
+        /** 存储后的文件路径 (本地路径) */
+        savedFilePath: string
+        errMsg: string
+    }
+    interface SaveFileToDiskOption {
+        /** 待保存文件路径 */
+        filePath: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: SaveFileToDiskCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: SaveFileToDiskFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: SaveFileToDiskSuccessCallback
+    }
+    interface SaveImageToPhotosAlbumOption {
+        /** 图片文件路径,可以是临时文件路径或永久文件路径 (本地路径) ,不支持网络路径 */
+        filePath: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: SaveImageToPhotosAlbumCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: SaveImageToPhotosAlbumFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: SaveImageToPhotosAlbumSuccessCallback
+    }
+    interface SaveVideoToPhotosAlbumOption {
+        /** 视频文件路径,可以是临时文件路径也可以是永久文件路径 (本地路径) */
+        filePath: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: SaveVideoToPhotosAlbumCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: SaveVideoToPhotosAlbumFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: SaveVideoToPhotosAlbumSuccessCallback
+    }
+    interface ScanCodeOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ScanCodeCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: ScanCodeFailCallback
+        /** 需要基础库: `1.2.0`
+         *
+         * 是否只能从相机扫码,不允许从相册选择图片 */
+        onlyFromCamera?: boolean
+        /** 需要基础库: `1.7.0`
+         *
+         * 扫码类型
+         *
+         * 可选值:
+         * - 'barCode': 一维码;
+         * - 'qrCode': 二维码;
+         * - 'datamatrix': Data Matrix 码;
+         * - 'pdf417': PDF417 条码; */
+        scanType?: Array<'barCode' | 'qrCode' | 'datamatrix' | 'pdf417'>
+        /** 接口调用成功的回调函数 */
+        success?: ScanCodeSuccessCallback
+    }
+    interface ScanCodeSuccessCallbackResult {
+        /** 所扫码的字符集 */
+        charSet: string
+        /** 当所扫的码为当前小程序二维码时,会返回此字段,内容为二维码携带的 path */
+        path: string
+        /** 原始数据,base64编码 */
+        rawData: string
+        /** 所扫码的内容 */
+        result: string
+        /** 所扫码的类型
+         *
+         * 可选值:
+         * - 'QR_CODE': 二维码;
+         * - 'AZTEC': 一维码;
+         * - 'CODABAR': 一维码;
+         * - 'CODE_39': 一维码;
+         * - 'CODE_93': 一维码;
+         * - 'CODE_128': 一维码;
+         * - 'DATA_MATRIX': 二维码;
+         * - 'EAN_8': 一维码;
+         * - 'EAN_13': 一维码;
+         * - 'ITF': 一维码;
+         * - 'MAXICODE': 一维码;
+         * - 'PDF_417': 二维码;
+         * - 'RSS_14': 一维码;
+         * - 'RSS_EXPANDED': 一维码;
+         * - 'UPC_A': 一维码;
+         * - 'UPC_E': 一维码;
+         * - 'UPC_EAN_EXTENSION': 一维码;
+         * - 'WX_CODE': 二维码;
+         * - 'CODE_25': 一维码; */
+        scanType:
+            | 'QR_CODE'
+            | 'AZTEC'
+            | 'CODABAR'
+            | 'CODE_39'
+            | 'CODE_93'
+            | 'CODE_128'
+            | 'DATA_MATRIX'
+            | 'EAN_8'
+            | 'EAN_13'
+            | 'ITF'
+            | 'MAXICODE'
+            | 'PDF_417'
+            | 'RSS_14'
+            | 'RSS_EXPANDED'
+            | 'UPC_A'
+            | 'UPC_E'
+            | 'UPC_EAN_EXTENSION'
+            | 'WX_CODE'
+            | 'CODE_25'
+        errMsg: string
+    }
+    interface ScrollOffsetCallbackResult {
+        /** 节点的 dataset */
+        dataset: IAnyObject
+        /** 节点的 ID */
+        id: string
+        /** 节点的水平滚动位置 */
+        scrollLeft: number
+        /** 节点的竖直滚动位置 */
+        scrollTop: number
+    }
+    interface ScrollToOption {
+        /** 是否启用滚动动画 */
+        animated?: boolean
+        /** 滚动动画时长 */
+        duration?: number
+        /** 左边界距离 */
+        left?: number
+        /** 顶部距离 */
+        top?: number
+        /** 初始速度 */
+        velocity?: number
+    }
+    /** 需要基础库: `2.14.4`
+*
+* 增强 ScrollView 实例,可通过 [wx.createSelectorQuery](https://developers.weixin.qq.com/miniprogram/dev/api/wxml/wx.createSelectorQuery.html) 的 [NodesRef.node](https://developers.weixin.qq.com/miniprogram/dev/api/wxml/NodesRef.node.html) 方法获取。 仅在 scroll-view 组件开启 enhanced 属性后生效。
+*
+* **示例代码**
+*
+* ```js
+wx.createSelectorQuery()
+  .select('#scrollview')
+  .node()
+  .exec((res) => {
+    const scrollView = res[0].node;
+    scrollView.scrollEnabled = false;
+  })
+``` */
+    interface ScrollViewContext {
+        /** 设置滚动边界弹性 (仅在 iOS 下生效) */
+        bounces: boolean
+        /** 取消滚动惯性 (仅在 iOS 下生效) */
+        decelerationDisabled: boolean
+        /** 设置滚动减速速率 */
+        fastDeceleration: boolean
+        /** 分页滑动开关 */
+        pagingEnabled: boolean
+        /** 滚动开关 */
+        scrollEnabled: boolean
+        /** 设置是否显示滚动条 */
+        showScrollbar: boolean
+    }
+    interface SeekBackgroundAudioOption {
+        /** 音乐位置,单位:秒 */
+        position: number
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: SeekBackgroundAudioCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: SeekBackgroundAudioFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: SeekBackgroundAudioSuccessCallback
+    }
+    interface SendHCEMessageOption {
+        /** 二进制数据 */
+        data: ArrayBuffer
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: SendHCEMessageCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: SendHCEMessageFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: SendHCEMessageSuccessCallback
+    }
+    interface SendMessageOption {
+        /** SEI消息 */
+        msg: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: SendMessageCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: SendMessageFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: SendMessageSuccessCallback
+    }
+    interface SendSocketMessageOption {
+        /** 需要发送的内容 */
+        data: string | ArrayBuffer
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: SendSocketMessageCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: SendSocketMessageFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: SendSocketMessageSuccessCallback
+    }
+    interface SetBGMVolumeOption {
+        /** 音量大小,范围是 0-1 */
+        volume: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: SetBGMVolumeCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: SetBGMVolumeFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: SetBGMVolumeSuccessCallback
+    }
+    interface SetBLEMTUFailCallbackResult {
+        /** 最终协商的 MTU 值。如果协商失败则无此参数。安卓客户端 8.0.9 开始支持。 */
+        mtu: number
+    }
+    interface SetBLEMTUOption {
+        /** 蓝牙设备 id */
+        deviceId: string
+        /** 最大传输单元。设置范围为 (22,512) 区间内,单位 bytes */
+        mtu: number
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: SetBLEMTUCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: SetBLEMTUFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: SetBLEMTUSuccessCallback
+    }
+    interface SetBLEMTUSuccessCallbackResult {
+        /** 最终协商的 MTU 值,与传入参数一致。安卓客户端 8.0.9 开始支持。 */
+        mtu: number
+        errMsg: string
+    }
+    interface SetBackgroundColorOption {
+        /** 窗口的背景色,必须为十六进制颜色值 */
+        backgroundColor?: string
+        /** 底部窗口的背景色,必须为十六进制颜色值,仅 iOS 支持 */
+        backgroundColorBottom?: string
+        /** 顶部窗口的背景色,必须为十六进制颜色值,仅 iOS 支持 */
+        backgroundColorTop?: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: SetBackgroundColorCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: SetBackgroundColorFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: SetBackgroundColorSuccessCallback
+    }
+    interface SetBackgroundFetchTokenOption {
+        /** 自定义的登录态 */
+        token: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: SetBackgroundFetchTokenCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: SetBackgroundFetchTokenFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: SetBackgroundFetchTokenSuccessCallback
+    }
+    interface SetBackgroundTextStyleOption {
+        /** 下拉背景字体、loading 图的样式。
+         *
+         * 可选值:
+         * - 'dark': dark 样式;
+         * - 'light': light 样式; */
+        textStyle: 'dark' | 'light'
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: SetBackgroundTextStyleCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: SetBackgroundTextStyleFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: SetBackgroundTextStyleSuccessCallback
+    }
+    interface SetCenterOffsetOption {
+        /** 偏移量,两位数组 */
+        offset: number[]
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: SetCenterOffsetCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: SetCenterOffsetFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: SetCenterOffsetSuccessCallback
+    }
+    interface SetClipboardDataOption {
+        /** 剪贴板的内容 */
+        data: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: SetClipboardDataCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: SetClipboardDataFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: SetClipboardDataSuccessCallback
+    }
+    interface SetContentsOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: SetContentsCompleteCallback
+        /** 表示内容的delta对象 */
+        delta?: IAnyObject
+        /** 接口调用失败的回调函数 */
+        fail?: SetContentsFailCallback
+        /** 带标签的HTML内容 */
+        html?: string
+        /** 接口调用成功的回调函数 */
+        success?: SetContentsSuccessCallback
+    }
+    interface SetEnable1v1ChatOption {
+        /** 是否开启 */
+        enable: boolean
+        /** 窗口背景色(音频通话背景以及小窗模式背景)
+         *
+         * 可选值:
+         * - 0: #262930;
+         * - 1: #FA5151;
+         * - 2: #FA9D3B;
+         * - 3: #3D7257;
+         * - 4: #1485EE;
+         * - 5: #6467F0; */
+        backgroundType?: 0 | 1 | 2 | 3 | 4 | 5
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: SetEnable1v1ChatCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: SetEnable1v1ChatFailCallback
+        /** 小窗样式 */
+        minWindowType?: number
+        /** 接口调用成功的回调函数 */
+        success?: SetEnable1v1ChatSuccessCallback
+    }
+    interface SetEnableDebugOption {
+        /** 是否打开调试 */
+        enableDebug: boolean
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: SetEnableDebugCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: SetEnableDebugFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: SetEnableDebugSuccessCallback
+    }
+    interface SetInnerAudioOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: SetInnerAudioOptionCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: SetInnerAudioOptionFailCallback
+        /** 是否与其他音频混播,设置为 true 之后,不会终止其他应用或微信内的音乐 */
+        mixWithOther?: boolean
+        /** (仅在 iOS 生效)是否遵循静音开关,设置为 false 之后,即使是在静音模式下,也能播放声音 */
+        obeyMuteSwitch?: boolean
+        /** true 代表用扬声器播放,false 代表听筒播放,默认值为 true。 */
+        speakerOn?: boolean
+        /** 接口调用成功的回调函数 */
+        success?: SetInnerAudioOptionSuccessCallback
+    }
+    interface SetKeepScreenOnOption {
+        /** 是否保持屏幕常亮 */
+        keepScreenOn: boolean
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: SetKeepScreenOnCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: SetKeepScreenOnFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: SetKeepScreenOnSuccessCallback
+    }
+    interface SetLocMarkerIconOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: SetLocMarkerIconCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: SetLocMarkerIconFailCallback
+        /** 图标路径,支持网络路径、本地路径、代码包路径 */
+        iconPath?: string
+        /** 接口调用成功的回调函数 */
+        success?: SetLocMarkerIconSuccessCallback
+    }
+    interface SetMICVolumeOption {
+        /** 音量大小,范围是 0.0-1.0 */
+        volume: number
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: SetMICVolumeCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: SetMICVolumeFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: SetMICVolumeSuccessCallback
+    }
+    interface SetNavigationBarColorOption {
+        /** 背景颜色值,有效值为十六进制颜色 */
+        backgroundColor: string
+        /** 前景颜色值,包括按钮、标题、状态栏的颜色,仅支持 #ffffff 和 #000000 */
+        frontColor: string
+        /** 动画效果 */
+        animation?: AnimationOption
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: SetNavigationBarColorCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: SetNavigationBarColorFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: SetNavigationBarColorSuccessCallback
+    }
+    interface SetNavigationBarTitleOption {
+        /** 页面标题 */
+        title: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: SetNavigationBarTitleCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: SetNavigationBarTitleFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: SetNavigationBarTitleSuccessCallback
+    }
+    interface SetScreenBrightnessOption {
+        /** 屏幕亮度值,范围 0 ~ 1。0 最暗,1 最亮 */
+        value: number
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: SetScreenBrightnessCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: SetScreenBrightnessFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: SetScreenBrightnessSuccessCallback
+    }
+    interface SetStorageOption<T = any> {
+        /** 需要存储的内容。只支持原生类型、Date、及能够通过`JSON.stringify`序列化的对象。 */
+        data: T
+        /** 本地缓存中指定的 key */
+        key: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: SetStorageCompleteCallback
+        /** 需要基础库: `2.21.3`
+         *
+         * 是否开启加密存储。只有异步的 setStorage 接口支持开启加密存储。开启后,将会对 data 使用 AES128 加密,接口回调耗时将会增加。若开启加密存储,setStorage 和 getStorage 需要同时声明 encrypt 的值为 true。此外,由于加密后的数据会比原始数据膨胀1.4倍,因此开启 encrypt 的情况下,单个 key 允许存储的最大数据长度为 0.7MB,所有数据存储上限为 7.1MB */
+        encrypt?: boolean
+        /** 接口调用失败的回调函数 */
+        fail?: SetStorageFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: SetStorageSuccessCallback
+    }
+    interface SetTabBarBadgeOption {
+        /** tabBar 的哪一项,从左边算起 */
+        index: number
+        /** 显示的文本,超过 4 个字符则显示成 ... */
+        text: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: SetTabBarBadgeCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: SetTabBarBadgeFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: SetTabBarBadgeSuccessCallback
+    }
+    interface SetTabBarItemOption {
+        /** tabBar 的哪一项,从左边算起 */
+        index: number
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: SetTabBarItemCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: SetTabBarItemFailCallback
+        /** 图片路径,icon 大小限制为 40kb,建议尺寸为 81px * 81px,当 postion 为 top 时,此参数无效 */
+        iconPath?: string
+        /** 选中时的图片路径,icon 大小限制为 40kb,建议尺寸为 81px * 81px ,当 postion 为 top 时,此参数无效 */
+        selectedIconPath?: string
+        /** 接口调用成功的回调函数 */
+        success?: SetTabBarItemSuccessCallback
+        /** tab 上的按钮文字 */
+        text?: string
+    }
+    interface SetTabBarStyleOption {
+        /** tab 的背景色,HexColor */
+        backgroundColor?: string
+        /** tabBar上边框的颜色, 仅支持 black/white */
+        borderStyle?: string
+        /** tab 上的文字默认颜色,HexColor */
+        color?: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: SetTabBarStyleCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: SetTabBarStyleFailCallback
+        /** tab 上的文字选中时的颜色,HexColor */
+        selectedColor?: string
+        /** 接口调用成功的回调函数 */
+        success?: SetTabBarStyleSuccessCallback
+    }
+    interface SetTimeoutOption {
+        /** 设置超时时间 (ms) */
+        timeout: number
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: SetTimeoutCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: SetTimeoutFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: SetTimeoutSuccessCallback
+    }
+    interface SetTopBarTextOption {
+        /** 置顶栏文字 */
+        text: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: SetTopBarTextCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: SetTopBarTextFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: SetTopBarTextSuccessCallback
+    }
+    interface SetVisualEffectOnCaptureOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: SetVisualEffectOnCaptureCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: SetVisualEffectOnCaptureFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: SetVisualEffectOnCaptureSuccessCallback
+        /** 截屏/录屏时的表现,仅支持 none / hidden,传入 hidden 则表示在截屏/录屏时隐藏屏幕 */
+        visualEffect?: string
+    }
+    interface SetWifiListOption {
+        /** 提供预设的 Wi-Fi 信息列表 */
+        wifiList: WifiData[]
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: SetWifiListCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: SetWifiListFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: SetWifiListSuccessCallback
+    }
+    interface SetWindowSizeOption {
+        /** 窗口高度,以像素为单位 */
+        height: number
+        /** 窗口宽度,以像素为单位 */
+        width: number
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: SetWindowSizeCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: SetWindowSizeFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: SetWindowSizeSuccessCallback
+    }
+    interface SetZoomOption {
+        /** 缩放级别,范围[1, maxZoom]。zoom 可取小数,精确到小数后一位。maxZoom 可在 bindinitdone 返回值中获取。 */
+        zoom: number
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: SetZoomCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: SetZoomFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: SetZoomSuccessCallback
+    }
+    interface SetZoomSuccessCallbackResult {
+        /** 实际设置的缩放级别。由于系统限制,某些机型可能无法设置成指定值,会改用最接近的可设值。 */
+        zoom: number
+        errMsg: string
+    }
+    interface ShareFileMessageOption {
+        /** 要分享的文件地址,必须为本地路径或临时路径 */
+        filePath: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ShareFileMessageCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: ShareFileMessageFailCallback
+        /** 自定义文件名,若留空则使用filePath中的文件名 */
+        fileName?: string
+        /** 接口调用成功的回调函数 */
+        success?: ShareFileMessageSuccessCallback
+    }
+    interface ShareToWeRunOption {
+        /** 运动数据列表 */
+        recordList: WxaSportRecord[]
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ShareToWeRunCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: ShareToWeRunFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: ShareToWeRunSuccessCallback
+    }
+    interface ShareVideoMessageOption {
+        /** 要分享的视频地址,必须为本地路径或临时路径 */
+        videoPath: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ShareVideoMessageCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: ShareVideoMessageFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: ShareVideoMessageSuccessCallback
+        /** 缩略图路径,若留空则使用视频首帧 */
+        thumbPath?: string
+    }
+    interface ShowActionSheetOption {
+        /** 按钮的文字数组,数组长度最大为 6 */
+        itemList: string[]
+        /** 需要基础库: `2.14.0`
+         *
+         * 警示文案 */
+        alertText?: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ShowActionSheetCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: ShowActionSheetFailCallback
+        /** 按钮的文字颜色 */
+        itemColor?: string
+        /** 接口调用成功的回调函数 */
+        success?: ShowActionSheetSuccessCallback
+    }
+    interface ShowActionSheetSuccessCallbackResult {
+        /** 用户点击的按钮序号,从上到下的顺序,从0开始 */
+        tapIndex: number
+        errMsg: string
+    }
+    interface ShowLoadingOption {
+        /** 提示的内容 */
+        title: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ShowLoadingCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: ShowLoadingFailCallback
+        /** 是否显示透明蒙层,防止触摸穿透 */
+        mask?: boolean
+        /** 接口调用成功的回调函数 */
+        success?: ShowLoadingSuccessCallback
+    }
+    interface ShowModalOption {
+        /** 取消按钮的文字颜色,必须是 16 进制格式的颜色字符串 */
+        cancelColor?: string
+        /** 取消按钮的文字,最多 4 个字符 */
+        cancelText?: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ShowModalCompleteCallback
+        /** 确认按钮的文字颜色,必须是 16 进制格式的颜色字符串 */
+        confirmColor?: string
+        /** 确认按钮的文字,最多 4 个字符 */
+        confirmText?: string
+        /** 提示的内容 */
+        content?: string
+        /** 需要基础库: `2.17.1`
+         *
+         * 是否显示输入框 */
+        editable?: boolean
+        /** 接口调用失败的回调函数 */
+        fail?: ShowModalFailCallback
+        /** 需要基础库: `2.17.1`
+         *
+         * 显示输入框时的提示文本 */
+        placeholderText?: string
+        /** 是否显示取消按钮 */
+        showCancel?: boolean
+        /** 接口调用成功的回调函数 */
+        success?: ShowModalSuccessCallback
+        /** 提示的标题 */
+        title?: string
+    }
+    interface ShowModalSuccessCallbackResult {
+        /** 需要基础库: `1.1.0`
+         *
+         * 为 true 时,表示用户点击了取消(用于 Android 系统区分点击蒙层关闭还是点击取消按钮关闭) */
+        cancel: boolean
+        /** 为 true 时,表示用户点击了确定按钮 */
+        confirm: boolean
+        /** editable 为 true 时,用户输入的文本 */
+        content: string
+        errMsg: string
+    }
+    interface ShowNavigationBarLoadingOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ShowNavigationBarLoadingCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: ShowNavigationBarLoadingFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: ShowNavigationBarLoadingSuccessCallback
+    }
+    interface ShowRedPackageOption {
+        /** 封面地址 */
+        url: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ShowRedPackageCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: ShowRedPackageFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: ShowRedPackageSuccessCallback
+    }
+    interface ShowShareImageMenuOption {
+        /** 要分享的图片地址,必须为本地路径或临时路径 */
+        path: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ShowShareImageMenuCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: ShowShareImageMenuFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: ShowShareImageMenuSuccessCallback
+    }
+    interface ShowShareMenuOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ShowShareMenuCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: ShowShareMenuFailCallback
+        /** 需要基础库: `2.11.3`
+         *
+         * 本接口为 Beta 版本,暂只在 Android 平台支持。需要显示的转发按钮名称列表,默认['shareAppMessage']。按钮名称合法值包含 "shareAppMessage"、"shareTimeline" 两种 */
+        menus?: string[]
+        /** 接口调用成功的回调函数 */
+        success?: ShowShareMenuSuccessCallback
+        /** 是否使用带 shareTicket 的转发[详情](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/share.html) */
+        withShareTicket?: boolean
+    }
+    interface ShowTabBarOption {
+        /** 是否需要动画效果 */
+        animation?: boolean
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ShowTabBarCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: ShowTabBarFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: ShowTabBarSuccessCallback
+    }
+    interface ShowTabBarRedDotOption {
+        /** tabBar 的哪一项,从左边算起 */
+        index: number
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ShowTabBarRedDotCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: ShowTabBarRedDotFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: ShowTabBarRedDotSuccessCallback
+    }
+    interface ShowToastOption {
+        /** 提示的内容 */
+        title: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ShowToastCompleteCallback
+        /** 提示的延迟时间 */
+        duration?: number
+        /** 接口调用失败的回调函数 */
+        fail?: ShowToastFailCallback
+        /** 图标
+         *
+         * 可选值:
+         * - 'success': 显示成功图标,此时 title 文本最多显示 7 个汉字长度;
+         * - 'error': 显示失败图标,此时 title 文本最多显示 7 个汉字长度;
+         * - 'loading': 显示加载图标,此时 title 文本最多显示 7 个汉字长度;
+         * - 'none': 不显示图标,此时 title 文本最多可显示两行,[1.9.0](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)及以上版本支持; */
+        icon?: 'success' | 'error' | 'loading' | 'none'
+        /** 需要基础库: `1.1.0`
+         *
+         * 自定义图标的本地路径,image 的优先级高于 icon */
+        image?: string
+        /** 是否显示透明蒙层,防止触摸穿透 */
+        mask?: boolean
+        /** 接口调用成功的回调函数 */
+        success?: ShowToastSuccessCallback
+    }
+    interface Size {
+        /** 变化后的窗口高度,单位 px */
+        windowHeight: number
+        /** 变化后的窗口宽度,单位 px */
+        windowWidth: number
+    }
+    /** 需要基础库: `2.10.4`
+     *
+     * 网络请求过程中一些调试信息 */
+    interface SocketProfile {
+        /** 完成建立连接的时间(完成握手),如果是持久连接,则与 fetchStart 值相等。注意如果在传输层发生了错误且重新建立连接,则这里显示的是新建立的连接完成的时间。注意这里握手结束,包括安全连接建立完成、SOCKS 授权通过 */
+        connectEnd: number
+        /** 开始建立连接的时间,如果是持久连接,则与 fetchStart 值相等。注意如果在传输层发生了错误且重新建立连接,则这里显示的是新建立的连接开始的时间 */
+        connectStart: number
+        /** 上层请求到返回的耗时 */
+        cost: number
+        /** DNS 域名查询完成的时间,如果使用了本地缓存(即无 DNS 查询)或持久连接,则与 fetchStart 值相等 */
+        domainLookupEnd: number
+        /** DNS 域名查询开始的时间,如果使用了本地缓存(即无 DNS 查询)或持久连接,则与 fetchStart 值相等 */
+        domainLookupStart: number
+        /** 组件准备好使用 SOCKET 建立请求的时间,这发生在检查本地缓存之前 */
+        fetchStart: number
+        /** 握手耗时 */
+        handshakeCost: number
+        /** 单次连接的耗时,包括 connect ,tls */
+        rtt: number
+    }
+    interface SocketTaskCloseOption {
+        /** 一个数字值表示关闭连接的状态号,表示连接被关闭的原因。 */
+        code?: number
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: FileSystemManagerCloseCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: SocketTaskCloseFailCallback
+        /** 一个可读的字符串,表示连接被关闭的原因。这个字符串必须是不长于 123 字节的 UTF-8 文本(不是字符)。 */
+        reason?: string
+        /** 接口调用成功的回调函数 */
+        success?: FileSystemManagerCloseSuccessCallback
+    }
+    interface SocketTaskOnCloseCallbackResult {
+        /** 一个数字值表示关闭连接的状态号,表示连接被关闭的原因。 */
+        code: number
+        /** 一个可读的字符串,表示连接被关闭的原因。 */
+        reason: string
+    }
+    interface SocketTaskOnMessageCallbackResult {
+        /** 服务器返回的消息 */
+        data: string | ArrayBuffer
+    }
+    interface SocketTaskSendOption {
+        /** 需要发送的内容 */
+        data: string | ArrayBuffer
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: SendCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: SendFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: SendSuccessCallback
+    }
+    interface StartAccelerometerOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: StartAccelerometerCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: StartAccelerometerFailCallback
+        /** 需要基础库: `2.1.0`
+         *
+         * 监听加速度数据回调函数的执行频率
+         *
+         * 可选值:
+         * - 'game': 适用于更新游戏的回调频率,在 20ms/次 左右;
+         * - 'ui': 适用于更新 UI 的回调频率,在 60ms/次 左右;
+         * - 'normal': 普通的回调频率,在 200ms/次 左右; */
+        interval?: 'game' | 'ui' | 'normal'
+        /** 接口调用成功的回调函数 */
+        success?: StartAccelerometerSuccessCallback
+    }
+    interface StartAdvertisingObject {
+        /** 广播自定义参数 */
+        advertiseRequest: AdvertiseReqObj
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: StartAdvertisingCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: StartAdvertisingFailCallback
+        /** 广播功率
+         *
+         * 可选值:
+         * - 'low': 功率低;
+         * - 'medium': 功率适中;
+         * - 'high': 功率高; */
+        powerLevel?: 'low' | 'medium' | 'high'
+        /** 接口调用成功的回调函数 */
+        success?: StartAdvertisingSuccessCallback
+    }
+    interface StartBeaconDiscoveryOption {
+        /** Beacon 设备广播的 UUID 列表 */
+        uuids: string[]
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: StartBeaconDiscoveryCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: StartBeaconDiscoveryFailCallback
+        /** 是否校验蓝牙开关,仅在 iOS 下有效。iOS 11 起,控制面板里关掉蓝牙,还是能继续使用 Beacon 服务。 */
+        ignoreBluetoothAvailable?: boolean
+        /** 接口调用成功的回调函数 */
+        success?: StartBeaconDiscoverySuccessCallback
+    }
+    interface StartBluetoothDevicesDiscoveryOption {
+        /** 是否允许重复上报同一设备。如果允许重复上报,则 [wx.onBlueToothDeviceFound](#) 方法会多次上报同一设备,但是 RSSI 值会有不同。 */
+        allowDuplicatesKey?: boolean
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: StartBluetoothDevicesDiscoveryCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: StartBluetoothDevicesDiscoveryFailCallback
+        /** 上报设备的间隔,单位 ms。0 表示找到新设备立即上报,其他数值根据传入的间隔上报。 */
+        interval?: number
+        /** 扫描模式,越高扫描越快,也越耗电。仅安卓微信客户端 7.0.12 及以上支持。
+         *
+         * 可选值:
+         * - 'low': 低;
+         * - 'medium': 中;
+         * - 'high': 高; */
+        powerLevel?: 'low' | 'medium' | 'high'
+        /** 要搜索的蓝牙设备主服务的 UUID 列表(支持 16/32/128 位 UUID)。某些蓝牙设备会广播自己的主 service 的 UUID。如果设置此参数,则只搜索广播包有对应 UUID 的主服务的蓝牙设备。建议通过该参数过滤掉周边不需要处理的其他蓝牙设备。 */
+        services?: string[]
+        /** 接口调用成功的回调函数 */
+        success?: StartBluetoothDevicesDiscoverySuccessCallback
+    }
+    interface StartCompassOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: StartCompassCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: StartCompassFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: StartCompassSuccessCallback
+    }
+    interface StartDeviceMotionListeningOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: StartDeviceMotionListeningCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: StartDeviceMotionListeningFailCallback
+        /** 监听设备方向的变化回调函数的执行频率
+         *
+         * 可选值:
+         * - 'game': 适用于更新游戏的回调频率,在 20ms/次 左右;
+         * - 'ui': 适用于更新 UI 的回调频率,在 60ms/次 左右;
+         * - 'normal': 普通的回调频率,在 200ms/次 左右; */
+        interval?: 'game' | 'ui' | 'normal'
+        /** 接口调用成功的回调函数 */
+        success?: StartDeviceMotionListeningSuccessCallback
+    }
+    interface StartDiscoveryOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: StartDiscoveryCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: StartDiscoveryFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: StartDiscoverySuccessCallback
+    }
+    interface StartGyroscopeOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: StartGyroscopeCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: StartGyroscopeFailCallback
+        /** 监听陀螺仪数据回调函数的执行频率
+         *
+         * 可选值:
+         * - 'game': 适用于更新游戏的回调频率,在 20ms/次 左右;
+         * - 'ui': 适用于更新 UI 的回调频率,在 60ms/次 左右;
+         * - 'normal': 普通的回调频率,在 200ms/次 左右; */
+        interval?: 'game' | 'ui' | 'normal'
+        /** 接口调用成功的回调函数 */
+        success?: StartGyroscopeSuccessCallback
+    }
+    interface StartHCEOption {
+        /** 需要注册到系统的 AID 列表 */
+        aid_list: string[]
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: StartHCECompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: StartHCEFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: StartHCESuccessCallback
+    }
+    interface StartLocalServiceDiscoveryFailCallbackResult {
+        /** 错误信息
+         *
+         * 可选值:
+         * - 'invalid param': serviceType 为空;
+         * - 'scan task already exist': 在当前 startLocalServiceDiscovery 发起的搜索未停止的情况下,再次调用 startLocalServiceDiscovery; */
+        errMsg: string
+    }
+    interface StartLocalServiceDiscoveryOption {
+        /** 要搜索的服务类型 */
+        serviceType: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: StartLocalServiceDiscoveryCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: StartLocalServiceDiscoveryFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: StartLocalServiceDiscoverySuccessCallback
+    }
+    interface StartLocationUpdateBackgroundOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: StartLocationUpdateBackgroundCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: StartLocationUpdateBackgroundFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: StartLocationUpdateBackgroundSuccessCallback
+        /** wgs84 返回 gps 坐标,gcj02 返回可用于 wx.openLocation 的坐标 */
+        type?: string
+    }
+    interface StartLocationUpdateOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: StartLocationUpdateCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: StartLocationUpdateFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: StartLocationUpdateSuccessCallback
+        /** wgs84 返回 gps 坐标,gcj02 返回可用于 wx.openLocation 的坐标 */
+        type?: string
+    }
+    interface StartPreviewOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: StartPreviewCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: StartPreviewFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: StartPreviewSuccessCallback
+    }
+    interface StartPullDownRefreshOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: StartPullDownRefreshCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: StartPullDownRefreshFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: StartPullDownRefreshSuccessCallback
+    }
+    interface StartRecordSuccessCallbackResult {
+        /** 录音文件的临时路径 (本地路径) */
+        tempFilePath: string
+        errMsg: string
+    }
+    interface StartRecordTimeoutCallbackResult {
+        /** 封面图片文件的临时路径 (本地路径) */
+        tempThumbPath: string
+        /** 视频的文件的临时路径 (本地路径) */
+        tempVideoPath: string
+    }
+    interface StartSoterAuthenticationOption {
+        /** 挑战因子。挑战因子为调用者为此次生物鉴权准备的用于签名的字符串关键识别信息,将作为 `resultJSON` 的一部分,供调用者识别本次请求。例如:如果场景为请求用户对某订单进行授权确认,则可以将订单号填入此参数。 */
+        challenge: string
+        /** 请求使用的可接受的生物认证方式
+         *
+         * 可选值:
+         * - 'fingerPrint': 指纹识别;
+         * - 'facial': 人脸识别;
+         * - 'speech': 声纹识别(暂未支持); */
+        requestAuthModes: Array<'fingerPrint' | 'facial' | 'speech'>
+        /** 验证描述,即识别过程中显示在界面上的对话框提示内容 */
+        authContent?: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: StartSoterAuthenticationCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: StartSoterAuthenticationFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: StartSoterAuthenticationSuccessCallback
+    }
+    interface StartSoterAuthenticationSuccessCallbackResult {
+        /** 生物认证方式 */
+        authMode: string
+        /** 错误码 */
+        errCode: number
+        /** 错误信息 */
+        errMsg: string
+        /** 在设备安全区域(TEE)内获得的本机安全信息(如TEE名称版本号等以及防重放参数)以及本次认证信息(仅Android支持,本次认证的指纹ID)。具体说明见下文 */
+        resultJSON: string
+        /** 用SOTER安全密钥对 `resultJSON` 的签名(SHA256 with RSA/PSS, saltlen=20) */
+        resultJSONSignature: string
+    }
+    interface StartWifiOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: StartWifiCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: StartWifiFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: StartWifiSuccessCallback
+    }
+    interface StatFailCallbackResult {
+        /** 错误信息
+         *
+         * 可选值:
+         * - 'fail permission denied, open ${path}': 指定的 path 路径没有读权限;
+         * - 'fail no such file or directory ${path}': 文件不存在;
+         * - 'fail sdcard not mounted': Android sdcard 挂载失败; */
+        errMsg: string
+    }
+    interface StatOption {
+        /** 文件/目录路径 (本地路径) */
+        path: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: StatCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: StatFailCallback
+        /** 需要基础库: `2.3.0`
+         *
+         * 是否递归获取目录下的每个文件的 Stats 信息 */
+        recursive?: boolean
+        /** 接口调用成功的回调函数 */
+        success?: StatSuccessCallback
+    }
+    interface StatSuccessCallbackResult {
+        /** [Stats](https://developers.weixin.qq.com/miniprogram/dev/api/file/Stats.html)|Array.&lt;[Stats](https://developers.weixin.qq.com/miniprogram/dev/api/file/Stats.html)&gt;
+         *
+         * 当 recursive 为 false 时,res.stats 是一个 Stats 对象。当 recursive 为 true 且 path 是一个目录的路径时,res.stats 是一个 Array,数组的每一项是一个对象,每个对象包含 path 和 stats。 */
+        stats: Stats | Stats[]
+        errMsg: string
+    }
+    /** 描述文件状态的对象 */
+    interface Stats {
+        /** 文件最近一次被存取或被执行的时间,UNIX 时间戳,对应 POSIX stat.st_atime */
+        lastAccessedTime: number
+        /** 文件最后一次被修改的时间,UNIX 时间戳,对应 POSIX stat.st_mtime */
+        lastModifiedTime: number
+        /** 文件的类型和存取的权限,对应 POSIX stat.st_mode */
+        mode: string
+        /** 文件大小,单位:B,对应 POSIX stat.st_size */
+        size: number
+    }
+    interface StepOption {
+        /** 动画延迟时间,单位 ms */
+        delay?: number
+        /** 动画持续时间,单位 ms */
+        duration?: number
+        /** 动画的效果
+         *
+         * 可选值:
+         * - 'linear': 动画从头到尾的速度是相同的;
+         * - 'ease': 动画以低速开始,然后加快,在结束前变慢;
+         * - 'ease-in': 动画以低速开始;
+         * - 'ease-in-out': 动画以低速开始和结束;
+         * - 'ease-out': 动画以低速结束;
+         * - 'step-start': 动画第一帧就跳至结束状态直到结束;
+         * - 'step-end': 动画一直保持开始状态,最后一帧跳到结束状态; */
+        timingFunction?:
+            | 'linear'
+            | 'ease'
+            | 'ease-in'
+            | 'ease-in-out'
+            | 'ease-out'
+            | 'step-start'
+            | 'step-end'
+        transformOrigin?: string
+    }
+    interface StopAccelerometerOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: StopAccelerometerCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: StopAccelerometerFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: StopAccelerometerSuccessCallback
+    }
+    interface StopAdvertisingOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: StopAdvertisingCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: StopAdvertisingFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: StopAdvertisingSuccessCallback
+    }
+    interface StopBGMOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: StopBGMCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: StopBGMFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: StopBGMSuccessCallback
+    }
+    interface StopBackgroundAudioOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: StopBackgroundAudioCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: StopBackgroundAudioFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: StopBackgroundAudioSuccessCallback
+    }
+    interface StopBeaconDiscoveryOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: StopBeaconDiscoveryCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: StopBeaconDiscoveryFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: StopBeaconDiscoverySuccessCallback
+    }
+    interface StopBluetoothDevicesDiscoveryOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: StopBluetoothDevicesDiscoveryCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: StopBluetoothDevicesDiscoveryFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: StopBluetoothDevicesDiscoverySuccessCallback
+    }
+    interface StopCompassOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: StopCompassCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: StopCompassFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: StopCompassSuccessCallback
+    }
+    interface StopDeviceMotionListeningOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: StopDeviceMotionListeningCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: StopDeviceMotionListeningFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: StopDeviceMotionListeningSuccessCallback
+    }
+    interface StopDiscoveryOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: StopDiscoveryCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: StopDiscoveryFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: StopDiscoverySuccessCallback
+    }
+    interface StopFaceDetectOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: StopFaceDetectCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: StopFaceDetectFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: StopFaceDetectSuccessCallback
+    }
+    interface StopGyroscopeOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: StopGyroscopeCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: StopGyroscopeFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: StopGyroscopeSuccessCallback
+    }
+    interface StopHCEOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: StopHCECompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: StopHCEFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: StopHCESuccessCallback
+    }
+    interface StopLocalServiceDiscoveryFailCallbackResult {
+        /** 错误信息
+         *
+         * 可选值:
+         * - 'task not found': 在当前没有处在搜索服务中的情况下调用 stopLocalServiceDiscovery; */
+        errMsg: string
+    }
+    interface StopLocalServiceDiscoveryOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: StopLocalServiceDiscoveryCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: StopLocalServiceDiscoveryFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: StopLocalServiceDiscoverySuccessCallback
+    }
+    interface StopLocationUpdateOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: StopLocationUpdateCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: StopLocationUpdateFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: StopLocationUpdateSuccessCallback
+    }
+    interface StopOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: StopCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: StopFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: StopSuccessCallback
+    }
+    interface StopPreviewOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: StopPreviewCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: StopPreviewFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: StopPreviewSuccessCallback
+    }
+    interface StopPullDownRefreshOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: StopPullDownRefreshCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: StopPullDownRefreshFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: StopPullDownRefreshSuccessCallback
+    }
+    interface StopRecordSuccessCallbackResult {
+        /** 封面图片文件的临时路径 (本地路径) */
+        tempThumbPath: string
+        /** 视频的文件的临时路径 (本地路径) */
+        tempVideoPath: string
+        errMsg: string
+    }
+    interface StopVoiceOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: StopVoiceCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: StopVoiceFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: StopVoiceSuccessCallback
+    }
+    interface StopWifiOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: StopWifiCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: StopWifiFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: StopWifiSuccessCallback
+    }
+    interface SubscribeVoIPVideoMembersOption {
+        /** 订阅的成员列表 */
+        openIdList: string[]
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: SubscribeVoIPVideoMembersCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: SubscribeVoIPVideoMembersFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: SubscribeVoIPVideoMembersSuccessCallback
+    }
+    /** 订阅消息设置
+*
+* **示例代码**
+*
+* ```javascript
+wx.getSetting({
+  withSubscriptions: true,
+  success (res) {
+    console.log(res.authSetting)
+    // res.authSetting = {
+    //   "scope.userInfo": true,
+    //   "scope.userLocation": true
+    // }
+    console.log(res.subscriptionsSetting)
+    // res.subscriptionsSetting = {
+    //   mainSwitch: true, // 订阅消息总开关
+    //   itemSettings: {   // 每一项开关
+    //     SYS_MSG_TYPE_INTERACTIVE: 'accept', // 小游戏系统订阅消息
+    //     SYS_MSG_TYPE_RANK: 'accept'
+    //     zun-LzcQyW-edafCVvzPkK4de2Rllr1fFpw2A_x0oXE: 'reject', // 普通一次性订阅消息
+    //     ke_OZC_66gZxALLcsuI7ilCJSP2OJ2vWo2ooUPpkWrw: 'ban',
+    //   }
+    // }
+  }
+})
+``` */
+    interface SubscriptionsSetting {
+        /** 订阅消息总开关,true为开启,false为关闭 */
+        mainSwitch: boolean
+        /** 每一项订阅消息的订阅状态。itemSettings对象的键为**一次性订阅消息的模板id**或**系统订阅消息的类型**,值为'accept'、'reject'、'ban'中的其中一种。'accept'表示用户同意订阅这条消息,'reject'表示用户拒绝订阅这条消息,'ban'表示已被后台封禁。一次性订阅消息使用方法详见 [wx.requestSubscribeMessage](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/subscribe-message/wx.requestSubscribeMessage.html),永久订阅消息(仅小游戏可用)使用方法详见[wx.requestSubscribeSystemMessage](https://developers.weixin.qq.com/minigame/dev/api/open-api/subscribe-message/wx.requestSubscribeSystemMessage.html)
+         * ## 注意事项
+         *  - itemSettings 只返回用户勾选过订阅面板中的“总是保持以上选择,不再询问”的订阅消息。 */
+        itemSettings?: IAnyObject
+    }
+    interface SwitchCameraOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: SwitchCameraCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: SwitchCameraFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: SwitchCameraSuccessCallback
+    }
+    interface SwitchTabOption {
+        /** 需要跳转的 tabBar 页面的路径 (代码包路径)(需在 app.json 的 [tabBar](https://developers.weixin.qq.com/miniprogram/dev/reference/configuration/app.html#tabbar) 字段定义的页面),路径后不能带参数。 */
+        url: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: SwitchTabCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: SwitchTabFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: SwitchTabSuccessCallback
+    }
+    interface SystemInfo {
+        /** 需要基础库: `1.1.0`
+         *
+         * 客户端基础库版本 */
+        SDKVersion: string
+        /** 需要基础库: `2.6.0`
+         *
+         * 允许微信使用相册的开关(仅 iOS 有效) */
+        albumAuthorized: boolean
+        /** 需要基础库: `1.8.0`
+         *
+         * 设备性能等级(仅 Android)。取值为:-2 或 0(该设备无法运行小游戏),-1(性能未知),>=1(设备性能值,该值越高,设备性能越好,目前最高不到50) */
+        benchmarkLevel: number
+        /** 需要基础库: `2.6.0`
+         *
+         * 蓝牙的系统开关 */
+        bluetoothEnabled: boolean
+        /** 需要基础库: `1.5.0`
+         *
+         * 设备品牌 */
+        brand: string
+        /** 需要基础库: `2.6.0`
+         *
+         * 允许微信使用摄像头的开关 */
+        cameraAuthorized: boolean
+        /** 设备方向
+         *
+         * 可选值:
+         * - 'portrait': 竖屏;
+         * - 'landscape': 横屏; */
+        deviceOrientation: 'portrait' | 'landscape'
+        /** 需要基础库: `2.15.0`
+         *
+         * 是否已打开调试。可通过右上角菜单或 [wx.setEnableDebug](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/wx.setEnableDebug.html) 打开调试。 */
+        enableDebug: boolean
+        /** 需要基础库: `1.5.0`
+         *
+         * 用户字体大小(单位px)。以微信客户端「我-设置-通用-字体大小」中的设置为准 */
+        fontSizeSetting: number
+        /** 需要基础库: `2.12.3`
+         *
+         * 当前小程序运行的宿主环境 */
+        host: Host
+        /** 微信设置的语言 */
+        language: string
+        /** 需要基础库: `2.6.0`
+         *
+         * 允许微信使用定位的开关 */
+        locationAuthorized: boolean
+        /** 需要基础库: `2.6.0`
+         *
+         * 地理位置的系统开关 */
+        locationEnabled: boolean
+        /** `true` 表示模糊定位,`false` 表示精确定位,仅 iOS 支持 */
+        locationReducedAccuracy: boolean
+        /** 需要基础库: `2.6.0`
+         *
+         * 允许微信使用麦克风的开关 */
+        microphoneAuthorized: boolean
+        /** 设备型号。新机型刚推出一段时间会显示unknown,微信会尽快进行适配。 */
+        model: string
+        /** 需要基础库: `2.6.0`
+         *
+         * 允许微信通知带有提醒的开关(仅 iOS 有效) */
+        notificationAlertAuthorized: boolean
+        /** 需要基础库: `2.6.0`
+         *
+         * 允许微信通知的开关 */
+        notificationAuthorized: boolean
+        /** 需要基础库: `2.6.0`
+         *
+         * 允许微信通知带有标记的开关(仅 iOS 有效) */
+        notificationBadgeAuthorized: boolean
+        /** 需要基础库: `2.6.0`
+         *
+         * 允许微信通知带有声音的开关(仅 iOS 有效) */
+        notificationSoundAuthorized: boolean
+        /** 需要基础库: `2.19.3`
+         *
+         * 允许微信使用日历的开关 */
+        phoneCalendarAuthorized: boolean
+        /** 设备像素比 */
+        pixelRatio: number
+        /** 客户端平台 */
+        platform: string
+        /** 需要基础库: `2.7.0`
+         *
+         * 在竖屏正方向下的安全区域 */
+        safeArea: SafeArea
+        /** 需要基础库: `1.1.0`
+         *
+         * 屏幕高度,单位px */
+        screenHeight: number
+        /** 需要基础库: `1.1.0`
+         *
+         * 屏幕宽度,单位px */
+        screenWidth: number
+        /** 需要基础库: `1.9.0`
+         *
+         * 状态栏的高度,单位px */
+        statusBarHeight: number
+        /** 操作系统及版本 */
+        system: string
+        /** 微信版本号 */
+        version: string
+        /** 需要基础库: `2.6.0`
+         *
+         * Wi-Fi 的系统开关 */
+        wifiEnabled: boolean
+        /** 可使用窗口高度,单位px */
+        windowHeight: number
+        /** 可使用窗口宽度,单位px */
+        windowWidth: number
+        /** 需要基础库: `2.11.0`
+         *
+         * 系统当前主题,取值为`light`或`dark`,全局配置`"darkmode":true`时才能获取,否则为 undefined (不支持小游戏)
+         *
+         * 可选值:
+         * - 'dark': 深色主题;
+         * - 'light': 浅色主题; */
+        theme?: 'dark' | 'light'
+    }
+    interface SystemSetting {
+        /** 蓝牙的系统开关 */
+        bluetoothEnabled: boolean
+        /** 设备方向
+         *
+         * 可选值:
+         * - 'portrait': 竖屏;
+         * - 'landscape': 横屏; */
+        deviceOrientation: 'portrait' | 'landscape'
+        /** 地理位置的系统开关 */
+        locationEnabled: boolean
+        /** Wi-Fi 的系统开关 */
+        wifiEnabled: boolean
+    }
+    interface TCPSocketConnectOption {
+        /** 套接字要连接的地址 */
+        address: string
+        /** 套接字要连接的端口 */
+        port: number
+    }
+    interface TCPSocketOnMessageCallbackResult {
+        /** 接收端地址信息 */
+        localInfo: LocalInfo
+        /** 收到的消息 */
+        message: ArrayBuffer
+        /** 发送端地址信息 */
+        remoteInfo: RemoteInfo
+    }
+    interface TakePhotoOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: TakePhotoCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: TakePhotoFailCallback
+        /** 成像质量
+         *
+         * 可选值:
+         * - 'high': 高质量;
+         * - 'normal': 普通质量;
+         * - 'low': 低质量; */
+        quality?: 'high' | 'normal' | 'low'
+        /** 接口调用成功的回调函数 */
+        success?: TakePhotoSuccessCallback
+    }
+    interface TakePhotoSuccessCallbackResult {
+        /** 照片文件的临时路径 (本地路径),安卓是jpg图片格式,ios是png */
+        tempImagePath: string
+        errMsg: string
+    }
+    /** 标签类型枚举 */
+    interface TechType {
+        /** 对应IsoDep实例,实例支持ISO-DEP (ISO 14443-4)标准的读写 */
+        isoDep: string
+        /** 对应MifareClassic实例,实例支持MIFARE Classic标签的读写 */
+        mifareClassic: string
+        /** 对应MifareUltralight实例,实例支持MIFARE Ultralight标签的读写 */
+        mifareUltralight: string
+        /** 对应Ndef实例,实例支持对NDEF格式的NFC标签上的NDEF数据的读写 */
+        ndef: string
+        /** 对应NfcA实例,实例支持NFC-A (ISO 14443-3A)标准的读写 */
+        nfcA: string
+        /** 对应NfcB实例,实例支持NFC-B (ISO 14443-3B)标准的读写 */
+        nfcB: string
+        /** 对应NfcF实例,实例支持NFC-F (JIS 6319-4)标准的读写 */
+        nfcF: string
+        /** 对应NfcV实例,实例支持NFC-V (ISO 15693)标准的读写 */
+        nfcV: string
+    }
+    interface TextMetrics {
+        /** 文本的宽度 */
+        width: number
+    }
+    interface ToScreenLocationOption {
+        /** 纬度 */
+        latitude: number
+        /** 经度 */
+        longitude: number
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ToScreenLocationCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: ToScreenLocationFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: ToScreenLocationSuccessCallback
+    }
+    interface ToScreenLocationSuccessCallbackResult {
+        /** x 坐标值 */
+        x: number
+        /** y 坐标值 */
+        y: number
+        errMsg: string
+    }
+    interface ToggleTorchOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: ToggleTorchCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: ToggleTorchFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: ToggleTorchSuccessCallback
+    }
+    /** 跟踪配置 */
+    interface Track {
+        /** 平面跟踪配置 */
+        plane: PlaneTrack
+    }
+    interface TransceiveOption {
+        /** 需要传递的二进制数据 */
+        data: ArrayBuffer
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: TransceiveCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: TransceiveFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: TransceiveSuccessCallback
+    }
+    interface TransceiveSuccessCallbackResult {
+        data: ArrayBuffer
+        errMsg: string
+    }
+    interface TranslateMarkerOption {
+        /** 移动过程中是否自动旋转 marker */
+        autoRotate: boolean
+        /** 指定 marker 移动到的目标点 */
+        destination: DestinationOption
+        /** 指定 marker */
+        markerId: number
+        /** marker 的旋转角度 */
+        rotate: number
+        /** 动画结束回调函数 */
+        animationEnd?: (...args: any[]) => any
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: TranslateMarkerCompleteCallback
+        /** 动画持续时长,平移与旋转分别计算 */
+        duration?: number
+        /** 接口调用失败的回调函数 */
+        fail?: TranslateMarkerFailCallback
+        /** 需要基础库: `2.13.0`
+         *
+         * 平移和旋转同时进行 */
+        moveWithRotate?: boolean
+        /** 接口调用成功的回调函数 */
+        success?: TranslateMarkerSuccessCallback
+    }
+    interface TruncateFailCallbackResult {
+        /** 错误信息
+         *
+         * 可选值:
+         * - 'fail no such file or directory, open ${filePath}': 指定的 filePath 所在目录不存在;
+         * - 'fail illegal operation on a directory, open "${filePath}"': 指定的 filePath 是一个已经存在的目录;
+         * - 'fail permission denied, open ${dirPath}': 指定的 filePath 路径没有写权限;
+         * - 'fail the maximum size of the file storage limit is exceeded': 存储空间不足;
+         * - 'fail sdcard not mounted': android sdcard 挂载失败; */
+        errMsg: string
+    }
+    interface TruncateOption {
+        /** 要截断的文件路径 (本地路径) */
+        filePath: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: TruncateCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: TruncateFailCallback
+        /** 截断位置,默认0。如果 length 小于文件长度(字节),则只有前面 length 个字节会保留在文件中,其余内容会被删除;如果 length 大于文件长度,则会对其进行扩展,并且扩展部分将填充空字节('\0') */
+        length?: number
+        /** 接口调用成功的回调函数 */
+        success?: TruncateSuccessCallback
+    }
+    interface TruncateSyncOption {
+        /** 要截断的文件路径 (本地路径) */
+        filePath: string
+        /** 截断位置,默认0。如果 length 小于文件长度(字节),则只有前面 length 个字节会保留在文件中,其余内容会被删除;如果 length 大于文件长度,则会对其进行扩展,并且扩展部分将填充空字节('\0') */
+        length?: number
+    }
+    interface UDPSocketConnectOption {
+        /** 要发消息的地址 */
+        address: string
+        /** 要发送消息的端口号 */
+        port: number
+    }
+    interface UDPSocketOnMessageCallbackResult {
+        /** 接收端地址信息,2.18.0 起支持 */
+        localInfo: LocalInfo
+        /** 收到的消息 */
+        message: ArrayBuffer
+        /** 发送端地址信息 */
+        remoteInfo: RemoteInfo
+    }
+    interface UDPSocketSendOption {
+        /** 要发消息的地址。在基础库 <= 2.9.3 版本必须是和本机同网段的 IP 地址,或安全域名列表内的域名地址;之后版本可以是任意 IP 和域名 */
+        address: string
+        /** 要发送的数据 */
+        message: string | ArrayBuffer
+        /** 要发送消息的端口号 */
+        port: number
+        /** 发送数据的长度,仅当 message 为 ArrayBuffer 类型时有效 */
+        length?: number
+        /** 发送数据的偏移量,仅当 message 为 ArrayBuffer 类型时有效 */
+        offset?: number
+    }
+    interface UndoOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: UndoCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: UndoFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: UndoSuccessCallback
+    }
+    interface UnlinkFailCallbackResult {
+        /** 错误信息
+         *
+         * 可选值:
+         * - 'fail permission denied, open ${path}': 指定的 path 路径没有读权限;
+         * - 'fail no such file or directory ${path}': 文件不存在;
+         * - 'fail operation not permitted, unlink ${filePath}': 传入的 filePath 是一个目录;
+         * - 'fail sdcard not mounted': Android sdcard 挂载失败; */
+        errMsg: string
+    }
+    interface UnlinkOption {
+        /** 要删除的文件路径 (本地路径) */
+        filePath: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: UnlinkCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: UnlinkFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: UnlinkSuccessCallback
+    }
+    interface UnzipFailCallbackResult {
+        /** 错误信息
+         *
+         * 可选值:
+         * - 'fail permission denied, unzip ${zipFilePath} -> ${destPath}': 指定目标文件路径没有写权限;
+         * - 'fail no such file or directory, unzip ${zipFilePath} -> "${destPath}': 源文件不存在,或目标文件路径的上层目录不存在; */
+        errMsg: string
+    }
+    interface UnzipOption {
+        /** 目标目录路径, 支持本地路径 */
+        targetPath: string
+        /** 源文件路径,支持本地路径, 只可以是 zip 压缩文件 */
+        zipFilePath: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: UnzipCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: UnzipFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: UnzipSuccessCallback
+    }
+    /** 参数列表 */
+    interface UpdatableMessageFrontEndParameter {
+        /** 参数名 */
+        name: string
+        /** 参数值 */
+        value: string
+    }
+    /** 需要基础库: `2.4.0`
+     *
+     * 动态消息的模板信息 */
+    interface UpdatableMessageFrontEndTemplateInfo {
+        /** 参数列表 */
+        parameterList: UpdatableMessageFrontEndParameter[]
+    }
+    interface UpdateGroundOverlayOption {
+        /** 图片覆盖的经纬度范围 */
+        bounds: MapBounds
+        /** 图片图层 id */
+        id: string
+        /** 图片路径,支持网络图片、临时路径、代码包路径 */
+        src: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: UpdateGroundOverlayCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: UpdateGroundOverlayFailCallback
+        /** 图层透明度 */
+        opacity?: number
+        /** 接口调用成功的回调函数 */
+        success?: UpdateGroundOverlaySuccessCallback
+        /** 是否可见 */
+        visible?: boolean
+        /** 图层绘制顺序 */
+        zIndex?: number
+    }
+    interface UpdateShareMenuOption {
+        /** 需要基础库: `2.4.0`
+         *
+         * 动态消息的 activityId。通过 [updatableMessage.createActivityId](https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/updatable-message/updatableMessage.createActivityId.html) 接口获取 */
+        activityId?: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: UpdateShareMenuCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: UpdateShareMenuFailCallback
+        /** 需要基础库: `2.13.0`
+         *
+         * 是否是私密消息。详见 [小程序私密消息](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/share/private-message.html) */
+        isPrivateMessage?: boolean
+        /** 需要基础库: `2.4.0`
+         *
+         * 是否是动态消息,详见[动态消息](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/share/updatable-message.html) */
+        isUpdatableMessage?: boolean
+        /** 接口调用成功的回调函数 */
+        success?: UpdateShareMenuSuccessCallback
+        /** 需要基础库: `2.4.0`
+         *
+         * 动态消息的模板信息 */
+        templateInfo?: UpdatableMessageFrontEndTemplateInfo
+        /** 需要基础库: `2.11.0`
+         *
+         * 群待办消息的id,通过toDoActivityId可以把多个群待办消息聚合为同一个。通过 [updatableMessage.createActivityId](https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/updatable-message/updatableMessage.createActivityId.html) 接口获取。详见[群待办消息](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/share.html) */
+        toDoActivityId?: string
+        /** 是否使用带 shareTicket 的转发[详情](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/share.html) */
+        withShareTicket?: boolean
+    }
+    interface UpdateVoIPChatMuteConfigOption {
+        /** 静音设置 */
+        muteConfig: MuteConfig
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: UpdateVoIPChatMuteConfigCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: UpdateVoIPChatMuteConfigFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: UpdateVoIPChatMuteConfigSuccessCallback
+    }
+    interface UpdateWeChatAppOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: UpdateWeChatAppCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: UpdateWeChatAppFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: UpdateWeChatAppSuccessCallback
+    }
+    interface UploadFileOption {
+        /** 要上传文件资源的路径 (本地路径) */
+        filePath: string
+        /** 文件对应的 key,开发者在服务端可以通过这个 key 获取文件的二进制内容 */
+        name: string
+        /** 开发者服务器地址 */
+        url: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: UploadFileCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: UploadFileFailCallback
+        /** HTTP 请求中其他额外的 form data */
+        formData?: IAnyObject
+        /** HTTP 请求 Header,Header 中不能设置 Referer */
+        header?: IAnyObject
+        /** 接口调用成功的回调函数 */
+        success?: UploadFileSuccessCallback
+        /** 需要基础库: `2.10.0`
+         *
+         * 超时时间,单位为毫秒 */
+        timeout?: number
+    }
+    interface UploadFileSuccessCallbackResult {
+        /** 开发者服务器返回的数据 */
+        data: string
+        /** 开发者服务器返回的 HTTP 状态码 */
+        statusCode: number
+        errMsg: string
+    }
+    interface UploadTaskOnProgressUpdateCallbackResult {
+        /** 上传进度百分比 */
+        progress: number
+        /** 预期需要上传的数据总长度,单位 Bytes */
+        totalBytesExpectedToSend: number
+        /** 已经上传的数据长度,单位 Bytes */
+        totalBytesSent: number
+    }
+    /** 用户信息 */
+    interface UserInfo {
+        /** 用户头像图片的 URL。URL 最后一个数值代表正方形头像大小(有 0、46、64、96、132 数值可选,0 代表 640x640 的正方形头像,46 表示 46x46 的正方形头像,剩余数值以此类推。默认132),用户没有头像时该项为空。若用户更换头像,原有头像 URL 将失效。 */
+        avatarUrl: string
+        /** 用户所在城市。不再返回,参考 [相关公告](https://developers.weixin.qq.com/community/develop/doc/00028edbe3c58081e7cc834705b801) */
+        city: string
+        /** 用户所在国家。不再返回,参考 [相关公告](https://developers.weixin.qq.com/community/develop/doc/00028edbe3c58081e7cc834705b801) */
+        country: string
+        /** 用户性别。不再返回,参考 [相关公告](https://developers.weixin.qq.com/community/develop/doc/00028edbe3c58081e7cc834705b801)
+         *
+         * 可选值:
+         * - 0: 未知;
+         * - 1: 男性;
+         * - 2: 女性; */
+        gender: 0 | 1 | 2
+        /** 显示 country,province,city 所用的语言。强制返回 “zh_CN”,参考 [相关公告](https://developers.weixin.qq.com/community/develop/doc/00028edbe3c58081e7cc834705b801)
+         *
+         * 可选值:
+         * - 'en': 英文;
+         * - 'zh_CN': 简体中文;
+         * - 'zh_TW': 繁体中文; */
+        language: 'en' | 'zh_CN' | 'zh_TW'
+        /** 用户昵称 */
+        nickName: string
+        /** 用户所在省份。不再返回,参考 [相关公告](https://developers.weixin.qq.com/community/develop/doc/00028edbe3c58081e7cc834705b801) */
+        province: string
+    }
+    /** 需要基础库: `2.20.0`
+     *
+     * 相机对象 */
+    interface VKCamera {
+        /** 视图矩阵 */
+        viewMatrix: Float32Array
+    }
+    interface VKConfig {
+        /** 跟踪配置 */
+        track: Track
+    }
+    /** 需要基础库: `2.20.0`
+     *
+     * vision kit 会话对象。 */
+    interface VKFrame {
+        /** [VKCamera](https://developers.weixin.qq.com/miniprogram/dev/api/ai/visionkit/VKCamera.html)
+         *
+         * 相机对象 */
+        camera: VKCamera
+        /** 生成时间 */
+        timestamp: number
+    }
+    /** 相机尺寸 */
+    interface VKFrameSize {
+        /** 高度 */
+        height: number
+        /** 宽度 */
+        width: number
+    }
+    /** 需要基础库: `2.20.0`
+     *
+     * vision kit 会话对象。 */
+    interface VKSession {
+        /** 相机尺寸 */
+        cameraSize: VKFrameSize
+        /** 会话配置 */
+        config: VKConfig
+        /** 会话状态
+         *
+         * 可选值:
+         * - 0: 不可用;
+         * - 1: 运行中;
+         * - 2: 暂停中; */
+        state: 0 | 1 | 2
+    }
+    interface VibrateLongOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: VibrateLongCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: VibrateLongFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: VibrateLongSuccessCallback
+    }
+    interface VibrateShortOption {
+        /** 需要基础库: `2.13.0`
+         *
+         * 震动强度类型,有效值为:heavy、medium、light */
+        type: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: VibrateShortCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: VibrateShortFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: VibrateShortSuccessCallback
+    }
+    interface VideoContextRequestFullScreenOption {
+        /** 需要基础库: `1.7.0`
+         *
+         * 设置全屏时视频的方向,不指定则根据宽高比自动判断。
+         *
+         * 可选值:
+         * - 0: 正常竖向;
+         * - 90: 屏幕逆时针90度;
+         * - -90: 屏幕顺时针90度; */
+        direction?: 0 | 90 | -90
+    }
+    interface VideoDecoderStartOption {
+        /** 需要解码的视频源文件。基础库 2.13.0 以下的版本只支持本地路径。 2.13.0 开始支持 http:// 和 https:// 协议的远程路径。 */
+        source: string
+        /** 需要基础库: `2.15.0`
+         *
+         * 是否不需要音频轨道 */
+        abortAudio?: boolean
+        /** 需要基础库: `2.15.0`
+         *
+         * 是否不需要视频轨道 */
+        abortVideo?: boolean
+        /** 解码模式。0:按 pts 解码;1:以最快速度解码 */
+        mode?: number
+    }
+    /** 需要基础库: `2.19.0`
+*
+* WebAudioContext 实例,通过[wx.createWebAudioContext](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/wx.createWebAudioContext.html) 接口获取该实例。
+*
+* **示例代码**
+*
+* ```js
+// 监听状态
+const audioCtx = wx.createWebAudioContext()
+audioCtx.onstatechange = () => {
+  console.log(ctx.state)
+}
+setTimeout(audioCtx.suspend, 1000)
+setTimeout(audioCtx.resume, 2000)
+``` */
+    interface WebAudioContext {
+        /** 获取当前上下文的时间戳。 */
+        currentTime: number
+        /** [WebAudioContextNode](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/WebAudioContextNode.html)
+         *
+         * 当前上下文的最终目标节点,一般是音频渲染设备。 */
+        destination: WebAudioContextNode
+        /** 空间音频监听器。 */
+        listener: AudioListener
+        /** 可写属性,开发者可以对该属性设置一个监听函数,当WebAudio状态改变的时候,会触发开发者设置的监听函数。 */
+        onstatechange: (...args: any[]) => any
+        /** 采样率,通常在8000-96000之间,通常44100hz的采样率最为常见。 */
+        sampleRate: number
+        /** 当前WebAudio上下文的状态。可能的值如下:suspended(暂停)、running(正在运行)、closed(已关闭)。需要注意的是,不要在 audioContext close后再访问state属性 */
+        state: string
+    }
+    /** 需要基础库: `2.19.0`
+     *
+     * 一类音频处理模块,不同的Node具备不同的功能,如GainNode(音量调整)等。一个WebAudioContextNode可以通过上下文来创建。
+     * 目前已经支持以下Node:
+     * IIRFilterNode
+     * WaveShaperNode
+     * ConstantSourceNode
+     * ChannelMergerNode
+     * OscillatorNode
+     * GainNode
+     * BiquadFilterNode
+     * PeriodicWaveNode
+     * BufferSourceNode
+     * ChannelSplitterNode
+     * ChannelMergerNode
+     * DelayNode
+     * DynamicsCompressorNode
+     * ScriptProcessorNode
+     * PannerNode */
+    interface WebAudioContextNode {
+        /** 表示监听器的前向系统在同一笛卡尔坐标系中的水平位置,作为位置(位置x,位置和位置和位置)值。 */
+        forwardX: number
+        /** 表示听众的前向方向在同一笛卡尔坐标系中作为位置(位置x,位置和位置和位置)值的垂直位置。 */
+        forwardY: number
+        /** 表示与position (positionX、positionY和positionZ)值在同一笛卡尔坐标系下的听者前进方向的纵向(前后)位置。 */
+        forwardZ: number
+        /** 右手笛卡尔坐标系中X轴的位置。 */
+        positionX: number
+        /** 右手笛卡尔坐标系中Y轴的位置。 */
+        positionY: number
+        /** 右手笛卡尔坐标系中Z轴的位置。 */
+        positionZ: number
+        /** 设置监听器的方向 */
+        setOrientation: (...args: any[]) => any
+        /** 设置监听器的位置
+         *
+         * /** */
+        setPosition: (...args: any[]) => any
+        /** 表示在与position (positionX、positionY和positionZ)值相同的笛卡尔坐标系中侦听器向前方向的水平位置。 */
+        upX: number
+        /** 表示在与position (positionX、positionY和positionZ)值相同的笛卡尔坐标系中侦听器向上方向的水平位置。 */
+        upY: number
+        /** 表示在与position (positionX、positionY和positionZ)值相同的笛卡尔坐标系中侦听器向后方向的水平位置。 */
+        upZ: number
+    }
+    /** 提供预设的 Wi-Fi 信息列表 */
+    interface WifiData {
+        /** Wi-Fi 的 BSSID */
+        BSSID?: string
+        /** Wi-Fi 的 SSID */
+        SSID?: string
+        /** Wi-Fi 设备密码 */
+        password?: string
+    }
+    /** Wifi 信息 */
+    interface WifiInfo {
+        /** Wi-Fi 的 BSSID */
+        BSSID: string
+        /** Wi-Fi 的 SSID */
+        SSID: string
+        /** 需要基础库: `2.12.0`
+         *
+         * Wi-Fi 频段单位 MHz */
+        frequency: number
+        /** Wi-Fi 是否安全 */
+        secure: boolean
+        /** Wi-Fi 信号强度, 安卓取值 0 ~ 100 ,iOS 取值 0 ~ 1 ,值越大强度越大 */
+        signalStrength: number
+    }
+    interface WindowInfo {
+        /** 设备像素比 */
+        pixelRatio: number
+        /** 在竖屏正方向下的安全区域 */
+        safeArea: SafeArea
+        /** 屏幕高度,单位px */
+        screenHeight: number
+        /** 窗口上边缘的y值 */
+        screenTop: number
+        /** 屏幕宽度,单位px */
+        screenWidth: number
+        /** 状态栏的高度,单位px */
+        statusBarHeight: number
+        /** 可使用窗口高度,单位px */
+        windowHeight: number
+        /** 可使用窗口宽度,单位px */
+        windowWidth: number
+    }
+    /** Worker 实例,主线程中可通过 [wx.createWorker](https://developers.weixin.qq.com/miniprogram/dev/api/worker/wx.createWorker.html) 接口获取,worker 线程中可通过全局变量 `worker` 获取。
+*
+* **示例代码**
+*
+* 运行以下代码需先进行基础配置,详细请查阅 [小程序多线程](https://developers.weixin.qq.com/miniprogram/dev/framework/workers.html) | [小游戏多线程](https://developers.weixin.qq.com/minigame/dev/guide/base-ability/worker.html) 文档了解基础知识和配置方法。
+*
+* ```js
+const worker = wx.createWorker('workers/request/index.js') // 文件名指定 worker 的入口文件路径,绝对路径
+
+worker.onMessage(function (res) {
+  console.log(res)
+})
+// 监听worker被系统回收事件
+worker.onProcessKilled(function () {
+  console.log('worker has been killed')
+  // 重新创建一个worker
+  // wx.createWorker()
+})
+
+worker.postMessage({
+  msg: 'hello worker'
+})
+
+worker.terminate()
+``` */
+    interface Worker {
+        /** worker内的环境变量 */
+        env: WorkerEnv
+    }
+    /** worker内的环境变量 */
+    interface WorkerEnv {
+        /** 文件系统中的用户目录路径 (本地路径) */
+        USER_DATA_PATH: string
+    }
+    interface WorkerOnMessageCallbackResult {
+        /** 主线程/Worker 线程向当前线程发送的消息 */
+        message: IAnyObject
+    }
+    interface WriteBLECharacteristicValueOption {
+        /** 蓝牙特征的 UUID */
+        characteristicId: string
+        /** 蓝牙设备 id */
+        deviceId: string
+        /** 蓝牙特征对应服务的 UUID */
+        serviceId: string
+        /** 蓝牙设备特征对应的二进制值 */
+        value: ArrayBuffer
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: WriteBLECharacteristicValueCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: WriteBLECharacteristicValueFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: WriteBLECharacteristicValueSuccessCallback
+    }
+    interface WriteCharacteristicValueObject {
+        /** 蓝牙特征的 UUID */
+        characteristicId: string
+        /** 是否需要通知主机 value 已更新 */
+        needNotify: boolean
+        /** 蓝牙特征对应服务的 UUID */
+        serviceId: string
+        /** characteristic 对应的二进制值 */
+        value: ArrayBuffer
+        /** 可选,处理回包时使用 */
+        callbackId?: number
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: WriteCharacteristicValueCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: WriteCharacteristicValueFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: WriteCharacteristicValueSuccessCallback
+    }
+    interface WriteFailCallbackResult {
+        /** 错误信息
+         *
+         * 可选值:
+         * - 'bad file descriptor': 无效的文件描述符;
+         * - 'fail permission denied': 指定的 fd 路径没有写权限;
+         * - 'fail sdcard not mounted': android sdcard 挂载失败; */
+        errMsg: string
+    }
+    interface WriteFileFailCallbackResult {
+        /** 错误信息
+         *
+         * 可选值:
+         * - 'fail no such file or directory, open ${filePath}': 指定的 filePath 所在目录不存在;
+         * - 'fail permission denied, open ${dirPath}': 指定的 filePath 路径没有写权限;
+         * - 'fail the maximum size of the file storage limit is exceeded': 存储空间不足;
+         * - 'fail sdcard not mounted': Android sdcard 挂载失败; */
+        errMsg: string
+    }
+    interface WriteFileOption {
+        /** 要写入的文本或二进制数据 */
+        data: string | ArrayBuffer
+        /** 要写入的文件路径 (本地路径) */
+        filePath: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: WriteFileCompleteCallback
+        /** 指定写入文件的字符编码
+         *
+         * 可选值:
+         * - 'ascii': ;
+         * - 'base64': ;
+         * - 'binary': ;
+         * - 'hex': ;
+         * - 'ucs2': 以小端序读取;
+         * - 'ucs-2': 以小端序读取;
+         * - 'utf16le': 以小端序读取;
+         * - 'utf-16le': 以小端序读取;
+         * - 'utf-8': ;
+         * - 'utf8': ;
+         * - 'latin1': ; */
+        encoding?:
+            | 'ascii'
+            | 'base64'
+            | 'binary'
+            | 'hex'
+            | 'ucs2'
+            | 'ucs-2'
+            | 'utf16le'
+            | 'utf-16le'
+            | 'utf-8'
+            | 'utf8'
+            | 'latin1'
+        /** 接口调用失败的回调函数 */
+        fail?: WriteFileFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: WriteFileSuccessCallback
+    }
+    interface WriteNdefMessageOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: WriteNdefMessageCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: WriteNdefMessageFailCallback
+        /** 二进制对象数组, 需要指明 id, type 以及 payload (均为 ArrayBuffer 类型) */
+        records?: any[]
+        /** 接口调用成功的回调函数 */
+        success?: WriteNdefMessageSuccessCallback
+        /** text 数组 */
+        texts?: any[]
+        /** uri 数组 */
+        uris?: any[]
+    }
+    interface WriteOption {
+        /** 写入的内容,类型为 String 或 ArrayBuffer */
+        data: string | ArrayBuffer
+        /** 文件描述符。fd 通过 [FileSystemManager.open](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.open.html) 或 [FileSystemManager.openSync](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.openSync.html) 接口获得 */
+        fd: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: WriteCompleteCallback
+        /** 只在 data 类型是 String 时有效,指定写入文件的字符编码,默认为 utf8
+         *
+         * 可选值:
+         * - 'ascii': ;
+         * - 'base64': ;
+         * - 'binary': ;
+         * - 'hex': ;
+         * - 'ucs2': 以小端序读取;
+         * - 'ucs-2': 以小端序读取;
+         * - 'utf16le': 以小端序读取;
+         * - 'utf-16le': 以小端序读取;
+         * - 'utf-8': ;
+         * - 'utf8': ;
+         * - 'latin1': ; */
+        encoding?:
+            | 'ascii'
+            | 'base64'
+            | 'binary'
+            | 'hex'
+            | 'ucs2'
+            | 'ucs-2'
+            | 'utf16le'
+            | 'utf-16le'
+            | 'utf-8'
+            | 'utf8'
+            | 'latin1'
+        /** 接口调用失败的回调函数 */
+        fail?: WriteFailCallback
+        /** 只在 data 类型是 ArrayBuffer 时有效,指定要写入的字节数,默认为 arrayBuffer 从0开始偏移 offset 个字节后剩余的字节数 */
+        length?: number
+        /** 只在 data 类型是 ArrayBuffer 时有效,决定 arrayBuffe 中要被写入的部位,即 arrayBuffer 中的索引,默认0 */
+        offset?: number
+        /** 指定文件开头的偏移量,即数据要被写入的位置。当 position 不传或者传入非 Number 类型的值时,数据会被写入当前指针所在位置。 */
+        position?: number
+        /** 接口调用成功的回调函数 */
+        success?: WriteSuccessCallback
+    }
+    /** 文件写入结果。 通过 [FileSystemManager.writeSync](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.writeSync.html) 接口返回 */
+    interface WriteResult {
+        /** 实际被写入到文件中的字节数(注意,被写入的字节数不一定与被写入的字符串字符数相同) */
+        bytesWritten: number
+    }
+    interface WriteSuccessCallbackResult {
+        /** 实际被写入到文件中的字节数(注意,被写入的字节数不一定与被写入的字符串字符数相同) */
+        bytesWritten: number
+        errMsg: string
+    }
+    interface WriteSyncOption {
+        /** 写入的内容,类型为 String 或 ArrayBuffer */
+        data: string | ArrayBuffer
+        /** 文件描述符。fd 通过 [FileSystemManager.open](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.open.html) 或 [FileSystemManager.openSync](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.openSync.html) 接口获得 */
+        fd: string
+        /** 只在 data 类型是 String 时有效,指定写入文件的字符编码,默认为 utf8
+         *
+         * 可选值:
+         * - 'ascii': ;
+         * - 'base64': ;
+         * - 'binary': ;
+         * - 'hex': ;
+         * - 'ucs2': 以小端序读取;
+         * - 'ucs-2': 以小端序读取;
+         * - 'utf16le': 以小端序读取;
+         * - 'utf-16le': 以小端序读取;
+         * - 'utf-8': ;
+         * - 'utf8': ;
+         * - 'latin1': ; */
+        encoding?:
+            | 'ascii'
+            | 'base64'
+            | 'binary'
+            | 'hex'
+            | 'ucs2'
+            | 'ucs-2'
+            | 'utf16le'
+            | 'utf-16le'
+            | 'utf-8'
+            | 'utf8'
+            | 'latin1'
+        /** 只在 data 类型是 ArrayBuffer 时有效,指定要写入的字节数,默认为 arrayBuffer 从0开始偏移 offset 个字节后剩余的字节数 */
+        length?: number
+        /** 只在 data 类型是 ArrayBuffer 时有效,决定 arrayBuffe 中要被写入的部位,即 arrayBuffer 中的索引,默认0 */
+        offset?: number
+        /** 指定文件开头的偏移量,即数据要被写入的位置。当 position 不传或者传入非 Number 类型的值时,数据会被写入当前指针所在位置。 */
+        position?: number
+    }
+    interface WxGetFileInfoOption {
+        /** 本地文件路径 (本地路径) */
+        filePath: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetFileInfoCompleteCallback
+        /** 计算文件摘要的算法
+         *
+         * 可选值:
+         * - 'md5': md5 算法;
+         * - 'sha1': sha1 算法; */
+        digestAlgorithm?: 'md5' | 'sha1'
+        /** 接口调用失败的回调函数 */
+        fail?: WxGetFileInfoFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: WxGetFileInfoSuccessCallback
+    }
+    interface WxGetFileInfoSuccessCallbackResult {
+        /** 按照传入的 digestAlgorithm 计算得出的的文件摘要 */
+        digest: string
+        /** 文件大小,以字节为单位 */
+        size: number
+        errMsg: string
+    }
+    interface WxGetSavedFileListOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: GetSavedFileListCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: GetSavedFileListFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: WxGetSavedFileListSuccessCallback
+    }
+    interface WxGetSavedFileListSuccessCallbackResult {
+        /** 文件数组,每一项是一个 FileItem */
+        fileList: FileItem[]
+        errMsg: string
+    }
+    interface WxRemoveSavedFileOption {
+        /** 需要删除的文件路径 (本地路径) */
+        filePath: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: RemoveSavedFileCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: WxRemoveSavedFileFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: RemoveSavedFileSuccessCallback
+    }
+    interface WxSaveFileOption {
+        /** 需要保存的文件的临时路径 (本地路径) */
+        tempFilePath: string
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: SaveFileCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: WxSaveFileFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: SaveFileSuccessCallback
+    }
+    interface WxStartRecordOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: StartRecordCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: StartRecordFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: WxStartRecordSuccessCallback
+    }
+    interface WxStopRecordOption {
+        /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+        complete?: StopRecordCompleteCallback
+        /** 接口调用失败的回调函数 */
+        fail?: StopRecordFailCallback
+        /** 接口调用成功的回调函数 */
+        success?: WxStopRecordSuccessCallback
+    }
+    /** 运动数据列表 */
+    interface WxaSportRecord {
+        /** 消耗卡路里 */
+        calorie: number
+        /** 运动距离 */
+        distance: number
+        /** 运动时长 */
+        time: number
+        /** 运动项目id */
+        typeId: number
+    }
+    /** 帧纹理对象 */
+    interface YUVTextureRes {
+        /** UV 分量纹理 */
+        uvTexture: WebGLTexture
+        /** Y 分量纹理 */
+        yTexture: WebGLTexture
+    }
+    /** 文件路径 */
+    interface ZipFileItem {
+        /** 文件内容 */
+        data: string | ArrayBuffer
+        /** 错误信息 */
+        errMsg: string
+    }
+    interface Animation {
+        /** [Object Animation.export()](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.export.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 导出动画队列。**export 方法每次调用后会清掉之前的动画操作。** */
+        export(): AnimationExportResult
+        /** [[Animation](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.html) Animation.backgroundColor(string value)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.backgroundColor.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 设置背景色 */
+        backgroundColor(
+            /** 颜色值 */
+            value: string
+        ): Animation
+        /** [[Animation](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.html) Animation.bottom(number|string value)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.bottom.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 设置 bottom 值 */
+        bottom(
+            /** 长度值,如果传入 number 则默认使用 px,可传入其他自定义单位的长度值 */
+            value: number | string
+        ): Animation
+        /** [[Animation](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.html) Animation.height(number|string value)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.height.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 设置高度 */
+        height(
+            /** 长度值,如果传入 number 则默认使用 px,可传入其他自定义单位的长度值 */
+            value: number | string
+        ): Animation
+        /** [[Animation](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.html) Animation.left(number|string value)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.left.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 设置 left 值 */
+        left(
+            /** 长度值,如果传入 number 则默认使用 px,可传入其他自定义单位的长度值 */
+            value: number | string
+        ): Animation
+        /** [[Animation](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.html) Animation.matrix()](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.matrix.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 同 [transform-function matrix](https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/matrix) */
+        matrix(): Animation
+        /** [[Animation](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.html) Animation.matrix3d()](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.matrix3d.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 同 [transform-function matrix3d](https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/matrix3d) */
+        matrix3d(): Animation
+        /** [[Animation](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.html) Animation.opacity(number value)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.opacity.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 设置透明度 */
+        opacity(
+            /** 透明度,范围 0-1 */
+            value: number
+        ): Animation
+        /** [[Animation](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.html) Animation.right(number|string value)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.right.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 设置 right 值 */
+        right(
+            /** 长度值,如果传入 number 则默认使用 px,可传入其他自定义单位的长度值 */
+            value: number | string
+        ): Animation
+        /** [[Animation](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.html) Animation.rotate(number angle)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.rotate.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 从原点顺时针旋转一个角度 */
+        rotate(
+            /** 旋转的角度。范围 [-180, 180] */
+            angle: number
+        ): Animation
+        /** [[Animation](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.html) Animation.rotate3d(number x, number y, number z, number angle)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.rotate3d.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 从 固定 轴顺时针旋转一个角度 */
+        rotate3d(
+            /** 旋转轴的 x 坐标 */
+            x: number,
+            /** 旋转轴的 y 坐标 */
+            y: number,
+            /** 旋转轴的 z 坐标 */
+            z: number,
+            /** 旋转的角度。范围 [-180, 180] */
+            angle: number
+        ): Animation
+        /** [[Animation](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.html) Animation.rotateX(number angle)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.rotateX.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 从 X 轴顺时针旋转一个角度 */
+        rotateX(
+            /** 旋转的角度。范围 [-180, 180] */
+            angle: number
+        ): Animation
+        /** [[Animation](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.html) Animation.rotateY(number angle)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.rotateY.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 从 Y 轴顺时针旋转一个角度 */
+        rotateY(
+            /** 旋转的角度。范围 [-180, 180] */
+            angle: number
+        ): Animation
+        /** [[Animation](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.html) Animation.rotateZ(number angle)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.rotateZ.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 从 Z 轴顺时针旋转一个角度 */
+        rotateZ(
+            /** 旋转的角度。范围 [-180, 180] */
+            angle: number
+        ): Animation
+        /** [[Animation](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.html) Animation.scale(number sx, number sy)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.scale.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 缩放 */
+        scale(
+            /** 当仅有 sx 参数时,表示在 X 轴、Y 轴同时缩放sx倍数 */
+            sx: number,
+            /** 在 Y 轴缩放 sy 倍数 */
+            sy?: number
+        ): Animation
+        /** [[Animation](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.html) Animation.scale3d(number sx, number sy, number sz)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.scale3d.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 缩放 */
+        scale3d(
+            /** x 轴的缩放倍数 */
+            sx: number,
+            /** y 轴的缩放倍数 */
+            sy: number,
+            /** z 轴的缩放倍数 */
+            sz: number
+        ): Animation
+        /** [[Animation](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.html) Animation.scaleX(number scale)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.scaleX.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 缩放 X 轴 */
+        scaleX(
+            /** X 轴的缩放倍数 */
+            scale: number
+        ): Animation
+        /** [[Animation](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.html) Animation.scaleY(number scale)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.scaleY.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 缩放 Y 轴 */
+        scaleY(
+            /** Y 轴的缩放倍数 */
+            scale: number
+        ): Animation
+        /** [[Animation](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.html) Animation.scaleZ(number scale)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.scaleZ.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 缩放 Z 轴 */
+        scaleZ(
+            /** Z 轴的缩放倍数 */
+            scale: number
+        ): Animation
+        /** [[Animation](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.html) Animation.skew(number ax, number ay)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.skew.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 对 X、Y 轴坐标进行倾斜 */
+        skew(
+            /** 对 X 轴坐标倾斜的角度,范围 [-180, 180] */
+            ax: number,
+            /** 对 Y 轴坐标倾斜的角度,范围 [-180, 180] */
+            ay: number
+        ): Animation
+        /** [[Animation](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.html) Animation.skewX(number angle)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.skewX.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 对 X 轴坐标进行倾斜 */
+        skewX(
+            /** 倾斜的角度,范围 [-180, 180] */
+            angle: number
+        ): Animation
+        /** [[Animation](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.html) Animation.skewY(number angle)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.skewY.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 对 Y 轴坐标进行倾斜 */
+        skewY(
+            /** 倾斜的角度,范围 [-180, 180] */
+            angle: number
+        ): Animation
+        /** [[Animation](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.html) Animation.step(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.step.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 表示一组动画完成。可以在一组动画中调用任意多个动画方法,一组动画中的所有动画会同时开始,一组动画完成后才会进行下一组动画。 */
+        step(option?: StepOption): Animation
+        /** [[Animation](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.html) Animation.top(number|string value)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.top.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 设置 top 值 */
+        top(
+            /** 长度值,如果传入 number 则默认使用 px,可传入其他自定义单位的长度值 */
+            value: number | string
+        ): Animation
+        /** [[Animation](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.html) Animation.translate(number tx, number ty)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.translate.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 平移变换 */
+        translate(
+            /** 当仅有该参数时表示在 X 轴偏移 tx,单位 px */
+            tx?: number,
+            /** 在 Y 轴平移的距离,单位为 px */
+            ty?: number
+        ): Animation
+        /** [[Animation](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.html) Animation.translate3d(number tx, number ty, number tz)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.translate3d.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 对 xyz 坐标进行平移变换 */
+        translate3d(
+            /** 在 X 轴平移的距离,单位为 px */
+            tx?: number,
+            /** 在 Y 轴平移的距离,单位为 px */
+            ty?: number,
+            /** 在 Z 轴平移的距离,单位为 px */
+            tz?: number
+        ): Animation
+        /** [[Animation](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.html) Animation.translateX(number translation)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.translateX.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 对 X 轴平移 */
+        translateX(
+            /** 在 X 轴平移的距离,单位为 px */
+            translation: number
+        ): Animation
+        /** [[Animation](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.html) Animation.translateY(number translation)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.translateY.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 对 Y 轴平移 */
+        translateY(
+            /** 在 Y 轴平移的距离,单位为 px */
+            translation: number
+        ): Animation
+        /** [[Animation](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.html) Animation.translateZ(number translation)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.translateZ.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 对 Z 轴平移 */
+        translateZ(
+            /** 在 Z 轴平移的距离,单位为 px */
+            translation: number
+        ): Animation
+        /** [[Animation](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.html) Animation.width(number|string value)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.width.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 设置宽度 */
+        width(
+            /** 长度值,如果传入 number 则默认使用 px,可传入其他自定义单位的长度值 */
+            value: number | string
+        ): Animation
+    }
+    interface AudioBuffer {
+        /** [AudioBuffer.copyFromChannel()](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/AudioBuffer.copyFromChannel.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 从AudioBuffer的指定频道复制到数组终端。 */
+        copyFromChannel(): void
+        /** [AudioBuffer.copyToChannel(Float32Array source, number channelNumber, number startInChannel)](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/AudioBuffer.copyToChannel.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 从指定数组复制样本到audioBuffer的特定通道
+         *
+         * **示例代码**
+         *
+         * 示例代码参考AudioBuffer.copyFromChannel */
+        copyToChannel(
+            /** 需要复制的源数组 */
+            source: Float32Array,
+            /** 需要复制到的目的通道号 */
+            channelNumber: number,
+            /** 复制偏移数据量 */
+            startInChannel: number
+        ): void
+        /** [Float32Array AudioBuffer.getChannelData(number channel)](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/AudioBuffer.getChannelData.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 返回一个 Float32Array,包含了带有频道的PCM数据,由频道参数定义(有0代表第一个频道) */
+        getChannelData(
+            /** 要获取特定通道数据的索引 */
+            channel: number
+        ): Float32Array
+    }
+    interface AudioContext {
+        /** [AudioContext.pause()](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/AudioContext.pause.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 暂停音频。 */
+        pause(): void
+        /** [AudioContext.play()](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/AudioContext.play.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 播放音频。 */
+        play(): void
+        /** [AudioContext.seek(number position)](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/AudioContext.seek.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 跳转到指定位置。 */
+        seek(
+            /** 跳转位置,单位 s */
+            position: number
+        ): void
+        /** [AudioContext.setSrc(string src)](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/AudioContext.setSrc.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 设置音频地址 */
+        setSrc(
+            /** 音频地址 */
+            src: string
+        ): void
+    }
+    interface BLEPeripheralServer {
+        /** [BLEPeripheralServer.addService(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/BLEPeripheralServer.addService.html)
+         *
+         * 需要基础库: `2.10.3`
+         *
+         * 在插件中使用:不支持
+         *
+         * 添加服务。 */
+        addService(option: AddServiceOption): void
+        /** [BLEPeripheralServer.close(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/BLEPeripheralServer.close.html)
+         *
+         * 需要基础库: `2.10.3`
+         *
+         * 在插件中使用:不支持
+         *
+         * 关闭当前服务端。 */
+        close(option?: BLEPeripheralServerCloseOption): void
+        /** [BLEPeripheralServer.offCharacteristicReadRequest(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/BLEPeripheralServer.offCharacteristicReadRequest.html)
+         *
+         * 需要基础库: `2.10.3`
+         *
+         * 在插件中使用:不支持
+         *
+         * 取消监听已连接的设备请求读当前外围设备的特征值事件 */
+        offCharacteristicReadRequest(
+            /** 已连接的设备请求读当前外围设备的特征值事件的回调函数 */
+            callback?: OffCharacteristicReadRequestCallback
+        ): void
+        /** [BLEPeripheralServer.offCharacteristicSubscribed(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/BLEPeripheralServer.offCharacteristicSubscribed.html)
+         *
+         * 需要基础库: `2.13.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 取消监听特征订阅事件 */
+        offCharacteristicSubscribed(
+            /** 特征订阅事件的回调函数 */
+            callback?: OffCharacteristicSubscribedCallback
+        ): void
+        /** [BLEPeripheralServer.offCharacteristicUnsubscribed(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/BLEPeripheralServer.offCharacteristicUnsubscribed.html)
+         *
+         * 需要基础库: `2.13.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 取消监听取消特征订阅事件 */
+        offCharacteristicUnsubscribed(
+            /** 取消特征订阅事件的回调函数 */
+            callback?: OffCharacteristicUnsubscribedCallback
+        ): void
+        /** [BLEPeripheralServer.offCharacteristicWriteRequest(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/BLEPeripheralServer.offCharacteristicWriteRequest.html)
+         *
+         * 需要基础库: `2.10.3`
+         *
+         * 在插件中使用:不支持
+         *
+         * 取消监听已连接的设备请求写当前外围设备的特征值事件 */
+        offCharacteristicWriteRequest(
+            /** 已连接的设备请求写当前外围设备的特征值事件的回调函数 */
+            callback?: OffCharacteristicWriteRequestCallback
+        ): void
+        /** [BLEPeripheralServer.onCharacteristicReadRequest(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/BLEPeripheralServer.onCharacteristicReadRequest.html)
+         *
+         * 需要基础库: `2.10.3`
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听已连接的设备请求读当前外围设备的特征值事件。收到该消息后需要立刻调用 [writeCharacteristicValue](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/BLEPeripheralServer.writeCharacteristicValue.html) 写回数据,否则主机不会收到响应。 */
+        onCharacteristicReadRequest(
+            /** 已连接的设备请求读当前外围设备的特征值事件的回调函数 */
+            callback: OnCharacteristicReadRequestCallback
+        ): void
+        /** [BLEPeripheralServer.onCharacteristicSubscribed(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/BLEPeripheralServer.onCharacteristicSubscribed.html)
+         *
+         * 需要基础库: `2.13.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听特征订阅事件,仅 iOS 支持。 */
+        onCharacteristicSubscribed(
+            /** 特征订阅事件的回调函数 */
+            callback: OnCharacteristicSubscribedCallback
+        ): void
+        /** [BLEPeripheralServer.onCharacteristicUnsubscribed(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/BLEPeripheralServer.onCharacteristicUnsubscribed.html)
+         *
+         * 需要基础库: `2.13.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听取消特征订阅事件,仅 iOS 支持。 */
+        onCharacteristicUnsubscribed(
+            /** 取消特征订阅事件的回调函数 */
+            callback: OnCharacteristicUnsubscribedCallback
+        ): void
+        /** [BLEPeripheralServer.onCharacteristicWriteRequest(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/BLEPeripheralServer.onCharacteristicWriteRequest.html)
+         *
+         * 需要基础库: `2.10.3`
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听已连接的设备请求写当前外围设备的特征值事件。收到该消息后需要立刻调用 [writeCharacteristicValue](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/BLEPeripheralServer.writeCharacteristicValue.html) 写回数据,否则主机不会收到响应。 */
+        onCharacteristicWriteRequest(
+            /** 已连接的设备请求写当前外围设备的特征值事件的回调函数 */
+            callback: OnCharacteristicWriteRequestCallback
+        ): void
+        /** [BLEPeripheralServer.removeService(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/BLEPeripheralServer.removeService.html)
+         *
+         * 需要基础库: `2.10.3`
+         *
+         * 在插件中使用:不支持
+         *
+         * 移除服务。 */
+        removeService(option: RemoveServiceOption): void
+        /** [BLEPeripheralServer.startAdvertising(Object Object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/BLEPeripheralServer.startAdvertising.html)
+         *
+         * 需要基础库: `2.10.3`
+         *
+         * 在插件中使用:不支持
+         *
+         * 开始广播本地创建的外围设备。
+         *
+         * **注意**
+         *
+         * - Android 8.0.9 开始,支持直接使用 16/32/128 位 UUID;
+         * - Android 8.0.9 以下版本只支持 128 位 UUID,使用 16/32 位的 UUID 时需要进行补位(系统会自动识别是否属于预分配区间),可以参考[蓝牙指南](https://developers.weixin.qq.com/miniprogram/dev/framework/device/ble.html);
+         * - iOS 必须直接使用 16 位的 UUID,不能补位到 128 位,否则系统组包时仍会按照 128 位传输。iOS 暂不支持 32 位 UUID。
+         * - iOS 同时只能发起一个广播,安卓支持同时发起多个广播。
+         * - 传 beacon 参数时,不能同时传入 deviceName,serviceUuids,manufacturerData 参数。 */
+        startAdvertising(Object: StartAdvertisingObject): void
+        /** [BLEPeripheralServer.stopAdvertising(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/BLEPeripheralServer.stopAdvertising.html)
+         *
+         * 需要基础库: `2.10.3`
+         *
+         * 在插件中使用:不支持
+         *
+         * 停止广播。 */
+        stopAdvertising(option?: StopAdvertisingOption): void
+        /** [BLEPeripheralServer.writeCharacteristicValue(Object Object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/BLEPeripheralServer.writeCharacteristicValue.html)
+         *
+         * 需要基础库: `2.10.3`
+         *
+         * 在插件中使用:不支持
+         *
+         * 往指定特征写入二进制数据值,并通知已连接的主机,从机的特征值已发生变化,该接口会处理是走回包还是走订阅。 */
+        writeCharacteristicValue(Object: WriteCharacteristicValueObject): void
+    }
+    interface BackgroundAudioError {
+        /** 错误信息
+         *
+         * | 错误码 | 错误信息 | 说明 |
+         * | - | - | - |
+         * | 10001 |  | 系统错误 |
+         * | 10002 |  | 网络错误 |
+         * | 10003 |  | 文件错误,请检查是否responseheader是否缺少Content-Length |
+         * | 10004 |  | 格式错误 |
+         * | -1 |  | 未知错误 | */ errMsg: string
+        /** 错误码
+         *
+         * | 错误码 | 错误信息 | 说明 |
+         * | - | - | - |
+         * | 10001 |  | 系统错误 |
+         * | 10002 |  | 网络错误 |
+         * | 10003 |  | 文件错误,请检查是否responseheader是否缺少Content-Length |
+         * | 10004 |  | 格式错误 |
+         * | -1 |  | 未知错误 | */ errCode: number
+    }
+    interface BackgroundAudioManager {
+        /** [BackgroundAudioManager.onCanplay(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/BackgroundAudioManager.onCanplay.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 监听背景音频进入可播放状态事件。 但不保证后面可以流畅播放 */
+        onCanplay(
+            /** 背景音频进入可播放状态事件的回调函数 */
+            callback: OnCanplayCallback
+        ): void
+        /** [BackgroundAudioManager.onEnded(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/BackgroundAudioManager.onEnded.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 监听背景音频自然播放结束事件 */
+        onEnded(
+            /** 背景音频自然播放结束事件的回调函数 */
+            callback: OnEndedCallback
+        ): void
+        /** [BackgroundAudioManager.onError(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/BackgroundAudioManager.onError.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 监听背景音频播放错误事件 */
+        onError(
+            /** 背景音频播放错误事件的回调函数 */
+            callback: BackgroundAudioManagerOnErrorCallback
+        ): void
+        /** [BackgroundAudioManager.onNext(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/BackgroundAudioManager.onNext.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 监听用户在系统音乐播放面板点击下一曲事件(仅iOS) */
+        onNext(
+            /** 用户在系统音乐播放面板点击下一曲事件的回调函数 */
+            callback: OnNextCallback
+        ): void
+        /** [BackgroundAudioManager.onPause(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/BackgroundAudioManager.onPause.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 监听背景音频暂停事件 */
+        onPause(
+            /** 背景音频暂停事件的回调函数 */
+            callback: OnPauseCallback
+        ): void
+        /** [BackgroundAudioManager.onPlay(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/BackgroundAudioManager.onPlay.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 监听背景音频播放事件 */
+        onPlay(
+            /** 背景音频播放事件的回调函数 */
+            callback: OnPlayCallback
+        ): void
+        /** [BackgroundAudioManager.onPrev(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/BackgroundAudioManager.onPrev.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 监听用户在系统音乐播放面板点击上一曲事件(仅iOS) */
+        onPrev(
+            /** 用户在系统音乐播放面板点击上一曲事件的回调函数 */
+            callback: OnPrevCallback
+        ): void
+        /** [BackgroundAudioManager.onSeeked(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/BackgroundAudioManager.onSeeked.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 监听背景音频完成跳转操作事件 */
+        onSeeked(
+            /** 背景音频完成跳转操作事件的回调函数 */
+            callback: OnSeekedCallback
+        ): void
+        /** [BackgroundAudioManager.onSeeking(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/BackgroundAudioManager.onSeeking.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 监听背景音频开始跳转操作事件 */
+        onSeeking(
+            /** 背景音频开始跳转操作事件的回调函数 */
+            callback: OnSeekingCallback
+        ): void
+        /** [BackgroundAudioManager.onStop(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/BackgroundAudioManager.onStop.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 监听背景音频停止事件 */
+        onStop(
+            /** 背景音频停止事件的回调函数 */
+            callback: InnerAudioContextOnStopCallback
+        ): void
+        /** [BackgroundAudioManager.onTimeUpdate(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/BackgroundAudioManager.onTimeUpdate.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 监听背景音频播放进度更新事件,只有小程序在前台时会回调。 */
+        onTimeUpdate(
+            /** 背景音频播放进度更新事件的回调函数 */
+            callback: OnTimeUpdateCallback
+        ): void
+        /** [BackgroundAudioManager.onWaiting(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/BackgroundAudioManager.onWaiting.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 监听音频加载中事件。当音频因为数据不足,需要停下来加载时会触发 */
+        onWaiting(
+            /** 音频加载中事件的回调函数 */
+            callback: OnWaitingCallback
+        ): void
+        /** [BackgroundAudioManager.pause()](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/BackgroundAudioManager.pause.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 暂停音乐 */
+        pause(): void
+        /** [BackgroundAudioManager.play()](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/BackgroundAudioManager.play.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 播放音乐 */
+        play(): void
+        /** [BackgroundAudioManager.seek(number currentTime)](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/BackgroundAudioManager.seek.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 跳转到指定位置 */
+        seek(
+            /** 跳转的位置,单位 s。精确到小数点后 3 位,即支持 ms 级别精确度 */
+            currentTime: number
+        ): void
+        /** [BackgroundAudioManager.stop()](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/BackgroundAudioManager.stop.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 停止音乐 */
+        stop(): void
+    }
+    interface BeaconError {
+        /** 错误信息
+         *
+         * | 错误码 | 错误信息 | 说明 |
+         * | - | - | - |
+         * | 0 | ok | 正常 |
+         * | 11000 | unsupport | 系统或设备不支持 |
+         * | 11001 | bluetooth service unavailable | 蓝牙服务不可用 |
+         * | 11002 | location service unavailable | 位置服务不可用 |
+         * | 11003 | already start | 已经开始搜索 |
+         * | 11004 | not startBeaconDiscovery | 还未开始搜索 |
+         * | 11005 | system error | 系统错误 |
+         * | 11006 | invalid data | 参数不正确 | */ errMsg: string
+        /** 错误码
+         *
+         * | 错误码 | 错误信息 | 说明 |
+         * | - | - | - |
+         * | 0 | ok | 正常 |
+         * | 11000 | unsupport | 系统或设备不支持 |
+         * | 11001 | bluetooth service unavailable | 蓝牙服务不可用 |
+         * | 11002 | location service unavailable | 位置服务不可用 |
+         * | 11003 | already start | 已经开始搜索 |
+         * | 11004 | not startBeaconDiscovery | 还未开始搜索 |
+         * | 11005 | system error | 系统错误 |
+         * | 11006 | invalid data | 参数不正确 | */ errCode: number
+    }
+    interface BluetoothError {
+        /** 错误信息
+         *
+         * | 错误码 | 错误信息 | 说明 |
+         * | - | - | - |
+         * | 0 | ok | 正常 |
+         * | -1 | already connect | 已连接 |
+         * | 10000 | not init | 未初始化蓝牙适配器 |
+         * | 10001 | not available | 当前蓝牙适配器不可用 |
+         * | 10002 | no device | 没有找到指定设备 |
+         * | 10003 | connection fail | 连接失败 |
+         * | 10004 | no service | 没有找到指定服务 |
+         * | 10005 | no characteristic | 没有找到指定特征 |
+         * | 10006 | no connection | 当前连接已断开 |
+         * | 10007 | property not support | 当前特征不支持此操作 |
+         * | 10008 | system error | 其余所有系统上报的异常 |
+         * | 10009 | system not support | Android 系统特有,系统版本低于 4.3 不支持 BLE |
+         * | 10012 | operate time out | 连接超时 |
+         * | 10013 | invalid_data | 连接 deviceId 为空或者是格式不正确 | */ errMsg: string
+        /** 错误码
+         *
+         * | 错误码 | 错误信息 | 说明 |
+         * | - | - | - |
+         * | 0 | ok | 正常 |
+         * | -1 | already connect | 已连接 |
+         * | 10000 | not init | 未初始化蓝牙适配器 |
+         * | 10001 | not available | 当前蓝牙适配器不可用 |
+         * | 10002 | no device | 没有找到指定设备 |
+         * | 10003 | connection fail | 连接失败 |
+         * | 10004 | no service | 没有找到指定服务 |
+         * | 10005 | no characteristic | 没有找到指定特征 |
+         * | 10006 | no connection | 当前连接已断开 |
+         * | 10007 | property not support | 当前特征不支持此操作 |
+         * | 10008 | system error | 其余所有系统上报的异常 |
+         * | 10009 | system not support | Android 系统特有,系统版本低于 4.3 不支持 BLE |
+         * | 10012 | operate time out | 连接超时 |
+         * | 10013 | invalid_data | 连接 deviceId 为空或者是格式不正确 | */ errCode: number
+    }
+    interface CameraContext {
+        /** [CameraContext.setZoom(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/camera/CameraContext.setZoom.html)
+         *
+         * 需要基础库: `2.10.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 设置缩放级别 */
+        setZoom(option: SetZoomOption): void
+        /** [CameraContext.startRecord(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/camera/CameraContext.startRecord.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 开始录像 */
+        startRecord(option: CameraContextStartRecordOption): void
+        /** [CameraContext.stopRecord(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/camera/CameraContext.stopRecord.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 结束录像 */
+        stopRecord(option: CameraContextStopRecordOption): void
+        /** [CameraContext.takePhoto(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/camera/CameraContext.takePhoto.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 拍摄照片 */
+        takePhoto(option: TakePhotoOption): void
+        /** [[CameraFrameListener](https://developers.weixin.qq.com/miniprogram/dev/api/media/camera/CameraFrameListener.html) CameraContext.onCameraFrame(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/camera/CameraContext.onCameraFrame.html)
+*
+* 需要基础库: `2.7.0`
+*
+* 在插件中使用:不支持
+*
+* 获取 Camera 实时帧数据
+*
+* ****
+*
+* 注: 使用该接口需同时在 [camera](https://developers.weixin.qq.com/miniprogram/dev/component/camera.html) 组件属性中指定 frame-size。
+*
+* **示例代码**
+*
+* ```js
+const context = wx.createCameraContext()
+const listener = context.onCameraFrame((frame) => {
+  console.log(frame.data instanceof ArrayBuffer, frame.width, frame.height)
+})
+listener.start()
+``` */
+        onCameraFrame(
+            /** 回调函数 */
+            callback: OnCameraFrameCallback
+        ): CameraFrameListener
+    }
+    interface CameraFrameListener {
+        /** [CameraFrameListener.start(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/camera/CameraFrameListener.start.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 开始监听帧数据 */
+        start(option?: CameraFrameListenerStartOption): void
+        /** [CameraFrameListener.stop(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/camera/CameraFrameListener.stop.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 停止监听帧数据 */
+        stop(option?: StopOption): void
+    }
+    interface Canvas {
+        /** [Canvas.cancelAnimationFrame(number requestID)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/Canvas.cancelAnimationFrame.html)
+         *
+         * 需要基础库: `2.7.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 取消由 requestAnimationFrame 添加到计划中的动画帧请求。支持在 2D Canvas 和 WebGL Canvas 下使用, 但不支持混用 2D 和 WebGL 的方法。 */
+        cancelAnimationFrame(requestID: number): void
+        /** [[ImageData](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/ImageData.html) Canvas.createImageData()](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/Canvas.createImageData.html)
+         *
+         * 需要基础库: `2.9.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 创建一个 ImageData 对象。仅支持在 2D Canvas 中使用。 */
+        createImageData(): ImageData
+        /** [[Image](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/Image.html) Canvas.createImage()](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/Canvas.createImage.html)
+         *
+         * 需要基础库: `2.7.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 创建一个图片对象。 支持在 2D Canvas 和 WebGL Canvas 下使用, 但不支持混用 2D 和 WebGL 的方法。 */
+        createImage(): Image
+        /** [[Path2D](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/Path2D.html) Canvas.createPath2D([Path2D](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/Path2D.html) path)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/Canvas.createPath2D.html)
+         *
+         * 需要基础库: `2.11.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 创建 Path2D 对象 */
+        createPath2D(
+            /** [Path2D](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/Path2D.html) */
+            path: Path2D
+        ): Path2D
+        /** [[RenderingContext](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/RenderingContext.html) Canvas.getContext(string contextType)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/Canvas.getContext.html)
+         *
+         * 需要基础库: `2.7.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 该方法返回 Canvas 的绘图上下文
+         *
+         * ****
+         *
+         * 支持获取 2D 和 WebGL 绘图上下文 */
+        getContext(contextType: string): any
+        /** [number Canvas.requestAnimationFrame(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/Canvas.requestAnimationFrame.html)
+         *
+         * 需要基础库: `2.7.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 在下次进行重绘时执行。 支持在 2D Canvas 和 WebGL Canvas 下使用, 但不支持混用 2D 和 WebGL 的方法。 */
+        requestAnimationFrame(
+            /** 执行的 callback */
+            callback: (...args: any[]) => any
+        ): number
+        /** [string Canvas.toDataURL(string type, number encoderOptions)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/Canvas.toDataURL.html)
+         *
+         * 需要基础库: `2.11.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 返回一个包含图片展示的 data URI 。可以使用 type 参数其类型,默认为 PNG 格式。 */
+        toDataURL(
+            /** 图片格式,默认为 image/png */
+            type: string,
+            /** 在指定图片格式为 image/jpeg 或 image/webp的情况下,可以从 0 到 1 的区间内选择图片的质量。如果超出取值范围,将会使用默认值 0.92。其他参数会被忽略。 */
+            encoderOptions: number
+        ): string
+    }
+    interface CanvasContext {
+        /** [CanvasContext.arc(number x, number y, number r, number sAngle, number eAngle, boolean counterclockwise)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.arc.html)
+*
+* 在插件中使用:支持
+*
+* 创建一条弧线。
+*
+*   - 创建一个圆可以指定起始弧度为 0,终止弧度为 2 * Math.PI。
+*   - 用 `stroke` 或者 `fill` 方法来在 `canvas` 中画弧线。
+*
+* **示例代码**
+*
+* ```javascript
+const ctx = wx.createCanvasContext('myCanvas')
+
+// Draw coordinates
+ctx.arc(100, 75, 50, 0, 2 * Math.PI)
+ctx.setFillStyle('#EEEEEE')
+ctx.fill()
+
+ctx.beginPath()
+ctx.moveTo(40, 75)
+ctx.lineTo(160, 75)
+ctx.moveTo(100, 15)
+ctx.lineTo(100, 135)
+ctx.setStrokeStyle('#AAAAAA')
+ctx.stroke()
+
+ctx.setFontSize(12)
+ctx.setFillStyle('black')
+ctx.fillText('0', 165, 78)
+ctx.fillText('0.5*PI', 83, 145)
+ctx.fillText('1*PI', 15, 78)
+ctx.fillText('1.5*PI', 83, 10)
+
+// Draw points
+ctx.beginPath()
+ctx.arc(100, 75, 2, 0, 2 * Math.PI)
+ctx.setFillStyle('lightgreen')
+ctx.fill()
+
+ctx.beginPath()
+ctx.arc(100, 25, 2, 0, 2 * Math.PI)
+ctx.setFillStyle('blue')
+ctx.fill()
+
+ctx.beginPath()
+ctx.arc(150, 75, 2, 0, 2 * Math.PI)
+ctx.setFillStyle('red')
+ctx.fill()
+
+// Draw arc
+ctx.beginPath()
+ctx.arc(100, 75, 50, 0, 1.5 * Math.PI)
+ctx.setStrokeStyle('#333333')
+ctx.stroke()
+
+ctx.draw()
+```
+*
+* ![](@program/dev/image/canvas/arc.png)
+*
+* 针对 arc(100, 75, 50, 0, 1.5 * Math.PI)的三个关键坐标如下:
+*
+* - 绿色: 圆心 (100, 75)
+* - 红色: 起始弧度 (0)
+* - 蓝色: 终止弧度 (1.5 * Math.PI) */
+        arc(
+            /** 圆心的 x 坐标 */
+            x: number,
+            /** 圆心的 y 坐标 */
+            y: number,
+            /** 圆的半径 */
+            r: number,
+            /** 起始弧度,单位弧度(在3点钟方向) */
+            sAngle: number,
+            /** 终止弧度 */
+            eAngle: number,
+            /** 弧度的方向是否是逆时针 */
+            counterclockwise?: boolean
+        ): void
+        /** [CanvasContext.arcTo(number x1, number y1, number x2, number y2, number radius)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.arcTo.html)
+         *
+         * 需要基础库: `1.9.90`
+         *
+         * 在插件中使用:支持
+         *
+         * 根据控制点和半径绘制圆弧路径。 */
+        arcTo(
+            /** 第一个控制点的 x 轴坐标 */
+            x1: number,
+            /** 第一个控制点的 y 轴坐标 */
+            y1: number,
+            /** 第二个控制点的 x 轴坐标 */
+            x2: number,
+            /** 第二个控制点的 y 轴坐标 */
+            y2: number,
+            /** 圆弧的半径 */
+            radius: number
+        ): void
+        /** [CanvasContext.beginPath()](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.beginPath.html)
+*
+* 在插件中使用:支持
+*
+* 开始创建一个路径。需要调用 `fill` 或者 `stroke` 才会使用路径进行填充或描边
+*
+*   - 在最开始的时候相当于调用了一次 `beginPath`。
+*   - 同一个路径内的多次 `setFillStyle`、`setStrokeStyle`、`setLineWidth`等设置,以最后一次设置为准。
+*
+* **示例代码**
+*
+* ```javascript
+const ctx = wx.createCanvasContext('myCanvas')
+// begin path
+ctx.rect(10, 10, 100, 30)
+ctx.setFillStyle('yellow')
+ctx.fill()
+
+// begin another path
+ctx.beginPath()
+ctx.rect(10, 40, 100, 30)
+
+// only fill this rect, not in current path
+ctx.setFillStyle('blue')
+ctx.fillRect(10, 70, 100, 30)
+
+ctx.rect(10, 100, 100, 30)
+
+// it will fill current path
+ctx.setFillStyle('red')
+ctx.fill()
+ctx.draw()
+```
+*
+* ![](@program/dev/image/canvas/fill-path.png) */
+        beginPath(): void
+        /** [CanvasContext.bezierCurveTo(number cp1x, number cp1y, number cp2x, number cp2y, number x, number y)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.bezierCurveTo.html)
+*
+* 在插件中使用:支持
+*
+* 创建三次方贝塞尔曲线路径。曲线的起始点为路径中前一个点。
+*
+* **示例代码**
+*
+* ```javascript
+const ctx = wx.createCanvasContext('myCanvas')
+
+// Draw points
+ctx.beginPath()
+ctx.arc(20, 20, 2, 0, 2 * Math.PI)
+ctx.setFillStyle('red')
+ctx.fill()
+
+ctx.beginPath()
+ctx.arc(200, 20, 2, 0, 2 * Math.PI)
+ctx.setFillStyle('lightgreen')
+ctx.fill()
+
+ctx.beginPath()
+ctx.arc(20, 100, 2, 0, 2 * Math.PI)
+ctx.arc(200, 100, 2, 0, 2 * Math.PI)
+ctx.setFillStyle('blue')
+ctx.fill()
+
+ctx.setFillStyle('black')
+ctx.setFontSize(12)
+
+// Draw guides
+ctx.beginPath()
+ctx.moveTo(20, 20)
+ctx.lineTo(20, 100)
+ctx.lineTo(150, 75)
+
+ctx.moveTo(200, 20)
+ctx.lineTo(200, 100)
+ctx.lineTo(70, 75)
+ctx.setStrokeStyle('#AAAAAA')
+ctx.stroke()
+
+// Draw quadratic curve
+ctx.beginPath()
+ctx.moveTo(20, 20)
+ctx.bezierCurveTo(20, 100, 200, 100, 200, 20)
+ctx.setStrokeStyle('black')
+ctx.stroke()
+
+ctx.draw()
+```
+*
+* ![](@program/dev/image/canvas/bezier-curve.png)
+*
+* 针对 moveTo(20, 20) bezierCurveTo(20, 100, 200, 100, 200, 20) 的三个关键坐标如下:
+*
+* - 红色:起始点(20, 20)
+* - 蓝色:两个控制点(20, 100) (200, 100)
+* - 绿色:终止点(200, 20) */
+        bezierCurveTo(
+            /** 第一个贝塞尔控制点的 x 坐标 */
+            cp1x: number,
+            /** 第一个贝塞尔控制点的 y 坐标 */
+            cp1y: number,
+            /** 第二个贝塞尔控制点的 x 坐标 */
+            cp2x: number,
+            /** 第二个贝塞尔控制点的 y 坐标 */
+            cp2y: number,
+            /** 结束点的 x 坐标 */
+            x: number,
+            /** 结束点的 y 坐标 */
+            y: number
+        ): void
+        /** [CanvasContext.clearRect(number x, number y, number width, number height)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.clearRect.html)
+*
+* 在插件中使用:支持
+*
+* 清除画布上在该矩形区域内的内容
+*
+* **示例代码**
+*
+* clearRect 并非画一个白色的矩形在地址区域,而是清空,为了有直观感受,对 canvas 加了一层背景色。
+* ```html
+* <canvas canvas-id="myCanvas" style="border: 1px solid; background: #123456;"/>
+* ```
+* ```javascript
+const ctx = wx.createCanvasContext('myCanvas')
+ctx.setFillStyle('red')
+ctx.fillRect(0, 0, 150, 200)
+ctx.setFillStyle('blue')
+ctx.fillRect(150, 0, 150, 200)
+ctx.clearRect(10, 10, 150, 75)
+ctx.draw()
+```
+* ![](@program/dev/image/canvas/clear-rect.png) */
+        clearRect(
+            /** 矩形路径左上角的横坐标 */
+            x: number,
+            /** 矩形路径左上角的纵坐标 */
+            y: number,
+            /** 矩形路径的宽度 */
+            width: number,
+            /** 矩形路径的高度 */
+            height: number
+        ): void
+        /** [CanvasContext.clip()](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.clip.html)
+*
+* 需要基础库: `1.6.0`
+*
+* 在插件中使用:支持
+*
+* 从原始画布中剪切任意形状和尺寸。一旦剪切了某个区域,则所有之后的绘图都会被限制在被剪切的区域内(不能访问画布上的其他区域)。可以在使用 `clip` 方法前通过使用 `save` 方法对当前画布区域进行保存,并在以后的任意时间通过`restore`方法对其进行恢复。
+*
+* **示例代码**
+*
+* ```javascript
+const ctx = wx.createCanvasContext('myCanvas')
+
+wx.downloadFile({
+  url: 'http://is5.mzstatic.com/image/thumb/Purple128/v4/75/3b/90/753b907c-b7fb-5877-215a-759bd73691a4/source/50x50bb.jpg',
+  success: function(res) {
+    ctx.save()
+    ctx.beginPath()
+    ctx.arc(50, 50, 25, 0, 2*Math.PI)
+    ctx.clip()
+    ctx.drawImage(res.tempFilePath, 25, 25)
+    ctx.restore()
+    ctx.draw()
+  }
+})
+```
+* ![](@program/dev/image/canvas/clip.png) */
+        clip(): void
+        /** [CanvasContext.closePath()](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.closePath.html)
+*
+* 在插件中使用:支持
+*
+* 关闭一个路径。会连接起点和终点。如果关闭路径后没有调用 `fill` 或者 `stroke` 并开启了新的路径,那之前的路径将不会被渲染。
+*
+* **示例代码**
+*
+* ```javascript
+const ctx = wx.createCanvasContext('myCanvas')
+ctx.moveTo(10, 10)
+ctx.lineTo(100, 10)
+ctx.lineTo(100, 100)
+ctx.closePath()
+ctx.stroke()
+ctx.draw()
+```
+* ![](@program/dev/image/canvas/close-line.png)
+*
+* ```javascript
+const ctx = wx.createCanvasContext('myCanvas')
+// begin path
+ctx.rect(10, 10, 100, 30)
+ctx.closePath()
+
+// begin another path
+ctx.beginPath()
+ctx.rect(10, 40, 100, 30)
+
+// only fill this rect, not in current path
+ctx.setFillStyle('blue')
+ctx.fillRect(10, 70, 100, 30)
+
+ctx.rect(10, 100, 100, 30)
+
+// it will fill current path
+ctx.setFillStyle('red')
+ctx.fill()
+ctx.draw()
+```
+*
+* ![](@program/dev/image/canvas/close-path.png) */
+        closePath(): void
+        /** [CanvasContext.createPattern(string image, string repetition)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.createPattern.html)
+         *
+         * 需要基础库: `1.9.90`
+         *
+         * 在插件中使用:支持
+         *
+         * 对指定的图像创建模式的方法,可在指定的方向上重复元图像 */
+        createPattern(
+            /** 重复的图像源,支持代码包路径和本地临时路径 (本地路径) */
+            image: string,
+            /** 如何重复图像
+             *
+             * 参数 repetition 可选值:
+             * - 'repeat': 水平竖直方向都重复;
+             * - 'repeat-x': 水平方向重复;
+             * - 'repeat-y': 竖直方向重复;
+             * - 'no-repeat': 不重复; */
+            repetition: 'repeat' | 'repeat-x' | 'repeat-y' | 'no-repeat'
+        ): void
+        /** [CanvasContext.draw(boolean reserve, function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.draw.html)
+*
+* 在插件中使用:支持
+*
+* 将之前在绘图上下文中的描述(路径、变形、样式)画到 canvas 中。
+*
+* **示例代码**
+*
+* 第二次 draw() reserve 为 true。所以保留了上一次的绘制结果,在上下文设置的 fillStyle 'red' 也变成了默认的 'black'。
+*
+* ```javascript
+const ctx = wx.createCanvasContext('myCanvas')
+
+ctx.setFillStyle('red')
+ctx.fillRect(10, 10, 150, 100)
+ctx.draw()
+ctx.fillRect(50, 50, 150, 100)
+ctx.draw(true)
+```
+* ![](@program/dev/image/canvas/reserve.png)
+*
+* **示例代码**
+*
+* 第二次 draw() reserve 为 false。所以没有保留了上一次的绘制结果和在上下文设置的 fillStyle 'red'。
+*
+* ```javascript
+const ctx = wx.createCanvasContext('myCanvas')
+
+ctx.setFillStyle('red')
+ctx.fillRect(10, 10, 150, 100)
+ctx.draw()
+ctx.fillRect(50, 50, 150, 100)
+ctx.draw()
+```
+* ![](@program/dev/image/canvas/un-reserve.png) */
+        draw(
+            /** 本次绘制是否接着上一次绘制。即 reserve 参数为 false,则在本次调用绘制之前 native 层会先清空画布再继续绘制;若 reserve 参数为 true,则保留当前画布上的内容,本次调用 drawCanvas 绘制的内容覆盖在上面,默认 false。 */
+            reserve?: boolean,
+            /** 绘制完成后执行的回调函数 */
+            callback?: (...args: any[]) => any
+        ): void
+        /** [CanvasContext.drawImage(string imageResource, number sx, number sy, number sWidth, number sHeight, number dx, number dy, number dWidth, number dHeight)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.drawImage.html)
+*
+* 在插件中使用:支持
+*
+* 绘制图像到画布
+*
+* **示例代码**
+*
+* 有三个版本的写法:
+*
+* - drawImage(imageResource, dx, dy)
+* - drawImage(imageResource, dx, dy, dWidth, dHeight)
+* - drawImage(imageResource, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight) 从 1.9.0 起支持
+*
+* ```javascript
+const ctx = wx.createCanvasContext('myCanvas')
+
+wx.chooseImage({
+  success: function(res){
+    ctx.drawImage(res.tempFilePaths[0], 0, 0, 150, 100)
+    ctx.draw()
+  }
+})
+
+```
+* ![](@program/dev/image/canvas/draw-image.png) */
+        drawImage(
+            /** 所要绘制的图片资源(网络图片要通过 getImageInfo / downloadFile 先下载) */
+            imageResource: string,
+            /** imageResource的左上角在目标 canvas 上 x 轴的位置 */
+            dx: number,
+            /** imageResource的左上角在目标 canvas 上 y 轴的位置 */
+            dy: number
+        ): void
+        /** [CanvasContext.drawImage(string imageResource, number sx, number sy, number sWidth, number sHeight, number dx, number dy, number dWidth, number dHeight)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.drawImage.html)
+*
+* 在插件中使用:支持
+*
+* 绘制图像到画布
+*
+* **示例代码**
+*
+* 有三个版本的写法:
+*
+* - drawImage(imageResource, dx, dy)
+* - drawImage(imageResource, dx, dy, dWidth, dHeight)
+* - drawImage(imageResource, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight) 从 1.9.0 起支持
+*
+* ```javascript
+const ctx = wx.createCanvasContext('myCanvas')
+
+wx.chooseImage({
+  success: function(res){
+    ctx.drawImage(res.tempFilePaths[0], 0, 0, 150, 100)
+    ctx.draw()
+  }
+})
+
+```
+* ![](@program/dev/image/canvas/draw-image.png) */
+        drawImage(
+            /** 所要绘制的图片资源(网络图片要通过 getImageInfo / downloadFile 先下载) */
+            imageResource: string,
+            /** imageResource的左上角在目标 canvas 上 x 轴的位置 */
+            dx: number,
+            /** imageResource的左上角在目标 canvas 上 y 轴的位置 */
+            dy: number,
+            /** 在目标画布上绘制imageResource的宽度,允许对绘制的imageResource进行缩放 */
+            dWidth: number,
+            /** 在目标画布上绘制imageResource的高度,允许对绘制的imageResource进行缩放 */
+            dHeight: number
+        ): void
+        /** [CanvasContext.drawImage(string imageResource, number sx, number sy, number sWidth, number sHeight, number dx, number dy, number dWidth, number dHeight)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.drawImage.html)
+*
+* 在插件中使用:支持
+*
+* 绘制图像到画布
+*
+* **示例代码**
+*
+* 有三个版本的写法:
+*
+* - drawImage(imageResource, dx, dy)
+* - drawImage(imageResource, dx, dy, dWidth, dHeight)
+* - drawImage(imageResource, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight) 从 1.9.0 起支持
+*
+* ```javascript
+const ctx = wx.createCanvasContext('myCanvas')
+
+wx.chooseImage({
+  success: function(res){
+    ctx.drawImage(res.tempFilePaths[0], 0, 0, 150, 100)
+    ctx.draw()
+  }
+})
+
+```
+* ![](@program/dev/image/canvas/draw-image.png) */
+        drawImage(
+            /** 所要绘制的图片资源(网络图片要通过 getImageInfo / downloadFile 先下载) */
+            imageResource: string,
+            /** 需要绘制到画布中的,imageResource的矩形(裁剪)选择框的左上角 x 坐标 */
+            sx: number,
+            /** 需要绘制到画布中的,imageResource的矩形(裁剪)选择框的左上角 y 坐标 */
+            sy: number,
+            /** 需要绘制到画布中的,imageResource的矩形(裁剪)选择框的宽度 */
+            sWidth: number,
+            /** 需要绘制到画布中的,imageResource的矩形(裁剪)选择框的高度 */
+            sHeight: number,
+            /** imageResource的左上角在目标 canvas 上 x 轴的位置 */
+            dx: number,
+            /** imageResource的左上角在目标 canvas 上 y 轴的位置 */
+            dy: number,
+            /** 在目标画布上绘制imageResource的宽度,允许对绘制的imageResource进行缩放 */
+            dWidth: number,
+            /** 在目标画布上绘制imageResource的高度,允许对绘制的imageResource进行缩放 */
+            dHeight: number
+        ): void
+        /** [CanvasContext.fill()](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.fill.html)
+*
+* 在插件中使用:支持
+*
+* 对当前路径中的内容进行填充。默认的填充色为黑色。
+*
+* **示例代码**
+*
+* 如果当前路径没有闭合,fill() 方法会将起点和终点进行连接,然后填充。
+*
+* ```javascript
+const ctx = wx.createCanvasContext('myCanvas')
+ctx.moveTo(10, 10)
+ctx.lineTo(100, 10)
+ctx.lineTo(100, 100)
+ctx.fill()
+ctx.draw()
+```
+*
+* fill() 填充的的路径是从 beginPath() 开始计算,但是不会将 fillRect() 包含进去。
+*
+* ![](@program/dev/image/canvas/fill-line.png)
+*
+* ```javascript
+const ctx = wx.createCanvasContext('myCanvas')
+// begin path
+ctx.rect(10, 10, 100, 30)
+ctx.setFillStyle('yellow')
+ctx.fill()
+
+// begin another path
+ctx.beginPath()
+ctx.rect(10, 40, 100, 30)
+
+// only fill this rect, not in current path
+ctx.setFillStyle('blue')
+ctx.fillRect(10, 70, 100, 30)
+
+ctx.rect(10, 100, 100, 30)
+
+// it will fill current path
+ctx.setFillStyle('red')
+ctx.fill()
+ctx.draw()
+```
+*
+* ![](@program/dev/image/canvas/fill-path.png) */
+        fill(): void
+        /** [CanvasContext.fillRect(number x, number y, number width, number height)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.fillRect.html)
+*
+* 在插件中使用:支持
+*
+* 填充一个矩形。用 [`setFillStyle`](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.setFillStyle.html) 设置矩形的填充色,如果没设置默认是黑色。
+*
+* **示例代码**
+*
+* ```javascript
+const ctx = wx.createCanvasContext('myCanvas')
+ctx.setFillStyle('red')
+ctx.fillRect(10, 10, 150, 75)
+ctx.draw()
+```
+* ![](@program/dev/image/canvas/fill-rect.png) */
+        fillRect(
+            /** 矩形路径左上角的横坐标 */
+            x: number,
+            /** 矩形路径左上角的纵坐标 */
+            y: number,
+            /** 矩形路径的宽度 */
+            width: number,
+            /** 矩形路径的高度 */
+            height: number
+        ): void
+        /** [CanvasContext.fillText(string text, number x, number y, number maxWidth)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.fillText.html)
+*
+* 在插件中使用:支持
+*
+* 在画布上绘制被填充的文本
+*
+* **示例代码**
+*
+* ```javascript
+const ctx = wx.createCanvasContext('myCanvas')
+
+ctx.setFontSize(20)
+ctx.fillText('Hello', 20, 20)
+ctx.fillText('MINA', 100, 100)
+
+ctx.draw()
+```
+* ![](@program/dev/image/canvas/text.png) */
+        fillText(
+            /** 在画布上输出的文本 */
+            text: string,
+            /** 绘制文本的左上角 x 坐标位置 */
+            x: number,
+            /** 绘制文本的左上角 y 坐标位置 */
+            y: number,
+            /** 需要绘制的最大宽度,可选 */
+            maxWidth?: number
+        ): void
+        /** [CanvasContext.lineTo(number x, number y)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.lineTo.html)
+*
+* 在插件中使用:支持
+*
+* 增加一个新点,然后创建一条从上次指定点到目标点的线。用 `stroke` 方法来画线条
+*
+* **示例代码**
+*
+* ```javascript
+const ctx = wx.createCanvasContext('myCanvas')
+ctx.moveTo(10, 10)
+ctx.rect(10, 10, 100, 50)
+ctx.lineTo(110, 60)
+ctx.stroke()
+ctx.draw()
+```
+* ![](@program/dev/image/canvas/line-to.png) */
+        lineTo(
+            /** 目标位置的 x 坐标 */
+            x: number,
+            /** 目标位置的 y 坐标 */
+            y: number
+        ): void
+        /** [CanvasContext.moveTo(number x, number y)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.moveTo.html)
+*
+* 在插件中使用:支持
+*
+* 把路径移动到画布中的指定点,不创建线条。用 `stroke` 方法来画线条
+*
+* **示例代码**
+*
+* ```javascript
+const ctx = wx.createCanvasContext('myCanvas')
+ctx.moveTo(10, 10)
+ctx.lineTo(100, 10)
+
+ctx.moveTo(10, 50)
+ctx.lineTo(100, 50)
+ctx.stroke()
+ctx.draw()
+```
+* ![](@program/dev/image/canvas/move-to.png) */
+        moveTo(
+            /** 目标位置的 x 坐标 */
+            x: number,
+            /** 目标位置的 y 坐标 */
+            y: number
+        ): void
+        /** [CanvasContext.quadraticCurveTo(number cpx, number cpy, number x, number y)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.quadraticCurveTo.html)
+*
+* 在插件中使用:支持
+*
+* 创建二次贝塞尔曲线路径。曲线的起始点为路径中前一个点。
+*
+* **示例代码**
+*
+* ```javascript
+const ctx = wx.createCanvasContext('myCanvas')
+
+// Draw points
+ctx.beginPath()
+ctx.arc(20, 20, 2, 0, 2 * Math.PI)
+ctx.setFillStyle('red')
+ctx.fill()
+
+ctx.beginPath()
+ctx.arc(200, 20, 2, 0, 2 * Math.PI)
+ctx.setFillStyle('lightgreen')
+ctx.fill()
+
+ctx.beginPath()
+ctx.arc(20, 100, 2, 0, 2 * Math.PI)
+ctx.setFillStyle('blue')
+ctx.fill()
+
+ctx.setFillStyle('black')
+ctx.setFontSize(12)
+
+// Draw guides
+ctx.beginPath()
+ctx.moveTo(20, 20)
+ctx.lineTo(20, 100)
+ctx.lineTo(200, 20)
+ctx.setStrokeStyle('#AAAAAA')
+ctx.stroke()
+
+// Draw quadratic curve
+ctx.beginPath()
+ctx.moveTo(20, 20)
+ctx.quadraticCurveTo(20, 100, 200, 20)
+ctx.setStrokeStyle('black')
+ctx.stroke()
+
+ctx.draw()
+```
+*
+* ![](@program/dev/image/canvas/quadratic-curve-to.png)
+*
+* 针对 moveTo(20, 20) quadraticCurveTo(20, 100, 200, 20) 的三个关键坐标如下:
+*
+* - 红色:起始点(20, 20)
+* - 蓝色:控制点(20, 100)
+* - 绿色:终止点(200, 20) */
+        quadraticCurveTo(
+            /** 贝塞尔控制点的 x 坐标 */
+            cpx: number,
+            /** 贝塞尔控制点的 y 坐标 */
+            cpy: number,
+            /** 结束点的 x 坐标 */
+            x: number,
+            /** 结束点的 y 坐标 */
+            y: number
+        ): void
+        /** [CanvasContext.rect(number x, number y, number width, number height)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.rect.html)
+*
+* 在插件中使用:支持
+*
+* 创建一个矩形路径。需要用 [`fill`](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.fill.html) 或者 [`stroke`](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.stroke.html) 方法将矩形真正的画到 `canvas` 中
+*
+* **示例代码**
+*
+* ```javascript
+const ctx = wx.createCanvasContext('myCanvas')
+ctx.rect(10, 10, 150, 75)
+ctx.setFillStyle('red')
+ctx.fill()
+ctx.draw()
+```
+* ![](@program/dev/image/canvas/fill-rect.png) */
+        rect(
+            /** 矩形路径左上角的横坐标 */
+            x: number,
+            /** 矩形路径左上角的纵坐标 */
+            y: number,
+            /** 矩形路径的宽度 */
+            width: number,
+            /** 矩形路径的高度 */
+            height: number
+        ): void
+        /** [CanvasContext.restore()](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.restore.html)
+*
+* 在插件中使用:支持
+*
+* 恢复之前保存的绘图上下文。
+*
+* **示例代码**
+*
+* ```javascript
+const ctx = wx.createCanvasContext('myCanvas')
+
+// save the default fill style
+ctx.save()
+ctx.setFillStyle('red')
+ctx.fillRect(10, 10, 150, 100)
+
+// restore to the previous saved state
+ctx.restore()
+ctx.fillRect(50, 50, 150, 100)
+
+ctx.draw()
+```
+* ![](@program/dev/image/canvas/save-restore.png) */
+        restore(): void
+        /** [CanvasContext.rotate(number rotate)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.rotate.html)
+*
+* 在插件中使用:支持
+*
+* 以原点为中心顺时针旋转当前坐标轴。多次调用旋转的角度会叠加。原点可以用 `translate` 方法修改。
+*
+* **示例代码**
+*
+* ```javascript
+const ctx = wx.createCanvasContext('myCanvas')
+
+ctx.strokeRect(100, 10, 150, 100)
+ctx.rotate(20 * Math.PI / 180)
+ctx.strokeRect(100, 10, 150, 100)
+ctx.rotate(20 * Math.PI / 180)
+ctx.strokeRect(100, 10, 150, 100)
+
+ctx.draw()
+```
+* ![](@program/dev/image/canvas/rotate.png) */
+        rotate(
+            /** 旋转角度,以弧度计 degrees * Math.PI/180;degrees 范围为 0-360 */
+            rotate: number
+        ): void
+        /** [CanvasContext.save()](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.save.html)
+*
+* 在插件中使用:支持
+*
+* 保存绘图上下文。
+*
+* **示例代码**
+*
+* ```javascript
+const ctx = wx.createCanvasContext('myCanvas')
+
+// save the default fill style
+ctx.save()
+ctx.setFillStyle('red')
+ctx.fillRect(10, 10, 150, 100)
+
+// restore to the previous saved state
+ctx.restore()
+ctx.fillRect(50, 50, 150, 100)
+
+ctx.draw()
+```
+* ![](@program/dev/image/canvas/save-restore.png) */
+        save(): void
+        /** [CanvasContext.scale(number scaleWidth, number scaleHeight)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.scale.html)
+*
+* 在插件中使用:支持
+*
+* 在调用后,之后创建的路径其横纵坐标会被缩放。多次调用倍数会相乘。
+*
+* **示例代码**
+*
+* ```javascript
+const ctx = wx.createCanvasContext('myCanvas')
+
+ctx.strokeRect(10, 10, 25, 15)
+ctx.scale(2, 2)
+ctx.strokeRect(10, 10, 25, 15)
+ctx.scale(2, 2)
+ctx.strokeRect(10, 10, 25, 15)
+
+ctx.draw()
+```
+* ![](@program/dev/image/canvas/scale.png) */
+        scale(
+            /** 横坐标缩放的倍数 (1 = 100%,0.5 = 50%,2 = 200%) */
+            scaleWidth: number,
+            /** 纵坐标轴缩放的倍数 (1 = 100%,0.5 = 50%,2 = 200%) */
+            scaleHeight: number
+        ): void
+        /** [CanvasContext.setFillStyle(string|[CanvasGradient](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasGradient.html) color)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.setFillStyle.html)
+*
+* 在插件中使用:支持
+* @deprecated 基础库版本 [1.9.90](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 起已废弃,请使用 [CanvasContext.fillStyle](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.html) 替换
+*
+* 设置填充色。
+*
+* **代码示例**
+*
+* ```js
+const ctx = wx.createCanvasContext('myCanvas')
+ctx.setFillStyle('red')
+ctx.fillRect(10, 10, 150, 75)
+ctx.draw()
+```
+* ![](@program/dev/image/canvas/fill-rect.png) */
+        setFillStyle(
+            /** 填充的颜色,默认颜色为 black。 */
+            color: string | CanvasGradient
+        ): void
+        /** [CanvasContext.setFontSize(number fontSize)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.setFontSize.html)
+*
+* 在插件中使用:支持
+* @deprecated 基础库版本 [1.9.90](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 起已废弃,请使用 [CanvasContext.font](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.html) 替换
+*
+* 设置字体的字号
+*
+* **示例代码**
+*
+* ```javascript
+const ctx = wx.createCanvasContext('myCanvas')
+
+ctx.setFontSize(20)
+ctx.fillText('20', 20, 20)
+ctx.setFontSize(30)
+ctx.fillText('30', 40, 40)
+ctx.setFontSize(40)
+ctx.fillText('40', 60, 60)
+ctx.setFontSize(50)
+ctx.fillText('50', 90, 90)
+
+ctx.draw()
+```
+* ![](@program/dev/image/canvas/font-size.png) */
+        setFontSize(
+            /** 字体的字号 */
+            fontSize: number
+        ): void
+        /** [CanvasContext.setGlobalAlpha(number alpha)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.setGlobalAlpha.html)
+*
+* 在插件中使用:支持
+* @deprecated 基础库版本 [1.9.90](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 起已废弃,请使用 [CanvasContext.globalAlpha](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.html) 替换
+*
+* 设置全局画笔透明度。
+*
+* **示例代码**
+*
+* ```javascript
+const ctx = wx.createCanvasContext('myCanvas')
+
+ctx.setFillStyle('red')
+ctx.fillRect(10, 10, 150, 100)
+ctx.setGlobalAlpha(0.2)
+ctx.setFillStyle('blue')
+ctx.fillRect(50, 50, 150, 100)
+ctx.setFillStyle('yellow')
+ctx.fillRect(100, 100, 150, 100)
+
+ctx.draw()
+```
+* ![](@program/dev/image/canvas/global-alpha.png) */
+        setGlobalAlpha(
+            /** 透明度。范围 0-1,0 表示完全透明,1 表示完全不透明。 */
+            alpha: number
+        ): void
+        /** [CanvasContext.setLineCap(string lineCap)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.setLineCap.html)
+*
+* 在插件中使用:支持
+* @deprecated 基础库版本 [1.9.90](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 起已废弃,请使用 [CanvasContext.lineCap](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.html) 替换
+*
+* 设置线条的端点样式
+*
+* **示例代码**
+*
+* ```javascript
+const ctx = wx.createCanvasContext('myCanvas')
+ctx.beginPath()
+ctx.moveTo(10, 10)
+ctx.lineTo(150, 10)
+ctx.stroke()
+
+ctx.beginPath()
+ctx.setLineCap('butt')
+ctx.setLineWidth(10)
+ctx.moveTo(10, 30)
+ctx.lineTo(150, 30)
+ctx.stroke()
+
+ctx.beginPath()
+ctx.setLineCap('round')
+ctx.setLineWidth(10)
+ctx.moveTo(10, 50)
+ctx.lineTo(150, 50)
+ctx.stroke()
+
+ctx.beginPath()
+ctx.setLineCap('square')
+ctx.setLineWidth(10)
+ctx.moveTo(10, 70)
+ctx.lineTo(150, 70)
+ctx.stroke()
+
+ctx.draw()
+```
+* ![](@program/dev/image/canvas/line-cap.png) */
+        setLineCap(
+            /** 线条的结束端点样式
+             *
+             * 参数 lineCap 可选值:
+             * - 'butt': 向线条的每个末端添加平直的边缘。;
+             * - 'round': 向线条的每个末端添加圆形线帽。;
+             * - 'square': 向线条的每个末端添加正方形线帽。; */
+            lineCap: 'butt' | 'round' | 'square'
+        ): void
+        /** [CanvasContext.setLineDash(Array.&lt;number&gt; pattern, number offset)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.setLineDash.html)
+*
+* 需要基础库: `1.6.0`
+*
+* 在插件中使用:支持
+* @deprecated 基础库版本 [1.9.90](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 起已废弃,请使用 [CanvasContext.lineDashOffset](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.html) 替换
+*
+* 设置虚线样式。
+*
+* **示例代码**
+*
+* ```javascript
+const ctx = wx.createCanvasContext('myCanvas')
+
+ctx.setLineDash([10, 20], 5);
+
+ctx.beginPath();
+ctx.moveTo(0,100);
+ctx.lineTo(400, 100);
+ctx.stroke();
+
+ctx.draw()
+```
+* ![](@program/dev/image/canvas/set-line-dash.png) */
+        setLineDash(
+            /** 一组描述交替绘制线段和间距(坐标空间单位)长度的数字 */
+            pattern: number[],
+            /** 虚线偏移量 */
+            offset: number
+        ): void
+        /** [CanvasContext.setLineJoin(string lineJoin)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.setLineJoin.html)
+*
+* 在插件中使用:支持
+* @deprecated 基础库版本 [1.9.90](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 起已废弃,请使用 [CanvasContext.lineJoin](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.html) 替换
+*
+* 设置线条的交点样式
+*
+* **示例代码**
+*
+* ```javascript
+const ctx = wx.createCanvasContext('myCanvas')
+ctx.beginPath()
+ctx.moveTo(10, 10)
+ctx.lineTo(100, 50)
+ctx.lineTo(10, 90)
+ctx.stroke()
+
+ctx.beginPath()
+ctx.setLineJoin('bevel')
+ctx.setLineWidth(10)
+ctx.moveTo(50, 10)
+ctx.lineTo(140, 50)
+ctx.lineTo(50, 90)
+ctx.stroke()
+
+ctx.beginPath()
+ctx.setLineJoin('round')
+ctx.setLineWidth(10)
+ctx.moveTo(90, 10)
+ctx.lineTo(180, 50)
+ctx.lineTo(90, 90)
+ctx.stroke()
+
+ctx.beginPath()
+ctx.setLineJoin('miter')
+ctx.setLineWidth(10)
+ctx.moveTo(130, 10)
+ctx.lineTo(220, 50)
+ctx.lineTo(130, 90)
+ctx.stroke()
+
+ctx.draw()
+```
+* ![](@program/dev/image/canvas/line-join.png) */
+        setLineJoin(
+            /** 线条的结束交点样式
+             *
+             * 参数 lineJoin 可选值:
+             * - 'bevel': 斜角;
+             * - 'round': 圆角;
+             * - 'miter': 尖角; */
+            lineJoin: 'bevel' | 'round' | 'miter'
+        ): void
+        /** [CanvasContext.setLineWidth(number lineWidth)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.setLineWidth.html)
+*
+* 在插件中使用:支持
+* @deprecated 基础库版本 [1.9.90](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 起已废弃,请使用 [CanvasContext.lineWidth](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.html) 替换
+*
+* 设置线条的宽度
+*
+* **示例代码**
+*
+* ```javascript
+const ctx = wx.createCanvasContext('myCanvas')
+ctx.beginPath()
+ctx.moveTo(10, 10)
+ctx.lineTo(150, 10)
+ctx.stroke()
+
+ctx.beginPath()
+ctx.setLineWidth(5)
+ctx.moveTo(10, 30)
+ctx.lineTo(150, 30)
+ctx.stroke()
+
+ctx.beginPath()
+ctx.setLineWidth(10)
+ctx.moveTo(10, 50)
+ctx.lineTo(150, 50)
+ctx.stroke()
+
+ctx.beginPath()
+ctx.setLineWidth(15)
+ctx.moveTo(10, 70)
+ctx.lineTo(150, 70)
+ctx.stroke()
+
+ctx.draw()
+```
+*
+* ![](@program/dev/image/canvas/line-width.png) */
+        setLineWidth(
+            /** 线条的宽度,单位px */
+            lineWidth: number
+        ): void
+        /** [CanvasContext.setMiterLimit(number miterLimit)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.setMiterLimit.html)
+*
+* 在插件中使用:支持
+* @deprecated 基础库版本 [1.9.90](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 起已废弃,请使用 [CanvasContext.miterLimit](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.html) 替换
+*
+* 设置最大斜接长度。斜接长度指的是在两条线交汇处内角和外角之间的距离。当 [CanvasContext.setLineJoin()](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.setLineJoin.html) 为 miter 时才有效。超过最大倾斜长度的,连接处将以 lineJoin 为 bevel 来显示。
+*
+* **示例代码**
+*
+* ```javascript
+const ctx = wx.createCanvasContext('myCanvas')
+ctx.beginPath()
+ctx.setLineWidth(10)
+ctx.setLineJoin('miter')
+ctx.setMiterLimit(1)
+ctx.moveTo(10, 10)
+ctx.lineTo(100, 50)
+ctx.lineTo(10, 90)
+ctx.stroke()
+
+ctx.beginPath()
+ctx.setLineWidth(10)
+ctx.setLineJoin('miter')
+ctx.setMiterLimit(2)
+ctx.moveTo(50, 10)
+ctx.lineTo(140, 50)
+ctx.lineTo(50, 90)
+ctx.stroke()
+
+ctx.beginPath()
+ctx.setLineWidth(10)
+ctx.setLineJoin('miter')
+ctx.setMiterLimit(3)
+ctx.moveTo(90, 10)
+ctx.lineTo(180, 50)
+ctx.lineTo(90, 90)
+ctx.stroke()
+
+ctx.beginPath()
+ctx.setLineWidth(10)
+ctx.setLineJoin('miter')
+ctx.setMiterLimit(4)
+ctx.moveTo(130, 10)
+ctx.lineTo(220, 50)
+ctx.lineTo(130, 90)
+ctx.stroke()
+
+ctx.draw()
+```
+* ![](@program/dev/image/canvas/miter-limit.png) */
+        setMiterLimit(
+            /** 最大斜接长度 */
+            miterLimit: number
+        ): void
+        /** [CanvasContext.setShadow(number offsetX, number offsetY, number blur, string color)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.setShadow.html)
+*
+* 在插件中使用:支持
+* @deprecated 基础库版本 [1.9.90](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 起已废弃,请使用 [CanvasContext.shadowOffsetX|CanvasContext.shadowOffsetY|CanvasContext.shadowColor|CanvasContext.shadowBlur](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.html) 替换
+*
+* 设定阴影样式。
+*
+* **示例代码**
+*
+* ```javascript
+const ctx = wx.createCanvasContext('myCanvas')
+ctx.setFillStyle('red')
+ctx.setShadow(10, 50, 50, 'blue')
+ctx.fillRect(10, 10, 150, 75)
+ctx.draw()
+```
+* ![](@program/dev/image/canvas/shadow.png) */
+        setShadow(
+            /** 阴影相对于形状在水平方向的偏移,默认值为 0。 */
+            offsetX: number,
+            /** 阴影相对于形状在竖直方向的偏移,默认值为 0。 */
+            offsetY: number,
+            /** 阴影的模糊级别,数值越大越模糊。范围 0- 100。,默认值为 0。 */
+            blur: number,
+            /** 阴影的颜色。默认值为 black。 */
+            color: string
+        ): void
+        /** [CanvasContext.setStrokeStyle(string|[CanvasGradient](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasGradient.html) color)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.setStrokeStyle.html)
+*
+* 在插件中使用:支持
+* @deprecated 基础库版本 [1.9.90](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 起已废弃,请使用 [CanvasContext.strokeStyle](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.html) 替换
+*
+* 设置描边颜色。
+*
+* **代码示例**
+*
+* ```js
+const ctx = wx.createCanvasContext('myCanvas')
+ctx.setStrokeStyle('red')
+ctx.strokeRect(10, 10, 150, 75)
+ctx.draw()
+```
+* ![](@program/dev/image/canvas/stroke-rect.png) */
+        setStrokeStyle(
+            /** 描边的颜色,默认颜色为 black。 */
+            color: string | CanvasGradient
+        ): void
+        /** [CanvasContext.setTextAlign(string align)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.setTextAlign.html)
+*
+* 需要基础库: `1.1.0`
+*
+* 在插件中使用:支持
+*
+* 设置文字的对齐
+*
+* **示例代码**
+*
+* ```javascript
+const ctx = wx.createCanvasContext('myCanvas')
+
+ctx.setStrokeStyle('red')
+ctx.moveTo(150, 20)
+ctx.lineTo(150, 170)
+ctx.stroke()
+
+ctx.setFontSize(15)
+ctx.setTextAlign('left')
+ctx.fillText('textAlign=left', 150, 60)
+
+ctx.setTextAlign('center')
+ctx.fillText('textAlign=center', 150, 80)
+
+ctx.setTextAlign('right')
+ctx.fillText('textAlign=right', 150, 100)
+
+ctx.draw()
+```
+*
+* ![](@program/dev/image/canvas/set-text-align.png) */
+        setTextAlign(
+            /** 文字的对齐方式
+             *
+             * 参数 align 可选值:
+             * - 'left': 左对齐;
+             * - 'center': 居中对齐;
+             * - 'right': 右对齐; */
+            align: 'left' | 'center' | 'right'
+        ): void
+        /** [CanvasContext.setTextBaseline(string textBaseline)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.setTextBaseline.html)
+*
+* 需要基础库: `1.4.0`
+*
+* 在插件中使用:支持
+*
+* 设置文字的竖直对齐
+*
+* **示例代码**
+*
+* ```javascript
+const ctx = wx.createCanvasContext('myCanvas')
+
+ctx.setStrokeStyle('red')
+ctx.moveTo(5, 75)
+ctx.lineTo(295, 75)
+ctx.stroke()
+
+ctx.setFontSize(20)
+
+ctx.setTextBaseline('top')
+ctx.fillText('top', 5, 75)
+
+ctx.setTextBaseline('middle')
+ctx.fillText('middle', 50, 75)
+
+ctx.setTextBaseline('bottom')
+ctx.fillText('bottom', 120, 75)
+
+ctx.setTextBaseline('normal')
+ctx.fillText('normal', 200, 75)
+
+ctx.draw()
+```
+* ![](@program/dev/image/canvas/set-text-baseline.png) */
+        setTextBaseline(
+            /** 文字的竖直对齐方式
+             *
+             * 参数 textBaseline 可选值:
+             * - 'top': 顶部对齐;
+             * - 'bottom': 底部对齐;
+             * - 'middle': 居中对齐;
+             * - 'normal': ; */
+            textBaseline: 'top' | 'bottom' | 'middle' | 'normal'
+        ): void
+        /** [CanvasContext.setTransform(number scaleX, number skewX, number skewY, number scaleY, number translateX, number translateY)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.setTransform.html)
+         *
+         * 需要基础库: `1.9.90`
+         *
+         * 在插件中使用:支持
+         *
+         * 使用矩阵重新设置(覆盖)当前变换的方法 */
+        setTransform(
+            /** 水平缩放 */
+            scaleX: number,
+            /** 水平倾斜 */
+            skewX: number,
+            /** 垂直倾斜 */
+            skewY: number,
+            /** 垂直缩放 */
+            scaleY: number,
+            /** 水平移动 */
+            translateX: number,
+            /** 垂直移动 */
+            translateY: number
+        ): void
+        /** [CanvasContext.stroke()](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.stroke.html)
+*
+* 在插件中使用:支持
+*
+* 画出当前路径的边框。默认颜色色为黑色。
+*
+* **示例代码**
+*
+* ```javascript
+const ctx = wx.createCanvasContext('myCanvas')
+ctx.moveTo(10, 10)
+ctx.lineTo(100, 10)
+ctx.lineTo(100, 100)
+ctx.stroke()
+ctx.draw()
+```
+* ![](@program/dev/image/canvas/stroke-line.png)
+*
+* stroke() 描绘的的路径是从 beginPath() 开始计算,但是不会将 strokeRect() 包含进去。
+*
+* ```javascript
+const ctx = wx.createCanvasContext('myCanvas')
+// begin path
+ctx.rect(10, 10, 100, 30)
+ctx.setStrokeStyle('yellow')
+ctx.stroke()
+
+// begin another path
+ctx.beginPath()
+ctx.rect(10, 40, 100, 30)
+
+// only stoke this rect, not in current path
+ctx.setStrokeStyle('blue')
+ctx.strokeRect(10, 70, 100, 30)
+
+ctx.rect(10, 100, 100, 30)
+
+// it will stroke current path
+ctx.setStrokeStyle('red')
+ctx.stroke()
+ctx.draw()
+```
+*
+* ![](@program/dev/image/canvas/stroke-path.png) */
+        stroke(): void
+        /** [CanvasContext.strokeRect(number x, number y, number width, number height)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.strokeRect.html)
+*
+* 在插件中使用:支持
+*
+* 画一个矩形(非填充)。 用 [`setStrokeStyle`](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.setStrokeStyle.html) 设置矩形线条的颜色,如果没设置默认是黑色。
+*
+* **示例代码**
+*
+* ```javascript
+const ctx = wx.createCanvasContext('myCanvas')
+ctx.setStrokeStyle('red')
+ctx.strokeRect(10, 10, 150, 75)
+ctx.draw()
+```
+* ![](@program/dev/image/canvas/stroke-rect.png) */
+        strokeRect(
+            /** 矩形路径左上角的横坐标 */
+            x: number,
+            /** 矩形路径左上角的纵坐标 */
+            y: number,
+            /** 矩形路径的宽度 */
+            width: number,
+            /** 矩形路径的高度 */
+            height: number
+        ): void
+        /** [CanvasContext.strokeText(string text, number x, number y, number maxWidth)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.strokeText.html)
+         *
+         * 需要基础库: `1.9.90`
+         *
+         * 在插件中使用:支持
+         *
+         * 给定的 (x, y) 位置绘制文本描边的方法 */
+        strokeText(
+            /** 要绘制的文本 */
+            text: string,
+            /** 文本起始点的 x 轴坐标 */
+            x: number,
+            /** 文本起始点的 y 轴坐标 */
+            y: number,
+            /** 需要绘制的最大宽度,可选 */
+            maxWidth?: number
+        ): void
+        /** [CanvasContext.transform(number scaleX, number skewX, number skewY, number scaleY, number translateX, number translateY)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.transform.html)
+         *
+         * 需要基础库: `1.9.90`
+         *
+         * 在插件中使用:支持
+         *
+         * 使用矩阵多次叠加当前变换的方法 */
+        transform(
+            /** 水平缩放 */
+            scaleX: number,
+            /** 水平倾斜 */
+            skewX: number,
+            /** 垂直倾斜 */
+            skewY: number,
+            /** 垂直缩放 */
+            scaleY: number,
+            /** 水平移动 */
+            translateX: number,
+            /** 垂直移动 */
+            translateY: number
+        ): void
+        /** [CanvasContext.translate(number x, number y)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.translate.html)
+*
+* 在插件中使用:支持
+*
+* 对当前坐标系的原点 (0, 0) 进行变换。默认的坐标系原点为页面左上角。
+*
+* **示例代码**
+*
+* ```javascript
+const ctx = wx.createCanvasContext('myCanvas')
+
+ctx.strokeRect(10, 10, 150, 100)
+ctx.translate(20, 20)
+ctx.strokeRect(10, 10, 150, 100)
+ctx.translate(20, 20)
+ctx.strokeRect(10, 10, 150, 100)
+
+ctx.draw()
+```
+*
+* ![](@program/dev/image/canvas/translate.png) */
+        translate(
+            /** 水平坐标平移量 */
+            x: number,
+            /** 竖直坐标平移量 */
+            y: number
+        ): void
+        /** [Object CanvasContext.measureText(string text)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.measureText.html)
+         *
+         * 需要基础库: `1.9.90`
+         *
+         * 在插件中使用:支持
+         *
+         * 测量文本尺寸信息。目前仅返回文本宽度。同步接口。 */
+        measureText(
+            /** 要测量的文本 */
+            text: string
+        ): TextMetrics
+        /** [[CanvasGradient](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasGradient.html) CanvasContext.createCircularGradient(number x, number y, number r)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.createCircularGradient.html)
+*
+* 在插件中使用:支持
+*
+* 创建一个圆形的渐变颜色。起点在圆心,终点在圆环。返回的`CanvasGradient`对象需要使用 [CanvasGradient.addColorStop()](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasGradient.addColorStop.html) 来指定渐变点,至少要两个。
+*
+* **示例代码**
+*
+* ```javascript
+const ctx = wx.createCanvasContext('myCanvas')
+
+// Create circular gradient
+const grd = ctx.createCircularGradient(75, 50, 50)
+grd.addColorStop(0, 'red')
+grd.addColorStop(1, 'white')
+
+// Fill with gradient
+ctx.setFillStyle(grd)
+ctx.fillRect(10, 10, 150, 80)
+ctx.draw()
+```
+* ![](@program/dev/image/canvas/circular-gradient.png) */
+        createCircularGradient(
+            /** 圆心的 x 坐标 */
+            x: number,
+            /** 圆心的 y 坐标 */
+            y: number,
+            /** 圆的半径 */
+            r: number
+        ): CanvasGradient
+        /** [[CanvasGradient](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasGradient.html) CanvasContext.createLinearGradient(number x0, number y0, number x1, number y1)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.createLinearGradient.html)
+*
+* 在插件中使用:支持
+*
+* 创建一个线性的渐变颜色。返回的`CanvasGradient`对象需要使用 [CanvasGradient.addColorStop()](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasGradient.addColorStop.html) 来指定渐变点,至少要两个。
+*
+* **示例代码**
+*
+* ```javascript
+const ctx = wx.createCanvasContext('myCanvas')
+
+// Create linear gradient
+const grd = ctx.createLinearGradient(0, 0, 200, 0)
+grd.addColorStop(0, 'red')
+grd.addColorStop(1, 'white')
+
+// Fill with gradient
+ctx.setFillStyle(grd)
+ctx.fillRect(10, 10, 150, 80)
+ctx.draw()
+```
+* ![](@program/dev/image/canvas/linear-gradient.png) */
+        createLinearGradient(
+            /** 起点的 x 坐标 */
+            x0: number,
+            /** 起点的 y 坐标 */
+            y0: number,
+            /** 终点的 x 坐标 */
+            x1: number,
+            /** 终点的 y 坐标 */
+            y1: number
+        ): CanvasGradient
+    }
+    interface CanvasGradient {
+        /** [CanvasGradient.addColorStop(number stop, string color)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasGradient.addColorStop.html)
+*
+* 在插件中使用:不支持
+*
+* 添加颜色的渐变点。小于最小 stop 的部分会按最小 stop 的 color 来渲染,大于最大 stop 的部分会按最大 stop 的 color 来渲染
+*
+* **示例代码**
+*
+* ```js
+const ctx = wx.createCanvasContext('myCanvas')
+
+// Create circular gradient
+const grd = ctx.createLinearGradient(30, 10, 120, 10)
+grd.addColorStop(0, 'red')
+grd.addColorStop(0.16, 'orange')
+grd.addColorStop(0.33, 'yellow')
+grd.addColorStop(0.5, 'green')
+grd.addColorStop(0.66, 'cyan')
+grd.addColorStop(0.83, 'blue')
+grd.addColorStop(1, 'purple')
+
+// Fill with gradient
+ctx.setFillStyle(grd)
+ctx.fillRect(10, 10, 150, 80)
+ctx.draw()
+```
+* ![](@program/dev/image/canvas/color-stop.png) */
+        addColorStop(
+            /** 表示渐变中开始与结束之间的位置,范围 0-1。 */
+            stop: number,
+            /** 渐变点的颜色。 */
+            color: string
+        ): void
+    }
+    interface CloseSyncError {
+        /** 错误信息
+         *
+         * | 错误信息 | 说明 |
+         * | - | - |
+         * | bad file descriptor | 无效的文件描述符 | */ errMsg: string
+        /** 错误码
+         *
+         * | 错误信息 | 说明 |
+         * | - | - |
+         * | bad file descriptor | 无效的文件描述符 | */ errCode: number
+    }
+    interface Console {
+        /** [console.debug()](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/console.debug.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 向调试面板中打印 debug 日志 */
+        debug(
+            /** 日志内容,可以有任意多个。 */
+            ...args: any[]
+        ): void
+        /** [console.error()](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/console.error.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 向调试面板中打印 error 日志 */
+        error(
+            /** 日志内容,可以有任意多个。 */
+            ...args: any[]
+        ): void
+        /** [console.group(string label)](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/console.group.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 在调试面板中创建一个新的分组。随后输出的内容都会被添加一个缩进,表示该内容属于当前分组。调用 [console.groupEnd](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/console.groupEnd.html)之后分组结束。
+         *
+         * **注意**
+         *
+         * 仅在工具中有效,在 vConsole 中为空函数实现。 */
+        group(
+            /** 分组标记,可选。 */
+            label?: string
+        ): void
+        /** [console.groupEnd()](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/console.groupEnd.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 结束由 [console.group](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/console.group.html) 创建的分组
+         *
+         * **注意**
+         *
+         * 仅在工具中有效,在 vConsole 中为空函数实现。 */
+        groupEnd(): void
+        /** [console.info()](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/console.info.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 向调试面板中打印 info 日志 */
+        info(
+            /** 日志内容,可以有任意多个。 */
+            ...args: any[]
+        ): void
+        /** [console.log()](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/console.log.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 向调试面板中打印 log 日志 */
+        log(
+            /** 日志内容,可以有任意多个。 */
+            ...args: any[]
+        ): void
+        /** [console.warn()](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/console.warn.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 向调试面板中打印 warn 日志 */
+        warn(
+            /** 日志内容,可以有任意多个。 */
+            ...args: any[]
+        ): void
+    }
+    interface DownloadTask {
+        /** [DownloadTask.abort()](https://developers.weixin.qq.com/miniprogram/dev/api/network/download/DownloadTask.abort.html)
+         *
+         * 需要基础库: `1.4.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 中断下载任务 */
+        abort(): void
+        /** [DownloadTask.offHeadersReceived(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/download/DownloadTask.offHeadersReceived.html)
+         *
+         * 需要基础库: `2.1.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 取消监听 HTTP Response Header 事件 */
+        offHeadersReceived(
+            /** HTTP Response Header 事件的回调函数 */
+            callback?: OffHeadersReceivedCallback
+        ): void
+        /** [DownloadTask.offProgressUpdate(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/download/DownloadTask.offProgressUpdate.html)
+         *
+         * 需要基础库: `2.1.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 取消监听下载进度变化事件 */
+        offProgressUpdate(
+            /** 下载进度变化事件的回调函数 */
+            callback?: DownloadTaskOffProgressUpdateCallback
+        ): void
+        /** [DownloadTask.onHeadersReceived(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/download/DownloadTask.onHeadersReceived.html)
+         *
+         * 需要基础库: `2.1.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 监听 HTTP Response Header 事件。会比请求完成事件更早 */
+        onHeadersReceived(
+            /** HTTP Response Header 事件的回调函数 */
+            callback: OnHeadersReceivedCallback
+        ): void
+        /** [DownloadTask.onProgressUpdate(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/download/DownloadTask.onProgressUpdate.html)
+         *
+         * 需要基础库: `1.4.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 监听下载进度变化事件 */
+        onProgressUpdate(
+            /** 下载进度变化事件的回调函数 */
+            callback: DownloadTaskOnProgressUpdateCallback
+        ): void
+    }
+    interface EditorContext {
+        /** [EditorContext.blur(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/editor/EditorContext.blur.html)
+         *
+         * 需要基础库: `2.8.3`
+         *
+         * 在插件中使用:支持
+         *
+         * 编辑器失焦,同时收起键盘。 */
+        blur(option?: BlurOption): void
+        /** [EditorContext.clear(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/editor/EditorContext.clear.html)
+         *
+         * 需要基础库: `2.7.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 清空编辑器内容 */
+        clear(option?: ClearOption): void
+        /** [EditorContext.format(string name, string value)](https://developers.weixin.qq.com/miniprogram/dev/api/media/editor/EditorContext.format.html)
+         *
+         * 需要基础库: `2.7.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 修改样式
+         *
+         * ****
+         *
+         * ## 支持设置的样式列表
+         * | name                                                      | value                           | verson |
+         * | --------------------------------------------------------- | ------------------------------- | ------ |
+         * | bold                                                      |                                 | 2.7.0  |
+         * | italic                                                    |                                 | 2.7.0  |
+         * | underline                                                 |                                 | 2.7.0  |
+         * | strike                                                    |                                 | 2.7.0  |
+         * | ins                                                       |                                 | 2.7.0  |
+         * | script                                                    | sub / super                     | 2.7.0  |
+         * | header                                                    | H1 / H2 / h3 / H4 / h5 /  H6    | 2.7.0  |
+         * | align                                                     | left / center / right / justify | 2.7.0  |
+         * | direction                                                 | rtl                             | 2.7.0  |
+         * | indent                                                    | -1 / +1                         | 2.7.0  |
+         * | list                                                      | ordered / bullet / check        | 2.7.0  |
+         * | color                                                     | hex color                       | 2.7.0  |
+         * | backgroundColor                                           | hex color                       | 2.7.0  |
+         * | margin/marginTop/marginBottom/marginLeft/marginRight      | css style                       | 2.7.0  |
+         * | padding/paddingTop/paddingBottom/paddingLeft/paddingRight | css style                       | 2.7.0  |
+         * | font/fontSize/fontStyle/fontVariant/fontWeight/fontFamily | css style                       | 2.7.0  |
+         * | lineHeight                                                | css style                       | 2.7.0  |
+         * | letterSpacing                                             | css style                       | 2.7.0  |
+         * | textDecoration                                            | css style                       | 2.7.0  |
+         * | textIndent                                                | css style                       | 2.8.0  |
+         * | wordWrap                                                  | css style                       | 2.10.2 |
+         * | wordBreak                                                 | css style                       | 2.10.2 |
+         * | whiteSpace                                                | css style                       | 2.10.2 |
+         *
+         * 对已经应用样式的选区设置会取消样式。css style 表示 css 中规定的允许值。 */
+        format(
+            /** 属性 */
+            name: string,
+            /** 值 */
+            value?: string
+        ): void
+        /** [EditorContext.getContents(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/editor/EditorContext.getContents.html)
+         *
+         * 需要基础库: `2.7.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 获取编辑器内容 */
+        getContents(option?: GetContentsOption): void
+        /** [EditorContext.getSelectionText(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/editor/EditorContext.getSelectionText.html)
+         *
+         * 需要基础库: `2.10.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 获取编辑器已选区域内的纯文本内容。当编辑器失焦或未选中一段区间时,返回内容为空。 */
+        getSelectionText(option?: GetSelectionTextOption): void
+        /** [EditorContext.insertDivider(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/editor/EditorContext.insertDivider.html)
+         *
+         * 需要基础库: `2.7.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 插入分割线 */
+        insertDivider(option?: InsertDividerOption): void
+        /** [EditorContext.insertImage(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/editor/EditorContext.insertImage.html)
+*
+* 需要基础库: `2.7.0`
+*
+* 在插件中使用:支持
+*
+* 插入图片。
+*
+* 地址为临时文件时,获取的编辑器html格式内容中 <img> 标签增加属性 data-local,delta 格式内容中图片 attributes 属性增加 data-local 字段,该值为传入的临时文件地址。
+*
+* 开发者可选择在提交阶段上传图片到服务器,获取到网络地址后进行替换。替换时对于html内容应替换掉 <img> 的 src 值,对于 delta 内容应替换掉 `insert { image: abc }` 值。
+*
+* **示例代码**
+*
+* ```javascript
+this.editorCtx.insertImage({
+  src: 'xx',
+  width: '100px',
+  height: '50px',
+  extClass: className
+})
+``` */
+        insertImage(option: InsertImageOption): void
+        /** [EditorContext.insertText(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/editor/EditorContext.insertText.html)
+         *
+         * 需要基础库: `2.7.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 覆盖当前选区,设置一段文本 */
+        insertText(option: InsertTextOption): void
+        /** [EditorContext.redo(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/editor/EditorContext.redo.html)
+         *
+         * 需要基础库: `2.7.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 恢复 */
+        redo(option?: RedoOption): void
+        /** [EditorContext.removeFormat(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/editor/EditorContext.removeFormat.html)
+         *
+         * 需要基础库: `2.7.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 清除当前选区的样式 */
+        removeFormat(option?: RemoveFormatOption): void
+        /** [EditorContext.scrollIntoView()](https://developers.weixin.qq.com/miniprogram/dev/api/media/editor/EditorContext.scrollIntoView.html)
+         *
+         * 需要基础库: `2.8.3`
+         *
+         * 在插件中使用:支持
+         *
+         * 使得编辑器光标处滚动到窗口可视区域内。 */
+        scrollIntoView(): void
+        /** [EditorContext.setContents(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/editor/EditorContext.setContents.html)
+         *
+         * 需要基础库: `2.7.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 初始化编辑器内容,html和delta同时存在时仅delta生效 */
+        setContents(option: SetContentsOption): void
+        /** [EditorContext.undo(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/editor/EditorContext.undo.html)
+         *
+         * 需要基础库: `2.7.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 撤销 */
+        undo(option?: UndoOption): void
+    }
+    interface EntryList {
+        /** [Array.&lt;[PerformanceEntry](https://developers.weixin.qq.com/miniprogram/dev/api/base/performance/PerformanceEntry.html)&gt; EntryList.getEntries()](https://developers.weixin.qq.com/miniprogram/dev/api/base/performance/EntryList.getEntries.html)
+         *
+         * 需要基础库: `2.11.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 该方法返回当前列表中的所有性能数据 */
+        getEntries(): PerformanceEntry[]
+        /** [Array.&lt;[PerformanceEntry](https://developers.weixin.qq.com/miniprogram/dev/api/base/performance/PerformanceEntry.html)&gt; EntryList.getEntriesByName(string name, string entryType)](https://developers.weixin.qq.com/miniprogram/dev/api/base/performance/EntryList.getEntriesByName.html)
+         *
+         * 需要基础库: `2.11.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 获取当前列表中所有名称为 [name] 且类型为 [entryType] 的性能数据 */
+        getEntriesByName(
+            name: string,
+            entryType?: string
+        ): PerformanceEntry[]
+        /** [Array.&lt;[PerformanceEntry](https://developers.weixin.qq.com/miniprogram/dev/api/base/performance/PerformanceEntry.html)&gt; EntryList.getEntriesByType(string entryType)](https://developers.weixin.qq.com/miniprogram/dev/api/base/performance/EntryList.getEntriesByType.html)
+         *
+         * 需要基础库: `2.11.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 获取当前列表中所有类型为 [entryType] 的性能数据 */
+        getEntriesByType(entryType: string): PerformanceEntry[]
+    }
+    interface EventChannel {
+        /** [EventChannel.emit(string eventName, any args)](https://developers.weixin.qq.com/miniprogram/dev/api/route/EventChannel.emit.html)
+         *
+         * 需要基础库: `2.7.3`
+         *
+         * 在插件中使用:支持
+         *
+         * 触发一个事件 */
+        emit(
+            /** 事件名称 */
+            eventName: string,
+            /** 事件参数 */
+            ...args: any
+        ): void
+        /** [EventChannel.off(string eventName, function fn)](https://developers.weixin.qq.com/miniprogram/dev/api/route/EventChannel.off.html)
+         *
+         * 需要基础库: `2.7.3`
+         *
+         * 在插件中使用:支持
+         *
+         * 取消监听一个事件。给出第二个参数时,只取消给出的监听函数,否则取消所有监听函数 */
+        off(
+            /** 事件名称 */
+            eventName: string,
+            /** 事件监听函数 */
+            fn: EventCallback
+        ): void
+        /** [EventChannel.on(string eventName, function fn)](https://developers.weixin.qq.com/miniprogram/dev/api/route/EventChannel.on.html)
+         *
+         * 需要基础库: `2.7.3`
+         *
+         * 在插件中使用:支持
+         *
+         * 持续监听一个事件 */
+        on(
+            /** 事件名称 */
+            eventName: string,
+            /** 事件监听函数 */
+            fn: EventCallback
+        ): void
+        /** [EventChannel.once(string eventName, function fn)](https://developers.weixin.qq.com/miniprogram/dev/api/route/EventChannel.once.html)
+         *
+         * 需要基础库: `2.7.3`
+         *
+         * 在插件中使用:支持
+         *
+         * 监听一个事件一次,触发后失效 */
+        once(
+            /** 事件名称 */
+            eventName: string,
+            /** 事件监听函数 */
+            fn: EventCallback
+        ): void
+    }
+    interface FileSystemManager {
+        /** [Array.&lt;string&gt; FileSystemManager.readdirSync(string dirPath)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.readdirSync.html)
+*
+* 在插件中使用:需要基础库 `2.19.2`
+*
+* [FileSystemManager.readdir](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.readdir.html) 的同步版本
+*
+* **注意事项</title>
+* - readdir接口无法访问文件系统根路径(wxfile://)。
+* <title>示例代码**
+*
+* ```js
+const fs = wx.getFileSystemManager()
+fs.readdir({
+  dirPath: `${wx.env.USER_DATA_PATH}/example`,
+  success(res) {
+    console.log(res.files)
+  },
+  fail(res) {
+    console.error(res)
+  }
+})
+
+// 同步接口
+try {
+  const res = fs.readdirSync(`${wx.env.USER_DATA_PATH}/example`)
+  console.log(res)
+} catch(e) {
+  console.error(e)
+}
+``` */
+        readdirSync(
+            /** 要读取的目录路径 (本地路径) */
+            dirPath: string
+        ): string[]
+        /** [ArrayBuffer FileSystemManager.readCompressedFileSync(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.readCompressedFileSync.html)
+*
+* 需要基础库: `2.21.1`
+*
+* 在插件中使用:不支持
+*
+* 同步读取指定压缩类型的本地文件内容
+*
+* **示例代码**
+*
+* ```js
+const fs = wx.getFileSystemManager()
+
+// 异步接口
+fs.readCompressedFile({
+  filePath: '${wx.env.USER_DATA_PATH}/hello.br',
+  compressionAlgorithm: 'br',
+  success(res) {
+    console.log(res.data)
+  },
+  fail(res) {
+    console.log('readCompressedFile fail', res)
+  }
+})
+
+// 同步接口
+try {
+  const data = fs.readCompressedFileSync({
+    filePath: '${wx.env.USER_DATA_PATH}/hello.br',
+    compressionAlgorithm: 'br',
+  })
+  console.log(data)
+} catch (err) {
+  console.log(err)
+}
+``` */
+        readCompressedFileSync(
+            option: ReadCompressedFileSyncOption
+        ): ArrayBuffer
+        /** [FileSystemManager.access(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.access.html)
+*
+* 在插件中使用:需要基础库 `2.19.2`
+*
+* 判断文件/目录是否存在
+*
+* **示例代码**
+*
+* ```js
+const fs = wx.getFileSystemManager()
+// 判断文件/目录是否存在
+fs.access({
+  path: `${wx.env.USER_DATA_PATH}/hello.txt`,
+  success(res) {
+    // 文件存在
+    console.log(res)
+  },
+  fail(res) {
+    // 文件不存在或其他错误
+    console.error(res)
+  }
+})
+
+// 同步接口
+try {
+  fs.accessSync(`${wx.env.USER_DATA_PATH}/hello.txt`)
+} catch(e) {
+  console.error(e)
+}
+``` */
+        access(option: AccessOption): void
+        /** [FileSystemManager.accessSync(string path)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.accessSync.html)
+*
+* 在插件中使用:需要基础库 `2.19.2`
+*
+* [FileSystemManager.access](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.access.html) 的同步版本
+*
+* **示例代码**
+*
+* ```js
+const fs = wx.getFileSystemManager()
+// 判断文件/目录是否存在
+fs.access({
+  path: `${wx.env.USER_DATA_PATH}/hello.txt`,
+  success(res) {
+    // 文件存在
+    console.log(res)
+  },
+  fail(res) {
+    // 文件不存在或其他错误
+    console.error(res)
+  }
+})
+
+// 同步接口
+try {
+  fs.accessSync(`${wx.env.USER_DATA_PATH}/hello.txt`)
+} catch(e) {
+  console.error(e)
+}
+``` */
+        accessSync(
+            /** 要判断是否存在的文件/目录路径 (本地路径) */
+            path: string
+        ): void
+        /** [FileSystemManager.appendFile(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.appendFile.html)
+*
+* 需要基础库: `2.1.0`
+*
+* 在插件中使用:需要基础库 `2.19.2`
+*
+* 在文件结尾追加内容
+*
+* **示例代码**
+*
+* ```js
+const fs = wx.getFileSystemManager()
+
+fs.appendFile({
+  filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+  data: 'some text',
+  encoding: 'utf8',
+  success(res) {
+    console.log(res)
+  },
+  fail(res) {
+    console.error(res)
+  }
+})
+
+// 同步接口
+try {
+  fs.appendFileSync(`${wx.env.USER_DATA_PATH}/hello.txt`, 'some text', 'utf8')
+} catch(e) {
+  console.error(e)
+}
+``` */
+        appendFile(option: AppendFileOption): void
+        /** [FileSystemManager.appendFileSync(string filePath, string|ArrayBuffer data, string encoding)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.appendFileSync.html)
+*
+* 需要基础库: `2.1.0`
+*
+* 在插件中使用:需要基础库 `2.19.2`
+*
+* [FileSystemManager.appendFile](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.appendFile.html) 的同步版本
+*
+* **示例代码**
+*
+* ```js
+const fs = wx.getFileSystemManager()
+
+fs.appendFile({
+  filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+  data: 'some text',
+  encoding: 'utf8',
+  success(res) {
+    console.log(res)
+  },
+  fail(res) {
+    console.error(res)
+  }
+})
+
+// 同步接口
+try {
+  fs.appendFileSync(`${wx.env.USER_DATA_PATH}/hello.txt`, 'some text', 'utf8')
+} catch(e) {
+  console.error(e)
+}
+``` */
+        appendFileSync(
+            /** 要追加内容的文件路径 (本地路径) */
+            filePath: string,
+            /** 要追加的文本或二进制数据 */
+            data: string | ArrayBuffer,
+            /** 指定写入文件的字符编码
+             *
+             * 参数 encoding 可选值:
+             * - 'ascii': ;
+             * - 'base64': ;
+             * - 'binary': ;
+             * - 'hex': ;
+             * - 'ucs2': 以小端序读取;
+             * - 'ucs-2': 以小端序读取;
+             * - 'utf16le': 以小端序读取;
+             * - 'utf-16le': 以小端序读取;
+             * - 'utf-8': ;
+             * - 'utf8': ;
+             * - 'latin1': ; */
+            encoding?:
+                | 'ascii'
+                | 'base64'
+                | 'binary'
+                | 'hex'
+                | 'ucs2'
+                | 'ucs-2'
+                | 'utf16le'
+                | 'utf-16le'
+                | 'utf-8'
+                | 'utf8'
+                | 'latin1'
+        ): void
+        /** [FileSystemManager.close(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.close.html)
+*
+* 需要基础库: `2.16.1`
+*
+* 在插件中使用:需要基础库 `2.19.2`
+*
+* 关闭文件
+*
+* **示例代码**
+*
+* ```js
+const fs = wx.getFileSystemManager()
+// 打开文件
+fs.open({
+  filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+  flag: 'a+',
+  success(res) {
+    // 关闭文件
+    fs.close({
+      fd: res.fd
+    })
+  }
+})
+``` */
+        close(option: FileSystemManagerCloseOption): void
+        /** [FileSystemManager.copyFile(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.copyFile.html)
+*
+* 在插件中使用:需要基础库 `2.19.2`
+*
+* 复制文件
+*
+* **示例代码**
+*
+* ```js
+const fs = wx.getFileSystemManager()
+fs.copyFile({
+  srcPath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+  destPath: `${wx.env.USER_DATA_PATH}/hello_copy.txt`
+  success(res) {
+    console.log(res)
+  },
+  fail(res) {
+    console.error(res)
+  }
+})
+
+// 同步接口
+try {
+  fs.copyFileSync(
+    `${wx.env.USER_DATA_PATH}/hello.txt`,
+    `${wx.env.USER_DATA_PATH}/hello_copy.txt`
+  )
+} catch(e) {
+  console.error(e)
+}
+``` */
+        copyFile(option: CopyFileOption): void
+        /** [FileSystemManager.copyFileSync(string srcPath, string destPath)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.copyFileSync.html)
+*
+* 在插件中使用:需要基础库 `2.19.2`
+*
+* [FileSystemManager.copyFile](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.copyFile.html) 的同步版本
+*
+* **示例代码**
+*
+* ```js
+const fs = wx.getFileSystemManager()
+fs.copyFile({
+  srcPath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+  destPath: `${wx.env.USER_DATA_PATH}/hello_copy.txt`
+  success(res) {
+    console.log(res)
+  },
+  fail(res) {
+    console.error(res)
+  }
+})
+
+// 同步接口
+try {
+  fs.copyFileSync(
+    `${wx.env.USER_DATA_PATH}/hello.txt`,
+    `${wx.env.USER_DATA_PATH}/hello_copy.txt`
+  )
+} catch(e) {
+  console.error(e)
+}
+``` */
+        copyFileSync(
+            /** 源文件路径,支持本地路径 */
+            srcPath: string,
+            /** 目标文件路径,支持本地路径 */
+            destPath: string
+        ): void
+        /** [FileSystemManager.fstat(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.fstat.html)
+*
+* 需要基础库: `2.16.1`
+*
+* 在插件中使用:需要基础库 `2.19.2`
+*
+* 获取文件的状态信息
+*
+* **示例代码**
+*
+* ```js
+const fs = wx.getFileSystemManager()
+// 打开文件
+fs.open({
+  filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+  flag: 'a+',
+  success(res) {
+    // 获取文件的状态信息
+    fs.fstat({
+      fd: res.fd,
+      success(res) {
+        console.log(res.stats)
+      }
+    })
+  }
+})
+``` */
+        fstat(option: FstatOption): void
+        /** [FileSystemManager.ftruncate(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.ftruncate.html)
+*
+* 需要基础库: `2.16.1`
+*
+* 在插件中使用:需要基础库 `2.19.2`
+*
+* 对文件内容进行截断操作
+*
+* **示例代码**
+*
+* ```js
+const fs = wx.getFileSystemManager()
+// 打开文件
+fs.open({
+  filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+  flag: 'a+',
+  success(res) {
+    // 对文件内容进行截断操作
+    fs.ftruncate({
+      fd: res.fd,
+      length: 10, // 从第10个字节开始截断文件
+      success(res) {
+        console.log(res)
+      }
+    })
+  }
+})
+``` */
+        ftruncate(option: FtruncateOption): void
+        /** [FileSystemManager.getFileInfo(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.getFileInfo.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 获取该小程序下的 本地临时文件 或 本地缓存文件 信息 */
+        getFileInfo(option: FileSystemManagerGetFileInfoOption): void
+        /** [FileSystemManager.getSavedFileList(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.getSavedFileList.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 获取该小程序下已保存的本地缓存文件列表 */
+        getSavedFileList(option?: FileSystemManagerGetSavedFileListOption): void
+        /** [FileSystemManager.mkdir(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.mkdir.html)
+*
+* 在插件中使用:需要基础库 `2.19.2`
+*
+* 创建目录
+*
+* **示例代码**
+*
+* ```js
+const fs = wx.getFileSystemManager()
+fs.mkdir({
+  dirPath: `${wx.env.USER_DATA_PATH}/example`,
+  recursive: false
+  success(res) {
+    console.log(res)
+  },
+  fail(res) {
+    console.error(res)
+  }
+})
+
+// 同步接口
+try {
+  fs.mkdirSync(`${wx.env.USER_DATA_PATH}/example`, false)
+} catch(e) {
+  console.error(e)
+}
+``` */
+        mkdir(option: MkdirOption): void
+        /** [FileSystemManager.mkdirSync(string dirPath, boolean recursive)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.mkdirSync.html)
+*
+* 在插件中使用:需要基础库 `2.19.2`
+*
+* [FileSystemManager.mkdir](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.mkdir.html) 的同步版本
+*
+* **示例代码**
+*
+* ```js
+const fs = wx.getFileSystemManager()
+fs.mkdir({
+  dirPath: `${wx.env.USER_DATA_PATH}/example`,
+  recursive: false
+  success(res) {
+    console.log(res)
+  },
+  fail(res) {
+    console.error(res)
+  }
+})
+
+// 同步接口
+try {
+  fs.mkdirSync(`${wx.env.USER_DATA_PATH}/example`, false)
+} catch(e) {
+  console.error(e)
+}
+``` */
+        mkdirSync(
+            /** 创建的目录路径 (本地路径) */
+            dirPath: string,
+            /** 需要基础库: `2.3.0`
+             *
+             * 是否在递归创建该目录的上级目录后再创建该目录。如果对应的上级目录已经存在,则不创建该上级目录。如 dirPath 为 a/b/c/d 且 recursive 为 true,将创建 a 目录,再在 a 目录下创建 b 目录,以此类推直至创建 a/b/c 目录下的 d 目录。 */
+            recursive?: boolean
+        ): void
+        /** [FileSystemManager.open(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.open.html)
+*
+* 需要基础库: `2.16.1`
+*
+* 在插件中使用:需要基础库 `2.19.2`
+*
+* 打开文件,返回文件描述符
+*
+* **示例代码**
+*
+* ```js
+const fs = wx.getFileSystemManager()
+fs.open({
+  filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+  flag: 'a+',
+  success(res) {
+    console.log(res.fd)
+  }
+})
+``` */
+        open(option: OpenOption): void
+        /** [FileSystemManager.read(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.read.html)
+*
+* 需要基础库: `2.16.1`
+*
+* 在插件中使用:需要基础库 `2.19.2`
+*
+* 读文件
+*
+* **示例代码**
+*
+* ```js
+const fs = wx.getFileSystemManager()
+const ab = new ArrayBuffer(1024)
+// 打开文件
+fs.open({
+  filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+  flag: 'a+',
+  success(res) {
+    // 读取文件到 ArrayBuffer 中
+    fs.read({
+      fd: res.fd,
+      arrayBuffer: ab,
+      length: 10,
+      success(res) {
+        console.log(res)
+      }
+    })
+  }
+})
+``` */
+        read(option: ReadOption): void
+        /** [FileSystemManager.readCompressedFile(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.readCompressedFile.html)
+*
+* 需要基础库: `2.21.1`
+*
+* 在插件中使用:不支持
+*
+* 读取指定压缩类型的本地文件内容
+*
+* **示例代码**
+*
+* ```js
+const fs = wx.getFileSystemManager()
+
+// 异步接口
+fs.readCompressedFile({
+  filePath: '${wx.env.USER_DATA_PATH}/hello.br',
+  compressionAlgorithm: 'br',
+  success(res) {
+    console.log(res.data)
+  },
+  fail(res) {
+    console.log('readCompressedFile fail', res)
+  }
+})
+
+// 同步接口
+const data = fs.readCompressedFileSync({
+  filePath: '${wx.env.USER_DATA_PATH}/hello.br',
+  compressionAlgorithm: 'br',
+})
+console.log(data)
+``` */
+        readCompressedFile(option: ReadCompressedFileOption): void
+        /** [FileSystemManager.readFile(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.readFile.html)
+*
+* 在插件中使用:需要基础库 `2.19.2`
+*
+* 读取本地文件内容
+*
+* **示例代码**
+*
+* ```js
+const fs = wx.getFileSystemManager()
+fs.readFile({
+  filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+  encoding: 'utf8',
+  position: 0,
+  success(res) {
+    console.log(res.data)
+  },
+  fail(res) {
+    console.error(res)
+  }
+})
+
+// 同步接口
+try {
+  const res = fs.readFileSync(`${wx.env.USER_DATA_PATH}/hello.txt`, 'utf8', 0)
+  console.log(res)
+} catch(e) {
+  console.error(e)
+}
+``` */
+        readFile(option: ReadFileOption): void
+        /** [FileSystemManager.readZipEntry(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.readZipEntry.html)
+*
+* 需要基础库: `2.17.3`
+*
+* 在插件中使用:需要基础库 `2.19.2`
+*
+* 读取压缩包内的文件
+*
+* **示例代码**
+*
+* ```js
+const fs = wx.getFileSystemManager()
+// 读取zip内某个或多个文件
+fs.readZipEntry({
+  filePath: 'wxfile://from/to.zip',
+  entries: [{
+    path: 'some_folder/my_file.txt', // zip内文件路径
+    encoding: 'utf-8', // 指定读取文件的字符编码,如果不传 encoding,则以 ArrayBuffer 格式读取文件的二进制内容
+    position: 0, // 从文件指定位置开始读,如果不指定,则从文件头开始读。读取的范围应该是左闭右开区间 [position, position+length)。有效范围:[0, fileLength - 1]。单位:byte
+    length: 10000, // 指定文件的长度,如果不指定,则读到文件末尾。有效范围:[1, fileLength]。单位:byte
+  }, {
+    path: 'other_folder/orther_file.txt', // zip内文件路径
+  }],
+  success(res) {
+    console.log(res.entries)
+    // res.entries === {
+    //     'some_folder/my_file.txt': {
+    //         errMsg: 'readZipEntry:ok',
+    //         data: 'xxxxxx'
+    //     },
+    //     'other_folder/orther_file.txt': {
+    //         data: (ArrayBuffer)
+    //     }
+    // }
+  },
+  fail(res) {
+    console.log(res.errMsg)
+  },
+})
+
+// 读取zip内所有文件。允许指定统一的encoding。position、length则不再允许指定,分别默认为0和文件长度
+fs.readZipEntry({
+  filePath: 'wxfile://from/to.zip',
+  entries: 'all'
+  encoding: 'utf-8', // 统一指定读取文件的字符编码,如果不传 encoding,则以 ArrayBuffer 格式读取文件的二进制内容
+  success(res) {
+    console.log(res.entries)
+    // res.entries === {
+    //     'some_folder/my_file.txt': {
+    //         errMsg: 'readZipEntry:ok',
+    //         data: 'xxxxxx'
+    //     },
+    //     'other_folder/orther_file.txt': {
+    //         errMsg: 'readZipEntry:ok',
+    //         data: 'xxxxxx'
+    //     }
+    //  }
+  },
+  fail(res) {
+    console.log(res.errMsg)
+  },
+})
+``` */
+        readZipEntry(option: ReadZipEntryOption): void
+        /** [FileSystemManager.readdir(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.readdir.html)
+*
+* 在插件中使用:需要基础库 `2.19.2`
+*
+* 读取目录内文件列表
+*
+* **注意事项</title>
+* - readdir接口无法访问文件系统根路径(wxfile://)。
+* <title>示例代码**
+*
+* ```js
+const fs = wx.getFileSystemManager()
+fs.readdir({
+  dirPath: `${wx.env.USER_DATA_PATH}/example`,
+  success(res) {
+    console.log(res.files)
+  },
+  fail(res) {
+    console.error(res)
+  }
+})
+
+// 同步接口
+try {
+  const res = fs.readdirSync(`${wx.env.USER_DATA_PATH}/example`)
+  console.log(res)
+} catch(e) {
+  console.error(e)
+}
+``` */
+        readdir(option: ReaddirOption): void
+        /** [FileSystemManager.removeSavedFile(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.removeSavedFile.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 删除该小程序下已保存的本地缓存文件 */
+        removeSavedFile(option: FileSystemManagerRemoveSavedFileOption): void
+        /** [FileSystemManager.rename(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.rename.html)
+*
+* 在插件中使用:需要基础库 `2.19.2`
+*
+* 重命名文件。可以把文件从 oldPath 移动到 newPath
+*
+* **示例代码**
+*
+* ```js
+const fs = wx.getFileSystemManager()
+fs.rename({
+  oldPath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+  newPath: `${wx.env.USER_DATA_PATH}/hello_new.txt`,
+  success(res) {
+    console.log(res)
+  },
+  fail(res) {
+    console.error(res)
+  }
+})
+
+// 同步接口
+try {
+  const res = fs.renameSync(
+    `${wx.env.USER_DATA_PATH}/hello.txt`,
+    `${wx.env.USER_DATA_PATH}/hello_new.txt`
+  )
+  console.log(res)
+} catch(e) {
+  console.error(e)
+}
+``` */
+        rename(option: RenameOption): void
+        /** [FileSystemManager.renameSync(string oldPath, string newPath)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.renameSync.html)
+*
+* 在插件中使用:需要基础库 `2.19.2`
+*
+* [FileSystemManager.rename](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.rename.html) 的同步版本
+*
+* **示例代码**
+*
+* ```js
+const fs = wx.getFileSystemManager()
+fs.rename({
+  oldPath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+  newPath: `${wx.env.USER_DATA_PATH}/hello_new.txt`,
+  success(res) {
+    console.log(res)
+  },
+  fail(res) {
+    console.error(res)
+  }
+})
+
+// 同步接口
+try {
+  const res = fs.renameSync(
+    `${wx.env.USER_DATA_PATH}/hello.txt`,
+    `${wx.env.USER_DATA_PATH}/hello_new.txt`
+  )
+  console.log(res)
+} catch(e) {
+  console.error(e)
+}
+``` */
+        renameSync(
+            /** 源文件路径,支持本地路径 */
+            oldPath: string,
+            /** 新文件路径,支持本地路径 */
+            newPath: string
+        ): void
+        /** [FileSystemManager.rmdir(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.rmdir.html)
+*
+* 在插件中使用:需要基础库 `2.19.2`
+*
+* 删除目录
+*
+* **示例代码**
+*
+* ```js
+const fs = wx.getFileSystemManager()
+fs.rmdir({
+  dirPath: `${wx.env.USER_DATA_PATH}/example`,
+  recursive: false,
+  success(res) {
+    console.log(res)
+  },
+  fail(res) {
+    console.error(res)
+  }
+})
+
+// 同步接口
+try {
+  const res = fs.rmdirSync(`${wx.env.USER_DATA_PATH}/example`, false)
+  console.log(res)
+} catch(e) {
+  console.error(e)
+}
+``` */
+        rmdir(option: RmdirOption): void
+        /** [FileSystemManager.rmdirSync(string dirPath, boolean recursive)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.rmdirSync.html)
+*
+* 在插件中使用:需要基础库 `2.19.2`
+*
+* [FileSystemManager.rmdir](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.rmdir.html) 的同步版本
+*
+* **示例代码**
+*
+* ```js
+const fs = wx.getFileSystemManager()
+fs.rmdir({
+  dirPath: `${wx.env.USER_DATA_PATH}/example`,
+  recursive: false,
+  success(res) {
+    console.log(res)
+  },
+  fail(res) {
+    console.error(res)
+  }
+})
+
+// 同步接口
+try {
+  const res = fs.rmdirSync(`${wx.env.USER_DATA_PATH}/example`, false)
+  console.log(res)
+} catch(e) {
+  console.error(e)
+}
+``` */
+        rmdirSync(
+            /** 要删除的目录路径 (本地路径) */
+            dirPath: string,
+            /** 需要基础库: `2.3.0`
+             *
+             * 是否递归删除目录。如果为 true,则删除该目录和该目录下的所有子目录以及文件。 */
+            recursive?: boolean
+        ): void
+        /** [FileSystemManager.saveFile(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.saveFile.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 保存临时文件到本地。此接口会移动临时文件,因此调用成功后,tempFilePath 将不可用。 */
+        saveFile(option: FileSystemManagerSaveFileOption): void
+        /** [FileSystemManager.stat(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.stat.html)
+         *
+         * 在插件中使用:需要基础库 `2.19.2`
+         *
+         * 获取文件 Stats 对象 */
+        stat(option: StatOption): void
+        /** [FileSystemManager.truncate(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.truncate.html)
+*
+* 需要基础库: `2.16.1`
+*
+* 在插件中使用:需要基础库 `2.19.2`
+*
+* 对文件内容进行截断操作
+*
+* **示例代码**
+*
+* ```js
+const fs = wx.getFileSystemManager()
+fs.truncate({
+  filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+  length: 10, // 从第10个字节开始截断
+  success(res) {
+    console.log(res)
+  }
+})
+``` */
+        truncate(option: TruncateOption): void
+        /** [FileSystemManager.unlink(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.unlink.html)
+*
+* 在插件中使用:需要基础库 `2.19.2`
+*
+* 删除文件
+*
+* **示例代码**
+*
+* ```js
+const fs = wx.getFileSystemManager()
+fs.unlink({
+  filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+  success(res) {
+    console.log(res)
+  },
+  fail(res) {
+    console.error(res)
+  }
+})
+
+// 同步接口
+try {
+  const res = fs.unlinkSync(`${wx.env.USER_DATA_PATH}/hello.txt`)
+  console.log(res)
+} catch(e) {
+  console.error(e)
+}
+``` */
+        unlink(option: UnlinkOption): void
+        /** [FileSystemManager.unlinkSync(string filePath)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.unlinkSync.html)
+*
+* 在插件中使用:需要基础库 `2.19.2`
+*
+* [FileSystemManager.unlink](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.unlink.html) 的同步版本
+*
+* **示例代码**
+*
+* ```js
+const fs = wx.getFileSystemManager()
+fs.unlink({
+  filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+  success(res) {
+    console.log(res)
+  },
+  fail(res) {
+    console.error(res)
+  }
+})
+
+// 同步接口
+try {
+  const res = fs.unlinkSync(`${wx.env.USER_DATA_PATH}/hello.txt`)
+  console.log(res)
+} catch(e) {
+  console.error(e)
+}
+``` */
+        unlinkSync(
+            /** 要删除的文件路径 (本地路径) */
+            filePath: string
+        ): void
+        /** [FileSystemManager.unzip(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.unzip.html)
+*
+* 在插件中使用:需要基础库 `2.19.2`
+*
+* 解压文件
+*
+* **示例代码**
+*
+* ```js
+const fs = wx.getFileSystemManager()
+fs.unzip({
+  zipFilePath: `${wx.env.USER_DATA_PATH}/example.zip`,
+  targetPath: '${wx.env.USER_DATA_PATH}/example',
+  success(res) {
+    console.log(res)
+  },
+  fail(res) {
+    console.error(res)
+  }
+})
+``` */
+        unzip(option: UnzipOption): void
+        /** [FileSystemManager.write(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.write.html)
+*
+* 需要基础库: `2.16.1`
+*
+* 在插件中使用:需要基础库 `2.19.2`
+*
+* 写入文件
+*
+* **示例代码**
+*
+* ```js
+const fs = wx.getFileSystemManager()
+// 打开文件
+fs.open({
+  filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+  flag: 'a+',
+  success(res) {
+    // 写入文件
+    fs.write({
+      fd: res.fd,
+      data: 'some text',
+      success(res) {
+        console.log(res.bytesWritten)
+      }
+    })
+  }
+})
+``` */
+        write(option: WriteOption): void
+        /** [FileSystemManager.writeFile(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.writeFile.html)
+*
+* 在插件中使用:需要基础库 `2.19.2`
+*
+* 写文件
+*
+* **示例代码**
+*
+* ```js
+const fs = wx.getFileSystemManager()
+fs.writeFile({
+  filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+  data: 'some text or arrayBuffer',
+  encoding: 'utf8',
+  success(res) {
+    console.log(res)
+  },
+  fail(res) {
+    console.error(res)
+  }
+})
+
+// 同步接口
+try {
+  const res = fs.writeFileSync(
+    `${wx.env.USER_DATA_PATH}/hello.txt`,
+    'some text or arrayBuffer',
+    'utf8'
+  )
+  console.log(res)
+} catch(e) {
+  console.error(e)
+}
+``` */
+        writeFile(option: WriteFileOption): void
+        /** [FileSystemManager.writeFileSync(string filePath, string|ArrayBuffer data, string encoding)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.writeFileSync.html)
+*
+* 在插件中使用:需要基础库 `2.19.2`
+*
+* [FileSystemManager.writeFile](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.writeFile.html) 的同步版本
+*
+* **示例代码**
+*
+* ```js
+const fs = wx.getFileSystemManager()
+fs.writeFile({
+  filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+  data: 'some text or arrayBuffer',
+  encoding: 'utf8',
+  success(res) {
+    console.log(res)
+  },
+  fail(res) {
+    console.error(res)
+  }
+})
+
+// 同步接口
+try {
+  const res = fs.writeFileSync(
+    `${wx.env.USER_DATA_PATH}/hello.txt`,
+    'some text or arrayBuffer',
+    'utf8'
+  )
+  console.log(res)
+} catch(e) {
+  console.error(e)
+}
+``` */
+        writeFileSync(
+            /** 要写入的文件路径 (本地路径) */
+            filePath: string,
+            /** 要写入的文本或二进制数据 */
+            data: string | ArrayBuffer,
+            /** 指定写入文件的字符编码
+             *
+             * 参数 encoding 可选值:
+             * - 'ascii': ;
+             * - 'base64': ;
+             * - 'binary': ;
+             * - 'hex': ;
+             * - 'ucs2': 以小端序读取;
+             * - 'ucs-2': 以小端序读取;
+             * - 'utf16le': 以小端序读取;
+             * - 'utf-16le': 以小端序读取;
+             * - 'utf-8': ;
+             * - 'utf8': ;
+             * - 'latin1': ; */
+            encoding?:
+                | 'ascii'
+                | 'base64'
+                | 'binary'
+                | 'hex'
+                | 'ucs2'
+                | 'ucs-2'
+                | 'utf16le'
+                | 'utf-16le'
+                | 'utf-8'
+                | 'utf8'
+                | 'latin1'
+        ): void
+        /** [[ReadResult](https://developers.weixin.qq.com/miniprogram/dev/api/file/ReadResult.html) FileSystemManager.readSync(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.readSync.html)
+*
+* 需要基础库: `2.16.1`
+*
+* 在插件中使用:需要基础库 `2.19.2`
+*
+* 读文件
+*
+* **示例代码**
+*
+* ```js
+const fs = wx.getFileSystemManager()
+const ab = new ArrayBuffer(1024)
+const fd = fs.openSync({
+  filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+  flag: 'a+'
+})
+const res = fs.readSync({
+  fd: fd,
+  arrayBuffer: ab,
+  length: 10
+})
+console.log(res)
+``` */
+        readSync(option: ReadSyncOption): ReadResult
+        /** [[Stats](https://developers.weixin.qq.com/miniprogram/dev/api/file/Stats.html) FileSystemManager.fstatSync(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.fstatSync.html)
+*
+* 需要基础库: `2.16.1`
+*
+* 在插件中使用:需要基础库 `2.19.2`
+*
+* 同步获取文件的状态信息
+*
+* **示例代码**
+*
+* ```js
+const fs = wx.getFileSystemManager()
+const fd = fs.openSync({
+  filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+  flag: 'a+'
+})
+const stats = fs.fstatSync({fd: fd})
+console.log(stats)
+``` */
+        fstatSync(option: FstatSyncOption): Stats
+        /** [[Stats](https://developers.weixin.qq.com/miniprogram/dev/api/file/Stats.html)|Array.&lt;[Stats](https://developers.weixin.qq.com/miniprogram/dev/api/file/Stats.html)&gt; FileSystemManager.statSync(string path, boolean recursive)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.statSync.html)
+         *
+         * 在插件中使用:需要基础库 `2.19.2`
+         *
+         * [FileSystemManager.stat](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.stat.html) 的同步版本 */
+        statSync(
+            /** 文件/目录路径 (本地路径) */
+            path: string,
+            /** 需要基础库: `2.3.0`
+             *
+             * 是否递归获取目录下的每个文件的 Stats 信息 */
+            recursive?: boolean
+        ): Stats | Stats[]
+        /** [[WriteResult](https://developers.weixin.qq.com/miniprogram/dev/api/file/WriteResult.html) FileSystemManager.writeSync(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.writeSync.html)
+*
+* 需要基础库: `2.16.1`
+*
+* 在插件中使用:需要基础库 `2.19.2`
+*
+* 同步写入文件
+*
+* **示例代码**
+*
+* ```js
+const fs = wx.getFileSystemManager()
+const fd = fs.openSync({
+  filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+  flag: 'a+'
+})
+const res = fs.writeSync({
+  fd: fd,
+  data: 'some text'
+})
+console.log(res.bytesWritten)
+``` */
+        writeSync(option: WriteSyncOption): WriteResult
+        /** [string FileSystemManager.openSync(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.openSync.html)
+*
+* 需要基础库: `2.16.1`
+*
+* 在插件中使用:需要基础库 `2.19.2`
+*
+* 同步打开文件,返回文件描述符
+*
+* **示例代码**
+*
+* ```js
+const fs = wx.getFileSystemManager()
+const fd = fs.openSync({
+  filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+  flag: 'a+'
+})
+console.log(fd)
+``` */
+        openSync(option: OpenSyncOption): string
+        /** [string FileSystemManager.saveFileSync(string tempFilePath, string filePath)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.saveFileSync.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * [FileSystemManager.saveFile](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.saveFile.html) 的同步版本 */
+        saveFileSync(
+            /** 临时存储文件路径 (本地路径) */
+            tempFilePath: string,
+            /** 要存储的文件路径 (本地路径) */
+            filePath?: string
+        ): string
+        /** [string|ArrayBuffer FileSystemManager.readFileSync(string filePath, string encoding, number position, number length)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.readFileSync.html)
+*
+* 在插件中使用:需要基础库 `2.19.2`
+*
+* [FileSystemManager.readFile](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.readFile.html) 的同步版本
+*
+* **示例代码**
+*
+* ```js
+const fs = wx.getFileSystemManager()
+fs.readFile({
+  filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+  encoding: 'utf8',
+  position: 0,
+  success(res) {
+    console.log(res.data)
+  },
+  fail(res) {
+    console.error(res)
+  }
+})
+
+// 同步接口
+try {
+  const res = fs.readFileSync(`${wx.env.USER_DATA_PATH}/hello.txt`, 'utf8', 0)
+  console.log(res)
+} catch(e) {
+  console.error(e)
+}
+``` */
+        readFileSync(
+            /** 要读取的文件的路径 (本地路径) */
+            filePath: string,
+            /** 指定读取文件的字符编码,如果不传 encoding,则以 ArrayBuffer 格式读取文件的二进制内容
+             *
+             * 参数 encoding 可选值:
+             * - 'ascii': ;
+             * - 'base64': ;
+             * - 'binary': ;
+             * - 'hex': ;
+             * - 'ucs2': 以小端序读取;
+             * - 'ucs-2': 以小端序读取;
+             * - 'utf16le': 以小端序读取;
+             * - 'utf-16le': 以小端序读取;
+             * - 'utf-8': ;
+             * - 'utf8': ;
+             * - 'latin1': ; */
+            encoding?:
+                | 'ascii'
+                | 'base64'
+                | 'binary'
+                | 'hex'
+                | 'ucs2'
+                | 'ucs-2'
+                | 'utf16le'
+                | 'utf-16le'
+                | 'utf-8'
+                | 'utf8'
+                | 'latin1',
+            /** 需要基础库: `2.10.0`
+             *
+             * 从文件指定位置开始读,如果不指定,则从文件头开始读。读取的范围应该是左闭右开区间 [position, position+length)。有效范围:[0, fileLength - 1]。单位:byte */
+            position?: number,
+            /** 需要基础库: `2.10.0`
+             *
+             * 指定文件的长度,如果不指定,则读到文件末尾。有效范围:[1, fileLength]。单位:byte */
+            length?: number
+        ): string | ArrayBuffer
+        /** [undefined FileSystemManager.closeSync(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.closeSync.html)
+*
+* 需要基础库: `2.16.1`
+*
+* 在插件中使用:需要基础库 `2.19.2`
+*
+* 同步关闭文件
+*
+* **示例代码**
+*
+* ```js
+const fs = wx.getFileSystemManager()
+const fd = fs.openSync({
+  filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+  flag: 'a+'
+})
+
+// 关闭文件
+fs.closeSync({fd: fd})
+``` */
+        closeSync(option: CloseSyncOption): undefined
+        /** [undefined FileSystemManager.ftruncateSync(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.ftruncateSync.html)
+*
+* 需要基础库: `2.16.1`
+*
+* 在插件中使用:需要基础库 `2.19.2`
+*
+* 对文件内容进行截断操作
+*
+* **示例代码**
+*
+* ```js
+const fs = wx.getFileSystemManager()
+const fd = fs.openSync({
+  filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+  flag: 'a+'
+})
+fs.ftruncateSync({
+  fd: fd,
+  length: 10 // 从第10个字节开始截断文件
+})
+``` */
+        ftruncateSync(option: FtruncateSyncOption): undefined
+        /** [undefined FileSystemManager.truncateSync(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.truncateSync.html)
+*
+* 需要基础库: `2.16.1`
+*
+* 在插件中使用:需要基础库 `2.19.2`
+*
+* 对文件内容进行截断操作 (truncate 的同步版本)
+*
+* **示例代码**
+*
+* ```js
+const fs = wx.getFileSystemManager()
+fs.truncateSync({
+  filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+  length: 10, // 从第10个字节开始截断
+})
+``` */
+        truncateSync(option: TruncateSyncOption): undefined
+    }
+    interface FstatSyncError {
+        /** 错误信息
+         *
+         * | 错误信息 | 说明 |
+         * | - | - |
+         * | bad file descriptor | 无效的文件描述符 |
+         * | fail permission denied | 指定的 fd 路径没有读权限 | */ errMsg: string
+        /** 错误码
+         *
+         * | 错误信息 | 说明 |
+         * | - | - |
+         * | bad file descriptor | 无效的文件描述符 |
+         * | fail permission denied | 指定的 fd 路径没有读权限 | */ errCode: number
+    }
+    interface FtruncateSyncError {
+        /** 错误信息
+         *
+         * | 错误信息 | 说明 |
+         * | - | - |
+         * | bad file descriptor | 无效的文件描述符 |
+         * | fail permission denied | 指定的 fd 没有写权限 |
+         * | fail the maximum size of the file storage limit is exceeded | 存储空间不足 |
+         * | fail sdcard not mounted | android sdcard 挂载失败 | */ errMsg: string
+        /** 错误码
+         *
+         * | 错误信息 | 说明 |
+         * | - | - |
+         * | bad file descriptor | 无效的文件描述符 |
+         * | fail permission denied | 指定的 fd 没有写权限 |
+         * | fail the maximum size of the file storage limit is exceeded | 存储空间不足 |
+         * | fail sdcard not mounted | android sdcard 挂载失败 | */ errCode: number
+    }
+    interface InnerAudioContext {
+        /** [InnerAudioContext.destroy()](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/InnerAudioContext.destroy.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 销毁当前实例 */
+        destroy(): void
+        /** [InnerAudioContext.offCanplay(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/InnerAudioContext.offCanplay.html)
+         *
+         * 需要基础库: `1.9.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 取消监听音频进入可以播放状态的事件 */
+        offCanplay(
+            /** 音频进入可以播放状态的事件的回调函数 */
+            callback?: OffCanplayCallback
+        ): void
+        /** [InnerAudioContext.offEnded(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/InnerAudioContext.offEnded.html)
+         *
+         * 需要基础库: `1.9.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 取消监听音频自然播放至结束的事件 */
+        offEnded(
+            /** 音频自然播放至结束的事件的回调函数 */
+            callback?: OffEndedCallback
+        ): void
+        /** [InnerAudioContext.offError(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/InnerAudioContext.offError.html)
+         *
+         * 需要基础库: `1.9.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 取消监听音频播放错误事件 */
+        offError(
+            /** 音频播放错误事件的回调函数 */
+            callback?: InnerAudioContextOffErrorCallback
+        ): void
+        /** [InnerAudioContext.offPause(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/InnerAudioContext.offPause.html)
+         *
+         * 需要基础库: `1.9.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 取消监听音频暂停事件 */
+        offPause(
+            /** 音频暂停事件的回调函数 */
+            callback?: OffPauseCallback
+        ): void
+        /** [InnerAudioContext.offPlay(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/InnerAudioContext.offPlay.html)
+         *
+         * 需要基础库: `1.9.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 取消监听音频播放事件 */
+        offPlay(
+            /** 音频播放事件的回调函数 */
+            callback?: OffPlayCallback
+        ): void
+        /** [InnerAudioContext.offSeeked(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/InnerAudioContext.offSeeked.html)
+         *
+         * 需要基础库: `1.9.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 取消监听音频完成跳转操作的事件 */
+        offSeeked(
+            /** 音频完成跳转操作的事件的回调函数 */
+            callback?: OffSeekedCallback
+        ): void
+        /** [InnerAudioContext.offSeeking(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/InnerAudioContext.offSeeking.html)
+         *
+         * 需要基础库: `1.9.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 取消监听音频进行跳转操作的事件 */
+        offSeeking(
+            /** 音频进行跳转操作的事件的回调函数 */
+            callback?: OffSeekingCallback
+        ): void
+        /** [InnerAudioContext.offStop(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/InnerAudioContext.offStop.html)
+         *
+         * 需要基础库: `1.9.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 取消监听音频停止事件 */
+        offStop(
+            /** 音频停止事件的回调函数 */
+            callback?: OffStopCallback
+        ): void
+        /** [InnerAudioContext.offTimeUpdate(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/InnerAudioContext.offTimeUpdate.html)
+         *
+         * 需要基础库: `1.9.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 取消监听音频播放进度更新事件 */
+        offTimeUpdate(
+            /** 音频播放进度更新事件的回调函数 */
+            callback?: OffTimeUpdateCallback
+        ): void
+        /** [InnerAudioContext.offWaiting(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/InnerAudioContext.offWaiting.html)
+         *
+         * 需要基础库: `1.9.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 取消监听音频加载中事件 */
+        offWaiting(
+            /** 音频加载中事件的回调函数 */
+            callback?: OffWaitingCallback
+        ): void
+        /** [InnerAudioContext.onCanplay(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/InnerAudioContext.onCanplay.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 监听音频进入可以播放状态的事件。但不保证后面可以流畅播放 */
+        onCanplay(
+            /** 音频进入可以播放状态的事件的回调函数 */
+            callback: OnCanplayCallback
+        ): void
+        /** [InnerAudioContext.onEnded(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/InnerAudioContext.onEnded.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 监听音频自然播放至结束的事件 */
+        onEnded(
+            /** 音频自然播放至结束的事件的回调函数 */
+            callback: OnEndedCallback
+        ): void
+        /** [InnerAudioContext.onError(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/InnerAudioContext.onError.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 监听音频播放错误事件
+         *
+         * **Tips**
+         *
+         * 1. errCode=100001 时,如若 errMsg 中有 INNERCODE -11828 ,请先检查 response header 是否缺少 Content-Length
+         * 2. errCode=100001 时,如若 errMsg 中有 systemErrCode:200333420,请检查文件编码格式和 fileExtension 是否一致 */
+        onError(
+            /** 音频播放错误事件的回调函数 */
+            callback: InnerAudioContextOnErrorCallback
+        ): void
+        /** [InnerAudioContext.onPause(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/InnerAudioContext.onPause.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 监听音频暂停事件 */
+        onPause(
+            /** 音频暂停事件的回调函数 */
+            callback: OnPauseCallback
+        ): void
+        /** [InnerAudioContext.onPlay(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/InnerAudioContext.onPlay.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 监听音频播放事件 */
+        onPlay(
+            /** 音频播放事件的回调函数 */
+            callback: OnPlayCallback
+        ): void
+        /** [InnerAudioContext.onSeeked(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/InnerAudioContext.onSeeked.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 监听音频完成跳转操作的事件 */
+        onSeeked(
+            /** 音频完成跳转操作的事件的回调函数 */
+            callback: OnSeekedCallback
+        ): void
+        /** [InnerAudioContext.onSeeking(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/InnerAudioContext.onSeeking.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 监听音频进行跳转操作的事件 */
+        onSeeking(
+            /** 音频进行跳转操作的事件的回调函数 */
+            callback: OnSeekingCallback
+        ): void
+        /** [InnerAudioContext.onStop(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/InnerAudioContext.onStop.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 监听音频停止事件 */
+        onStop(
+            /** 音频停止事件的回调函数 */
+            callback: InnerAudioContextOnStopCallback
+        ): void
+        /** [InnerAudioContext.onTimeUpdate(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/InnerAudioContext.onTimeUpdate.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 监听音频播放进度更新事件 */
+        onTimeUpdate(
+            /** 音频播放进度更新事件的回调函数 */
+            callback: OnTimeUpdateCallback
+        ): void
+        /** [InnerAudioContext.onWaiting(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/InnerAudioContext.onWaiting.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 监听音频加载中事件。当音频因为数据不足,需要停下来加载时会触发 */
+        onWaiting(
+            /** 音频加载中事件的回调函数 */
+            callback: OnWaitingCallback
+        ): void
+        /** [InnerAudioContext.pause()](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/InnerAudioContext.pause.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 暂停。暂停后的音频再播放会从暂停处开始播放 */
+        pause(): void
+        /** [InnerAudioContext.play()](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/InnerAudioContext.play.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 播放 */
+        play(): void
+        /** [InnerAudioContext.seek(number position)](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/InnerAudioContext.seek.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 跳转到指定位置 */
+        seek(
+            /** 跳转的时间,单位 s。精确到小数点后 3 位,即支持 ms 级别精确度 */
+            position: number
+        ): void
+        /** [InnerAudioContext.stop()](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/InnerAudioContext.stop.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 停止。停止后的音频再播放会从头开始播放。 */
+        stop(): void
+    }
+    interface IntersectionObserver {
+        /** [IntersectionObserver.disconnect()](https://developers.weixin.qq.com/miniprogram/dev/api/wxml/IntersectionObserver.disconnect.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 停止监听。回调函数将不再触发 */
+        disconnect(): void
+        /** [IntersectionObserver.observe(string targetSelector, function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/wxml/IntersectionObserver.observe.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 指定目标节点并开始监听相交状态变化情况 */
+        observe(
+            /** 选择器 */
+            targetSelector: string,
+            /** 监听相交状态变化的回调函数 */
+            callback: IntersectionObserverObserveCallback
+        ): void
+        /** [[IntersectionObserver](https://developers.weixin.qq.com/miniprogram/dev/api/wxml/IntersectionObserver.html) IntersectionObserver.relativeTo(string selector, Object margins)](https://developers.weixin.qq.com/miniprogram/dev/api/wxml/IntersectionObserver.relativeTo.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 使用选择器指定一个节点,作为参照区域之一。 */
+        relativeTo(
+            /** 选择器 */
+            selector: string,
+            /** 用来扩展(或收缩)参照节点布局区域的边界 */
+            margins?: Margins
+        ): IntersectionObserver
+        /** [[IntersectionObserver](https://developers.weixin.qq.com/miniprogram/dev/api/wxml/IntersectionObserver.html) IntersectionObserver.relativeToViewport(Object margins)](https://developers.weixin.qq.com/miniprogram/dev/api/wxml/IntersectionObserver.relativeToViewport.html)
+*
+* 在插件中使用:支持
+*
+* 指定页面显示区域作为参照区域之一
+*
+* **示例代码**
+*
+* 下面的示例代码中,如果目标节点(用选择器 .target-class 指定)进入显示区域以下 100px 时,就会触发回调函数。
+* ```javascript
+Page({
+  onLoad: function(){
+    wx.createIntersectionObserver().relativeToViewport({bottom: 100}).observe('.target-class', (res) => {
+      res.intersectionRatio // 相交区域占目标节点的布局区域的比例
+      res.intersectionRect // 相交区域
+      res.intersectionRect.left // 相交区域的左边界坐标
+      res.intersectionRect.top // 相交区域的上边界坐标
+      res.intersectionRect.width // 相交区域的宽度
+      res.intersectionRect.height // 相交区域的高度
+    })
+  }
+})
+``` */
+        relativeToViewport(
+            /** 用来扩展(或收缩)参照节点布局区域的边界 */
+            margins?: Margins
+        ): IntersectionObserver
+    }
+    interface InterstitialAd {
+        /** [InterstitialAd.destroy()](https://developers.weixin.qq.com/miniprogram/dev/api/ad/InterstitialAd.destroy.html)
+         *
+         * 需要基础库: `2.8.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 销毁插屏广告实例。 */
+        destroy(): void
+        /** [InterstitialAd.offClose(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/ad/InterstitialAd.offClose.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 取消监听插屏广告关闭事件 */
+        offClose(
+            /** 插屏广告关闭事件的回调函数 */
+            callback?: UDPSocketOffCloseCallback
+        ): void
+        /** [InterstitialAd.offError(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/ad/InterstitialAd.offError.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 取消监听插屏错误事件 */
+        offError(
+            /** 插屏错误事件的回调函数 */
+            callback?: InterstitialAdOffErrorCallback
+        ): void
+        /** [InterstitialAd.offLoad(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/ad/InterstitialAd.offLoad.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 取消监听插屏广告加载事件 */
+        offLoad(
+            /** 插屏广告加载事件的回调函数 */
+            callback?: OffLoadCallback
+        ): void
+        /** [InterstitialAd.onClose(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/ad/InterstitialAd.onClose.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听插屏广告关闭事件。 */
+        onClose(
+            /** 插屏广告关闭事件的回调函数 */
+            callback: UDPSocketOnCloseCallback
+        ): void
+        /** [InterstitialAd.onError(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/ad/InterstitialAd.onError.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听插屏错误事件。
+         *
+         * **错误码信息与解决方案表**
+         *
+         *  错误码是通过onError获取到的错误信息。调试期间,可以通过异常返回来捕获信息。
+         *  在小程序发布上线之后,如果遇到异常问题,可以在[“运维中心“](https://mp.weixin.qq.com/)里面搜寻错误日志,还可以针对异常返回加上适当的监控信息。
+         *
+         * | 代码 | 异常情况 | 理由 | 解决方案 |
+         * | ------ | -------------- | --------------- | -------------------------- |
+         * | 1000  | 后端错误调用失败  | 该项错误不是开发者的异常情况 | 一般情况下忽略一段时间即可恢复。 |
+         * | 1001  | 参数错误    | 使用方法错误 | 可以前往developers.weixin.qq.com确认具体教程(小程序和小游戏分别有各自的教程,可以在顶部选项中,“设计”一栏的右侧进行切换。|
+         * | 1002  | 广告单元无效    | 可能是拼写错误、或者误用了其他APP的广告ID | 请重新前往mp.weixin.qq.com确认广告位ID。 |
+         * | 1003  | 内部错误    | 该项错误不是开发者的异常情况 | 一般情况下忽略一段时间即可恢复。|
+         * | 1004  | 无适合的广告   | 广告不是每一次都会出现,这次没有出现可能是由于该用户不适合浏览广告 | 属于正常情况,且开发者需要针对这种情况做形态上的兼容。 |
+         * | 1005  | 广告组件审核中  | 你的广告正在被审核,无法展现广告 | 请前往mp.weixin.qq.com确认审核状态,且开发者需要针对这种情况做形态上的兼容。|
+         * | 1006  | 广告组件被驳回  | 你的广告审核失败,无法展现广告 | 请前往mp.weixin.qq.com确认审核状态,且开发者需要针对这种情况做形态上的兼容。|
+         * | 1007  | 广告组件被驳回  | 你的广告能力已经被封禁,封禁期间无法展现广告 | 请前往mp.weixin.qq.com确认小程序广告封禁状态。 |
+         * | 1008  | 广告单元已关闭  | 该广告位的广告能力已经被关闭 | 请前往mp.weixin.qq.com重新打开对应广告位的展现。| */
+        onError(
+            /** 插屏错误事件的回调函数 */
+            callback: InterstitialAdOnErrorCallback
+        ): void
+        /** [InterstitialAd.onLoad(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/ad/InterstitialAd.onLoad.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听插屏广告加载事件。 */
+        onLoad(
+            /** 插屏广告加载事件的回调函数 */
+            callback: OnLoadCallback
+        ): void
+        /** [Promise InterstitialAd.load()](https://developers.weixin.qq.com/miniprogram/dev/api/ad/InterstitialAd.load.html)
+         *
+         * 需要基础库: `2.8.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 加载插屏广告。 */
+        load(): Promise<any>
+        /** [Promise InterstitialAd.show()](https://developers.weixin.qq.com/miniprogram/dev/api/ad/InterstitialAd.show.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 显示插屏广告。
+         *
+         * **错误码信息表**
+         *
+         *  如果插屏广告显示失败,InterstitialAd.show() 方法会返回一个rejected Promise,开发者可以获取到错误码及对应的错误信息。
+         *
+         * | 代码 | 异常情况 | 理由 |
+         * | ------ | -------------- | -------------------------- |
+         * | 2001  | 触发频率限制  | 小程序启动一定时间内不允许展示插屏广告 |
+         * | 2002  | 触发频率限制  | 距离小程序插屏广告或者激励视频广告上次播放时间间隔不足,不允许展示插屏广告 |
+         * | 2003  | 触发频率限制  | 当前正在播放激励视频广告或者插屏广告,不允许再次展示插屏广告 |
+         * | 2004  | 广告渲染失败  | 该项错误不是开发者的异常情况,或因小程序页面切换导致广告渲染失败 |
+         * | 2005  | 广告调用异常  | 插屏广告实例不允许跨页面调用 | */
+        show(): Promise<any>
+    }
+    interface IsoDep {
+        /** [IsoDep.close(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/IsoDep.close.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 断开连接 */
+        close(option?: NdefCloseOption): void
+        /** [IsoDep.connect(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/IsoDep.connect.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 连接 NFC 标签 */
+        connect(option?: NdefConnectOption): void
+        /** [IsoDep.getHistoricalBytes(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/IsoDep.getHistoricalBytes.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 获取复位信息 */
+        getHistoricalBytes(option?: GetHistoricalBytesOption): void
+        /** [IsoDep.getMaxTransceiveLength(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/IsoDep.getMaxTransceiveLength.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 获取最大传输长度 */
+        getMaxTransceiveLength(option?: GetMaxTransceiveLengthOption): void
+        /** [IsoDep.isConnected(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/IsoDep.isConnected.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 检查是否已连接 */
+        isConnected(option?: IsConnectedOption): void
+        /** [IsoDep.setTimeout(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/IsoDep.setTimeout.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 设置超时时间 */
+        setTimeout(option: SetTimeoutOption): void
+        /** [IsoDep.transceive(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/IsoDep.transceive.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 发送数据 */
+        transceive(option: TransceiveOption): void
+    }
+    interface JoinVoIPChatError {
+        /** 错误信息
+         *
+         * | 错误码 | 错误信息 | 说明 |
+         * | - | - | - |
+         * | -1 | 当前已在房间内 |  |
+         * | -2 | 录音设备被占用,可能是当前正在使用微信内语音通话或系统通话 |  |
+         * | -3 | 加入会话期间退出(可能是用户主动退出,或者退后台、来电等原因),因此加入失败 |  |
+         * | -1000 | 系统错误 |  | */ errMsg: string
+        /** 错误码
+         *
+         * | 错误码 | 错误信息 | 说明 |
+         * | - | - | - |
+         * | -1 | 当前已在房间内 |  |
+         * | -2 | 录音设备被占用,可能是当前正在使用微信内语音通话或系统通话 |  |
+         * | -3 | 加入会话期间退出(可能是用户主动退出,或者退后台、来电等原因),因此加入失败 |  |
+         * | -1000 | 系统错误 |  | */ errCode: number
+    }
+    interface LivePlayerContext {
+        /** [LivePlayerContext.exitFullScreen(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePlayerContext.exitFullScreen.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 退出全屏 */
+        exitFullScreen(option?: ExitFullScreenOption): void
+        /** [LivePlayerContext.exitPictureInPicture(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePlayerContext.exitPictureInPicture.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 退出小窗,该方法可在任意页面调用 */
+        exitPictureInPicture(option?: ExitPictureInPictureOption): void
+        /** [LivePlayerContext.mute(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePlayerContext.mute.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 静音 */
+        mute(option?: MuteOption): void
+        /** [LivePlayerContext.pause(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePlayerContext.pause.html)
+         *
+         * 需要基础库: `1.9.90`
+         *
+         * 在插件中使用:支持
+         *
+         * 暂停 */
+        pause(option?: PauseOption): void
+        /** [LivePlayerContext.play(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePlayerContext.play.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 播放 */
+        play(option?: PlayOption): void
+        /** [LivePlayerContext.requestFullScreen(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePlayerContext.requestFullScreen.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 进入全屏 */
+        requestFullScreen(
+            option: LivePlayerContextRequestFullScreenOption
+        ): void
+        /** [LivePlayerContext.requestPictureInPicture(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePlayerContext.requestPictureInPicture.html)
+         *
+         * 需要基础库: `2.15.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 进入小窗 */
+        requestPictureInPicture(option?: RequestPictureInPictureOption): void
+        /** [LivePlayerContext.resume(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePlayerContext.resume.html)
+         *
+         * 需要基础库: `1.9.90`
+         *
+         * 在插件中使用:支持
+         *
+         * 恢复 */
+        resume(option?: ResumeOption): void
+        /** [LivePlayerContext.snapshot(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePlayerContext.snapshot.html)
+         *
+         * 需要基础库: `2.7.1`
+         *
+         * 在插件中使用:支持
+         *
+         * 截图 */
+        snapshot(option: LivePlayerContextSnapshotOption): void
+        /** [LivePlayerContext.stop(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePlayerContext.stop.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 停止 */
+        stop(option?: StopOption): void
+    }
+    interface LivePusherContext {
+        /** [LivePusherContext.pause(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePusherContext.pause.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 暂停推流 */
+        pause(option?: PauseOption): void
+        /** [LivePusherContext.pauseBGM(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePusherContext.pauseBGM.html)
+         *
+         * 需要基础库: `2.4.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 暂停背景音 */
+        pauseBGM(option?: PauseBGMOption): void
+        /** [LivePusherContext.playBGM(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePusherContext.playBGM.html)
+         *
+         * 需要基础库: `2.4.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 播放背景音 */
+        playBGM(option: PlayBGMOption): void
+        /** [LivePusherContext.resume(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePusherContext.resume.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 恢复推流 */
+        resume(option?: ResumeOption): void
+        /** [LivePusherContext.resumeBGM(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePusherContext.resumeBGM.html)
+         *
+         * 需要基础库: `2.4.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 恢复背景音 */
+        resumeBGM(option?: ResumeBGMOption): void
+        /** [LivePusherContext.sendMessage(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePusherContext.sendMessage.html)
+         *
+         * 需要基础库: `2.10.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 发送SEI消息 */
+        sendMessage(option: SendMessageOption): void
+        /** [LivePusherContext.setBGMVolume(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePusherContext.setBGMVolume.html)
+         *
+         * 需要基础库: `2.4.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 设置背景音音量 */
+        setBGMVolume(option: SetBGMVolumeOption): void
+        /** [LivePusherContext.setMICVolume(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePusherContext.setMICVolume.html)
+         *
+         * 需要基础库: `2.10.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 设置麦克风音量 */
+        setMICVolume(option: SetMICVolumeOption): void
+        /** [LivePusherContext.snapshot(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePusherContext.snapshot.html)
+         *
+         * 需要基础库: `1.9.90`
+         *
+         * 在插件中使用:支持
+         *
+         * 快照 */
+        snapshot(option: LivePusherContextSnapshotOption): void
+        /** [LivePusherContext.start(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePusherContext.start.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 开始推流,同时开启摄像头预览 */
+        start(option?: CameraFrameListenerStartOption): void
+        /** [LivePusherContext.startPreview(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePusherContext.startPreview.html)
+         *
+         * 需要基础库: `2.7.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 开启摄像头预览 */
+        startPreview(option?: StartPreviewOption): void
+        /** [LivePusherContext.stop(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePusherContext.stop.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 停止推流,同时停止摄像头预览 */
+        stop(option?: StopOption): void
+        /** [LivePusherContext.stopBGM(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePusherContext.stopBGM.html)
+         *
+         * 需要基础库: `2.4.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 停止背景音 */
+        stopBGM(option?: StopBGMOption): void
+        /** [LivePusherContext.stopPreview(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePusherContext.stopPreview.html)
+         *
+         * 需要基础库: `2.7.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 关闭摄像头预览 */
+        stopPreview(option?: StopPreviewOption): void
+        /** [LivePusherContext.switchCamera(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePusherContext.switchCamera.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 切换前后摄像头 */
+        switchCamera(option?: SwitchCameraOption): void
+        /** [LivePusherContext.toggleTorch(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePusherContext.toggleTorch.html)
+         *
+         * 需要基础库: `2.1.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 切换手电筒 */
+        toggleTorch(option?: ToggleTorchOption): void
+    }
+    interface LogManager {
+        /** [LogManager.debug()](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/LogManager.debug.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 写 debug 日志 */
+        debug(
+            /** 日志内容,可以有任意多个。每次调用的参数的总大小不超过100Kb */
+            ...args: any[]
+        ): void
+        /** [LogManager.info()](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/LogManager.info.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 写 info 日志 */
+        info(
+            /** 日志内容,可以有任意多个。每次调用的参数的总大小不超过100Kb */
+            ...args: any[]
+        ): void
+        /** [LogManager.log()](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/LogManager.log.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 写 log 日志 */
+        log(
+            /** 日志内容,可以有任意多个。每次调用的参数的总大小不超过100Kb */
+            ...args: any[]
+        ): void
+        /** [LogManager.warn()](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/LogManager.warn.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 写 warn 日志 */
+        warn(
+            /** 日志内容,可以有任意多个。每次调用的参数的总大小不超过100Kb */
+            ...args: any[]
+        ): void
+    }
+    interface MapContext {
+        /** [MapContext.addCustomLayer(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/map/MapContext.addCustomLayer.html)
+         *
+         * 需要基础库: `2.12.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 添加个性化图层。图层创建[参考文档](https://lbs.qq.com/dev/console/customLayer/create) */
+        addCustomLayer(option: AddCustomLayerOption): void
+        /** [MapContext.addGroundOverlay(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/map/MapContext.addGroundOverlay.html)
+         *
+         * 需要基础库: `2.14.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 创建自定义图片图层,图片会随着地图缩放而缩放。 */
+        addGroundOverlay(option: AddGroundOverlayOption): void
+        /** [MapContext.addMarkers(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/map/MapContext.addMarkers.html)
+         *
+         * 需要基础库: `2.13.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 添加 marker。 */
+        addMarkers(option: AddMarkersOption): void
+        /** [MapContext.addVisualLayer(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/map/MapContext.addVisualLayer.html)
+         *
+         * 需要基础库: `2.20.1`
+         *
+         * 在插件中使用:支持
+         *
+         * 添加可视化图层。需要刷新时,interval 可设置的最小值为 15 s。 */
+        addVisualLayer(option: AddVisualLayerOption): void
+        /** [MapContext.fromScreenLocation(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/map/MapContext.fromScreenLocation.html)
+         *
+         * 需要基础库: `2.14.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 获取屏幕上的点对应的经纬度,坐标原点为地图左上角。 */
+        fromScreenLocation(option: FromScreenLocationOption): void
+        /** [MapContext.getCenterLocation(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/map/MapContext.getCenterLocation.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 获取当前地图中心的经纬度。返回的是 gcj02 坐标系,可以用于 [wx.openLocation()](https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.openLocation.html) */
+        getCenterLocation(option: GetCenterLocationOption): void
+        /** [MapContext.getRegion(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/map/MapContext.getRegion.html)
+         *
+         * 需要基础库: `1.4.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 获取当前地图的视野范围 */
+        getRegion(option?: GetRegionOption): void
+        /** [MapContext.getRotate(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/map/MapContext.getRotate.html)
+         *
+         * 需要基础库: `2.8.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 获取当前地图的旋转角 */
+        getRotate(option?: GetRotateOption): void
+        /** [MapContext.getScale(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/map/MapContext.getScale.html)
+         *
+         * 需要基础库: `1.4.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 获取当前地图的缩放级别 */
+        getScale(option?: GetScaleOption): void
+        /** [MapContext.getSkew(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/map/MapContext.getSkew.html)
+         *
+         * 需要基础库: `2.8.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 获取当前地图的倾斜角 */
+        getSkew(option?: GetSkewOption): void
+        /** [MapContext.includePoints(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/map/MapContext.includePoints.html)
+         *
+         * 需要基础库: `1.2.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 缩放视野展示所有经纬度 */
+        includePoints(option: IncludePointsOption): void
+        /** [MapContext.initMarkerCluster(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/map/MapContext.initMarkerCluster.html)
+         *
+         * 需要基础库: `2.13.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 初始化点聚合的配置,未调用时采用默认配置。 */
+        initMarkerCluster(option: InitMarkerClusterOption): void
+        /** [MapContext.moveAlong(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/map/MapContext.moveAlong.html)
+         *
+         * 需要基础库: `2.13.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 沿指定路径移动 `marker`,用于轨迹回放等场景。动画完成时触发回调事件,若动画进行中,对同一 `marker` 再次调用 `moveAlong` 方法,前一次的动画将被打断。 */
+        moveAlong(option: MoveAlongOption): void
+        /** [MapContext.moveToLocation(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/map/MapContext.moveToLocation.html)
+         *
+         * 需要基础库: `1.2.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 将地图中心移置当前定位点,此时需设置地图组件 show-location 为true。[2.8.0](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 起支持将地图中心移动到指定位置。 */
+        moveToLocation(option?: MoveToLocationOption): void
+        /** [MapContext.on(string event, function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/map/MapContext.on.html)
+*
+* 需要基础库: `2.13.0`
+*
+* 在插件中使用:支持
+*
+* 监听地图事件。
+*
+* ### markerClusterCreate
+*
+* 缩放或拖动导致新的聚合簇产生时触发,仅返回新创建的聚合簇信息。
+*
+* #### 返回参数
+*
+* | 参数      | 类型   | 说明      |
+* | --------- | ------ | --------- |
+* | clusters | `Array&lt;ClusterInfo&gt;` | 聚合簇数据 |
+*
+* ### markerClusterClick
+*
+* 聚合簇的点击事件。
+*
+* #### 返回参数
+*
+* | 参数      | 类型          | 说明      |
+* | --------- | ------------- | --------- |
+* | cluster   | ClusterInfo   | 聚合簇    |
+*
+* #### ClusterInfo 结构
+*
+* | 参数       | 类型                 | 说明                       |
+* | ---------- | -------------------- | -------------------------- |
+* | clusterId  | Number               | 聚合簇的 id               |
+* | center     | LatLng               | 聚合簇的坐标             |
+* | markerIds | `Array&lt;Number&gt;` | 该聚合簇内的点标记数据数组 |
+*
+* **示例代码**
+*
+* ```js
+  MapContext.on('markerClusterCreate', (res) => {})
+  MapContext.on('markerClusterClick', (res) => {})
+``` */
+        on(
+            /** 事件名
+             *
+             * 参数 event 可选值:
+             * - 'markerClusterCreate': ;
+             * - 'markerClusterClick': ; */
+            event: 'markerClusterCreate' | 'markerClusterClick',
+            /** 事件的回调函数 */
+            callback: (...args: any[]) => any
+        ): void
+        /** [MapContext.openMapApp(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/map/MapContext.openMapApp.html)
+         *
+         * 需要基础库: `2.14.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 拉起地图APP选择导航。 */
+        openMapApp(option: OpenMapAppOption): void
+        /** [MapContext.removeCustomLayer(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/map/MapContext.removeCustomLayer.html)
+         *
+         * 需要基础库: `2.12.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 移除个性化图层。 */
+        removeCustomLayer(option: RemoveCustomLayerOption): void
+        /** [MapContext.removeGroundOverlay(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/map/MapContext.removeGroundOverlay.html)
+         *
+         * 需要基础库: `2.14.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 移除自定义图片图层。 */
+        removeGroundOverlay(option: RemoveGroundOverlayOption): void
+        /** [MapContext.removeMarkers(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/map/MapContext.removeMarkers.html)
+         *
+         * 需要基础库: `2.13.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 移除 marker。 */
+        removeMarkers(option: RemoveMarkersOption): void
+        /** [MapContext.removeVisualLayer(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/map/MapContext.removeVisualLayer.html)
+         *
+         * 需要基础库: `2.20.1`
+         *
+         * 在插件中使用:支持
+         *
+         * 移除可视化图层。 */
+        removeVisualLayer(option: RemoveVisualLayerOption): void
+        /** [MapContext.setCenterOffset(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/map/MapContext.setCenterOffset.html)
+         *
+         * 需要基础库: `2.10.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 设置地图中心点偏移,向后向下为增长,屏幕比例范围(0.25~0.75),默认偏移为[0.5, 0.5] */
+        setCenterOffset(option: SetCenterOffsetOption): void
+        /** [MapContext.setLocMarkerIcon(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/map/MapContext.setLocMarkerIcon.html)
+         *
+         * 需要基础库: `2.16.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 设置定位点图标,支持网络路径、本地路径、代码包路径 */
+        setLocMarkerIcon(option: SetLocMarkerIconOption): void
+        /** [MapContext.toScreenLocation(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/map/MapContext.toScreenLocation.html)
+         *
+         * 需要基础库: `2.14.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 获取经纬度对应的屏幕坐标,坐标原点为地图左上角。 */
+        toScreenLocation(option: ToScreenLocationOption): void
+        /** [MapContext.translateMarker(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/map/MapContext.translateMarker.html)
+         *
+         * 需要基础库: `1.2.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 平移marker,带动画。 */
+        translateMarker(option: TranslateMarkerOption): void
+        /** [MapContext.updateGroundOverlay(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/map/MapContext.updateGroundOverlay.html)
+         *
+         * 需要基础库: `2.14.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 更新自定义图片图层。 */
+        updateGroundOverlay(option: UpdateGroundOverlayOption): void
+    }
+    interface MediaAudioPlayer {
+        /** [Promise MediaAudioPlayer.addAudioSource([VideoDecoder](https://developers.weixin.qq.com/miniprogram/dev/api/media/video-decoder/VideoDecoder.html) source)](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/MediaAudioPlayer.addAudioSource.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 添加音频源 */
+        addAudioSource(
+            /** [VideoDecoder](https://developers.weixin.qq.com/miniprogram/dev/api/media/video-decoder/VideoDecoder.html)
+             *
+             * 视频解码器实例。作为音频源添加到音频播放器中 */
+            source: VideoDecoder
+        ): Promise<any>
+        /** [Promise MediaAudioPlayer.destroy()](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/MediaAudioPlayer.destroy.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 销毁播放器 */
+        destroy(): Promise<any>
+        /** [Promise MediaAudioPlayer.removeAudioSource([VideoDecoder](https://developers.weixin.qq.com/miniprogram/dev/api/media/video-decoder/VideoDecoder.html) source)](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/MediaAudioPlayer.removeAudioSource.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 移除音频源 */
+        removeAudioSource(
+            /** [VideoDecoder](https://developers.weixin.qq.com/miniprogram/dev/api/media/video-decoder/VideoDecoder.html)
+             *
+             * 视频解码器实例 */
+            source: VideoDecoder
+        ): Promise<any>
+        /** [Promise MediaAudioPlayer.start()](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/MediaAudioPlayer.start.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 启动播放器 */
+        start(): Promise<any>
+        /** [Promise MediaAudioPlayer.stop()](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/MediaAudioPlayer.stop.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 停止播放器 */
+        stop(): Promise<any>
+    }
+    interface MediaContainer {
+        /** [MediaContainer.addTrack([MediaTrack](https://developers.weixin.qq.com/miniprogram/dev/api/media/video-processing/MediaTrack.html) track)](https://developers.weixin.qq.com/miniprogram/dev/api/media/video-processing/MediaContainer.addTrack.html)
+         *
+         * 需要基础库: `2.9.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 将音频或视频轨道添加到容器 */
+        addTrack(
+            /** [MediaTrack](https://developers.weixin.qq.com/miniprogram/dev/api/media/video-processing/MediaTrack.html)
+             *
+             * 要添加的音频或视频轨道 */
+            track: MediaTrack
+        ): void
+        /** [MediaContainer.destroy()](https://developers.weixin.qq.com/miniprogram/dev/api/media/video-processing/MediaContainer.destroy.html)
+         *
+         * 需要基础库: `2.9.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 将容器销毁,释放资源 */
+        destroy(): void
+        /** [MediaContainer.export()](https://developers.weixin.qq.com/miniprogram/dev/api/media/video-processing/MediaContainer.export.html)
+         *
+         * 需要基础库: `2.9.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 将容器内的轨道合并并导出视频文件 */
+        export(): void
+        /** [MediaContainer.extractDataSource(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/video-processing/MediaContainer.extractDataSource.html)
+         *
+         * 需要基础库: `2.9.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 将传入的视频源分离轨道。不会自动将轨道添加到待合成的容器里。 */
+        extractDataSource(option: ExtractDataSourceOption): void
+        /** [MediaContainer.removeTrack([MediaTrack](https://developers.weixin.qq.com/miniprogram/dev/api/media/video-processing/MediaTrack.html) track)](https://developers.weixin.qq.com/miniprogram/dev/api/media/video-processing/MediaContainer.removeTrack.html)
+         *
+         * 需要基础库: `2.9.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 将音频或视频轨道从容器中移除 */
+        removeTrack(
+            /** [MediaTrack](https://developers.weixin.qq.com/miniprogram/dev/api/media/video-processing/MediaTrack.html)
+             *
+             * 要移除的音频或视频轨道 */
+            track: MediaTrack
+        ): void
+    }
+    interface MediaQueryObserver {
+        /** [MediaQueryObserver.disconnect()](https://developers.weixin.qq.com/miniprogram/dev/api/wxml/MediaQueryObserver.disconnect.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 停止监听。回调函数将不再触发 */
+        disconnect(): void
+        /** [MediaQueryObserver.observe(Object descriptor, function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/wxml/MediaQueryObserver.observe.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 开始监听页面 media query 变化情况 */
+        observe(
+            /** media query 描述符 */
+            descriptor: ObserveDescriptor,
+            /** 监听 media query 状态变化的回调函数 */
+            callback: MediaQueryObserverObserveCallback
+        ): void
+    }
+    interface MediaRecorder {
+        /** [MediaRecorder.off(string eventName, function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/media-recorder/MediaRecorder.off.html)
+         *
+         * 需要基础库: `2.11.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 取消监听录制事件。当对应事件触发时,该回调函数不再执行。 */
+        off(
+            /** 事件名 */
+            eventName: string,
+            /** 事件触发时执行的回调函数 */
+            callback: (...args: any[]) => any
+        ): void
+        /** [MediaRecorder.on(string eventName, function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/media-recorder/MediaRecorder.on.html)
+         *
+         * 需要基础库: `2.11.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 注册监听录制事件的回调函数。当对应事件触发时,回调函数会被执行。 */
+        on(
+            /** 事件名
+             *
+             * 参数 eventName 可选值:
+             * - 'start': 录制开始事件。;
+             * - 'stop': 录制结束事件。返回 {tempFilePath, duration, fileSize};
+             * - 'pause': 录制暂停事件。;
+             * - 'resume': 录制继续事件。;
+             * - 'timeupdate': 录制时间更新事件。; */
+            eventName: 'start' | 'stop' | 'pause' | 'resume' | 'timeupdate',
+            /** 事件触发时执行的回调函数 */
+            callback: (...args: any[]) => any
+        ): void
+        /** [Promise MediaRecorder.destroy()](https://developers.weixin.qq.com/miniprogram/dev/api/media/media-recorder/MediaRecorder.destroy.html)
+         *
+         * 需要基础库: `2.11.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 销毁录制器 */
+        destroy(): Promise<any>
+        /** [Promise MediaRecorder.pause()](https://developers.weixin.qq.com/miniprogram/dev/api/media/media-recorder/MediaRecorder.pause.html)
+         *
+         * 需要基础库: `2.11.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 暂停录制 */
+        pause(): Promise<any>
+        /** [Promise MediaRecorder.requestFrame(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/media-recorder/MediaRecorder.requestFrame.html)
+         *
+         * 需要基础库: `2.11.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 请求下一帧录制,在 callback 里完成一帧渲染后开始录制当前帧 */
+        requestFrame(callback: (...args: any[]) => any): Promise<any>
+        /** [Promise MediaRecorder.resume()](https://developers.weixin.qq.com/miniprogram/dev/api/media/media-recorder/MediaRecorder.resume.html)
+         *
+         * 需要基础库: `2.11.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 恢复录制 */
+        resume(): Promise<any>
+        /** [Promise MediaRecorder.start()](https://developers.weixin.qq.com/miniprogram/dev/api/media/media-recorder/MediaRecorder.start.html)
+         *
+         * 需要基础库: `2.11.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 开始录制 */
+        start(): Promise<any>
+        /** [Promise MediaRecorder.stop()](https://developers.weixin.qq.com/miniprogram/dev/api/media/media-recorder/MediaRecorder.stop.html)
+         *
+         * 需要基础库: `2.11.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 结束录制 */
+        stop(): Promise<any>
+    }
+    interface MifareClassic {
+        /** [MifareClassic.close(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/MifareClassic.close.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 断开连接 */
+        close(option?: NdefCloseOption): void
+        /** [MifareClassic.connect(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/MifareClassic.connect.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 连接 NFC 标签 */
+        connect(option?: NdefConnectOption): void
+        /** [MifareClassic.getMaxTransceiveLength(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/MifareClassic.getMaxTransceiveLength.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 获取最大传输长度 */
+        getMaxTransceiveLength(option?: GetMaxTransceiveLengthOption): void
+        /** [MifareClassic.isConnected(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/MifareClassic.isConnected.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 检查是否已连接 */
+        isConnected(option?: IsConnectedOption): void
+        /** [MifareClassic.setTimeout(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/MifareClassic.setTimeout.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 设置超时时间 */
+        setTimeout(option: SetTimeoutOption): void
+        /** [MifareClassic.transceive(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/MifareClassic.transceive.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 发送数据 */
+        transceive(option: TransceiveOption): void
+    }
+    interface MifareUltralight {
+        /** [MifareUltralight.close(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/MifareUltralight.close.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 断开连接 */
+        close(option?: NdefCloseOption): void
+        /** [MifareUltralight.connect(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/MifareUltralight.connect.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 连接 NFC 标签 */
+        connect(option?: NdefConnectOption): void
+        /** [MifareUltralight.getMaxTransceiveLength(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/MifareUltralight.getMaxTransceiveLength.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 获取最大传输长度 */
+        getMaxTransceiveLength(option?: GetMaxTransceiveLengthOption): void
+        /** [MifareUltralight.isConnected(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/MifareUltralight.isConnected.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 检查是否已连接 */
+        isConnected(option?: IsConnectedOption): void
+        /** [MifareUltralight.setTimeout(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/MifareUltralight.setTimeout.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 设置超时时间 */
+        setTimeout(option: SetTimeoutOption): void
+        /** [MifareUltralight.transceive(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/MifareUltralight.transceive.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 发送数据 */
+        transceive(option: TransceiveOption): void
+    }
+    interface NFCAdapter {
+        /** [NFCAdapter.offDiscovered(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NFCAdapter.offDiscovered.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 取消监听 NFC Tag */
+        offDiscovered(
+            /** 的回调函数 */
+            callback?: OffDiscoveredCallback
+        ): void
+        /** [NFCAdapter.onDiscovered(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NFCAdapter.onDiscovered.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 监听 NFC Tag */
+        onDiscovered(
+            /** 的回调函数 */
+            callback: OnDiscoveredCallback
+        ): void
+        /** [NFCAdapter.startDiscovery(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NFCAdapter.startDiscovery.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持 */
+        startDiscovery(option?: StartDiscoveryOption): void
+        /** [NFCAdapter.stopDiscovery(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NFCAdapter.stopDiscovery.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持 */
+        stopDiscovery(option?: StopDiscoveryOption): void
+        /** [[IsoDep](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/IsoDep.html) NFCAdapter.getIsoDep()](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NFCAdapter.getIsoDep.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 获取IsoDep实例,实例支持ISO-DEP (ISO 14443-4)标准的读写 */
+        getIsoDep(): IsoDep
+        /** [[MifareClassic](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/MifareClassic.html) NFCAdapter.getMifareClassic()](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NFCAdapter.getMifareClassic.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 获取MifareClassic实例,实例支持MIFARE Classic标签的读写 */
+        getMifareClassic(): MifareClassic
+        /** [[MifareUltralight](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/MifareUltralight.html) NFCAdapter.getMifareUltralight()](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NFCAdapter.getMifareUltralight.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 获取MifareUltralight实例,实例支持MIFARE Ultralight标签的读写 */
+        getMifareUltralight(): MifareUltralight
+        /** [[Ndef](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/Ndef.html) NFCAdapter.getNdef()](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NFCAdapter.getNdef.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 获取Ndef实例,实例支持对NDEF格式的NFC标签上的NDEF数据的读写 */
+        getNdef(): Ndef
+        /** [[NfcA](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NfcA.html) NFCAdapter.getNfcA()](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NFCAdapter.getNfcA.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 获取NfcA实例,实例支持NFC-A (ISO 14443-3A)标准的读写 */
+        getNfcA(): NfcA
+        /** [[NfcB](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NfcB.html) NFCAdapter.getNfcB()](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NFCAdapter.getNfcB.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 获取NfcB实例,实例支持NFC-B (ISO 14443-3B)标准的读写 */
+        getNfcB(): NfcB
+        /** [[NfcF](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NfcF.html) NFCAdapter.getNfcF()](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NFCAdapter.getNfcF.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 获取NfcF实例,实例支持NFC-F (JIS 6319-4)标准的读写 */
+        getNfcF(): NfcF
+        /** [[NfcV](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NfcV.html) NFCAdapter.getNfcV()](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NFCAdapter.getNfcV.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 获取NfcV实例,实例支持NFC-V (ISO 15693)标准的读写 */
+        getNfcV(): NfcV
+    }
+    interface NFCError {
+        /** 错误信息
+         *
+         * | 错误码 | 错误信息 | 说明 |
+         * | - | - | - |
+         * | 0 | ok | 正常 |
+         * | 13000 |  | 当前设备不支持NFC |
+         * | 13001 |  | 当前设备支持NFC,但系统NFC开关未开启 |
+         * | 13002 |  | 当前设备支持NFC,但不支持HCE |
+         * | 13003 |  | AID列表参数格式错误 |
+         * | 13004 |  | 未设置微信为默认NFC支付应用 |
+         * | 13005 |  | 返回的指令不合法 |
+         * | 13006 |  | 注册AID失败 | */ errMsg: string
+        /** 错误码
+         *
+         * | 错误码 | 错误信息 | 说明 |
+         * | - | - | - |
+         * | 0 | ok | 正常 |
+         * | 13000 |  | 当前设备不支持NFC |
+         * | 13001 |  | 当前设备支持NFC,但系统NFC开关未开启 |
+         * | 13002 |  | 当前设备支持NFC,但不支持HCE |
+         * | 13003 |  | AID列表参数格式错误 |
+         * | 13004 |  | 未设置微信为默认NFC支付应用 |
+         * | 13005 |  | 返回的指令不合法 |
+         * | 13006 |  | 注册AID失败 | */ errCode: number
+    }
+    interface Ndef {
+        /** [Ndef.close(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/Ndef.close.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 断开连接 */
+        close(option?: NdefCloseOption): void
+        /** [Ndef.connect(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/Ndef.connect.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 连接 NFC 标签 */
+        connect(option?: NdefConnectOption): void
+        /** [Ndef.isConnected(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/Ndef.isConnected.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 检查是否已连接 */
+        isConnected(option?: IsConnectedOption): void
+        /** [Ndef.offNdefMessage(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/Ndef.offNdefMessage.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 取消监听 Ndef 消息 */
+        offNdefMessage(callback: (...args: any[]) => any): void
+        /** [Ndef.onNdefMessage(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/Ndef.onNdefMessage.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 监听 Ndef 消息 */
+        onNdefMessage(callback: (...args: any[]) => any): void
+        /** [Ndef.setTimeout(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/Ndef.setTimeout.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 设置超时时间 */
+        setTimeout(option: SetTimeoutOption): void
+        /** [Ndef.writeNdefMessage(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/Ndef.writeNdefMessage.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 重写 Ndef 标签内容 */
+        writeNdefMessage(option: WriteNdefMessageOption): void
+    }
+    interface NfcA {
+        /** [NfcA.close(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NfcA.close.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 断开连接 */
+        close(option?: NdefCloseOption): void
+        /** [NfcA.connect(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NfcA.connect.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 连接 NFC 标签 */
+        connect(option?: NdefConnectOption): void
+        /** [NfcA.getAtqa(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NfcA.getAtqa.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 获取ATQA信息 */
+        getAtqa(option?: GetAtqaOption): void
+        /** [NfcA.getMaxTransceiveLength(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NfcA.getMaxTransceiveLength.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 获取最大传输长度 */
+        getMaxTransceiveLength(option?: GetMaxTransceiveLengthOption): void
+        /** [NfcA.getSak(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NfcA.getSak.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 获取SAK信息 */
+        getSak(option?: GetSakOption): void
+        /** [NfcA.isConnected(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NfcA.isConnected.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 检查是否已连接 */
+        isConnected(option?: IsConnectedOption): void
+        /** [NfcA.setTimeout(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NfcA.setTimeout.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 设置超时时间 */
+        setTimeout(option: SetTimeoutOption): void
+        /** [NfcA.transceive(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NfcA.transceive.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 发送数据 */
+        transceive(option: TransceiveOption): void
+    }
+    interface NfcB {
+        /** [NfcB.close(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NfcB.close.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 断开连接 */
+        close(option?: NdefCloseOption): void
+        /** [NfcB.connect(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NfcB.connect.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 连接 NFC 标签 */
+        connect(option?: NdefConnectOption): void
+        /** [NfcB.getMaxTransceiveLength(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NfcB.getMaxTransceiveLength.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 获取最大传输长度 */
+        getMaxTransceiveLength(option?: GetMaxTransceiveLengthOption): void
+        /** [NfcB.isConnected(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NfcB.isConnected.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 检查是否已连接 */
+        isConnected(option?: IsConnectedOption): void
+        /** [NfcB.setTimeout(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NfcB.setTimeout.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 设置超时时间 */
+        setTimeout(option: SetTimeoutOption): void
+        /** [NfcB.transceive(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NfcB.transceive.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 发送数据 */
+        transceive(option: TransceiveOption): void
+    }
+    interface NfcF {
+        /** [NfcF.close(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NfcF.close.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 断开连接 */
+        close(option?: NdefCloseOption): void
+        /** [NfcF.connect(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NfcF.connect.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 连接 NFC 标签 */
+        connect(option?: NdefConnectOption): void
+        /** [NfcF.getMaxTransceiveLength(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NfcF.getMaxTransceiveLength.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 获取最大传输长度 */
+        getMaxTransceiveLength(option?: GetMaxTransceiveLengthOption): void
+        /** [NfcF.isConnected(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NfcF.isConnected.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 检查是否已连接 */
+        isConnected(option?: IsConnectedOption): void
+        /** [NfcF.setTimeout(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NfcF.setTimeout.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 设置超时时间 */
+        setTimeout(option: SetTimeoutOption): void
+        /** [NfcF.transceive(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NfcF.transceive.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 发送数据 */
+        transceive(option: TransceiveOption): void
+    }
+    interface NfcV {
+        /** [NfcV.close(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NfcV.close.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 断开连接 */
+        close(option?: NdefCloseOption): void
+        /** [NfcV.connect(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NfcV.connect.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 连接 NFC 标签 */
+        connect(option?: NdefConnectOption): void
+        /** [NfcV.getMaxTransceiveLength(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NfcV.getMaxTransceiveLength.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 获取最大传输长度 */
+        getMaxTransceiveLength(option?: GetMaxTransceiveLengthOption): void
+        /** [NfcV.isConnected(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NfcV.isConnected.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 检查是否已连接 */
+        isConnected(option?: IsConnectedOption): void
+        /** [NfcV.setTimeout(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NfcV.setTimeout.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 设置超时时间 */
+        setTimeout(option: SetTimeoutOption): void
+        /** [NfcV.transceive(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NfcV.transceive.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:支持
+         *
+         * 发送数据 */
+        transceive(option: TransceiveOption): void
+    }
+    interface Nfcrwerror {
+        /** 错误信息
+         *
+         * | 错误码 | 错误信息 | 说明 |
+         * | - | - | - |
+         * | 13000 | 设备不支持NFC |  |
+         * | 13001 | 系统NFC开关未打开 |  |
+         * | 13010 | 未知错误 |  |
+         * | 13019 | user is not authorized | 用户未授权 |
+         * | 13011 | invalid parameter | 参数无效 |
+         * | 13012 | parse NdefMessage failed | 将参数解析为NdefMessage失败 |
+         * | 13021 | NFC discovery already started | 已经开始NFC扫描 |
+         * | 13018 | NFC discovery has not started | 尝试在未开始NFC扫描时停止NFC扫描 |
+         * | 13022 | Tech already connected | 标签已经连接 |
+         * | 13023 | Tech has not connected | 尝试在未连接标签时断开连接 |
+         * | 13013 | NFC tag has not been discovered | 未扫描到NFC标签 |
+         * | 13014 | invalid tech | 无效的标签技术 |
+         * | 13015 | unavailable tech | 从标签上获取对应技术失败 |
+         * | 13024 | function not support | 当前标签技术不支持该功能 |
+         * | 13017 | system internal error | 相关读写操作失败 |
+         * | 13016 | connect fail | 连接失败 | */ errMsg: string
+        /** 错误码
+         *
+         * | 错误码 | 错误信息 | 说明 |
+         * | - | - | - |
+         * | 13000 | 设备不支持NFC |  |
+         * | 13001 | 系统NFC开关未打开 |  |
+         * | 13010 | 未知错误 |  |
+         * | 13019 | user is not authorized | 用户未授权 |
+         * | 13011 | invalid parameter | 参数无效 |
+         * | 13012 | parse NdefMessage failed | 将参数解析为NdefMessage失败 |
+         * | 13021 | NFC discovery already started | 已经开始NFC扫描 |
+         * | 13018 | NFC discovery has not started | 尝试在未开始NFC扫描时停止NFC扫描 |
+         * | 13022 | Tech already connected | 标签已经连接 |
+         * | 13023 | Tech has not connected | 尝试在未连接标签时断开连接 |
+         * | 13013 | NFC tag has not been discovered | 未扫描到NFC标签 |
+         * | 13014 | invalid tech | 无效的标签技术 |
+         * | 13015 | unavailable tech | 从标签上获取对应技术失败 |
+         * | 13024 | function not support | 当前标签技术不支持该功能 |
+         * | 13017 | system internal error | 相关读写操作失败 |
+         * | 13016 | connect fail | 连接失败 | */ errCode: number
+    }
+    interface NodesRef {
+        /** [[SelectorQuery](https://developers.weixin.qq.com/miniprogram/dev/api/wxml/SelectorQuery.html) NodesRef.boundingClientRect(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/wxml/NodesRef.boundingClientRect.html)
+*
+* 在插件中使用:支持
+*
+* 添加节点的布局位置的查询请求。相对于显示区域,以像素为单位。其功能类似于 DOM 的 `getBoundingClientRect`。返回 `NodesRef` 对应的 `SelectorQuery`。
+*
+* **示例代码**
+*
+* ```js
+Page({
+  getRect () {
+    wx.createSelectorQuery().select('#the-id').boundingClientRect(function(rect){
+      rect.id      // 节点的ID
+      rect.dataset // 节点的dataset
+      rect.left    // 节点的左边界坐标
+      rect.right   // 节点的右边界坐标
+      rect.top     // 节点的上边界坐标
+      rect.bottom  // 节点的下边界坐标
+      rect.width   // 节点的宽度
+      rect.height  // 节点的高度
+    }).exec()
+  },
+  getAllRects () {
+    wx.createSelectorQuery().selectAll('.a-class').boundingClientRect(function(rects){
+      rects.forEach(function(rect){
+        rect.id      // 节点的ID
+        rect.dataset // 节点的dataset
+        rect.left    // 节点的左边界坐标
+        rect.right   // 节点的右边界坐标
+        rect.top     // 节点的上边界坐标
+        rect.bottom  // 节点的下边界坐标
+        rect.width   // 节点的宽度
+        rect.height  // 节点的高度
+      })
+    }).exec()
+  }
+})
+``` */
+        boundingClientRect(
+            /** 回调函数,在执行 `SelectorQuery.exec` 方法后,节点信息会在 `callback` 中返回。 */
+            callback?: BoundingClientRectCallback
+        ): SelectorQuery
+        /** [[SelectorQuery](https://developers.weixin.qq.com/miniprogram/dev/api/wxml/SelectorQuery.html) NodesRef.context(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/wxml/NodesRef.context.html)
+*
+* 需要基础库: `2.4.2`
+*
+* 在插件中使用:支持
+*
+* 添加节点的 Context 对象查询请求。目前支持 [VideoContext](https://developers.weixin.qq.com/miniprogram/dev/api/media/video/VideoContext.html)、[CanvasContext](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.html)、[LivePlayerContext](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePlayerContext.html)、[EditorContext](https://developers.weixin.qq.com/miniprogram/dev/api/media/editor/EditorContext.html)和 [MapContext](https://developers.weixin.qq.com/miniprogram/dev/api/media/map/MapContext.html) 的获取。
+*
+* **示例代码**
+*
+* ```js
+Page({
+  getContext () {
+    wx.createSelectorQuery().select('.the-video-class').context(function(res){
+      console.log(res.context) // 节点对应的 Context 对象。如:选中的节点是 <video> 组件,那么此处即返回 VideoContext 对象
+    }).exec()
+  }
+})
+``` */
+        context(
+            /** 回调函数,在执行 `SelectorQuery.exec` 方法后,返回节点信息。 */
+            callback?: ContextCallback
+        ): SelectorQuery
+        /** [[SelectorQuery](https://developers.weixin.qq.com/miniprogram/dev/api/wxml/SelectorQuery.html) NodesRef.fields(Object fields, function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/wxml/NodesRef.fields.html)
+*
+* 在插件中使用:支持
+*
+* 获取节点的相关信息。需要获取的字段在fields中指定。返回值是 `nodesRef` 对应的 `selectorQuery`
+*
+* **注意**
+*
+* computedStyle 的优先级高于 size,当同时在 computedStyle 里指定了 width/height 和传入了 size: true,则优先返回 computedStyle 获取到的 width/height。
+*
+* **示例代码**
+*
+* ```js
+Page({
+  getFields () {
+    wx.createSelectorQuery().select('#the-id').fields({
+      dataset: true,
+      size: true,
+      scrollOffset: true,
+      properties: ['scrollX', 'scrollY'],
+      computedStyle: ['margin', 'backgroundColor'],
+      context: true,
+    }, function (res) {
+      res.dataset    // 节点的dataset
+      res.width      // 节点的宽度
+      res.height     // 节点的高度
+      res.scrollLeft // 节点的水平滚动位置
+      res.scrollTop  // 节点的竖直滚动位置
+      res.scrollX    // 节点 scroll-x 属性的当前值
+      res.scrollY    // 节点 scroll-y 属性的当前值
+      // 此处返回指定要返回的样式名
+      res.margin
+      res.backgroundColor
+      res.context    // 节点对应的 Context 对象
+    }).exec()
+  }
+})
+``` */
+        fields(
+            fields: Fields,
+            /** 回调函数 */
+            callback?: FieldsCallback
+        ): SelectorQuery
+        /** [[SelectorQuery](https://developers.weixin.qq.com/miniprogram/dev/api/wxml/SelectorQuery.html) NodesRef.node(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/wxml/NodesRef.node.html)
+*
+* 需要基础库: `2.7.0`
+*
+* 在插件中使用:支持
+*
+* 获取 Node 节点实例。
+*
+* **示例代码**
+*
+* ```js
+Page({
+  getNode() {
+    wx.createSelectorQuery().select('.canvas').node(function(res){
+      console.log(res.node) // 节点对应的 Canvas 实例。
+    }).exec()
+  }
+})
+``` */
+        node(
+            /** 回调函数,在执行 `SelectorQuery.exec` 方法后,返回节点信息。 */
+            callback?: NodeCallback
+        ): SelectorQuery
+        /** [[SelectorQuery](https://developers.weixin.qq.com/miniprogram/dev/api/wxml/SelectorQuery.html) NodesRef.scrollOffset(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/wxml/NodesRef.scrollOffset.html)
+*
+* 在插件中使用:支持
+*
+* 添加节点的滚动位置查询请求。以像素为单位。节点必须是 `scroll-view` 或者 `viewport`,返回 `NodesRef` 对应的 `SelectorQuery`。
+*
+* **示例代码**
+*
+* ```js
+Page({
+  getScrollOffset () {
+    wx.createSelectorQuery().selectViewport().scrollOffset(function(res){
+      res.id      // 节点的ID
+      res.dataset // 节点的dataset
+      res.scrollLeft // 节点的水平滚动位置
+      res.scrollTop  // 节点的竖直滚动位置
+    }).exec()
+  }
+})
+``` */
+        scrollOffset(
+            /** 回调函数,在执行 `SelectorQuery.exec` 方法后,节点信息会在 `callback` 中返回。 */
+            callback?: ScrollOffsetCallback
+        ): SelectorQuery
+    }
+    interface OffscreenCanvas {
+        /** [[Image](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/Image.html) OffscreenCanvas.createImage()](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/OffscreenCanvas.createImage.html)
+         *
+         * 需要基础库: `2.7.3`
+         *
+         * 在插件中使用:需要基础库 `2.16.1`
+         *
+         * 创建一个图片对象。支持在 2D Canvas 和 WebGL Canvas 下使用, 但不支持混用 2D 和 WebGL 的方法。
+         *
+         * ****
+         *
+         * 注意不允许混用 webgl 和 2d 画布创建的图片对象,使用时请注意尽量使用 canvas 自身的 `createImage` 创建图片对象。 */
+        createImage(): Image
+        /** [[RenderingContext](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/RenderingContext.html) OffscreenCanvas.getContext(string contextType)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/OffscreenCanvas.getContext.html)
+         *
+         * 需要基础库: `2.7.0`
+         *
+         * 在插件中使用:需要基础库 `2.16.1`
+         *
+         * 该方法返回 OffscreenCanvas 的绘图上下文
+         *
+         * ****
+         *
+         * 注意不允许混用 webgl 和 2d 绘图上下文,传入的 contextType 必须要与 `wx.createOffscreenCanvas` 传入的 type 类型一致。 */
+        getContext(
+            /** 绘图上下文类型,需要与 createOffscreenCanvas 时传入的 type 一致
+             *
+             * 参数 contextType 可选值:
+             * - 'webgl': webgl类型上下文;
+             * - '2d': 2d类型上下文; */
+            contextType: 'webgl' | '2d'
+        ): any
+    }
+    interface OpenSyncError {
+        /** 错误信息
+         *
+         * | 错误信息 | 说明 |
+         * | - | - |
+         * | fail no such file or directory "${filePath}" | 上级目录不存在 | */ errMsg: string
+        /** 错误码
+         *
+         * | 错误信息 | 说明 |
+         * | - | - |
+         * | fail no such file or directory "${filePath}" | 上级目录不存在 | */ errCode: number
+    }
+    interface Performance {
+        /** [Array Performance.getEntries()](https://developers.weixin.qq.com/miniprogram/dev/api/base/performance/Performance.getEntries.html)
+         *
+         * 需要基础库: `2.11.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 该方法返回当前缓冲区中的所有性能数据 */
+        getEntries(): any[]
+        /** [Array Performance.getEntriesByName(string name, string entryType)](https://developers.weixin.qq.com/miniprogram/dev/api/base/performance/Performance.getEntriesByName.html)
+         *
+         * 需要基础库: `2.11.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 获取当前缓冲区中所有名称为 [name] 且类型为 [entryType] 的性能数据 */
+        getEntriesByName(
+            /** 名称 */
+            name: string,
+            /** 类型 */
+            entryType?: string
+        ): any[]
+        /** [Array Performance.getEntriesByType(string entryType)](https://developers.weixin.qq.com/miniprogram/dev/api/base/performance/Performance.getEntriesByType.html)
+         *
+         * 需要基础库: `2.11.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 获取当前缓冲区中所有类型为 [entryType] 的性能数据 */
+        getEntriesByType(
+            /** 类型 */
+            entryType: string
+        ): any[]
+        /** [Performance.setBufferSize(number size)](https://developers.weixin.qq.com/miniprogram/dev/api/base/performance/Performance.setBufferSize.html)
+         *
+         * 需要基础库: `2.11.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 设置缓冲区大小,默认缓冲 30 条性能数据 */
+        setBufferSize(size: number): void
+        /** [[PerformanceObserver](https://developers.weixin.qq.com/miniprogram/dev/api/base/performance/PerformanceObserver.html) Performance.createObserver(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/base/performance/Performance.createObserver.html)
+         *
+         * 需要基础库: `2.11.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 创建全局性能事件监听器 */
+        createObserver(callback: (...args: any[]) => any): PerformanceObserver
+    }
+    interface PerformanceObserver {
+        /** [PerformanceObserver.disconnect()](https://developers.weixin.qq.com/miniprogram/dev/api/base/performance/PerformanceObserver.disconnect.html)
+         *
+         * 需要基础库: `2.11.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 停止监听 */
+        disconnect(): void
+        /** [PerformanceObserver.observe(Object options)](https://developers.weixin.qq.com/miniprogram/dev/api/base/performance/PerformanceObserver.observe.html)
+         *
+         * 需要基础库: `2.11.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 开始监听 */
+        observe(
+            /** 设置 type 监听单个类型的指标,设置 entryTypes 监听多个类型指标。 */
+            options: ObserveOption
+        ): void
+    }
+    interface ReadCompressedFileSyncError {
+        /** 错误信息
+         *
+         * | 错误信息 | 说明 |
+         * | - | - |
+         * | fail decompress fail | 指定的 compressionAlgorithm 与文件实际压缩格式不符 |
+         * | fail no such file or directory, open ${filePath} | 指定的 filePath 所在目录不存在 |
+         * | fail permission denied, open ${dirPath} | 指定的 filePath 路径没有读权限 | */ errMsg: string
+        /** 错误码
+         *
+         * | 错误信息 | 说明 |
+         * | - | - |
+         * | fail decompress fail | 指定的 compressionAlgorithm 与文件实际压缩格式不符 |
+         * | fail no such file or directory, open ${filePath} | 指定的 filePath 所在目录不存在 |
+         * | fail permission denied, open ${dirPath} | 指定的 filePath 路径没有读权限 | */ errCode: number
+    }
+    interface ReadSyncError {
+        /** 错误信息
+         *
+         * | 错误信息 | 说明 |
+         * | - | - |
+         * | bad file descriptor | 无效的文件描述符 |
+         * | fail permission denied | 指定的 fd 路径没有读权限 |
+         * | fail the value of "offset" is out of range | 传入的 offset 不合法 |
+         * | fail the value of "length" is out of range | 传入的 length 不合法 |
+         * | fail sdcard not mounted | android sdcard 挂载失败 | */ errMsg: string
+        /** 错误码
+         *
+         * | 错误信息 | 说明 |
+         * | - | - |
+         * | bad file descriptor | 无效的文件描述符 |
+         * | fail permission denied | 指定的 fd 路径没有读权限 |
+         * | fail the value of "offset" is out of range | 传入的 offset 不合法 |
+         * | fail the value of "length" is out of range | 传入的 length 不合法 |
+         * | fail sdcard not mounted | android sdcard 挂载失败 | */ errCode: number
+    }
+    interface RealtimeLogManager {
+        /** [Object RealtimeLogManager.getCurrentState()](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/RealtimeLogManager.getCurrentState.html)
+         *
+         * 需要基础库: `2.19.4`
+         *
+         * 在插件中使用:不支持
+         *
+         * 实时日志会将一定时间间隔内缓存的日志聚合上报,如果该时间内缓存的内容超出限制,则会被丢弃。此方法可以获取当前缓存剩余空间。
+         *
+         * > 注意:基础库内部在对日志进行上报时会补充一些结构化数据,如果遇到上报溢出的情况也会补充警告日志,所以此方法获取到的当前占用信息会比预期的大一些。 */
+        getCurrentState(): CurrentState
+        /** [RealtimeLogManager.addFilterMsg(string msg)](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/RealtimeLogManager.addFilterMsg.html)
+         *
+         * 需要基础库: `2.8.1`
+         *
+         * 在插件中使用:不支持
+         *
+         * 添加过滤关键字,暂不支持在插件使用 */
+        addFilterMsg(
+            /** 是setFilterMsg的添加接口。用于设置多个过滤关键字。 */
+            msg: string
+        ): void
+        /** [RealtimeLogManager.error()](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/RealtimeLogManager.error.html)
+         *
+         * 需要基础库: `2.7.1`
+         *
+         * 在插件中使用:不支持
+         *
+         * 写 error 日志,暂不支持在插件使用 */
+        error(
+            /** 日志内容,可以有任意多个。每次调用的参数的总大小不超过5Kb */
+            ...args: any[]
+        ): void
+        /** [RealtimeLogManager.in(Page pageInstance)](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/RealtimeLogManager.in.html)
+         *
+         * 需要基础库: `2.9.1`
+         *
+         * 在插件中使用:不支持
+         *
+         * 设置实时日志page参数所在的页面,暂不支持在插件使用 */
+        in(
+            /** page实例 */
+            pageInstance: Page.TrivialInstance
+        ): void
+        /** [RealtimeLogManager.info()](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/RealtimeLogManager.info.html)
+         *
+         * 需要基础库: `2.7.1`
+         *
+         * 在插件中使用:不支持
+         *
+         * 写 info 日志,暂不支持在插件使用 */
+        info(
+            /** 日志内容,可以有任意多个。每次调用的参数的总大小不超过5Kb */
+            ...args: any[]
+        ): void
+        /** [RealtimeLogManager.setFilterMsg(string msg)](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/RealtimeLogManager.setFilterMsg.html)
+         *
+         * 需要基础库: `2.7.3`
+         *
+         * 在插件中使用:不支持
+         *
+         * 设置过滤关键字,暂不支持在插件使用 */
+        setFilterMsg(
+            /** 过滤关键字,最多不超过1Kb,可以在小程序管理后台根据设置的内容搜索得到对应的日志。 */
+            msg: string
+        ): void
+        /** [RealtimeLogManager.warn()](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/RealtimeLogManager.warn.html)
+         *
+         * 需要基础库: `2.7.1`
+         *
+         * 在插件中使用:不支持
+         *
+         * 写 warn 日志,暂不支持在插件使用 */
+        warn(
+            /** 日志内容,可以有任意多个。每次调用的参数的总大小不超过5Kb */
+            ...args: any[]
+        ): void
+        /** [[RealtimeTagLogManager](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/RealtimeTagLogManager.html) RealtimeLogManager.tag(string tagName)](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/RealtimeLogManager.tag.html)
+         *
+         * 需要基础库: `2.16.0`
+         *
+         * 在插件中使用:需要基础库 `2.16.0`
+         *
+         * 获取给定标签的日志管理器实例,目前只支持在插件使用 */
+        tag(
+            /** 标签名 */
+            tagName: string
+        ): RealtimeTagLogManager
+    }
+    interface RealtimeTagLogManager {
+        /** [RealtimeTagLogManager.addFilterMsg(string msg)](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/RealtimeTagLogManager.addFilterMsg.html)
+         *
+         * 需要基础库: `2.16.0`
+         *
+         * 在插件中使用:需要基础库 `2.16.0`
+         *
+         * 添加过滤关键字 */
+        addFilterMsg(
+            /** 是setFilterMsg的添加接口。用于设置多个过滤关键字。 */
+            msg: string
+        ): void
+        /** [RealtimeTagLogManager.error(string key, Object|Array.&lt;any&gt;|number|string value)](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/RealtimeTagLogManager.error.html)
+         *
+         * 需要基础库: `2.16.0`
+         *
+         * 在插件中使用:需要基础库 `2.16.0`
+         *
+         * 写 error 日志 */
+        error(
+            /** 日志的 key */
+            key: string,
+            /** 日志的值,每次调用的参数的总大小不超过5Kb */
+            value: IAnyObject | any[] | number | string
+        ): void
+        /** [RealtimeTagLogManager.info(string key, Object|Array.&lt;any&gt;|number|string value)](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/RealtimeTagLogManager.info.html)
+         *
+         * 需要基础库: `2.16.0`
+         *
+         * 在插件中使用:需要基础库 `2.16.0`
+         *
+         * 写 info 日志 */
+        info(
+            /** 日志的 key */
+            key: string,
+            /** 日志的值,每次调用的参数的总大小不超过5Kb */
+            value: IAnyObject | any[] | number | string
+        ): void
+        /** [RealtimeTagLogManager.setFilterMsg(string msg)](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/RealtimeTagLogManager.setFilterMsg.html)
+         *
+         * 需要基础库: `2.16.0`
+         *
+         * 在插件中使用:需要基础库 `2.16.0`
+         *
+         * 设置过滤关键字 */
+        setFilterMsg(
+            /** 过滤关键字,最多不超过1Kb,可以在小程序管理后台根据设置的内容搜索得到对应的日志。 */
+            msg: string
+        ): void
+        /** [RealtimeTagLogManager.warn(string key, Object|Array.&lt;any&gt;|number|string value)](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/RealtimeTagLogManager.warn.html)
+         *
+         * 需要基础库: `2.16.0`
+         *
+         * 在插件中使用:需要基础库 `2.16.0`
+         *
+         * 写 warn 日志 */
+        warn(
+            /** 日志的 key */
+            key: string,
+            /** 日志的值,每次调用的参数的总大小不超过5Kb */
+            value: IAnyObject | any[] | number | string
+        ): void
+    }
+    interface RecorderManager {
+        /** [RecorderManager.onError(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/recorder/RecorderManager.onError.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 监听录音错误事件 */
+        onError(
+            /** 录音错误事件的回调函数 */
+            callback: UDPSocketOnErrorCallback
+        ): void
+        /** [RecorderManager.onFrameRecorded(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/recorder/RecorderManager.onFrameRecorded.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 监听已录制完指定帧大小的文件事件。如果设置了 frameSize,则会回调此事件。 */
+        onFrameRecorded(
+            /** 已录制完指定帧大小的文件事件的回调函数 */
+            callback: OnFrameRecordedCallback
+        ): void
+        /** [RecorderManager.onInterruptionBegin(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/recorder/RecorderManager.onInterruptionBegin.html)
+         *
+         * 需要基础库: `2.3.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 监听录音因为受到系统占用而被中断开始事件。以下场景会触发此事件:微信语音聊天、微信视频聊天。此事件触发后,录音会被暂停。pause 事件在此事件后触发 */
+        onInterruptionBegin(
+            /** 录音因为受到系统占用而被中断开始事件的回调函数 */
+            callback: OnInterruptionBeginCallback
+        ): void
+        /** [RecorderManager.onInterruptionEnd(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/recorder/RecorderManager.onInterruptionEnd.html)
+         *
+         * 需要基础库: `2.3.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 监听录音中断结束事件。在收到 interruptionBegin 事件之后,小程序内所有录音会暂停,收到此事件之后才可再次录音成功。 */
+        onInterruptionEnd(
+            /** 录音中断结束事件的回调函数 */
+            callback: OnInterruptionEndCallback
+        ): void
+        /** [RecorderManager.onPause(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/recorder/RecorderManager.onPause.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 监听录音暂停事件 */
+        onPause(
+            /** 录音暂停事件的回调函数 */
+            callback: OnPauseCallback
+        ): void
+        /** [RecorderManager.onResume(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/recorder/RecorderManager.onResume.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 监听录音继续事件 */
+        onResume(
+            /** 录音继续事件的回调函数 */
+            callback: OnResumeCallback
+        ): void
+        /** [RecorderManager.onStart(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/recorder/RecorderManager.onStart.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 监听录音开始事件 */
+        onStart(
+            /** 录音开始事件的回调函数 */
+            callback: OnStartCallback
+        ): void
+        /** [RecorderManager.onStop(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/recorder/RecorderManager.onStop.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 监听录音结束事件 */
+        onStop(
+            /** 录音结束事件的回调函数 */
+            callback: RecorderManagerOnStopCallback
+        ): void
+        /** [RecorderManager.pause()](https://developers.weixin.qq.com/miniprogram/dev/api/media/recorder/RecorderManager.pause.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 暂停录音 */
+        pause(): void
+        /** [RecorderManager.resume()](https://developers.weixin.qq.com/miniprogram/dev/api/media/recorder/RecorderManager.resume.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 继续录音 */
+        resume(): void
+        /** [RecorderManager.start(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/recorder/RecorderManager.start.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 开始录音
+         *
+         * **采样率与编码码率限制**
+         *
+         *  每种采样率有对应的编码码率范围有效值,设置不合法的采样率或编码码率会导致录音失败,具体对应关系如下表。
+         *
+         * | 采样率 | 编码码率       |
+         * | ------ | -------------- |
+         * | 8000   | 16000 ~ 48000  |
+         * | 11025  | 16000 ~ 48000  |
+         * | 12000  | 24000 ~ 64000  |
+         * | 16000  | 24000 ~ 96000  |
+         * | 22050  | 32000 ~ 128000 |
+         * | 24000  | 32000 ~ 128000 |
+         * | 32000  | 48000 ~ 192000 |
+         * | 44100  | 64000 ~ 320000 |
+         * | 48000  | 64000 ~ 320000 | */
+        start(option: RecorderManagerStartOption): void
+        /** [RecorderManager.stop()](https://developers.weixin.qq.com/miniprogram/dev/api/media/recorder/RecorderManager.stop.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 停止录音 */
+        stop(): void
+    }
+    interface RequestTask {
+        /** [RequestTask.abort()](https://developers.weixin.qq.com/miniprogram/dev/api/network/request/RequestTask.abort.html)
+         *
+         * 需要基础库: `1.4.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 中断请求任务 */
+        abort(): void
+        /** [RequestTask.offChunkReceived(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/request/RequestTask.offChunkReceived.html)
+         *
+         * 需要基础库: `2.20.1`
+         *
+         * 在插件中使用:支持
+         *
+         * 取消监听 Transfer-Encoding Chunk Received 事件 */
+        offChunkReceived(
+            /** Transfer-Encoding Chunk Received 事件的回调函数 */
+            callback?: OffChunkReceivedCallback
+        ): void
+        /** [RequestTask.offHeadersReceived(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/request/RequestTask.offHeadersReceived.html)
+         *
+         * 需要基础库: `2.1.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 取消监听 HTTP Response Header 事件 */
+        offHeadersReceived(
+            /** HTTP Response Header 事件的回调函数 */
+            callback?: OffHeadersReceivedCallback
+        ): void
+        /** [RequestTask.onChunkReceived(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/request/RequestTask.onChunkReceived.html)
+         *
+         * 需要基础库: `2.20.1`
+         *
+         * 在插件中使用:支持
+         *
+         * 监听 Transfer-Encoding Chunk Received 事件。当接收到新的chunk时触发。 */
+        onChunkReceived(
+            /** Transfer-Encoding Chunk Received 事件的回调函数 */
+            callback: OnChunkReceivedCallback
+        ): void
+        /** [RequestTask.onHeadersReceived(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/request/RequestTask.onHeadersReceived.html)
+         *
+         * 需要基础库: `2.1.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 监听 HTTP Response Header 事件。会比请求完成事件更早 */
+        onHeadersReceived(
+            /** HTTP Response Header 事件的回调函数 */
+            callback: OnHeadersReceivedCallback
+        ): void
+    }
+    interface RewardedVideoAd {
+        /** [Promise RewardedVideoAd.load()](https://developers.weixin.qq.com/miniprogram/dev/api/ad/RewardedVideoAd.load.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 加载激励视频广告。 */
+        load(): Promise<any>
+        /** [Promise RewardedVideoAd.show()](https://developers.weixin.qq.com/miniprogram/dev/api/ad/RewardedVideoAd.show.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 显示激励视频广告。激励视频广告将从屏幕下方推入。 */
+        show(): Promise<any>
+        /** [RewardedVideoAd.destroy()](https://developers.weixin.qq.com/miniprogram/dev/api/ad/RewardedVideoAd.destroy.html)
+         *
+         * 需要基础库: `2.8.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 销毁激励视频广告实例。 */
+        destroy(): void
+        /** [RewardedVideoAd.offClose(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/ad/RewardedVideoAd.offClose.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 取消监听用户点击 `关闭广告` 按钮的事件 */
+        offClose(
+            /** 用户点击 `关闭广告` 按钮的事件的回调函数 */
+            callback?: RewardedVideoAdOffCloseCallback
+        ): void
+        /** [RewardedVideoAd.offError(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/ad/RewardedVideoAd.offError.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 取消监听激励视频错误事件 */
+        offError(
+            /** 激励视频错误事件的回调函数 */
+            callback?: RewardedVideoAdOffErrorCallback
+        ): void
+        /** [RewardedVideoAd.offLoad(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/ad/RewardedVideoAd.offLoad.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 取消监听激励视频广告加载事件 */
+        offLoad(
+            /** 激励视频广告加载事件的回调函数 */
+            callback?: OffLoadCallback
+        ): void
+        /** [RewardedVideoAd.onClose(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/ad/RewardedVideoAd.onClose.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听用户点击 `关闭广告` 按钮的事件。 */
+        onClose(
+            /** 用户点击 `关闭广告` 按钮的事件的回调函数 */
+            callback: RewardedVideoAdOnCloseCallback
+        ): void
+        /** [RewardedVideoAd.onError(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/ad/RewardedVideoAd.onError.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听激励视频错误事件。
+         *
+         * **错误码信息与解决方案表**
+         *
+         *  错误码是通过onError获取到的错误信息。调试期间,可以通过异常返回来捕获信息。
+         *  在小程序发布上线之后,如果遇到异常问题,可以在[“运维中心“](https://mp.weixin.qq.com/)里面搜寻错误日志,还可以针对异常返回加上适当的监控信息。
+         *
+         * | 代码 | 异常情况 | 理由 | 解决方案 |
+         * | ------ | -------------- | --------------- | -------------------------- |
+         * | 1000  | 后端错误调用失败  | 该项错误不是开发者的异常情况 | 一般情况下忽略一段时间即可恢复。 |
+         * | 1001  | 参数错误    | 使用方法错误 | 可以前往developers.weixin.qq.com确认具体教程(小程序和小游戏分别有各自的教程,可以在顶部选项中,“设计”一栏的右侧进行切换。|
+         * | 1002  | 广告单元无效    | 可能是拼写错误、或者误用了其他APP的广告ID | 请重新前往mp.weixin.qq.com确认广告位ID。 |
+         * | 1003  | 内部错误    | 该项错误不是开发者的异常情况 | 一般情况下忽略一段时间即可恢复。|
+         * | 1004  | 无适合的广告   | 广告不是每一次都会出现,这次没有出现可能是由于该用户不适合浏览广告 | 属于正常情况,且开发者需要针对这种情况做形态上的兼容。 |
+         * | 1005  | 广告组件审核中  | 你的广告正在被审核,无法展现广告 | 请前往mp.weixin.qq.com确认审核状态,且开发者需要针对这种情况做形态上的兼容。|
+         * | 1006  | 广告组件被驳回  | 你的广告审核失败,无法展现广告 | 请前往mp.weixin.qq.com确认审核状态,且开发者需要针对这种情况做形态上的兼容。|
+         * | 1007  | 广告组件被驳回  | 你的广告能力已经被封禁,封禁期间无法展现广告 | 请前往mp.weixin.qq.com确认小程序广告封禁状态。 |
+         * | 1008  | 广告单元已关闭  | 该广告位的广告能力已经被关闭 | 请前往mp.weixin.qq.com重新打开对应广告位的展现。| */
+        onError(
+            /** 激励视频错误事件的回调函数 */
+            callback: RewardedVideoAdOnErrorCallback
+        ): void
+        /** [RewardedVideoAd.onLoad(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/ad/RewardedVideoAd.onLoad.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听激励视频广告加载事件。 */
+        onLoad(
+            /** 激励视频广告加载事件的回调函数 */
+            callback: OnLoadCallback
+        ): void
+    }
+    interface ScrollViewContext {
+        /** [ScrollViewContext.scrollIntoView(string selector)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/scroll/ScrollViewContext.scrollIntoView.html)
+         *
+         * 需要基础库: `2.14.4`
+         *
+         * 在插件中使用:支持
+         *
+         * 滚动至指定位置 */
+        scrollIntoView(
+            /** 元素选择器 */
+            selector: string
+        ): void
+        /** [ScrollViewContext.scrollTo(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/scroll/ScrollViewContext.scrollTo.html)
+         *
+         * 需要基础库: `2.14.4`
+         *
+         * 在插件中使用:支持
+         *
+         * 滚动至指定位置 */
+        scrollTo(option: ScrollToOption): void
+    }
+    interface SelectorQuery {
+        /** [[NodesRef](https://developers.weixin.qq.com/miniprogram/dev/api/wxml/NodesRef.html) SelectorQuery.exec(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/wxml/SelectorQuery.exec.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 执行所有的请求。请求结果按请求次序构成数组,在callback的第一个参数中返回。 */
+        exec(
+            /** 回调函数 */
+            callback?: (...args: any[]) => any
+        ): NodesRef
+        /** [[NodesRef](https://developers.weixin.qq.com/miniprogram/dev/api/wxml/NodesRef.html) SelectorQuery.select(string selector)](https://developers.weixin.qq.com/miniprogram/dev/api/wxml/SelectorQuery.select.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 在当前页面下选择第一个匹配选择器 `selector` 的节点。返回一个 `NodesRef` 对象实例,可以用于获取节点信息。
+         *
+         * **selector 语法**
+         *
+         * selector类似于 CSS 的选择器,但仅支持下列语法。
+         *
+         * - ID选择器:#the-id
+         * - class选择器(可以连续指定多个):.a-class.another-class
+         * - 子元素选择器:.the-parent > .the-child
+         * - 后代选择器:.the-ancestor .the-descendant
+         * - 跨自定义组件的后代选择器:.the-ancestor >>> .the-descendant
+         * - 多选择器的并集:#a-node, .some-other-nodes */
+        select(
+            /** 选择器 */
+            selector: string
+        ): NodesRef
+        /** [[NodesRef](https://developers.weixin.qq.com/miniprogram/dev/api/wxml/NodesRef.html) SelectorQuery.selectAll(string selector)](https://developers.weixin.qq.com/miniprogram/dev/api/wxml/SelectorQuery.selectAll.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 在当前页面下选择匹配选择器 selector 的所有节点。
+         *
+         * **selector 语法**
+         *
+         * selector类似于 CSS 的选择器,但仅支持下列语法。
+         *
+         * - ID选择器:#the-id
+         * - class选择器(可以连续指定多个):.a-class.another-class
+         * - 子元素选择器:.the-parent > .the-child
+         * - 后代选择器:.the-ancestor .the-descendant
+         * - 跨自定义组件的后代选择器:.the-ancestor >>> .the-descendant
+         * - 多选择器的并集:#a-node, .some-other-nodes */
+        selectAll(
+            /** 选择器 */
+            selector: string
+        ): NodesRef
+        /** [[NodesRef](https://developers.weixin.qq.com/miniprogram/dev/api/wxml/NodesRef.html) SelectorQuery.selectViewport()](https://developers.weixin.qq.com/miniprogram/dev/api/wxml/SelectorQuery.selectViewport.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 选择显示区域。可用于获取显示区域的尺寸、滚动位置等信息。 */
+        selectViewport(): NodesRef
+        /** [[SelectorQuery](https://developers.weixin.qq.com/miniprogram/dev/api/wxml/SelectorQuery.html) SelectorQuery.in(Component component)](https://developers.weixin.qq.com/miniprogram/dev/api/wxml/SelectorQuery.in.html)
+*
+* 需要基础库: `1.6.0`
+*
+* 在插件中使用:支持
+*
+* 将选择器的选取范围更改为自定义组件 `component` 内。(初始时,选择器仅选取页面范围的节点,不会选取任何自定义组件中的节点)。
+*
+* **示例代码**
+*
+* ```js
+Component({
+  queryMultipleNodes (){
+    const query = wx.createSelectorQuery().in(this)
+    query.select('#the-id').boundingClientRect(function(res){
+      res.top // 这个组件内 #the-id 节点的上边界坐标
+    }).exec()
+  }
+})
+``` */
+        in(
+            /** 自定义组件实例 */
+            component: Component.TrivialInstance | Page.TrivialInstance
+        ): SelectorQuery
+    }
+    interface SocketTask {
+        /** [SocketTask.close(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/network/websocket/SocketTask.close.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 关闭 WebSocket 连接 */
+        close(option: SocketTaskCloseOption): void
+        /** [SocketTask.onClose(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/websocket/SocketTask.onClose.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 监听 WebSocket 连接关闭事件 */
+        onClose(
+            /** WebSocket 连接关闭事件的回调函数 */
+            callback: SocketTaskOnCloseCallback
+        ): void
+        /** [SocketTask.onError(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/websocket/SocketTask.onError.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 监听 WebSocket 错误事件 */
+        onError(
+            /** WebSocket 错误事件的回调函数 */
+            callback: UDPSocketOnErrorCallback
+        ): void
+        /** [SocketTask.onMessage(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/websocket/SocketTask.onMessage.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 监听 WebSocket 接受到服务器的消息事件 */
+        onMessage(
+            /** WebSocket 接受到服务器的消息事件的回调函数 */
+            callback: SocketTaskOnMessageCallback
+        ): void
+        /** [SocketTask.onOpen(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/websocket/SocketTask.onOpen.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 监听 WebSocket 连接打开事件 */
+        onOpen(
+            /** WebSocket 连接打开事件的回调函数 */
+            callback: OnOpenCallback
+        ): void
+        /** [SocketTask.send(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/network/websocket/SocketTask.send.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 通过 WebSocket 连接发送数据 */
+        send(option: SocketTaskSendOption): void
+    }
+    interface Stats {
+        /** [boolean Stats.isDirectory()](https://developers.weixin.qq.com/miniprogram/dev/api/file/Stats.isDirectory.html)
+         *
+         * 在插件中使用:需要基础库 `2.19.2`
+         *
+         * 判断当前文件是否一个目录 */
+        isDirectory(): boolean
+        /** [boolean Stats.isFile()](https://developers.weixin.qq.com/miniprogram/dev/api/file/Stats.isFile.html)
+         *
+         * 在插件中使用:需要基础库 `2.19.2`
+         *
+         * 判断当前文件是否一个普通文件 */
+        isFile(): boolean
+    }
+    interface TCPSocket {
+        /** [TCPSocket.close()](https://developers.weixin.qq.com/miniprogram/dev/api/network/tcp/TCPSocket.close.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 关闭连接 */
+        close(): void
+        /** [TCPSocket.connect(Object options)](https://developers.weixin.qq.com/miniprogram/dev/api/network/tcp/TCPSocket.connect.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 在给定的套接字上启动连接 */
+        connect(options: TCPSocketConnectOption): void
+        /** [TCPSocket.offClose(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/tcp/TCPSocket.offClose.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 取消监听一旦 socket 完全关闭就发出该事件 */
+        offClose(
+            /** 一旦 socket 完全关闭就发出该事件的回调函数 */
+            callback?: UDPSocketOffCloseCallback
+        ): void
+        /** [TCPSocket.offConnect(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/tcp/TCPSocket.offConnect.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 取消监听当一个 socket 连接成功建立的时候触发该事件 */
+        offConnect(
+            /** 当一个 socket 连接成功建立的时候触发该事件的回调函数 */
+            callback?: OffConnectCallback
+        ): void
+        /** [TCPSocket.offError(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/tcp/TCPSocket.offError.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 取消监听当错误发生时触发 */
+        offError(
+            /** 的回调函数 */
+            callback?: UDPSocketOffErrorCallback
+        ): void
+        /** [TCPSocket.offMessage(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/tcp/TCPSocket.offMessage.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 取消监听当接收到数据的时触发该事件 */
+        offMessage(
+            /** 当接收到数据的时触发该事件的回调函数 */
+            callback?: TCPSocketOffMessageCallback
+        ): void
+        /** [TCPSocket.onClose(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/tcp/TCPSocket.onClose.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听一旦 socket 完全关闭就发出该事件 */
+        onClose(
+            /** 一旦 socket 完全关闭就发出该事件的回调函数 */
+            callback: UDPSocketOnCloseCallback
+        ): void
+        /** [TCPSocket.onConnect(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/tcp/TCPSocket.onConnect.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听当一个 socket 连接成功建立的时候触发该事件 */
+        onConnect(
+            /** 当一个 socket 连接成功建立的时候触发该事件的回调函数 */
+            callback: OnConnectCallback
+        ): void
+        /** [TCPSocket.onError(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/tcp/TCPSocket.onError.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听当错误发生时触发 */
+        onError(
+            /** 的回调函数 */
+            callback: UDPSocketOnErrorCallback
+        ): void
+        /** [TCPSocket.onMessage(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/tcp/TCPSocket.onMessage.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听当接收到数据的时触发该事件 */
+        onMessage(
+            /** 当接收到数据的时触发该事件的回调函数 */
+            callback: TCPSocketOnMessageCallback
+        ): void
+        /** [TCPSocket.write(string|ArrayBuffer data)](https://developers.weixin.qq.com/miniprogram/dev/api/network/tcp/TCPSocket.write.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 在 socket 上发送数据 */
+        write(
+            /** 要发送的数据 */
+            data: string | ArrayBuffer
+        ): void
+    }
+    interface TruncateSyncError {
+        /** 错误信息
+         *
+         * | 错误信息 | 说明 |
+         * | - | - |
+         * | fail no such file or directory, open ${filePath} | 指定的 filePath 所在目录不存在 |
+         * | fail illegal operation on a directory, open "${filePath}" | 指定的 filePath 是一个已经存在的目录 |
+         * | fail permission denied, open ${dirPath} | 指定的 filePath 路径没有写权限 |
+         * | fail the maximum size of the file storage limit is exceeded | 存储空间不足 |
+         * | fail sdcard not mounted | android sdcard 挂载失败 | */ errMsg: string
+        /** 错误码
+         *
+         * | 错误信息 | 说明 |
+         * | - | - |
+         * | fail no such file or directory, open ${filePath} | 指定的 filePath 所在目录不存在 |
+         * | fail illegal operation on a directory, open "${filePath}" | 指定的 filePath 是一个已经存在的目录 |
+         * | fail permission denied, open ${dirPath} | 指定的 filePath 路径没有写权限 |
+         * | fail the maximum size of the file storage limit is exceeded | 存储空间不足 |
+         * | fail sdcard not mounted | android sdcard 挂载失败 | */ errCode: number
+    }
+    interface UDPSocket {
+        /** [UDPSocket.close()](https://developers.weixin.qq.com/miniprogram/dev/api/network/udp/UDPSocket.close.html)
+         *
+         * 在插件中使用:需要基础库 `2.11.1`
+         *
+         * 关闭 UDP Socket 实例,相当于销毁。 在关闭之后,UDP Socket 实例不能再发送消息,每次调用 `UDPSocket.send` 将会触发错误事件,并且 message 事件回调函数也不会再也执行。在 `UDPSocket` 实例被创建后将被 Native 强引用,保证其不被 GC。在 `UDPSocket.close` 后将解除对其的强引用,让 UDPSocket 实例遵从 GC。 */
+        close(): void
+        /** [UDPSocket.connect(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/network/udp/UDPSocket.connect.html)
+         *
+         * 需要基础库: `2.15.0`
+         *
+         * 在插件中使用:需要基础库 `2.11.1`
+         *
+         * 预先连接到指定的 IP 和 port,需要配合 write 方法一起使用 */
+        connect(option: UDPSocketConnectOption): void
+        /** [UDPSocket.offClose(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/udp/UDPSocket.offClose.html)
+         *
+         * 在插件中使用:需要基础库 `2.11.1`
+         *
+         * 取消监听关闭事件 */
+        offClose(
+            /** 关闭事件的回调函数 */
+            callback?: UDPSocketOffCloseCallback
+        ): void
+        /** [UDPSocket.offError(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/udp/UDPSocket.offError.html)
+         *
+         * 在插件中使用:需要基础库 `2.11.1`
+         *
+         * 取消监听错误事件 */
+        offError(
+            /** 错误事件的回调函数 */
+            callback?: UDPSocketOffErrorCallback
+        ): void
+        /** [UDPSocket.offListening(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/udp/UDPSocket.offListening.html)
+         *
+         * 在插件中使用:需要基础库 `2.11.1`
+         *
+         * 取消监听开始监听数据包消息的事件 */
+        offListening(
+            /** 开始监听数据包消息的事件的回调函数 */
+            callback?: OffListeningCallback
+        ): void
+        /** [UDPSocket.offMessage(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/udp/UDPSocket.offMessage.html)
+         *
+         * 在插件中使用:需要基础库 `2.11.1`
+         *
+         * 取消监听收到消息的事件 */
+        offMessage(
+            /** 收到消息的事件的回调函数 */
+            callback?: UDPSocketOffMessageCallback
+        ): void
+        /** [UDPSocket.onClose(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/udp/UDPSocket.onClose.html)
+         *
+         * 在插件中使用:需要基础库 `2.11.1`
+         *
+         * 监听关闭事件 */
+        onClose(
+            /** 关闭事件的回调函数 */
+            callback: UDPSocketOnCloseCallback
+        ): void
+        /** [UDPSocket.onError(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/udp/UDPSocket.onError.html)
+         *
+         * 在插件中使用:需要基础库 `2.11.1`
+         *
+         * 监听错误事件 */
+        onError(
+            /** 错误事件的回调函数 */
+            callback: UDPSocketOnErrorCallback
+        ): void
+        /** [UDPSocket.onListening(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/udp/UDPSocket.onListening.html)
+         *
+         * 在插件中使用:需要基础库 `2.11.1`
+         *
+         * 监听开始监听数据包消息的事件 */
+        onListening(
+            /** 开始监听数据包消息的事件的回调函数 */
+            callback: OnListeningCallback
+        ): void
+        /** [UDPSocket.onMessage(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/udp/UDPSocket.onMessage.html)
+         *
+         * 在插件中使用:需要基础库 `2.11.1`
+         *
+         * 监听收到消息的事件 */
+        onMessage(
+            /** 收到消息的事件的回调函数 */
+            callback: UDPSocketOnMessageCallback
+        ): void
+        /** [UDPSocket.send(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/network/udp/UDPSocket.send.html)
+         *
+         * 在插件中使用:需要基础库 `2.11.1`
+         *
+         * 向指定的 IP 和 port 发送消息。基础库 2.9.0 起支持广播 (指定地址为 255.255.255.255)。 */
+        send(option: UDPSocketSendOption): void
+        /** [UDPSocket.setTTL(number ttl)](https://developers.weixin.qq.com/miniprogram/dev/api/network/udp/UDPSocket.setTTL.html)
+         *
+         * 需要基础库: `2.18.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 设置 IP_TTL 套接字选项,用于设置一个 IP 数据包传输时允许的最大跳步数 */
+        setTTL(
+            /** ttl 参数可以是 0 到 255 之间 */
+            ttl: number
+        ): void
+        /** [UDPSocket.write()](https://developers.weixin.qq.com/miniprogram/dev/api/network/udp/UDPSocket.write.html)
+         *
+         * 需要基础库: `2.15.0`
+         *
+         * 在插件中使用:需要基础库 `2.11.1`
+         *
+         * 用法与 send 方法相同,如果没有预先调用 connect 则与 send 无差异(注意即使调用了 connect 也需要在本接口填入地址和端口参数) */
+        write(): void
+        /** [number UDPSocket.bind(number port)](https://developers.weixin.qq.com/miniprogram/dev/api/network/udp/UDPSocket.bind.html)
+         *
+         * 在插件中使用:需要基础库 `2.11.1`
+         *
+         * 绑定一个系统随机分配的可用端口,或绑定一个指定的端口号 */
+        bind(
+            /** 需要基础库: `2.9.0`
+             *
+             * 指定要绑定的端口号,不传则返回系统随机分配的可用端口 */
+            port?: number
+        ): number
+    }
+    interface UpdateManager {
+        /** [UpdateManager.applyUpdate()](https://developers.weixin.qq.com/miniprogram/dev/api/base/update/UpdateManager.applyUpdate.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 强制小程序重启并使用新版本。在小程序新版本下载完成后(即收到 `onUpdateReady` 回调)调用。
+         *
+         * **示例代码**
+         *
+         * [示例代码](https://developers.weixin.qq.com/miniprogram/dev/api/base/update/UpdateManager.html#示例代码) */
+        applyUpdate(): void
+        /** [UpdateManager.onCheckForUpdate(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/base/update/UpdateManager.onCheckForUpdate.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听向微信后台请求检查更新结果事件。微信在小程序冷启动时自动检查更新,不需由开发者主动触发。
+         *
+         * **示例代码**
+         *
+         * [示例代码](https://developers.weixin.qq.com/miniprogram/dev/api/base/update/UpdateManager.html#示例代码) */
+        onCheckForUpdate(
+            /** 向微信后台请求检查更新结果事件的回调函数 */
+            callback: OnCheckForUpdateCallback
+        ): void
+        /** [UpdateManager.onUpdateFailed(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/base/update/UpdateManager.onUpdateFailed.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听小程序更新失败事件。小程序有新版本,客户端主动触发下载(无需开发者触发),下载失败(可能是网络原因等)后回调
+         *
+         * **示例代码**
+         *
+         * [示例代码](https://developers.weixin.qq.com/miniprogram/dev/api/base/update/UpdateManager.html#示例代码) */
+        onUpdateFailed(
+            /** 小程序更新失败事件的回调函数 */
+            callback: OnUpdateFailedCallback
+        ): void
+        /** [UpdateManager.onUpdateReady(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/base/update/UpdateManager.onUpdateReady.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听小程序有版本更新事件。客户端主动触发下载(无需开发者触发),下载成功后回调
+         *
+         * **示例代码**
+         *
+         * [示例代码](https://developers.weixin.qq.com/miniprogram/dev/api/base/update/UpdateManager.html#示例代码) */
+        onUpdateReady(
+            /** 小程序有版本更新事件的回调函数 */
+            callback: OnUpdateReadyCallback
+        ): void
+    }
+    interface UploadTask {
+        /** [UploadTask.abort()](https://developers.weixin.qq.com/miniprogram/dev/api/network/upload/UploadTask.abort.html)
+         *
+         * 需要基础库: `1.4.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 中断上传任务 */
+        abort(): void
+        /** [UploadTask.offHeadersReceived(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/upload/UploadTask.offHeadersReceived.html)
+         *
+         * 需要基础库: `2.1.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 取消监听 HTTP Response Header 事件 */
+        offHeadersReceived(
+            /** HTTP Response Header 事件的回调函数 */
+            callback?: OffHeadersReceivedCallback
+        ): void
+        /** [UploadTask.offProgressUpdate(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/upload/UploadTask.offProgressUpdate.html)
+         *
+         * 需要基础库: `2.1.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 取消监听上传进度变化事件 */
+        offProgressUpdate(
+            /** 上传进度变化事件的回调函数 */
+            callback?: UploadTaskOffProgressUpdateCallback
+        ): void
+        /** [UploadTask.onHeadersReceived(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/upload/UploadTask.onHeadersReceived.html)
+         *
+         * 需要基础库: `2.1.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 监听 HTTP Response Header 事件。会比请求完成事件更早 */
+        onHeadersReceived(
+            /** HTTP Response Header 事件的回调函数 */
+            callback: OnHeadersReceivedCallback
+        ): void
+        /** [UploadTask.onProgressUpdate(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/upload/UploadTask.onProgressUpdate.html)
+         *
+         * 需要基础库: `1.4.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 监听上传进度变化事件 */
+        onProgressUpdate(
+            /** 上传进度变化事件的回调函数 */
+            callback: UploadTaskOnProgressUpdateCallback
+        ): void
+    }
+    interface UserCryptoManager {
+        /** [UserCryptoManager.getLatestUserKey(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/base/crypto/UserCryptoManager.getLatestUserKey.html)
+*
+* 需要基础库: `2.17.3`
+*
+* 在插件中使用:不支持
+*
+* 获取最新的用户加密密钥
+*
+* **示例代码**
+*
+* ```js
+const userCryptoManager = wx.getUserCryptoManager()
+userCryptoManager.getLatestUserKey({
+  success: res => {
+    const {encryptKey, iv, version, expireTime} = res
+    console.log(encryptKey, iv, version, expireTime)
+  }
+})
+``` */
+        getLatestUserKey(option?: GetLatestUserKeyOption): void
+        /** [UserCryptoManager.getRandomValues(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/base/crypto/UserCryptoManager.getRandomValues.html)
+*
+* 需要基础库: `2.17.3`
+*
+* 在插件中使用:不支持
+*
+* 获取密码学安全随机数
+*
+* **示例代码**
+*
+* ```js
+wx.getRandomValues({
+  length: 6 // 生成 6 个字节长度的随机数,
+  success: res => {
+    console.log(wx.arrayBufferToBase64(res.randomValues)) // 转换为 base64 字符串后打印
+  }
+})
+``` */
+        getRandomValues(option: GetRandomValuesOption): void
+    }
+    interface VKCamera {
+        /** [Float32Array VKCamera.getProjectionMatrix(number near, number far)](https://developers.weixin.qq.com/miniprogram/dev/api/ai/visionkit/VKCamera.getProjectionMatrix.html)
+         *
+         * 需要基础库: `2.20.0`
+         *
+         * 在插件中使用:需要基础库 `2.20.0`
+         *
+         * 获取投影矩阵 */
+        getProjectionMatrix(
+            /** 近视点 */
+            near: number,
+            /** 远视点 */
+            far: number
+        ): Float32Array
+    }
+    interface VKFrame {
+        /** [Float32Array VKFrame.getDisplayTransform()](https://developers.weixin.qq.com/miniprogram/dev/api/ai/visionkit/VKFrame.getDisplayTransform.html)
+         *
+         * 需要基础库: `2.20.0`
+         *
+         * 在插件中使用:需要基础库 `2.20.0`
+         *
+         * 获取纹理调整矩阵。默认获取到的纹理是未经裁剪调整的纹理,此矩阵可用于在着色器中根据帧对象尺寸对纹理进行裁剪。 */
+        getDisplayTransform(): Float32Array
+        /** [Object VKFrame.getCameraTexture(WebGLRenderingContext ctx)](https://developers.weixin.qq.com/miniprogram/dev/api/ai/visionkit/VKFrame.getCameraTexture.html)
+         *
+         * 需要基础库: `2.20.0`
+         *
+         * 在插件中使用:需要基础库 `2.20.0`
+         *
+         * 获取当前帧纹理,目前只支持 YUV 纹理。 */
+        getCameraTexture(
+            /** 画布 */
+            ctx: WebGLRenderingContext
+        ): YUVTextureRes
+    }
+    interface VKSession {
+        /** [Array.&lt;Object&gt; VKSession.hitTest(number x, number y, Object reset)](https://developers.weixin.qq.com/miniprogram/dev/api/ai/visionkit/VKSession.hitTest.html)
+         *
+         * 需要基础库: `2.20.0`
+         *
+         * 在插件中使用:需要基础库 `2.20.0`
+         *
+         * 触摸检测,目前只支持单平面(即 hitTest 生成一次平面后,后续 hitTest 均不会再生成平面,而是以之前生成的平面为基础进行检测)。如果需要重新识别其他平面,可以在调用此方法时将 reset 参数置为 true。 */
+        hitTest(
+            /** 相对视窗的横坐标,取值范围为 [0, 1],0 为左边缘,1 为右边缘 */
+            x: number,
+            /** 相对视窗的纵坐标,取值范围为 [0, 1],0 为上边缘,1 为下边缘 */
+            y: number,
+            /** 是否需要重新识别其他平面 */
+            reset: IAnyObject
+        ): HitTestRes[]
+        /** [VKSession.cancelAnimationFrame(number requestID)](https://developers.weixin.qq.com/miniprogram/dev/api/ai/visionkit/VKSession.cancelAnimationFrame.html)
+         *
+         * 需要基础库: `2.20.0`
+         *
+         * 在插件中使用:需要基础库 `2.20.0`
+         *
+         * 取消由 requestAnimationFrame 添加到计划中的动画帧请求。 */
+        cancelAnimationFrame(requestID: number): void
+        /** [VKSession.destroy()](https://developers.weixin.qq.com/miniprogram/dev/api/ai/visionkit/VKSession.destroy.html)
+         *
+         * 需要基础库: `2.20.0`
+         *
+         * 在插件中使用:需要基础库 `2.20.0`
+         *
+         * 销毁会话。 */
+        destroy(): void
+        /** [VKSession.off(string eventName, function fn)](https://developers.weixin.qq.com/miniprogram/dev/api/ai/visionkit/VKSession.off.html)
+         *
+         * 需要基础库: `2.20.0`
+         *
+         * 在插件中使用:需要基础库 `2.20.0`
+         *
+         * 取消监听会话事件。 */
+        off(
+            /** 事件名称 */
+            eventName: string,
+            /** 事件监听函数 */
+            fn: (...args: any[]) => any
+        ): void
+        /** [VKSession.on(string eventName, function fn)](https://developers.weixin.qq.com/miniprogram/dev/api/ai/visionkit/VKSession.on.html)
+         *
+         * 需要基础库: `2.20.0`
+         *
+         * 在插件中使用:需要基础库 `2.20.0`
+         *
+         * 监听会话事件。 */
+        on(
+            /** 事件名称 */
+            eventName: string,
+            /** 事件监听函数 */
+            fn: (...args: any[]) => any
+        ): void
+        /** [VKSession.start(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/ai/visionkit/VKSession.start.html)
+         *
+         * 需要基础库: `2.20.0`
+         *
+         * 在插件中使用:需要基础库 `2.20.0`
+         *
+         * 开启会话。 */
+        start(
+            /** 开启会话回调 */
+            callback: VKSessionStartCallback
+        ): void
+        /** [VKSession.stop()](https://developers.weixin.qq.com/miniprogram/dev/api/ai/visionkit/VKSession.stop.html)
+         *
+         * 需要基础库: `2.20.0`
+         *
+         * 在插件中使用:需要基础库 `2.20.0`
+         *
+         * 停止会话。 */
+        stop(): void
+        /** [[VKFrame](https://developers.weixin.qq.com/miniprogram/dev/api/ai/visionkit/VKFrame.html) VKSession.getVKFrame(number width, number height)](https://developers.weixin.qq.com/miniprogram/dev/api/ai/visionkit/VKSession.getVKFrame.html)
+         *
+         * 需要基础库: `2.20.0`
+         *
+         * 在插件中使用:需要基础库 `2.20.0`
+         *
+         * 获取帧对象,每调用一次都会触发一次帧分析过程。 */
+        getVKFrame(
+            /** 宽度 */
+            width: number,
+            /** 高度 */
+            height: number
+        ): VKFrame
+        /** [number VKSession.requestAnimationFrame(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/ai/visionkit/VKSession.requestAnimationFrame.html)
+         *
+         * 需要基础库: `2.20.0`
+         *
+         * 在插件中使用:需要基础库 `2.20.0`
+         *
+         * 在下次进行重绘时执行。 */
+        requestAnimationFrame(
+            /** 执行的 callback */
+            callback: (...args: any[]) => any
+        ): number
+    }
+    interface VideoContext {
+        /** [VideoContext.exitBackgroundPlayback()](https://developers.weixin.qq.com/miniprogram/dev/api/media/video/VideoContext.exitBackgroundPlayback.html)
+         *
+         * 需要基础库: `2.14.3`
+         *
+         * 在插件中使用:支持
+         *
+         * 退出后台音频播放模式。 */
+        exitBackgroundPlayback(): void
+        /** [VideoContext.exitFullScreen()](https://developers.weixin.qq.com/miniprogram/dev/api/media/video/VideoContext.exitFullScreen.html)
+         *
+         * 需要基础库: `1.4.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 退出全屏 */
+        exitFullScreen(): void
+        /** [VideoContext.exitPictureInPicture(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/video/VideoContext.exitPictureInPicture.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 退出小窗,该方法可在任意页面调用 */
+        exitPictureInPicture(option?: ExitPictureInPictureOption): void
+        /** [VideoContext.hideStatusBar()](https://developers.weixin.qq.com/miniprogram/dev/api/media/video/VideoContext.hideStatusBar.html)
+         *
+         * 需要基础库: `2.1.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 隐藏状态栏,仅在iOS全屏下有效 */
+        hideStatusBar(): void
+        /** [VideoContext.pause()](https://developers.weixin.qq.com/miniprogram/dev/api/media/video/VideoContext.pause.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 暂停视频 */
+        pause(): void
+        /** [VideoContext.play()](https://developers.weixin.qq.com/miniprogram/dev/api/media/video/VideoContext.play.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 播放视频 */
+        play(): void
+        /** [VideoContext.playbackRate(number rate)](https://developers.weixin.qq.com/miniprogram/dev/api/media/video/VideoContext.playbackRate.html)
+         *
+         * 需要基础库: `1.4.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 设置倍速播放 */
+        playbackRate(
+            /** 倍率,支持 0.5/0.8/1.0/1.25/1.5,2.6.3 起支持 2.0 倍速 */
+            rate: number
+        ): void
+        /** [VideoContext.requestBackgroundPlayback()](https://developers.weixin.qq.com/miniprogram/dev/api/media/video/VideoContext.requestBackgroundPlayback.html)
+         *
+         * 需要基础库: `2.14.3`
+         *
+         * 在插件中使用:支持
+         *
+         * 进入后台音频播放模式。 */
+        requestBackgroundPlayback(): void
+        /** [VideoContext.requestFullScreen(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/video/VideoContext.requestFullScreen.html)
+         *
+         * 需要基础库: `1.4.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 进入全屏。若有自定义内容需在全屏时展示,需将内容节点放置到 video 节点内。 */
+        requestFullScreen(option: VideoContextRequestFullScreenOption): void
+        /** [VideoContext.seek(number position)](https://developers.weixin.qq.com/miniprogram/dev/api/media/video/VideoContext.seek.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 跳转到指定位置 */
+        seek(
+            /** 跳转到的位置,单位 s */
+            position: number
+        ): void
+        /** [VideoContext.sendDanmu(Object data)](https://developers.weixin.qq.com/miniprogram/dev/api/media/video/VideoContext.sendDanmu.html)
+         *
+         * 在插件中使用:支持
+         *
+         * 发送弹幕 */
+        sendDanmu(
+            /** 弹幕内容 */
+            data: Danmu
+        ): void
+        /** [VideoContext.showStatusBar()](https://developers.weixin.qq.com/miniprogram/dev/api/media/video/VideoContext.showStatusBar.html)
+         *
+         * 需要基础库: `2.1.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 显示状态栏,仅在iOS全屏下有效 */
+        showStatusBar(): void
+        /** [VideoContext.stop()](https://developers.weixin.qq.com/miniprogram/dev/api/media/video/VideoContext.stop.html)
+         *
+         * 需要基础库: `1.7.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 停止视频 */
+        stop(): void
+    }
+    interface VideoDecoder {
+        /** [Object VideoDecoder.getFrameData()](https://developers.weixin.qq.com/miniprogram/dev/api/media/video-decoder/VideoDecoder.getFrameData.html)
+         *
+         * 需要基础库: `2.11.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 获取下一帧的解码数据 */
+        getFrameData(): FrameDataOptions
+        /** [Promise VideoDecoder.remove()](https://developers.weixin.qq.com/miniprogram/dev/api/media/video-decoder/VideoDecoder.remove.html)
+         *
+         * 需要基础库: `2.11.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 移除解码器 */
+        remove(): Promise<any>
+        /** [Promise VideoDecoder.seek(number position)](https://developers.weixin.qq.com/miniprogram/dev/api/media/video-decoder/VideoDecoder.seek.html)
+         *
+         * 需要基础库: `2.11.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 跳到某个时间点解码 */
+        seek(
+            /** 跳转的解码位置,单位 ms */
+            position: number
+        ): Promise<any>
+        /** [Promise VideoDecoder.start(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/video-decoder/VideoDecoder.start.html)
+         *
+         * 需要基础库: `2.11.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 开始解码 */
+        start(option: VideoDecoderStartOption): Promise<any>
+        /** [Promise VideoDecoder.stop()](https://developers.weixin.qq.com/miniprogram/dev/api/media/video-decoder/VideoDecoder.stop.html)
+         *
+         * 需要基础库: `2.11.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 停止解码 */
+        stop(): Promise<any>
+        /** [VideoDecoder.off(string eventName, function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/video-decoder/VideoDecoder.off.html)
+         *
+         * 需要基础库: `2.11.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 取消监听录制事件。当对应事件触发时,该回调函数不再执行 */
+        off(
+            /** 事件名 */
+            eventName: string,
+            /** 事件触发时执行的回调函数 */
+            callback: (...args: any[]) => any
+        ): void
+        /** [VideoDecoder.on(string eventName, function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/video-decoder/VideoDecoder.on.html)
+         *
+         * 需要基础库: `2.11.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 注册监听录制事件的回调函数。当对应事件触发时,回调函数会被执行 */
+        on(
+            /** 事件名
+             *
+             * 参数 eventName 可选值:
+             * - 'start': 开始事件。返回 {width, height};
+             * - 'stop': 结束事件。;
+             * - 'seek': seek 完成事件。;
+             * - 'bufferchange': 缓冲区变化事件。;
+             * - 'ended': 解码结束事件。; */
+            eventName: 'start' | 'stop' | 'seek' | 'bufferchange' | 'ended',
+            /** 事件触发时执行的回调函数 */
+            callback: (...args: any[]) => any
+        ): void
+    }
+    interface WebAudioContext {
+        /** [BiquadFilterNode WebAudioContext.createBiquadFilter()](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/WebAudioContext.createBiquadFilter.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 创建一个BiquadFilterNode */
+        createBiquadFilter(): BiquadFilterNode
+        /** [BufferSourceNode WebAudioContext.createBufferSource()](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/WebAudioContext.createBufferSource.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 创建一个BufferSourceNode实例,通过AudioBuffer对象来播放音频数据。 */
+        createBufferSource(): BufferSourceNode
+        /** [ChannelMergerNode WebAudioContext.createChannelMerger(number numberOfInputs)](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/WebAudioContext.createChannelMerger.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 创建一个ChannelMergerNode */
+        createChannelMerger(
+            /** 输出流中需要保持的输入流的个数 */
+            numberOfInputs: number
+        ): ChannelMergerNode
+        /** [ChannelSplitterNode WebAudioContext.createChannelSplitter(number numberOfOutputs)](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/WebAudioContext.createChannelSplitter.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 创建一个ChannelSplitterNode */
+        createChannelSplitter(
+            /** 要分别输出的输入音频流中的通道数 */
+            numberOfOutputs: number
+        ): ChannelSplitterNode
+        /** [ConstantSourceNode WebAudioContext.createConstantSource()](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/WebAudioContext.createConstantSource.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 创建一个ConstantSourceNode */
+        createConstantSource(): ConstantSourceNode
+        /** [DelayNode WebAudioContext.createDelay(number maxDelayTime)](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/WebAudioContext.createDelay.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 创建一个DelayNode */
+        createDelay(
+            /** 最大延迟时间 */
+            maxDelayTime: number
+        ): DelayNode
+        /** [DynamicsCompressorNode WebAudioContext.createDynamicsCompressor()](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/WebAudioContext.createDynamicsCompressor.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 创建一个DynamicsCompressorNode */
+        createDynamicsCompressor(): DynamicsCompressorNode
+        /** [GainNode WebAudioContext.createGain()](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/WebAudioContext.createGain.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 创建一个GainNode */
+        createGain(): GainNode
+        /** [IIRFilterNode WebAudioContext.createIIRFilter(Array.&lt;number&gt; feedforward, Array.&lt;number&gt; feedback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/WebAudioContext.createIIRFilter.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 创建一个IIRFilterNode */
+        createIIRFilter(
+            /** 一个浮点值数组,指定IIR滤波器传递函数的前馈(分子)系数。 */
+            feedforward: number[],
+            /** 一个浮点值数组,指定IIR滤波器传递函数的反馈(分母)系数。 */
+            feedback: number[]
+        ): IIRFilterNode
+        /** [OscillatorNode WebAudioContext.createOscillator()](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/WebAudioContext.createOscillator.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 创建一个OscillatorNode */
+        createOscillator(): OscillatorNode
+        /** [PannerNode WebAudioContext.createPanner()](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/WebAudioContext.createPanner.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 创建一个PannerNode */
+        createPanner(): PannerNode
+        /** [PeriodicWaveNode WebAudioContext.createPeriodicWave(Float32Array real, Float32Array imag, object constraints)](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/WebAudioContext.createPeriodicWave.html)
+*
+* 在插件中使用:不支持
+*
+* 创建一个PeriodicWaveNode
+*
+* **注意**
+*
+* `real`和`imag`数组必须拥有一样的长度,否则抛出错误
+* ```js
+const real = new Float32Array(2)
+const imag = new Float32Array(2)
+real[0] = 0
+imag[0] = 0
+real[1] = 1
+imag[1] = 0
+
+const waveNode = audioContext.createPeriodicWave(real, imag, {disableNormalization: true})
+``` */
+        createPeriodicWave(
+            /** 一组余弦项(传统上是A项) */
+            real: Float32Array,
+            /** 一组余弦项(传统上是A项) */
+            imag: Float32Array,
+            /** 一个字典对象,它指定是否应该禁用规范化(默认启用规范化) */
+            constraints: Constraints
+        ): PeriodicWaveNode
+        /** [Promise WebAudioContext.close()](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/WebAudioContext.close.html)
+*
+* 在插件中使用:不支持
+*
+* 关闭WebAudioContext
+*
+* **注意事项**
+*
+* 同步关闭对应的WebAudio上下文。close后会立即释放当前上下文的资源,<b>不要在close后再次访问state属性。</b>
+* ```js
+const audioCtx = wx.createWebAudioContext()
+audioCtx.close().then(() => {
+  console.log(audioCtx.state) // bad case:不应该在close后再访问state
+})
+``` */
+        close(): Promise<any>
+        /** [Promise WebAudioContext.resume()](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/WebAudioContext.resume.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 同步恢复已经被暂停的WebAudioContext上下文 */
+        resume(): Promise<any>
+        /** [Promise WebAudioContext.suspend()](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/WebAudioContext.suspend.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 同步暂停WebAudioContext上下文 */
+        suspend(): Promise<any>
+        /** [ScriptProcessorNode WebAudioContext.createScriptProcessor(number bufferSize, number numberOfInputChannels, number numberOfOutputChannels)](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/WebAudioContext.createScriptProcessor.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 创建一个ScriptProcessorNode */
+        createScriptProcessor(
+            /** 缓冲区大小,以样本帧为单位 */
+            bufferSize: number,
+            /** 用于指定输入node的声道的数量 */
+            numberOfInputChannels: number,
+            /** 用于指定输出node的声道的数量 */
+            numberOfOutputChannels: number
+        ): ScriptProcessorNode
+        /** [WaveShaperNode WebAudioContext.createWaveShaper()](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/WebAudioContext.createWaveShaper.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 创建一个WaveShaperNode */
+        createWaveShaper(): WaveShaperNode
+        /** [[AudioBuffer](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/AudioBuffer.html) WebAudioContext.createBuffer(number numOfChannels, number length, number sampleRate)](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/WebAudioContext.createBuffer.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 创建一个AudioBuffer,代表着一段驻留在内存中的短音频 */
+        createBuffer(
+            /** 定义了 buffer 中包含的声频通道数量的整数 */
+            numOfChannels: number,
+            /** 代表 buffer 中的样本帧数的整数 */
+            length: number,
+            /** 线性音频样本的采样率,即每一秒包含的关键帧的个数 */
+            sampleRate: number
+        ): AudioBuffer
+        /** [[AudioBuffer](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/AudioBuffer.html) WebAudioContext.decodeAudioData()](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/WebAudioContext.decodeAudioData.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 异步解码一段资源为AudioBuffer。 */
+        decodeAudioData(): AudioBuffer
+    }
+    interface WifiError {
+        /** 错误信息
+         *
+         * | 错误码 | 错误信息 | 说明 |
+         * | - | - | - |
+         * | 0 | ok | 正常 |
+         * | 12000 | not init | 未先调用 `startWifi` 接口 |
+         * | 12001 | system not support | 当前系统不支持相关能力 |
+         * | 12002 | password error Wi-Fi | 密码错误 |
+         * | 12003 | connection timeout | 连接超时, 仅 Android 支持 |
+         * | 12004 | duplicate request | 重复连接 Wi-Fi |
+         * | 12005 | wifi not turned on | Android 特有,未打开 Wi-Fi 开关 |
+         * | 12006 | gps not turned on | Android 特有,未打开 GPS 定位开关 |
+         * | 12007 | user denied | 用户拒绝授权链接 Wi-Fi |
+         * | 12008 | invalid SSID | 无效 SSID |
+         * | 12009 | system config err | 系统运营商配置拒绝连接 Wi-Fi |
+         * | 12010 | system internal error | 系统其他错误,需要在 errmsg 打印具体的错误原因 |
+         * | 12011 | weapp in background | 应用在后台无法配置 Wi-Fi |
+         * | 12013 | wifi config may be expired | 系统保存的 Wi-Fi 配置过期,建议忘记 Wi-Fi 后重试,仅 Android 支持 |
+         * | 12014 | invalid WEP / WPA password | iOS 特有,无效的 WEP / WPA 密码 | */ errMsg: string
+        /** 错误码
+         *
+         * | 错误码 | 错误信息 | 说明 |
+         * | - | - | - |
+         * | 0 | ok | 正常 |
+         * | 12000 | not init | 未先调用 `startWifi` 接口 |
+         * | 12001 | system not support | 当前系统不支持相关能力 |
+         * | 12002 | password error Wi-Fi | 密码错误 |
+         * | 12003 | connection timeout | 连接超时, 仅 Android 支持 |
+         * | 12004 | duplicate request | 重复连接 Wi-Fi |
+         * | 12005 | wifi not turned on | Android 特有,未打开 Wi-Fi 开关 |
+         * | 12006 | gps not turned on | Android 特有,未打开 GPS 定位开关 |
+         * | 12007 | user denied | 用户拒绝授权链接 Wi-Fi |
+         * | 12008 | invalid SSID | 无效 SSID |
+         * | 12009 | system config err | 系统运营商配置拒绝连接 Wi-Fi |
+         * | 12010 | system internal error | 系统其他错误,需要在 errmsg 打印具体的错误原因 |
+         * | 12011 | weapp in background | 应用在后台无法配置 Wi-Fi |
+         * | 12013 | wifi config may be expired | 系统保存的 Wi-Fi 配置过期,建议忘记 Wi-Fi 后重试,仅 Android 支持 |
+         * | 12014 | invalid WEP / WPA password | iOS 特有,无效的 WEP / WPA 密码 | */ errCode: number
+    }
+    interface Worker {
+        /** [Worker.onMessage(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/worker/Worker.onMessage.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听主线程/Worker 线程向当前线程发送的消息的事件。 */
+        onMessage(
+            /** 主线程/Worker 线程向当前线程发送的消息的事件的回调函数 */
+            callback: WorkerOnMessageCallback
+        ): void
+        /** [Worker.onProcessKilled(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/worker/Worker.onProcessKilled.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听 worker线程被系统回收事件(当iOS系统资源紧张时,worker线程存在被系统回收的可能,开发者可监听此事件并重新创建一个worker)。仅限在主线程 worker 对象上调用。 */
+        onProcessKilled(
+            /** worker线程被系统回收事件的回调函数 */
+            callback: OnProcessKilledCallback
+        ): void
+        /** [Worker.postMessage(Object message)](https://developers.weixin.qq.com/miniprogram/dev/api/worker/Worker.postMessage.html)
+*
+* 在插件中使用:不支持
+*
+* 向主线程/Worker 线程发送的消息。
+*
+* **示例代码**
+*
+* worker 线程中
+* ```js
+worker.postMessage({
+  msg: 'hello from worker'
+})
+```
+*
+* 主线程中
+* ```js
+const worker = wx.createWorker('workers/request/index.js')
+
+worker.postMessage({
+  msg: 'hello from main'
+})
+```
+*
+* **提醒**
+*
+* 在基础库版本2.20.2之前,postMessage仅支持传递可序列化的key-value对象。
+* 在基础库2.20.2之后,postMessage支持传递任意类型的数据。 */
+        postMessage(
+            /** 需要发送的消息。 */
+            message: IAnyObject
+        ): void
+        /** [Worker.terminate()](https://developers.weixin.qq.com/miniprogram/dev/api/worker/Worker.terminate.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 结束当前 Worker 线程。仅限在主线程 worker 对象上调用。 */
+        terminate(): void
+    }
+    interface WriteSyncError {
+        /** 错误信息
+         *
+         * | 错误信息 | 说明 |
+         * | - | - |
+         * | bad file descriptor | 无效的文件描述符 |
+         * | fail permission denied | 指定的 fd 路径没有写权限 |
+         * | fail sdcard not mounted | android sdcard 挂载失败 | */ errMsg: string
+        /** 错误码
+         *
+         * | 错误信息 | 说明 |
+         * | - | - |
+         * | bad file descriptor | 无效的文件描述符 |
+         * | fail permission denied | 指定的 fd 路径没有写权限 |
+         * | fail sdcard not mounted | android sdcard 挂载失败 | */ errCode: number
+    }
+    interface Wx {
+        /** [ArrayBuffer wx.base64ToArrayBuffer(string base64)](https://developers.weixin.qq.com/miniprogram/dev/api/base/wx.base64ToArrayBuffer.html)
+         *
+         * 需要基础库: `1.1.0`
+         *
+         * 在插件中使用:支持
+         * @deprecated 基础库版本 [2.4.0](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 起已废弃
+         *
+         * 将 Base64 字符串转成 ArrayBuffer 对象 */
+        base64ToArrayBuffer(
+            /** 要转化成 ArrayBuffer 对象的 Base64 字符串 */
+            base64: string
+        ): ArrayBuffer
+        /** [Object wx.getAccountInfoSync()](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/account-info/wx.getAccountInfoSync.html)
+*
+* 需要基础库: `2.2.2`
+*
+* 在插件中使用:需要基础库 `2.2.2`
+*
+* 获取当前帐号信息。线上小程序版本号仅支持在正式版小程序中获取,开发版和体验版中无法获取。
+*
+* **示例代码**
+*
+* ```js
+const accountInfo = wx.getAccountInfoSync();
+console.log(accountInfo.miniProgram.appId) // 小程序 appId
+console.log(accountInfo.plugin.appId) // 插件 appId
+console.log(accountInfo.plugin.version) // 插件版本号, 'a.b.c' 这样的形式
+``` */
+        getAccountInfoSync(): AccountInfo
+        /** [Object wx.getAppAuthorizeSetting()](https://developers.weixin.qq.com/miniprogram/dev/api/base/system/wx.getAppAuthorizeSetting.html)
+*
+* 需要基础库: `2.20.1`
+*
+* 在插件中使用:需要基础库 `2.21.3`
+*
+* 获取微信APP授权设置
+*
+* **示例代码**
+*
+* ```js
+const appAuthorizeSetting = wx.getAppAuthorizeSetting()
+
+console.log(appAuthorizeSetting.albumAuthorized)
+console.log(appAuthorizeSetting.bluetoothAuthorized)
+console.log(appAuthorizeSetting.cameraAuthorized)
+console.log(appAuthorizeSetting.locationAuthorized)
+console.log(appAuthorizeSetting.locationReducedAccuracy)
+console.log(appAuthorizeSetting.microphoneAuthorized)
+console.log(appAuthorizeSetting.notificationAlertAuthorized)
+console.log(appAuthorizeSetting.notificationAuthorized)
+console.log(appAuthorizeSetting.notificationBadgeAuthorized)
+console.log(appAuthorizeSetting.notificationSoundAuthorized)
+console.log(appAuthorizeSetting.phoneCalendarAuthorized)
+```
+*
+* **返回值说明**
+*
+* `'authorized'` 表示已经获得授权,无需再次请求授权;
+* `'denied'` 表示请求授权被拒绝,无法再次请求授权;(此情况需要引导用户[打开系统设置](https://developers.weixin.qq.com/miniprogram/dev/api/base/system/wx.openAppAuthorizeSetting.html),在设置页中打开权限)
+* `'non determined'` 表示尚未请求授权,会在微信下一次调用系统相应权限时请求;(仅 iOS 会出现。此种情况下引导用户打开系统设置,不展示开关) */
+        getAppAuthorizeSetting(): AppAuthorizeSetting
+        /** [Object wx.getAppBaseInfo()](https://developers.weixin.qq.com/miniprogram/dev/api/base/system/wx.getAppBaseInfo.html)
+*
+* 需要基础库: `2.20.1`
+*
+* 在插件中使用:需要基础库 `2.21.3`
+*
+* 获取微信APP基础信息
+*
+* **示例代码**
+*
+* ```js
+const appBaseInfo = wx.getAppBaseInfo()
+
+console.log(appBaseInfo.SDKVersion)
+console.log(appBaseInfo.enableDebug)
+console.log(appBaseInfo.host)
+console.log(appBaseInfo.language)
+console.log(appBaseInfo.version)
+console.log(appBaseInfo.theme)
+``` */
+        getAppBaseInfo(): AppBaseInfo
+        /** [Object wx.getBatteryInfoSync()](https://developers.weixin.qq.com/miniprogram/dev/api/device/battery/wx.getBatteryInfoSync.html)
+         *
+         * 在插件中使用:需要基础库 `2.15.0`
+         *
+         * [wx.getBatteryInfo](https://developers.weixin.qq.com/miniprogram/dev/api/device/battery/wx.getBatteryInfo.html) 的同步版本 */
+        getBatteryInfoSync(): GetBatteryInfoSyncResult
+        /** [Object wx.getDeviceInfo()](https://developers.weixin.qq.com/miniprogram/dev/api/base/system/wx.getDeviceInfo.html)
+*
+* 需要基础库: `2.20.1`
+*
+* 在插件中使用:需要基础库 `2.21.3`
+*
+* 获取设备基础信息
+*
+* **示例代码**
+*
+* ```js
+const deviceInfo = wx.getDeviceInfo()
+
+console.log(deviceInfo.abi)
+console.log(deviceInfo.benchmarkLevel)
+console.log(deviceInfo.brand)
+console.log(deviceInfo.model)
+console.log(deviceInfo.platform)
+console.log(deviceInfo.system)
+``` */
+        getDeviceInfo(): DeviceInfo
+        /** [Object wx.getEnterOptionsSync()](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/life-cycle/wx.getEnterOptionsSync.html)
+         *
+         * 需要基础库: `2.9.4`
+         *
+         * 在插件中使用:需要基础库 `2.9.4`
+         *
+         * 获取本次小程序启动时的参数。如果当前是冷启动,则返回值与 [`App.onLaunch`](https://developers.weixin.qq.com/miniprogram/dev/reference/api/App.html#onLaunch-Object-object) 的回调参数一致;如果当前是热启动,则返回值与 [`App.onShow`](https://developers.weixin.qq.com/miniprogram/dev/reference/api/App.html#onShow-Object-object) 一致。
+         *
+         * **返回有效 referrerInfo 的场景**
+         *
+         * | 场景值 | 场景                            | appId含义  |
+         * | ------ | ------------------------------- | ---------- |
+         * | 1020   | 公众号 profile 页相关小程序列表 | 来源公众号 |
+         * | 1035   | 公众号自定义菜单                | 来源公众号 |
+         * | 1036   | App 分享消息卡片                | 来源App    |
+         * | 1037   | 小程序打开小程序                | 来源小程序 |
+         * | 1038   | 从另一个小程序返回              | 来源小程序 |
+         * | 1043   | 公众号模板消息                  | 来源公众号 |
+         *
+         * **不同 apiCategory 场景下的 API 限制**
+         *
+         * `X` 表示 API 被限制无法使用;不在表格中的 API 不限制。
+         *
+         * |                                       | default | nativeFunctionalized | browseOnly | embedded |
+         * |-|-|-|-|-|
+         * |navigateToMiniProgram                  |         | `X`                  | `X`        |          |
+         * |openSetting                            |         |                      | `X`        |          |
+         * |&lt;button open-type="share"&gt;       |         | `X`                  | `X`        | `X`      |
+         * |&lt;button open-type="feedback"&gt;    |         |                      | `X`        |          |
+         * |&lt;button open-type="open-setting"&gt;|         |                      | `X`        |          |
+         * |openEmbeddedMiniProgram                |         | `X`                  | `X`        | `X`      |
+         *
+         * **注意**
+         *
+         * 部分版本在无 `referrerInfo` 的时候会返回 `undefined`,建议使用 `options.referrerInfo && options.referrerInfo.appId` 进行判断。 */
+        getEnterOptionsSync(): LaunchOptionsApp
+        /** [Object wx.getExptInfoSync(Array.&lt;string&gt; keys)](https://developers.weixin.qq.com/miniprogram/dev/api/data-analysis/wx.getExptInfoSync.html)
+         *
+         * 需要基础库: `2.17.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 给定实验参数数组,获取对应的实验参数值
+         *
+         * **提示**
+         *
+         * 假设实验参数有 `color`, `size`
+         * 调用 wx.getExptInfoSync() 会返回 `{color:'#fff',size:20}` 类似的结果
+         * 而 wx.getExptInfoSync(['color']) 则只会返回 `{color:'#fff'}` */
+        getExptInfoSync(
+            /** 实验参数数组,不填则获取所有实验参数 */
+            keys?: string[]
+        ): IAnyObject
+        /** [Object wx.getExtConfigSync()](https://developers.weixin.qq.com/miniprogram/dev/api/ext/wx.getExtConfigSync.html)
+*
+* 需要基础库: `1.1.0`
+*
+* 在插件中使用:不支持
+*
+* [wx.getExtConfig](https://developers.weixin.qq.com/miniprogram/dev/api/ext/wx.getExtConfig.html) 的同步版本。
+*
+* **Tips**
+*
+* 1. 本接口暂时无法通过 [wx.canIUse](https://developers.weixin.qq.com/miniprogram/dev/api/base/wx.canIUse.html) 判断是否兼容,开发者需要自行判断 [wx.getExtConfigSync](https://developers.weixin.qq.com/miniprogram/dev/api/ext/wx.getExtConfigSync.html) 是否存在来兼容
+*
+* ****
+*
+* ```js
+let extConfig = wx.getExtConfigSync? wx.getExtConfigSync(): {}
+console.log(extConfig)
+``` */
+        getExtConfigSync(): IAnyObject
+        /** [Object wx.getLaunchOptionsSync()](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/life-cycle/wx.getLaunchOptionsSync.html)
+         *
+         * 需要基础库: `2.1.2`
+         *
+         * 在插件中使用:需要基础库 `2.9.4`
+         *
+         * 获取小程序启动时的参数。与 [`App.onLaunch`](https://developers.weixin.qq.com/miniprogram/dev/reference/api/App.html#onlaunchobject-object) 的回调参数一致。
+         *
+         * **返回有效 referrerInfo 的场景**
+         *
+         * | 场景值 | 场景                            | appId含义  |
+         * | ------ | ------------------------------- | ---------- |
+         * | 1020   | 公众号 profile 页相关小程序列表 | 来源公众号 |
+         * | 1035   | 公众号自定义菜单                | 来源公众号 |
+         * | 1036   | App 分享消息卡片                | 来源App    |
+         * | 1037   | 小程序打开小程序                | 来源小程序 |
+         * | 1038   | 从另一个小程序返回              | 来源小程序 |
+         * | 1043   | 公众号模板消息                  | 来源公众号 |
+         * | 1069   | 移动应用                    | 来源App |
+         *
+         * **不同 apiCategory 场景下的 API 限制**
+         *
+         * `X` 表示 API 被限制无法使用;不在表格中的 API 不限制。
+         *
+         * |                                       | default | nativeFunctionalized | browseOnly | embedded |
+         * |-|-|-|-|-|
+         * |navigateToMiniProgram                  |         | `X`                  | `X`        |          |
+         * |openSetting                            |         |                      | `X`        |          |
+         * |&lt;button open-type="share"&gt;       |         | `X`                  | `X`        | `X`      |
+         * |&lt;button open-type="feedback"&gt;    |         |                      | `X`        |          |
+         * |&lt;button open-type="open-setting"&gt;|         |                      | `X`        |          |
+         * |openEmbeddedMiniProgram                |         | `X`                  | `X`        | `X`      |
+         *
+         * **注意**
+         *
+         * 部分版本在无`referrerInfo`的时候会返回 `undefined`,建议使用 `options.referrerInfo && options.referrerInfo.appId` 进行判断。 */
+        getLaunchOptionsSync(): LaunchOptionsApp
+        /** [Object wx.getMenuButtonBoundingClientRect()](https://developers.weixin.qq.com/miniprogram/dev/api/ui/menu/wx.getMenuButtonBoundingClientRect.html)
+*
+* 需要基础库: `2.1.0`
+*
+* 在插件中使用:需要基础库 `2.15.0`
+*
+* 获取菜单按钮(右上角胶囊按钮)的布局位置信息。坐标信息以屏幕左上角为原点。
+*
+* **示例代码**
+*
+* ```js
+const res = wx.getMenuButtonBoundingClientRect()
+
+console.log(res.width)
+console.log(res.height)
+console.log(res.top)
+console.log(res.right)
+console.log(res.bottom)
+console.log(res.left)
+``` */
+        getMenuButtonBoundingClientRect(): ClientRect
+        /** [Object wx.getStorageInfoSync()](https://developers.weixin.qq.com/miniprogram/dev/api/storage/wx.getStorageInfoSync.html)
+*
+* 在插件中使用:不支持
+*
+* [wx.getStorageInfo](https://developers.weixin.qq.com/miniprogram/dev/api/storage/wx.getStorageInfo.html) 的同步版本
+*
+* **示例代码**
+*
+* ```js
+wx.getStorageInfo({
+  success (res) {
+    console.log(res.keys)
+    console.log(res.currentSize)
+    console.log(res.limitSize)
+  }
+})
+```
+*
+* ```js
+try {
+  const res = wx.getStorageInfoSync()
+  console.log(res.keys)
+  console.log(res.currentSize)
+  console.log(res.limitSize)
+} catch (e) {
+  // Do something when catch error
+}
+``` */
+        getStorageInfoSync(): GetStorageInfoSyncOption
+        /** [Object wx.getSystemInfoSync()](https://developers.weixin.qq.com/miniprogram/dev/api/base/system/wx.getSystemInfoSync.html)
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* [wx.getSystemInfo](https://developers.weixin.qq.com/miniprogram/dev/api/base/system/wx.getSystemInfo.html) 的同步版本
+*
+* **示例代码**
+*
+* [在微信开发者工具中查看示例](https://developers.weixin.qq.com/s/WkUCgXmS7mqO)
+*
+* ```js
+wx.getSystemInfo({
+  success (res) {
+    console.log(res.model)
+    console.log(res.pixelRatio)
+    console.log(res.windowWidth)
+    console.log(res.windowHeight)
+    console.log(res.language)
+    console.log(res.version)
+    console.log(res.platform)
+  }
+})
+```
+*
+* ```js
+try {
+  const res = wx.getSystemInfoSync()
+  console.log(res.model)
+  console.log(res.pixelRatio)
+  console.log(res.windowWidth)
+  console.log(res.windowHeight)
+  console.log(res.language)
+  console.log(res.version)
+  console.log(res.platform)
+} catch (e) {
+  // Do something when catch error
+}
+``` */
+        getSystemInfoSync(): SystemInfo
+        /** [Object wx.getSystemSetting()](https://developers.weixin.qq.com/miniprogram/dev/api/base/system/wx.getSystemSetting.html)
+*
+* 需要基础库: `2.20.1`
+*
+* 在插件中使用:需要基础库 `2.21.3`
+*
+* 获取设备设置
+*
+* **示例代码**
+*
+* ```js
+const systemSetting = wx.getSystemSetting()
+
+console.log(systemSetting.bluetoothEnabled)
+console.log(systemSetting.deviceOrientation)
+console.log(systemSetting.locationEnabled)
+console.log(systemSetting.wifiEnabled)
+``` */
+        getSystemSetting(): SystemSetting
+        /** [Object wx.getWindowInfo()](https://developers.weixin.qq.com/miniprogram/dev/api/base/system/wx.getWindowInfo.html)
+*
+* 需要基础库: `2.20.1`
+*
+* 在插件中使用:需要基础库 `2.21.3`
+*
+* 获取窗口信息
+*
+* **示例代码**
+*
+* ```js
+const windowInfo = wx.getWindowInfo()
+
+console.log(windowInfo.pixelRatio)
+console.log(windowInfo.screenWidth)
+console.log(windowInfo.screenHeight)
+console.log(windowInfo.windowWidth)
+console.log(windowInfo.windowHeight)
+console.log(windowInfo.statusBarHeight)
+console.log(windowInfo.safeArea)
+console.log(windowInfo.screenTop)
+``` */
+        getWindowInfo(): WindowInfo
+        /** [[Animation](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.html) wx.createAnimation(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/wx.createAnimation.html)
+         *
+         * 在插件中使用:需要基础库 `1.9.6`
+         *
+         * 创建一个动画实例 [animation](https://developers.weixin.qq.com/miniprogram/dev/api/ui/animation/Animation.html)。调用实例的方法来描述动画。最后通过动画实例的 export 方法导出动画数据传递给组件的 animation 属性。 */
+        createAnimation(option: StepOption): Animation
+        /** [[AudioContext](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/AudioContext.html) wx.createAudioContext(string id, Object this)](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/wx.createAudioContext.html)
+         *
+         * 在插件中使用:需要基础库 `1.9.6`
+         * @deprecated 基础库版本 [1.6.0](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 起已废弃,请使用 [wx.createInnerAudioContext](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/wx.createInnerAudioContext.html) 替换
+         *
+         * 创建 [audio](https://developers.weixin.qq.com/miniprogram/dev/component/audio.html) 上下文 [AudioContext](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/AudioContext.html) 对象。 */
+        createAudioContext(
+            /** [audio](https://developers.weixin.qq.com/miniprogram/dev/component/audio.html) 组件的 id */
+            id: string,
+            /** 在自定义组件下,当前组件实例的this,以操作组件内 [audio](https://developers.weixin.qq.com/miniprogram/dev/component/audio.html) 组件 */
+            component?: Component.TrivialInstance | Page.TrivialInstance
+        ): AudioContext
+        /** [[BackgroundAudioManager](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/BackgroundAudioManager.html) wx.getBackgroundAudioManager()](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/wx.getBackgroundAudioManager.html)
+         *
+         * 需要基础库: `1.2.0`
+         *
+         * 在插件中使用:需要基础库 `1.9.6`
+         *
+         * 获取**全局唯一**的背景音频管理器。
+         * 小程序切入后台,如果音频处于播放状态,可以继续播放。但是后台状态不能通过调用API操纵音频的播放状态。
+         *
+         * 从微信客户端6.7.2版本开始,若需要在小程序切后台后继续播放音频,需要在 [app.json](https://developers.weixin.qq.com/miniprogram/dev/reference/configuration/app.html) 中配置 `requiredBackgroundModes` 属性。开发版和体验版上可以直接生效,正式版还需通过审核。 */
+        getBackgroundAudioManager(): BackgroundAudioManager
+        /** [[CameraContext](https://developers.weixin.qq.com/miniprogram/dev/api/media/camera/CameraContext.html) wx.createCameraContext()](https://developers.weixin.qq.com/miniprogram/dev/api/media/camera/wx.createCameraContext.html)
+         *
+         * 需要基础库: `1.6.0`
+         *
+         * 在插件中使用:需要基础库 `1.9.6`
+         *
+         * 创建 [camera](https://developers.weixin.qq.com/miniprogram/dev/component/camera.html) 上下文 [CameraContext](https://developers.weixin.qq.com/miniprogram/dev/api/media/camera/CameraContext.html) 对象。 */
+        createCameraContext(): CameraContext
+        /** [[CanvasContext](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.html) wx.createCanvasContext(string canvasId, Object this)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/wx.createCanvasContext.html)
+         *
+         * 在插件中使用:需要基础库 `1.9.6`
+         * @deprecated 基础库版本 [2.9.0](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 起已废弃,请使用 [Canvas](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/Canvas.html) 替换
+         *
+         * 创建 canvas 的绘图上下文 [CanvasContext](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.html) 对象 */
+        createCanvasContext(
+            /** 要获取上下文的 [canvas](https://developers.weixin.qq.com/miniprogram/dev/component/canvas.html) 组件 canvas-id 属性 */
+            canvasId: string,
+            /** 在自定义组件下,当前组件实例的this,表示在这个自定义组件下查找拥有 canvas-id 的 [canvas](https://developers.weixin.qq.com/miniprogram/dev/component/canvas.html) ,如果省略则不在任何自定义组件内查找 */
+            component?: Component.TrivialInstance | Page.TrivialInstance
+        ): CanvasContext
+        /** [[DownloadTask](https://developers.weixin.qq.com/miniprogram/dev/api/network/download/DownloadTask.html) wx.downloadFile(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/network/download/wx.downloadFile.html)
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 下载文件资源到本地。客户端直接发起一个 HTTPS GET 请求,返回文件的本地临时路径 (本地路径),单次下载允许的最大文件为 200MB。使用前请注意阅读[相关说明](https://developers.weixin.qq.com/miniprogram/dev/framework/ability/network.html)。
+*
+* 注意:请在服务端响应的 header 中指定合理的 `Content-Type` 字段,以保证客户端正确处理文件类型。
+*
+* **示例代码**
+*
+* ```js
+wx.downloadFile({
+  url: 'https://example.com/audio/123', //仅为示例,并非真实的资源
+  success (res) {
+    // 只要服务器有响应数据,就会把响应内容写入文件并进入 success 回调,业务需要自行判断是否下载到了想要的内容
+    if (res.statusCode === 200) {
+      wx.playVoice({
+        filePath: res.tempFilePath
+      })
+    }
+  }
+})
+``` */
+        downloadFile(option: DownloadFileOption): DownloadTask
+        /** [[FileSystemManager](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.html) wx.getFileSystemManager()](https://developers.weixin.qq.com/miniprogram/dev/api/file/wx.getFileSystemManager.html)
+         *
+         * 需要基础库: `1.9.9`
+         *
+         * 在插件中使用:需要基础库 `2.19.2`
+         *
+         * 获取全局唯一的文件管理器 */
+        getFileSystemManager(): FileSystemManager
+        /** [[InnerAudioContext](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/InnerAudioContext.html) wx.createInnerAudioContext(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/wx.createInnerAudioContext.html)
+         *
+         * 需要基础库: `1.6.0`
+         *
+         * 在插件中使用:需要基础库 `1.9.6`
+         *
+         * 创建内部 [audio](https://developers.weixin.qq.com/miniprogram/dev/component/audio.html) 上下文 [InnerAudioContext](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/InnerAudioContext.html) 对象。 */
+        createInnerAudioContext(
+            option?: CreateInnerAudioContextOption
+        ): InnerAudioContext
+        /** [[IntersectionObserver](https://developers.weixin.qq.com/miniprogram/dev/api/wxml/IntersectionObserver.html) wx.createIntersectionObserver(Object component, Object options)](https://developers.weixin.qq.com/miniprogram/dev/api/wxml/wx.createIntersectionObserver.html)
+         *
+         * 需要基础库: `1.9.3`
+         *
+         * 在插件中使用:需要基础库 `1.9.6`
+         *
+         * 创建并返回一个 IntersectionObserver 对象实例。在自定义组件或包含自定义组件的页面中,应使用 `this.createIntersectionObserver([options])` 来代替。
+         *
+         * **示例代码**
+         *
+         * [在微信开发者工具中查看示例](https://developers.weixin.qq.com/s/LAbMxkmI7F2A) */
+        createIntersectionObserver(
+            /** 自定义组件实例 */
+            component: IAnyObject,
+            /** 选项 */
+            options?: CreateIntersectionObserverOption
+        ): IntersectionObserver
+        /** [[InterstitialAd](https://developers.weixin.qq.com/miniprogram/dev/api/ad/InterstitialAd.html) wx.createInterstitialAd(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/ad/wx.createInterstitialAd.html)
+         *
+         * 需要基础库: `2.6.0`
+         *
+         * 在插件中使用:需要基础库 `2.8.1`
+         *
+         * 创建插屏广告组件。请通过 [wx.getSystemInfoSync()](https://developers.weixin.qq.com/miniprogram/dev/api/base/system/wx.getSystemInfoSync.html) 返回对象的 SDKVersion 判断基础库版本号后再使用该 API。每次调用该方法创建插屏广告都会返回一个全新的实例(小程序端的插屏广告实例不允许跨页面使用)。 */
+        createInterstitialAd(option: CreateInterstitialAdOption): InterstitialAd
+        /** [[LivePlayerContext](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePlayerContext.html) wx.createLivePlayerContext(string id, Object this)](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/wx.createLivePlayerContext.html)
+         *
+         * 需要基础库: `1.7.0`
+         *
+         * 在插件中使用:需要基础库 `1.9.6`
+         *
+         * 创建 [live-player](https://developers.weixin.qq.com/miniprogram/dev/component/live-player.html) 上下文 [LivePlayerContext](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePlayerContext.html) 对象。建议使用 [wx.createSelectorQuery](https://developers.weixin.qq.com/miniprogram/dev/api/wxml/wx.createSelectorQuery.html) 获取 context 对象。 */
+        createLivePlayerContext(
+            /** [live-player](https://developers.weixin.qq.com/miniprogram/dev/component/live-player.html) 组件的 id */
+            id: string,
+            /** 在自定义组件下,当前组件实例的this,以操作组件内 [live-player](https://developers.weixin.qq.com/miniprogram/dev/component/live-player.html) 组件 */
+            component?: Component.TrivialInstance | Page.TrivialInstance
+        ): LivePlayerContext
+        /** [[LivePusherContext](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePusherContext.html) wx.createLivePusherContext()](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/wx.createLivePusherContext.html)
+         *
+         * 需要基础库: `1.7.0`
+         *
+         * 在插件中使用:需要基础库 `1.9.6`
+         *
+         * 创建 [live-pusher](https://developers.weixin.qq.com/miniprogram/dev/component/live-pusher.html) 上下文 [LivePusherContext](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePusherContext.html) 对象。 */
+        createLivePusherContext(): LivePusherContext
+        /** [[LogManager](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/LogManager.html) wx.getLogManager(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/wx.getLogManager.html)
+*
+* 需要基础库: `2.1.0`
+*
+* 在插件中使用:不支持
+*
+* 获取日志管理器对象。
+*
+* **示例代码**
+*
+* ```js
+const logger = wx.getLogManager({level: 1})
+logger.log({str: 'hello world'}, 'basic log', 100, [1, 2, 3])
+logger.info({str: 'hello world'}, 'info log', 100, [1, 2, 3])
+logger.debug({str: 'hello world'}, 'debug log', 100, [1, 2, 3])
+logger.warn({str: 'hello world'}, 'warn log', 100, [1, 2, 3])
+``` */
+        getLogManager(option: GetLogManagerOption): LogManager
+        /** [[MapContext](https://developers.weixin.qq.com/miniprogram/dev/api/media/map/MapContext.html) wx.createMapContext(string mapId, Object this)](https://developers.weixin.qq.com/miniprogram/dev/api/media/map/wx.createMapContext.html)
+         *
+         * 在插件中使用:需要基础库 `1.9.6`
+         *
+         * 创建 [map](https://developers.weixin.qq.com/miniprogram/dev/component/map.html) 上下文 [MapContext](https://developers.weixin.qq.com/miniprogram/dev/api/media/map/MapContext.html) 对象。建议使用 [wx.createSelectorQuery](https://developers.weixin.qq.com/miniprogram/dev/api/wxml/wx.createSelectorQuery.html) 获取 context 对象。 */
+        createMapContext(
+            /** [map](https://developers.weixin.qq.com/miniprogram/dev/component/map.html) 组件的 id */
+            mapId: string,
+            /** 在自定义组件下,当前组件实例的this,以操作组件内 [map](https://developers.weixin.qq.com/miniprogram/dev/component/map.html) 组件 */
+            component?: Component.TrivialInstance | Page.TrivialInstance
+        ): MapContext
+        /** [[MediaAudioPlayer](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/MediaAudioPlayer.html) wx.createMediaAudioPlayer()](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/wx.createMediaAudioPlayer.html)
+*
+* 需要基础库: `2.13.0`
+*
+* 在插件中使用:支持
+*
+* 创建媒体音频播放器对象 [MediaAudioPlayer](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/MediaAudioPlayer.html) 对象,可用于播放视频解码器 [VideoDecoder](https://developers.weixin.qq.com/miniprogram/dev/api/media/video-decoder/VideoDecoder.html) 输出的音频。
+*
+* **示例代码**
+*
+* ```js
+  // 创建视频解码器,具体参数见 createVideoDecoder 文档
+  const videoDecoder = wx.createVideoDecoder()
+  // 创建媒体音频播放器
+  const mediaAudioPlayer = wx.createMediaAudioPlayer()
+  // 启动视频解码器
+  videoDecoder.start()
+  // 启动播放器
+  mediaAudioPlayer.start().then(() => {
+    // 添加播放器音频来源
+    mediaAudioPlayer.addAudioSource(videoDecoder).then(res => {
+      videoDecoder.getFrameData() // 建议在 requestAnimationFrame 里获取每一帧视频数据
+      console.log(res)
+    })
+
+    // 移除播放器音频来源
+    mediaAudioPlayer.removeAudioSource(videoDecoder).then()
+    // 停止播放器
+    mediaAudioPlayer.stop().then()
+    // 销毁播放器
+    mediaAudioPlayer.destroy().then()
+    // 设置播放器音量
+    mediaAudioPlayer.volume = 0.5
+  })
+```
+*
+* **完整demo(小游戏)**
+*
+* - https://developers.weixin.qq.com/s/SF2duHmb7MjI */
+        createMediaAudioPlayer(): MediaAudioPlayer
+        /** [[MediaContainer](https://developers.weixin.qq.com/miniprogram/dev/api/media/video-processing/MediaContainer.html) wx.createMediaContainer()](https://developers.weixin.qq.com/miniprogram/dev/api/media/video-processing/wx.createMediaContainer.html)
+         *
+         * 需要基础库: `2.9.0`
+         *
+         * 在插件中使用:需要基础库 `2.10.0`
+         *
+         * 创建音视频处理容器,最终可将容器中的轨道合成一个视频 */
+        createMediaContainer(): MediaContainer
+        /** [[MediaRecorder](https://developers.weixin.qq.com/miniprogram/dev/api/media/media-recorder/MediaRecorder.html) wx.createMediaRecorder(Object canvas, Object options)](https://developers.weixin.qq.com/miniprogram/dev/api/media/media-recorder/wx.createMediaRecorder.html)
+*
+* 需要基础库: `2.11.0`
+*
+* 在插件中使用:需要基础库 `2.11.0`
+*
+* 创建 WebGL 画面录制器,可逐帧录制在 WebGL 上渲染的画面并导出视频文件
+*
+* **示例代码**
+*
+* [在微信开发者工具中查看示例](https://developers.weixin.qq.com/s/MCz3kPmC7zpa)
+*
+* **低版本异步接口兼容**
+*
+* 对基础库 2.16.1 版本前的 mediaRecorder,所有的接口都没有返回 Promise 对象,若需要兼容低版本,则可采用如下方式的写法:
+* ```javascript
+// 启动 mediaRecorder
+await new Promise(resolve => {
+  recorder.on('start', resolve)
+  recorder.start()
+})
+
+// 逐帧绘制
+while (frames--) {
+  await new Promise(resolve => recorder.requestFrame(resolve))
+  render()
+}
+
+// 绘制完成,生成视频
+const {tempFilePath} = await new Promise(resolve => {
+  recorder.on('stop', resolve)
+  recorder.stop()
+})
+``` */
+        createMediaRecorder(
+            /** WebGL 对象,通过 [SelectorQuery](https://developers.weixin.qq.com/miniprogram/dev/api/wxml/SelectorQuery.html) 获取到的 node 对象或通过 [wx.createOffscreenCanvas](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/wx.createOffscreenCanvas.html) 创建的离屏 WebGL Canvas 对象 */
+            canvas: IAnyObject,
+            options: CreateMediaRecorderOption
+        ): MediaRecorder
+        /** [[NFCAdapter](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NFCAdapter.html) wx.getNFCAdapter()](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/wx.getNFCAdapter.html)
+         *
+         * 需要基础库: `2.11.2`
+         *
+         * 在插件中使用:需要基础库 `2.11.2`
+         *
+         * 获取 NFC 实例
+         *
+         * **示例代码**
+         *
+         * [在微信开发者工具中查看示例](https://developers.weixin.qq.com/s/1WsbDwmb75ig) */
+        getNFCAdapter(): NFCAdapter
+        /** [[OffscreenCanvas](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/OffscreenCanvas.html) wx.createOffscreenCanvas(object object, number width, number height, Object this)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/wx.createOffscreenCanvas.html)
+         *
+         * 需要基础库: `2.16.1`
+         *
+         * 在插件中使用:需要基础库 `2.16.1`
+         *
+         * 创建离屏 canvas 实例
+         *
+         * **离屏 Canvas 类型不可混用**
+         *
+         * 由于 webgl canvas 和 2d canvas 的底层实现方式不同,因此必须要在调用 `wx.createOffscreenCanvas` 时提前指定类型。
+         *
+         * 指定类型后,离屏 canvas `getContext(type)` 调用不允许混用,如不能对 webgl canvas 调用 `getContext('2d')`。
+         *
+         * 同样的,不同类型 canvas 调用 `createImage` 创建的图片对象也不支持混用,使用时请注意尽量使用 canvas 自身的 `createImage` 创建图片对象。
+         *
+         * **与 MediaRecorder 结合**
+         *
+         * 离屏 webgl canvas 支持作为参数传递给 [`wx.createMediaRecorder`](https://developers.weixin.qq.com/miniprogram/dev/api/media/media-recorder/wx.createMediaRecorder.html), 离屏 2d canvas 暂不支持。
+         *
+         * **旧版 createOffscreenCanvas**
+         *
+         * 旧版函数签名为 `wx.createOffscreenCanvas(width: number, height: number, this: object): OffscreenCanvas`,从基础库 2.7.0 开始支持
+         *
+         * 从基础库 2.16.1 开始改为 `wx.createOffscreenCanvas(options: object): OffscreenCanvas`,向下兼容旧版入参。
+         * 但需注意旧版入参只能创建 webgl 类型,如需创建 2d 类型则必须使用新版。 */
+        createOffscreenCanvas(
+            /** 画布宽度 */
+            width: number,
+            /** 画布高度 */
+            height: number,
+            /** 在自定义组件下,当前组件实例的 this */
+            component?: Component.TrivialInstance | Page.TrivialInstance
+        ): OffscreenCanvas
+        /** [[OffscreenCanvas](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/OffscreenCanvas.html) wx.createOffscreenCanvas(object object, number width, number height, Object this)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/wx.createOffscreenCanvas.html)
+         *
+         * 需要基础库: `2.16.1`
+         *
+         * 在插件中使用:需要基础库 `2.16.1`
+         *
+         * 创建离屏 canvas 实例
+         *
+         * **离屏 Canvas 类型不可混用**
+         *
+         * 由于 webgl canvas 和 2d canvas 的底层实现方式不同,因此必须要在调用 `wx.createOffscreenCanvas` 时提前指定类型。
+         *
+         * 指定类型后,离屏 canvas `getContext(type)` 调用不允许混用,如不能对 webgl canvas 调用 `getContext('2d')`。
+         *
+         * 同样的,不同类型 canvas 调用 `createImage` 创建的图片对象也不支持混用,使用时请注意尽量使用 canvas 自身的 `createImage` 创建图片对象。
+         *
+         * **与 MediaRecorder 结合**
+         *
+         * 离屏 webgl canvas 支持作为参数传递给 [`wx.createMediaRecorder`](https://developers.weixin.qq.com/miniprogram/dev/api/media/media-recorder/wx.createMediaRecorder.html), 离屏 2d canvas 暂不支持。
+         *
+         * **旧版 createOffscreenCanvas**
+         *
+         * 旧版函数签名为 `wx.createOffscreenCanvas(width: number, height: number, this: object): OffscreenCanvas`,从基础库 2.7.0 开始支持
+         *
+         * 从基础库 2.16.1 开始改为 `wx.createOffscreenCanvas(options: object): OffscreenCanvas`,向下兼容旧版入参。
+         * 但需注意旧版入参只能创建 webgl 类型,如需创建 2d 类型则必须使用新版。 */
+        createOffscreenCanvas(
+            option: CreateOffscreenCanvasOption
+        ): OffscreenCanvas
+        /** [[Performance](https://developers.weixin.qq.com/miniprogram/dev/api/base/performance/Performance.html) wx.getPerformance()](https://developers.weixin.qq.com/miniprogram/dev/api/base/performance/wx.getPerformance.html)
+*
+* 需要基础库: `2.11.0`
+*
+* 在插件中使用:支持
+*
+* 获取当前小程序性能相关的信息。关于小程序启动性能优化的更多内容,请参考[启动性能指南](https://developers.weixin.qq.com/miniprogram/dev/framework/performance/tips/start.html)。
+*
+* ****
+*
+* 目前支持获取以下几类性能指标,具体内容请参考 [PerformanceEntry](https://developers.weixin.qq.com/miniprogram/dev/api/base/performance/PerformanceEntry.html):
+*
+* | 指标类型(entryType) | 指标名称          |
+* | ------------------- | ---------------- |
+* | 路由(navigation)   | route: 路由性能 |
+* | 路由(navigation)   | appLaunch: 小程序启动耗时 |
+* | 渲染(render)       | firstRender: 页面首次渲染耗时 |
+* | 渲染(render)       | firstPaint: 页面首次绘制 |
+* | 渲染(render)       | firstContentfulPaint: 页面首次内容绘制 |
+* | 脚本(script)       | evaluateScript: 注入脚本耗时  |
+*
+* **示例代码**
+*
+* ```js
+const performance = wx.getPerformance()
+const observer = performance.createObserver((entryList) => {
+  console.log(entryList.getEntries())
+})
+observer.observe({ entryTypes: ['render', 'script', 'navigation'] })
+```
+*
+* **注意**
+*
+* - 目前,当开启代码 [按需注入](https://developers.weixin.qq.com/miniprogram/dev/framework/ability/lazyload.html) 时,`evaluateScript` 将仅包含公有部分代码(2.21.2 开始会区分公有部分和页面和组件的部分),页面和组件的代码注入的时间会包含在 `firstRender` 中(因为页面和组件的代码注入过程成为了首次渲染过程的一部分)。因此开启按需注入后,脚本耗时降低,渲染时间提高属于正常现象,优化效果可以关注整体启动耗时(`appLaunch`)来评估。
+* - firstPaint 和 firstContentfulPaint 指标在开启vconsole的情况下,由于绘制vconsoel的面板,会导致数据提前。 */
+        getPerformance(): Performance
+        /** [[RealtimeLogManager](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/RealtimeLogManager.html) wx.getRealtimeLogManager()](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/wx.getRealtimeLogManager.html)
+*
+* 需要基础库: `2.7.1`
+*
+* 在插件中使用:需要基础库 `2.16.0`
+*
+* 获取实时日志管理器对象。
+*
+* **示例代码**
+*
+* ```js
+// 小程序端
+const logger = wx.getRealtimeLogManager()
+logger.info({str: 'hello world'}, 'info log', 100, [1, 2, 3])
+logger.error({str: 'hello world'}, 'error log', 100, [1, 2, 3])
+logger.warn({str: 'hello world'}, 'warn log', 100, [1, 2, 3])
+
+// 插件端,基础库 2.16.0 版本后支持,只允许采用 key-value 的新格式上报
+const logManager = wx.getRealtimeLogManager()
+const logger = logManager.tag('plugin-log1')
+logger.info('key1', 'value1')
+logger.error('key2', {str: 'value2'})
+logger.warn('key3', 'value3')
+``` */
+        getRealtimeLogManager(): RealtimeLogManager
+        /** [[RecorderManager](https://developers.weixin.qq.com/miniprogram/dev/api/media/recorder/RecorderManager.html) wx.getRecorderManager()](https://developers.weixin.qq.com/miniprogram/dev/api/media/recorder/wx.getRecorderManager.html)
+         *
+         * 需要基础库: `1.6.0`
+         *
+         * 在插件中使用:需要基础库 `1.9.94`
+         *
+         * 获取**全局唯一**的录音管理器 RecorderManager */
+        getRecorderManager(): RecorderManager
+        /** [[RequestTask](https://developers.weixin.qq.com/miniprogram/dev/api/network/request/RequestTask.html) wx.request(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/network/request/wx.request.html)
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 发起 HTTPS 网络请求。使用前请注意阅读[相关说明](https://developers.weixin.qq.com/miniprogram/dev/framework/ability/network.html)。
+*
+* **data 参数说明**
+*
+* 最终发送给服务器的数据是 String 类型,如果传入的 data 不是 String 类型,会被转换成 String 。转换规则如下:
+* - 对于 `GET` 方法的数据,会将数据转换成 query string(`encodeURIComponent(k)=encodeURIComponent(v)&encodeURIComponent(k)=encodeURIComponent(v)...`)
+* - 对于 `POST` 方法且 `header['content-type']` 为 `application/json` 的数据,会对数据进行 JSON 序列化
+* - 对于 `POST` 方法且 `header['content-type']` 为 `application/x-www-form-urlencoded` 的数据,会将数据转换成 query string `(encodeURIComponent(k)=encodeURIComponent(v)&encodeURIComponent(k)=encodeURIComponent(v)...)`
+*
+* **示例代码**
+*
+* ```js
+wx.request({
+  url: 'example.php', //仅为示例,并非真实的接口地址
+  data: {
+    x: '',
+    y: ''
+  },
+  header: {
+    'content-type': 'application/json' // 默认值
+  },
+  success (res) {
+    console.log(res.data)
+  }
+})
+``` */
+        request<
+            T extends string | IAnyObject | ArrayBuffer =
+                | string
+                | IAnyObject
+                | ArrayBuffer
+        >(
+            option: RequestOption<T>
+        ): RequestTask
+        /** [[RewardedVideoAd](https://developers.weixin.qq.com/miniprogram/dev/api/ad/RewardedVideoAd.html) wx.createRewardedVideoAd(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/ad/wx.createRewardedVideoAd.html)
+         *
+         * 需要基础库: `2.0.4`
+         *
+         * 在插件中使用:需要基础库 `2.8.1`
+         *
+         * 创建激励视频广告组件。请通过 [wx.getSystemInfoSync()](https://developers.weixin.qq.com/miniprogram/dev/api/base/system/wx.getSystemInfoSync.html) 返回对象的 SDKVersion 判断基础库版本号后再使用该 API(小游戏端要求 >= 2.0.4, 小程序端要求 >= 2.6.0)。调用该方法创建的激励视频广告是一个单例(小游戏端是全局单例,小程序端是页面内单例,在小程序端的单例对象不允许跨页面使用)。 */
+        createRewardedVideoAd(
+            option: CreateRewardedVideoAdOption
+        ): RewardedVideoAd
+        /** [[SelectorQuery](https://developers.weixin.qq.com/miniprogram/dev/api/wxml/SelectorQuery.html) wx.createSelectorQuery()](https://developers.weixin.qq.com/miniprogram/dev/api/wxml/wx.createSelectorQuery.html)
+*
+* 需要基础库: `1.4.0`
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 返回一个 SelectorQuery 对象实例。在自定义组件或包含自定义组件的页面中,应使用 `this.createSelectorQuery()` 来代替。
+*
+* **示例代码**
+*
+* ```js
+const query = wx.createSelectorQuery()
+query.select('#the-id').boundingClientRect()
+query.selectViewport().scrollOffset()
+query.exec(function(res){
+  res[0].top       // #the-id节点的上边界坐标
+  res[1].scrollTop // 显示区域的竖直滚动位置
+})
+``` */
+        createSelectorQuery(): SelectorQuery
+        /** [[SocketTask](https://developers.weixin.qq.com/miniprogram/dev/api/network/websocket/SocketTask.html) wx.connectSocket(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/network/websocket/wx.connectSocket.html)
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 创建一个 WebSocket 连接。使用前请注意阅读[相关说明](https://developers.weixin.qq.com/miniprogram/dev/framework/ability/network.html)。**推荐使用 [SocketTask](https://developers.weixin.qq.com/miniprogram/dev/api/network/websocket/SocketTask.html) 的方式去管理 webSocket 链接,每一条链路的生命周期都更加可控。同时存在多个 webSocket 的链接的情况下使用 wx 前缀的方法可能会带来一些和预期不一致的情况。**
+*
+* **并发数**
+*
+* - 1.7.0 及以上版本,最多可以同时存在 5 个 WebSocket 连接。
+* - 1.7.0 以下版本,一个小程序同时只能有一个 WebSocket 连接,如果当前已存在一个 WebSocket 连接,会自动关闭该连接,并重新创建一个 WebSocket 连接。
+*
+* **示例代码**
+*
+* ```js
+wx.connectSocket({
+  url: 'wss://example.qq.com',
+  header:{
+    'content-type': 'application/json'
+  },
+  protocols: ['protocol1']
+})
+``` */
+        connectSocket(option: ConnectSocketOption): SocketTask
+        /** [[TCPSocket](https://developers.weixin.qq.com/miniprogram/dev/api/network/tcp/TCPSocket.html) wx.createTCPSocket()](https://developers.weixin.qq.com/miniprogram/dev/api/network/tcp/wx.createTCPSocket.html)
+         *
+         * 需要基础库: `2.18.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 创建一个 TCP Socket 实例。使用前请注意阅读[相关说明](https://developers.weixin.qq.com/miniprogram/dev/framework/ability/network.html)。
+         *
+         * **连接限制**
+         *
+         * - 允许与局域网内的非本机 IP 通信
+         * - 允许与配置过的服务器域名通信,详见[相关说明](https://developers.weixin.qq.com/miniprogram/dev/framework/ability/network.html)
+         * - 禁止与以下端口号连接:`1024 以下` `1099` `1433` `1521` `1719` `1720` `1723` `2049` `2375` `3128` `3306` `3389` `3659` `4045` `5060` `5061` `5432` `5984` `6379` `6000` `6566` `7001` `7002` `8000-8100` `8443` `8888` `9200` `9300` `10051` `10080` `11211` `27017` `27018` `27019`
+         * - 每 5 分钟内最多创建 20 个 TCPSocket */
+        createTCPSocket(): TCPSocket
+        /** [[UDPSocket](https://developers.weixin.qq.com/miniprogram/dev/api/network/udp/UDPSocket.html) wx.createUDPSocket()](https://developers.weixin.qq.com/miniprogram/dev/api/network/udp/wx.createUDPSocket.html)
+         *
+         * 需要基础库: `2.7.0`
+         *
+         * 在插件中使用:需要基础库 `2.11.1`
+         *
+         * 创建一个 UDP Socket 实例。使用前请注意阅读[相关说明](https://developers.weixin.qq.com/miniprogram/dev/framework/ability/network.html)。 */
+        createUDPSocket(): UDPSocket
+        /** [[UpdateManager](https://developers.weixin.qq.com/miniprogram/dev/api/base/update/UpdateManager.html) wx.getUpdateManager()](https://developers.weixin.qq.com/miniprogram/dev/api/base/update/wx.getUpdateManager.html)
+         *
+         * 需要基础库: `1.9.90`
+         *
+         * 在插件中使用:不支持
+         *
+         * 获取**全局唯一**的版本更新管理器,用于管理小程序更新。关于小程序的更新机制,可以查看[运行机制](https://developers.weixin.qq.com/miniprogram/dev/framework/runtime/operating-mechanism.html)文档。
+         *
+         * **示例代码**
+         *
+         * [示例代码](https://developers.weixin.qq.com/miniprogram/dev/api/base/update/UpdateManager.html#示例代码) */
+        getUpdateManager(): UpdateManager
+        /** [[UploadTask](https://developers.weixin.qq.com/miniprogram/dev/api/network/upload/UploadTask.html) wx.uploadFile(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/network/upload/wx.uploadFile.html)
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 将本地资源上传到服务器。客户端发起一个 HTTPS POST 请求,其中 `content-type` 为 `multipart/form-data`。使用前请注意阅读[相关说明](https://developers.weixin.qq.com/miniprogram/dev/framework/ability/network.html)。
+*
+* **示例代码**
+*
+* ```js
+wx.chooseImage({
+  success (res) {
+    const tempFilePaths = res.tempFilePaths
+    wx.uploadFile({
+      url: 'https://example.weixin.qq.com/upload', //仅为示例,非真实的接口地址
+      filePath: tempFilePaths[0],
+      name: 'file',
+      formData: {
+        'user': 'test'
+      },
+      success (res){
+        const data = res.data
+        //do something
+      }
+    })
+  }
+})
+``` */
+        uploadFile(option: UploadFileOption): UploadTask
+        /** [[UserCryptoManager](https://developers.weixin.qq.com/miniprogram/dev/api/base/crypto/UserCryptoManager.html) wx.getUserCryptoManager()](https://developers.weixin.qq.com/miniprogram/dev/api/base/crypto/wx.getUserCryptoManager.html)
+         *
+         * 需要基础库: `2.17.3`
+         *
+         * 在插件中使用:不支持
+         *
+         * 获取用户加密模块 */
+        getUserCryptoManager(): UserCryptoManager
+        /** [[VKSession](https://developers.weixin.qq.com/miniprogram/dev/api/ai/visionkit/VKSession.html) wx.createVKSession(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/ai/visionkit/wx.createVKSession.html)
+*
+* 需要基础库: `2.20.0`
+*
+* 在插件中使用:需要基础库 `2.20.0`
+*
+* 创建 vision kit 会话对象。
+*
+* **示例代码**
+*
+* [在微信开发者工具中查看示例](https://developers.weixin.qq.com/s/NYZcIJmZ7cvJ)
+* ```js
+// 创建 session 对象
+const ssession = wx.createVKSession({
+  track: {
+    plane: {mode: 1},
+  },
+})
+
+// 逐帧分析
+const onFrame = timestamp => {
+  // 开发者可以自己控制帧率
+  const frame = session.getVKFrame(canvasWidth, canvasHeight)
+    if (frame) {
+      // 分析完毕,可以拿到帧对象
+      doRender(frame)
+    }
+
+  session.requestAnimationFrame(onFrame)
+}
+session.start(err => {
+  if (!err) session.requestAnimationFrame(onFrame)
+})
+
+// 渲染函数
+const doRender = frame => {
+  // ...
+}
+``` */
+        createVKSession(option: VKConfig): VKSession
+        /** [[VideoContext](https://developers.weixin.qq.com/miniprogram/dev/api/media/video/VideoContext.html) wx.createVideoContext(string id, Object this)](https://developers.weixin.qq.com/miniprogram/dev/api/media/video/wx.createVideoContext.html)
+         *
+         * 在插件中使用:需要基础库 `1.9.6`
+         *
+         * 创建 [video](https://developers.weixin.qq.com/miniprogram/dev/component/video.html) 上下文 [VideoContext](https://developers.weixin.qq.com/miniprogram/dev/api/media/video/VideoContext.html) 对象。建议使用 [wx.createSelectorQuery](https://developers.weixin.qq.com/miniprogram/dev/api/wxml/wx.createSelectorQuery.html) 获取 context 对象。 */
+        createVideoContext(
+            /** [video](https://developers.weixin.qq.com/miniprogram/dev/component/video.html) 组件的 id */
+            id: string,
+            /** 在自定义组件下,当前组件实例的this,以操作组件内 [video](https://developers.weixin.qq.com/miniprogram/dev/component/video.html) 组件 */
+            component?: Component.TrivialInstance | Page.TrivialInstance
+        ): VideoContext
+        /** [[VideoDecoder](https://developers.weixin.qq.com/miniprogram/dev/api/media/video-decoder/VideoDecoder.html) wx.createVideoDecoder()](https://developers.weixin.qq.com/miniprogram/dev/api/media/video-decoder/wx.createVideoDecoder.html)
+         *
+         * 需要基础库: `2.11.0`
+         *
+         * 在插件中使用:需要基础库 `2.11.0`
+         *
+         * 创建视频解码器,可逐帧获取解码后的数据 */
+        createVideoDecoder(): VideoDecoder
+        /** [[WebAudioContext](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/WebAudioContext.html) wx.createWebAudioContext()](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/wx.createWebAudioContext.html)
+         *
+         * 需要基础库: `2.19.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 创建 WebAudio 上下文。 */
+        createWebAudioContext(): WebAudioContext
+        /** [[Worker](https://developers.weixin.qq.com/miniprogram/dev/api/worker/Worker.html) wx.createWorker(string scriptPath, object options)](https://developers.weixin.qq.com/miniprogram/dev/api/worker/wx.createWorker.html)
+*
+* 需要基础库: `1.9.90`
+*
+* 在插件中使用:需要基础库 `2.18.1`
+*
+* 创建一个 Worker 线程
+*
+* **示例代码**
+*
+* ```js
+// 创建普通worker
+wx.createWorker('workers/index.js')
+```
+* ```js
+function createNewWorker() {
+  const worker = wx.createWorker('workers/index.js', {
+    useExperimentalWorker: true
+  })
+  // 监听worker被系统回收事件
+  worker.onProcessKilled(() => {
+    // 重新创建一个worker
+    createNewWorker()
+  })
+}
+// 创建实验worker
+createNewWorker()
+``` */
+        createWorker(
+            /** worker 入口文件的**绝对路径** */
+            scriptPath: string,
+            /** 可选参数 */
+            options?: CreateWorkerOption
+        ): Worker
+        /** [any wx.getStorageSync(string key, Boolean encrypt)](https://developers.weixin.qq.com/miniprogram/dev/api/storage/wx.getStorageSync.html)
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* [wx.getStorage](https://developers.weixin.qq.com/miniprogram/dev/api/storage/wx.getStorage.html) 的同步版本
+*
+* **示例代码**
+*
+* ```js
+wx.getStorage({
+  key: 'key',
+  success (res) {
+    console.log(res.data)
+  }
+})
+```
+*
+* ```js
+try {
+  var value = wx.getStorageSync('key')
+  if (value) {
+    // Do something with return value
+  }
+} catch (e) {
+  // Do something when catch error
+}
+```
+*
+* ```js
+// 开启加密存储
+wx.setStorage({
+  key: "key",
+  data: "value",
+  encrypt: true, // 若开启加密存储,setStorage 和 getStorage 需要同时声明 encrypt 的值为 true
+  success() {
+    wx.getStorage({
+      key: "key",
+      encrypt: true, // 若开启加密存储,setStorage 和 getStorage 需要同时声明 encrypt 的值为 true
+      success(res) {
+        console.log(res.data)
+      }
+    })
+  }
+})
+``` */
+        getStorageSync<T = any>(
+            /** 本地缓存中指定的 key */
+            key: string,
+            /** 需要基础库: `2.21.3`
+             *
+             * 是否开启加密存储。只有异步的 getStorage 接口支持开启加密存储。开启后,将会对 data 使用 AES128 解密,接口回调耗时将会增加。若开启加密存储,setStorage 和 getStorage 需要同时声明 encrypt 的值为 true */
+            encrypt?: boolean
+        ): T
+        /** [boolean wx.canIUse(string schema)](https://developers.weixin.qq.com/miniprogram/dev/api/base/wx.canIUse.html)
+*
+* 需要基础库: `1.1.1`
+*
+* 在插件中使用:不支持
+*
+* 判断小程序的API,回调,参数,组件等是否在当前版本可用。
+*
+* **参数说明**
+*
+* - `${API}` 代表 API 名字
+* - `${method}` 代表调用方式,有效值为return, success, object, callback
+* - `${param}` 代表参数或者返回值
+* - `${option}` 代表参数的可选值或者返回值的属性
+* - `${component}` 代表组件名字
+* - `${attribute}` 代表组件属性
+* - `${option}` 代表组件属性的可选值
+*
+* **示例代码**
+*
+* ```js
+// 对象的属性或方法
+wx.canIUse('console.log')
+wx.canIUse('CameraContext.onCameraFrame')
+wx.canIUse('CameraFrameListener.start')
+wx.canIUse('Image.src')
+
+// wx接口参数、回调或者返回值
+wx.canIUse('openBluetoothAdapter')
+wx.canIUse('getSystemInfoSync.return.safeArea.left')
+wx.canIUse('getSystemInfo.success.screenWidth')
+wx.canIUse('showToast.object.image')
+wx.canIUse('onCompassChange.callback.direction')
+wx.canIUse('request.object.method.GET')
+
+// 组件的属性
+wx.canIUse('live-player')
+wx.canIUse('text.selectable')
+wx.canIUse('button.open-type.contact')
+``` */
+        canIUse(
+            /** 使用 `${API}.${method}.${param}.${option}` 或者 `${component}.${attribute}.${option}` 方式来调用 */
+            schema: string
+        ): boolean
+        /** [string wx.arrayBufferToBase64(ArrayBuffer arrayBuffer)](https://developers.weixin.qq.com/miniprogram/dev/api/base/wx.arrayBufferToBase64.html)
+         *
+         * 需要基础库: `1.1.0`
+         *
+         * 在插件中使用:支持
+         * @deprecated 基础库版本 [2.4.0](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 起已废弃
+         *
+         * 将 ArrayBuffer 对象转成 Base64 字符串 */
+        arrayBufferToBase64(
+            /** 要转换成 Base64 字符串的 ArrayBuffer 对象 */
+            arrayBuffer: ArrayBuffer
+        ): string
+        /** [wx.addCard(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/card/wx.addCard.html)
+*
+* 需要基础库: `1.1.0`
+*
+* 在插件中使用:不支持
+*
+* 批量添加卡券。只有通过 [认证](https://developers.weixin.qq.com/miniprogram/product/renzheng.html) 的小程序或文化互动类目的小游戏才能使用。更多文档请参考 [微信卡券接口文档](https://mp.weixin.qq.com/cgi-bin/announce?action=getannouncement&key=1490190158&version=1&lang=zh_CN&platform=2)。
+*
+* **cardExt 说明**
+*
+* cardExt 是卡券的扩展参数,其值是一个 JSON 字符串。
+*
+* **示例代码**
+*
+* ```js
+wx.addCard({
+  cardList: [
+    {
+      cardId: '',
+      cardExt: '{"code": "", "openid": "", "timestamp": "", "signature":""}'
+    }, {
+      cardId: '',
+      cardExt: '{"code": "", "openid": "", "timestamp": "", "signature":""}'
+    }
+  ],
+  success (res) {
+    console.log(res.cardList) // 卡券添加结果
+  }
+})
+``` */
+        addCard<T extends AddCardOption = AddCardOption>(
+            option: T
+        ): PromisifySuccessResult<T, AddCardOption>
+        /** [wx.addFileToFavorites(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/favorites/wx.addFileToFavorites.html)
+         *
+         * 需要基础库: `2.16.1`
+         *
+         * 在插件中使用:不支持
+         *
+         * 收藏文件 */
+        addFileToFavorites<
+            T extends AddFileToFavoritesOption = AddFileToFavoritesOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, AddFileToFavoritesOption>
+        /** [wx.addPhoneCalendar(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/calendar/wx.addPhoneCalendar.html)
+         *
+         * 需要基础库: `2.15.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 向系统日历添加事件 */
+        addPhoneCalendar<
+            T extends AddPhoneCalendarOption = AddPhoneCalendarOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, AddPhoneCalendarOption>
+        /** [wx.addPhoneContact(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/contact/wx.addPhoneContact.html)
+         *
+         * 需要基础库: `1.2.0`
+         *
+         * 在插件中使用:需要基础库 `1.9.6`
+         *
+         * 添加手机通讯录联系人。用户可以选择将该表单以「新增联系人」或「添加到已有联系人」的方式,写入手机系统通讯录。 */
+        addPhoneContact<
+            T extends AddPhoneContactOption = AddPhoneContactOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, AddPhoneContactOption>
+        /** [wx.addPhoneRepeatCalendar(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/calendar/wx.addPhoneRepeatCalendar.html)
+         *
+         * 需要基础库: `2.15.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 向系统日历添加重复事件 */
+        addPhoneRepeatCalendar<
+            T extends AddPhoneRepeatCalendarOption = AddPhoneRepeatCalendarOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, AddPhoneRepeatCalendarOption>
+        /** [wx.addVideoToFavorites(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/favorites/wx.addVideoToFavorites.html)
+         *
+         * 需要基础库: `2.16.1`
+         *
+         * 在插件中使用:不支持
+         *
+         * 收藏视频 */
+        addVideoToFavorites<
+            T extends AddVideoToFavoritesOption = AddVideoToFavoritesOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, AddVideoToFavoritesOption>
+        /** [wx.authPrivateMessage(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/share/wx.authPrivateMessage.html)
+*
+* 需要基础库: `2.13.0`
+*
+* 在插件中使用:不支持
+*
+* 验证私密消息。用法详情见 [小程序私密消息使用指南](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/share/private-message.html)
+*
+* **示例代码**
+*
+* ```js
+wx.authPrivateMessage({
+  shareTicket: 'xxxxxx',
+  success(res) {
+    console.log('authPrivateMessage success', res)
+    // res
+    // {
+    //   errMsg: 'authPrivateMessage:ok'
+    //   valid: true
+    //   iv: 'xxxx',
+    //   encryptedData: 'xxxxxx'
+    // }
+  },
+  fail(res) {
+    console.log('authPrivateMessage fail', res)
+  }
+})
+``` */
+        authPrivateMessage(option?: AuthPrivateMessageOption): void
+        /** [wx.authorize(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/authorize/wx.authorize.html)
+*
+* 需要基础库: `1.2.0`
+*
+* 在插件中使用:不支持
+*
+* 提前向用户发起授权请求。调用后会立刻弹窗询问用户是否同意授权小程序使用某项功能或获取用户的某些数据,但不会实际调用对应接口。如果用户之前已经同意授权,则不会出现弹窗,直接返回成功。更多用法详见 [用户授权](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/authorize.html)。
+* > 小程序插件可以使用 [wx.authorizeForMiniProgram](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/authorize/wx.authorizeForMiniProgram.html)
+*
+* **示例代码**
+*
+* ```js
+// 可以通过 wx.getSetting 先查询一下用户是否授权了 "scope.record" 这个 scope
+wx.getSetting({
+  success(res) {
+    if (!res.authSetting['scope.record']) {
+      wx.authorize({
+        scope: 'scope.record',
+        success () {
+          // 用户已经同意小程序使用录音功能,后续调用 wx.startRecord 接口不会弹窗询问
+          wx.startRecord()
+        }
+      })
+    }
+  }
+})
+``` */
+        authorize<T extends AuthorizeOption = AuthorizeOption>(
+            option: T
+        ): PromisifySuccessResult<T, AuthorizeOption>
+        /** [wx.authorizeForMiniProgram(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/authorize/wx.authorizeForMiniProgram.html)
+*
+* 需要基础库: `2.14.4`
+*
+* 在插件中使用:需要基础库 `2.14.4`
+*
+* **仅小程序插件中能调用该接口**,用法同 [wx.authorize](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/authorize/wx.authorize.html)。目前仅支持三种 scope(见下)
+*
+* **示例代码**
+*
+* ```js
+wx.authorizeForMiniProgram({
+  scope: 'scope.record',
+  success () {
+    // 用户已经同意小程序使用录音功能,后续调用 wx.startRecord 接口不会弹窗询问
+    wx.startRecord()
+  }
+})
+``` */
+        authorizeForMiniProgram(option: AuthorizeForMiniProgramOption): void
+        /** [wx.canvasGetImageData(Object object, Object this)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/wx.canvasGetImageData.html)
+*
+* 需要基础库: `1.9.0`
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 获取 canvas 区域隐含的像素数据。
+*
+* **示例代码**
+*
+* [在微信开发者工具中查看示例](https://developers.weixin.qq.com/s/yufmRjmZ7W8f)
+*
+* ```js
+wx.canvasGetImageData({
+  canvasId: 'myCanvas',
+  x: 0,
+  y: 0,
+  width: 100,
+  height: 100,
+  success(res) {
+    console.log(res.width) // 100
+    console.log(res.height) // 100
+    console.log(res.data instanceof Uint8ClampedArray) // true
+    console.log(res.data.length) // 100 * 100 * 4
+  }
+})
+``` */
+        canvasGetImageData<
+            T extends CanvasGetImageDataOption = CanvasGetImageDataOption
+        >(
+            option: T,
+            /** 在自定义组件下,当前组件实例的this,以操作组件内 [canvas](https://developers.weixin.qq.com/miniprogram/dev/component/canvas.html) 组件 */
+            component?: Component.TrivialInstance | Page.TrivialInstance
+        ): PromisifySuccessResult<T, CanvasGetImageDataOption>
+        /** [wx.canvasPutImageData(Object object, Object this)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/wx.canvasPutImageData.html)
+         *
+         * 需要基础库: `1.9.0`
+         *
+         * 在插件中使用:需要基础库 `1.9.6`
+         *
+         * 将像素数据绘制到画布。在自定义组件下,第二个参数传入自定义组件实例 this,以操作组件内 <canvas> 组件 */
+        canvasPutImageData<
+            T extends CanvasPutImageDataOption = CanvasPutImageDataOption
+        >(
+            option: T,
+            /** 在自定义组件下,当前组件实例的this,以操作组件内 [canvas](https://developers.weixin.qq.com/miniprogram/dev/component/canvas.html) 组件 */
+            component?: Component.TrivialInstance | Page.TrivialInstance
+        ): PromisifySuccessResult<T, CanvasPutImageDataOption>
+        /** [wx.canvasToTempFilePath(Object object, Object this)](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/wx.canvasToTempFilePath.html)
+         *
+         * 在插件中使用:需要基础库 `1.9.6`
+         *
+         * 把当前画布指定区域的内容导出生成指定大小的图片。在 `draw()` 回调里调用该方法才能保证图片导出成功。 */
+        canvasToTempFilePath<
+            T extends CanvasToTempFilePathOption = CanvasToTempFilePathOption
+        >(
+            option: T,
+            /** 在自定义组件下,当前组件实例的this,以操作组件内 [canvas](https://developers.weixin.qq.com/miniprogram/dev/component/canvas.html) 组件 */
+            component?: Component.TrivialInstance | Page.TrivialInstance
+        ): PromisifySuccessResult<T, CanvasToTempFilePathOption>
+        /** [wx.checkIsOpenAccessibility(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/accessibility/wx.checkIsOpenAccessibility.html)
+         *
+         * 需要基础库: `2.13.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 检测是否开启视觉无障碍功能。 */
+        checkIsOpenAccessibility<
+            T extends CheckIsOpenAccessibilityOption = CheckIsOpenAccessibilityOption
+        >(
+            option?: T
+        ): PromisifySuccessResult<T, CheckIsOpenAccessibilityOption>
+        /** [wx.checkIsSoterEnrolledInDevice(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/soter/wx.checkIsSoterEnrolledInDevice.html)
+*
+* 需要基础库: `1.6.0`
+*
+* 在插件中使用:不支持
+*
+* 获取设备内是否录入如指纹等生物信息的接口
+*
+* **示例代码**
+*
+* ```js
+wx.checkIsSoterEnrolledInDevice({
+  checkAuthMode: 'fingerPrint',
+  success(res) {
+    console.log(res.isEnrolled)
+  }
+})
+``` */
+        checkIsSoterEnrolledInDevice<
+            T extends CheckIsSoterEnrolledInDeviceOption = CheckIsSoterEnrolledInDeviceOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, CheckIsSoterEnrolledInDeviceOption>
+        /** [wx.checkIsSupportSoterAuthentication(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/soter/wx.checkIsSupportSoterAuthentication.html)
+*
+* 需要基础库: `1.5.0`
+*
+* 在插件中使用:不支持
+*
+* 获取本机支持的 SOTER 生物认证方式
+*
+* **示例代码**
+*
+* ```js
+wx.checkIsSupportSoterAuthentication({
+  success(res) {
+    // res.supportMode = [] 不具备任何被SOTER支持的生物识别方式
+    // res.supportMode = ['fingerPrint'] 只支持指纹识别
+    // res.supportMode = ['fingerPrint', 'facial'] 支持指纹识别和人脸识别
+  }
+})
+``` */
+        checkIsSupportSoterAuthentication<
+            T extends CheckIsSupportSoterAuthenticationOption = CheckIsSupportSoterAuthenticationOption
+        >(
+            option?: T
+        ): PromisifySuccessResult<T, CheckIsSupportSoterAuthenticationOption>
+        /** [wx.checkSession(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/login/wx.checkSession.html)
+*
+* 在插件中使用:不支持
+*
+* 检查登录态是否过期。
+* 通过 wx.login 接口获得的用户登录态拥有一定的时效性。用户越久未使用小程序,用户登录态越有可能失效。反之如果用户一直在使用小程序,则用户登录态一直保持有效。具体时效逻辑由微信维护,对开发者透明。开发者只需要调用 wx.checkSession 接口检测当前用户登录态是否有效。
+*
+* 登录态过期后开发者可以再调用 wx.login 获取新的用户登录态。调用成功说明当前 session_key 未过期,调用失败说明 session_key 已过期。更多使用方法详见 [小程序登录](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html)。
+*
+* **示例代码**
+*
+* ```js
+wx.checkSession({
+  success () {
+    //session_key 未过期,并且在本生命周期一直有效
+  },
+  fail () {
+    // session_key 已经失效,需要重新执行登录流程
+    wx.login() //重新登录
+  }
+})
+``` */
+        checkSession<T extends CheckSessionOption = CheckSessionOption>(
+            option?: T
+        ): PromisifySuccessResult<T, CheckSessionOption>
+        /** [wx.chooseAddress(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/address/wx.chooseAddress.html)
+*
+* 需要基础库: `1.1.0`
+*
+* 在插件中使用:需要基础库 `2.16.1`
+*
+* 获取用户收货地址。调起用户编辑收货地址原生界面,并在编辑完成后返回用户选择的地址。
+*
+* **示例代码**
+*
+* [在微信开发者工具中查看示例](https://developers.weixin.qq.com/s/024hHnmd772y)
+* ```js
+wx.chooseAddress({
+  success (res) {
+    console.log(res.userName)
+    console.log(res.postalCode)
+    console.log(res.provinceName)
+    console.log(res.cityName)
+    console.log(res.countyName)
+    console.log(res.detailInfo)
+    console.log(res.nationalCode)
+    console.log(res.telNumber)
+  }
+})
+``` */
+        chooseAddress<T extends ChooseAddressOption = ChooseAddressOption>(
+            option?: T
+        ): PromisifySuccessResult<T, ChooseAddressOption>
+        /** [wx.chooseContact(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/contact/wx.chooseContact.html)
+         *
+         * 需要基础库: `2.8.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 拉起手机通讯录,选择联系人。 */
+        chooseContact(option?: ChooseContactOption): void
+        /** [wx.chooseImage(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.chooseImage.html)
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 从本地相册选择图片或使用相机拍照。此接口不再更新,建议使用 `wx.chooseMedia`。
+*
+* ****
+*
+* ```js
+wx.chooseImage({
+  count: 1,
+  sizeType: ['original', 'compressed'],
+  sourceType: ['album', 'camera'],
+  success (res) {
+    // tempFilePath可以作为img标签的src属性显示图片
+    const tempFilePaths = res.tempFilePaths
+  }
+})
+``` */
+        chooseImage<T extends ChooseImageOption = ChooseImageOption>(
+            option?: T
+        ): PromisifySuccessResult<T, ChooseImageOption>
+        /** [wx.chooseInvoice(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/invoice/wx.chooseInvoice.html)
+         *
+         * 需要基础库: `2.3.0`
+         *
+         * 在插件中使用:需要基础库 `2.16.1`
+         *
+         * 选择用户已有的发票。
+         *
+         * **通过 cardId 和 encryptCode 获得报销发票的信息**
+         *
+         * 请参考[微信电子发票文档](https://mp.weixin.qq.com/wiki?t=resource/res_main&id=21517918939oae3U)中,「查询报销发票信息」部分。
+         * 其中 `access_token` 的获取请参考[auth.getAccessToken](https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/access-token/auth.getAccessToken.html)文档 */
+        chooseInvoice<T extends ChooseInvoiceOption = ChooseInvoiceOption>(
+            option?: T
+        ): PromisifySuccessResult<T, ChooseInvoiceOption>
+        /** [wx.chooseInvoiceTitle(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/invoice/wx.chooseInvoiceTitle.html)
+*
+* 需要基础库: `1.5.0`
+*
+* 在插件中使用:需要基础库 `2.16.1`
+*
+* 选择用户的发票抬头。当前小程序必须关联一个公众号,且这个公众号是完成了[微信认证](https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1496554031_RD4xe)的,才能调用 chooseInvoiceTitle。
+*
+* **示例代码**
+*
+* [在微信开发者工具中查看示例](https://developers.weixin.qq.com/s/GJ4S9nmQ7x2E)
+*
+* ```js
+wx.chooseInvoiceTitle({
+  success(res) {}
+})
+``` */
+        chooseInvoiceTitle<
+            T extends ChooseInvoiceTitleOption = ChooseInvoiceTitleOption
+        >(
+            option?: T
+        ): PromisifySuccessResult<T, ChooseInvoiceTitleOption>
+        /** [wx.chooseLicensePlate(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/license-plate/wx.chooseLicensePlate.html)
+         *
+         * 需要基础库: `2.19.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 选择车牌号 */
+        chooseLicensePlate<
+            T extends ChooseLicensePlateOption = ChooseLicensePlateOption
+        >(
+            option?: T
+        ): PromisifySuccessResult<T, ChooseLicensePlateOption>
+        /** [wx.chooseLocation(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.chooseLocation.html)
+         *
+         * 在插件中使用:需要基础库 `1.9.6`
+         *
+         * 打开地图选择位置。
+         *
+         * **示例**
+         *
+         * ![](https://res.wx.qq.com/op_res/WDFC8aB4FI8rJ9oEmbYfbH_Fl3EIv91471YVxezVfLRESkUuCgfODZcbOoyteKU4j-OLZa2EFKY9BDPd3g-tfg) */
+        chooseLocation<T extends ChooseLocationOption = ChooseLocationOption>(
+            option: T
+        ): PromisifySuccessResult<T, ChooseLocationOption>
+        /** [wx.chooseMedia(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/video/wx.chooseMedia.html)
+*
+* 需要基础库: `2.10.0`
+*
+* 在插件中使用:需要基础库 `2.11.1`
+*
+* 拍摄或从手机相册中选择图片或视频。
+*
+* **示例代码**
+*
+* ```js
+wx.chooseMedia({
+  count: 9,
+  mediaType: ['image','video'],
+  sourceType: ['album', 'camera'],
+  maxDuration: 30,
+  camera: 'back',
+  success(res) {
+    console.log(res.tempFiles.tempFilePath)
+    console.log(res.tempFiles.size)
+  }
+})
+``` */
+        chooseMedia<T extends ChooseMediaOption = ChooseMediaOption>(
+            option: T
+        ): PromisifySuccessResult<T, ChooseMediaOption>
+        /** [wx.chooseMessageFile(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.chooseMessageFile.html)
+*
+* 需要基础库: `2.5.0`
+*
+* 在插件中使用:不支持
+*
+* 从客户端会话选择文件。
+*
+* ****
+*
+* ```js
+wx.chooseMessageFile({
+  count: 10,
+  type: 'image',
+  success (res) {
+    // tempFilePath可以作为img标签的src属性显示图片
+    const tempFilePaths = res.tempFiles
+  }
+})
+``` */
+        chooseMessageFile<
+            T extends ChooseMessageFileOption = ChooseMessageFileOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, ChooseMessageFileOption>
+        /** [wx.choosePoi(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.choosePoi.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 打开POI列表选择位置,支持模糊定位(精确到市)和精确定位混选。
+         *
+         * **示例**
+         *
+         * ![](https://res.wx.qq.com/op_res/lzDsNyBNifLczyLX0ms7ZpPQysgAgdhrQTGzzTQPiXkAB2HJIf1Slvl4rnN9I1q0AT3xqoGTg98jMsNexDLbbA) */
+        choosePoi<T extends ChoosePoiOption = ChoosePoiOption>(
+            option: T
+        ): PromisifySuccessResult<T, ChoosePoiOption>
+        /** [wx.chooseVideo(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/video/wx.chooseVideo.html)
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 拍摄视频或从手机相册中选视频。此接口不再更新,建议使用 `wx.chooseMedia`。
+*
+* **示例代码**
+*
+* ```js
+wx.chooseVideo({
+  sourceType: ['album','camera'],
+  maxDuration: 60,
+  camera: 'back',
+  success(res) {
+    console.log(res.tempFilePath)
+  }
+})
+``` */
+        chooseVideo<T extends ChooseVideoOption = ChooseVideoOption>(
+            option: T
+        ): PromisifySuccessResult<T, ChooseVideoOption>
+        /** [wx.clearStorage(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/storage/wx.clearStorage.html)
+*
+* 在插件中使用:不支持
+*
+* 清理本地数据缓存。缓存相关策略请查看 [存储](https://developers.weixin.qq.com/miniprogram/dev/framework/ability/storage.html)。
+*
+* **示例代码**
+*
+* ```js
+wx.clearStorage()
+```
+*
+* ```js
+try {
+  wx.clearStorageSync()
+} catch(e) {
+  // Do something when catch error
+}
+``` */
+        clearStorage<T extends ClearStorageOption = ClearStorageOption>(
+            option?: T
+        ): PromisifySuccessResult<T, ClearStorageOption>
+        /** [wx.clearStorageSync()](https://developers.weixin.qq.com/miniprogram/dev/api/storage/wx.clearStorageSync.html)
+*
+* 在插件中使用:不支持
+*
+* [wx.clearStorage](https://developers.weixin.qq.com/miniprogram/dev/api/storage/wx.clearStorage.html) 的同步版本
+*
+* **示例代码**
+*
+* ```js
+wx.clearStorage()
+```
+*
+* ```js
+try {
+  wx.clearStorageSync()
+} catch(e) {
+  // Do something when catch error
+}
+``` */
+        clearStorageSync(): void
+        /** [wx.closeBLEConnection(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.closeBLEConnection.html)
+*
+* 需要基础库: `1.1.0`
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 断开与蓝牙低功耗设备的连接。
+*
+* **示例代码**
+*
+* [在微信开发者工具中查看示例](https://developers.weixin.qq.com/s/pQU51zmz7a3K)
+* ```js
+wx.closeBLEConnection({
+  deviceId,
+  success (res) {
+    console.log(res)
+  }
+})
+``` */
+        closeBLEConnection<
+            T extends CloseBLEConnectionOption = CloseBLEConnectionOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, CloseBLEConnectionOption>
+        /** [wx.closeBluetoothAdapter(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth/wx.closeBluetoothAdapter.html)
+*
+* 需要基础库: `1.1.0`
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 关闭蓝牙模块。调用该方法将断开所有已建立的连接并释放系统资源。建议在使用蓝牙流程后,与 [wx.openBluetoothAdapter](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth/wx.openBluetoothAdapter.html) 成对调用。
+*
+* **示例代码**
+*
+* [在微信开发者工具中查看示例](https://developers.weixin.qq.com/s/pQU51zmz7a3K)
+* ```js
+wx.closeBluetoothAdapter({
+  success (res) {
+    console.log(res)
+  }
+})
+``` */
+        closeBluetoothAdapter<
+            T extends CloseBluetoothAdapterOption = CloseBluetoothAdapterOption
+        >(
+            option?: T
+        ): PromisifySuccessResult<T, CloseBluetoothAdapterOption>
+        /** [wx.closeSocket(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/network/websocket/wx.closeSocket.html)
+*
+* 在插件中使用:不支持
+*
+* 关闭 WebSocket 连接。**推荐使用 [SocketTask](https://developers.weixin.qq.com/miniprogram/dev/api/network/websocket/SocketTask.html) 的方式去管理 webSocket 链接,每一条链路的生命周期都更加可控。同时存在多个 webSocket 的链接的情况下使用 wx 前缀的方法可能会带来一些和预期不一致的情况。**
+*
+* **示例代码**
+*
+* ```js
+wx.connectSocket({
+  url: 'test.php'
+})
+
+//注意这里有时序问题,
+//如果 wx.connectSocket 还没回调 wx.onSocketOpen,而先调用 wx.closeSocket,那么就做不到关闭 WebSocket 的目的。
+//必须在 WebSocket 打开期间调用 wx.closeSocket 才能关闭。
+wx.onSocketOpen(function() {
+  wx.closeSocket()
+})
+
+wx.onSocketClose(function(res) {
+  console.log('WebSocket 已关闭!')
+})
+``` */
+        closeSocket<T extends CloseSocketOption = CloseSocketOption>(
+            option?: T
+        ): PromisifySuccessResult<T, CloseSocketOption>
+        /** [wx.compressImage(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.compressImage.html)
+*
+* 需要基础库: `2.4.0`
+*
+* 在插件中使用:需要基础库 `2.12.0`
+*
+* 压缩图片接口,可选压缩质量
+*
+* **示例代码**
+*
+* ```js
+wx.compressImage({
+  src: '', // 图片路径
+  quality: 80 // 压缩质量
+})
+``` */
+        compressImage<T extends CompressImageOption = CompressImageOption>(
+            option: T
+        ): PromisifySuccessResult<T, CompressImageOption>
+        /** [wx.compressVideo(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/video/wx.compressVideo.html)
+         *
+         * 需要基础库: `2.11.0`
+         *
+         * 在插件中使用:需要基础库 `2.11.1`
+         *
+         * 压缩视频接口。开发者可指定压缩质量 `quality` 进行压缩。当需要更精细的控制时,可指定 `bitrate`、`fps`、和 `resolution`,当 `quality` 传入时,这三个参数将被忽略。原视频的相关信息可通过 [getVideoInfo](https://developers.weixin.qq.com/miniprogram/dev/api/media/video/wx.getVideoInfo.html) 获取。 */
+        compressVideo<T extends CompressVideoOption = CompressVideoOption>(
+            option: T
+        ): PromisifySuccessResult<T, CompressVideoOption>
+        /** [wx.connectWifi(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/wifi/wx.connectWifi.html)
+*
+* 需要基础库: `1.6.0`
+*
+* 在插件中使用:需要基础库 `2.9.1`
+*
+* 连接 Wi-Fi。若已知 Wi-Fi 信息,可以直接利用该接口连接。仅 Android 与 iOS 11 以上版本支持。
+*
+* **示例代码**
+*
+* ```js
+wx.connectWifi({
+  SSID: '',
+  password: '',
+  success (res) {
+    console.log(res.errMsg)
+  }
+})
+```
+*
+* **注意**
+*
+* - Android 微信客户端 7.0.22 以上版本,connectWifi 的实现在 Android 10 及以上的手机无法生效,对于 Android 10 及以上版本,设备连接 wifi 之后,(受系统能力限制)其他进程无法使用当前连接的 wifi ;即连接上的 wifi 只对当前小程序有效,如果想要对整个系统生效,需要配置 maunal 来连接 wifi。
+* - iOS 系统底层没有给开发者提供因 wifi 密码错误而连接失败的事件,但用户可以收到密码错误的系统弹窗。建议开发者通过 onWifiConnected 事件来判断 wifi 是否连接成功;即设置定时器,若超时后仍没有 onWifiConnected 事件,则认定此次 wifi 连接无效。
+* - Android/iOS 在系统已经连上目标 wifi 的情况下,小程序再次连接目标 wifi,此时无论输入的密码是否正确,系统都会默认此次连接成功,且没有 onWifiConnected 事件。
+* - 安卓在 errCode: 12010 且 errMsg: can't gain current wifi 的情况下,此时 wifi 其实已经连接成功,但由于获取的 WifiInfo 信息不全,才会报错。(该项等待后续版本迭代修复) */
+        connectWifi<T extends ConnectWifiOption = ConnectWifiOption>(
+            option: T
+        ): PromisifySuccessResult<T, ConnectWifiOption>
+        /** [wx.createBLEConnection(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.createBLEConnection.html)
+*
+* 需要基础库: `1.1.0`
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 连接蓝牙低功耗设备。
+*
+* 若小程序在之前已有搜索过某个蓝牙设备,并成功建立连接,可直接传入之前搜索获取的 deviceId 直接尝试连接该设备,无需再次进行搜索操作。
+*
+* **注意**
+*
+* - 请保证尽量成对的调用 [wx.createBLEConnection](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.createBLEConnection.html) 和 [wx.closeBLEConnection](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.closeBLEConnection.html) 接口。安卓如果重复调用 [wx.createBLEConnection](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.createBLEConnection.html) 创建连接,有可能导致系统持有同一设备多个连接的实例,导致调用 `closeBLEConnection` 的时候并不能真正的断开与设备的连接。
+* - 蓝牙连接随时可能断开,建议监听 [wx.onBLEConnectionStateChange](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.onBLEConnectionStateChange.html) 回调事件,当蓝牙设备断开时按需执行重连操作
+* - 若对未连接的设备或已断开连接的设备调用数据读写操作的接口,会返回 10006 错误,建议进行重连操作。
+*
+* **示例代码**
+*
+* [在微信开发者工具中查看示例](https://developers.weixin.qq.com/s/pQU51zmz7a3K)
+* ```js
+wx.createBLEConnection({
+  deviceId,
+  success (res) {
+    console.log(res)
+  }
+})
+``` */
+        createBLEConnection<
+            T extends CreateBLEConnectionOption = CreateBLEConnectionOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, CreateBLEConnectionOption>
+        /** [wx.createBLEPeripheralServer(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/wx.createBLEPeripheralServer.html)
+         *
+         * 需要基础库: `2.10.3`
+         *
+         * 在插件中使用:不支持
+         *
+         * 建立本地作为蓝牙低功耗外围设备的服务端,可创建多个。 */
+        createBLEPeripheralServer<
+            T extends CreateBLEPeripheralServerOption = CreateBLEPeripheralServerOption
+        >(
+            option?: T
+        ): PromisifySuccessResult<T, CreateBLEPeripheralServerOption>
+        /** [wx.createBufferURL(ArrayBuffer|TypedArray buffer)](https://developers.weixin.qq.com/miniprogram/dev/api/storage/wx.createBufferURL.html)
+         *
+         * 需要基础库: `2.14.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 根据传入的 buffer 创建一个唯一的 URL 存在内存中 */
+        createBufferURL(
+            /** 需要存入内存的二进制数据 */
+            buffer:
+                | ArrayBuffer
+                | Int8Array
+                | Uint8Array
+                | Uint8ClampedArray
+                | Int16Array
+                | Uint16Array
+                | Int32Array
+                | Uint32Array
+                | Float32Array
+                | Float64Array
+        ): void
+        /** [wx.disableAlertBeforeUnload(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/interaction/wx.disableAlertBeforeUnload.html)
+         *
+         * 需要基础库: `2.12.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 关闭小程序页面返回询问对话框 */
+        disableAlertBeforeUnload(option?: DisableAlertBeforeUnloadOption): void
+        /** [wx.enableAlertBeforeUnload(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/interaction/wx.enableAlertBeforeUnload.html)
+         *
+         * 需要基础库: `2.12.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 开启小程序页面返回询问对话框 */
+        enableAlertBeforeUnload(option: EnableAlertBeforeUnloadOption): void
+        /** [wx.exitMiniProgram(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/navigate/wx.exitMiniProgram.html)
+         *
+         * 需要基础库: `2.17.3`
+         *
+         * 在插件中使用:不支持
+         *
+         * 退出当前小程序。必须有点击行为才能调用成功。 */
+        exitMiniProgram<
+            T extends ExitMiniProgramOption = ExitMiniProgramOption
+        >(
+            option?: T
+        ): PromisifySuccessResult<T, ExitMiniProgramOption>
+        /** [wx.exitVoIPChat(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/voip/wx.exitVoIPChat.html)
+         *
+         * 需要基础库: `2.7.0`
+         *
+         * 在插件中使用:需要基础库 `2.9.0`
+         *
+         * 退出(销毁)实时语音通话 */
+        exitVoIPChat<T extends ExitVoIPChatOption = ExitVoIPChatOption>(
+            option?: T
+        ): PromisifySuccessResult<T, ExitVoIPChatOption>
+        /** [wx.faceDetect(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/ai/face/wx.faceDetect.html)
+         *
+         * 需要基础库: `2.18.0`
+         *
+         * 在插件中使用:需要基础库 `2.21.3`
+         *
+         * 人脸识别,使用前需要通过 wx.initFaceDetect 进行一次初始化,推荐使用相机接口返回的帧数据 */
+        faceDetect(option: FaceDetectOption): void
+        /** [wx.getAvailableAudioSources(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/wx.getAvailableAudioSources.html)
+         *
+         * 需要基础库: `2.1.0`
+         *
+         * 在插件中使用:需要基础库 `2.15.0`
+         *
+         * 获取当前支持的音频输入源 */
+        getAvailableAudioSources<
+            T extends GetAvailableAudioSourcesOption = GetAvailableAudioSourcesOption
+        >(
+            option?: T
+        ): PromisifySuccessResult<T, GetAvailableAudioSourcesOption>
+        /** [wx.getBLEDeviceCharacteristics(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.getBLEDeviceCharacteristics.html)
+*
+* 需要基础库: `1.1.0`
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 获取蓝牙低功耗设备某个服务中所有特征 (characteristic)。
+*
+* **示例代码**
+*
+* [在微信开发者工具中查看示例](https://developers.weixin.qq.com/s/pQU51zmz7a3K)
+* ```js
+wx.getBLEDeviceCharacteristics({
+  // 这里的 deviceId 需要已经通过 wx.createBLEConnection 与对应设备建立链接
+  deviceId,
+  // 这里的 serviceId 需要在 wx.getBLEDeviceServices 接口中获取
+  serviceId,
+  success (res) {
+    console.log('device getBLEDeviceCharacteristics:', res.characteristics)
+  }
+})
+``` */
+        getBLEDeviceCharacteristics<
+            T extends GetBLEDeviceCharacteristicsOption = GetBLEDeviceCharacteristicsOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, GetBLEDeviceCharacteristicsOption>
+        /** [wx.getBLEDeviceRSSI(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.getBLEDeviceRSSI.html)
+         *
+         * 需要基础库: `2.11.0`
+         *
+         * 在插件中使用:需要基础库 `2.11.0`
+         *
+         * 获取蓝牙低功耗设备的信号强度 (Received Signal Strength Indication, RSSI)。 */
+        getBLEDeviceRSSI<
+            T extends GetBLEDeviceRSSIOption = GetBLEDeviceRSSIOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, GetBLEDeviceRSSIOption>
+        /** [wx.getBLEDeviceServices(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.getBLEDeviceServices.html)
+*
+* 需要基础库: `1.1.0`
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 获取蓝牙低功耗设备所有服务 (service)。
+*
+* **示例代码**
+*
+* [在微信开发者工具中查看示例](https://developers.weixin.qq.com/s/pQU51zmz7a3K)
+* ```js
+wx.getBLEDeviceServices({
+  // 这里的 deviceId 需要已经通过 wx.createBLEConnection 与对应设备建立连接
+  deviceId,
+  success (res) {
+    console.log('device services:', res.services)
+  }
+})
+``` */
+        getBLEDeviceServices<
+            T extends GetBLEDeviceServicesOption = GetBLEDeviceServicesOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, GetBLEDeviceServicesOption>
+        /** [wx.getBLEMTU(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.getBLEMTU.html)
+*
+* 需要基础库: `2.20.1`
+*
+* 在插件中使用:需要基础库 `2.20.1`
+*
+* 获取蓝牙低功耗的最大传输单元。需在 [wx.createBLEConnection](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.createBLEConnection.html) 调用成功后调用。
+*
+* **注意**
+*
+* - 小程序中 MTU 为 ATT_MTU,包含 Op-Code 和 Attribute Handle 的长度,实际可以传输的数据长度为 `ATT_MTU - 3`
+* - iOS 系统中 MTU 为固定值;安卓系统中,MTU 会在系统协商成功之后发生改变,建议使用 [wx.onBLEMTUChange](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.onBLEMTUChange.html) 监听。
+*
+* **示例代码**
+*
+* [在微信开发者工具中查看示例](https://developers.weixin.qq.com/s/pQU51zmz7a3K)
+* ```js
+wx.getBLEMTU({
+  deviceId: '',
+  writeType: 'write',
+  success (res) {
+    console.log(res)
+  }
+})
+``` */
+        getBLEMTU<T extends GetBLEMTUOption = GetBLEMTUOption>(
+            option: T
+        ): PromisifySuccessResult<T, GetBLEMTUOption>
+        /** [wx.getBackgroundAudioPlayerState(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/wx.getBackgroundAudioPlayerState.html)
+*
+* 在插件中使用:需要基础库 `1.9.6`
+* @deprecated 基础库版本 [1.2.0](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 起已废弃,请使用 [wx.getBackgroundAudioManager](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/wx.getBackgroundAudioManager.html) 替换
+*
+* 获取后台音乐播放状态。
+*
+* **示例代码**
+*
+* ```js
+wx.getBackgroundAudioPlayerState({
+  success (res) {
+    const status = res.status
+    const dataUrl = res.dataUrl
+    const currentPosition = res.currentPosition
+    const duration = res.duration
+    const downloadPercent = res.downloadPercent
+  }
+})
+``` */
+        getBackgroundAudioPlayerState<
+            T extends GetBackgroundAudioPlayerStateOption = GetBackgroundAudioPlayerStateOption
+        >(
+            option?: T
+        ): PromisifySuccessResult<T, GetBackgroundAudioPlayerStateOption>
+        /** [wx.getBackgroundFetchData(object object)](https://developers.weixin.qq.com/miniprogram/dev/api/storage/background-fetch/wx.getBackgroundFetchData.html)
+         *
+         * 需要基础库: `2.8.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 拉取 backgroundFetch 客户端缓存数据。
+         * 当调用接口时,若当次请求未结束,会先返回本地的旧数据(之前打开小程序时请求的),如果本地没有旧数据会返回失败,而不会等待请求完成。 */
+        getBackgroundFetchData<
+            T extends GetBackgroundFetchDataOption = GetBackgroundFetchDataOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, GetBackgroundFetchDataOption>
+        /** [wx.getBackgroundFetchToken(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/storage/background-fetch/wx.getBackgroundFetchToken.html)
+         *
+         * 需要基础库: `2.8.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 获取设置过的自定义登录态。若无,则返回 fail。 */
+        getBackgroundFetchToken<
+            T extends GetBackgroundFetchTokenOption = GetBackgroundFetchTokenOption
+        >(
+            option?: T
+        ): PromisifySuccessResult<T, GetBackgroundFetchTokenOption>
+        /** [wx.getBatteryInfo(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/battery/wx.getBatteryInfo.html)
+         *
+         * 在插件中使用:需要基础库 `2.15.0`
+         *
+         * 获取设备电量。同步 API [wx.getBatteryInfoSync](https://developers.weixin.qq.com/miniprogram/dev/api/device/battery/wx.getBatteryInfoSync.html) 在 iOS 上不可用。 */
+        getBatteryInfo<T extends GetBatteryInfoOption = GetBatteryInfoOption>(
+            option?: T
+        ): PromisifySuccessResult<T, GetBatteryInfoOption>
+        /** [wx.getBeacons(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/ibeacon/wx.getBeacons.html)
+         *
+         * 需要基础库: `1.2.0`
+         *
+         * 在插件中使用:需要基础库 `1.9.6`
+         *
+         * 获取所有已搜索到的 Beacon 设备 */
+        getBeacons<T extends GetBeaconsOption = GetBeaconsOption>(
+            option?: T
+        ): PromisifySuccessResult<T, GetBeaconsOption>
+        /** [wx.getBluetoothAdapterState(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth/wx.getBluetoothAdapterState.html)
+*
+* 需要基础库: `1.1.0`
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 获取本机蓝牙适配器状态。
+*
+* **示例代码**
+*
+* [在微信开发者工具中查看示例](https://developers.weixin.qq.com/s/pQU51zmz7a3K)
+* ```js
+wx.getBluetoothAdapterState({
+  success (res) {
+    console.log(res)
+  }
+})
+``` */
+        getBluetoothAdapterState<
+            T extends GetBluetoothAdapterStateOption = GetBluetoothAdapterStateOption
+        >(
+            option?: T
+        ): PromisifySuccessResult<T, GetBluetoothAdapterStateOption>
+        /** [wx.getBluetoothDevices(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth/wx.getBluetoothDevices.html)
+*
+* 需要基础库: `1.1.0`
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 获取在蓝牙模块生效期间所有搜索到的蓝牙设备。包括已经和本机处于连接状态的设备。
+*
+* **示例代码**
+*
+* [在微信开发者工具中查看示例](https://developers.weixin.qq.com/s/pQU51zmz7a3K)
+*
+* ```js
+// ArrayBuffer转16进度字符串示例
+function ab2hex(buffer) {
+  var hexArr = Array.prototype.map.call(
+    new Uint8Array(buffer),
+    function(bit) {
+      return ('00' + bit.toString(16)).slice(-2)
+    }
+  )
+  return hexArr.join('');
+}
+wx.getBluetoothDevices({
+  success: function (res) {
+    console.log(res)
+    if (res.devices[0]) {
+      console.log(ab2hex(res.devices[0].advertisData))
+    }
+  }
+})
+```
+*
+* **注意**
+*
+* - 该接口获取到的设备列表为**蓝牙模块生效期间所有搜索到的蓝牙设备**,若在蓝牙模块使用流程结束后未及时调用 [wx.closeBluetoothAdapter](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth/wx.closeBluetoothAdapter.html) 释放资源,会存在调用该接口会返回之前的蓝牙使用流程中搜索到的蓝牙设备,可能设备已经不在用户身边,无法连接。 */
+        getBluetoothDevices<
+            T extends GetBluetoothDevicesOption = GetBluetoothDevicesOption
+        >(
+            option?: T
+        ): PromisifySuccessResult<T, GetBluetoothDevicesOption>
+        /** [wx.getChannelsLiveInfo(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/channels/wx.getChannelsLiveInfo.html)
+         *
+         * 需要基础库: `2.15.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 获取视频号直播信息 */
+        getChannelsLiveInfo(option: GetChannelsLiveInfoOption): void
+        /** [wx.getChannelsLiveNoticeInfo(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/channels/wx.getChannelsLiveNoticeInfo.html)
+         *
+         * 需要基础库: `2.19.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 获取视频号直播预告信息 */
+        getChannelsLiveNoticeInfo(option: GetChannelsLiveNoticeInfoOption): void
+        /** [wx.getClipboardData(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/clipboard/wx.getClipboardData.html)
+*
+* 需要基础库: `1.1.0`
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 获取系统剪贴板的内容
+*
+* **示例代码**
+*
+* ```js
+wx.getClipboardData({
+  success (res){
+    console.log(res.data)
+  }
+})
+``` */
+        getClipboardData<
+            T extends GetClipboardDataOption = GetClipboardDataOption
+        >(
+            option?: T
+        ): PromisifySuccessResult<T, GetClipboardDataOption>
+        /** [wx.getConnectedBluetoothDevices(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth/wx.getConnectedBluetoothDevices.html)
+*
+* 需要基础库: `1.1.0`
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 根据主服务 UUID 获取已连接的蓝牙设备。
+*
+* **示例代码**
+*
+* [在微信开发者工具中查看示例](https://developers.weixin.qq.com/s/pQU51zmz7a3K)
+* ```js
+wx.getConnectedBluetoothDevices({
+  services: ['FEE7'],
+  success (res) {
+    console.log(res)
+  }
+})
+``` */
+        getConnectedBluetoothDevices<
+            T extends GetConnectedBluetoothDevicesOption = GetConnectedBluetoothDevicesOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, GetConnectedBluetoothDevicesOption>
+        /** [wx.getConnectedWifi(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/wifi/wx.getConnectedWifi.html)
+         *
+         * 需要基础库: `1.6.0`
+         *
+         * 在插件中使用:需要基础库 `2.9.1`
+         *
+         * 获取已连接中的 Wi-Fi 信息。 */
+        getConnectedWifi<
+            T extends GetConnectedWifiOption = GetConnectedWifiOption
+        >(
+            option?: T
+        ): PromisifySuccessResult<T, GetConnectedWifiOption>
+        /** [wx.getExtConfig(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/ext/wx.getExtConfig.html)
+*
+* 需要基础库: `1.1.0`
+*
+* 在插件中使用:不支持
+*
+* 获取[第三方平台](https://developers.weixin.qq.com/miniprogram/dev/devtools/ext.html)自定义的数据字段。
+*
+* **Tips**
+*
+* 1. 本接口暂时无法通过 [wx.canIUse](https://developers.weixin.qq.com/miniprogram/dev/api/base/wx.canIUse.html) 判断是否兼容,开发者需要自行判断 [wx.getExtConfig](https://developers.weixin.qq.com/miniprogram/dev/api/ext/wx.getExtConfig.html) 是否存在来兼容
+*
+* ****
+*
+* ```js
+if (wx.getExtConfig) {
+  wx.getExtConfig({
+    success (res) {
+      console.log(res.extConfig)
+    }
+  })
+}
+``` */
+        getExtConfig<T extends GetExtConfigOption = GetExtConfigOption>(
+            option?: T
+        ): PromisifySuccessResult<T, GetExtConfigOption>
+        /** [wx.getFileInfo(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/file/wx.getFileInfo.html)
+*
+* 需要基础库: `1.4.0`
+*
+* 在插件中使用:不支持
+*
+* 获取文件信息
+*
+* **示例代码**
+*
+* ```js
+wx.getFileInfo({
+  success (res) {
+    console.log(res.size)
+    console.log(res.digest)
+  }
+})
+``` */
+        getFileInfo<T extends WxGetFileInfoOption = WxGetFileInfoOption>(
+            option: T
+        ): PromisifySuccessResult<T, WxGetFileInfoOption>
+        /** [wx.getGroupEnterInfo(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/group/wx.getGroupEnterInfo.html)
+*
+* 需要基础库: `2.10.4`
+*
+* 在插件中使用:不支持
+*
+* 获取微信群聊场景下的小程序启动信息。群聊场景包括群聊小程序消息卡片、群待办、群工具。可用于获取当前群的 opengid。
+* ## 注意事项
+*  - 基础库 v2.10.4 开始支持获取群工具小程序启动信息
+*  - 基础库 v2.17.3 开始支持获取群聊小程序消息卡片、群待办小程序启动信息
+*
+* **示例代码**
+*
+* ```js
+wx.getGroupEnterInfo({
+  success(res) {
+    // res
+    {
+      errMsg: 'getGroupEnterInfo:ok',
+      encryptedData: '',
+      iv: ''
+    }
+  },
+  fail() {
+
+  }
+})
+```
+*
+* 敏感数据有两种获取方式,一是使用 [加密数据解密算法](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html#加密数据解密算法) 。
+* 获取得到的开放数据为以下 json 结构(其中 opengid 为当前群的唯一标识):
+*
+* ```json
+{
+ "opengid": "OPENGID"
+}
+```
+*
+* **Tips**
+*
+* - 如需要展示群名称,小程序可以使用[开放数据组件](https://developers.weixin.qq.com/miniprogram/dev/component/open-data.html)
+* - 小游戏可以通过 `wx.getGroupInfo` 接口获取群名称 */
+        getGroupEnterInfo(option: GetGroupEnterInfoOption): void
+        /** [wx.getHCEState(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/wx.getHCEState.html)
+*
+* 需要基础库: `1.7.0`
+*
+* 在插件中使用:需要基础库 `2.1.0`
+*
+* 判断当前设备是否支持 HCE 能力。
+*
+* **示例代码**
+*
+* ```js
+wx.getHCEState({
+  success (res) {
+    console.log(res.errCode)
+  }
+})
+``` */
+        getHCEState<T extends GetHCEStateOption = GetHCEStateOption>(
+            option?: T
+        ): PromisifySuccessResult<T, GetHCEStateOption>
+        /** [wx.getImageInfo(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.getImageInfo.html)
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 获取图片信息。网络图片需先配置download域名才能生效。
+*
+* **示例代码**
+*
+* [在微信开发者工具中查看示例](https://developers.weixin.qq.com/s/Kd47Sbmr6yYu)
+*
+* ```js
+wx.getImageInfo({
+  src: 'images/a.jpg',
+  success (res) {
+    console.log(res.width)
+    console.log(res.height)
+  }
+})
+
+wx.chooseImage({
+  success (res) {
+    wx.getImageInfo({
+      src: res.tempFilePaths[0],
+      success (res) {
+        console.log(res.width)
+        console.log(res.height)
+      }
+    })
+  }
+})
+``` */
+        getImageInfo<T extends GetImageInfoOption = GetImageInfoOption>(
+            option: T
+        ): PromisifySuccessResult<T, GetImageInfoOption>
+        /** [wx.getLocalIPAddress(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/network/wx.getLocalIPAddress.html)
+*
+* 需要基础库: `2.20.1`
+*
+* 在插件中使用:需要基础库 `2.21.3`
+*
+* 获取局域网IP地址
+*
+* **示例代码**
+*
+* ```js
+wx.getLocalIPAddress({
+  success (res) {
+    const localip = res.localip
+  }
+})
+``` */
+        getLocalIPAddress(option: GetLocalIPAddressOption): void
+        /** [wx.getLocation(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.getLocation.html)
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 获取当前的地理位置、速度。当用户离开小程序后,此接口无法调用。开启高精度定位,接口耗时会增加,可指定 highAccuracyExpireTime 作为超时时间。地图相关使用的坐标格式应为 gcj02。高频率调用会导致耗电,如有需要可使用持续定位接口 `wx.onLocationChange`。基础库 `2.17.0` 版本起 `wx.getLocation` 增加调用频率限制,[相关公告](https://developers.weixin.qq.com/community/develop/doc/000aee91a98d206bc6dbe722b51801)。
+*
+* **示例代码**
+*
+*  ```js
+ wx.getLocation({
+  type: 'wgs84',
+  success (res) {
+    const latitude = res.latitude
+    const longitude = res.longitude
+    const speed = res.speed
+    const accuracy = res.accuracy
+  }
+})
+ ```
+*
+* **注意**
+*
+* - `2.17.0 起 `wx.getLocation` 增加调用频率限制,[相关公告](https://developers.weixin.qq.com/community/develop/doc/000aee91a98d206bc6dbe722b51801)
+* - 工具中定位模拟使用IP定位,可能会有一定误差。且工具目前仅支持 gcj02 坐标。
+* - 使用第三方服务进行逆地址解析时,请确认第三方服务默认的坐标系,正确进行坐标转换。 */
+        getLocation<T extends GetLocationOption = GetLocationOption>(
+            option: T
+        ): PromisifySuccessResult<T, GetLocationOption>
+        /** [wx.getNetworkType(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/network/wx.getNetworkType.html)
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 获取网络类型
+*
+* **示例代码**
+*
+* ```js
+wx.getNetworkType({
+  success (res) {
+    const networkType = res.networkType
+  }
+})
+``` */
+        getNetworkType<T extends GetNetworkTypeOption = GetNetworkTypeOption>(
+            option?: T
+        ): PromisifySuccessResult<T, GetNetworkTypeOption>
+        /** [wx.getRandomValues(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/crypto/wx.getRandomValues.html)
+*
+* 需要基础库: `2.15.0`
+*
+* 在插件中使用:不支持
+*
+* 获取密码学安全随机数
+*
+* **示例代码**
+*
+* ```js
+wx.getRandomValues({
+  length: 6 // 生成 6 个字节长度的随机数,
+  success: res => {
+    console.log(wx.arrayBufferToBase64(res.randomValues)) // 转换为 base64 字符串后打印
+  }
+})
+``` */
+        getRandomValues<
+            T extends GetRandomValuesOption = GetRandomValuesOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, GetRandomValuesOption>
+        /** [wx.getSavedFileInfo(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/file/wx.getSavedFileInfo.html)
+*
+* 在插件中使用:不支持
+*
+* 获取本地文件的文件信息。此接口只能用于获取已保存到本地的文件,若需要获取临时文件信息,请使用 [wx.getFileInfo()](https://developers.weixin.qq.com/miniprogram/dev/api/file/wx.getFileInfo.html) 接口。
+*
+* **示例代码**
+*
+* ```js
+wx.getSavedFileList({
+  success (res) {
+    console.log(res.fileList)
+  }
+})
+``` */
+        getSavedFileInfo<
+            T extends GetSavedFileInfoOption = GetSavedFileInfoOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, GetSavedFileInfoOption>
+        /** [wx.getSavedFileList(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/file/wx.getSavedFileList.html)
+*
+* 在插件中使用:不支持
+*
+* 获取该小程序下已保存的本地缓存文件列表
+*
+* **示例代码**
+*
+* ```js
+wx.getSavedFileList({
+  success (res) {
+    console.log(res.fileList)
+  }
+})
+``` */
+        getSavedFileList<
+            T extends WxGetSavedFileListOption = WxGetSavedFileListOption
+        >(
+            option?: T
+        ): PromisifySuccessResult<T, WxGetSavedFileListOption>
+        /** [wx.getScreenBrightness(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/screen/wx.getScreenBrightness.html)
+         *
+         * 需要基础库: `1.2.0`
+         *
+         * 在插件中使用:需要基础库 `1.9.6`
+         *
+         * 获取屏幕亮度
+         *
+         * **说明**
+         *
+         * - 若安卓系统设置中开启了自动调节亮度功能,则屏幕亮度会根据光线自动调整,该接口仅能获取自动调节亮度之前的值,而非实时的亮度值。 */
+        getScreenBrightness<
+            T extends GetScreenBrightnessOption = GetScreenBrightnessOption
+        >(
+            option?: T
+        ): PromisifySuccessResult<T, GetScreenBrightnessOption>
+        /** [wx.getSelectedTextRange(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/keyboard/wx.getSelectedTextRange.html)
+*
+* 需要基础库: `2.7.0`
+*
+* 在插件中使用:不支持
+*
+* 在input、textarea等focus之后,获取输入框的光标位置。注意:只有在focus的时候调用此接口才有效。
+*
+* **示例代码**
+*
+* ```js
+wx.getSelectedTextRange({
+  complete: res => {
+    console.log('getSelectedTextRange res', res.start, res.end)
+  }
+})
+``` */
+        getSelectedTextRange<
+            T extends GetSelectedTextRangeOption = GetSelectedTextRangeOption
+        >(
+            option?: T
+        ): PromisifySuccessResult<T, GetSelectedTextRangeOption>
+        /** [wx.getSetting(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/setting/wx.getSetting.html)
+*
+* 需要基础库: `1.2.0`
+*
+* 在插件中使用:需要基础库 `2.6.3`
+*
+* 在插件中使用时,接口有以下不同:
+* - `withSubscriptions` 无效(插件暂无订阅消息)
+* - 返回值中的 `authSetting` 字段中是插件的权限(如用户信息功能页授权)
+* - [2.14.0](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 起返回值中有 `miniprogramAuthSetting` 字段,内容等于当前小程序 `getSetting` 的结果(不含订阅状态)
+*
+* 获取用户的当前设置。**返回值中只会出现小程序已经向用户请求过的[权限](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/authorize.html)**。
+*
+* **示例代码**
+*
+* ```js
+wx.getSetting({
+  success (res) {
+    console.log(res.authSetting)
+    // res.authSetting = {
+    //   "scope.userInfo": true,
+    //   "scope.userLocation": true
+    // }
+  }
+})
+```
+*
+* ```js
+wx.getSetting({
+  withSubscriptions: true,
+  success (res) {
+    console.log(res.authSetting)
+    // res.authSetting = {
+    //   "scope.userInfo": true,
+    //   "scope.userLocation": true
+    // }
+    console.log(res.subscriptionsSetting)
+    // res.subscriptionsSetting = {
+    //   mainSwitch: true, // 订阅消息总开关
+    //   itemSettings: {   // 每一项开关
+    //     SYS_MSG_TYPE_INTERACTIVE: 'accept', // 小游戏系统订阅消息
+    //     SYS_MSG_TYPE_RANK: 'accept'
+    //     zun-LzcQyW-edafCVvzPkK4de2Rllr1fFpw2A_x0oXE: 'reject', // 普通一次性订阅消息
+    //     ke_OZC_66gZxALLcsuI7ilCJSP2OJ2vWo2ooUPpkWrw: 'ban',
+    //   }
+    // }
+  }
+})
+``` */
+        getSetting<T extends GetSettingOption = GetSettingOption>(
+            option?: T
+        ): PromisifySuccessResult<T, GetSettingOption>
+        /** [wx.getShareInfo(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/share/wx.getShareInfo.html)
+*
+* 需要基础库: `1.1.0`
+*
+* 在插件中使用:需要基础库 `2.1.0`
+*
+* 在插件中使用时,只能在当前插件的页面中调用
+*
+* 获取转发详细信息
+*
+* **示例代码**
+*
+* 敏感数据获取方式 [加密数据解密算法](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html#加密数据解密算法) 。
+* 获取得到的开放数据为以下 json 结构(其中 openGId 为当前群的唯一标识):
+*
+* ```json
+{
+ "openGId": "OPENGID"
+}
+```
+*
+* **Tips**
+*
+* - 如需要展示群名称,小程序可以使用 [开放数据组件](https://developers.weixin.qq.com/miniprogram/dev/component/open-data.html)
+* - 小游戏可以通过 [`wx.getGroupInfo`](#) 接口获取群名称 */
+        getShareInfo<T extends GetShareInfoOption = GetShareInfoOption>(
+            option: T
+        ): PromisifySuccessResult<T, GetShareInfoOption>
+        /** [wx.getStorage(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/storage/wx.getStorage.html)
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 从本地缓存中异步获取指定 key 的内容。缓存相关策略请查看 [存储](https://developers.weixin.qq.com/miniprogram/dev/framework/ability/storage.html)。
+*
+* **示例代码**
+*
+* ```js
+wx.getStorage({
+  key: 'key',
+  success (res) {
+    console.log(res.data)
+  }
+})
+```
+*
+* ```js
+try {
+  var value = wx.getStorageSync('key')
+  if (value) {
+    // Do something with return value
+  }
+} catch (e) {
+  // Do something when catch error
+}
+```
+*
+* ```js
+// 开启加密存储
+wx.setStorage({
+  key: "key",
+  data: "value",
+  encrypt: true, // 若开启加密存储,setStorage 和 getStorage 需要同时声明 encrypt 的值为 true
+  success() {
+    wx.getStorage({
+      key: "key",
+      encrypt: true, // 若开启加密存储,setStorage 和 getStorage 需要同时声明 encrypt 的值为 true
+      success(res) {
+        console.log(res.data)
+      }
+    })
+  }
+})
+``` */
+        getStorage<
+            T = any,
+            U extends GetStorageOption<T> = GetStorageOption<T>
+        >(
+            option: U
+        ): PromisifySuccessResult<U, GetStorageOption<T>>
+        /** [wx.getStorageInfo(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/storage/wx.getStorageInfo.html)
+*
+* 在插件中使用:不支持
+*
+* 异步获取当前storage的相关信息。缓存相关策略请查看 [存储](https://developers.weixin.qq.com/miniprogram/dev/framework/ability/storage.html)。
+*
+* **示例代码**
+*
+* ```js
+wx.getStorageInfo({
+  success (res) {
+    console.log(res.keys)
+    console.log(res.currentSize)
+    console.log(res.limitSize)
+  }
+})
+```
+*
+* ```js
+try {
+  const res = wx.getStorageInfoSync()
+  console.log(res.keys)
+  console.log(res.currentSize)
+  console.log(res.limitSize)
+} catch (e) {
+  // Do something when catch error
+}
+``` */
+        getStorageInfo<T extends GetStorageInfoOption = GetStorageInfoOption>(
+            option?: T
+        ): PromisifySuccessResult<T, GetStorageInfoOption>
+        /** [wx.getSystemInfo(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/base/system/wx.getSystemInfo.html)
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 获取系统信息。**由于历史原因,wx.getSystemInfo 是异步的调用格式,但是是同步返回,需要异步获取系统信息请使用 [wx.getSystemInfoAsync](https://developers.weixin.qq.com/miniprogram/dev/api/base/system/wx.getSystemInfoAsync.html)。**
+*
+* **示例代码**
+*
+* [在微信开发者工具中查看示例](https://developers.weixin.qq.com/s/WkUCgXmS7mqO)
+*
+* ```js
+wx.getSystemInfo({
+  success (res) {
+    console.log(res.model)
+    console.log(res.pixelRatio)
+    console.log(res.windowWidth)
+    console.log(res.windowHeight)
+    console.log(res.language)
+    console.log(res.version)
+    console.log(res.platform)
+  }
+})
+```
+*
+* ```js
+try {
+  const res = wx.getSystemInfoSync()
+  console.log(res.model)
+  console.log(res.pixelRatio)
+  console.log(res.windowWidth)
+  console.log(res.windowHeight)
+  console.log(res.language)
+  console.log(res.version)
+  console.log(res.platform)
+} catch (e) {
+  // Do something when catch error
+}
+``` */
+        getSystemInfo<T extends GetSystemInfoOption = GetSystemInfoOption>(
+            option?: T
+        ): PromisifySuccessResult<T, GetSystemInfoOption>
+        /** [wx.getSystemInfoAsync(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/base/system/wx.getSystemInfoAsync.html)
+*
+* 需要基础库: `2.14.1`
+*
+* 在插件中使用:不支持
+*
+* 异步获取系统信息。需要一定的微信客户端版本支持,在不支持的客户端上,会使用同步实现来返回。
+*
+* **示例代码**
+*
+* [在微信开发者工具中查看示例](https://developers.weixin.qq.com/s/WkUCgXmS7mqO)
+*
+* ```js
+wx.getSystemInfoAsync({
+  success (res) {
+    console.log(res.model)
+    console.log(res.pixelRatio)
+    console.log(res.windowWidth)
+    console.log(res.windowHeight)
+    console.log(res.language)
+    console.log(res.version)
+    console.log(res.platform)
+  }
+})
+``` */
+        getSystemInfoAsync(option?: GetSystemInfoAsyncOption): void
+        /** [wx.getUserInfo(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/user-info/wx.getUserInfo.html)
+*
+* 在插件中使用:需要基础库 `2.3.1`
+*
+* 在插件中使用时,需要在用户信息功能页中获得用户授权或满足一定条件后调用。否则将返回 fail。详见 [用户信息功能页](https://developers.weixin.qq.com/miniprogram/dev/framework/plugin/functional-pages/user-info.html)
+*
+* 获取用户信息。
+*
+* **接口调整说明**
+*
+* 为优化用户登录体验,该接口将进行调整,详见 [用户信息接口调整说明](https://developers.weixin.qq.com/community/develop/doc/000cacfa20ce88df04cb468bc52801)
+*
+* **示例代码**
+*
+* ```js
+// 必须是在用户已经授权的情况下调用
+wx.getUserInfo({
+  success: function(res) {
+    var userInfo = res.userInfo
+    var nickName = userInfo.nickName
+    var avatarUrl = userInfo.avatarUrl
+    var gender = userInfo.gender //性别 0:未知、1:男、2:女
+    var province = userInfo.province
+    var city = userInfo.city
+    var country = userInfo.country
+  }
+})
+```
+*
+* 敏感数据有两种获取方式:
+* 1. 使用 [加密数据解密算法](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html#加密数据解密算法)
+* 2. 使用 [云调用直接获取开放数据](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html#云调用直接获取开放数据)
+* 获取得到的开放数据为以下 json 结构:
+*
+* ```json
+{
+  "openId": "OPENID",
+  "nickName": "NICKNAME",
+  "gender": GENDER,
+  "city": "CITY",
+  "province": "PROVINCE",
+  "country": "COUNTRY",
+  "avatarUrl": "AVATARURL",
+  "unionId": "UNIONID",
+  "watermark": {
+    "appid":"APPID",
+    "timestamp":TIMESTAMP
+  }
+}
+```
+*
+* **小程序用户信息组件示例代码**
+*
+* ```html
+* <!-- 如果只是展示用户头像昵称,可以使用 <open-data /> 组件 -->
+* <open-data type="userAvatarUrl"></open-data>
+* <open-data type="userNickName"></open-data>
+* <!-- 需要使用 button 来授权登录 -->
+* <button wx:if="{{canIUse}}" open-type="getUserInfo" bindgetuserinfo="bindGetUserInfo">授权登录</button>
+* <view wx:else>请升级微信版本</view>
+* ```
+*
+* ```js
+Page({
+  data: {
+    canIUse: wx.canIUse('button.open-type.getUserInfo')
+  },
+  onLoad: function() {
+    // 查看是否授权
+    wx.getSetting({
+      success (res){
+        if (res.authSetting['scope.userInfo']) {
+          // 已经授权,可以直接调用 getUserInfo 获取头像昵称
+          wx.getUserInfo({
+            success: function(res) {
+              console.log(res.userInfo)
+            }
+          })
+        }
+      }
+    })
+  },
+  bindGetUserInfo (e) {
+    console.log(e.detail.userInfo)
+  }
+})
+``` */
+        getUserInfo<T extends GetUserInfoOption = GetUserInfoOption>(
+            option: T
+        ): PromisifySuccessResult<T, GetUserInfoOption>
+        /** [wx.getUserProfile(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/user-info/wx.getUserProfile.html)
+*
+* 需要基础库: `2.10.4`
+*
+* 在插件中使用:不支持
+*
+* 获取用户信息。页面产生点击事件(例如 `button` 上 `bindtap` 的回调中)后才可调用,每次请求都会弹出授权窗口,用户同意后返回 `userInfo`。该接口用于替换 `wx.getUserInfo`,详见 [用户信息接口调整说明](https://developers.weixin.qq.com/community/develop/doc/000cacfa20ce88df04cb468bc52801?highLine=login)。
+*
+* **示例代码**
+*
+* [在微信开发者工具中查看示例](https://developers.weixin.qq.com/s/tsJaq2mP7Mp4)
+*
+* **Bug & Tip**
+*
+* 1. `tip`:仅小程序中 `wx.getUserInfo` 接口进行调整,小游戏中不受影响;
+* 2. `tip`:开发者工具中仅 2.10.4 及以上版本可访问 `wx.getUserProfile` 接口,在真机上可参考示例代码进行判断,无需根据版本号或者 `canIUse` 进行条件。
+* 3. `tip`:`wx.getUserProfile` 返回的加密数据中不包含 `openId` 和 `unionId` 字段。
+* 4. `bug`:开发者工具中 `2.10.4`~`2.16.1` 基础库版本通过 `<button open-type="getUserInfo">` 会返回真实数据,真机上此区间会按照公告返回匿名数据。
+*
+* ```html
+* <view class="container">
+*   <view class="userinfo">
+*     <block wx:if="{{!hasUserInfo}}">
+*       <button wx:if="{{canIUseGetUserProfile}}" bindtap="getUserProfile"> 获取头像昵称 </button>
+*       <button wx:else open-type="getUserInfo" bindgetuserinfo="getUserInfo"> 获取头像昵称 </button>
+*     </block>
+*     <block wx:else>
+*       <image bindtap="bindViewTap" class="userinfo-avatar" src="{{userInfo.avatarUrl}}" mode="cover"></image>
+*       <text class="userinfo-nickname">{{userInfo.nickName}}</text>
+*     </block>
+*   </view>
+* </view>
+* ```
+*
+* ```js
+Page({
+  data: {
+    userInfo: {},
+    hasUserInfo: false,
+    canIUseGetUserProfile: false,
+  },
+  onLoad() {
+    if (wx.getUserProfile) {
+      this.setData({
+        canIUseGetUserProfile: true
+      })
+    }
+  },
+  getUserProfile(e) {
+    // 推荐使用wx.getUserProfile获取用户信息,开发者每次通过该接口获取用户个人信息均需用户确认
+    // 开发者妥善保管用户快速填写的头像昵称,避免重复弹窗
+    wx.getUserProfile({
+      desc: '用于完善会员资料', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
+      success: (res) => {
+        this.setData({
+          userInfo: res.userInfo,
+          hasUserInfo: true
+        })
+      }
+    })
+  },
+  getUserInfo(e) {
+    // 不推荐使用getUserInfo获取用户信息,预计自2021年4月13日起,getUserInfo将不再弹出弹窗,并直接返回匿名的用户个人信息
+    this.setData({
+      userInfo: e.detail.userInfo,
+      hasUserInfo: true
+    })
+  },
+})
+``` */
+        getUserProfile<T extends GetUserProfileOption = GetUserProfileOption>(
+            option: T
+        ): PromisifySuccessResult<T, GetUserProfileOption>
+        /** [wx.getVideoInfo(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/video/wx.getVideoInfo.html)
+         *
+         * 需要基础库: `2.11.0`
+         *
+         * 在插件中使用:支持
+         *
+         * 获取视频详细信息。 */
+        getVideoInfo<T extends GetVideoInfoOption = GetVideoInfoOption>(
+            option: T
+        ): PromisifySuccessResult<T, GetVideoInfoOption>
+        /** [wx.getWeRunData(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/werun/wx.getWeRunData.html)
+*
+* 需要基础库: `1.2.0`
+*
+* 在插件中使用:不支持
+*
+* 获取用户过去三十天微信运动步数。需要先调用 [wx.login](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/login/wx.login.html) 接口。步数信息会在用户主动进入小程序时更新。
+*
+* **示例代码**
+*
+* ```js
+wx.getWeRunData({
+  success (res) {
+    // 拿 encryptedData 到开发者后台解密开放数据
+    const encryptedData = res.encryptedData
+    // 或拿 cloudID 通过云调用直接获取开放数据
+    const cloudID = res.cloudID
+  }
+})
+```
+*
+* **开放数据 JSON 结构**
+*
+* 敏感数据有两种获取方式,一是使用 [加密数据解密算法](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html#加密数据解密算法) 。
+* 获取得到的开放数据为以下 json 结构:
+*
+* ```json
+{
+  "stepInfoList": [
+    {
+      "timestamp": 1445866601,
+      "step": 100
+    },
+    {
+      "timestamp": 1445876601,
+      "step": 120
+    }
+  ]
+}
+```
+*
+* stepInfoList 中,每一项结构如下:
+*
+* | 属性 | 类型 | 说明 |
+* | --- | ---- | --- |
+* | timestamp | number | 时间戳,表示数据对应的时间 |
+* | step | number | 微信运动步数 | */
+        getWeRunData<T extends GetWeRunDataOption = GetWeRunDataOption>(
+            option?: T
+        ): PromisifySuccessResult<T, GetWeRunDataOption>
+        /** [wx.getWifiList(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/wifi/wx.getWifiList.html)
+         *
+         * 需要基础库: `1.6.0`
+         *
+         * 在插件中使用:需要基础库 `2.9.1`
+         *
+         * 请求获取 Wi-Fi 列表。`wifiList` 数据会在 [`onGetWifiList`](#) 注册的回调中返回。 **Android 调用前需要 [用户授权](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/authorize.html) scope.userLocation。**
+         *
+         * iOS 上将跳转到系统设置中的微信设置页,需要用户手动进入「无线局域网」设置页,并在系统扫描到设备后,小程序才能收到 onGetWifiList 回调。Android 不会跳转。
+         *
+         * **注意**
+         *
+         * 因系统问题,本方法在 iOS 11.0 及 11.1 两个版本失效。但在 iOS 11.2 中已修复。 */
+        getWifiList<T extends GetWifiListOption = GetWifiListOption>(
+            option?: T
+        ): PromisifySuccessResult<T, GetWifiListOption>
+        /** [wx.hideHomeButton(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/navigation-bar/wx.hideHomeButton.html)
+         *
+         * 需要基础库: `2.8.3`
+         *
+         * 在插件中使用:不支持
+         *
+         * 隐藏返回首页按钮。微信7.0.7版本起,当用户打开的小程序最底层页面是非首页时,默认展示“返回首页”按钮,开发者可在页面 onShow 中调用 hideHomeButton 进行隐藏。 */
+        hideHomeButton<T extends HideHomeButtonOption = HideHomeButtonOption>(
+            option?: T
+        ): PromisifySuccessResult<T, HideHomeButtonOption>
+        /** [wx.hideKeyboard(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/keyboard/wx.hideKeyboard.html)
+*
+* 需要基础库: `2.8.2`
+*
+* 在插件中使用:不支持
+*
+* 在input、textarea等focus拉起键盘之后,手动调用此接口收起键盘
+*
+* **示例代码**
+*
+* ```js
+wx.hideKeyboard({
+  complete: res => {
+    console.log('hideKeyboard res', res)
+  }
+})
+``` */
+        hideKeyboard<T extends HideKeyboardOption = HideKeyboardOption>(
+            option?: T
+        ): PromisifySuccessResult<T, HideKeyboardOption>
+        /** [wx.hideLoading(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/interaction/wx.hideLoading.html)
+         *
+         * 需要基础库: `1.1.0`
+         *
+         * 在插件中使用:需要基础库 `1.9.6`
+         *
+         * 隐藏 loading 提示框 */
+        hideLoading<T extends HideLoadingOption = HideLoadingOption>(
+            option?: T
+        ): PromisifySuccessResult<T, HideLoadingOption>
+        /** [wx.hideNavigationBarLoading(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/navigation-bar/wx.hideNavigationBarLoading.html)
+         *
+         * 在插件中使用:需要基础库 `2.1.0`
+         *
+         * 在插件中使用时,只能在当前插件的页面中调用
+         *
+         * 在当前页面隐藏导航条加载动画 */
+        hideNavigationBarLoading<
+            T extends HideNavigationBarLoadingOption = HideNavigationBarLoadingOption
+        >(
+            option?: T
+        ): PromisifySuccessResult<T, HideNavigationBarLoadingOption>
+        /** [wx.hideShareMenu(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/share/wx.hideShareMenu.html)
+*
+* 需要基础库: `1.1.0`
+*
+* 在插件中使用:需要基础库 `2.1.0`
+*
+* 在插件中使用时,只能在当前插件的页面中调用
+*
+* 隐藏当前页面的转发按钮
+*
+* ****
+*
+* ## 注意事项
+*  - "shareAppMessage"表示“发送给朋友”按钮,"shareTimeline"表示“分享到朋友圈”按钮
+*  - 隐藏“发送给朋友”按钮时必须同时隐藏“分享到朋友圈”按钮,隐藏“分享到朋友圈”按钮时则允许不隐藏“发送给朋友”按钮
+*
+* **示例代码**
+*
+* ```js
+wx.hideShareMenu({
+  menus: ['shareAppMessage', 'shareTimeline']
+})
+``` */
+        hideShareMenu<T extends HideShareMenuOption = HideShareMenuOption>(
+            option?: T
+        ): PromisifySuccessResult<T, HideShareMenuOption>
+        /** [wx.hideTabBar(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/tab-bar/wx.hideTabBar.html)
+         *
+         * 需要基础库: `1.9.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 隐藏 tabBar */
+        hideTabBar<T extends HideTabBarOption = HideTabBarOption>(
+            option: T
+        ): PromisifySuccessResult<T, HideTabBarOption>
+        /** [wx.hideTabBarRedDot(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/tab-bar/wx.hideTabBarRedDot.html)
+         *
+         * 需要基础库: `1.9.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 隐藏 tabBar 某一项的右上角的红点 */
+        hideTabBarRedDot<
+            T extends HideTabBarRedDotOption = HideTabBarRedDotOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, HideTabBarRedDotOption>
+        /** [wx.hideToast(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/interaction/wx.hideToast.html)
+         *
+         * 在插件中使用:需要基础库 `1.9.6`
+         *
+         * 隐藏消息提示框 */
+        hideToast<T extends HideToastOption = HideToastOption>(
+            option?: T
+        ): PromisifySuccessResult<T, HideToastOption>
+        /** [wx.initFaceDetect(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/ai/face/wx.initFaceDetect.html)
+         *
+         * 需要基础库: `2.18.0`
+         *
+         * 在插件中使用:需要基础库 `2.21.3`
+         *
+         * 初始化人脸识别 */
+        initFaceDetect(option?: InitFaceDetectOption): void
+        /** [wx.isBluetoothDevicePaired(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth/wx.isBluetoothDevicePaired.html)
+         *
+         * 需要基础库: `2.20.1`
+         *
+         * 在插件中使用:需要基础库 `2.19.1`
+         *
+         * 查询蓝牙设备是否配对,仅安卓支持。 */
+        isBluetoothDevicePaired<
+            T extends IsBluetoothDevicePairedOption = IsBluetoothDevicePairedOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, IsBluetoothDevicePairedOption>
+        /** [wx.joinVoIPChat(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/voip/wx.joinVoIPChat.html)
+         *
+         * 需要基础库: `2.7.0`
+         *
+         * 在插件中使用:需要基础库 `2.9.0`
+         *
+         * 加入 (创建) 实时语音通话,更多信息可见 [实时语音指南](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/voip-chat.html)。调用前需要用户授权 `scope.record`,若房间类型为视频房间需要用户授权 `scope.camera`。 */
+        joinVoIPChat<T extends JoinVoIPChatOption = JoinVoIPChatOption>(
+            option: T
+        ): PromisifySuccessResult<T, JoinVoIPChatOption>
+        /** [wx.loadFontFace(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/font/wx.loadFontFace.html)
+*
+* 需要基础库: `2.1.0`
+*
+* 在插件中使用:需要基础库 `2.15.0`
+*
+* 动态加载网络字体,文件地址需为下载类型。[2.10.0](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)起支持全局生效,需在 `app.js` 中调用。
+*
+* 注意:
+* 1. 字体文件返回的 contet-type 参考 [font](https://www.iana.org/assignments/media-types/media-types.xhtml#font),格式不正确时会解析失败。
+* 2. 字体链接必须是https(ios不支持http)
+* 3. 字体链接必须是同源下的,或开启了cors支持,小程序的域名是`servicewechat.com`
+* 4. 工具里提示 Faild to load font可以忽略
+* 5. [2.10.0](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 以前仅在调用页面生效。
+*
+* **示例代码**
+*
+* [在微信开发者工具中查看示例](https://developers.weixin.qq.com/s/b6Zrajm67R2x)
+* ```js
+wx.loadFontFace({
+  family: 'Bitstream Vera Serif Bold',
+  source: 'url("https://sungd.github.io/Pacifico.ttf")',
+  success: console.log
+})
+``` */
+        loadFontFace<T extends LoadFontFaceOption = LoadFontFaceOption>(
+            option: T
+        ): PromisifySuccessResult<T, LoadFontFaceOption>
+        /** [wx.login(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/login/wx.login.html)
+*
+* 在插件中使用:需要基础库 `2.3.1`
+*
+* 在插件中使用时,需要在用户信息功能页中获得用户授权或满足一定条件后调用。否则将返回 fail。详见 [用户信息功能页](https://developers.weixin.qq.com/miniprogram/dev/framework/plugin/functional-pages/user-info.html)
+*
+* 调用接口获取登录凭证(code)。通过凭证进而换取用户登录态信息,包括用户在当前小程序的唯一标识(openid)、微信开放平台帐号下的唯一标识(unionid,若当前小程序已绑定到微信开放平台帐号)及本次登录的会话密钥(session_key)等。用户数据的加解密通讯需要依赖会话密钥完成。更多使用方法详见 [小程序登录](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html)。
+*
+* **示例代码**
+*
+* ```js
+wx.login({
+  success (res) {
+    if (res.code) {
+      //发起网络请求
+      wx.request({
+        url: 'https://example.com/onLogin',
+        data: {
+          code: res.code
+        }
+      })
+    } else {
+      console.log('登录失败!' + res.errMsg)
+    }
+  }
+})
+``` */
+        login<T extends LoginOption = LoginOption>(
+            option?: T
+        ): PromisifySuccessResult<T, LoginOption>
+        /** [wx.makeBluetoothPair(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth/wx.makeBluetoothPair.html)
+         *
+         * 需要基础库: `2.12.0`
+         *
+         * 在插件中使用:需要基础库 `2.12.0`
+         *
+         * 蓝牙配对接口,仅安卓支持。
+         *
+         * 通常情况下(需要指定 `pin` 码或者密码时)系统会接管配对流程,直接调用 [wx.createBLEConnection](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.createBLEConnection.html) 即可。该接口只应当在开发者不想让用户手动输入 `pin` 码且真机验证确认可以正常生效情况下用。 */
+        makeBluetoothPair<
+            T extends MakeBluetoothPairOption = MakeBluetoothPairOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, MakeBluetoothPairOption>
+        /** [wx.makePhoneCall(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/phone/wx.makePhoneCall.html)
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 拨打电话
+*
+* **示例代码**
+*
+* ```js
+wx.makePhoneCall({
+  phoneNumber: '1340000' //仅为示例,并非真实的电话号码
+})
+``` */
+        makePhoneCall<T extends MakePhoneCallOption = MakePhoneCallOption>(
+            option: T
+        ): PromisifySuccessResult<T, MakePhoneCallOption>
+        /** [wx.navigateBack(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/route/wx.navigateBack.html)
+         *
+         * 在插件中使用:需要基础库 `2.1.0`
+         *
+         * 在插件中使用时,只能在当前插件的页面中调用
+         *
+         * 关闭当前页面,返回上一页面或多级页面。可通过 [getCurrentPages](https://developers.weixin.qq.com/miniprogram/dev/reference/api/getCurrentPages.html) 获取当前的页面栈,决定需要返回几层。 */
+        navigateBack<T extends NavigateBackOption = NavigateBackOption>(
+            option?: T
+        ): PromisifySuccessResult<T, NavigateBackOption>
+        /** [wx.navigateBackMiniProgram(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/navigate/wx.navigateBackMiniProgram.html)
+*
+* 需要基础库: `1.3.0`
+*
+* 在插件中使用:不支持
+*
+* 返回到上一个小程序。只有在当前小程序是被其他小程序打开时可以调用成功
+*
+* 注意:**微信客户端 iOS 6.5.9,Android 6.5.10 及以上版本支持**
+*
+* **示例代码**
+*
+* ```js
+wx.navigateBackMiniProgram({
+  extraData: {
+    foo: 'bar'
+  },
+  success(res) {
+    // 返回成功
+  }
+})
+``` */
+        navigateBackMiniProgram<
+            T extends NavigateBackMiniProgramOption = NavigateBackMiniProgramOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, NavigateBackMiniProgramOption>
+        /** [wx.navigateTo(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/route/wx.navigateTo.html)
+*
+* 在插件中使用:需要基础库 `2.2.2`
+*
+* 在插件中使用时,只能在当前插件的页面中调用
+*
+* 保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面。使用 [wx.navigateBack](https://developers.weixin.qq.com/miniprogram/dev/api/route/wx.navigateBack.html) 可以返回到原页面。小程序中页面栈最多十层。
+*
+* **示例代码**
+*
+* ```js
+wx.navigateTo({
+  url: 'test?id=1',
+  events: {
+    // 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据
+    acceptDataFromOpenedPage: function(data) {
+      console.log(data)
+    },
+    someEvent: function(data) {
+      console.log(data)
+    }
+    ...
+  },
+  success: function(res) {
+    // 通过eventChannel向被打开页面传送数据
+    res.eventChannel.emit('acceptDataFromOpenerPage', { data: 'test' })
+  }
+})
+```
+*
+* ```javascript
+//test.js
+Page({
+  onLoad: function(option){
+    console.log(option.query)
+    const eventChannel = this.getOpenerEventChannel()
+    eventChannel.emit('acceptDataFromOpenedPage', {data: 'test'});
+    eventChannel.emit('someEvent', {data: 'test'});
+    // 监听acceptDataFromOpenerPage事件,获取上一页面通过eventChannel传送到当前页面的数据
+    eventChannel.on('acceptDataFromOpenerPage', function(data) {
+      console.log(data)
+    })
+  }
+})
+``` */
+        navigateTo<T extends NavigateToOption = NavigateToOption>(
+            option: T
+        ): PromisifySuccessResult<T, NavigateToOption>
+        /** [wx.navigateToMiniProgram(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/navigate/wx.navigateToMiniProgram.html)
+*
+* 需要基础库: `1.3.0`
+*
+* 在插件中使用:需要基础库 `2.18.1`
+*
+* 打开另一个小程序
+*
+* **使用限制**
+*
+*  ##### 需要用户触发跳转
+*  从 2.3.0 版本开始,若用户未点击小程序页面任意位置,则开发者将无法调用此接口自动跳转至其他小程序。
+*  ##### 需要用户确认跳转
+*  从 2.3.0 版本开始,在跳转至其他小程序前,将统一增加弹窗,询问是否跳转,用户确认后才可以跳转其他小程序。如果用户点击取消,则回调 `fail cancel`。
+*  ##### 无需声明跳转名单,不限跳转数量(众测中)
+* 1. 从2020年4月24日起,使用跳转其他小程序功能将无需在全局配置中声明跳转名单,调用此接口时将不再校验所跳转的 AppID 是否在 navigateToMiniProgramAppIdList 中。
+* 2. 从2020年4月24日起,跳转其他小程序将不再受数量限制,使用此功能时请注意遵守运营规范。
+*
+* **运营规范**
+*
+* 平台将坚决打击小程序盒子等互推行为,使用此功能时请严格遵守[《微信小程序平台运营规范》](https://developers.weixin.qq.com/miniprogram/product/#_5-10-%E4%BA%92%E6%8E%A8%E8%A1%8C%E4%B8%BA),若发现小程序违反运营规范将被下架处理。
+*
+* **关于调试**
+*
+* - 在开发者工具上调用此 API 并不会真实的跳转到另外的小程序,但是开发者工具会校验本次调用跳转是否成功。[详情](https://developers.weixin.qq.com/miniprogram/dev/devtools/different.html#跳转小程序调试支持)
+* - 开发者工具上支持被跳转的小程序处理接收参数的调试。[详情](https://developers.weixin.qq.com/miniprogram/dev/devtools/different.html#跳转小程序调试支持)
+*
+* **示例代码**
+*
+* ```js
+wx.navigateToMiniProgram({
+  appId: '',
+  path: 'page/index/index?id=123',
+  extraData: {
+    foo: 'bar'
+  },
+  envVersion: 'develop',
+  success(res) {
+    // 打开成功
+  }
+})
+``` */
+        navigateToMiniProgram<
+            T extends NavigateToMiniProgramOption = NavigateToMiniProgramOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, NavigateToMiniProgramOption>
+        /** [wx.nextTick(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/custom-component/wx.nextTick.html)
+*
+* 需要基础库: `2.2.3`
+*
+* 在插件中使用:需要基础库 `2.7.1`
+*
+* 延迟一部分操作到下一个时间片再执行。(类似于 setTimeout)
+*
+* **说明**
+*
+* 因为自定义组件中的 setData 和 triggerEvent 等接口本身是同步的操作,当这几个接口被连续调用时,都是在一个同步流程中执行完的,因此若逻辑不当可能会导致出错。
+*
+* 一个极端的案例:当父组件的 setData 引发了子组件的 triggerEvent,进而使得父组件又进行了一次 setData,期间有通过 wx:if 语句对子组件进行卸载,就有可能引发奇怪的错误,所以对于不需要在一个同步流程内完成的逻辑,可以使用此接口延迟到下一个时间片再执行。
+*
+* **示例代码**
+*
+* ```js
+Component({
+  doSth() {
+    this.setData({ number: 1 }) // 直接在当前同步流程中执行
+
+    wx.nextTick(() => {
+      this.setData({ number: 3 }) // 在当前同步流程结束后,下一个时间片执行
+    })
+
+    this.setData({ number: 2 }) // 直接在当前同步流程中执行
+  }
+})
+``` */
+        nextTick(callback: (...args: any[]) => any): void
+        /** [wx.notifyBLECharacteristicValueChange(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.notifyBLECharacteristicValueChange.html)
+*
+* 需要基础库: `1.1.0`
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 启用蓝牙低功耗设备特征值变化时的 notify 功能,订阅特征。注意:必须设备的特征支持 notify 或者 indicate 才可以成功调用。
+*
+* 另外,必须先启用 [wx.notifyBLECharacteristicValueChange](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.notifyBLECharacteristicValueChange.html) 才能监听到设备 `characteristicValueChange` 事件
+*
+* **注意**
+*
+* - 订阅操作成功后需要设备主动更新特征的 value,才会触发 [wx.onBLECharacteristicValueChange](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.onBLECharacteristicValueChange.html) 回调。
+* - 安卓平台上,在本接口调用成功后立即调用 [wx.writeBLECharacteristicValue](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.writeBLECharacteristicValue.html) 接口,在部分机型上会发生 10008 系统错误
+*
+* **示例代码**
+*
+* [在微信开发者工具中查看示例](https://developers.weixin.qq.com/s/pQU51zmz7a3K)
+* ```js
+wx.notifyBLECharacteristicValueChange({
+  state: true, // 启用 notify 功能
+  // 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接
+  deviceId,
+  // 这里的 serviceId 需要在 getBLEDeviceServices 接口中获取
+  serviceId,
+  // 这里的 characteristicId 需要在 getBLEDeviceCharacteristics 接口中获取
+  characteristicId,
+  success (res) {
+    console.log('notifyBLECharacteristicValueChange success', res.errMsg)
+  }
+})
+``` */
+        notifyBLECharacteristicValueChange<
+            T extends NotifyBLECharacteristicValueChangeOption = NotifyBLECharacteristicValueChangeOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, NotifyBLECharacteristicValueChangeOption>
+        /** [wx.offAccelerometerChange(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/accelerometer/wx.offAccelerometerChange.html)
+         *
+         * 需要基础库: `2.9.3`
+         *
+         * 在插件中使用:需要基础库 `2.9.1`
+         *
+         * 取消监听加速度数据事件,参数为空,则取消所有的事件监听。 */
+        offAccelerometerChange(
+            /** 加速度数据事件的回调函数 */
+            callback: (...args: any[]) => any
+        ): void
+        /** [wx.offAppHide(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.offAppHide.html)
+         *
+         * 需要基础库: `2.1.2`
+         *
+         * 在插件中使用:不支持
+         *
+         * 取消监听小程序切后台事件 */
+        offAppHide(
+            /** 小程序切后台事件的回调函数 */
+            callback?: OffAppHideCallback
+        ): void
+        /** [wx.offAppShow(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.offAppShow.html)
+         *
+         * 需要基础库: `2.1.2`
+         *
+         * 在插件中使用:不支持
+         *
+         * 取消监听小程序切前台事件 */
+        offAppShow(
+            /** 小程序切前台事件的回调函数 */
+            callback: (...args: any[]) => any
+        ): void
+        /** [wx.offAudioInterruptionBegin(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.offAudioInterruptionBegin.html)
+         *
+         * 需要基础库: `2.6.2`
+         *
+         * 在插件中使用:需要基础库 `2.15.0`
+         *
+         * 取消监听音频因为受到系统占用而被中断开始事件 */
+        offAudioInterruptionBegin(
+            /** 音频因为受到系统占用而被中断开始事件的回调函数 */
+            callback?: OffAudioInterruptionBeginCallback
+        ): void
+        /** [wx.offAudioInterruptionEnd(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.offAudioInterruptionEnd.html)
+         *
+         * 需要基础库: `2.6.2`
+         *
+         * 在插件中使用:需要基础库 `2.15.0`
+         *
+         * 取消监听音频中断结束事件 */
+        offAudioInterruptionEnd(
+            /** 音频中断结束事件的回调函数 */
+            callback?: OffAudioInterruptionEndCallback
+        ): void
+        /** [wx.offBLECharacteristicValueChange(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.offBLECharacteristicValueChange.html)
+         *
+         * 需要基础库: `2.9.0`
+         *
+         * 在插件中使用:需要基础库 `2.9.1`
+         *
+         * 取消监听蓝牙低功耗设备的特征值变化事件。 */
+        offBLECharacteristicValueChange(
+            /** 蓝牙低功耗设备的特征值变化事件的回调函数 */
+            callback: (...args: any[]) => any
+        ): void
+        /** [wx.offBLEConnectionStateChange(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.offBLEConnectionStateChange.html)
+         *
+         * 需要基础库: `2.9.0`
+         *
+         * 在插件中使用:需要基础库 `2.9.1`
+         *
+         * 取消监听蓝牙低功耗连接状态的改变事件 */
+        offBLEConnectionStateChange(
+            /** 蓝牙低功耗连接状态的改变事件的回调函数 */
+            callback: (...args: any[]) => any
+        ): void
+        /** [wx.offBLEMTUChange(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.offBLEMTUChange.html)
+         *
+         * 需要基础库: `2.20.1`
+         *
+         * 在插件中使用:需要基础库 `2.20.1`
+         *
+         * 取消监听蓝牙低功耗的最大传输单元变化事件 */
+        offBLEMTUChange(
+            /** 蓝牙低功耗的最大传输单元变化事件的回调函数 */
+            callback?: OffBLEMTUChangeCallback
+        ): void
+        /** [wx.offBLEPeripheralConnectionStateChanged(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/wx.offBLEPeripheralConnectionStateChanged.html)
+         *
+         * 需要基础库: `2.10.3`
+         *
+         * 在插件中使用:不支持
+         *
+         * 取消监听当前外围设备被连接或断开连接事件 */
+        offBLEPeripheralConnectionStateChanged(
+            /** 当前外围设备被连接或断开连接事件的回调函数 */
+            callback?: OffBLEPeripheralConnectionStateChangedCallback
+        ): void
+        /** [wx.offBeaconServiceChange(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/ibeacon/wx.offBeaconServiceChange.html)
+         *
+         * 需要基础库: `2.8.1`
+         *
+         * 在插件中使用:需要基础库 `2.9.1`
+         *
+         * 取消监听 Beacon 服务状态变化事件 */
+        offBeaconServiceChange(
+            /** Beacon 服务状态变化事件的回调函数 */
+            callback?: OffBeaconServiceChangeCallback
+        ): void
+        /** [wx.offBeaconUpdate(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/ibeacon/wx.offBeaconUpdate.html)
+         *
+         * 需要基础库: `2.8.1`
+         *
+         * 在插件中使用:需要基础库 `2.9.1`
+         *
+         * 取消监听 Beacon 设备更新事件 */
+        offBeaconUpdate(
+            /** Beacon 设备更新事件的回调函数 */
+            callback?: OffBeaconUpdateCallback
+        ): void
+        /** [wx.offBluetoothAdapterStateChange(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth/wx.offBluetoothAdapterStateChange.html)
+         *
+         * 需要基础库: `2.9.0`
+         *
+         * 在插件中使用:需要基础库 `2.9.1`
+         *
+         * 取消监听蓝牙适配器状态变化事件。 */
+        offBluetoothAdapterStateChange(
+            /** 蓝牙适配器状态变化事件的回调函数 */
+            callback: (...args: any[]) => any
+        ): void
+        /** [wx.offBluetoothDeviceFound(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth/wx.offBluetoothDeviceFound.html)
+         *
+         * 需要基础库: `2.9.0`
+         *
+         * 在插件中使用:需要基础库 `2.9.1`
+         *
+         * 取消监听寻找到新设备的事件。 */
+        offBluetoothDeviceFound(
+            /** 寻找到新设备的事件的回调函数 */
+            callback: (...args: any[]) => any
+        ): void
+        /** [wx.offCompassChange(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/compass/wx.offCompassChange.html)
+         *
+         * 需要基础库: `2.9.3`
+         *
+         * 在插件中使用:需要基础库 `2.9.1`
+         *
+         * 取消监听罗盘数据变化事件,参数为空,则取消所有的事件监听。 */
+        offCompassChange(
+            /** 罗盘数据变化事件的回调函数 */
+            callback: (...args: any[]) => any
+        ): void
+        /** [wx.offCopyUrl(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/share/wx.offCopyUrl.html)
+         *
+         * 需要基础库: `2.14.3`
+         *
+         * 在插件中使用:不支持
+         *
+         * 取消监听用户点击右上角菜单的「复制链接」按钮时触发的事件 */
+        offCopyUrl(
+            /** 用户点击右上角菜单的「复制链接」按钮时触发的事件的回调函数 */
+            callback?: OffCopyUrlCallback
+        ): void
+        /** [wx.offDeviceMotionChange(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/motion/wx.offDeviceMotionChange.html)
+         *
+         * 需要基础库: `2.9.3`
+         *
+         * 在插件中使用:需要基础库 `2.9.1`
+         *
+         * 取消监听设备方向变化事件,参数为空,则取消所有的事件监听。 */
+        offDeviceMotionChange(
+            /** 设备方向变化事件的回调函数 */
+            callback: (...args: any[]) => any
+        ): void
+        /** [wx.offError(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.offError.html)
+         *
+         * 需要基础库: `2.1.2`
+         *
+         * 在插件中使用:不支持
+         *
+         * 取消监听小程序错误事件。 */
+        offError(
+            /** 小程序错误事件的回调函数 */
+            callback: (...args: any[]) => any
+        ): void
+        /** [wx.offGetWifiList(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/wifi/wx.offGetWifiList.html)
+         *
+         * 需要基础库: `2.9.0`
+         *
+         * 在插件中使用:需要基础库 `2.9.1`
+         *
+         * 取消监听获取到 Wi-Fi 列表数据事件。 */
+        offGetWifiList(
+            /** 获取到 Wi-Fi 列表数据事件的回调函数 */
+            callback: (...args: any[]) => any
+        ): void
+        /** [wx.offGyroscopeChange(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/gyroscope/wx.offGyroscopeChange.html)
+         *
+         * 需要基础库: `2.9.3`
+         *
+         * 在插件中使用:需要基础库 `2.9.1`
+         *
+         * 取消监听陀螺仪数据变化事件。 */
+        offGyroscopeChange(
+            /** 陀螺仪数据变化事件的回调函数 */
+            callback: (...args: any[]) => any
+        ): void
+        /** [wx.offHCEMessage(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/wx.offHCEMessage.html)
+         *
+         * 需要基础库: `2.8.1`
+         *
+         * 在插件中使用:需要基础库 `2.9.1`
+         *
+         * 接收 NFC 设备消息事件,取消事件监听。 */
+        offHCEMessage(
+            /** 接收 NFC 设备消息事件的回调函数 */
+            callback: (...args: any[]) => any
+        ): void
+        /** [wx.offKeyboardHeightChange(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/keyboard/wx.offKeyboardHeightChange.html)
+         *
+         * 需要基础库: `2.9.2`
+         *
+         * 在插件中使用:不支持
+         *
+         * 取消监听键盘高度变化事件 */
+        offKeyboardHeightChange(
+            /** 键盘高度变化事件的回调函数 */
+            callback: (...args: any[]) => any
+        ): void
+        /** [wx.offLocalServiceDiscoveryStop(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/mdns/wx.offLocalServiceDiscoveryStop.html)
+         *
+         * 需要基础库: `2.4.0`
+         *
+         * 在插件中使用:需要基础库 `2.15.0`
+         *
+         * 取消监听 mDNS 服务停止搜索的事件 */
+        offLocalServiceDiscoveryStop(
+            /** mDNS 服务停止搜索的事件的回调函数 */
+            callback?: OffLocalServiceDiscoveryStopCallback
+        ): void
+        /** [wx.offLocalServiceFound(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/mdns/wx.offLocalServiceFound.html)
+         *
+         * 需要基础库: `2.4.0`
+         *
+         * 在插件中使用:需要基础库 `2.15.0`
+         *
+         * 取消监听 mDNS 服务发现的事件 */
+        offLocalServiceFound(
+            /** mDNS 服务发现的事件的回调函数 */
+            callback?: OffLocalServiceFoundCallback
+        ): void
+        /** [wx.offLocalServiceLost(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/mdns/wx.offLocalServiceLost.html)
+         *
+         * 需要基础库: `2.4.0`
+         *
+         * 在插件中使用:需要基础库 `2.15.0`
+         *
+         * 取消监听 mDNS 服务离开的事件 */
+        offLocalServiceLost(
+            /** mDNS 服务离开的事件的回调函数 */
+            callback?: OffLocalServiceLostCallback
+        ): void
+        /** [wx.offLocalServiceResolveFail(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/mdns/wx.offLocalServiceResolveFail.html)
+         *
+         * 需要基础库: `2.4.0`
+         *
+         * 在插件中使用:需要基础库 `2.15.0`
+         *
+         * 取消监听 mDNS 服务解析失败的事件 */
+        offLocalServiceResolveFail(
+            /** mDNS 服务解析失败的事件的回调函数 */
+            callback?: OffLocalServiceResolveFailCallback
+        ): void
+        /** [wx.offLocationChange(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.offLocationChange.html)
+         *
+         * 需要基础库: `2.8.1`
+         *
+         * 在插件中使用:不支持
+         *
+         * 取消监听实时地理位置变化事件 */
+        offLocationChange(
+            /** 实时地理位置变化事件的回调函数 */
+            callback?: OffLocationChangeCallback
+        ): void
+        /** [wx.offLocationChangeError(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.offLocationChangeError.html)
+         *
+         * 需要基础库: `2.19.5`
+         *
+         * 在插件中使用:不支持
+         *
+         * 取消监听持续定位接口返回失败时触发。 */
+        offLocationChangeError(
+            /** 的回调函数 */
+            callback?: OffLocationChangeErrorCallback
+        ): void
+        /** [wx.offMemoryWarning(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/memory/wx.offMemoryWarning.html)
+         *
+         * 需要基础库: `2.9.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 取消监听内存不足告警事件。 */
+        offMemoryWarning(
+            /** 内存不足告警事件的回调函数 */
+            callback: (...args: any[]) => any
+        ): void
+        /** [wx.offNetworkStatusChange(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/network/wx.offNetworkStatusChange.html)
+         *
+         * 需要基础库: `2.9.3`
+         *
+         * 在插件中使用:需要基础库 `2.9.1`
+         *
+         * 取消监听网络状态变化事件,参数为空,则取消所有的事件监听。 */
+        offNetworkStatusChange(
+            /** 网络状态变化事件的回调函数 */
+            callback: (...args: any[]) => any
+        ): void
+        /** [wx.offNetworkWeakChange(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/network/wx.offNetworkWeakChange.html)
+         *
+         * 需要基础库: `2.21.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 取消监听弱网状态变化事件 */
+        offNetworkWeakChange(
+            /** 弱网状态变化事件的回调函数 */
+            callback?: OffNetworkWeakChangeCallback
+        ): void
+        /** [wx.offPageNotFound(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.offPageNotFound.html)
+         *
+         * 需要基础库: `2.1.2`
+         *
+         * 在插件中使用:不支持
+         *
+         * 取消监听小程序要打开的页面不存在事件 */
+        offPageNotFound(
+            /** 小程序要打开的页面不存在事件的回调函数 */
+            callback?: OffPageNotFoundCallback
+        ): void
+        /** [wx.offThemeChange(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.offThemeChange.html)
+         *
+         * 需要基础库: `2.11.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 取消监听系统主题改变事件 */
+        offThemeChange(
+            /** 系统主题改变事件的回调函数 */
+            callback?: OffThemeChangeCallback
+        ): void
+        /** [wx.offUnhandledRejection(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.offUnhandledRejection.html)
+         *
+         * 需要基础库: `2.10.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 取消监听未处理的 Promise 拒绝事件 */
+        offUnhandledRejection(
+            /** 未处理的 Promise 拒绝事件的回调函数 */
+            callback?: OffUnhandledRejectionCallback
+        ): void
+        /** [wx.offUserCaptureScreen(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/screen/wx.offUserCaptureScreen.html)
+         *
+         * 需要基础库: `2.9.3`
+         *
+         * 在插件中使用:需要基础库 `2.9.1`
+         *
+         * 在插件中使用时,只能在当前插件的页面中调用
+         *
+         * 用户主动截屏事件。取消事件监听。 */
+        offUserCaptureScreen(
+            /** 用户主动截屏事件的回调函数 */
+            callback?: (...args: any[]) => any
+        ): void
+        /** [wx.offVoIPChatInterrupted(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/voip/wx.offVoIPChatInterrupted.html)
+         *
+         * 需要基础库: `2.9.0`
+         *
+         * 在插件中使用:需要基础库 `2.9.1`
+         *
+         * 取消监听被动断开实时语音通话事件。 */
+        offVoIPChatInterrupted(
+            /** 被动断开实时语音通话事件的回调函数 */
+            callback: (...args: any[]) => any
+        ): void
+        /** [wx.offVoIPChatMembersChanged(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/voip/wx.offVoIPChatMembersChanged.html)
+         *
+         * 需要基础库: `2.9.0`
+         *
+         * 在插件中使用:需要基础库 `2.9.1`
+         *
+         * 取消监听实时语音通话成员在线状态变化事件。 */
+        offVoIPChatMembersChanged(
+            /** 实时语音通话成员在线状态变化事件的回调函数 */
+            callback: (...args: any[]) => any
+        ): void
+        /** [wx.offVoIPChatStateChanged(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/voip/wx.offVoIPChatStateChanged.html)
+         *
+         * 需要基础库: `2.16.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 取消监听房间状态变化事件 */
+        offVoIPChatStateChanged(
+            /** 房间状态变化事件的回调函数 */
+            callback?: OffVoIPChatStateChangedCallback
+        ): void
+        /** [wx.offVoIPVideoMembersChanged(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/voip/wx.offVoIPVideoMembersChanged.html)
+         *
+         * 需要基础库: `2.11.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 取消监听实时语音通话成员视频状态变化事件 */
+        offVoIPVideoMembersChanged(
+            /** 实时语音通话成员视频状态变化事件的回调函数 */
+            callback?: OffVoIPVideoMembersChangedCallback
+        ): void
+        /** [wx.offWifiConnected(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/wifi/wx.offWifiConnected.html)
+         *
+         * 需要基础库: `2.9.0`
+         *
+         * 在插件中使用:需要基础库 `2.9.1`
+         *
+         * 取消监听连接上 Wi-Fi 的事件。 */
+        offWifiConnected(
+            /** 连接上 Wi-Fi 的事件的回调函数 */
+            callback: (...args: any[]) => any
+        ): void
+        /** [wx.offWindowResize(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/window/wx.offWindowResize.html)
+         *
+         * 需要基础库: `2.3.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 取消监听窗口尺寸变化事件 */
+        offWindowResize(
+            /** 窗口尺寸变化事件的回调函数 */
+            callback?: OffWindowResizeCallback
+        ): void
+        /** [wx.onAccelerometerChange(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/accelerometer/wx.onAccelerometerChange.html)
+*
+* 在插件中使用:不支持
+*
+* 监听加速度数据事件。频率根据 [wx.startAccelerometer()](https://developers.weixin.qq.com/miniprogram/dev/api/device/accelerometer/wx.startAccelerometer.html) 的 interval 参数, 接口调用后会自动开始监听。
+*
+* **示例代码**
+*
+* ```js
+wx.onAccelerometerChange(callback)
+``` */
+        onAccelerometerChange(
+            /** 加速度数据事件的回调函数 */
+            callback: OnAccelerometerChangeCallback
+        ): void
+        /** [wx.onAppHide(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.onAppHide.html)
+         *
+         * 需要基础库: `2.1.2`
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听小程序切后台事件。该事件与 [`App.onHide`](https://developers.weixin.qq.com/miniprogram/dev/reference/api/App.html#onhide) 的回调时机一致。 */
+        onAppHide(
+            /** 小程序切后台事件的回调函数 */
+            callback: OnAppHideCallback
+        ): void
+        /** [wx.onAppShow(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.onAppShow.html)
+         *
+         * 需要基础库: `2.1.2`
+         *
+         * 在插件中使用:不支持
+         *
+         * 小程序切前台事件。该事件与 [`App.onShow`](https://developers.weixin.qq.com/miniprogram/dev/reference/api/App.html#onshowobject-object) 的回调参数一致。
+         *
+         * **返回有效 referrerInfo 的场景**
+         *
+         * | 场景值 | 场景                            | appId含义  |
+         * | ------ | ------------------------------- | ---------- |
+         * | 1020   | 公众号 profile 页相关小程序列表 | 来源公众号 |
+         * | 1035   | 公众号自定义菜单                | 来源公众号 |
+         * | 1036   | App 分享消息卡片                | 来源App    |
+         * | 1037   | 小程序打开小程序                | 来源小程序 |
+         * | 1038   | 从另一个小程序返回              | 来源小程序 |
+         * | 1043   | 公众号模板消息                  | 来源公众号 |
+         *
+         * **不同 apiCategory 场景下的 API 限制**
+         *
+         * `X` 表示 API 被限制无法使用;不在表格中的 API 不限制。
+         *
+         * |                                       | default | nativeFunctionalized | browseOnly | embedded |
+         * |-|-|-|-|-|
+         * |navigateToMiniProgram                  |         | `X`                  | `X`        |          |
+         * |openSetting                            |         |                      | `X`        |          |
+         * |&lt;button open-type="share"&gt;       |         | `X`                  | `X`        | `X`      |
+         * |&lt;button open-type="feedback"&gt;    |         |                      | `X`        |          |
+         * |&lt;button open-type="open-setting"&gt;|         |                      | `X`        |          |
+         * |openEmbeddedMiniProgram                |         | `X`                  | `X`        | `X`      |
+         *
+         * **注意**
+         *
+         * 部分版本在无`referrerInfo`的时候会返回 `undefined`,建议使用 `options.referrerInfo && options.referrerInfo.appId` 进行判断。 */
+        onAppShow(
+            /** 小程序切前台事件的回调函数 */
+            callback: OnAppShowCallback
+        ): void
+        /** [wx.onAudioInterruptionBegin(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.onAudioInterruptionBegin.html)
+         *
+         * 需要基础库: `2.6.2`
+         *
+         * 在插件中使用:需要基础库 `2.15.0`
+         *
+         * 监听音频因为受到系统占用而被中断开始事件。以下场景会触发此事件:闹钟、电话、FaceTime 通话、微信语音聊天、微信视频聊天。此事件触发后,小程序内所有音频会暂停。 */
+        onAudioInterruptionBegin(
+            /** 音频因为受到系统占用而被中断开始事件的回调函数 */
+            callback: OnAudioInterruptionBeginCallback
+        ): void
+        /** [wx.onAudioInterruptionEnd(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.onAudioInterruptionEnd.html)
+         *
+         * 需要基础库: `2.6.2`
+         *
+         * 在插件中使用:需要基础库 `2.15.0`
+         *
+         * 监听音频中断结束事件。在收到 onAudioInterruptionBegin 事件之后,小程序内所有音频会暂停,收到此事件之后才可再次播放成功 */
+        onAudioInterruptionEnd(
+            /** 音频中断结束事件的回调函数 */
+            callback: OnAudioInterruptionEndCallback
+        ): void
+        /** [wx.onBLECharacteristicValueChange(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.onBLECharacteristicValueChange.html)
+*
+* 需要基础库: `1.1.0`
+*
+* 在插件中使用:需要基础库 `2.9.1`
+*
+* 监听蓝牙低功耗设备的特征值变化事件。必须先调用 [wx.notifyBLECharacteristicValueChange](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.notifyBLECharacteristicValueChange.html) 接口才能接收到设备推送的 notification。
+*
+* **示例代码**
+*
+* [在微信开发者工具中查看示例](https://developers.weixin.qq.com/s/pQU51zmz7a3K)
+*
+* ```js
+// ArrayBuffer转16进制字符串示例
+function ab2hex(buffer) {
+  let hexArr = Array.prototype.map.call(
+    new Uint8Array(buffer),
+    function(bit) {
+      return ('00' + bit.toString(16)).slice(-2)
+    }
+  )
+  return hexArr.join('');
+}
+wx.onBLECharacteristicValueChange(function(res) {
+  console.log(`characteristic ${res.characteristicId} has changed, now is ${res.value}`)
+  console.log(ab2hex(res.value))
+})
+``` */
+        onBLECharacteristicValueChange(
+            /** 蓝牙低功耗设备的特征值变化事件的回调函数 */
+            callback: OnBLECharacteristicValueChangeCallback
+        ): void
+        /** [wx.onBLEConnectionStateChange(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.onBLEConnectionStateChange.html)
+*
+* 需要基础库: `1.1.0`
+*
+* 在插件中使用:需要基础库 `2.9.1`
+*
+* 监听蓝牙低功耗连接状态的改变事件。包括开发者主动连接或断开连接,设备丢失,连接异常断开等等
+*
+* **示例代码**
+*
+* [在微信开发者工具中查看示例](https://developers.weixin.qq.com/s/pQU51zmz7a3K)
+* ```js
+wx.onBLEConnectionStateChange(function(res) {
+  // 该方法回调中可以用于处理连接意外断开等异常情况
+  console.log(`device ${res.deviceId} state has changed, connected: ${res.connected}`)
+})
+``` */
+        onBLEConnectionStateChange(
+            /** 蓝牙低功耗连接状态的改变事件的回调函数 */
+            callback: OnBLEConnectionStateChangeCallback
+        ): void
+        /** [wx.onBLEMTUChange(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.onBLEMTUChange.html)
+*
+* 需要基础库: `2.20.1`
+*
+* 在插件中使用:需要基础库 `2.20.1`
+*
+* 监听蓝牙低功耗的最大传输单元变化事件(仅安卓触发)。
+*
+* **示例代码**
+*
+* [在微信开发者工具中查看示例](https://developers.weixin.qq.com/s/pQU51zmz7a3K)
+* ```js
+wx.onBLEMTUChange(function (res) {
+  console.log('bluetooth mtu is', res.mtu)
+})
+``` */
+        onBLEMTUChange(
+            /** 蓝牙低功耗的最大传输单元变化事件的回调函数 */
+            callback: OnBLEMTUChangeCallback
+        ): void
+        /** [wx.onBLEPeripheralConnectionStateChanged(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/wx.onBLEPeripheralConnectionStateChanged.html)
+         *
+         * 需要基础库: `2.10.3`
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听当前外围设备被连接或断开连接事件 */
+        onBLEPeripheralConnectionStateChanged(
+            /** 当前外围设备被连接或断开连接事件的回调函数 */
+            callback: OnBLEPeripheralConnectionStateChangedCallback
+        ): void
+        /** [wx.onBackgroundAudioPause(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/wx.onBackgroundAudioPause.html)
+         *
+         * 在插件中使用:不支持
+         * @deprecated 基础库版本 [1.2.0](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 起已废弃,请使用 [wx.getBackgroundAudioManager](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/wx.getBackgroundAudioManager.html) 替换
+         *
+         * 监听音乐暂停事件。 */
+        onBackgroundAudioPause(
+            /** 音乐暂停事件的回调函数 */
+            callback: OnBackgroundAudioPauseCallback
+        ): void
+        /** [wx.onBackgroundAudioPlay(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/wx.onBackgroundAudioPlay.html)
+         *
+         * 在插件中使用:不支持
+         * @deprecated 基础库版本 [1.2.0](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 起已废弃,请使用 [wx.getBackgroundAudioManager](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/wx.getBackgroundAudioManager.html) 替换
+         *
+         * 监听音乐播放事件。 */
+        onBackgroundAudioPlay(
+            /** 音乐播放事件的回调函数 */
+            callback: OnBackgroundAudioPlayCallback
+        ): void
+        /** [wx.onBackgroundAudioStop(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/wx.onBackgroundAudioStop.html)
+         *
+         * 在插件中使用:不支持
+         * @deprecated 基础库版本 [1.2.0](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 起已废弃,请使用 [wx.getBackgroundAudioManager](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/wx.getBackgroundAudioManager.html) 替换
+         *
+         * 监听音乐停止事件。 */
+        onBackgroundAudioStop(
+            /** 音乐停止事件的回调函数 */
+            callback: OnBackgroundAudioStopCallback
+        ): void
+        /** [wx.onBackgroundFetchData(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/storage/background-fetch/wx.onBackgroundFetchData.html)
+         *
+         * 需要基础库: `2.8.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听收到 backgroundFetch 数据事件。如果监听时请求已经完成,则事件不会触发。建议和 [wx.getBackgroundFetchData](https://developers.weixin.qq.com/miniprogram/dev/api/storage/background-fetch/wx.getBackgroundFetchData.html) 配合使用 */
+        onBackgroundFetchData(
+            /** 收到 backgroundFetch 数据事件的回调函数 */
+            callback: OnBackgroundFetchDataCallback
+        ): void
+        /** [wx.onBeaconServiceChange(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/ibeacon/wx.onBeaconServiceChange.html)
+         *
+         * 需要基础库: `1.2.0`
+         *
+         * 在插件中使用:需要基础库 `1.9.6`
+         *
+         * 监听 Beacon 服务状态变化事件,仅能注册一个监听 */
+        onBeaconServiceChange(
+            /** Beacon 服务状态变化事件的回调函数 */
+            callback: OnBeaconServiceChangeCallback
+        ): void
+        /** [wx.onBeaconUpdate(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/ibeacon/wx.onBeaconUpdate.html)
+         *
+         * 需要基础库: `1.2.0`
+         *
+         * 在插件中使用:需要基础库 `1.9.6`
+         *
+         * 监听 Beacon 设备更新事件,仅能注册一个监听 */
+        onBeaconUpdate(
+            /** Beacon 设备更新事件的回调函数 */
+            callback: OnBeaconUpdateCallback
+        ): void
+        /** [wx.onBluetoothAdapterStateChange(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth/wx.onBluetoothAdapterStateChange.html)
+*
+* 需要基础库: `1.1.0`
+*
+* 在插件中使用:需要基础库 `2.9.1`
+*
+* 监听蓝牙适配器状态变化事件
+*
+* **示例代码**
+*
+* [在微信开发者工具中查看示例](https://developers.weixin.qq.com/s/pQU51zmz7a3K)
+* ```js
+wx.onBluetoothAdapterStateChange(function (res) {
+  console.log('adapterState changed, now is', res)
+})
+``` */
+        onBluetoothAdapterStateChange(
+            /** 蓝牙适配器状态变化事件的回调函数 */
+            callback: OnBluetoothAdapterStateChangeCallback
+        ): void
+        /** [wx.onBluetoothDeviceFound(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth/wx.onBluetoothDeviceFound.html)
+*
+* 需要基础库: `1.1.0`
+*
+* 在插件中使用:需要基础库 `2.9.1`
+*
+* 监听搜索到新设备的事件
+*
+* **注意**
+*
+* - 若在 [wx.onBluetoothDeviceFound](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth/wx.onBluetoothDeviceFound.html) 回调了某个设备,则此设备会添加到 [wx.getBluetoothDevices](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth/wx.getBluetoothDevices.html) 接口获取到的数组中。
+*
+* **示例代码**
+*
+* [在微信开发者工具中查看示例](https://developers.weixin.qq.com/s/pQU51zmz7a3K)
+*
+* ```js
+// ArrayBuffer转16进度字符串示例
+function ab2hex(buffer) {
+  var hexArr = Array.prototype.map.call(
+    new Uint8Array(buffer),
+    function(bit) {
+      return ('00' + bit.toString(16)).slice(-2)
+    }
+  )
+  return hexArr.join('');
+}
+wx.onBluetoothDeviceFound(function(res) {
+  var devices = res.devices;
+  console.log('new device list has founded')
+  console.dir(devices)
+  console.log(ab2hex(devices[0].advertisData))
+})
+```
+*
+* **注意**
+*
+* - 蓝牙设备在被搜索到时,系统返回的 `name` 字段一般为广播包中的 `LocalName` 字段中的设备名称,而如果与蓝牙设备建立连接,系统返回的 `name` 字段会改为从蓝牙设备上获取到的 `GattName`。若需要动态改变设备名称并展示,建议使用 `localName` 字段。
+* - 安卓下部分机型需要有位置权限才能搜索到设备,需留意是否开启了位置权限 */
+        onBluetoothDeviceFound(
+            /** 搜索到新设备的事件的回调函数 */
+            callback: OnBluetoothDeviceFoundCallback
+        ): void
+        /** [wx.onCompassChange(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/compass/wx.onCompassChange.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听罗盘数据变化事件。频率:5 次/秒,接口调用后会自动开始监听,可使用 wx.stopCompass 停止监听。
+         *
+         * **accuracy 在 iOS/Android 的差异**
+         *
+         * 由于平台差异,accuracy 在 iOS/Android 的值不同。
+         *
+         * - iOS:accuracy 是一个 number 类型的值,表示相对于磁北极的偏差。0 表示设备指向磁北,90 表示指向东,180 表示指向南,依此类推。
+         * - Android:accuracy 是一个 string 类型的枚举值。
+         *
+         * | 值              | 说明                                                                                   |
+         * | --------------- | -------------------------------------------------------------------------------------- |
+         * | high            | 高精度                                                                                 |
+         * | medium          | 中等精度                                                                               |
+         * | low             | 低精度                                                                                 |
+         * | no-contact      | 不可信,传感器失去连接                                                                 |
+         * | unreliable      | 不可信,原因未知                                                                       |
+         * | unknow ${value} | 未知的精度枚举值,即该 Android 系统此时返回的表示精度的 value 不是一个标准的精度枚举值 | */
+        onCompassChange(
+            /** 罗盘数据变化事件的回调函数 */
+            callback: OnCompassChangeCallback
+        ): void
+        /** [wx.onCopyUrl(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/share/wx.onCopyUrl.html)
+         *
+         * 需要基础库: `2.14.3`
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听用户点击右上角菜单的「复制链接」按钮时触发的事件。本接口为 Beta 版本,暂只在 Android 平台支持。 */
+        onCopyUrl(
+            /** 用户点击右上角菜单的「复制链接」按钮时触发的事件的回调函数 */
+            callback: OnCopyUrlCallback
+        ): void
+        /** [wx.onDeviceMotionChange(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/motion/wx.onDeviceMotionChange.html)
+         *
+         * 需要基础库: `2.3.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听设备方向变化事件。频率根据 [wx.startDeviceMotionListening()](https://developers.weixin.qq.com/miniprogram/dev/api/device/motion/wx.startDeviceMotionListening.html) 的 interval 参数。可以使用 [wx.stopDeviceMotionListening()](https://developers.weixin.qq.com/miniprogram/dev/api/device/motion/wx.stopDeviceMotionListening.html) 停止监听。 */
+        onDeviceMotionChange(
+            /** 设备方向变化事件的回调函数 */
+            callback: OnDeviceMotionChangeCallback
+        ): void
+        /** [wx.onError(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.onError.html)
+         *
+         * 需要基础库: `2.1.2`
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听小程序错误事件。如脚本错误或 API 调用报错等。该事件与 [`App.onError`](https://developers.weixin.qq.com/miniprogram/dev/reference/api/App.html#onerrorstring-error) 的回调时机与参数一致。 */
+        onError(
+            /** 小程序错误事件的回调函数 */
+            callback: OnAppErrorCallback
+        ): void
+        /** [wx.onGetWifiList(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/wifi/wx.onGetWifiList.html)
+         *
+         * 需要基础库: `1.6.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听获取到 Wi-Fi 列表数据事件 */
+        onGetWifiList(
+            /** 获取到 Wi-Fi 列表数据事件的回调函数 */
+            callback: OnGetWifiListCallback
+        ): void
+        /** [wx.onGyroscopeChange(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/gyroscope/wx.onGyroscopeChange.html)
+         *
+         * 需要基础库: `2.3.0`
+         *
+         * 在插件中使用:需要基础库 `2.9.1`
+         *
+         * 监听陀螺仪数据变化事件。频率根据 [wx.startGyroscope()](https://developers.weixin.qq.com/miniprogram/dev/api/device/gyroscope/wx.startGyroscope.html) 的 interval 参数。可以使用 [wx.stopGyroscope()](https://developers.weixin.qq.com/miniprogram/dev/api/device/gyroscope/wx.stopGyroscope.html) 停止监听。 */
+        onGyroscopeChange(
+            /** 陀螺仪数据变化事件的回调函数 */
+            callback: OnGyroscopeChangeCallback
+        ): void
+        /** [wx.onHCEMessage(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/wx.onHCEMessage.html)
+         *
+         * 需要基础库: `1.7.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听接收 NFC 设备消息事件,仅能注册一个监听 */
+        onHCEMessage(
+            /** 接收 NFC 设备消息事件的回调函数 */
+            callback: OnHCEMessageCallback
+        ): void
+        /** [wx.onKeyboardHeightChange(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/keyboard/wx.onKeyboardHeightChange.html)
+*
+* 需要基础库: `2.7.0`
+*
+* 在插件中使用:不支持
+*
+* 监听键盘高度变化
+*
+* **示例代码**
+*
+* ```js
+wx.onKeyboardHeightChange(res => {
+  console.log(res.height)
+})
+``` */
+        onKeyboardHeightChange(callback: OnKeyboardHeightChangeCallback): void
+        /** [wx.onLocalServiceDiscoveryStop(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/mdns/wx.onLocalServiceDiscoveryStop.html)
+         *
+         * 需要基础库: `2.4.0`
+         *
+         * 在插件中使用:需要基础库 `2.15.0`
+         *
+         * 监听 mDNS 服务停止搜索的事件 */
+        onLocalServiceDiscoveryStop(
+            /** mDNS 服务停止搜索的事件的回调函数 */
+            callback: OnLocalServiceDiscoveryStopCallback
+        ): void
+        /** [wx.onLocalServiceFound(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/mdns/wx.onLocalServiceFound.html)
+         *
+         * 需要基础库: `2.4.0`
+         *
+         * 在插件中使用:需要基础库 `2.15.0`
+         *
+         * 监听 mDNS 服务发现的事件 */
+        onLocalServiceFound(
+            /** mDNS 服务发现的事件的回调函数 */
+            callback: OnLocalServiceFoundCallback
+        ): void
+        /** [wx.onLocalServiceLost(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/mdns/wx.onLocalServiceLost.html)
+         *
+         * 需要基础库: `2.4.0`
+         *
+         * 在插件中使用:需要基础库 `2.15.0`
+         *
+         * 监听 mDNS 服务离开的事件 */
+        onLocalServiceLost(
+            /** mDNS 服务离开的事件的回调函数 */
+            callback: OnLocalServiceLostCallback
+        ): void
+        /** [wx.onLocalServiceResolveFail(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/mdns/wx.onLocalServiceResolveFail.html)
+         *
+         * 需要基础库: `2.4.0`
+         *
+         * 在插件中使用:需要基础库 `2.15.0`
+         *
+         * 监听 mDNS 服务解析失败的事件 */
+        onLocalServiceResolveFail(
+            /** mDNS 服务解析失败的事件的回调函数 */
+            callback: OnLocalServiceResolveFailCallback
+        ): void
+        /** [wx.onLocationChange(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.onLocationChange.html)
+*
+* 需要基础库: `2.8.1`
+*
+* 在插件中使用:不支持
+*
+* 监听实时地理位置变化事件,需结合 [wx.startLocationUpdateBackground](https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.startLocationUpdateBackground.html)、[wx.startLocationUpdate](https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.startLocationUpdate.html)使用。
+*
+* **示例代码**
+*
+* ```js
+ const _locationChangeFn = function(res) {
+  console.log('location change', res)
+ }
+ wx.onLocationChange(_locationChangeFn)
+ wx.offLocationChange(_locationChangeFn)
+``` */
+        onLocationChange(
+            /** 实时地理位置变化事件的回调函数 */
+            callback: OnLocationChangeCallback
+        ): void
+        /** [wx.onLocationChangeError(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.onLocationChangeError.html)
+         *
+         * 需要基础库: `2.19.5`
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听持续定位接口返回失败时触发。 */
+        onLocationChangeError(
+            /** 的回调函数 */
+            callback: OnLocationChangeErrorCallback
+        ): void
+        /** [wx.onMemoryWarning(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/memory/wx.onMemoryWarning.html)
+         *
+         * 需要基础库: `2.0.2`
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听内存不足告警事件。
+         *
+         * 当 iOS/Android 向小程序进程发出内存警告时,触发该事件。触发该事件不意味小程序被杀,大部分情况下仅仅是告警,开发者可在收到通知后回收一些不必要资源避免进一步加剧内存紧张。
+         *
+         * **示例代码**
+         *
+         * ```js
+         * wx.onMemoryWarning(function () {
+         *   console.log('onMemoryWarningReceive')
+         * })
+         * `` */
+        onMemoryWarning(
+            /** 内存不足告警事件的回调函数 */
+            callback: OnMemoryWarningCallback
+        ): void
+        /** [wx.onNetworkStatusChange(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/network/wx.onNetworkStatusChange.html)
+*
+* 需要基础库: `1.1.0`
+*
+* 在插件中使用:支持
+*
+* 监听网络状态变化事件
+*
+* **示例代码**
+*
+* ```js
+wx.onNetworkStatusChange(function (res) {
+  console.log(res.isConnected)
+  console.log(res.networkType)
+})
+``` */
+        onNetworkStatusChange(
+            /** 网络状态变化事件的回调函数 */
+            callback: OnNetworkStatusChangeCallback
+        ): void
+        /** [wx.onNetworkWeakChange(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/network/wx.onNetworkWeakChange.html)
+*
+* 需要基础库: `2.21.0`
+*
+* 在插件中使用:不支持
+*
+* 监听弱网状态变化事件
+*
+* **示例代码**
+*
+* ```js
+wx.onNetworkWeakChange(function (res) {
+  console.log(res.weakNet)
+  console.log(res.networkType)
+})
+// 取消监听
+wx.offNetworkWeakChange()
+``` */
+        onNetworkWeakChange(
+            /** 弱网状态变化事件的回调函数 */
+            callback: OnNetworkWeakChangeCallback
+        ): void
+        /** [wx.onPageNotFound(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.onPageNotFound.html)
+         *
+         * 需要基础库: `2.1.2`
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听小程序要打开的页面不存在事件。该事件与 [`App.onPageNotFound`](https://developers.weixin.qq.com/miniprogram/dev/reference/api/App.html#onpagenotfoundobject-object) 的回调时机一致。
+         *
+         * **注意**
+         *
+         * - 开发者可以在回调中进行页面重定向,但必须在回调中**同步**处理,异步处理(例如 `setTimeout` 异步执行)无效。
+         * - 若开发者没有调用 [wx.onPageNotFound](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.onPageNotFound.html) 绑定监听,也没有声明 `App.onPageNotFound`,当跳转页面不存在时,将推入微信客户端原生的页面不存在提示页面。
+         * - 如果回调中又重定向到另一个不存在的页面,将推入微信客户端原生的页面不存在提示页面,并且不再第二次回调。 */
+        onPageNotFound(
+            /** 小程序要打开的页面不存在事件的回调函数 */
+            callback: OnPageNotFoundCallback
+        ): void
+        /** [wx.onSocketClose(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/websocket/wx.onSocketClose.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听 WebSocket 连接关闭事件。**推荐使用 [SocketTask](https://developers.weixin.qq.com/miniprogram/dev/api/network/websocket/SocketTask.html) 的方式去管理 webSocket 链接,每一条链路的生命周期都更加可控。同时存在多个 webSocket 的链接的情况下使用 wx 前缀的方法可能会带来一些和预期不一致的情况。** */
+        onSocketClose(
+            /** WebSocket 连接关闭事件的回调函数 */
+            callback: OnSocketCloseCallback
+        ): void
+        /** [wx.onSocketError(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/websocket/wx.onSocketError.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听 WebSocket 错误事件。**推荐使用 [SocketTask](https://developers.weixin.qq.com/miniprogram/dev/api/network/websocket/SocketTask.html) 的方式去管理 webSocket 链接,每一条链路的生命周期都更加可控。同时存在多个 webSocket 的链接的情况下使用 wx 前缀的方法可能会带来一些和预期不一致的情况。** */
+        onSocketError(
+            /** WebSocket 错误事件的回调函数 */
+            callback: OnSocketErrorCallback
+        ): void
+        /** [wx.onSocketMessage(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/websocket/wx.onSocketMessage.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听 WebSocket 接受到服务器的消息事件。**推荐使用 [SocketTask](https://developers.weixin.qq.com/miniprogram/dev/api/network/websocket/SocketTask.html) 的方式去管理 webSocket 链接,每一条链路的生命周期都更加可控。同时存在多个 webSocket 的链接的情况下使用 wx 前缀的方法可能会带来一些和预期不一致的情况。** */
+        onSocketMessage(
+            /** WebSocket 接受到服务器的消息事件的回调函数 */
+            callback: OnSocketMessageCallback
+        ): void
+        /** [wx.onSocketOpen(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/network/websocket/wx.onSocketOpen.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听 WebSocket 连接打开事件。**推荐使用 [SocketTask](https://developers.weixin.qq.com/miniprogram/dev/api/network/websocket/SocketTask.html) 的方式去管理 webSocket 链接,每一条链路的生命周期都更加可控。同时存在多个 webSocket 的链接的情况下使用 wx 前缀的方法可能会带来一些和预期不一致的情况。** */
+        onSocketOpen(
+            /** WebSocket 连接打开事件的回调函数 */
+            callback: OnSocketOpenCallback
+        ): void
+        /** [wx.onThemeChange(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.onThemeChange.html)
+         *
+         * 需要基础库: `2.11.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听系统主题改变事件。该事件与 [`App.onThemeChange`](https://developers.weixin.qq.com/miniprogram/dev/reference/api/App.html#onThemeChange-Object-object) 的回调时机一致。
+         *
+         * **注意**
+         *
+         * - 只有在全局配置"darkmode": true时才会触发此事件。 */
+        onThemeChange(
+            /** 系统主题改变事件的回调函数 */
+            callback: OnThemeChangeCallback
+        ): void
+        /** [wx.onUnhandledRejection(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.onUnhandledRejection.html)
+         *
+         * 需要基础库: `2.10.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听未处理的 Promise 拒绝事件。该事件与 [ `App.onUnhandledRejection`](https://developers.weixin.qq.com/miniprogram/dev/reference/api/App.html#onUnhandledRejection-Object-object) 的回调时机与参数一致。
+         *
+         * **注意**
+         *
+         * - 所有的 unhandledRejection 都可以被这一监听捕获,但只有 Error 类型的才会在小程序后台触发报警。 */
+        onUnhandledRejection(
+            /** 未处理的 Promise 拒绝事件的回调函数 */
+            callback: OnUnhandledRejectionCallback
+        ): void
+        /** [wx.onUserCaptureScreen(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/screen/wx.onUserCaptureScreen.html)
+*
+* 需要基础库: `1.4.0`
+*
+* 在插件中使用:不支持
+*
+* 监听用户主动截屏事件。用户使用系统截屏按键截屏时触发,只能注册一个监听
+*
+* **示例代码**
+*
+* ```js
+wx.onUserCaptureScreen(function (res) {
+  console.log('用户截屏了')
+})
+``` */
+        onUserCaptureScreen(
+            /** 用户主动截屏事件的回调函数 */
+            callback: OnUserCaptureScreenCallback
+        ): void
+        /** [wx.onVoIPChatInterrupted(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/voip/wx.onVoIPChatInterrupted.html)
+         *
+         * 需要基础库: `2.7.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听被动断开实时语音通话事件。包括小游戏切入后端时断开 */
+        onVoIPChatInterrupted(
+            /** 被动断开实时语音通话事件的回调函数 */
+            callback: OnVoIPChatInterruptedCallback
+        ): void
+        /** [wx.onVoIPChatMembersChanged(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/voip/wx.onVoIPChatMembersChanged.html)
+         *
+         * 需要基础库: `2.7.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听实时语音通话成员在线状态变化事件。有成员加入/退出通话时触发回调 */
+        onVoIPChatMembersChanged(
+            /** 实时语音通话成员在线状态变化事件的回调函数 */
+            callback: OnVoIPChatMembersChangedCallback
+        ): void
+        /** [wx.onVoIPChatSpeakersChanged(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/voip/wx.onVoIPChatSpeakersChanged.html)
+         *
+         * 需要基础库: `2.7.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听实时语音通话成员通话状态变化事件。有成员开始/停止说话时触发回调 */
+        onVoIPChatSpeakersChanged(
+            /** 实时语音通话成员通话状态变化事件的回调函数 */
+            callback: OnVoIPChatSpeakersChangedCallback
+        ): void
+        /** [wx.onVoIPChatStateChanged(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/voip/wx.onVoIPChatStateChanged.html)
+         *
+         * 需要基础库: `2.16.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听房间状态变化事件。 */
+        onVoIPChatStateChanged(
+            /** 房间状态变化事件的回调函数 */
+            callback: OnVoIPChatStateChangedCallback
+        ): void
+        /** [wx.onVoIPVideoMembersChanged(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/media/voip/wx.onVoIPVideoMembersChanged.html)
+         *
+         * 需要基础库: `2.11.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听实时语音通话成员视频状态变化事件。 */
+        onVoIPVideoMembersChanged(
+            /** 实时语音通话成员视频状态变化事件的回调函数 */
+            callback: OnVoIPVideoMembersChangedCallback
+        ): void
+        /** [wx.onWifiConnected(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/device/wifi/wx.onWifiConnected.html)
+         *
+         * 需要基础库: `1.6.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听连接上 Wi-Fi 的事件 */
+        onWifiConnected(
+            /** 连接上 Wi-Fi 的事件的回调函数 */
+            callback: OnWifiConnectedCallback
+        ): void
+        /** [wx.onWindowResize(function callback)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/window/wx.onWindowResize.html)
+         *
+         * 需要基础库: `2.3.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 监听窗口尺寸变化事件 */
+        onWindowResize(
+            /** 窗口尺寸变化事件的回调函数 */
+            callback: OnWindowResizeCallback
+        ): void
+        /** [wx.openAppAuthorizeSetting(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/base/system/wx.openAppAuthorizeSetting.html)
+*
+* 需要基础库: `2.20.1`
+*
+* 在插件中使用:需要基础库 `2.21.3`
+*
+* 跳转系统微信授权管理页
+*
+* **示例代码**
+*
+* ```js
+wx.openAppAuthorizeSetting({
+  success (res) {
+    console.log(res)
+  }
+})
+``` */
+        openAppAuthorizeSetting<
+            T extends OpenAppAuthorizeSettingOption = OpenAppAuthorizeSettingOption
+        >(
+            option?: T
+        ): PromisifySuccessResult<T, OpenAppAuthorizeSettingOption>
+        /** [wx.openBluetoothAdapter(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth/wx.openBluetoothAdapter.html)
+*
+* 需要基础库: `1.1.0`
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 初始化蓝牙模块。iOS 上开启主机/从机(外围设备)模式时需分别调用一次,并指定对应的 `mode`。
+*
+* **object.fail 回调函数返回的 state 参数(仅 iOS)**
+*
+* | 状态码 | 说明   |
+* | ------ | ------ |
+* | 0      | 未知   |
+* | 1      | 重置中 |
+* | 2      | 不支持 |
+* | 3      | 未授权 |
+* | 4      | 未开启 |
+*
+* **注意**
+*
+* - 其他蓝牙相关 API 必须在 [wx.openBluetoothAdapter](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth/wx.openBluetoothAdapter.html) 调用之后使用。否则 API 会返回错误(errCode=10000)。
+* - 在用户蓝牙开关未开启或者手机不支持蓝牙功能的情况下,调用 [wx.openBluetoothAdapter](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth/wx.openBluetoothAdapter.html) 会返回错误(errCode=10001),表示手机蓝牙功能不可用。此时小程序蓝牙模块已经初始化完成,可通过 [wx.onBluetoothAdapterStateChange](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth/wx.onBluetoothAdapterStateChange.html) 监听手机蓝牙状态的改变,也可以调用蓝牙模块的所有API。
+*
+* **示例代码**
+*
+* [在微信开发者工具中查看示例](https://developers.weixin.qq.com/s/pQU51zmz7a3K)
+* ```js
+wx.openBluetoothAdapter({
+  success (res) {
+    console.log(res)
+  }
+})
+``` */
+        openBluetoothAdapter<
+            T extends OpenBluetoothAdapterOption = OpenBluetoothAdapterOption
+        >(
+            option?: T
+        ): PromisifySuccessResult<T, OpenBluetoothAdapterOption>
+        /** [wx.openCard(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/card/wx.openCard.html)
+*
+* 需要基础库: `1.1.0`
+*
+* 在插件中使用:不支持
+*
+* 查看微信卡包中的卡券。只有通过 [认证](https://developers.weixin.qq.com/miniprogram/product/renzheng.html) 的小程序或文化互动类目的小游戏才能使用。更多文档请参考 [微信卡券接口文档](https://mp.weixin.qq.com/cgi-bin/announce?action=getannouncement&key=1490190158&version=1&lang=zh_CN&platform=2)。
+*
+* **示例代码**
+*
+* ```js
+wx.openCard({
+  cardList: [{
+    cardId: '',
+    code: ''
+  }, {
+    cardId: '',
+    code: ''
+  }],
+  success (res) { }
+})
+``` */
+        openCard<T extends OpenCardOption = OpenCardOption>(
+            option: T
+        ): PromisifySuccessResult<T, OpenCardOption>
+        /** [wx.openChannelsActivity(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/channels/wx.openChannelsActivity.html)
+         *
+         * 需要基础库: `2.19.2`
+         *
+         * 在插件中使用:不支持
+         *
+         * 打开视频号视频 */
+        openChannelsActivity(option: OpenChannelsActivityOption): void
+        /** [wx.openChannelsEvent(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/channels/wx.openChannelsEvent.html)
+         *
+         * 需要基础库: `2.21.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 打开视频号活动页 */
+        openChannelsEvent(option: OpenChannelsEventOption): void
+        /** [wx.openChannelsLive(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/channels/wx.openChannelsLive.html)
+         *
+         * 需要基础库: `2.15.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 打开视频号直播 */
+        openChannelsLive(option: OpenChannelsLiveOption): void
+        /** [wx.openChannelsUserProfile(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/channels/wx.openChannelsUserProfile.html)
+         *
+         * 需要基础库: `2.21.2`
+         *
+         * 在插件中使用:不支持
+         *
+         * 打开视频号主页 */
+        openChannelsUserProfile(option: OpenChannelsUserProfileOption): void
+        /** [wx.openCustomerServiceChat(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/service-chat/wx.openCustomerServiceChat.html)
+*
+* 需要基础库: `2.19.0`
+*
+* 在插件中使用:不支持
+*
+* 打开微信客服。了解更多信息,可以参考[微信客服介绍](https://work.weixin.qq.com/kf/)。
+*
+* **示例代码**
+*
+* ```js
+wx.openCustomerServiceChat({
+  extInfo: {url: ''},
+  corpId: '',
+  success(res) {}
+})
+``` */
+        openCustomerServiceChat(option: OpenCustomerServiceChatOption): void
+        /** [wx.openDocument(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/file/wx.openDocument.html)
+         *
+         * 在插件中使用:需要基础库 `2.15.0`
+         *
+         * 新开页面打开文档。微信客户端 `7.0.12` 版本前默认显示右上角菜单按钮,之后的版本默认不显示,需主动传入 `showMenu`。 */
+        openDocument<T extends OpenDocumentOption = OpenDocumentOption>(
+            option: T
+        ): PromisifySuccessResult<T, OpenDocumentOption>
+        /** [wx.openEmbeddedMiniProgram(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/navigate/wx.openEmbeddedMiniProgram.html)
+         *
+         * 需要基础库: `2.20.1`
+         *
+         * 在插件中使用:不支持
+         *
+         * 打开半屏小程序。接入指引请参考 [半屏小程序能力](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/openEmbeddedMiniProgram.html)。 */
+        openEmbeddedMiniProgram<
+            T extends OpenEmbeddedMiniProgramOption = OpenEmbeddedMiniProgramOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, OpenEmbeddedMiniProgramOption>
+        /** [wx.openLocation(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.openLocation.html)
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 使用微信内置地图查看位置
+*
+* **示例代码**
+*
+*  ```js
+ wx.getLocation({
+  type: 'gcj02', //返回可以用于wx.openLocation的经纬度
+  success (res) {
+    const latitude = res.latitude
+    const longitude = res.longitude
+    wx.openLocation({
+      latitude,
+      longitude,
+      scale: 18
+    })
+  }
+})
+ ``` */
+        openLocation<T extends OpenLocationOption = OpenLocationOption>(
+            option: T
+        ): PromisifySuccessResult<T, OpenLocationOption>
+        /** [wx.openSetting(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/setting/wx.openSetting.html)
+*
+* 需要基础库: `1.1.0`
+*
+* 在插件中使用:需要基础库 `2.10.3`
+*
+* 调起客户端小程序设置界面,返回用户设置的操作结果。**设置界面只会出现小程序已经向用户请求过的[权限](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/authorize.html)**。
+*
+* ****
+*
+* - 注意:[2.3.0](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 版本开始,用户发生点击行为后,才可以跳转打开设置页,管理授权信息。[详情](https://developers.weixin.qq.com/community/develop/doc/000cea2305cc5047af5733de751008)
+*
+* **示例代码**
+*
+* ```js
+wx.openSetting({
+  success (res) {
+    console.log(res.authSetting)
+    // res.authSetting = {
+    //   "scope.userInfo": true,
+    //   "scope.userLocation": true
+    // }
+  }
+})
+``` */
+        openSetting<T extends OpenSettingOption = OpenSettingOption>(
+            option?: T
+        ): PromisifySuccessResult<T, OpenSettingOption>
+        /** [wx.openSystemBluetoothSetting(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/base/system/wx.openSystemBluetoothSetting.html)
+*
+* 需要基础库: `2.20.1`
+*
+* 在插件中使用:需要基础库 `2.21.3`
+*
+* 跳转系统蓝牙设置页。仅支持安卓。
+*
+* **示例代码**
+*
+* ```js
+wx.openSystemBluetoothSetting({
+  success (res) {
+    console.log(res)
+  }
+})
+``` */
+        openSystemBluetoothSetting<
+            T extends OpenSystemBluetoothSettingOption = OpenSystemBluetoothSettingOption
+        >(
+            option?: T
+        ): PromisifySuccessResult<T, OpenSystemBluetoothSettingOption>
+        /** [wx.openVideoEditor(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/video/wx.openVideoEditor.html)
+         *
+         * 需要基础库: `2.12.0`
+         *
+         * 在插件中使用:需要基础库 `2.15.0`
+         *
+         * 打开视频编辑器 */
+        openVideoEditor(option: OpenVideoEditorOption): void
+        /** [wx.pageScrollTo(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/scroll/wx.pageScrollTo.html)
+*
+* 需要基础库: `1.4.0`
+*
+* 在插件中使用:需要基础库 `2.1.0`
+*
+* 在插件中使用时,只能在当前插件的页面中调用
+*
+* 将页面滚动到目标位置,支持选择器和滚动距离两种方式定位
+*
+* **selector 语法**
+*
+* selector类似于 CSS 的选择器,但仅支持下列语法。
+*
+* + ID选择器:#the-id
+* + class选择器(可以连续指定多个):.a-class.another-class
+* + 子元素选择器:.the-parent > .the-child
+* + 后代选择器:.the-ancestor .the-descendant
+* + 跨自定义组件的后代选择器:.the-ancestor >>> .the-descendant
+* + 多选择器的并集:#a-node, .some-other-nodes
+*
+* **示例代码**
+*
+* ```js
+wx.pageScrollTo({
+  scrollTop: 0,
+  duration: 300
+})
+``` */
+        pageScrollTo<T extends PageScrollToOption = PageScrollToOption>(
+            option: T
+        ): PromisifySuccessResult<T, PageScrollToOption>
+        /** [wx.pauseBackgroundAudio(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/wx.pauseBackgroundAudio.html)
+*
+* 在插件中使用:需要基础库 `1.9.6`
+* @deprecated 基础库版本 [1.2.0](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 起已废弃,请使用 [wx.getBackgroundAudioManager](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/wx.getBackgroundAudioManager.html) 替换
+*
+* 暂停播放音乐。
+*
+* **示例代码**
+*
+* ```js
+wx.pauseBackgroundAudio()
+``` */
+        pauseBackgroundAudio<
+            T extends PauseBackgroundAudioOption = PauseBackgroundAudioOption
+        >(
+            option?: T
+        ): PromisifySuccessResult<T, PauseBackgroundAudioOption>
+        /** [wx.pauseVoice(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/wx.pauseVoice.html)
+*
+* 在插件中使用:需要基础库 `1.9.6`
+* @deprecated 基础库版本 [1.6.0](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 起已废弃,请使用 [wx.createInnerAudioContext](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/wx.createInnerAudioContext.html) 替换
+*
+* 暂停正在播放的语音。再次调用 [wx.playVoice](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/wx.playVoice.html) 播放同一个文件时,会从暂停处开始播放。如果想从头开始播放,需要先调用 [wx.stopVoice](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/wx.stopVoice.html)。
+*
+* **示例代码**
+*
+* ```js
+wx.startRecord({
+  success (res) {
+    const tempFilePath = res.tempFilePath
+    wx.playVoice({
+      filePath: tempFilePath
+    })
+
+    setTimeout(() => { wx.pauseVoice() }, 5000)
+  }
+})
+``` */
+        pauseVoice<T extends PauseVoiceOption = PauseVoiceOption>(
+            option?: T
+        ): PromisifySuccessResult<T, PauseVoiceOption>
+        /** [wx.playBackgroundAudio(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/wx.playBackgroundAudio.html)
+*
+* 在插件中使用:需要基础库 `1.9.6`
+* @deprecated 基础库版本 [1.2.0](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 起已废弃,请使用 [wx.getBackgroundAudioManager](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/wx.getBackgroundAudioManager.html) 替换
+*
+* 使用后台播放器播放音乐。对于微信客户端来说,只能同时有一个后台音乐在播放。当用户离开小程序后,音乐将暂停播放;当用户在其他小程序占用了音乐播放器,原有小程序内的音乐将停止播放。
+*
+* **示例代码**
+*
+* ```js
+wx.playBackgroundAudio({
+  dataUrl: '',
+  title: '',
+  coverImgUrl: ''
+})
+``` */
+        playBackgroundAudio<
+            T extends PlayBackgroundAudioOption = PlayBackgroundAudioOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, PlayBackgroundAudioOption>
+        /** [wx.playVoice(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/wx.playVoice.html)
+*
+* 在插件中使用:需要基础库 `1.9.6`
+* @deprecated 基础库版本 [1.6.0](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 起已废弃,请使用 [wx.createInnerAudioContext](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/wx.createInnerAudioContext.html) 替换
+*
+* 开始播放语音。同时只允许一个语音文件正在播放,如果前一个语音文件还没播放完,将中断前一个语音播放。
+*
+* **示例代码**
+*
+* ```js
+wx.startRecord({
+  success (res) {
+    const tempFilePath = res.tempFilePath
+    wx.playVoice({
+      filePath: tempFilePath,
+      complete () { }
+    })
+  }
+})
+``` */
+        playVoice<T extends PlayVoiceOption = PlayVoiceOption>(
+            option: T
+        ): PromisifySuccessResult<T, PlayVoiceOption>
+        /** [wx.pluginLogin(Object args)](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/login/wx.pluginLogin.html)
+         *
+         * 在插件中使用:需要基础库 `2.20.1`
+         *
+         * __该接口仅在小程序插件中可调用__,调用接口获得插件用户标志凭证(code)。插件可以此凭证换取用于识别用户的标识 openpid。用户不同、宿主小程序不同或插件不同的情况下,该标识均不相同,即当且仅当同一个用户在同一个宿主小程序中使用同一个插件时,openpid 才会相同。 */
+        pluginLogin(args?: PluginLoginOption): void
+        /** [wx.previewImage(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.previewImage.html)
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 在新页面中全屏预览图片。预览的过程中用户可以进行保存图片、发送给朋友等操作。
+*
+* **示例代码**
+*
+* ```js
+wx.previewImage({
+  current: '', // 当前显示图片的http链接
+  urls: [] // 需要预览的图片http链接列表
+})
+``` */
+        previewImage<T extends PreviewImageOption = PreviewImageOption>(
+            option: T
+        ): PromisifySuccessResult<T, PreviewImageOption>
+        /** [wx.previewMedia(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.previewMedia.html)
+         *
+         * 需要基础库: `2.12.0`
+         *
+         * 在插件中使用:需要基础库 `2.15.0`
+         *
+         * 预览图片和视频。 */
+        previewMedia<T extends PreviewMediaOption = PreviewMediaOption>(
+            option: T
+        ): PromisifySuccessResult<T, PreviewMediaOption>
+        /** [wx.reLaunch(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/route/wx.reLaunch.html)
+*
+* 需要基础库: `1.1.0`
+*
+* 在插件中使用:需要基础库 `2.3.1`
+*
+* 在插件中使用时,只能在当前插件的页面中调用
+*
+* 关闭所有页面,打开到应用内的某个页面
+*
+* **示例代码**
+*
+* ```js
+wx.reLaunch({
+  url: 'test?id=1'
+})
+```
+*
+* ```html
+* // test
+* Page({
+*   onLoad (option) {
+*     console.log(option.query)
+*   }
+* })
+* ``` */
+        reLaunch<T extends ReLaunchOption = ReLaunchOption>(
+            option: T
+        ): PromisifySuccessResult<T, ReLaunchOption>
+        /** [wx.readBLECharacteristicValue(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.readBLECharacteristicValue.html)
+*
+* 需要基础库: `1.1.0`
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 读取蓝牙低功耗设备特征值的二进制数据。注意:必须设备的特征支持 read 才可以成功调用。
+*
+* **注意**
+*
+* - 并行调用多次会存在读失败的可能性。
+* - 接口读取到的信息需要在 [wx.onBLECharacteristicValueChange](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.onBLECharacteristicValueChange.html) 方法注册的回调中获取。
+*
+* **示例代码**
+*
+* [在微信开发者工具中查看示例](https://developers.weixin.qq.com/s/pQU51zmz7a3K)
+* ```js
+// 必须在这里的回调才能获取
+wx.onBLECharacteristicValueChange(function(characteristic) {
+  console.log('characteristic value comed:', characteristic)
+})
+
+wx.readBLECharacteristicValue({
+  // 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接
+  deviceId,
+  // 这里的 serviceId 需要在 getBLEDeviceServices 接口中获取
+  serviceId,
+  // 这里的 characteristicId 需要在 getBLEDeviceCharacteristics 接口中获取
+  characteristicId,
+  success (res) {
+    console.log('readBLECharacteristicValue:', res.errCode)
+  }
+})
+``` */
+        readBLECharacteristicValue<
+            T extends ReadBLECharacteristicValueOption = ReadBLECharacteristicValueOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, ReadBLECharacteristicValueOption>
+        /** [wx.redirectTo(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/route/wx.redirectTo.html)
+*
+* 在插件中使用:需要基础库 `2.2.2`
+*
+* 在插件中使用时,只能在当前插件的页面中调用
+*
+* 关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面。
+*
+* **示例代码**
+*
+* ```js
+wx.redirectTo({
+  url: 'test?id=1'
+})
+``` */
+        redirectTo<T extends RedirectToOption = RedirectToOption>(
+            option: T
+        ): PromisifySuccessResult<T, RedirectToOption>
+        /** [wx.removeSavedFile(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/file/wx.removeSavedFile.html)
+*
+* 在插件中使用:不支持
+*
+* 删除本地缓存文件
+*
+* **示例代码**
+*
+* ```js
+wx.getSavedFileList({
+ success (res) {
+   if (res.fileList.length > 0){
+     wx.removeSavedFile({
+       filePath: res.fileList[0].filePath,
+       complete (res) {
+         console.log(res)
+       }
+     })
+   }
+ }
+})
+``` */
+        removeSavedFile<
+            T extends WxRemoveSavedFileOption = WxRemoveSavedFileOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, WxRemoveSavedFileOption>
+        /** [wx.removeStorage(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/storage/wx.removeStorage.html)
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 从本地缓存中移除指定 key。缓存相关策略请查看 [存储](https://developers.weixin.qq.com/miniprogram/dev/framework/ability/storage.html)。
+*
+* **示例代码**
+*
+* ```js
+wx.removeStorage({
+  key: 'key',
+  success (res) {
+    console.log(res)
+  }
+})
+```
+*
+* ```js
+try {
+  wx.removeStorageSync('key')
+} catch (e) {
+  // Do something when catch error
+}
+``` */
+        removeStorage<T extends RemoveStorageOption = RemoveStorageOption>(
+            option: T
+        ): PromisifySuccessResult<T, RemoveStorageOption>
+        /** [wx.removeStorageSync(string key)](https://developers.weixin.qq.com/miniprogram/dev/api/storage/wx.removeStorageSync.html)
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* [wx.removeStorage](https://developers.weixin.qq.com/miniprogram/dev/api/storage/wx.removeStorage.html) 的同步版本
+*
+* **示例代码**
+*
+* ```js
+wx.removeStorage({
+  key: 'key',
+  success (res) {
+    console.log(res)
+  }
+})
+```
+*
+* ```js
+try {
+  wx.removeStorageSync('key')
+} catch (e) {
+  // Do something when catch error
+}
+``` */
+        removeStorageSync(
+            /** 本地缓存中指定的 key */
+            key: string
+        ): void
+        /** [wx.removeTabBarBadge(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/tab-bar/wx.removeTabBarBadge.html)
+         *
+         * 需要基础库: `1.9.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 移除 tabBar 某一项右上角的文本 */
+        removeTabBarBadge<
+            T extends RemoveTabBarBadgeOption = RemoveTabBarBadgeOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, RemoveTabBarBadgeOption>
+        /** [wx.reportAnalytics(string eventName, Object data)](https://developers.weixin.qq.com/miniprogram/dev/api/data-analysis/wx.reportAnalytics.html)
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 在插件中使用时,可以被正常调用,但目前不会进行统计展示
+*
+* 自定义分析数据上报接口。使用前,需要在小程序管理后台自定义分析中新建事件,配置好事件名与字段。
+*
+* **示例代码**
+*
+* ```js
+wx.reportAnalytics('purchase', {
+  price: 120,
+  color: 'red'
+})
+``` */
+        reportAnalytics(
+            /** 事件名 */
+            eventName: string,
+            /** 上报的自定义数据,key 为配置中的字段名,value 为上报的数据。 */
+            data: IAnyObject
+        ): void
+        /** [wx.reportEvent(string eventId, object data)](https://developers.weixin.qq.com/miniprogram/dev/api/data-analysis/wx.reportEvent.html)
+         *
+         * 需要基础库: `2.14.4`
+         *
+         * 在插件中使用:不支持
+         *
+         * 事件上报 */
+        reportEvent(
+            /** 在 mp 实验系统中设置的事件英文名 */
+            eventId: string,
+            /** 可被 JSON.stringily 的对象,将一起上报至系统 */
+            data?: IAnyObject
+        ): void
+        /** [wx.reportMonitor(string name, number value)](https://developers.weixin.qq.com/miniprogram/dev/api/data-analysis/wx.reportMonitor.html)
+*
+* 需要基础库: `2.0.1`
+*
+* 在插件中使用:不支持
+*
+* 自定义业务数据监控上报接口。
+*
+* **使用说明**
+*
+* 使用前,需要在「小程序管理后台-运维中心-性能监控-业务数据监控」中新建监控事件,配置监控描述与告警类型。每一个监控事件对应唯一的监控ID,开发者最多可以创建128个监控事件。
+*
+* **示例代码**
+*
+* ```js
+wx.reportMonitor('1', 1)
+``` */
+        reportMonitor(
+            /** 监控ID,在「小程序管理后台」新建数据指标后获得 */
+            name: string,
+            /** 上报数值,经处理后会在「小程序管理后台」上展示每分钟的上报总量 */
+            value: number
+        ): void
+        /** [wx.reportPerformance(Number id, Number value, String|Array dimensions)](https://developers.weixin.qq.com/miniprogram/dev/api/base/performance/wx.reportPerformance.html)
+*
+* 需要基础库: `2.9.2`
+*
+* 在插件中使用:需要基础库 `2.9.3`
+*
+* 小程序测速上报。使用前,需要在小程序管理后台配置。 详情参见[小程序测速](https://developers.weixin.qq.com/miniprogram/dev/framework/performanceReport/index.html)指南。
+*
+* **示例代码**
+*
+* ```js
+wx.reportPerformance(1101, 680)
+wx.reportPerformance(1101, 680, 'custom')
+``` */
+        reportPerformance(
+            /** 指标 id */
+            id: number,
+            /** 需要上报的数值 */
+            value: number,
+            /** 自定义维度 (选填) */
+            dimensions?: string | any[]
+        ): void
+        /** [wx.requestOrderPayment(Object args)](https://developers.weixin.qq.com/miniprogram/dev/api/payment/wx.requestOrderPayment.html)
+         *
+         * 需要基础库: `2.16.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 创建自定义版交易组件订单,并发起支付。
+         * 仅接入了[自定义版交易组件](https://developers.weixin.qq.com/miniprogram/dev/framework/ministore/minishopopencomponent2/Introduction2)的小程序需要使用,普通小程序可直接使用 [`wx.requestPayment`](./wx.requestPayment)。
+         *
+         * **前置检查**
+         *
+         * 接入自定义版交易组件之后,若要发起微信支付,请先查询[需要校验的场景](https://developers.weixin.qq.com/miniprogram/dev/framework/ministore/minishopopencomponent2/API/order/check_scene)。
+         * 在需要校验的场景中,发起微信支付时,必须使用该接口,需要按照要求传入相关的[订单信息](https://developers.weixin.qq.com/miniprogram/dev/framework/ministore/minishopopencomponent2/API/order/add_order)进行校验,校验通过后用户才可以完成当前订单的支付,非需要校验的场景则可以按照商家要求自行选择传入订单信息或不传入。 */
+        requestOrderPayment<
+            T extends RequestOrderPaymentOption = RequestOrderPaymentOption
+        >(
+            args: T
+        ): PromisifySuccessResult<T, RequestOrderPaymentOption>
+        /** [wx.requestPayment(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/payment/wx.requestPayment.html)
+*
+* 在插件中使用:不支持
+*
+* 发起微信支付。调用前需在[小程序微信公众平台](https://mp.weixin.qq.com/) -功能-微信支付入口申请接入微信支付。了解更多信息,可以参考 [微信支付开发文档](https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pages/api.shtml):
+* - [开发指引](https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pay/transactions/chapter2_3.shtml)
+* - [下单接口](https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pay/transactions/chapter3_2.shtml)
+* - [支付接口](https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pay/transactions/chapter3_12.shtml)
+* - 旧版本 (v2)
+*   - [开发指引](https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_3&index=1)
+*   - [支付接口](https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_7&index=3)
+*
+* 如果使用[云开发](https://developers.weixin.qq.com/miniprogram/dev/wxcloud/basis/getting-started.html),则 `wx.requestPayment` 所需参数可以通过云开发微信支付统一下单接口免鉴权获取、并可免证书、免签名的安全调用微信支付服务端接口、及接收异步支付结果回调,详见[云开发微信支付](https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/wechatpay/wechatpay.html)。
+*
+* **示例代码**
+*
+* ```js
+wx.requestPayment({
+  timeStamp: '',
+  nonceStr: '',
+  package: '',
+  signType: 'MD5',
+  paySign: '',
+  success (res) { },
+  fail (res) { }
+})
+```
+*
+* 注:如果服务端有使用云开发,可以通过云开发微信支付[统一下单](https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/open/pay/CloudPay.unifiedOrder.html)接口免鉴权获取以上所需所有参数,示例:
+*
+* ```js
+// 云函数代码
+const cloud = require('wx-server-sdk')
+cloud.init({
+  env: cloud.DYNAMIC_CURRENT_ENV
+})
+
+exports.main = async (event, context) => {
+  const res = await cloud.cloudPay.unifiedOrder({
+    "body" : "小秋TIT店-超市",
+    "outTradeNo" : "1217752501201407033233368018",
+    "spbillCreateIp" : "127.0.0.1",
+    "subMchId" : "1900009231",
+    "totalFee" : 1,
+    "envId": "test-f0b102",
+    "functionName": "pay_cb"
+  })
+  return res
+}
+
+// 小程序代码
+wx.cloud.callFunction({
+  name: '函数名',
+  data: {
+    // ...
+  },
+  success: res => {
+    const payment = res.result.payment
+    wx.requestPayment({
+      ...payment,
+      success (res) {
+        console.log('pay success', res)
+      },
+      fail (err) {
+        console.error('pay fail', err)
+      }
+    })
+  },
+  fail: console.error,
+})
+``` */
+        requestPayment<T extends RequestPaymentOption = RequestPaymentOption>(
+            option: T
+        ): PromisifySuccessResult<T, RequestPaymentOption>
+        /** [wx.requestSubscribeDeviceMessage(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/subscribe-message/wx.requestSubscribeDeviceMessage.html)
+*
+* 需要基础库: `2.20.0`
+*
+* 在插件中使用:不支持
+*
+* 订阅设备消息接口,调用后弹出授权框,用户同意后会允许开发者给用户发送订阅模版消息。当用户点击“允许”按钮时,模板消息会被添加到用户的小程序设置页,通过 wx.getSetting 接口可获取用户对相关模板消息的订阅状态。
+*
+* **示例代码**
+*
+* ```js
+wx.requestSubscribeDeviceMessage({
+  tmplIds: ['xxxxx'],
+  sn: 'xxxx',
+  snTicket: 'xxxxx',
+  modelId: 'xxx',
+  success(res) {
+    console.log(res)
+  },
+  fail(res) {
+    console.log(res)
+  }
+})
+``` */
+        requestSubscribeDeviceMessage<
+            T extends RequestSubscribeDeviceMessageOption = RequestSubscribeDeviceMessageOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, RequestSubscribeDeviceMessageOption>
+        /** [wx.requestSubscribeMessage(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/subscribe-message/wx.requestSubscribeMessage.html)
+*
+* 需要基础库: `2.4.4`
+*
+* 在插件中使用:不支持
+*
+* 调起客户端小程序订阅消息界面,返回用户订阅消息的操作结果。当用户勾选了订阅面板中的“总是保持以上选择,不再询问”时,模板消息会被添加到用户的小程序设置页,通过 [wx.getSetting](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/setting/wx.getSetting.html) 接口可获取用户对相关模板消息的订阅状态。
+*
+* ## 注意事项
+*  - 一次性模板 id 和永久模板 id 不可同时使用。
+*  - 低版本基础库2.4.4~2.8.3 已支持订阅消息接口调用,仅支持传入一个一次性 tmplId / 永久 tmplId。
+*  - [2.8.2](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 版本开始,用户发生点击行为或者发起支付回调后,才可以调起订阅消息界面。
+*  - [2.10.0](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 版本开始,开发版和体验版小程序将禁止使用模板消息 formId。
+*  - 一次授权调用里,每个tmplId对应的模板标题不能存在相同的,若出现相同的,只保留一个。
+*  - [2.10.0](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 版本开始,支持订阅语音消息提醒,[详情](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/subscribe-message.html)
+*
+* **错误码**
+*
+* | errCode | errMsg                                                 | 说明                                                           |
+* | ------- | ------------------------------------------------------ | -------------------------------------------------------------- |
+* | 10001   | TmplIds can't be empty                                 | 参数传空了                                                     |
+* | 10002   | Request list fail                                       | 网络问题,请求消息列表失败                                     |
+* | 10003   | Request subscribe fail                                 | 网络问题,订阅请求发送失败                                     |
+* | 10004   | Invalid template id                                    | 参数类型错误                                                   |
+* | 10005   | Cannot show subscribe message UI                       | 无法展示 UI,一般是小程序这个时候退后台了导致的                |
+* | 20001   | No template data return, verify the template id exist  | 没有模板数据,一般是模板 ID 不存在 或者和模板类型不对应 导致的 |
+* | 20002   | Templates type must be same                            | 模板消息类型 既有一次性的又有永久的                            |
+* | 20003   | Templates count out of max bounds                      | 模板消息数量超过上限                                           |
+* | 20004   | The main switch is switched off                        | 用户关闭了主开关,无法进行订阅                                 |
+* | 20005   | This mini program was banned from subscribing messages | 小程序被禁封                                                   |
+*
+* **示例代码**
+*
+* ```js
+wx.requestSubscribeMessage({
+  tmplIds: [''],
+  success (res) { }
+})
+``` */
+        requestSubscribeMessage<
+            T extends RequestSubscribeMessageOption = RequestSubscribeMessageOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, RequestSubscribeMessageOption>
+        /** [wx.reserveChannelsLive(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/channels/wx.reserveChannelsLive.html)
+         *
+         * 需要基础库: `2.19.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 预约视频号直播 */
+        reserveChannelsLive(option: ReserveChannelsLiveOption): void
+        /** [wx.revokeBufferURL(string url)](https://developers.weixin.qq.com/miniprogram/dev/api/storage/wx.revokeBufferURL.html)
+         *
+         * 需要基础库: `2.14.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 根据 URL 销毁存在内存中的数据 */
+        revokeBufferURL(
+            /** 需要销毁的二进制数据 URL */
+            url: string
+        ): void
+        /** [wx.saveFile(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/file/wx.saveFile.html)
+*
+* 在插件中使用:不支持
+*
+* 保存文件到本地。注意:**saveFile 会把临时文件移动,因此调用成功后传入的 tempFilePath 将不可用**
+*
+* **示例代码**
+*
+* ```js
+wx.chooseImage({
+  success: function(res) {
+    const tempFilePaths = res.tempFilePaths
+    wx.saveFile({
+      tempFilePath: tempFilePaths[0],
+      success (res) {
+        const savedFilePath = res.savedFilePath
+      }
+    })
+  }
+})
+```
+*
+* **注意**
+*
+* 本地文件存储的大小限制为 10M */
+        saveFile<T extends WxSaveFileOption = WxSaveFileOption>(
+            option: T
+        ): PromisifySuccessResult<T, WxSaveFileOption>
+        /** [wx.saveFileToDisk(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/file/wx.saveFileToDisk.html)
+*
+* 需要基础库: `2.11.0`
+*
+* 在插件中使用:需要基础库 `2.15.0`
+*
+* 保存文件系统的文件到用户磁盘,仅在 PC 端支持
+*
+* **示例代码**
+*
+* ```js
+wx.saveFileToDisk({
+  filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
+  success(res) {
+    console.log(res)
+  },
+  fail(res) {
+    console.error(res)
+  }
+})
+``` */
+        saveFileToDisk(option: SaveFileToDiskOption): void
+        /** [wx.saveImageToPhotosAlbum(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.saveImageToPhotosAlbum.html)
+*
+* 需要基础库: `1.2.0`
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 保存图片到系统相册。
+*
+* **示例代码**
+*
+* ```js
+wx.saveImageToPhotosAlbum({
+  success(res) { }
+})
+``` */
+        saveImageToPhotosAlbum<
+            T extends SaveImageToPhotosAlbumOption = SaveImageToPhotosAlbumOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, SaveImageToPhotosAlbumOption>
+        /** [wx.saveVideoToPhotosAlbum(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/video/wx.saveVideoToPhotosAlbum.html)
+*
+* 需要基础库: `1.2.0`
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 保存视频到系统相册。支持mp4视频格式。
+*
+* **示例代码**
+*
+* ```js
+wx.saveVideoToPhotosAlbum({
+  filePath: 'wxfile://xxx',
+  success (res) {
+    console.log(res.errMsg)
+  }
+})
+``` */
+        saveVideoToPhotosAlbum<
+            T extends SaveVideoToPhotosAlbumOption = SaveVideoToPhotosAlbumOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, SaveVideoToPhotosAlbumOption>
+        /** [wx.scanCode(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/scan/wx.scanCode.html)
+*
+* 需要基础库: `1.0.0`
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 调起客户端扫码界面进行扫码
+*
+* **示例代码**
+*
+* ```js
+// 允许从相机和相册扫码
+wx.scanCode({
+  success (res) {
+    console.log(res)
+  }
+})
+
+// 只允许从相机扫码
+wx.scanCode({
+  onlyFromCamera: true,
+  success (res) {
+    console.log(res)
+  }
+})
+``` */
+        scanCode<T extends ScanCodeOption = ScanCodeOption>(
+            option: T
+        ): PromisifySuccessResult<T, ScanCodeOption>
+        /** [wx.seekBackgroundAudio(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/wx.seekBackgroundAudio.html)
+*
+* 在插件中使用:需要基础库 `1.9.6`
+* @deprecated 基础库版本 [1.2.0](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 起已废弃,请使用 [wx.getBackgroundAudioManager](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/wx.getBackgroundAudioManager.html) 替换
+*
+* 控制音乐播放进度。
+*
+* **示例代码**
+*
+* ```js
+wx.seekBackgroundAudio({
+  position: 30
+})
+``` */
+        seekBackgroundAudio<
+            T extends SeekBackgroundAudioOption = SeekBackgroundAudioOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, SeekBackgroundAudioOption>
+        /** [wx.sendHCEMessage(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/wx.sendHCEMessage.html)
+*
+* 需要基础库: `1.7.0`
+*
+* 在插件中使用:需要基础库 `2.1.0`
+*
+* 发送 NFC 消息。仅在安卓系统下有效。
+*
+* **示例代码**
+*
+* ```js
+const buffer = new ArrayBuffer(1)
+const dataView = new DataView(buffer)
+dataView.setUint8(0, 0)
+
+wx.startHCE({
+  success (res) {
+    wx.onHCEMessage(function(res) {
+      if (res.messageType === 1) {
+        wx.sendHCEMessage({data: buffer})
+      }
+    })
+  }
+})
+``` */
+        sendHCEMessage<T extends SendHCEMessageOption = SendHCEMessageOption>(
+            option: T
+        ): PromisifySuccessResult<T, SendHCEMessageOption>
+        /** [wx.sendSocketMessage(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/network/websocket/wx.sendSocketMessage.html)
+*
+* 在插件中使用:不支持
+*
+* 通过 WebSocket 连接发送数据。需要先 wx.connectSocket,并在 wx.onSocketOpen 回调之后才能发送。**推荐使用 [SocketTask](https://developers.weixin.qq.com/miniprogram/dev/api/network/websocket/SocketTask.html) 的方式去管理 webSocket 链接,每一条链路的生命周期都更加可控。同时存在多个 webSocket 的链接的情况下使用 wx 前缀的方法可能会带来一些和预期不一致的情况。**
+*
+* **示例代码**
+*
+* ```js
+let socketOpen = false
+let socketMsgQueue = []
+wx.connectSocket({
+  url: 'test.php'
+})
+
+wx.onSocketOpen(function(res) {
+  socketOpen = true
+  for (let i = 0; i < socketMsgQueue.length; i++){
+    sendSocketMessage(socketMsgQueue[i])
+  }
+  socketMsgQueue = []
+})
+
+function sendSocketMessage(msg) {
+  if (socketOpen) {
+    wx.sendSocketMessage({
+      data:msg
+    })
+  } else {
+    socketMsgQueue.push(msg)
+  }
+}
+``` */
+        sendSocketMessage<
+            T extends SendSocketMessageOption = SendSocketMessageOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, SendSocketMessageOption>
+        /** [wx.setBLEMTU(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.setBLEMTU.html)
+         *
+         * 需要基础库: `2.11.0`
+         *
+         * 在插件中使用:需要基础库 `2.11.0`
+         *
+         * 协商设置蓝牙低功耗的最大传输单元 (Maximum Transmission Unit, MTU)。需在 [wx.createBLEConnection](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.createBLEConnection.html) 调用成功后调用。仅安卓系统 5.1 以上版本有效,iOS 因系统限制不支持。 */
+        setBLEMTU<T extends SetBLEMTUOption = SetBLEMTUOption>(
+            option: T
+        ): PromisifySuccessResult<T, SetBLEMTUOption>
+        /** [wx.setBackgroundColor(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/background/wx.setBackgroundColor.html)
+*
+* 需要基础库: `2.1.0`
+*
+* 在插件中使用:需要基础库 `2.4.0`
+*
+* 在插件中使用时,只能在当前插件的页面中调用
+*
+* 动态设置窗口的背景色
+*
+* **示例代码**
+*
+* ```js
+wx.setBackgroundColor({
+  backgroundColor: '#ffffff', // 窗口的背景色为白色
+})
+
+wx.setBackgroundColor({
+  backgroundColorTop: '#ffffff', // 顶部窗口的背景色为白色
+  backgroundColorBottom: '#ffffff', // 底部窗口的背景色为白色
+})
+``` */
+        setBackgroundColor<
+            T extends SetBackgroundColorOption = SetBackgroundColorOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, SetBackgroundColorOption>
+        /** [wx.setBackgroundFetchToken(object object)](https://developers.weixin.qq.com/miniprogram/dev/api/storage/background-fetch/wx.setBackgroundFetchToken.html)
+         *
+         * 需要基础库: `2.8.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 设置自定义登录态,在周期性拉取数据时带上,便于第三方服务器验证请求合法性 */
+        setBackgroundFetchToken<
+            T extends SetBackgroundFetchTokenOption = SetBackgroundFetchTokenOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, SetBackgroundFetchTokenOption>
+        /** [wx.setBackgroundTextStyle(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/background/wx.setBackgroundTextStyle.html)
+*
+* 需要基础库: `2.1.0`
+*
+* 在插件中使用:需要基础库 `2.4.0`
+*
+* 在插件中使用时,只能在当前插件的页面中调用
+*
+* 动态设置下拉背景字体、loading 图的样式
+*
+* **示例代码**
+*
+* ```js
+wx.setBackgroundTextStyle({
+  textStyle: 'dark' // 下拉背景字体、loading 图的样式为dark
+})
+``` */
+        setBackgroundTextStyle<
+            T extends SetBackgroundTextStyleOption = SetBackgroundTextStyleOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, SetBackgroundTextStyleOption>
+        /** [wx.setClipboardData(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/clipboard/wx.setClipboardData.html)
+*
+* 需要基础库: `1.1.0`
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 设置系统剪贴板的内容。调用成功后,会弹出 toast 提示"内容已复制",持续 1.5s
+*
+* **示例代码**
+*
+* ```js
+wx.setClipboardData({
+  data: 'data',
+  success (res) {
+    wx.getClipboardData({
+      success (res) {
+        console.log(res.data) // data
+      }
+    })
+  }
+})
+``` */
+        setClipboardData<
+            T extends SetClipboardDataOption = SetClipboardDataOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, SetClipboardDataOption>
+        /** [wx.setEnable1v1Chat(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/voip/wx.setEnable1v1Chat.html)
+         *
+         * 需要基础库: `2.20.1`
+         *
+         * 在插件中使用:不支持
+         *
+         * 开启双人通话。设置 `enable` 为 `false` 时,无法接听呼叫。 */
+        setEnable1v1Chat(option: SetEnable1v1ChatOption): void
+        /** [wx.setEnableDebug(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/wx.setEnableDebug.html)
+*
+* 需要基础库: `1.4.0`
+*
+* 在插件中使用:不支持
+*
+* 设置是否打开调试开关。此开关对正式版也能生效。
+*
+* **示例代码**
+*
+* ```javascript
+// 打开调试
+wx.setEnableDebug({
+  enableDebug: true
+})
+
+// 关闭调试
+wx.setEnableDebug({
+  enableDebug: false
+})
+```
+*
+* **Tips**
+*
+* - 在正式版打开调试还有一种方法,就是先在开发版或体验版打开调试,再切到正式版就能看到vConsole。 */
+        setEnableDebug<T extends SetEnableDebugOption = SetEnableDebugOption>(
+            option: T
+        ): PromisifySuccessResult<T, SetEnableDebugOption>
+        /** [wx.setInnerAudioOption(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/wx.setInnerAudioOption.html)
+         *
+         * 需要基础库: `2.3.0`
+         *
+         * 在插件中使用:需要基础库 `2.10.0`
+         *
+         * 设置 [InnerAudioContext](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/InnerAudioContext.html) 的播放选项。设置之后对当前小程序全局生效。
+         *
+         * ****
+         *
+         * ## 注意事项
+         * - 为保证微信整体体验,speakerOn 为 true 时,客户端会忽略 mixWithOthers 参数的内容,强制与其它音频互斥
+         * - 不支持在播放音频的过程中切换为扬声器播放,开发者如需切换可以先暂停当前播放的音频并记录下当前暂停的时间点,然后切换后重新从原来暂停的时间点开始播放音频
+         * - 目前 wx.setInnerAudioOption 接口不兼容 wx.createWebAudioContext 接口,也不兼容 wx.createInnerAudioContext 开启 useWebAudioImplement 的情况,将在后续版本中支持 */
+        setInnerAudioOption<
+            T extends SetInnerAudioOption = SetInnerAudioOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, SetInnerAudioOption>
+        /** [wx.setKeepScreenOn(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/screen/wx.setKeepScreenOn.html)
+*
+* 需要基础库: `1.4.0`
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 设置是否保持常亮状态。仅在当前小程序生效,离开小程序后设置失效。
+*
+* **示例代码**
+*
+* ```js
+wx.setKeepScreenOn({
+  keepScreenOn: true
+})
+``` */
+        setKeepScreenOn<
+            T extends SetKeepScreenOnOption = SetKeepScreenOnOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, SetKeepScreenOnOption>
+        /** [wx.setNavigationBarColor(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/navigation-bar/wx.setNavigationBarColor.html)
+         *
+         * 需要基础库: `1.4.0`
+         *
+         * 在插件中使用:需要基础库 `2.1.0`
+         *
+         * 在插件中使用时,只能在当前插件的页面中调用
+         *
+         * 设置页面导航条颜色 */
+        setNavigationBarColor<
+            T extends SetNavigationBarColorOption = SetNavigationBarColorOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, SetNavigationBarColorOption>
+        /** [wx.setNavigationBarTitle(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/navigation-bar/wx.setNavigationBarTitle.html)
+*
+* 在插件中使用:需要基础库 `2.1.0`
+*
+* 在插件中使用时,只能在当前插件的页面中调用
+*
+* 动态设置当前页面的标题
+*
+* **示例代码**
+*
+* ```js
+wx.setNavigationBarTitle({
+  title: '当前页面'
+})
+``` */
+        setNavigationBarTitle<
+            T extends SetNavigationBarTitleOption = SetNavigationBarTitleOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, SetNavigationBarTitleOption>
+        /** [wx.setScreenBrightness(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/screen/wx.setScreenBrightness.html)
+         *
+         * 需要基础库: `1.2.0`
+         *
+         * 在插件中使用:需要基础库 `1.9.6`
+         *
+         * 设置屏幕亮度 */
+        setScreenBrightness<
+            T extends SetScreenBrightnessOption = SetScreenBrightnessOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, SetScreenBrightnessOption>
+        /** [wx.setStorage(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/storage/wx.setStorage.html)
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 将数据存储在本地缓存中指定的 key 中。会覆盖掉原来该 key 对应的内容。除非用户主动删除或因存储空间原因被系统清理,否则数据都一直可用。单个 key 允许存储的最大数据长度为 1MB,所有数据存储上限为 10MB。
+*
+* **示例代码**
+*
+* ```js
+wx.setStorage({
+  key:"key",
+  data:"value"
+})
+```
+* ```js
+try {
+  wx.setStorageSync('key', 'value')
+} catch (e) { }
+```
+* ```js
+// 开启加密存储
+wx.setStorage({
+  key: "key",
+  data: "value",
+  encrypt: true, // 若开启加密存储,setStorage 和 getStorage 需要同时声明 encrypt 的值为 true
+  success() {
+    wx.getStorage({
+      key: "key",
+      encrypt: true, // 若开启加密存储,setStorage 和 getStorage 需要同时声明 encrypt 的值为 true
+      success(res) {
+        console.log(res.data)
+      }
+    })
+  }
+})
+``` */
+        setStorage<
+            T = any,
+            U extends SetStorageOption<T> = SetStorageOption<T>
+        >(
+            option: U
+        ): PromisifySuccessResult<U, SetStorageOption<T>>
+        /** [wx.setStorageSync(string key, any data, Boolean encrypt)](https://developers.weixin.qq.com/miniprogram/dev/api/storage/wx.setStorageSync.html)
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* [wx.setStorage](https://developers.weixin.qq.com/miniprogram/dev/api/storage/wx.setStorage.html) 的同步版本
+*
+* **示例代码**
+*
+* ```js
+wx.setStorage({
+  key:"key",
+  data:"value"
+})
+```
+* ```js
+try {
+  wx.setStorageSync('key', 'value')
+} catch (e) { }
+```
+* ```js
+// 开启加密存储
+wx.setStorage({
+  key: "key",
+  data: "value",
+  encrypt: true, // 若开启加密存储,setStorage 和 getStorage 需要同时声明 encrypt 的值为 true
+  success() {
+    wx.getStorage({
+      key: "key",
+      encrypt: true, // 若开启加密存储,setStorage 和 getStorage 需要同时声明 encrypt 的值为 true
+      success(res) {
+        console.log(res.data)
+      }
+    })
+  }
+})
+``` */
+        setStorageSync<T = any>(
+            /** 本地缓存中指定的 key */
+            key: string,
+            /** 需要存储的内容。只支持原生类型、Date、及能够通过`JSON.stringify`序列化的对象。 */
+            data: T,
+            /** 需要基础库: `2.21.3`
+             *
+             * 是否开启加密存储。只有异步的 setStorage 接口支持开启加密存储。开启后,将会对 data 使用 AES128 加密,接口回调耗时将会增加。若开启加密存储,setStorage 和 getStorage 需要同时声明 encrypt 的值为 true。此外,由于加密后的数据会比原始数据膨胀1.4倍,因此开启 encrypt 的情况下,单个 key 允许存储的最大数据长度为 0.7MB,所有数据存储上限为 7.1MB */
+            encrypt?: boolean
+        ): void
+        /** [wx.setTabBarBadge(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/tab-bar/wx.setTabBarBadge.html)
+*
+* 需要基础库: `1.9.0`
+*
+* 在插件中使用:不支持
+*
+* 为 tabBar 某一项的右上角添加文本
+*
+* **示例代码**
+*
+* ```js
+wx.setTabBarBadge({
+  index: 0,
+  text: '1'
+})
+``` */
+        setTabBarBadge<T extends SetTabBarBadgeOption = SetTabBarBadgeOption>(
+            option: T
+        ): PromisifySuccessResult<T, SetTabBarBadgeOption>
+        /** [wx.setTabBarItem(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/tab-bar/wx.setTabBarItem.html)
+*
+* 需要基础库: `1.9.0`
+*
+* 在插件中使用:不支持
+*
+* 动态设置 tabBar 某一项的内容,`2.7.0` 起图片支持临时文件和网络文件。
+*
+* **示例代码**
+*
+* ```js
+wx.setTabBarItem({
+  index: 0,
+  text: 'text',
+  iconPath: '/path/to/iconPath',
+  selectedIconPath: '/path/to/selectedIconPath'
+})
+``` */
+        setTabBarItem<T extends SetTabBarItemOption = SetTabBarItemOption>(
+            option: T
+        ): PromisifySuccessResult<T, SetTabBarItemOption>
+        /** [wx.setTabBarStyle(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/tab-bar/wx.setTabBarStyle.html)
+*
+* 需要基础库: `1.9.0`
+*
+* 在插件中使用:不支持
+*
+* 动态设置 tabBar 的整体样式
+*
+* **示例代码**
+*
+* ```js
+wx.setTabBarStyle({
+  color: '#FF0000',
+  selectedColor: '#00FF00',
+  backgroundColor: '#0000FF',
+  borderStyle: 'white'
+})
+``` */
+        setTabBarStyle<T extends SetTabBarStyleOption = SetTabBarStyleOption>(
+            option?: T
+        ): PromisifySuccessResult<T, SetTabBarStyleOption>
+        /** [wx.setTopBarText(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/sticky/wx.setTopBarText.html)
+*
+* 需要基础库: `1.4.3`
+*
+* 在插件中使用:不支持
+* @deprecated 基础库版本 [1.9.9](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 起已废弃
+*
+* 动态设置置顶栏文字内容。只有当前小程序被置顶时能生效,如果当前小程序没有被置顶,也能调用成功,但是不会立即生效,只有在用户将这个小程序置顶后才换上设置的文字内容.
+*
+* **示例代码**
+*
+* ```js
+wx.setTopBarText({
+  text: 'hello, world!'
+})
+```
+*
+* **注意**
+*
+* - 调用成功后,需间隔 5s 才能再次调用此接口,如果在 5s 内再次调用此接口,会回调 fail,errMsg:"setTopBarText: fail invoke too frequently" */
+        setTopBarText<T extends SetTopBarTextOption = SetTopBarTextOption>(
+            option: T
+        ): PromisifySuccessResult<T, SetTopBarTextOption>
+        /** [wx.setVisualEffectOnCapture(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/screen/wx.setVisualEffectOnCapture.html)
+         *
+         * 需要基础库: `2.20.1`
+         *
+         * 在插件中使用:需要基础库 `2.21.3`
+         *
+         * 设置截屏/录屏时屏幕表现,仅支持在 Android 端调用 */
+        setVisualEffectOnCapture(option: SetVisualEffectOnCaptureOption): void
+        /** [wx.setWifiList(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/wifi/wx.setWifiList.html)
+*
+* 需要基础库: `1.6.0`
+*
+* 在插件中使用:需要基础库 `2.9.1`
+*
+* 设置 `wifiList` 中 AP 的相关信息。在 `onGetWifiList` 回调后调用,**iOS特有接口**。
+*
+* **注意**
+*
+* - 该接口只能在 `onGetWifiList` 回调之后才能调用。
+* - 此时客户端会挂起,等待小程序设置 Wi-Fi 信息,请务必尽快调用该接口,若无数据请传入一个空数组。
+* - 有可能随着周边 Wi-Fi 列表的刷新,单个流程内收到多次带有存在重复的 Wi-Fi 列表的回调。
+*
+* **示例代码**
+*
+* ```js
+wx.onGetWifiList(function(res) {
+  if (res.wifiList.length) {
+    wx.setWifiList({
+      wifiList: [{
+        SSID: res.wifiList[0].SSID,
+        BSSID: res.wifiList[0].BSSID,
+        password: '123456'
+      }]
+    })
+  } else {
+    wx.setWifiList({
+      wifiList: []
+    })
+  }
+})
+wx.getWifiList()
+``` */
+        setWifiList<T extends SetWifiListOption = SetWifiListOption>(
+            option: T
+        ): PromisifySuccessResult<T, SetWifiListOption>
+        /** [wx.setWindowSize(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/window/wx.setWindowSize.html)
+         *
+         * 需要基础库: `2.10.1`
+         *
+         * 在插件中使用:不支持
+         * @deprecated 基础库版本 [2.11.0](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 起已废弃
+         *
+         * 设置窗口大小,该接口仅适用于 PC 平台,使用细则请参见指南 */
+        setWindowSize(option: SetWindowSizeOption): void
+        /** [wx.shareFileMessage(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/share/wx.shareFileMessage.html)
+         *
+         * 需要基础库: `2.16.1`
+         *
+         * 在插件中使用:不支持
+         *
+         * 转发文件到聊天 */
+        shareFileMessage<
+            T extends ShareFileMessageOption = ShareFileMessageOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, ShareFileMessageOption>
+        /** [wx.shareToWeRun(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/werun/wx.shareToWeRun.html)
+         *
+         * 在插件中使用:不支持
+         *
+         * 分享数据到微信运动。 */
+        shareToWeRun<T extends ShareToWeRunOption = ShareToWeRunOption>(
+            option: T
+        ): PromisifySuccessResult<T, ShareToWeRunOption>
+        /** [wx.shareVideoMessage(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/share/wx.shareVideoMessage.html)
+         *
+         * 需要基础库: `2.16.1`
+         *
+         * 在插件中使用:不支持
+         *
+         * 转发视频到聊天 */
+        shareVideoMessage<
+            T extends ShareVideoMessageOption = ShareVideoMessageOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, ShareVideoMessageOption>
+        /** [wx.showActionSheet(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/interaction/wx.showActionSheet.html)
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 显示操作菜单
+*
+* **示例代码**
+*
+* ```js
+wx.showActionSheet({
+  itemList: ['A', 'B', 'C'],
+  success (res) {
+    console.log(res.tapIndex)
+  },
+  fail (res) {
+    console.log(res.errMsg)
+  }
+})
+```
+*
+* **注意**
+*
+* - Android 6.7.2 以下版本,点击取消或蒙层时,回调 fail, errMsg 为 "fail cancel";
+* - Android 6.7.2 及以上版本 和 iOS 点击蒙层不会关闭模态弹窗,所以尽量避免使用「取消」分支中实现业务逻辑 */
+        showActionSheet<
+            T extends ShowActionSheetOption = ShowActionSheetOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, ShowActionSheetOption>
+        /** [wx.showLoading(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/interaction/wx.showLoading.html)
+*
+* 需要基础库: `1.1.0`
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 显示 loading 提示框。需主动调用 wx.hideLoading 才能关闭提示框
+*
+* **示例代码**
+*
+* ```js
+wx.showLoading({
+  title: '加载中',
+})
+
+setTimeout(function () {
+  wx.hideLoading()
+}, 2000)
+```
+*
+* **注意**
+*
+* - [wx.showLoading](https://developers.weixin.qq.com/miniprogram/dev/api/ui/interaction/wx.showLoading.html) 和 [wx.showToast](https://developers.weixin.qq.com/miniprogram/dev/api/ui/interaction/wx.showToast.html) 同时只能显示一个
+* - [wx.showLoading](https://developers.weixin.qq.com/miniprogram/dev/api/ui/interaction/wx.showLoading.html) 应与 [wx.hideLoading](https://developers.weixin.qq.com/miniprogram/dev/api/ui/interaction/wx.hideLoading.html) 配对使用 */
+        showLoading<T extends ShowLoadingOption = ShowLoadingOption>(
+            option: T
+        ): PromisifySuccessResult<T, ShowLoadingOption>
+        /** [wx.showModal(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/interaction/wx.showModal.html)
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 显示模态对话框
+*
+* **示例代码**
+*
+* ```js
+wx.showModal({
+  title: '提示',
+  content: '这是一个模态弹窗',
+  success (res) {
+    if (res.confirm) {
+      console.log('用户点击确定')
+    } else if (res.cancel) {
+      console.log('用户点击取消')
+    }
+  }
+})
+```
+*
+* **注意**
+*
+* - Android 6.7.2 以下版本,点击取消或蒙层时,回调 fail, errMsg 为 "fail cancel";
+* - Android 6.7.2 及以上版本 和 iOS 点击蒙层不会关闭模态弹窗,所以尽量避免使用「取消」分支中实现业务逻辑
+* - 自基础库 2.17.1 版本起,支持传入 editable 参数,显示带输入框的弹窗 */
+        showModal<T extends ShowModalOption = ShowModalOption>(
+            option: T
+        ): PromisifySuccessResult<T, ShowModalOption>
+        /** [wx.showNavigationBarLoading(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/navigation-bar/wx.showNavigationBarLoading.html)
+         *
+         * 在插件中使用:需要基础库 `2.1.0`
+         *
+         * 在插件中使用时,只能在当前插件的页面中调用
+         *
+         * 在当前页面显示导航条加载动画 */
+        showNavigationBarLoading<
+            T extends ShowNavigationBarLoadingOption = ShowNavigationBarLoadingOption
+        >(
+            option?: T
+        ): PromisifySuccessResult<T, ShowNavigationBarLoadingOption>
+        /** [wx.showRedPackage(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/redpackage/wx.showRedPackage.html)
+         *
+         * 需要基础库: `2.10.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 拉取h5领取红包封面页。获取参考红包封面地址参考 [微信红包封面开发平台](https://cover.weixin.qq.com/cgi-bin/mmcover-bin/readtemplate?t=page/index#/doc?page=introduce)。 */
+        showRedPackage<T extends ShowRedPackageOption = ShowRedPackageOption>(
+            option: T
+        ): PromisifySuccessResult<T, ShowRedPackageOption>
+        /** [wx.showShareImageMenu(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/share/wx.showShareImageMenu.html)
+         *
+         * 需要基础库: `2.14.3`
+         *
+         * 在插件中使用:需要基础库 `2.16.0`
+         *
+         * 打开分享图片弹窗,可以将图片发送给朋友、收藏或下载 */
+        showShareImageMenu<
+            T extends ShowShareImageMenuOption = ShowShareImageMenuOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, ShowShareImageMenuOption>
+        /** [wx.showShareMenu(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/share/wx.showShareMenu.html)
+*
+* 需要基础库: `1.1.0`
+*
+* 在插件中使用:需要基础库 `2.1.0`
+*
+* 在插件中使用时,只能在当前插件的页面中调用
+*
+* 显示当前页面的转发按钮
+*
+* ****
+*
+* ## 注意事项
+*  - "shareAppMessage"表示“发送给朋友”按钮,"shareTimeline"表示“分享到朋友圈”按钮
+*  - 显示“分享到朋友圈”按钮时必须同时显示“发送给朋友”按钮,显示“发送给朋友”按钮时则允许不显示“分享到朋友圈”按钮
+*
+* **示例代码**
+*
+* ```js
+wx.showShareMenu({
+  withShareTicket: true,
+  menus: ['shareAppMessage', 'shareTimeline']
+})
+``` */
+        showShareMenu<T extends ShowShareMenuOption = ShowShareMenuOption>(
+            option: T
+        ): PromisifySuccessResult<T, ShowShareMenuOption>
+        /** [wx.showTabBar(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/tab-bar/wx.showTabBar.html)
+         *
+         * 需要基础库: `1.9.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 显示 tabBar */
+        showTabBar<T extends ShowTabBarOption = ShowTabBarOption>(
+            option: T
+        ): PromisifySuccessResult<T, ShowTabBarOption>
+        /** [wx.showTabBarRedDot(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/tab-bar/wx.showTabBarRedDot.html)
+         *
+         * 需要基础库: `1.9.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 显示 tabBar 某一项的右上角的红点 */
+        showTabBarRedDot<
+            T extends ShowTabBarRedDotOption = ShowTabBarRedDotOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, ShowTabBarRedDotOption>
+        /** [wx.showToast(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/interaction/wx.showToast.html)
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 显示消息提示框
+*
+* **示例代码**
+*
+* ```js
+wx.showToast({
+  title: '成功',
+  icon: 'success',
+  duration: 2000
+})
+```
+*
+* **注意**
+*
+* - [wx.showLoading](https://developers.weixin.qq.com/miniprogram/dev/api/ui/interaction/wx.showLoading.html) 和 [wx.showToast](https://developers.weixin.qq.com/miniprogram/dev/api/ui/interaction/wx.showToast.html) 同时只能显示一个
+* - [wx.showToast](https://developers.weixin.qq.com/miniprogram/dev/api/ui/interaction/wx.showToast.html) 应与 [wx.hideToast](https://developers.weixin.qq.com/miniprogram/dev/api/ui/interaction/wx.hideToast.html) 配对使用 */
+        showToast<T extends ShowToastOption = ShowToastOption>(
+            option: T
+        ): PromisifySuccessResult<T, ShowToastOption>
+        /** [wx.startAccelerometer(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/accelerometer/wx.startAccelerometer.html)
+*
+* 需要基础库: `1.1.0`
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 开始监听加速度数据。
+*
+* **示例代码**
+*
+* ```js
+wx.startAccelerometer({
+  interval: 'game'
+})
+```
+*
+* **注意**
+*
+* - 根据机型性能、当前 CPU 与内存的占用情况,`interval` 的设置与实际 `wx.onAccelerometerChange()` 回调函数的执行频率会有一些出入。 */
+        startAccelerometer<
+            T extends StartAccelerometerOption = StartAccelerometerOption
+        >(
+            option?: T
+        ): PromisifySuccessResult<T, StartAccelerometerOption>
+        /** [wx.startBeaconDiscovery(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/ibeacon/wx.startBeaconDiscovery.html)
+*
+* 需要基础库: `1.2.0`
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 开始搜索附近的 Beacon 设备
+*
+* **示例代码**
+*
+* ```js
+wx.startBeaconDiscovery({
+  success(res) { }
+})
+``` */
+        startBeaconDiscovery<
+            T extends StartBeaconDiscoveryOption = StartBeaconDiscoveryOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, StartBeaconDiscoveryOption>
+        /** [wx.startBluetoothDevicesDiscovery(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth/wx.startBluetoothDevicesDiscovery.html)
+*
+* 需要基础库: `1.1.0`
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 开始搜寻附近的蓝牙外围设备。
+*
+* **此操作比较耗费系统资源,请在搜索到需要的设备后及时调用 [wx.stopBluetoothDevicesDiscovery](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth/wx.stopBluetoothDevicesDiscovery.html) 停止搜索。**
+*
+* **注意**
+*
+* - 考虑到蓝牙功能可以间接进行定位,安卓 6.0 及以上版本,无定位权限或定位开关未打开时,无法进行设备搜索。这种情况下,安卓 8.0.16 前,接口调用成功但无法扫描设备;8.0.16 及以上版本,会返回错误。
+*
+* **示例代码**
+*
+* [在微信开发者工具中查看示例](https://developers.weixin.qq.com/s/m7klFDmZ72i1)
+*
+* ```js
+// 以微信硬件平台的蓝牙智能灯为例,主服务的 UUID 是 FEE7。传入这个参数,只搜索主服务 UUID 为 FEE7 的设备
+wx.startBluetoothDevicesDiscovery({
+  services: ['FEE7'],
+  success (res) {
+    console.log(res)
+  }
+})
+``` */
+        startBluetoothDevicesDiscovery<
+            T extends StartBluetoothDevicesDiscoveryOption = StartBluetoothDevicesDiscoveryOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, StartBluetoothDevicesDiscoveryOption>
+        /** [wx.startCompass(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/compass/wx.startCompass.html)
+*
+* 需要基础库: `1.1.0`
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 开始监听罗盘数据
+*
+* **示例代码**
+*
+* ```js
+wx.startCompass()
+``` */
+        startCompass<T extends StartCompassOption = StartCompassOption>(
+            option?: T
+        ): PromisifySuccessResult<T, StartCompassOption>
+        /** [wx.startDeviceMotionListening(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/motion/wx.startDeviceMotionListening.html)
+         *
+         * 需要基础库: `2.3.0`
+         *
+         * 在插件中使用:需要基础库 `2.9.1`
+         *
+         * 开始监听设备方向的变化。 */
+        startDeviceMotionListening<
+            T extends StartDeviceMotionListeningOption = StartDeviceMotionListeningOption
+        >(
+            option?: T
+        ): PromisifySuccessResult<T, StartDeviceMotionListeningOption>
+        /** [wx.startGyroscope(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/gyroscope/wx.startGyroscope.html)
+         *
+         * 需要基础库: `2.3.0`
+         *
+         * 在插件中使用:需要基础库 `2.9.1`
+         *
+         * 开始监听陀螺仪数据。 */
+        startGyroscope<T extends StartGyroscopeOption = StartGyroscopeOption>(
+            option?: T
+        ): PromisifySuccessResult<T, StartGyroscopeOption>
+        /** [wx.startHCE(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/wx.startHCE.html)
+*
+* 需要基础库: `1.7.0`
+*
+* 在插件中使用:需要基础库 `2.1.0`
+*
+* 初始化 NFC 模块。
+*
+* **示例代码**
+*
+* ```js
+wx.startHCE({
+  aid_list: ['F222222222'],
+  success (res) {
+    console.log(res.errMsg)
+  }
+})
+``` */
+        startHCE<T extends StartHCEOption = StartHCEOption>(
+            option: T
+        ): PromisifySuccessResult<T, StartHCEOption>
+        /** [wx.startLocalServiceDiscovery(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/network/mdns/wx.startLocalServiceDiscovery.html)
+         *
+         * 需要基础库: `2.4.0`
+         *
+         * 在插件中使用:需要基础库 `2.15.0`
+         *
+         * 开始搜索局域网下的 mDNS 服务。搜索的结果会通过 wx.onLocalService* 事件返回。
+         *
+         * **注意**
+         *
+         * 1. 由于操作系统相关能力变更,iOS 微信客户端 7.0.18 及以上版本无法使用 mDNS 相关接口,安卓版本不受影响
+         * 2. wx.startLocalServiceDiscovery 是一个消耗性能的行为,开始 30 秒后会自动 stop 并执行 wx.onLocalServiceDiscoveryStop 注册的回调函数。
+         * 3. 在调用 wx.startLocalServiceDiscovery 后,在这次搜索行为停止后才能发起下次 wx.startLocalServiceDiscovery。停止本次搜索行为的操作包括调用 wx.stopLocalServiceDiscovery 和 30 秒后系统自动 stop 本次搜索。 */
+        startLocalServiceDiscovery<
+            T extends StartLocalServiceDiscoveryOption = StartLocalServiceDiscoveryOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, StartLocalServiceDiscoveryOption>
+        /** [wx.startLocationUpdate(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.startLocationUpdate.html)
+         *
+         * 需要基础库: `2.8.0`
+         *
+         * 在插件中使用:需要基础库 `2.8.0`
+         *
+         * 开启小程序进入前台时接收位置消息
+         *
+         * **注意**
+         *
+         * - 获取位置信息需配置[地理位置用途说明](https://developers.weixin.qq.com/miniprogram/dev/reference/configuration/app.html#permission)。 */
+        startLocationUpdate<
+            T extends StartLocationUpdateOption = StartLocationUpdateOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, StartLocationUpdateOption>
+        /** [wx.startLocationUpdateBackground(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.startLocationUpdateBackground.html)
+         *
+         * 需要基础库: `2.8.0`
+         *
+         * 在插件中使用:不支持
+         *
+         * 开启小程序进入前后台时均接收位置消息,需引导用户开启[授权](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/authorize.html#后台定位)。授权以后,小程序在运行中或进入后台均可接受位置消息变化。
+         *
+         * **注意**
+         *
+         * - 安卓微信7.0.6版本,iOS 7.0.5版本起支持该接口
+         * - 需在app.json中配置requiredBackgroundModes: ['location']后使用
+         * - 获取位置信息需配置[地理位置用途说明](https://developers.weixin.qq.com/miniprogram/dev/reference/configuration/app.html#permission)。 */
+        startLocationUpdateBackground<
+            T extends StartLocationUpdateBackgroundOption = StartLocationUpdateBackgroundOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, StartLocationUpdateBackgroundOption>
+        /** [wx.startPullDownRefresh(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/pull-down-refresh/wx.startPullDownRefresh.html)
+*
+* 需要基础库: `1.5.0`
+*
+* 在插件中使用:需要基础库 `2.1.0`
+*
+* 在插件中使用时,只能在当前插件的页面中调用
+*
+* 开始下拉刷新。调用后触发下拉刷新动画,效果与用户手动下拉刷新一致。
+*
+* **示例代码**
+*
+* ```js
+wx.startPullDownRefresh()
+``` */
+        startPullDownRefresh<
+            T extends StartPullDownRefreshOption = StartPullDownRefreshOption
+        >(
+            option?: T
+        ): PromisifySuccessResult<T, StartPullDownRefreshOption>
+        /** [wx.startRecord(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/recorder/wx.startRecord.html)
+*
+* 在插件中使用:需要基础库 `1.9.6`
+* @deprecated 基础库版本 [1.6.0](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 起已废弃,请使用 [wx.getRecorderManager](https://developers.weixin.qq.com/miniprogram/dev/api/media/recorder/wx.getRecorderManager.html) 替换
+*
+* 开始录音。当主动调用 [wx.stopRecord](https://developers.weixin.qq.com/miniprogram/dev/api/media/recorder/wx.stopRecord.html),或者录音超过1分钟时自动结束录音。当用户离开小程序时,此接口无法调用。
+*
+* **示例代码**
+*
+* ```js
+wx.startRecord({
+  success (res) {
+    const tempFilePath = res.tempFilePath
+  }
+})
+setTimeout(function () {
+  wx.stopRecord() // 结束录音
+}, 10000)
+``` */
+        startRecord<T extends WxStartRecordOption = WxStartRecordOption>(
+            option?: T
+        ): PromisifySuccessResult<T, WxStartRecordOption>
+        /** [wx.startSoterAuthentication(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/soter/wx.startSoterAuthentication.html)
+*
+* 需要基础库: `1.5.0`
+*
+* 在插件中使用:不支持
+*
+* 开始 SOTER 生物认证。验证流程请参考[说明](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/bio-auth.html)。
+*
+* **resultJSON 说明**
+*
+* 此数据为设备TEE中,将传入的challenge和TEE内其他安全信息组成的数据进行组装而来的JSON,对下述字段的解释如下表。例子如下:
+* | 字段名  | 说明                                                                                      |
+* |---------|-------------------------------------------------------------------------------------------|
+* | raw     | 调用者传入的challenge                                                                     |
+* | fid     | (仅Android支持)本次生物识别认证的生物信息编号(如指纹识别则是指纹信息在本设备内部编号) |
+* | counter | 防重放特征参数                                                                            |
+* | tee_n   | TEE名称(如高通或者trustonic等)                                                          |
+* | tee_v   | TEE版本号                                                                                 |
+* | fp_n    | 指纹以及相关逻辑模块提供商(如FPC等)                                                     |
+* | fp_v    | 指纹以及相关模块版本号                                                                    |
+* | cpu_id  | 机器唯一识别ID                                                                            |
+* | uid     | 概念同Android系统定义uid,即应用程序编号                                                  |
+*
+* ```json
+{
+  "raw":"msg",
+  "fid":"2",
+  "counter":123,
+  "tee_n":"TEE Name",
+  "tee_v":"TEE Version",
+  "fp_n":"Fingerprint Sensor Name",
+  "fp_v":"Fingerprint Sensor Version",
+  "cpu_id":"CPU Id",
+  "uid":"21"
+}
+```
+*
+* **示例代码**
+*
+* [在微信开发者工具中查看示例](https://developers.weixin.qq.com/s/q3tCKkmJ7g2e)
+* ```js
+wx.startSoterAuthentication({
+   requestAuthModes: ['fingerPrint'],
+   challenge: '123456',
+   authContent: '请用指纹解锁',
+   success(res) {
+   }
+})
+``` */
+        startSoterAuthentication<
+            T extends StartSoterAuthenticationOption = StartSoterAuthenticationOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, StartSoterAuthenticationOption>
+        /** [wx.startWifi(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/wifi/wx.startWifi.html)
+*
+* 需要基础库: `1.6.0`
+*
+* 在插件中使用:需要基础库 `2.9.1`
+*
+* 初始化 Wi-Fi 模块。
+*
+* **示例代码**
+*
+* [在微信开发者工具中查看示例](https://developers.weixin.qq.com/s/8P7zrkmd7r2n)
+* ```js
+wx.startWifi({
+  success (res) {
+    console.log(res.errMsg)
+  }
+})
+``` */
+        startWifi<T extends StartWifiOption = StartWifiOption>(
+            option?: T
+        ): PromisifySuccessResult<T, StartWifiOption>
+        /** [wx.stopAccelerometer(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/accelerometer/wx.stopAccelerometer.html)
+*
+* 需要基础库: `1.1.0`
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 停止监听加速度数据。
+*
+* **示例代码**
+*
+* ```js
+wx.stopAccelerometer()
+``` */
+        stopAccelerometer<
+            T extends StopAccelerometerOption = StopAccelerometerOption
+        >(
+            option?: T
+        ): PromisifySuccessResult<T, StopAccelerometerOption>
+        /** [wx.stopBackgroundAudio(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/wx.stopBackgroundAudio.html)
+*
+* 在插件中使用:需要基础库 `1.9.6`
+* @deprecated 基础库版本 [1.2.0](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 起已废弃,请使用 [wx.getBackgroundAudioManager](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/wx.getBackgroundAudioManager.html) 替换
+*
+* 停止播放音乐。
+*
+* **示例代码**
+*
+* ```js
+wx.stopBackgroundAudio()
+``` */
+        stopBackgroundAudio<
+            T extends StopBackgroundAudioOption = StopBackgroundAudioOption
+        >(
+            option?: T
+        ): PromisifySuccessResult<T, StopBackgroundAudioOption>
+        /** [wx.stopBeaconDiscovery(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/ibeacon/wx.stopBeaconDiscovery.html)
+         *
+         * 需要基础库: `1.2.0`
+         *
+         * 在插件中使用:需要基础库 `1.9.6`
+         *
+         * 停止搜索附近的 Beacon 设备 */
+        stopBeaconDiscovery<
+            T extends StopBeaconDiscoveryOption = StopBeaconDiscoveryOption
+        >(
+            option?: T
+        ): PromisifySuccessResult<T, StopBeaconDiscoveryOption>
+        /** [wx.stopBluetoothDevicesDiscovery(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth/wx.stopBluetoothDevicesDiscovery.html)
+*
+* 需要基础库: `1.1.0`
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 停止搜寻附近的蓝牙外围设备。若已经找到需要的蓝牙设备并不需要继续搜索时,建议调用该接口停止蓝牙搜索。
+*
+* **示例代码**
+*
+* [在微信开发者工具中查看示例](https://developers.weixin.qq.com/s/pQU51zmz7a3K)
+* ```js
+wx.stopBluetoothDevicesDiscovery({
+  success (res) {
+    console.log(res)
+  }
+})
+``` */
+        stopBluetoothDevicesDiscovery<
+            T extends StopBluetoothDevicesDiscoveryOption = StopBluetoothDevicesDiscoveryOption
+        >(
+            option?: T
+        ): PromisifySuccessResult<T, StopBluetoothDevicesDiscoveryOption>
+        /** [wx.stopCompass(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/compass/wx.stopCompass.html)
+*
+* 需要基础库: `1.1.0`
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 停止监听罗盘数据
+*
+* **示例代码**
+*
+* ```js
+wx.stopCompass()
+``` */
+        stopCompass<T extends StopCompassOption = StopCompassOption>(
+            option?: T
+        ): PromisifySuccessResult<T, StopCompassOption>
+        /** [wx.stopDeviceMotionListening(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/motion/wx.stopDeviceMotionListening.html)
+         *
+         * 需要基础库: `2.3.0`
+         *
+         * 在插件中使用:需要基础库 `2.9.1`
+         *
+         * 停止监听设备方向的变化。 */
+        stopDeviceMotionListening<
+            T extends StopDeviceMotionListeningOption = StopDeviceMotionListeningOption
+        >(
+            option?: T
+        ): PromisifySuccessResult<T, StopDeviceMotionListeningOption>
+        /** [wx.stopFaceDetect(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/ai/face/wx.stopFaceDetect.html)
+         *
+         * 需要基础库: `2.18.0`
+         *
+         * 在插件中使用:需要基础库 `2.21.3`
+         *
+         * 停止人脸识别 */
+        stopFaceDetect(option?: StopFaceDetectOption): void
+        /** [wx.stopGyroscope(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/gyroscope/wx.stopGyroscope.html)
+         *
+         * 需要基础库: `2.3.0`
+         *
+         * 在插件中使用:需要基础库 `2.9.1`
+         *
+         * 停止监听陀螺仪数据。 */
+        stopGyroscope<T extends StopGyroscopeOption = StopGyroscopeOption>(
+            option?: T
+        ): PromisifySuccessResult<T, StopGyroscopeOption>
+        /** [wx.stopHCE(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/wx.stopHCE.html)
+*
+* 需要基础库: `1.7.0`
+*
+* 在插件中使用:需要基础库 `2.1.0`
+*
+* 关闭 NFC 模块。仅在安卓系统下有效。
+*
+* **示例代码**
+*
+* ```js
+wx.stopHCE({
+  success (res) {
+    console.log(res.errMsg)
+  }
+})
+``` */
+        stopHCE<T extends StopHCEOption = StopHCEOption>(
+            option?: T
+        ): PromisifySuccessResult<T, StopHCEOption>
+        /** [wx.stopLocalServiceDiscovery(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/network/mdns/wx.stopLocalServiceDiscovery.html)
+         *
+         * 需要基础库: `2.4.0`
+         *
+         * 在插件中使用:需要基础库 `2.15.0`
+         *
+         * 停止搜索 mDNS 服务 */
+        stopLocalServiceDiscovery<
+            T extends StopLocalServiceDiscoveryOption = StopLocalServiceDiscoveryOption
+        >(
+            option?: T
+        ): PromisifySuccessResult<T, StopLocalServiceDiscoveryOption>
+        /** [wx.stopLocationUpdate(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.stopLocationUpdate.html)
+         *
+         * 需要基础库: `2.8.0`
+         *
+         * 在插件中使用:需要基础库 `2.8.0`
+         *
+         * 关闭监听实时位置变化,前后台都停止消息接收 */
+        stopLocationUpdate<
+            T extends StopLocationUpdateOption = StopLocationUpdateOption
+        >(
+            option?: T
+        ): PromisifySuccessResult<T, StopLocationUpdateOption>
+        /** [wx.stopPullDownRefresh(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/ui/pull-down-refresh/wx.stopPullDownRefresh.html)
+*
+* 需要基础库: `1.5.0`
+*
+* 在插件中使用:需要基础库 `2.1.0`
+*
+* 在插件中使用时,只能在当前插件的页面中调用
+*
+* 停止当前页面下拉刷新。
+*
+* **示例代码**
+*
+* ```js
+Page({
+  onPullDownRefresh () {
+    wx.stopPullDownRefresh()
+  }
+})
+``` */
+        stopPullDownRefresh<
+            T extends StopPullDownRefreshOption = StopPullDownRefreshOption
+        >(
+            option?: T
+        ): PromisifySuccessResult<T, StopPullDownRefreshOption>
+        /** [wx.stopRecord(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/recorder/wx.stopRecord.html)
+*
+* 在插件中使用:需要基础库 `1.9.6`
+* @deprecated 基础库版本 [1.6.0](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 起已废弃,请使用 [wx.getRecorderManager](https://developers.weixin.qq.com/miniprogram/dev/api/media/recorder/wx.getRecorderManager.html) 替换
+*
+* 停止录音。
+*
+* **示例代码**
+*
+* ```js
+wx.startRecord({
+  success (res) {
+    const tempFilePath = res.tempFilePath
+  }
+})
+setTimeout(function () {
+  wx.stopRecord() // 结束录音
+}, 10000)
+``` */
+        stopRecord<T extends WxStopRecordOption = WxStopRecordOption>(
+            option?: T
+        ): PromisifySuccessResult<T, WxStopRecordOption>
+        /** [wx.stopVoice(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/wx.stopVoice.html)
+*
+* 在插件中使用:需要基础库 `1.9.6`
+* @deprecated 基础库版本 [1.6.0](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 起已废弃,请使用 [wx.createInnerAudioContext](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/wx.createInnerAudioContext.html) 替换
+*
+* 结束播放语音。
+*
+* **示例代码**
+*
+* ```js
+wx.startRecord({
+  success (res) {
+    const tempFilePath = res.tempFilePath
+    wx.playVoice({
+      filePath: tempFilePath,
+    })
+
+    setTimeout(() => { wx.stopVoice() }, 5000)
+  }
+})
+``` */
+        stopVoice<T extends StopVoiceOption = StopVoiceOption>(
+            option?: T
+        ): PromisifySuccessResult<T, StopVoiceOption>
+        /** [wx.stopWifi(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/wifi/wx.stopWifi.html)
+*
+* 需要基础库: `1.6.0`
+*
+* 在插件中使用:需要基础库 `2.9.1`
+*
+* 关闭 Wi-Fi 模块。
+*
+* **示例代码**
+*
+* ```js
+wx.stopWifi({
+  success (res) {
+    console.log(res.errMsg)
+  }
+})
+``` */
+        stopWifi<T extends StopWifiOption = StopWifiOption>(
+            option?: T
+        ): PromisifySuccessResult<T, StopWifiOption>
+        /** [wx.subscribeVoIPVideoMembers(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/voip/wx.subscribeVoIPVideoMembers.html)
+         *
+         * 需要基础库: `2.11.0`
+         *
+         * 在插件中使用:需要基础库 `2.11.0`
+         *
+         * 订阅视频画面成员。对于视频房间,当成员超过两人时需进行订阅,否则只能看到最先加入房间的两人画面。 */
+        subscribeVoIPVideoMembers<
+            T extends SubscribeVoIPVideoMembersOption = SubscribeVoIPVideoMembersOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, SubscribeVoIPVideoMembersOption>
+        /** [wx.switchTab(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/route/wx.switchTab.html)
+*
+* 在插件中使用:需要基础库 `2.3.1`
+*
+* 在插件中使用时,只能在当前插件的页面中调用
+*
+* 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面
+*
+* **示例代码**
+*
+* ```json
+// app.json
+{
+  "tabBar": {
+    "list": [{
+      "pagePath": "index",
+      "text": "首页"
+    },{
+      "pagePath": "other",
+      "text": "其他"
+    }]
+  }
+}
+```
+*
+* ```js
+wx.switchTab({
+  url: '/index'
+})
+``` */
+        switchTab<T extends SwitchTabOption = SwitchTabOption>(
+            option: T
+        ): PromisifySuccessResult<T, SwitchTabOption>
+        /** [wx.updateShareMenu(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/share/wx.updateShareMenu.html)
+*
+* 需要基础库: `1.2.0`
+*
+* 在插件中使用:需要基础库 `2.1.0`
+*
+* 在插件中使用时,只能在当前插件的页面中调用
+*
+* 更新转发属性
+*
+* **示例代码**
+*
+* ```js
+wx.updateShareMenu({
+  withShareTicket: true,
+  success () { }
+})
+```
+* ```js
+// 转发私密消息
+wx.updateShareMenu({
+  isPrivateMessage: true,
+  activityId: 'xxx',
+  templateInfo: {},
+  success () { },
+  fail () {}
+})
+``` */
+        updateShareMenu<
+            T extends UpdateShareMenuOption = UpdateShareMenuOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, UpdateShareMenuOption>
+        /** [wx.updateVoIPChatMuteConfig(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/voip/wx.updateVoIPChatMuteConfig.html)
+         *
+         * 需要基础库: `2.7.0`
+         *
+         * 在插件中使用:需要基础库 `2.9.0`
+         *
+         * 更新实时语音静音设置 */
+        updateVoIPChatMuteConfig<
+            T extends UpdateVoIPChatMuteConfigOption = UpdateVoIPChatMuteConfigOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, UpdateVoIPChatMuteConfigOption>
+        /** [wx.updateWeChatApp(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/base/update/wx.updateWeChatApp.html)
+         *
+         * 需要基础库: `2.12.0`
+         *
+         * 在插件中使用:需要基础库 `2.12.0`
+         *
+         * 更新客户端版本。当判断用户小程序所在客户端版本过低时,可使用该接口跳转到更新微信页面。 */
+        updateWeChatApp<
+            T extends UpdateWeChatAppOption = UpdateWeChatAppOption
+        >(
+            option?: T
+        ): PromisifySuccessResult<T, UpdateWeChatAppOption>
+        /** [wx.vibrateLong(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/vibrate/wx.vibrateLong.html)
+         *
+         * 需要基础库: `1.2.0`
+         *
+         * 在插件中使用:需要基础库 `1.9.6`
+         *
+         * 使手机发生较长时间的振动(400 ms) */
+        vibrateLong<T extends VibrateLongOption = VibrateLongOption>(
+            option?: T
+        ): PromisifySuccessResult<T, VibrateLongOption>
+        /** [wx.vibrateShort(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/vibrate/wx.vibrateShort.html)
+         *
+         * 需要基础库: `1.2.0`
+         *
+         * 在插件中使用:需要基础库 `1.9.6`
+         *
+         * 使手机发生较短时间的振动(15 ms)。仅在 iPhone `7 / 7 Plus` 以上及 Android 机型生效 */
+        vibrateShort<T extends VibrateShortOption = VibrateShortOption>(
+            option: T
+        ): PromisifySuccessResult<T, VibrateShortOption>
+        /** [wx.writeBLECharacteristicValue(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.writeBLECharacteristicValue.html)
+*
+* 需要基础库: `1.1.0`
+*
+* 在插件中使用:需要基础库 `1.9.6`
+*
+* 向蓝牙低功耗设备特征值中写入二进制数据。注意:必须设备的特征支持 write 才可以成功调用。
+*
+* **注意**
+*
+* - 并行调用多次会存在写失败的可能性。
+* - 小程序不会对写入数据包大小做限制,但系统与蓝牙设备会限制蓝牙 4.0 单次传输的数据大小,超过最大字节数后会发生写入错误,建议每次写入不超过 20 字节。
+* - 若单次写入数据过长,iOS 上存在系统不会有任何回调的情况(包括错误回调)。
+* - 安卓平台上,在调用 [wx.notifyBLECharacteristicValueChange](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.notifyBLECharacteristicValueChange.html) 成功后立即调用本接口,在部分机型上会发生 10008 系统错误
+*
+* **示例代码**
+*
+* [在微信开发者工具中查看示例](https://developers.weixin.qq.com/s/pQU51zmz7a3K)
+* ```js
+// 向蓝牙设备发送一个0x00的16进制数据
+let buffer = new ArrayBuffer(1)
+let dataView = new DataView(buffer)
+dataView.setUint8(0, 0)
+
+wx.writeBLECharacteristicValue({
+  // 这里的 deviceId 需要在 getBluetoothDevices 或 onBluetoothDeviceFound 接口中获取
+  deviceId,
+  // 这里的 serviceId 需要在 getBLEDeviceServices 接口中获取
+  serviceId,
+  // 这里的 characteristicId 需要在 getBLEDeviceCharacteristics 接口中获取
+  characteristicId,
+  // 这里的value是ArrayBuffer类型
+  value: buffer,
+  success (res) {
+    console.log('writeBLECharacteristicValue success', res.errMsg)
+  }
+})
+``` */
+        writeBLECharacteristicValue<
+            T extends WriteBLECharacteristicValueOption = WriteBLECharacteristicValueOption
+        >(
+            option: T
+        ): PromisifySuccessResult<T, WriteBLECharacteristicValueOption>
+        /** 小程序云开发 */
+        cloud: WxCloud
+        /** 文件系统中的用户目录路径 */
+        env: { USER_DATA_PATH: string }
+    }
+
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type AccessCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type AccessFailCallback = (result: AccessFailCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type AccessSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type AddCardCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type AddCardFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type AddCardSuccessCallback = (result: AddCardSuccessCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type AddCustomLayerCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type AddCustomLayerFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type AddCustomLayerSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type AddFileToFavoritesCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type AddFileToFavoritesFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type AddFileToFavoritesSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type AddGroundOverlayCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type AddGroundOverlayFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type AddGroundOverlaySuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type AddMarkersCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type AddMarkersFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type AddMarkersSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type AddPhoneCalendarCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type AddPhoneCalendarFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type AddPhoneCalendarSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type AddPhoneContactCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type AddPhoneContactFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type AddPhoneContactSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type AddPhoneRepeatCalendarCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type AddPhoneRepeatCalendarFailCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type AddPhoneRepeatCalendarSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type AddServiceCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type AddServiceFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type AddServiceSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type AddVideoToFavoritesCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type AddVideoToFavoritesFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type AddVideoToFavoritesSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type AddVisualLayerCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type AddVisualLayerFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type AddVisualLayerSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type AppendFileCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type AppendFileFailCallback = (result: AppendFileFailCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type AppendFileSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type AuthPrivateMessageCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type AuthPrivateMessageFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type AuthPrivateMessageSuccessCallback = (
+        result: AuthPrivateMessageSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type AuthorizeCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type AuthorizeFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type AuthorizeForMiniProgramCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type AuthorizeForMiniProgramFailCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type AuthorizeForMiniProgramSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type AuthorizeSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 背景音频播放错误事件的回调函数 */
+    type BackgroundAudioManagerOnErrorCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type BlurCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type BlurFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type BlurSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 回调函数,在执行 `SelectorQuery.exec` 方法后,节点信息会在 `callback` 中返回。 */
+    type BoundingClientRectCallback = (
+        result: BoundingClientRectCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type CameraContextStartRecordSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type CameraContextStopRecordSuccessCallback = (
+        result: StopRecordSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type CanvasGetImageDataCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type CanvasGetImageDataFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type CanvasGetImageDataSuccessCallback = (
+        result: CanvasGetImageDataSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type CanvasPutImageDataCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type CanvasPutImageDataFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type CanvasPutImageDataSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type CanvasToTempFilePathCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type CanvasToTempFilePathFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type CanvasToTempFilePathSuccessCallback = (
+        result: CanvasToTempFilePathSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type CheckIsOpenAccessibilityCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type CheckIsOpenAccessibilityFailCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type CheckIsOpenAccessibilitySuccessCallback = (
+        option: CheckIsOpenAccessibilitySuccessCallbackOption
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type CheckIsSoterEnrolledInDeviceCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type CheckIsSoterEnrolledInDeviceFailCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type CheckIsSoterEnrolledInDeviceSuccessCallback = (
+        result: CheckIsSoterEnrolledInDeviceSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type CheckIsSupportSoterAuthenticationCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type CheckIsSupportSoterAuthenticationFailCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type CheckIsSupportSoterAuthenticationSuccessCallback = (
+        result: CheckIsSupportSoterAuthenticationSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type CheckSessionCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type CheckSessionFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type CheckSessionSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ChooseAddressCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type ChooseAddressFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type ChooseAddressSuccessCallback = (
+        result: ChooseAddressSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ChooseContactCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type ChooseContactFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type ChooseContactSuccessCallback = (
+        option: ChooseContactSuccessCallbackOption
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ChooseImageCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type ChooseImageFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type ChooseImageSuccessCallback = (
+        result: ChooseImageSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ChooseInvoiceCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type ChooseInvoiceFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type ChooseInvoiceSuccessCallback = (
+        result: ChooseInvoiceSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ChooseInvoiceTitleCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type ChooseInvoiceTitleFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type ChooseInvoiceTitleSuccessCallback = (
+        result: ChooseInvoiceTitleSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ChooseLicensePlateCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type ChooseLicensePlateFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type ChooseLicensePlateSuccessCallback = (
+        result: ChooseLicensePlateSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ChooseLocationCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type ChooseLocationFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type ChooseLocationSuccessCallback = (
+        result: ChooseLocationSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ChooseMediaCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type ChooseMediaFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type ChooseMediaSuccessCallback = (
+        result: ChooseMediaSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ChooseMessageFileCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type ChooseMessageFileFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type ChooseMessageFileSuccessCallback = (
+        result: ChooseMessageFileSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ChoosePoiCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type ChoosePoiFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type ChoosePoiSuccessCallback = (
+        result: ChoosePoiSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ChooseVideoCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type ChooseVideoFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type ChooseVideoSuccessCallback = (
+        result: ChooseVideoSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ClearCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type ClearFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ClearStorageCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type ClearStorageFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type ClearStorageSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type ClearSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type CloseBLEConnectionCompleteCallback = (res: BluetoothError) => void
+    /** 接口调用失败的回调函数 */
+    type CloseBLEConnectionFailCallback = (res: BluetoothError) => void
+    /** 接口调用成功的回调函数 */
+    type CloseBLEConnectionSuccessCallback = (res: BluetoothError) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type CloseBluetoothAdapterCompleteCallback = (res: BluetoothError) => void
+    /** 接口调用失败的回调函数 */
+    type CloseBluetoothAdapterFailCallback = (res: BluetoothError) => void
+    /** 接口调用成功的回调函数 */
+    type CloseBluetoothAdapterSuccessCallback = (res: BluetoothError) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type CloseSocketCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type CloseSocketFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type CloseSocketSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type CompressImageCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type CompressImageFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type CompressImageSuccessCallback = (
+        result: CompressImageSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type CompressVideoCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type CompressVideoFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type CompressVideoSuccessCallback = (
+        result: CompressVideoSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ConnectCompleteCallback = (res: Nfcrwerror) => void
+    /** 接口调用失败的回调函数 */
+    type ConnectFailCallback = (res: Nfcrwerror) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ConnectSocketCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type ConnectSocketFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type ConnectSocketSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type ConnectSuccessCallback = (res: Nfcrwerror) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ConnectWifiCompleteCallback = (res: WifiError) => void
+    /** 接口调用失败的回调函数 */
+    type ConnectWifiFailCallback = (res: WifiError) => void
+    /** 接口调用成功的回调函数 */
+    type ConnectWifiSuccessCallback = (res: WifiError) => void
+    /** 回调函数,在执行 `SelectorQuery.exec` 方法后,返回节点信息。 */
+    type ContextCallback = (result: ContextCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type CopyFileCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type CopyFileFailCallback = (result: CopyFileFailCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type CopyFileSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type CreateBLEConnectionCompleteCallback = (res: BluetoothError) => void
+    /** 接口调用失败的回调函数 */
+    type CreateBLEConnectionFailCallback = (res: BluetoothError) => void
+    /** 接口调用成功的回调函数 */
+    type CreateBLEConnectionSuccessCallback = (res: BluetoothError) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type CreateBLEPeripheralServerCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type CreateBLEPeripheralServerFailCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type CreateBLEPeripheralServerSuccessCallback = (
+        result: CreateBLEPeripheralServerSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type DisableAlertBeforeUnloadCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type DisableAlertBeforeUnloadFailCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type DisableAlertBeforeUnloadSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type DownloadFileCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type DownloadFileFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type DownloadFileSuccessCallback = (
+        result: DownloadFileSuccessCallbackResult
+    ) => void
+    /** 下载进度变化事件的回调函数 */
+    type DownloadTaskOffProgressUpdateCallback = (
+        result: DownloadTaskOnProgressUpdateCallbackResult
+    ) => void
+    /** 下载进度变化事件的回调函数 */
+    type DownloadTaskOnProgressUpdateCallback = (
+        result: DownloadTaskOnProgressUpdateCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type EnableAlertBeforeUnloadCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type EnableAlertBeforeUnloadFailCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type EnableAlertBeforeUnloadSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 事件监听函数 */
+    type EventCallback = (
+        /** 触发事件参数 */
+        ...args: any
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ExitFullScreenCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type ExitFullScreenFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type ExitFullScreenSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ExitMiniProgramCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type ExitMiniProgramFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type ExitMiniProgramSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ExitPictureInPictureCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type ExitPictureInPictureFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type ExitPictureInPictureSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ExitVoIPChatCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type ExitVoIPChatFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type ExitVoIPChatSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type FaceDetectCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type FaceDetectFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type FaceDetectSuccessCallback = (
+        result: FaceDetectSuccessCallbackResult
+    ) => void
+    /** 回调函数 */
+    type FieldsCallback = (
+        /** 节点的相关信息 */
+        res: IAnyObject
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type FileSystemManagerCloseCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type FileSystemManagerCloseFailCallback = (
+        result: CloseFailCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type FileSystemManagerCloseSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type FileSystemManagerGetFileInfoFailCallback = (
+        result: GetFileInfoFailCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type FileSystemManagerGetFileInfoSuccessCallback = (
+        result: FileSystemManagerGetFileInfoSuccessCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type FileSystemManagerGetSavedFileListSuccessCallback = (
+        result: FileSystemManagerGetSavedFileListSuccessCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type FileSystemManagerRemoveSavedFileFailCallback = (
+        result: RemoveSavedFileFailCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type FileSystemManagerSaveFileFailCallback = (
+        result: SaveFileFailCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type FromScreenLocationCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type FromScreenLocationFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type FromScreenLocationSuccessCallback = (
+        result: GetCenterLocationSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type FstatCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type FstatFailCallback = (result: FstatFailCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type FstatSuccessCallback = (result: FstatSuccessCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type FtruncateCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type FtruncateFailCallback = (result: FtruncateFailCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type FtruncateSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetAtqaCompleteCallback = (res: Nfcrwerror) => void
+    /** 接口调用失败的回调函数 */
+    type GetAtqaFailCallback = (res: Nfcrwerror) => void
+    /** 接口调用成功的回调函数 */
+    type GetAtqaSuccessCallback = (result: GetAtqaSuccessCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetAvailableAudioSourcesCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type GetAvailableAudioSourcesFailCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type GetAvailableAudioSourcesSuccessCallback = (
+        result: GetAvailableAudioSourcesSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetBLEDeviceCharacteristicsCompleteCallback = (
+        res: BluetoothError
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type GetBLEDeviceCharacteristicsFailCallback = (res: BluetoothError) => void
+    /** 接口调用成功的回调函数 */
+    type GetBLEDeviceCharacteristicsSuccessCallback = (
+        result: GetBLEDeviceCharacteristicsSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetBLEDeviceRSSICompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type GetBLEDeviceRSSIFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type GetBLEDeviceRSSISuccessCallback = (
+        result: GetBLEDeviceRSSISuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetBLEDeviceServicesCompleteCallback = (res: BluetoothError) => void
+    /** 接口调用失败的回调函数 */
+    type GetBLEDeviceServicesFailCallback = (res: BluetoothError) => void
+    /** 接口调用成功的回调函数 */
+    type GetBLEDeviceServicesSuccessCallback = (
+        result: GetBLEDeviceServicesSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetBLEMTUCompleteCallback = (res: BluetoothError) => void
+    /** 接口调用失败的回调函数 */
+    type GetBLEMTUFailCallback = (res: BluetoothError) => void
+    /** 接口调用成功的回调函数 */
+    type GetBLEMTUSuccessCallback = (
+        result: GetBLEMTUSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetBackgroundAudioPlayerStateCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type GetBackgroundAudioPlayerStateFailCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type GetBackgroundAudioPlayerStateSuccessCallback = (
+        result: GetBackgroundAudioPlayerStateSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetBackgroundFetchDataCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type GetBackgroundFetchDataFailCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type GetBackgroundFetchDataSuccessCallback = (
+        result: GetBackgroundFetchDataSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetBackgroundFetchTokenCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type GetBackgroundFetchTokenFailCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type GetBackgroundFetchTokenSuccessCallback = (
+        result: GetBackgroundFetchTokenSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetBatteryInfoCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type GetBatteryInfoFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type GetBatteryInfoSuccessCallback = (
+        result: GetBatteryInfoSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetBeaconsCompleteCallback = (res: BeaconError) => void
+    /** 接口调用失败的回调函数 */
+    type GetBeaconsFailCallback = (res: BeaconError) => void
+    /** 接口调用成功的回调函数 */
+    type GetBeaconsSuccessCallback = (
+        result: GetBeaconsSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetBluetoothAdapterStateCompleteCallback = (
+        res: BluetoothError
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type GetBluetoothAdapterStateFailCallback = (res: BluetoothError) => void
+    /** 接口调用成功的回调函数 */
+    type GetBluetoothAdapterStateSuccessCallback = (
+        result: GetBluetoothAdapterStateSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetBluetoothDevicesCompleteCallback = (res: BluetoothError) => void
+    /** 接口调用失败的回调函数 */
+    type GetBluetoothDevicesFailCallback = (res: BluetoothError) => void
+    /** 接口调用成功的回调函数 */
+    type GetBluetoothDevicesSuccessCallback = (
+        result: GetBluetoothDevicesSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetCenterLocationCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type GetCenterLocationFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type GetCenterLocationSuccessCallback = (
+        result: GetCenterLocationSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetChannelsLiveInfoCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type GetChannelsLiveInfoFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type GetChannelsLiveInfoSuccessCallback = (
+        result: GetChannelsLiveInfoSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetChannelsLiveNoticeInfoCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type GetChannelsLiveNoticeInfoFailCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type GetChannelsLiveNoticeInfoSuccessCallback = (
+        result: GetChannelsLiveNoticeInfoSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetClipboardDataCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type GetClipboardDataFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type GetClipboardDataSuccessCallback = (
+        option: GetClipboardDataSuccessCallbackOption
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetConnectedBluetoothDevicesCompleteCallback = (
+        res: BluetoothError
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type GetConnectedBluetoothDevicesFailCallback = (
+        res: BluetoothError
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type GetConnectedBluetoothDevicesSuccessCallback = (
+        result: GetConnectedBluetoothDevicesSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetConnectedWifiCompleteCallback = (res: WifiError) => void
+    /** 接口调用失败的回调函数 */
+    type GetConnectedWifiFailCallback = (res: WifiError) => void
+    /** 接口调用成功的回调函数 */
+    type GetConnectedWifiSuccessCallback = (
+        result: GetConnectedWifiSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetContentsCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type GetContentsFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type GetContentsSuccessCallback = (
+        result: GetContentsSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetExtConfigCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type GetExtConfigFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type GetExtConfigSuccessCallback = (
+        result: GetExtConfigSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetFileInfoCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetGroupEnterInfoCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type GetGroupEnterInfoFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type GetGroupEnterInfoSuccessCallback = (
+        result: GetGroupEnterInfoSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetHCEStateCompleteCallback = (res: NFCError) => void
+    /** 接口调用失败的回调函数 */
+    type GetHCEStateFailCallback = (res: NFCError) => void
+    /** 接口调用成功的回调函数 */
+    type GetHCEStateSuccessCallback = (res: NFCError) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetHistoricalBytesCompleteCallback = (res: Nfcrwerror) => void
+    /** 接口调用失败的回调函数 */
+    type GetHistoricalBytesFailCallback = (res: Nfcrwerror) => void
+    /** 接口调用成功的回调函数 */
+    type GetHistoricalBytesSuccessCallback = (
+        result: GetHistoricalBytesSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetImageInfoCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type GetImageInfoFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type GetImageInfoSuccessCallback = (
+        result: GetImageInfoSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetLatestUserKeyCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type GetLatestUserKeyFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type GetLatestUserKeySuccessCallback = (
+        result: GetLatestUserKeySuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetLocalIPAddressCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type GetLocalIPAddressFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type GetLocalIPAddressSuccessCallback = (
+        result: GetLocalIPAddressSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetLocationCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type GetLocationFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type GetLocationSuccessCallback = (
+        result: GetLocationSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetMaxTransceiveLengthCompleteCallback = (res: Nfcrwerror) => void
+    /** 接口调用失败的回调函数 */
+    type GetMaxTransceiveLengthFailCallback = (res: Nfcrwerror) => void
+    /** 接口调用成功的回调函数 */
+    type GetMaxTransceiveLengthSuccessCallback = (
+        result: GetMaxTransceiveLengthSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetNetworkTypeCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type GetNetworkTypeFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type GetNetworkTypeSuccessCallback = (
+        result: GetNetworkTypeSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetRandomValuesCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type GetRandomValuesFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type GetRandomValuesSuccessCallback = (
+        result: GetRandomValuesSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetRegionCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type GetRegionFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type GetRegionSuccessCallback = (
+        result: GetRegionSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetRotateCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type GetRotateFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type GetRotateSuccessCallback = (
+        result: GetRotateSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetSakCompleteCallback = (res: Nfcrwerror) => void
+    /** 接口调用失败的回调函数 */
+    type GetSakFailCallback = (res: Nfcrwerror) => void
+    /** 接口调用成功的回调函数 */
+    type GetSakSuccessCallback = (result: GetSakSuccessCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetSavedFileInfoCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type GetSavedFileInfoFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type GetSavedFileInfoSuccessCallback = (
+        result: GetSavedFileInfoSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetSavedFileListCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type GetSavedFileListFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetScaleCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type GetScaleFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type GetScaleSuccessCallback = (
+        result: GetScaleSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetScreenBrightnessCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type GetScreenBrightnessFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type GetScreenBrightnessSuccessCallback = (
+        option: GetScreenBrightnessSuccessCallbackOption
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetSelectedTextRangeCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type GetSelectedTextRangeFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type GetSelectedTextRangeSuccessCallback = (
+        result: GetSelectedTextRangeSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetSelectionTextCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type GetSelectionTextFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type GetSelectionTextSuccessCallback = (
+        result: GetSelectionTextSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetSettingCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type GetSettingFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type GetSettingSuccessCallback = (
+        result: GetSettingSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetShareInfoCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type GetShareInfoFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type GetShareInfoSuccessCallback = (
+        result: GetGroupEnterInfoSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetSkewCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type GetSkewFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type GetSkewSuccessCallback = (result: GetSkewSuccessCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetStorageCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type GetStorageFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetStorageInfoCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type GetStorageInfoFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type GetStorageInfoSuccessCallback = (
+        option: GetStorageInfoSuccessCallbackOption
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type GetStorageSuccessCallback<T = any> = (
+        result: GetStorageSuccessCallbackResult<T>
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetSystemInfoAsyncCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type GetSystemInfoAsyncFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type GetSystemInfoAsyncSuccessCallback = (result: SystemInfo) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetSystemInfoCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type GetSystemInfoFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type GetSystemInfoSuccessCallback = (result: SystemInfo) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetUserInfoCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type GetUserInfoFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type GetUserInfoSuccessCallback = (
+        result: GetUserInfoSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetUserProfileCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type GetUserProfileFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type GetUserProfileSuccessCallback = (
+        result: GetUserProfileSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetVideoInfoCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type GetVideoInfoFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type GetVideoInfoSuccessCallback = (
+        result: GetVideoInfoSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetWeRunDataCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type GetWeRunDataFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type GetWeRunDataSuccessCallback = (
+        result: GetWeRunDataSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type GetWifiListCompleteCallback = (res: WifiError) => void
+    /** 接口调用失败的回调函数 */
+    type GetWifiListFailCallback = (res: WifiError) => void
+    /** 接口调用成功的回调函数 */
+    type GetWifiListSuccessCallback = (res: WifiError) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type HideHomeButtonCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type HideHomeButtonFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type HideHomeButtonSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type HideKeyboardCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type HideKeyboardFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type HideKeyboardSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type HideLoadingCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type HideLoadingFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type HideLoadingSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type HideNavigationBarLoadingCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type HideNavigationBarLoadingFailCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type HideNavigationBarLoadingSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type HideShareMenuCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type HideShareMenuFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type HideShareMenuSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type HideTabBarCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type HideTabBarFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type HideTabBarRedDotCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type HideTabBarRedDotFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type HideTabBarRedDotSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type HideTabBarSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type HideToastCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type HideToastFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type HideToastSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type IncludePointsCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type IncludePointsFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type IncludePointsSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type InitFaceDetectCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type InitFaceDetectFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type InitFaceDetectSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type InitMarkerClusterCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type InitMarkerClusterFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type InitMarkerClusterSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 音频播放错误事件的回调函数 */
+    type InnerAudioContextOffErrorCallback = (
+        result: InnerAudioContextOnErrorCallbackResult
+    ) => void
+    /** 音频播放错误事件的回调函数 */
+    type InnerAudioContextOnErrorCallback = (
+        result: InnerAudioContextOnErrorCallbackResult
+    ) => void
+    type InnerAudioContextOnStopCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type InsertDividerCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type InsertDividerFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type InsertDividerSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type InsertImageCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type InsertImageFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type InsertImageSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type InsertTextCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type InsertTextFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type InsertTextSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 监听相交状态变化的回调函数 */
+    type IntersectionObserverObserveCallback = (
+        result: IntersectionObserverObserveCallbackResult
+    ) => void
+    /** 插屏错误事件的回调函数 */
+    type InterstitialAdOffErrorCallback = (
+        result: InterstitialAdOnErrorCallbackResult
+    ) => void
+    /** 插屏错误事件的回调函数 */
+    type InterstitialAdOnErrorCallback = (
+        result: InterstitialAdOnErrorCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type IsBluetoothDevicePairedCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type IsBluetoothDevicePairedFailCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type IsBluetoothDevicePairedSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type IsConnectedCompleteCallback = (res: Nfcrwerror) => void
+    /** 接口调用失败的回调函数 */
+    type IsConnectedFailCallback = (res: Nfcrwerror) => void
+    /** 接口调用成功的回调函数 */
+    type IsConnectedSuccessCallback = (res: Nfcrwerror) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type JoinVoIPChatCompleteCallback = (res: JoinVoIPChatError) => void
+    /** 接口调用失败的回调函数 */
+    type JoinVoIPChatFailCallback = (res: JoinVoIPChatError) => void
+    /** 接口调用成功的回调函数 */
+    type JoinVoIPChatSuccessCallback = (
+        result: JoinVoIPChatSuccessCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type LivePlayerContextSnapshotSuccessCallback = (
+        result: LivePlayerContextSnapshotSuccessCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type LivePusherContextSnapshotSuccessCallback = (
+        result: LivePusherContextSnapshotSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type LoadFontFaceCompleteCallback = (
+        result: LoadFontFaceCompleteCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type LoadFontFaceFailCallback = (
+        result: LoadFontFaceCompleteCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type LoadFontFaceSuccessCallback = (
+        result: LoadFontFaceCompleteCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type LoginCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type LoginFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type LoginSuccessCallback = (result: LoginSuccessCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type MakeBluetoothPairCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type MakeBluetoothPairFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type MakeBluetoothPairSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type MakePhoneCallCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type MakePhoneCallFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type MakePhoneCallSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 监听 media query 状态变化的回调函数 */
+    type MediaQueryObserverObserveCallback = (
+        result: MediaQueryObserverObserveCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type MkdirCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type MkdirFailCallback = (result: MkdirFailCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type MkdirSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type MoveAlongCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type MoveAlongFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type MoveAlongSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type MoveToLocationCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type MoveToLocationFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type MoveToLocationSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type MuteCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type MuteFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type MuteSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type NavigateBackCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type NavigateBackFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type NavigateBackMiniProgramCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type NavigateBackMiniProgramFailCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type NavigateBackMiniProgramSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type NavigateBackSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type NavigateToCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type NavigateToFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type NavigateToMiniProgramCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type NavigateToMiniProgramFailCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type NavigateToMiniProgramSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type NavigateToSuccessCallback = (
+        result: NavigateToSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type NdefCloseCompleteCallback = (res: Nfcrwerror) => void
+    /** 接口调用失败的回调函数 */
+    type NdefCloseFailCallback = (res: Nfcrwerror) => void
+    /** 接口调用成功的回调函数 */
+    type NdefCloseSuccessCallback = (res: Nfcrwerror) => void
+    /** 回调函数,在执行 `SelectorQuery.exec` 方法后,返回节点信息。 */
+    type NodeCallback = (result: NodeCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type NotifyBLECharacteristicValueChangeCompleteCallback = (
+        res: BluetoothError
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type NotifyBLECharacteristicValueChangeFailCallback = (
+        res: BluetoothError
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type NotifyBLECharacteristicValueChangeSuccessCallback = (
+        res: BluetoothError
+    ) => void
+    /** 小程序切后台事件的回调函数 */
+    type OffAppHideCallback = (res: GeneralCallbackResult) => void
+    /** 音频因为受到系统占用而被中断开始事件的回调函数 */
+    type OffAudioInterruptionBeginCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 音频中断结束事件的回调函数 */
+    type OffAudioInterruptionEndCallback = (res: GeneralCallbackResult) => void
+    /** 蓝牙低功耗的最大传输单元变化事件的回调函数 */
+    type OffBLEMTUChangeCallback = (
+        result: OnBLEMTUChangeCallbackResult
+    ) => void
+    /** 当前外围设备被连接或断开连接事件的回调函数 */
+    type OffBLEPeripheralConnectionStateChangedCallback = (
+        result: OnBLEPeripheralConnectionStateChangedCallbackResult
+    ) => void
+    /** Beacon 服务状态变化事件的回调函数 */
+    type OffBeaconServiceChangeCallback = (res: GeneralCallbackResult) => void
+    /** Beacon 设备更新事件的回调函数 */
+    type OffBeaconUpdateCallback = (res: GeneralCallbackResult) => void
+    /** 音频进入可以播放状态的事件的回调函数 */
+    type OffCanplayCallback = (res: GeneralCallbackResult) => void
+    /** 已连接的设备请求读当前外围设备的特征值事件的回调函数 */
+    type OffCharacteristicReadRequestCallback = (
+        result: OnCharacteristicReadRequestCallbackResult
+    ) => void
+    /** 特征订阅事件的回调函数 */
+    type OffCharacteristicSubscribedCallback = (
+        result: OnCharacteristicSubscribedCallbackResult
+    ) => void
+    /** 取消特征订阅事件的回调函数 */
+    type OffCharacteristicUnsubscribedCallback = (
+        result: OnCharacteristicSubscribedCallbackResult
+    ) => void
+    /** 已连接的设备请求写当前外围设备的特征值事件的回调函数 */
+    type OffCharacteristicWriteRequestCallback = (
+        result: OnCharacteristicWriteRequestCallbackResult
+    ) => void
+    /** Transfer-Encoding Chunk Received 事件的回调函数 */
+    type OffChunkReceivedCallback = (
+        result: OnChunkReceivedCallbackResult
+    ) => void
+    /** 当一个 socket 连接成功建立的时候触发该事件的回调函数 */
+    type OffConnectCallback = (res: GeneralCallbackResult) => void
+    /** 用户点击右上角菜单的「复制链接」按钮时触发的事件的回调函数 */
+    type OffCopyUrlCallback = (result: OnCopyUrlCallbackResult) => void
+    /** 的回调函数 */
+    type OffDiscoveredCallback = (result: OnDiscoveredCallbackResult) => void
+    /** 音频自然播放至结束的事件的回调函数 */
+    type OffEndedCallback = (res: GeneralCallbackResult) => void
+    /** HTTP Response Header 事件的回调函数 */
+    type OffHeadersReceivedCallback = (
+        result: OnHeadersReceivedCallbackResult
+    ) => void
+    /** 开始监听数据包消息的事件的回调函数 */
+    type OffListeningCallback = (res: GeneralCallbackResult) => void
+    type OffLoadCallback = (res: GeneralCallbackResult) => void
+    /** mDNS 服务停止搜索的事件的回调函数 */
+    type OffLocalServiceDiscoveryStopCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** mDNS 服务发现的事件的回调函数 */
+    type OffLocalServiceFoundCallback = (
+        result: OnLocalServiceFoundCallbackResult
+    ) => void
+    /** mDNS 服务离开的事件的回调函数 */
+    type OffLocalServiceLostCallback = (
+        result: OnLocalServiceLostCallbackResult
+    ) => void
+    /** mDNS 服务解析失败的事件的回调函数 */
+    type OffLocalServiceResolveFailCallback = (
+        result: OnLocalServiceLostCallbackResult
+    ) => void
+    /** 实时地理位置变化事件的回调函数 */
+    type OffLocationChangeCallback = (
+        result: OnLocationChangeCallbackResult
+    ) => void
+    /** 的回调函数 */
+    type OffLocationChangeErrorCallback = (
+        result: OnLocationChangeErrorCallbackResult
+    ) => void
+    /** 弱网状态变化事件的回调函数 */
+    type OffNetworkWeakChangeCallback = (
+        result: OnNetworkWeakChangeCallbackResult
+    ) => void
+    /** 小程序要打开的页面不存在事件的回调函数 */
+    type OffPageNotFoundCallback = (
+        result: OnPageNotFoundCallbackResult
+    ) => void
+    /** 音频暂停事件的回调函数 */
+    type OffPauseCallback = (res: GeneralCallbackResult) => void
+    /** 音频播放事件的回调函数 */
+    type OffPlayCallback = (res: GeneralCallbackResult) => void
+    /** 音频完成跳转操作的事件的回调函数 */
+    type OffSeekedCallback = (res: GeneralCallbackResult) => void
+    /** 音频进行跳转操作的事件的回调函数 */
+    type OffSeekingCallback = (res: GeneralCallbackResult) => void
+    /** 音频停止事件的回调函数 */
+    type OffStopCallback = (res: GeneralCallbackResult) => void
+    /** 系统主题改变事件的回调函数 */
+    type OffThemeChangeCallback = (result: OnThemeChangeCallbackResult) => void
+    /** 音频播放进度更新事件的回调函数 */
+    type OffTimeUpdateCallback = (res: GeneralCallbackResult) => void
+    /** 未处理的 Promise 拒绝事件的回调函数 */
+    type OffUnhandledRejectionCallback = (
+        result: OnUnhandledRejectionCallbackResult
+    ) => void
+    /** 房间状态变化事件的回调函数 */
+    type OffVoIPChatStateChangedCallback = (
+        result: OnVoIPChatStateChangedCallbackResult
+    ) => void
+    /** 实时语音通话成员视频状态变化事件的回调函数 */
+    type OffVoIPVideoMembersChangedCallback = (
+        result: OnVoIPVideoMembersChangedCallbackResult
+    ) => void
+    /** 音频加载中事件的回调函数 */
+    type OffWaitingCallback = (res: GeneralCallbackResult) => void
+    /** 窗口尺寸变化事件的回调函数 */
+    type OffWindowResizeCallback = (
+        result: OnWindowResizeCallbackResult
+    ) => void
+    /** 加速度数据事件的回调函数 */
+    type OnAccelerometerChangeCallback = (
+        result: OnAccelerometerChangeCallbackResult
+    ) => void
+    /** 小程序错误事件的回调函数 */
+    type OnAppErrorCallback = (
+        /** 错误信息,包含堆栈 */
+        error: string
+    ) => void
+    /** 小程序切后台事件的回调函数 */
+    type OnAppHideCallback = (res: GeneralCallbackResult) => void
+    /** 小程序切前台事件的回调函数 */
+    type OnAppShowCallback = (启动参数: LaunchOptionsApp) => void
+    /** 音频因为受到系统占用而被中断开始事件的回调函数 */
+    type OnAudioInterruptionBeginCallback = (res: GeneralCallbackResult) => void
+    /** 音频中断结束事件的回调函数 */
+    type OnAudioInterruptionEndCallback = (res: GeneralCallbackResult) => void
+    /** 蓝牙低功耗设备的特征值变化事件的回调函数 */
+    type OnBLECharacteristicValueChangeCallback = (
+        result: OnBLECharacteristicValueChangeCallbackResult
+    ) => void
+    /** 蓝牙低功耗连接状态的改变事件的回调函数 */
+    type OnBLEConnectionStateChangeCallback = (
+        result: OnBLEConnectionStateChangeCallbackResult
+    ) => void
+    /** 蓝牙低功耗的最大传输单元变化事件的回调函数 */
+    type OnBLEMTUChangeCallback = (result: OnBLEMTUChangeCallbackResult) => void
+    /** 当前外围设备被连接或断开连接事件的回调函数 */
+    type OnBLEPeripheralConnectionStateChangedCallback = (
+        result: OnBLEPeripheralConnectionStateChangedCallbackResult
+    ) => void
+    /** 音乐暂停事件的回调函数 */
+    type OnBackgroundAudioPauseCallback = (res: GeneralCallbackResult) => void
+    /** 音乐播放事件的回调函数 */
+    type OnBackgroundAudioPlayCallback = (res: GeneralCallbackResult) => void
+    /** 音乐停止事件的回调函数 */
+    type OnBackgroundAudioStopCallback = (res: GeneralCallbackResult) => void
+    /** 收到 backgroundFetch 数据事件的回调函数 */
+    type OnBackgroundFetchDataCallback = (
+        result: OnBackgroundFetchDataCallbackResult
+    ) => void
+    /** Beacon 服务状态变化事件的回调函数 */
+    type OnBeaconServiceChangeCallback = (
+        result: OnBeaconServiceChangeCallbackResult
+    ) => void
+    /** Beacon 设备更新事件的回调函数 */
+    type OnBeaconUpdateCallback = (result: OnBeaconUpdateCallbackResult) => void
+    /** 蓝牙适配器状态变化事件的回调函数 */
+    type OnBluetoothAdapterStateChangeCallback = (
+        result: OnBluetoothAdapterStateChangeCallbackResult
+    ) => void
+    /** 搜索到新设备的事件的回调函数 */
+    type OnBluetoothDeviceFoundCallback = (
+        result: OnBluetoothDeviceFoundCallbackResult
+    ) => void
+    /** 回调函数 */
+    type OnCameraFrameCallback = (result: OnCameraFrameCallbackResult) => void
+    type OnCanplayCallback = (res: GeneralCallbackResult) => void
+    /** 已连接的设备请求读当前外围设备的特征值事件的回调函数 */
+    type OnCharacteristicReadRequestCallback = (
+        result: OnCharacteristicReadRequestCallbackResult
+    ) => void
+    /** 特征订阅事件的回调函数 */
+    type OnCharacteristicSubscribedCallback = (
+        result: OnCharacteristicSubscribedCallbackResult
+    ) => void
+    /** 取消特征订阅事件的回调函数 */
+    type OnCharacteristicUnsubscribedCallback = (
+        result: OnCharacteristicSubscribedCallbackResult
+    ) => void
+    /** 已连接的设备请求写当前外围设备的特征值事件的回调函数 */
+    type OnCharacteristicWriteRequestCallback = (
+        result: OnCharacteristicWriteRequestCallbackResult
+    ) => void
+    /** 向微信后台请求检查更新结果事件的回调函数 */
+    type OnCheckForUpdateCallback = (
+        result: OnCheckForUpdateCallbackResult
+    ) => void
+    /** Transfer-Encoding Chunk Received 事件的回调函数 */
+    type OnChunkReceivedCallback = (
+        result: OnChunkReceivedCallbackResult
+    ) => void
+    /** 罗盘数据变化事件的回调函数 */
+    type OnCompassChangeCallback = (
+        result: OnCompassChangeCallbackResult
+    ) => void
+    /** 当一个 socket 连接成功建立的时候触发该事件的回调函数 */
+    type OnConnectCallback = (res: GeneralCallbackResult) => void
+    /** 用户点击右上角菜单的「复制链接」按钮时触发的事件的回调函数 */
+    type OnCopyUrlCallback = (result: OnCopyUrlCallbackResult) => void
+    /** 设备方向变化事件的回调函数 */
+    type OnDeviceMotionChangeCallback = (
+        result: OnDeviceMotionChangeCallbackResult
+    ) => void
+    /** 的回调函数 */
+    type OnDiscoveredCallback = (result: OnDiscoveredCallbackResult) => void
+    type OnEndedCallback = (res: GeneralCallbackResult) => void
+    /** 已录制完指定帧大小的文件事件的回调函数 */
+    type OnFrameRecordedCallback = (
+        result: OnFrameRecordedCallbackResult
+    ) => void
+    /** 获取到 Wi-Fi 列表数据事件的回调函数 */
+    type OnGetWifiListCallback = (result: OnGetWifiListCallbackResult) => void
+    /** 陀螺仪数据变化事件的回调函数 */
+    type OnGyroscopeChangeCallback = (
+        result: OnGyroscopeChangeCallbackResult
+    ) => void
+    /** 接收 NFC 设备消息事件的回调函数 */
+    type OnHCEMessageCallback = (result: OnHCEMessageCallbackResult) => void
+    /** HTTP Response Header 事件的回调函数 */
+    type OnHeadersReceivedCallback = (
+        result: OnHeadersReceivedCallbackResult
+    ) => void
+    /** 录音因为受到系统占用而被中断开始事件的回调函数 */
+    type OnInterruptionBeginCallback = (res: GeneralCallbackResult) => void
+    /** 录音中断结束事件的回调函数 */
+    type OnInterruptionEndCallback = (res: GeneralCallbackResult) => void
+    type OnKeyboardHeightChangeCallback = (
+        result: OnKeyboardHeightChangeCallbackResult
+    ) => void
+    /** 开始监听数据包消息的事件的回调函数 */
+    type OnListeningCallback = (res: GeneralCallbackResult) => void
+    type OnLoadCallback = (res: GeneralCallbackResult) => void
+    /** mDNS 服务停止搜索的事件的回调函数 */
+    type OnLocalServiceDiscoveryStopCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** mDNS 服务发现的事件的回调函数 */
+    type OnLocalServiceFoundCallback = (
+        result: OnLocalServiceFoundCallbackResult
+    ) => void
+    /** mDNS 服务离开的事件的回调函数 */
+    type OnLocalServiceLostCallback = (
+        result: OnLocalServiceLostCallbackResult
+    ) => void
+    /** mDNS 服务解析失败的事件的回调函数 */
+    type OnLocalServiceResolveFailCallback = (
+        result: OnLocalServiceLostCallbackResult
+    ) => void
+    /** 实时地理位置变化事件的回调函数 */
+    type OnLocationChangeCallback = (
+        result: OnLocationChangeCallbackResult
+    ) => void
+    /** 的回调函数 */
+    type OnLocationChangeErrorCallback = (
+        result: OnLocationChangeErrorCallbackResult
+    ) => void
+    /** 内存不足告警事件的回调函数 */
+    type OnMemoryWarningCallback = (
+        result: OnMemoryWarningCallbackResult
+    ) => void
+    /** 网络状态变化事件的回调函数 */
+    type OnNetworkStatusChangeCallback = (
+        result: OnNetworkStatusChangeCallbackResult
+    ) => void
+    /** 弱网状态变化事件的回调函数 */
+    type OnNetworkWeakChangeCallback = (
+        result: OnNetworkWeakChangeCallbackResult
+    ) => void
+    /** 用户在系统音乐播放面板点击下一曲事件的回调函数 */
+    type OnNextCallback = (res: GeneralCallbackResult) => void
+    /** WebSocket 连接打开事件的回调函数 */
+    type OnOpenCallback = (result: OnOpenCallbackResult) => void
+    /** 小程序要打开的页面不存在事件的回调函数 */
+    type OnPageNotFoundCallback = (result: OnPageNotFoundCallbackResult) => void
+    type OnPauseCallback = (res: GeneralCallbackResult) => void
+    type OnPlayCallback = (res: GeneralCallbackResult) => void
+    /** 用户在系统音乐播放面板点击上一曲事件的回调函数 */
+    type OnPrevCallback = (res: GeneralCallbackResult) => void
+    /** worker线程被系统回收事件的回调函数 */
+    type OnProcessKilledCallback = (res: GeneralCallbackResult) => void
+    /** 录音继续事件的回调函数 */
+    type OnResumeCallback = (res: GeneralCallbackResult) => void
+    type OnSeekedCallback = (res: GeneralCallbackResult) => void
+    type OnSeekingCallback = (res: GeneralCallbackResult) => void
+    /** WebSocket 连接关闭事件的回调函数 */
+    type OnSocketCloseCallback = (
+        result: SocketTaskOnCloseCallbackResult
+    ) => void
+    /** WebSocket 错误事件的回调函数 */
+    type OnSocketErrorCallback = (result: GeneralCallbackResult) => void
+    /** WebSocket 接受到服务器的消息事件的回调函数 */
+    type OnSocketMessageCallback = (
+        result: SocketTaskOnMessageCallbackResult
+    ) => void
+    /** WebSocket 连接打开事件的回调函数 */
+    type OnSocketOpenCallback = (result: OnSocketOpenCallbackResult) => void
+    /** 录音开始事件的回调函数 */
+    type OnStartCallback = (res: GeneralCallbackResult) => void
+    /** 系统主题改变事件的回调函数 */
+    type OnThemeChangeCallback = (result: OnThemeChangeCallbackResult) => void
+    type OnTimeUpdateCallback = (res: GeneralCallbackResult) => void
+    /** 未处理的 Promise 拒绝事件的回调函数 */
+    type OnUnhandledRejectionCallback = (
+        result: OnUnhandledRejectionCallbackResult
+    ) => void
+    /** 小程序更新失败事件的回调函数 */
+    type OnUpdateFailedCallback = (res: GeneralCallbackResult) => void
+    /** 小程序有版本更新事件的回调函数 */
+    type OnUpdateReadyCallback = (res: GeneralCallbackResult) => void
+    /** 用户主动截屏事件的回调函数 */
+    type OnUserCaptureScreenCallback = (res: GeneralCallbackResult) => void
+    /** 被动断开实时语音通话事件的回调函数 */
+    type OnVoIPChatInterruptedCallback = (
+        result: OnVoIPChatInterruptedCallbackResult
+    ) => void
+    /** 实时语音通话成员在线状态变化事件的回调函数 */
+    type OnVoIPChatMembersChangedCallback = (
+        result: OnVoIPChatMembersChangedCallbackResult
+    ) => void
+    /** 实时语音通话成员通话状态变化事件的回调函数 */
+    type OnVoIPChatSpeakersChangedCallback = (
+        result: OnVoIPChatSpeakersChangedCallbackResult
+    ) => void
+    /** 房间状态变化事件的回调函数 */
+    type OnVoIPChatStateChangedCallback = (
+        result: OnVoIPChatStateChangedCallbackResult
+    ) => void
+    /** 实时语音通话成员视频状态变化事件的回调函数 */
+    type OnVoIPVideoMembersChangedCallback = (
+        result: OnVoIPVideoMembersChangedCallbackResult
+    ) => void
+    /** 音频加载中事件的回调函数 */
+    type OnWaitingCallback = (res: GeneralCallbackResult) => void
+    /** 连接上 Wi-Fi 的事件的回调函数 */
+    type OnWifiConnectedCallback = (
+        result: OnWifiConnectedCallbackResult
+    ) => void
+    /** 窗口尺寸变化事件的回调函数 */
+    type OnWindowResizeCallback = (result: OnWindowResizeCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type OpenAppAuthorizeSettingCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type OpenAppAuthorizeSettingFailCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type OpenAppAuthorizeSettingSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type OpenBluetoothAdapterCompleteCallback = (res: BluetoothError) => void
+    /** 接口调用失败的回调函数 */
+    type OpenBluetoothAdapterFailCallback = (res: BluetoothError) => void
+    /** 接口调用成功的回调函数 */
+    type OpenBluetoothAdapterSuccessCallback = (res: BluetoothError) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type OpenCardCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type OpenCardFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type OpenCardSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type OpenChannelsActivityCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type OpenChannelsActivityFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type OpenChannelsActivitySuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type OpenChannelsEventCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type OpenChannelsEventFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type OpenChannelsEventSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type OpenChannelsLiveCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type OpenChannelsLiveFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type OpenChannelsLiveSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type OpenChannelsUserProfileCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type OpenChannelsUserProfileFailCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type OpenChannelsUserProfileSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type OpenCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type OpenCustomerServiceChatCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type OpenCustomerServiceChatFailCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type OpenCustomerServiceChatSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type OpenDocumentCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type OpenDocumentFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type OpenDocumentSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type OpenEmbeddedMiniProgramCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type OpenEmbeddedMiniProgramFailCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type OpenEmbeddedMiniProgramSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type OpenFailCallback = (result: OpenFailCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type OpenLocationCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type OpenLocationFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type OpenLocationSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type OpenMapAppCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type OpenMapAppFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type OpenMapAppSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type OpenSettingCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type OpenSettingFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type OpenSettingSuccessCallback = (
+        result: OpenSettingSuccessCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type OpenSuccessCallback = (result: OpenSuccessCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type OpenSystemBluetoothSettingCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type OpenSystemBluetoothSettingFailCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type OpenSystemBluetoothSettingSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type OpenVideoEditorCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type OpenVideoEditorFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type OpenVideoEditorSuccessCallback = (
+        result: OpenVideoEditorSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type PageScrollToCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type PageScrollToFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type PageScrollToSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type PauseBGMCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type PauseBGMFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type PauseBGMSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type PauseBackgroundAudioCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type PauseBackgroundAudioFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type PauseBackgroundAudioSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type PauseCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type PauseFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type PauseSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type PauseVoiceCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type PauseVoiceFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type PauseVoiceSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type PlayBGMCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type PlayBGMFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type PlayBGMSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type PlayBackgroundAudioCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type PlayBackgroundAudioFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type PlayBackgroundAudioSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type PlayCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type PlayFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type PlaySuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type PlayVoiceCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type PlayVoiceFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type PlayVoiceSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type PluginLoginCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type PluginLoginFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type PluginLoginSuccessCallback = (
+        result: PluginLoginSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type PreviewImageCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type PreviewImageFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type PreviewImageSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type PreviewMediaCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type PreviewMediaFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type PreviewMediaSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ReLaunchCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type ReLaunchFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type ReLaunchSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ReadBLECharacteristicValueCompleteCallback = (
+        res: BluetoothError
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type ReadBLECharacteristicValueFailCallback = (res: BluetoothError) => void
+    /** 接口调用成功的回调函数 */
+    type ReadBLECharacteristicValueSuccessCallback = (
+        res: BluetoothError
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ReadCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ReadCompressedFileCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type ReadCompressedFileFailCallback = (
+        result: ReadCompressedFileFailCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type ReadCompressedFileSuccessCallback = (
+        result: ReadCompressedFileSuccessCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type ReadFailCallback = (result: ReadFailCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ReadFileCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type ReadFileFailCallback = (result: ReadFileFailCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type ReadFileSuccessCallback = (
+        result: ReadFileSuccessCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type ReadSuccessCallback = (result: ReadSuccessCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ReadZipEntryCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type ReadZipEntryFailCallback = (result: ReadFileFailCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type ReadZipEntrySuccessCallback = (
+        result: ReadZipEntrySuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ReaddirCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type ReaddirFailCallback = (result: ReaddirFailCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type ReaddirSuccessCallback = (result: ReaddirSuccessCallbackResult) => void
+    /** 录音结束事件的回调函数 */
+    type RecorderManagerOnStopCallback = (result: OnStopCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type RedirectToCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type RedirectToFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type RedirectToSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type RedoCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type RedoFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type RedoSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type RemoveCustomLayerCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type RemoveCustomLayerFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type RemoveCustomLayerSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type RemoveFormatCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type RemoveFormatFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type RemoveFormatSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type RemoveGroundOverlayCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type RemoveGroundOverlayFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type RemoveGroundOverlaySuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type RemoveMarkersCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type RemoveMarkersFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type RemoveMarkersSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type RemoveSavedFileCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type RemoveSavedFileSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type RemoveServiceCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type RemoveServiceFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type RemoveServiceSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type RemoveStorageCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type RemoveStorageFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type RemoveStorageSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type RemoveTabBarBadgeCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type RemoveTabBarBadgeFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type RemoveTabBarBadgeSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type RemoveVisualLayerCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type RemoveVisualLayerFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type RemoveVisualLayerSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type RenameCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type RenameFailCallback = (result: RenameFailCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type RenameSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type RequestCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type RequestFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type RequestFullScreenCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type RequestFullScreenFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type RequestFullScreenSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type RequestOrderPaymentCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type RequestOrderPaymentFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type RequestOrderPaymentSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type RequestPaymentCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type RequestPaymentFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type RequestPaymentSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type RequestPictureInPictureCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type RequestPictureInPictureFailCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type RequestPictureInPictureSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type RequestSubscribeDeviceMessageCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type RequestSubscribeDeviceMessageFailCallback = (
+        result: RequestSubscribeDeviceMessageFailCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type RequestSubscribeDeviceMessageSuccessCallback = (
+        result: RequestSubscribeDeviceMessageSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type RequestSubscribeMessageCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type RequestSubscribeMessageFailCallback = (
+        result: RequestSubscribeMessageFailCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type RequestSubscribeMessageSuccessCallback = (
+        result: RequestSubscribeMessageSuccessCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type RequestSuccessCallback<
+        T extends string | IAnyObject | ArrayBuffer =
+            | string
+            | IAnyObject
+            | ArrayBuffer
+    > = (result: RequestSuccessCallbackResult<T>) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ResumeBGMCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type ResumeBGMFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type ResumeBGMSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ResumeCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type ResumeFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type ResumeSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 用户点击 `关闭广告` 按钮的事件的回调函数 */
+    type RewardedVideoAdOffCloseCallback = (
+        result: RewardedVideoAdOnCloseCallbackResult
+    ) => void
+    /** 激励视频错误事件的回调函数 */
+    type RewardedVideoAdOffErrorCallback = (
+        result: RewardedVideoAdOnErrorCallbackResult
+    ) => void
+    /** 用户点击 `关闭广告` 按钮的事件的回调函数 */
+    type RewardedVideoAdOnCloseCallback = (
+        result: RewardedVideoAdOnCloseCallbackResult
+    ) => void
+    /** 激励视频错误事件的回调函数 */
+    type RewardedVideoAdOnErrorCallback = (
+        result: RewardedVideoAdOnErrorCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type RmdirCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type RmdirFailCallback = (result: RmdirFailCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type RmdirSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type SaveFileCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type SaveFileSuccessCallback = (
+        result: SaveFileSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type SaveFileToDiskCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type SaveFileToDiskFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type SaveFileToDiskSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type SaveImageToPhotosAlbumCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type SaveImageToPhotosAlbumFailCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type SaveImageToPhotosAlbumSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type SaveVideoToPhotosAlbumCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type SaveVideoToPhotosAlbumFailCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type SaveVideoToPhotosAlbumSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ScanCodeCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type ScanCodeFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type ScanCodeSuccessCallback = (
+        result: ScanCodeSuccessCallbackResult
+    ) => void
+    /** 回调函数,在执行 `SelectorQuery.exec` 方法后,节点信息会在 `callback` 中返回。 */
+    type ScrollOffsetCallback = (result: ScrollOffsetCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type SeekBackgroundAudioCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type SeekBackgroundAudioFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type SeekBackgroundAudioSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type SendCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type SendFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type SendHCEMessageCompleteCallback = (res: NFCError) => void
+    /** 接口调用失败的回调函数 */
+    type SendHCEMessageFailCallback = (res: NFCError) => void
+    /** 接口调用成功的回调函数 */
+    type SendHCEMessageSuccessCallback = (res: NFCError) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type SendMessageCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type SendMessageFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type SendMessageSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type SendSocketMessageCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type SendSocketMessageFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type SendSocketMessageSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type SendSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type SetBGMVolumeCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type SetBGMVolumeFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type SetBGMVolumeSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type SetBLEMTUCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type SetBLEMTUFailCallback = (result: SetBLEMTUFailCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type SetBLEMTUSuccessCallback = (
+        result: SetBLEMTUSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type SetBackgroundColorCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type SetBackgroundColorFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type SetBackgroundColorSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type SetBackgroundFetchTokenCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type SetBackgroundFetchTokenFailCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type SetBackgroundFetchTokenSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type SetBackgroundTextStyleCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type SetBackgroundTextStyleFailCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type SetBackgroundTextStyleSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type SetCenterOffsetCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type SetCenterOffsetFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type SetCenterOffsetSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type SetClipboardDataCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type SetClipboardDataFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type SetClipboardDataSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type SetContentsCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type SetContentsFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type SetContentsSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type SetEnable1v1ChatCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type SetEnable1v1ChatFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type SetEnable1v1ChatSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type SetEnableDebugCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type SetEnableDebugFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type SetEnableDebugSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type SetInnerAudioOptionCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type SetInnerAudioOptionFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type SetInnerAudioOptionSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type SetKeepScreenOnCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type SetKeepScreenOnFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type SetKeepScreenOnSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type SetLocMarkerIconCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type SetLocMarkerIconFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type SetLocMarkerIconSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type SetMICVolumeCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type SetMICVolumeFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type SetMICVolumeSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type SetNavigationBarColorCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type SetNavigationBarColorFailCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type SetNavigationBarColorSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type SetNavigationBarTitleCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type SetNavigationBarTitleFailCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type SetNavigationBarTitleSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type SetScreenBrightnessCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type SetScreenBrightnessFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type SetScreenBrightnessSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type SetStorageCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type SetStorageFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type SetStorageSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type SetTabBarBadgeCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type SetTabBarBadgeFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type SetTabBarBadgeSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type SetTabBarItemCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type SetTabBarItemFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type SetTabBarItemSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type SetTabBarStyleCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type SetTabBarStyleFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type SetTabBarStyleSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type SetTimeoutCompleteCallback = (res: Nfcrwerror) => void
+    /** 接口调用失败的回调函数 */
+    type SetTimeoutFailCallback = (res: Nfcrwerror) => void
+    /** 接口调用成功的回调函数 */
+    type SetTimeoutSuccessCallback = (res: Nfcrwerror) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type SetTopBarTextCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type SetTopBarTextFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type SetTopBarTextSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type SetVisualEffectOnCaptureCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type SetVisualEffectOnCaptureFailCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type SetVisualEffectOnCaptureSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type SetWifiListCompleteCallback = (res: WifiError) => void
+    /** 接口调用失败的回调函数 */
+    type SetWifiListFailCallback = (res: WifiError) => void
+    /** 接口调用成功的回调函数 */
+    type SetWifiListSuccessCallback = (res: WifiError) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type SetWindowSizeCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type SetWindowSizeFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type SetWindowSizeSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type SetZoomCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type SetZoomFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type SetZoomSuccessCallback = (result: SetZoomSuccessCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ShareFileMessageCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type ShareFileMessageFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type ShareFileMessageSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ShareToWeRunCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type ShareToWeRunFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type ShareToWeRunSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ShareVideoMessageCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type ShareVideoMessageFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type ShareVideoMessageSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ShowActionSheetCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type ShowActionSheetFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type ShowActionSheetSuccessCallback = (
+        result: ShowActionSheetSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ShowLoadingCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type ShowLoadingFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type ShowLoadingSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ShowModalCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type ShowModalFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type ShowModalSuccessCallback = (
+        result: ShowModalSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ShowNavigationBarLoadingCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type ShowNavigationBarLoadingFailCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type ShowNavigationBarLoadingSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ShowRedPackageCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type ShowRedPackageFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type ShowRedPackageSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ShowShareImageMenuCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type ShowShareImageMenuFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type ShowShareImageMenuSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ShowShareMenuCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type ShowShareMenuFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type ShowShareMenuSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ShowTabBarCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type ShowTabBarFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ShowTabBarRedDotCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type ShowTabBarRedDotFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type ShowTabBarRedDotSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type ShowTabBarSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ShowToastCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type ShowToastFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type ShowToastSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type SnapshotCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type SnapshotFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type SocketTaskCloseFailCallback = (res: GeneralCallbackResult) => void
+    /** WebSocket 连接关闭事件的回调函数 */
+    type SocketTaskOnCloseCallback = (
+        result: SocketTaskOnCloseCallbackResult
+    ) => void
+    /** WebSocket 接受到服务器的消息事件的回调函数 */
+    type SocketTaskOnMessageCallback = (
+        result: SocketTaskOnMessageCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type StartAccelerometerCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type StartAccelerometerFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type StartAccelerometerSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type StartAdvertisingCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type StartAdvertisingFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type StartAdvertisingSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type StartBeaconDiscoveryCompleteCallback = (res: BeaconError) => void
+    /** 接口调用失败的回调函数 */
+    type StartBeaconDiscoveryFailCallback = (res: BeaconError) => void
+    /** 接口调用成功的回调函数 */
+    type StartBeaconDiscoverySuccessCallback = (res: BeaconError) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type StartBluetoothDevicesDiscoveryCompleteCallback = (
+        res: BluetoothError
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type StartBluetoothDevicesDiscoveryFailCallback = (
+        res: BluetoothError
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type StartBluetoothDevicesDiscoverySuccessCallback = (
+        res: BluetoothError
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type StartCompassCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type StartCompassFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type StartCompassSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type StartCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type StartDeviceMotionListeningCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type StartDeviceMotionListeningFailCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type StartDeviceMotionListeningSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type StartDiscoveryCompleteCallback = (res: Nfcrwerror) => void
+    /** 接口调用失败的回调函数 */
+    type StartDiscoveryFailCallback = (res: Nfcrwerror) => void
+    /** 接口调用成功的回调函数 */
+    type StartDiscoverySuccessCallback = (res: Nfcrwerror) => void
+    /** 接口调用失败的回调函数 */
+    type StartFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type StartGyroscopeCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type StartGyroscopeFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type StartGyroscopeSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type StartHCECompleteCallback = (res: NFCError) => void
+    /** 接口调用失败的回调函数 */
+    type StartHCEFailCallback = (res: NFCError) => void
+    /** 接口调用成功的回调函数 */
+    type StartHCESuccessCallback = (res: NFCError) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type StartLocalServiceDiscoveryCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type StartLocalServiceDiscoveryFailCallback = (
+        result: StartLocalServiceDiscoveryFailCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type StartLocalServiceDiscoverySuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type StartLocationUpdateBackgroundCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type StartLocationUpdateBackgroundFailCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type StartLocationUpdateBackgroundSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type StartLocationUpdateCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type StartLocationUpdateFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type StartLocationUpdateSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type StartPreviewCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type StartPreviewFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type StartPreviewSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type StartPullDownRefreshCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type StartPullDownRefreshFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type StartPullDownRefreshSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type StartRecordCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type StartRecordFailCallback = (res: GeneralCallbackResult) => void
+    /** 超过30s或页面 `onHide` 时会结束录像 */
+    type StartRecordTimeoutCallback = (
+        result: StartRecordTimeoutCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type StartSoterAuthenticationCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type StartSoterAuthenticationFailCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type StartSoterAuthenticationSuccessCallback = (
+        result: StartSoterAuthenticationSuccessCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type StartSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type StartWifiCompleteCallback = (res: WifiError) => void
+    /** 接口调用失败的回调函数 */
+    type StartWifiFailCallback = (res: WifiError) => void
+    /** 接口调用成功的回调函数 */
+    type StartWifiSuccessCallback = (res: WifiError) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type StatCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type StatFailCallback = (result: StatFailCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type StatSuccessCallback = (result: StatSuccessCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type StopAccelerometerCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type StopAccelerometerFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type StopAccelerometerSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type StopAdvertisingCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type StopAdvertisingFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type StopAdvertisingSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type StopBGMCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type StopBGMFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type StopBGMSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type StopBackgroundAudioCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type StopBackgroundAudioFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type StopBackgroundAudioSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type StopBeaconDiscoveryCompleteCallback = (res: BeaconError) => void
+    /** 接口调用失败的回调函数 */
+    type StopBeaconDiscoveryFailCallback = (res: BeaconError) => void
+    /** 接口调用成功的回调函数 */
+    type StopBeaconDiscoverySuccessCallback = (res: BeaconError) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type StopBluetoothDevicesDiscoveryCompleteCallback = (
+        res: BluetoothError
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type StopBluetoothDevicesDiscoveryFailCallback = (
+        res: BluetoothError
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type StopBluetoothDevicesDiscoverySuccessCallback = (
+        res: BluetoothError
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type StopCompassCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type StopCompassFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type StopCompassSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type StopCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type StopDeviceMotionListeningCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type StopDeviceMotionListeningFailCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type StopDeviceMotionListeningSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type StopDiscoveryCompleteCallback = (res: Nfcrwerror) => void
+    /** 接口调用失败的回调函数 */
+    type StopDiscoveryFailCallback = (res: Nfcrwerror) => void
+    /** 接口调用成功的回调函数 */
+    type StopDiscoverySuccessCallback = (res: Nfcrwerror) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type StopFaceDetectCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type StopFaceDetectFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type StopFaceDetectSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type StopFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type StopGyroscopeCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type StopGyroscopeFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type StopGyroscopeSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type StopHCECompleteCallback = (res: NFCError) => void
+    /** 接口调用失败的回调函数 */
+    type StopHCEFailCallback = (res: NFCError) => void
+    /** 接口调用成功的回调函数 */
+    type StopHCESuccessCallback = (res: NFCError) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type StopLocalServiceDiscoveryCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type StopLocalServiceDiscoveryFailCallback = (
+        result: StopLocalServiceDiscoveryFailCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type StopLocalServiceDiscoverySuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type StopLocationUpdateCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type StopLocationUpdateFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type StopLocationUpdateSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type StopPreviewCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type StopPreviewFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type StopPreviewSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type StopPullDownRefreshCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type StopPullDownRefreshFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type StopPullDownRefreshSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type StopRecordCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type StopRecordFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type StopSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type StopVoiceCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type StopVoiceFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type StopVoiceSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type StopWifiCompleteCallback = (res: WifiError) => void
+    /** 接口调用失败的回调函数 */
+    type StopWifiFailCallback = (res: WifiError) => void
+    /** 接口调用成功的回调函数 */
+    type StopWifiSuccessCallback = (res: WifiError) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type SubscribeVoIPVideoMembersCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type SubscribeVoIPVideoMembersFailCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type SubscribeVoIPVideoMembersSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type SwitchCameraCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type SwitchCameraFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type SwitchCameraSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type SwitchTabCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type SwitchTabFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type SwitchTabSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 当接收到数据的时触发该事件的回调函数 */
+    type TCPSocketOffMessageCallback = (
+        result: TCPSocketOnMessageCallbackResult
+    ) => void
+    /** 当接收到数据的时触发该事件的回调函数 */
+    type TCPSocketOnMessageCallback = (
+        result: TCPSocketOnMessageCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type TakePhotoCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type TakePhotoFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type TakePhotoSuccessCallback = (
+        result: TakePhotoSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ToScreenLocationCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type ToScreenLocationFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type ToScreenLocationSuccessCallback = (
+        result: ToScreenLocationSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type ToggleTorchCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type ToggleTorchFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type ToggleTorchSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type TransceiveCompleteCallback = (res: Nfcrwerror) => void
+    /** 接口调用失败的回调函数 */
+    type TransceiveFailCallback = (res: Nfcrwerror) => void
+    /** 接口调用成功的回调函数 */
+    type TransceiveSuccessCallback = (
+        result: TransceiveSuccessCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type TranslateMarkerCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type TranslateMarkerFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type TranslateMarkerSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type TruncateCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type TruncateFailCallback = (result: TruncateFailCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type TruncateSuccessCallback = (res: GeneralCallbackResult) => void
+    type UDPSocketOffCloseCallback = (res: GeneralCallbackResult) => void
+    type UDPSocketOffErrorCallback = (result: GeneralCallbackResult) => void
+    /** 收到消息的事件的回调函数 */
+    type UDPSocketOffMessageCallback = (
+        result: UDPSocketOnMessageCallbackResult
+    ) => void
+    type UDPSocketOnCloseCallback = (res: GeneralCallbackResult) => void
+    type UDPSocketOnErrorCallback = (result: GeneralCallbackResult) => void
+    /** 收到消息的事件的回调函数 */
+    type UDPSocketOnMessageCallback = (
+        result: UDPSocketOnMessageCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type UndoCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type UndoFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type UndoSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type UnlinkCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type UnlinkFailCallback = (result: UnlinkFailCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type UnlinkSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type UnzipCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type UnzipFailCallback = (result: UnzipFailCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type UnzipSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type UpdateGroundOverlayCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type UpdateGroundOverlayFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type UpdateGroundOverlaySuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type UpdateShareMenuCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type UpdateShareMenuFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type UpdateShareMenuSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type UpdateVoIPChatMuteConfigCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type UpdateVoIPChatMuteConfigFailCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type UpdateVoIPChatMuteConfigSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type UpdateWeChatAppCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type UpdateWeChatAppFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type UpdateWeChatAppSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type UploadFileCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type UploadFileFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type UploadFileSuccessCallback = (
+        result: UploadFileSuccessCallbackResult
+    ) => void
+    /** 上传进度变化事件的回调函数 */
+    type UploadTaskOffProgressUpdateCallback = (
+        result: UploadTaskOnProgressUpdateCallbackResult
+    ) => void
+    /** 上传进度变化事件的回调函数 */
+    type UploadTaskOnProgressUpdateCallback = (
+        result: UploadTaskOnProgressUpdateCallbackResult
+    ) => void
+    /** 开启会话回调 */
+    type VKSessionStartCallback = (
+        /** 参数 status 可选值:
+         * - 0: 成功;
+         * - 2000001: 参数错误;
+         * - 2003000: 会话不可用;
+         * - 2000000: 系统错误;
+         * - 2000002: 设备不支持;
+         * - 2000003: 系统不支持;
+         * - 2003001: 未开启系统相机权限;
+         * - 2003002: 未开启小程序相机权限; */
+        status:
+            | 0
+            | 2000001
+            | 2003000
+            | 2000000
+            | 2000002
+            | 2000003
+            | 2003001
+            | 2003002
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type VibrateLongCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type VibrateLongFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type VibrateLongSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type VibrateShortCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type VibrateShortFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type VibrateShortSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 主线程/Worker 线程向当前线程发送的消息的事件的回调函数 */
+    type WorkerOnMessageCallback = (
+        result: WorkerOnMessageCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type WriteBLECharacteristicValueCompleteCallback = (
+        res: BluetoothError
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type WriteBLECharacteristicValueFailCallback = (res: BluetoothError) => void
+    /** 接口调用成功的回调函数 */
+    type WriteBLECharacteristicValueSuccessCallback = (
+        res: BluetoothError
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type WriteCharacteristicValueCompleteCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type WriteCharacteristicValueFailCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type WriteCharacteristicValueSuccessCallback = (
+        res: GeneralCallbackResult
+    ) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type WriteCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type WriteFailCallback = (result: WriteFailCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type WriteFileCompleteCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type WriteFileFailCallback = (result: WriteFileFailCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type WriteFileSuccessCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用结束的回调函数(调用成功、失败都会执行) */
+    type WriteNdefMessageCompleteCallback = (res: Nfcrwerror) => void
+    /** 接口调用失败的回调函数 */
+    type WriteNdefMessageFailCallback = (res: Nfcrwerror) => void
+    /** 接口调用成功的回调函数 */
+    type WriteNdefMessageSuccessCallback = (res: Nfcrwerror) => void
+    /** 接口调用成功的回调函数 */
+    type WriteSuccessCallback = (result: WriteSuccessCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type WxGetFileInfoFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type WxGetFileInfoSuccessCallback = (
+        result: WxGetFileInfoSuccessCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type WxGetSavedFileListSuccessCallback = (
+        result: WxGetSavedFileListSuccessCallbackResult
+    ) => void
+    /** 接口调用失败的回调函数 */
+    type WxRemoveSavedFileFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用失败的回调函数 */
+    type WxSaveFileFailCallback = (res: GeneralCallbackResult) => void
+    /** 接口调用成功的回调函数 */
+    type WxStartRecordSuccessCallback = (
+        result: StartRecordSuccessCallbackResult
+    ) => void
+    /** 接口调用成功的回调函数 */
+    type WxStopRecordSuccessCallback = (res: GeneralCallbackResult) => void
+}

+ 270 - 0
mini/types-tips-test/miniprogram-api-typings/types/wx/lib.wx.app.d.ts

xqd
@@ -0,0 +1,270 @@
+/*! *****************************************************************************
+Copyright (c) 2022 Tencent, Inc. All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+***************************************************************************** */
+
+declare namespace WechatMiniprogram.App {
+    interface ReferrerInfo {
+        /** 来源小程序或公众号或App的 appId
+         *
+         * 以下场景支持返回 referrerInfo.appId:
+         * - 1020(公众号 profile 页相关小程序列表): appId
+         * - 1035(公众号自定义菜单):来源公众号 appId
+         * - 1036(App 分享消息卡片):来源应用 appId
+         * - 1037(小程序打开小程序):来源小程序 appId
+         * - 1038(从另一个小程序返回):来源小程序 appId
+         * - 1043(公众号模板消息):来源公众号 appId
+         */
+        appId: string
+        /** 来源小程序传过来的数据,scene=1037或1038时支持 */
+        extraData?: any
+    }
+
+    type SceneValues =
+        | 1001
+        | 1005
+        | 1006
+        | 1007
+        | 1008
+        | 1011
+        | 1012
+        | 1013
+        | 1014
+        | 1017
+        | 1019
+        | 1020
+        | 1023
+        | 1024
+        | 1025
+        | 1026
+        | 1027
+        | 1028
+        | 1029
+        | 1030
+        | 1031
+        | 1032
+        | 1034
+        | 1035
+        | 1036
+        | 1037
+        | 1038
+        | 1039
+        | 1042
+        | 1043
+        | 1044
+        | 1045
+        | 1046
+        | 1047
+        | 1048
+        | 1049
+        | 1052
+        | 1053
+        | 1056
+        | 1057
+        | 1058
+        | 1059
+        | 1064
+        | 1067
+        | 1069
+        | 1071
+        | 1072
+        | 1073
+        | 1074
+        | 1077
+        | 1078
+        | 1079
+        | 1081
+        | 1082
+        | 1084
+        | 1089
+        | 1090
+        | 1091
+        | 1092
+        | 1095
+        | 1096
+        | 1097
+        | 1099
+        | 1102
+        | 1124
+        | 1125
+        | 1126
+        | 1129
+
+    interface LaunchShowOption {
+        /** 打开小程序的路径 */
+        path: string
+        /** 打开小程序的query */
+        query: IAnyObject
+        /** 打开小程序的场景值
+         * - 1001:发现栏小程序主入口,「最近使用」列表(基础库2.2.4版本起包含「我的小程序」列表)
+         * - 1005:微信首页顶部搜索框的搜索结果页
+         * - 1006:发现栏小程序主入口搜索框的搜索结果页
+         * - 1007:单人聊天会话中的小程序消息卡片
+         * - 1008:群聊会话中的小程序消息卡片
+         * - 1011:扫描二维码
+         * - 1012:长按图片识别二维码
+         * - 1013:扫描手机相册中选取的二维码
+         * - 1014:小程序模板消息
+         * - 1017:前往小程序体验版的入口页
+         * - 1019:微信钱包(微信客户端7.0.0版本改为支付入口)
+         * - 1020:公众号 profile 页相关小程序列表
+         * - 1023:安卓系统桌面图标
+         * - 1024:小程序 profile 页
+         * - 1025:扫描一维码
+         * - 1026:发现栏小程序主入口,「附近的小程序」列表
+         * - 1027:微信首页顶部搜索框搜索结果页「使用过的小程序」列表
+         * - 1028:我的卡包
+         * - 1029:小程序中的卡券详情页
+         * - 1030:自动化测试下打开小程序
+         * - 1031:长按图片识别一维码
+         * - 1032:扫描手机相册中选取的一维码
+         * - 1034:微信支付完成页
+         * - 1035:公众号自定义菜单
+         * - 1036:App 分享消息卡片
+         * - 1037:小程序打开小程序
+         * - 1038:从另一个小程序返回
+         * - 1039:摇电视
+         * - 1042:添加好友搜索框的搜索结果页
+         * - 1043:公众号模板消息
+         * - 1044:带 shareTicket 的小程序消息卡片 [详情](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/share.html)
+         * - 1045:朋友圈广告
+         * - 1046:朋友圈广告详情页
+         * - 1047:扫描小程序码
+         * - 1048:长按图片识别小程序码
+         * - 1049:扫描手机相册中选取的小程序码
+         * - 1052:卡券的适用门店列表
+         * - 1053:搜一搜的结果页
+         * - 1056:聊天顶部音乐播放器右上角菜单
+         * - 1057:钱包中的银行卡详情页
+         * - 1058:公众号文章
+         * - 1059:体验版小程序绑定邀请页
+         * - 1064:微信首页连Wi-Fi状态栏
+         * - 1067:公众号文章广告
+         * - 1069:移动应用
+         * - 1071:钱包中的银行卡列表页
+         * - 1072:二维码收款页面
+         * - 1073:客服消息列表下发的小程序消息卡片
+         * - 1074:公众号会话下发的小程序消息卡片
+         * - 1077:摇周边
+         * - 1078:微信连Wi-Fi成功提示页
+         * - 1079:微信游戏中心
+         * - 1081:客服消息下发的文字链
+         * - 1082:公众号会话下发的文字链
+         * - 1084:朋友圈广告原生页
+         * - 1089:微信聊天主界面下拉,「最近使用」栏(基础库2.2.4版本起包含「我的小程序」栏)
+         * - 1090:长按小程序右上角菜单唤出最近使用历史
+         * - 1091:公众号文章商品卡片
+         * - 1092:城市服务入口
+         * - 1095:小程序广告组件
+         * - 1096:聊天记录
+         * - 1097:微信支付签约页
+         * - 1099:页面内嵌插件
+         * - 1102:公众号 profile 页服务预览
+         * - 1124:扫“一物一码”打开小程序
+         * - 1125:长按图片识别“一物一码”
+         * - 1126:扫描手机相册中选取的“一物一码”
+         * - 1129:微信爬虫访问 [详情](https://developers.weixin.qq.com/miniprogram/dev/reference/configuration/sitemap.html)
+         */
+        scene: SceneValues
+        /** shareTicket,详见 [获取更多转发信息]((转发#获取更多转发信息)) */
+        shareTicket: string
+        /** 当场景为由从另一个小程序或公众号或App打开时,返回此字段 */
+        referrerInfo?: ReferrerInfo
+    }
+
+    interface PageNotFoundOption {
+        /** 不存在页面的路径 */
+        path: string
+        /** 打开不存在页面的 query */
+        query: IAnyObject
+        /** 是否本次启动的首个页面(例如从分享等入口进来,首个页面是开发者配置的分享页面) */
+        isEntryPage: boolean
+    }
+
+    interface Option {
+        /** 生命周期回调—监听小程序初始化
+         *
+         * 小程序初始化完成时触发,全局只触发一次。
+         */
+        onLaunch(options: LaunchShowOption): void
+        /** 生命周期回调—监听小程序显示
+         *
+         * 小程序启动,或从后台进入前台显示时
+         */
+        onShow(options: LaunchShowOption): void
+        /** 生命周期回调—监听小程序隐藏
+         *
+         * 小程序从前台进入后台时
+         */
+        onHide(): void
+        /** 错误监听函数
+         *
+         * 小程序发生脚本错误,或者 api
+         */
+        onError(/** 错误信息,包含堆栈 */ error: string): void
+        /** 页面不存在监听函数
+         *
+         * 小程序要打开的页面不存在时触发,会带上页面信息回调该函数
+         *
+         * **注意:**
+         * 1. 如果开发者没有添加 `onPageNotFound` 监听,当跳转页面不存在时,将推入微信客户端原生的页面不存在提示页面。
+         * 2. 如果 `onPageNotFound` 回调中又重定向到另一个不存在的页面,将推入微信客户端原生的页面不存在提示页面,并且不再回调 `onPageNotFound`。
+         *
+         * 最低基础库: 1.9.90
+         */
+        onPageNotFound(options: PageNotFoundOption): void
+        /**
+         * 小程序有未处理的 Promise 拒绝时触发。也可以使用 [wx.onUnhandledRejection](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.onUnhandledRejection.html) 绑定监听。注意事项请参考 [wx.onUnhandledRejection](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.onUnhandledRejection.html)。
+         * **参数**:与 [wx.onUnhandledRejection](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.onUnhandledRejection.html) 一致
+         */
+        onUnhandledRejection: OnUnhandledRejectionCallback
+        /**
+         * 系统切换主题时触发。也可以使用 wx.onThemeChange 绑定监听。
+         *
+         * 最低基础库: 2.11.0
+         */
+        onThemeChange: OnThemeChangeCallback
+    }
+
+    type Instance<T extends IAnyObject> = Option & T
+    type Options<T extends IAnyObject> = Partial<Option> &
+        T &
+        ThisType<Instance<T>>
+    type TrivialInstance = Instance<IAnyObject>
+
+    interface Constructor {
+        <T extends IAnyObject>(options: Options<T>): void
+    }
+
+    interface GetAppOption {
+        /** 在 `App` 未定义时返回默认实现。当App被调用时,默认实现中定义的属性会被覆盖合并到App中。一般用于独立分包
+         *
+         * 最低基础库: 2.2.4
+         */
+        allowDefault?: boolean
+    }
+
+    interface GetApp {
+        <T = IAnyObject>(opts?: GetAppOption): Instance<T>
+    }
+}
+
+declare let App: WechatMiniprogram.App.Constructor
+declare let getApp: WechatMiniprogram.App.GetApp

+ 68 - 0
mini/types-tips-test/miniprogram-api-typings/types/wx/lib.wx.behavior.d.ts

xqd
@@ -0,0 +1,68 @@
+/*! *****************************************************************************
+Copyright (c) 2022 Tencent, Inc. All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+***************************************************************************** */
+
+declare namespace WechatMiniprogram.Behavior {
+    type BehaviorIdentifier = string
+    type Instance<
+        TData extends DataOption,
+        TProperty extends PropertyOption,
+        TMethod extends MethodOption,
+        TCustomInstanceProperty extends IAnyObject = Record<string, never>
+    > = Component.Instance<TData, TProperty, TMethod, TCustomInstanceProperty>
+    type TrivialInstance = Instance<IAnyObject, IAnyObject, IAnyObject>
+    type TrivialOption = Options<IAnyObject, IAnyObject, IAnyObject>
+    type Options<
+        TData extends DataOption,
+        TProperty extends PropertyOption,
+        TMethod extends MethodOption,
+        TCustomInstanceProperty extends IAnyObject = Record<string, never>
+    > = Partial<Data<TData>> &
+        Partial<Property<TProperty>> &
+        Partial<Method<TMethod>> &
+        Partial<OtherOption> &
+        Partial<Lifetimes> &
+        ThisType<Instance<TData, TProperty, TMethod, TCustomInstanceProperty>>
+    interface Constructor {
+        <
+            TData extends DataOption,
+            TProperty extends PropertyOption,
+            TMethod extends MethodOption,
+            TCustomInstanceProperty extends IAnyObject = Record<string, never>
+        >(
+            options: Options<TData, TProperty, TMethod, TCustomInstanceProperty>
+        ): BehaviorIdentifier
+    }
+
+    type DataOption = Component.DataOption
+    type PropertyOption = Component.PropertyOption
+    type MethodOption = Component.MethodOption
+    type Data<D extends DataOption> = Component.Data<D>
+    type Property<P extends PropertyOption> = Component.Property<P>
+    type Method<M extends MethodOption> = Component.Method<M>
+
+    type DefinitionFilter = Component.DefinitionFilter
+    type Lifetimes = Component.Lifetimes
+
+    type OtherOption = Omit<Component.OtherOption, 'options'>
+}
+/** 注册一个 `behavior`,接受一个 `Object` 类型的参数。*/
+declare let Behavior: WechatMiniprogram.Behavior.Constructor

+ 924 - 0
mini/types-tips-test/miniprogram-api-typings/types/wx/lib.wx.cloud.d.ts

xqd
@@ -0,0 +1,924 @@
+/*! *****************************************************************************
+Copyright (c) 2022 Tencent, Inc. All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+***************************************************************************** */
+
+interface IAPIError {
+    errMsg: string
+}
+
+interface IAPIParam<T = any> {
+    config?: ICloudConfig
+    success?: (res: T) => void
+    fail?: (err: IAPIError) => void
+    complete?: (val: T | IAPIError) => void
+}
+
+interface IAPISuccessParam {
+    errMsg: string
+}
+
+type IAPICompleteParam = IAPISuccessParam | IAPIError
+
+type IAPIFunction<T, P extends IAPIParam<T>> = (param?: P) => Promise<T>
+
+interface IInitCloudConfig {
+    env?:
+        | string
+        | {
+              database?: string
+              functions?: string
+              storage?: string
+          }
+    traceUser?: boolean
+}
+
+interface ICloudConfig {
+    env?: string
+    traceUser?: boolean
+}
+
+interface IICloudAPI {
+    init: (config?: IInitCloudConfig) => void
+    [api: string]: AnyFunction | IAPIFunction<any, any>
+}
+
+interface ICloudService {
+    name: string
+
+    getAPIs: () => { [name: string]: IAPIFunction<any, any> }
+}
+
+interface ICloudServices {
+    [serviceName: string]: ICloudService
+}
+
+interface ICloudMetaData {
+    session_id: string
+}
+
+declare class InternalSymbol {}
+
+interface AnyObject {
+    [x: string]: any
+}
+
+type AnyArray = any[]
+
+type AnyFunction = (...args: any[]) => any
+
+/**
+ * extend wx with cloud
+ */
+interface WxCloud {
+    init: (config?: ICloudConfig) => void
+
+    callFunction(param: OQ<ICloud.CallFunctionParam>): void
+    callFunction(
+        param: RQ<ICloud.CallFunctionParam>
+    ): Promise<ICloud.CallFunctionResult>
+
+    uploadFile(param: OQ<ICloud.UploadFileParam>): WechatMiniprogram.UploadTask
+    uploadFile(
+        param: RQ<ICloud.UploadFileParam>
+    ): Promise<ICloud.UploadFileResult>
+
+    downloadFile(
+        param: OQ<ICloud.DownloadFileParam>
+    ): WechatMiniprogram.DownloadTask
+    downloadFile(
+        param: RQ<ICloud.DownloadFileParam>
+    ): Promise<ICloud.DownloadFileResult>
+
+    getTempFileURL(param: OQ<ICloud.GetTempFileURLParam>): void
+    getTempFileURL(
+        param: RQ<ICloud.GetTempFileURLParam>
+    ): Promise<ICloud.GetTempFileURLResult>
+
+    deleteFile(param: OQ<ICloud.DeleteFileParam>): void
+    deleteFile(
+        param: RQ<ICloud.DeleteFileParam>
+    ): Promise<ICloud.DeleteFileResult>
+
+    database: (config?: ICloudConfig) => DB.Database
+
+    CloudID: ICloud.ICloudIDConstructor
+    CDN: ICloud.ICDNConstructor
+}
+
+declare namespace ICloud {
+    interface ICloudAPIParam<T = any> extends IAPIParam<T> {
+        config?: ICloudConfig
+    }
+
+    // === API: callFunction ===
+    type CallFunctionData = AnyObject
+
+    interface CallFunctionResult extends IAPISuccessParam {
+        result: AnyObject | string | undefined
+    }
+
+    interface CallFunctionParam extends ICloudAPIParam<CallFunctionResult> {
+        name: string
+        data?: CallFunctionData
+        slow?: boolean
+    }
+    // === end ===
+
+    // === API: uploadFile ===
+    interface UploadFileResult extends IAPISuccessParam {
+        fileID: string
+        statusCode: number
+    }
+
+    interface UploadFileParam extends ICloudAPIParam<UploadFileResult> {
+        cloudPath: string
+        filePath: string
+        header?: AnyObject
+    }
+    // === end ===
+
+    // === API: downloadFile ===
+    interface DownloadFileResult extends IAPISuccessParam {
+        tempFilePath: string
+        statusCode: number
+    }
+
+    interface DownloadFileParam extends ICloudAPIParam<DownloadFileResult> {
+        fileID: string
+        cloudPath?: string
+    }
+    // === end ===
+
+    // === API: getTempFileURL ===
+    interface GetTempFileURLResult extends IAPISuccessParam {
+        fileList: GetTempFileURLResultItem[]
+    }
+
+    interface GetTempFileURLResultItem {
+        fileID: string
+        tempFileURL: string
+        maxAge: number
+        status: number
+        errMsg: string
+    }
+
+    interface GetTempFileURLParam extends ICloudAPIParam<GetTempFileURLResult> {
+        fileList: string[]
+    }
+    // === end ===
+
+    // === API: deleteFile ===
+    interface DeleteFileResult extends IAPISuccessParam {
+        fileList: DeleteFileResultItem[]
+    }
+
+    interface DeleteFileResultItem {
+        fileID: string
+        status: number
+        errMsg: string
+    }
+
+    interface DeleteFileParam extends ICloudAPIParam<DeleteFileResult> {
+        fileList: string[]
+    }
+    // === end ===
+
+    // === API: CloudID ===
+    abstract class CloudID {
+        constructor(cloudID: string)
+    }
+
+    interface ICloudIDConstructor {
+        new (cloudId: string): CloudID
+        (cloudId: string): CloudID
+    }
+    // === end ===
+
+    // === API: CDN ===
+    abstract class CDN {
+        target: string | ArrayBuffer | ICDNFilePathSpec
+        constructor(target: string | ArrayBuffer | ICDNFilePathSpec)
+    }
+
+    interface ICDNFilePathSpec {
+        type: 'filePath'
+        filePath: string
+    }
+
+    interface ICDNConstructor {
+        new (options: string | ArrayBuffer | ICDNFilePathSpec): CDN
+        (options: string | ArrayBuffer | ICDNFilePathSpec): CDN
+    }
+    // === end ===
+}
+
+// === Database ===
+declare namespace DB {
+    /**
+     * The class of all exposed cloud database instances
+     */
+    class Database {
+        readonly config: ICloudConfig
+        readonly command: DatabaseCommand
+        readonly Geo: IGeo
+        readonly serverDate: () => ServerDate
+        readonly RegExp: IRegExpConstructor
+
+        private constructor()
+
+        collection(collectionName: string): CollectionReference
+    }
+
+    class CollectionReference extends Query {
+        readonly collectionName: string
+
+        private constructor(name: string, database: Database)
+
+        doc(docId: string | number): DocumentReference
+
+        add(options: OQ<IAddDocumentOptions>): void
+        add(options: RQ<IAddDocumentOptions>): Promise<IAddResult>
+    }
+
+    class DocumentReference {
+        private constructor(docId: string | number, database: Database)
+
+        field(object: Record<string, any>): this
+
+        get(options: OQ<IGetDocumentOptions>): void
+        get(options?: RQ<IGetDocumentOptions>): Promise<IQuerySingleResult>
+
+        set(options: OQ<ISetSingleDocumentOptions>): void
+        set(options?: RQ<ISetSingleDocumentOptions>): Promise<ISetResult>
+
+        update(options: OQ<IUpdateSingleDocumentOptions>): void
+        update(
+            options?: RQ<IUpdateSingleDocumentOptions>
+        ): Promise<IUpdateResult>
+
+        remove(options: OQ<IRemoveSingleDocumentOptions>): void
+        remove(
+            options?: RQ<IRemoveSingleDocumentOptions>
+        ): Promise<IRemoveResult>
+
+        watch(options: IWatchOptions): RealtimeListener
+    }
+
+    class RealtimeListener {
+        // "And Now His Watch Is Ended"
+        close: () => Promise<void>
+    }
+
+    class Query {
+        where(condition: IQueryCondition): Query
+
+        orderBy(fieldPath: string, order: string): Query
+
+        limit(max: number): Query
+
+        skip(offset: number): Query
+
+        field(object: Record<string, any>): Query
+
+        get(options: OQ<IGetDocumentOptions>): void
+        get(options?: RQ<IGetDocumentOptions>): Promise<IQueryResult>
+
+        count(options: OQ<ICountDocumentOptions>): void
+        count(options?: RQ<ICountDocumentOptions>): Promise<ICountResult>
+
+        watch(options: IWatchOptions): RealtimeListener
+    }
+
+    interface DatabaseCommand {
+        eq(val: any): DatabaseQueryCommand
+        neq(val: any): DatabaseQueryCommand
+        gt(val: any): DatabaseQueryCommand
+        gte(val: any): DatabaseQueryCommand
+        lt(val: any): DatabaseQueryCommand
+        lte(val: any): DatabaseQueryCommand
+        in(val: any[]): DatabaseQueryCommand
+        nin(val: any[]): DatabaseQueryCommand
+
+        geoNear(options: IGeoNearCommandOptions): DatabaseQueryCommand
+        geoWithin(options: IGeoWithinCommandOptions): DatabaseQueryCommand
+        geoIntersects(
+            options: IGeoIntersectsCommandOptions
+        ): DatabaseQueryCommand
+
+        and(
+            ...expressions: Array<DatabaseLogicCommand | IQueryCondition>
+        ): DatabaseLogicCommand
+        or(
+            ...expressions: Array<DatabaseLogicCommand | IQueryCondition>
+        ): DatabaseLogicCommand
+        nor(
+            ...expressions: Array<DatabaseLogicCommand | IQueryCondition>
+        ): DatabaseLogicCommand
+        not(expression: DatabaseLogicCommand): DatabaseLogicCommand
+
+        exists(val: boolean): DatabaseQueryCommand
+
+        mod(divisor: number, remainder: number): DatabaseQueryCommand
+
+        all(val: any[]): DatabaseQueryCommand
+        elemMatch(val: any): DatabaseQueryCommand
+        size(val: number): DatabaseQueryCommand
+
+        set(val: any): DatabaseUpdateCommand
+        remove(): DatabaseUpdateCommand
+        inc(val: number): DatabaseUpdateCommand
+        mul(val: number): DatabaseUpdateCommand
+        min(val: number): DatabaseUpdateCommand
+        max(val: number): DatabaseUpdateCommand
+        rename(val: string): DatabaseUpdateCommand
+        bit(val: number): DatabaseUpdateCommand
+
+        push(...values: any[]): DatabaseUpdateCommand
+        pop(): DatabaseUpdateCommand
+        shift(): DatabaseUpdateCommand
+        unshift(...values: any[]): DatabaseUpdateCommand
+        addToSet(val: any): DatabaseUpdateCommand
+        pull(val: any): DatabaseUpdateCommand
+        pullAll(val: any): DatabaseUpdateCommand
+
+        project: {
+            slice(val: number | [number, number]): DatabaseProjectionCommand
+        }
+
+        aggregate: {
+            __safe_props__?: Set<string>
+
+            abs(val: any): DatabaseAggregateCommand
+            add(val: any): DatabaseAggregateCommand
+            addToSet(val: any): DatabaseAggregateCommand
+            allElementsTrue(val: any): DatabaseAggregateCommand
+            and(val: any): DatabaseAggregateCommand
+            anyElementTrue(val: any): DatabaseAggregateCommand
+            arrayElemAt(val: any): DatabaseAggregateCommand
+            arrayToObject(val: any): DatabaseAggregateCommand
+            avg(val: any): DatabaseAggregateCommand
+            ceil(val: any): DatabaseAggregateCommand
+            cmp(val: any): DatabaseAggregateCommand
+            concat(val: any): DatabaseAggregateCommand
+            concatArrays(val: any): DatabaseAggregateCommand
+            cond(val: any): DatabaseAggregateCommand
+            convert(val: any): DatabaseAggregateCommand
+            dateFromParts(val: any): DatabaseAggregateCommand
+            dateToParts(val: any): DatabaseAggregateCommand
+            dateFromString(val: any): DatabaseAggregateCommand
+            dateToString(val: any): DatabaseAggregateCommand
+            dayOfMonth(val: any): DatabaseAggregateCommand
+            dayOfWeek(val: any): DatabaseAggregateCommand
+            dayOfYear(val: any): DatabaseAggregateCommand
+            divide(val: any): DatabaseAggregateCommand
+            eq(val: any): DatabaseAggregateCommand
+            exp(val: any): DatabaseAggregateCommand
+            filter(val: any): DatabaseAggregateCommand
+            first(val: any): DatabaseAggregateCommand
+            floor(val: any): DatabaseAggregateCommand
+            gt(val: any): DatabaseAggregateCommand
+            gte(val: any): DatabaseAggregateCommand
+            hour(val: any): DatabaseAggregateCommand
+            ifNull(val: any): DatabaseAggregateCommand
+            in(val: any): DatabaseAggregateCommand
+            indexOfArray(val: any): DatabaseAggregateCommand
+            indexOfBytes(val: any): DatabaseAggregateCommand
+            indexOfCP(val: any): DatabaseAggregateCommand
+            isArray(val: any): DatabaseAggregateCommand
+            isoDayOfWeek(val: any): DatabaseAggregateCommand
+            isoWeek(val: any): DatabaseAggregateCommand
+            isoWeekYear(val: any): DatabaseAggregateCommand
+            last(val: any): DatabaseAggregateCommand
+            let(val: any): DatabaseAggregateCommand
+            literal(val: any): DatabaseAggregateCommand
+            ln(val: any): DatabaseAggregateCommand
+            log(val: any): DatabaseAggregateCommand
+            log10(val: any): DatabaseAggregateCommand
+            lt(val: any): DatabaseAggregateCommand
+            lte(val: any): DatabaseAggregateCommand
+            ltrim(val: any): DatabaseAggregateCommand
+            map(val: any): DatabaseAggregateCommand
+            max(val: any): DatabaseAggregateCommand
+            mergeObjects(val: any): DatabaseAggregateCommand
+            meta(val: any): DatabaseAggregateCommand
+            min(val: any): DatabaseAggregateCommand
+            millisecond(val: any): DatabaseAggregateCommand
+            minute(val: any): DatabaseAggregateCommand
+            mod(val: any): DatabaseAggregateCommand
+            month(val: any): DatabaseAggregateCommand
+            multiply(val: any): DatabaseAggregateCommand
+            neq(val: any): DatabaseAggregateCommand
+            not(val: any): DatabaseAggregateCommand
+            objectToArray(val: any): DatabaseAggregateCommand
+            or(val: any): DatabaseAggregateCommand
+            pow(val: any): DatabaseAggregateCommand
+            push(val: any): DatabaseAggregateCommand
+            range(val: any): DatabaseAggregateCommand
+            reduce(val: any): DatabaseAggregateCommand
+            reverseArray(val: any): DatabaseAggregateCommand
+            rtrim(val: any): DatabaseAggregateCommand
+            second(val: any): DatabaseAggregateCommand
+            setDifference(val: any): DatabaseAggregateCommand
+            setEquals(val: any): DatabaseAggregateCommand
+            setIntersection(val: any): DatabaseAggregateCommand
+            setIsSubset(val: any): DatabaseAggregateCommand
+            setUnion(val: any): DatabaseAggregateCommand
+            size(val: any): DatabaseAggregateCommand
+            slice(val: any): DatabaseAggregateCommand
+            split(val: any): DatabaseAggregateCommand
+            sqrt(val: any): DatabaseAggregateCommand
+            stdDevPop(val: any): DatabaseAggregateCommand
+            stdDevSamp(val: any): DatabaseAggregateCommand
+            strcasecmp(val: any): DatabaseAggregateCommand
+            strLenBytes(val: any): DatabaseAggregateCommand
+            strLenCP(val: any): DatabaseAggregateCommand
+            substr(val: any): DatabaseAggregateCommand
+            substrBytes(val: any): DatabaseAggregateCommand
+            substrCP(val: any): DatabaseAggregateCommand
+            subtract(val: any): DatabaseAggregateCommand
+            sum(val: any): DatabaseAggregateCommand
+            switch(val: any): DatabaseAggregateCommand
+            toBool(val: any): DatabaseAggregateCommand
+            toDate(val: any): DatabaseAggregateCommand
+            toDecimal(val: any): DatabaseAggregateCommand
+            toDouble(val: any): DatabaseAggregateCommand
+            toInt(val: any): DatabaseAggregateCommand
+            toLong(val: any): DatabaseAggregateCommand
+            toObjectId(val: any): DatabaseAggregateCommand
+            toString(val: any): DatabaseAggregateCommand
+            toLower(val: any): DatabaseAggregateCommand
+            toUpper(val: any): DatabaseAggregateCommand
+            trim(val: any): DatabaseAggregateCommand
+            trunc(val: any): DatabaseAggregateCommand
+            type(val: any): DatabaseAggregateCommand
+            week(val: any): DatabaseAggregateCommand
+            year(val: any): DatabaseAggregateCommand
+            zip(val: any): DatabaseAggregateCommand
+        }
+    }
+
+    class DatabaseAggregateCommand {}
+
+    enum LOGIC_COMMANDS_LITERAL {
+        AND = 'and',
+        OR = 'or',
+        NOT = 'not',
+        NOR = 'nor'
+    }
+
+    class DatabaseLogicCommand {
+        and(...expressions: DatabaseLogicCommand[]): DatabaseLogicCommand
+        or(...expressions: DatabaseLogicCommand[]): DatabaseLogicCommand
+        nor(...expressions: DatabaseLogicCommand[]): DatabaseLogicCommand
+        not(expression: DatabaseLogicCommand): DatabaseLogicCommand
+    }
+
+    enum QUERY_COMMANDS_LITERAL {
+        // comparison
+        EQ = 'eq',
+        NEQ = 'neq',
+        GT = 'gt',
+        GTE = 'gte',
+        LT = 'lt',
+        LTE = 'lte',
+        IN = 'in',
+        NIN = 'nin',
+        // geo
+        GEO_NEAR = 'geoNear',
+        GEO_WITHIN = 'geoWithin',
+        GEO_INTERSECTS = 'geoIntersects',
+        // element
+        EXISTS = 'exists',
+        // evaluation
+        MOD = 'mod',
+        // array
+        ALL = 'all',
+        ELEM_MATCH = 'elemMatch',
+        SIZE = 'size'
+    }
+
+    class DatabaseQueryCommand extends DatabaseLogicCommand {
+        eq(val: any): DatabaseLogicCommand
+        neq(val: any): DatabaseLogicCommand
+        gt(val: any): DatabaseLogicCommand
+        gte(val: any): DatabaseLogicCommand
+        lt(val: any): DatabaseLogicCommand
+        lte(val: any): DatabaseLogicCommand
+        in(val: any[]): DatabaseLogicCommand
+        nin(val: any[]): DatabaseLogicCommand
+
+        exists(val: boolean): DatabaseLogicCommand
+
+        mod(divisor: number, remainder: number): DatabaseLogicCommand
+
+        all(val: any[]): DatabaseLogicCommand
+        elemMatch(val: any): DatabaseLogicCommand
+        size(val: number): DatabaseLogicCommand
+
+        geoNear(options: IGeoNearCommandOptions): DatabaseLogicCommand
+        geoWithin(options: IGeoWithinCommandOptions): DatabaseLogicCommand
+        geoIntersects(
+            options: IGeoIntersectsCommandOptions
+        ): DatabaseLogicCommand
+    }
+
+    enum PROJECTION_COMMANDS_LITERAL {
+        SLICE = 'slice'
+    }
+
+    class DatabaseProjectionCommand {}
+
+    enum UPDATE_COMMANDS_LITERAL {
+        // field
+        SET = 'set',
+        REMOVE = 'remove',
+        INC = 'inc',
+        MUL = 'mul',
+        MIN = 'min',
+        MAX = 'max',
+        RENAME = 'rename',
+        // bitwise
+        BIT = 'bit',
+        // array
+        PUSH = 'push',
+        POP = 'pop',
+        SHIFT = 'shift',
+        UNSHIFT = 'unshift',
+        ADD_TO_SET = 'addToSet',
+        PULL = 'pull',
+        PULL_ALL = 'pullAll'
+    }
+
+    class DatabaseUpdateCommand {}
+
+    class Batch {}
+
+    /**
+     * A contract that all API provider must adhere to
+     */
+    class APIBaseContract<
+        PromiseReturn,
+        CallbackReturn,
+        Param extends IAPIParam,
+        Context = any
+    > {
+        getContext(param: Param): Context
+
+        /**
+         * In case of callback-style invocation, this function will be called
+         */
+        getCallbackReturn(param: Param, context: Context): CallbackReturn
+
+        getFinalParam<T extends Param>(param: Param, context: Context): T
+
+        run<T extends Param>(param: T): Promise<PromiseReturn>
+    }
+
+    interface IGeoPointConstructor {
+        new (longitude: number, latitide: number): GeoPoint
+        new (geojson: IGeoJSONPoint): GeoPoint
+        (longitude: number, latitide: number): GeoPoint
+        (geojson: IGeoJSONPoint): GeoPoint
+    }
+
+    interface IGeoMultiPointConstructor {
+        new (points: GeoPoint[] | IGeoJSONMultiPoint): GeoMultiPoint
+        (points: GeoPoint[] | IGeoJSONMultiPoint): GeoMultiPoint
+    }
+
+    interface IGeoLineStringConstructor {
+        new (points: GeoPoint[] | IGeoJSONLineString): GeoLineString
+        (points: GeoPoint[] | IGeoJSONLineString): GeoLineString
+    }
+
+    interface IGeoMultiLineStringConstructor {
+        new (
+            lineStrings: GeoLineString[] | IGeoJSONMultiLineString
+        ): GeoMultiLineString
+        (
+            lineStrings: GeoLineString[] | IGeoJSONMultiLineString
+        ): GeoMultiLineString
+    }
+
+    interface IGeoPolygonConstructor {
+        new (lineStrings: GeoLineString[] | IGeoJSONPolygon): GeoPolygon
+        (lineStrings: GeoLineString[] | IGeoJSONPolygon): GeoPolygon
+    }
+
+    interface IGeoMultiPolygonConstructor {
+        new (polygons: GeoPolygon[] | IGeoJSONMultiPolygon): GeoMultiPolygon
+        (polygons: GeoPolygon[] | IGeoJSONMultiPolygon): GeoMultiPolygon
+    }
+
+    interface IGeo {
+        Point: IGeoPointConstructor
+        MultiPoint: IGeoMultiPointConstructor
+        LineString: IGeoLineStringConstructor
+        MultiLineString: IGeoMultiLineStringConstructor
+        Polygon: IGeoPolygonConstructor
+        MultiPolygon: IGeoMultiPolygonConstructor
+    }
+
+    interface IGeoJSONPoint {
+        type: 'Point'
+        coordinates: [number, number]
+    }
+
+    interface IGeoJSONMultiPoint {
+        type: 'MultiPoint'
+        coordinates: Array<[number, number]>
+    }
+
+    interface IGeoJSONLineString {
+        type: 'LineString'
+        coordinates: Array<[number, number]>
+    }
+
+    interface IGeoJSONMultiLineString {
+        type: 'MultiLineString'
+        coordinates: Array<Array<[number, number]>>
+    }
+
+    interface IGeoJSONPolygon {
+        type: 'Polygon'
+        coordinates: Array<Array<[number, number]>>
+    }
+
+    interface IGeoJSONMultiPolygon {
+        type: 'MultiPolygon'
+        coordinates: Array<Array<Array<[number, number]>>>
+    }
+
+    type IGeoJSONObject =
+        | IGeoJSONPoint
+        | IGeoJSONMultiPoint
+        | IGeoJSONLineString
+        | IGeoJSONMultiLineString
+        | IGeoJSONPolygon
+        | IGeoJSONMultiPolygon
+
+    abstract class GeoPoint {
+        longitude: number
+        latitude: number
+
+        constructor(longitude: number, latitude: number)
+
+        toJSON(): Record<string, any>
+        toString(): string
+    }
+
+    abstract class GeoMultiPoint {
+        points: GeoPoint[]
+
+        constructor(points: GeoPoint[])
+
+        toJSON(): IGeoJSONMultiPoint
+        toString(): string
+    }
+
+    abstract class GeoLineString {
+        points: GeoPoint[]
+
+        constructor(points: GeoPoint[])
+
+        toJSON(): IGeoJSONLineString
+        toString(): string
+    }
+
+    abstract class GeoMultiLineString {
+        lines: GeoLineString[]
+
+        constructor(lines: GeoLineString[])
+
+        toJSON(): IGeoJSONMultiLineString
+        toString(): string
+    }
+
+    abstract class GeoPolygon {
+        lines: GeoLineString[]
+
+        constructor(lines: GeoLineString[])
+
+        toJSON(): IGeoJSONPolygon
+        toString(): string
+    }
+
+    abstract class GeoMultiPolygon {
+        polygons: GeoPolygon[]
+
+        constructor(polygons: GeoPolygon[])
+
+        toJSON(): IGeoJSONMultiPolygon
+        toString(): string
+    }
+
+    type GeoInstance =
+        | GeoPoint
+        | GeoMultiPoint
+        | GeoLineString
+        | GeoMultiLineString
+        | GeoPolygon
+        | GeoMultiPolygon
+
+    interface IGeoNearCommandOptions {
+        geometry: GeoPoint
+        maxDistance?: number
+        minDistance?: number
+    }
+
+    interface IGeoWithinCommandOptions {
+        geometry: GeoPolygon | GeoMultiPolygon
+    }
+
+    interface IGeoIntersectsCommandOptions {
+        geometry:
+            | GeoPoint
+            | GeoMultiPoint
+            | GeoLineString
+            | GeoMultiLineString
+            | GeoPolygon
+            | GeoMultiPolygon
+    }
+
+    interface IServerDateOptions {
+        offset: number
+    }
+
+    abstract class ServerDate {
+        readonly options: IServerDateOptions
+        constructor(options?: IServerDateOptions)
+    }
+
+    interface IRegExpOptions {
+        regexp: string
+        options?: string
+    }
+
+    interface IRegExpConstructor {
+        new (options: IRegExpOptions): RegExp
+        (options: IRegExpOptions): RegExp
+    }
+
+    abstract class RegExp {
+        readonly regexp: string
+        readonly options: string
+        constructor(options: IRegExpOptions)
+    }
+
+    type DocumentId = string | number
+
+    interface IDocumentData {
+        _id?: DocumentId
+        [key: string]: any
+    }
+
+    type IDBAPIParam = IAPIParam
+
+    interface IAddDocumentOptions extends IDBAPIParam {
+        data: IDocumentData
+    }
+
+    type IGetDocumentOptions = IDBAPIParam
+
+    type ICountDocumentOptions = IDBAPIParam
+
+    interface IUpdateDocumentOptions extends IDBAPIParam {
+        data: IUpdateCondition
+    }
+
+    interface IUpdateSingleDocumentOptions extends IDBAPIParam {
+        data: IUpdateCondition
+    }
+
+    interface ISetDocumentOptions extends IDBAPIParam {
+        data: IUpdateCondition
+    }
+
+    interface ISetSingleDocumentOptions extends IDBAPIParam {
+        data: IUpdateCondition
+    }
+
+    interface IRemoveDocumentOptions extends IDBAPIParam {
+        query: IQueryCondition
+    }
+
+    type IRemoveSingleDocumentOptions = IDBAPIParam
+
+    interface IWatchOptions {
+        // server realtime data init & change event
+        onChange: (snapshot: ISnapshot) => void
+        // error while connecting / listening
+        onError: (error: any) => void
+    }
+
+    interface ISnapshot {
+        id: number
+        docChanges: ISingleDBEvent[]
+        docs: Record<string, any>
+        type?: SnapshotType
+    }
+
+    type SnapshotType = 'init'
+
+    interface ISingleDBEvent {
+        id: number
+        dataType: DataType
+        queueType: QueueType
+        docId: string
+        doc: Record<string, any>
+        updatedFields?: Record<string, any>
+        removedFields?: string[]
+    }
+
+    type DataType = 'init' | 'update' | 'replace' | 'add' | 'remove' | 'limit'
+
+    type QueueType = 'init' | 'enqueue' | 'dequeue' | 'update'
+
+    interface IQueryCondition {
+        [key: string]: any
+    }
+
+    type IStringQueryCondition = string
+
+    interface IQueryResult extends IAPISuccessParam {
+        data: IDocumentData[]
+    }
+
+    interface IQuerySingleResult extends IAPISuccessParam {
+        data: IDocumentData
+    }
+
+    interface IUpdateCondition {
+        [key: string]: any
+    }
+
+    type IStringUpdateCondition = string
+
+    interface IAddResult extends IAPISuccessParam {
+        _id: DocumentId
+    }
+
+    interface IUpdateResult extends IAPISuccessParam {
+        stats: {
+            updated: number
+            // created: number,
+        }
+    }
+
+    interface ISetResult extends IAPISuccessParam {
+        _id: DocumentId
+        stats: {
+            updated: number
+            created: number
+        }
+    }
+
+    interface IRemoveResult extends IAPISuccessParam {
+        stats: {
+            removed: number
+        }
+    }
+
+    interface ICountResult extends IAPISuccessParam {
+        total: number
+    }
+}
+
+type Optional<T> = { [K in keyof T]+?: T[K] }
+
+type OQ<
+    T extends Optional<
+        Record<'complete' | 'success' | 'fail', (...args: any[]) => any>
+    >
+> =
+    | (RQ<T> & Required<Pick<T, 'success'>>)
+    | (RQ<T> & Required<Pick<T, 'fail'>>)
+    | (RQ<T> & Required<Pick<T, 'complete'>>)
+    | (RQ<T> & Required<Pick<T, 'success' | 'fail'>>)
+    | (RQ<T> & Required<Pick<T, 'success' | 'complete'>>)
+    | (RQ<T> & Required<Pick<T, 'fail' | 'complete'>>)
+    | (RQ<T> & Required<Pick<T, 'fail' | 'complete' | 'success'>>)
+
+type RQ<
+    T extends Optional<
+        Record<'complete' | 'success' | 'fail', (...args: any[]) => any>
+    >
+> = Pick<T, Exclude<keyof T, 'complete' | 'success' | 'fail'>>

+ 675 - 0
mini/types-tips-test/miniprogram-api-typings/types/wx/lib.wx.component.d.ts

xqd
@@ -0,0 +1,675 @@
+/*! *****************************************************************************
+Copyright (c) 2022 Tencent, Inc. All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+***************************************************************************** */
+
+declare namespace WechatMiniprogram.Component {
+    type Instance<
+        TData extends DataOption,
+        TProperty extends PropertyOption,
+        TMethod extends Partial<MethodOption>,
+        TCustomInstanceProperty extends IAnyObject = {},
+        TIsPage extends boolean = false
+    > = InstanceProperties &
+        InstanceMethods<TData> &
+        TMethod &
+        (TIsPage extends true ? Page.ILifetime : {}) &
+        TCustomInstanceProperty & {
+            /** 组件数据,**包括内部数据和属性值** */
+            data: TData & PropertyOptionToData<TProperty>
+            /** 组件数据,**包括内部数据和属性值**(与 `data` 一致) */
+            properties: TData & PropertyOptionToData<TProperty>
+        }
+    type TrivialInstance = Instance<
+        IAnyObject,
+        IAnyObject,
+        IAnyObject,
+        IAnyObject
+    >
+    type TrivialOption = Options<IAnyObject, IAnyObject, IAnyObject, IAnyObject>
+    type Options<
+        TData extends DataOption,
+        TProperty extends PropertyOption,
+        TMethod extends MethodOption,
+        TCustomInstanceProperty extends IAnyObject = {},
+        TIsPage extends boolean = false
+    > = Partial<Data<TData>> &
+        Partial<Property<TProperty>> &
+        Partial<Method<TMethod, TIsPage>> &
+        Partial<OtherOption> &
+        Partial<Lifetimes> &
+        ThisType<
+            Instance<
+                TData,
+                TProperty,
+                TMethod,
+                TCustomInstanceProperty,
+                TIsPage
+            >
+        >
+    interface Constructor {
+        <
+            TData extends DataOption,
+            TProperty extends PropertyOption,
+            TMethod extends MethodOption,
+            TCustomInstanceProperty extends IAnyObject = {},
+            TIsPage extends boolean = false
+        >(
+            options: Options<
+                TData,
+                TProperty,
+                TMethod,
+                TCustomInstanceProperty,
+                TIsPage
+            >
+        ): string
+    }
+    type DataOption = Record<string, any>
+    type PropertyOption = Record<string, AllProperty>
+    type MethodOption = Record<string, Function>
+
+    interface Data<D extends DataOption> {
+        /** 组件的内部数据,和 `properties` 一同用于组件的模板渲染 */
+        data?: D
+    }
+    interface Property<P extends PropertyOption> {
+        /** 组件的对外属性,是属性名到属性设置的映射表 */
+        properties: P
+    }
+    interface Method<M extends MethodOption, TIsPage extends boolean = false> {
+        /** 组件的方法,包括事件响应函数和任意的自定义方法,关于事件响应函数的使用,参见 [组件间通信与事件](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/events.html) */
+        methods: M & (TIsPage extends true ? Partial<Page.ILifetime> : {})
+    }
+    type PropertyType =
+        | StringConstructor
+        | NumberConstructor
+        | BooleanConstructor
+        | ArrayConstructor
+        | ObjectConstructor
+        | null
+    type ValueType<T extends PropertyType> = T extends null
+        ? any
+        : T extends StringConstructor
+        ? string
+        : T extends NumberConstructor
+        ? number
+        : T extends BooleanConstructor
+        ? boolean
+        : T extends ArrayConstructor
+        ? any[]
+        : T extends ObjectConstructor
+        ? IAnyObject
+        : never
+    type FullProperty<T extends PropertyType> = {
+        /** 属性类型 */
+        type: T
+        /** 属性初始值 */
+        value?: ValueType<T>
+        /** 属性值被更改时的响应函数 */
+        observer?:
+            | string
+            | ((
+                  newVal: ValueType<T>,
+                  oldVal: ValueType<T>,
+                  changedPath: Array<string | number>
+              ) => void)
+        /** 属性的类型(可以指定多个) */
+        optionalTypes?: ShortProperty[]
+    }
+    type AllFullProperty =
+        | FullProperty<StringConstructor>
+        | FullProperty<NumberConstructor>
+        | FullProperty<BooleanConstructor>
+        | FullProperty<ArrayConstructor>
+        | FullProperty<ObjectConstructor>
+        | FullProperty<null>
+    type ShortProperty =
+        | StringConstructor
+        | NumberConstructor
+        | BooleanConstructor
+        | ArrayConstructor
+        | ObjectConstructor
+        | null
+    type AllProperty = AllFullProperty | ShortProperty
+    type PropertyToData<T extends AllProperty> = T extends ShortProperty
+        ? ValueType<T>
+        : FullPropertyToData<Exclude<T, ShortProperty>>
+    type FullPropertyToData<T extends AllFullProperty> = ValueType<T['type']>
+    type PropertyOptionToData<P extends PropertyOption> = {
+        [name in keyof P]: PropertyToData<P[name]>
+    }
+
+    interface InstanceProperties {
+        /** 组件的文件路径 */
+        is: string
+        /** 节点id */
+        id: string
+        /** 节点dataset */
+        dataset: Record<string, string>
+    }
+
+    interface InstanceMethods<D extends DataOption> {
+        /** `setData` 函数用于将数据从逻辑层发送到视图层
+         *(异步),同时改变对应的 `this.data` 的值(同步)。
+         *
+         * **注意:**
+         *
+         * 1. **直接修改 this.data 而不调用 this.setData 是无法改变页面的状态的,还会造成数据不一致**。
+         * 1. 仅支持设置可 JSON 化的数据。
+         * 1. 单次设置的数据不能超过1024kB,请尽量避免一次设置过多的数据。
+         * 1. 请不要把 data 中任何一项的 value 设为 `undefined` ,否则这一项将不被设置并可能遗留一些潜在问题。
+         */
+        setData(
+            /** 这次要改变的数据
+             *
+             * 以 `key: value` 的形式表示,将 `this.data` 中的 `key` 对应的值改变成 `value`。
+             *
+             * 其中 `key` 可以以数据路径的形式给出,支持改变数组中的某一项或对象的某个属性,如 `array[2].message`,`a.b.c.d`,并且不需要在 this.data 中预先定义。
+             */
+            data: Partial<D> & IAnyObject,
+            /** setData引起的界面更新渲染完毕后的回调函数,最低基础库: `1.5.0` */
+            callback?: () => void
+        ): void
+
+        /** 检查组件是否具有 `behavior` (检查时会递归检查被直接或间接引入的所有behavior) */
+        hasBehavior(behavior: Behavior.BehaviorIdentifier): void
+        /** 触发事件,参见组件事件 */
+        triggerEvent<DetailType = any>(
+            name: string,
+            detail?: DetailType,
+            options?: TriggerEventOption
+        ): void
+        /** 创建一个 SelectorQuery 对象,选择器选取范围为这个组件实例内 */
+        createSelectorQuery(): SelectorQuery
+        /** 创建一个 IntersectionObserver 对象,选择器选取范围为这个组件实例内 */
+        createIntersectionObserver(
+            options: CreateIntersectionObserverOption
+        ): IntersectionObserver
+        /** 使用选择器选择组件实例节点,返回匹配到的第一个组件实例对象(会被 `wx://component-export` 影响) */
+        selectComponent(selector: string): TrivialInstance
+        /** 使用选择器选择组件实例节点,返回匹配到的全部组件实例对象组成的数组 */
+        selectAllComponents(selector: string): TrivialInstance[]
+        /**
+         * 选取当前组件节点所在的组件实例(即组件的引用者),返回它的组件实例对象(会被 `wx://component-export` 影响)
+         *
+         * 最低基础库版本:[`2.8.2`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
+         **/
+        selectOwnerComponent(): TrivialInstance
+        /** 获取这个关系所对应的所有关联节点,参见 组件间关系 */
+        getRelationNodes(relationKey: string): TrivialInstance[]
+        /**
+         * 立刻执行 callback ,其中的多个 setData 之间不会触发界面绘制(只有某些特殊场景中需要,如用于在不同组件同时 setData 时进行界面绘制同步)
+         *
+         * 最低基础库版本:[`2.4.0`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
+         **/
+        groupSetData(callback?: () => void): void
+        /**
+         * 返回当前页面的 custom-tab-bar 的组件实例
+         *
+         * 最低基础库版本:[`2.6.2`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
+         **/
+        getTabBar(): TrivialInstance
+        /**
+         * 返回页面标识符(一个字符串),可以用来判断几个自定义组件实例是不是在同一个页面内
+         *
+         * 最低基础库版本:[`2.7.1`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
+         **/
+        getPageId(): string
+        /**
+         * 执行关键帧动画,详见[动画](https://developers.weixin.qq.com/miniprogram/dev/framework/view/animation.html)
+         *
+         * 最低基础库版本:[`2.9.0`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
+         **/
+        animate(
+            selector: string,
+            keyFrames: KeyFrame[],
+            duration: number,
+            callback?: () => void
+        ): void
+        /**
+         * 执行关键帧动画,详见[动画](https://developers.weixin.qq.com/miniprogram/dev/framework/view/animation.html)
+         *
+         * 最低基础库版本:[`2.9.0`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
+         **/
+        animate(
+            selector: string,
+            keyFrames: ScrollTimelineKeyframe[],
+            duration: number,
+            scrollTimeline: ScrollTimelineOption
+        ): void
+        /**
+         * 清除关键帧动画,详见[动画](https://developers.weixin.qq.com/miniprogram/dev/framework/view/animation.html)
+         *
+         * 最低基础库版本:[`2.9.0`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
+         **/
+        clearAnimation(selector: string, callback: () => void): void
+        /**
+         * 清除关键帧动画,详见[动画](https://developers.weixin.qq.com/miniprogram/dev/framework/view/animation.html)
+         *
+         * 最低基础库版本:[`2.9.0`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
+         **/
+        clearAnimation(
+            selector: string,
+            options?: ClearAnimationOptions,
+            callback?: () => void
+        ): void
+        /**
+         * 当从另一页面跳转到该页面时,获得与来源页面实例通信当事件通道,详见 [wx.navigateTo]((wx.navigateTo))
+         *
+         * 最低基础库版本:[`2.7.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
+         */
+        getOpenerEventChannel(): EventChannel
+        /**
+         * 获取更新性能统计信息,详见 [获取更新性能统计信息]((custom-component/update-perf-stat))
+         *
+         *
+         * 最低基础库版本:[`2.12.0`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
+         */
+        setUpdatePerformanceListener<WithDataPath extends boolean = false>(
+            options: SetUpdatePerformanceListenerOption<WithDataPath>,
+            callback?: UpdatePerformanceListener<WithDataPath>
+        ): void
+    }
+
+    interface ComponentOptions {
+        /**
+         * [启用多slot支持](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/wxml-wxss.html#组件wxml的slot)
+         */
+        multipleSlots?: boolean
+        /**
+         * [组件样式隔离](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/wxml-wxss.html#组件样式隔离)
+         */
+        addGlobalClass?: boolean
+        /**
+         * [组件样式隔离](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/wxml-wxss.html#组件样式隔离)
+         */
+        styleIsolation?:
+            | 'isolated'
+            | 'apply-shared'
+            | 'shared'
+            | 'page-isolated'
+            | 'page-apply-shared'
+            | 'page-shared'
+        /**
+         * [纯数据字段](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/pure-data.html) 是一些不用于界面渲染的 data 字段,可以用于提升页面更新性能。从小程序基础库版本 2.8.2 开始支持。
+         */
+        pureDataPattern?: RegExp
+        /**
+         * [虚拟化组件节点](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/wxml-wxss.html#%E8%99%9A%E6%8B%9F%E5%8C%96%E7%BB%84%E4%BB%B6%E8%8A%82%E7%82%B9) 使自定义组件内部的第一层节点由自定义组件本身完全决定。从小程序基础库版本 [`2.11.2`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 开始支持 */
+        virtualHost?: boolean
+    }
+
+    interface TriggerEventOption {
+        /** 事件是否冒泡
+         *
+         * 默认值: `false`
+         */
+        bubbles?: boolean
+        /** 事件是否可以穿越组件边界,为false时,事件将只能在引用组件的节点树上触发,不进入其他任何组件内部
+         *
+         * 默认值: `false`
+         */
+        composed?: boolean
+        /** 事件是否拥有捕获阶段
+         *
+         * 默认值: `false`
+         */
+        capturePhase?: boolean
+    }
+
+    interface RelationOption {
+        /** 目标组件的相对关系 */
+        type: 'parent' | 'child' | 'ancestor' | 'descendant'
+        /** 关系生命周期函数,当关系被建立在页面节点树中时触发,触发时机在组件attached生命周期之后 */
+        linked?(target: TrivialInstance): void
+        /** 关系生命周期函数,当关系在页面节点树中发生改变时触发,触发时机在组件moved生命周期之后 */
+        linkChanged?(target: TrivialInstance): void
+        /** 关系生命周期函数,当关系脱离页面节点树时触发,触发时机在组件detached生命周期之后 */
+        unlinked?(target: TrivialInstance): void
+        /** 如果这一项被设置,则它表示关联的目标节点所应具有的behavior,所有拥有这一behavior的组件节点都会被关联 */
+        target?: string
+    }
+
+    interface PageLifetimes {
+        /** 页面生命周期回调—监听页面显示
+         *
+         * 页面显示/切入前台时触发。
+         */
+        show(): void
+        /** 页面生命周期回调—监听页面隐藏
+         *
+         * 页面隐藏/切入后台时触发。 如 `navigateTo` 或底部 `tab` 切换到其他页面,小程序切入后台等。
+         */
+        hide(): void
+        /** 页面生命周期回调—监听页面尺寸变化
+         *
+         * 所在页面尺寸变化时执行
+         */
+        resize(size: Page.IResizeOption): void
+    }
+
+    type DefinitionFilter = <T extends TrivialOption>(
+        /** 使用该 behavior 的 component/behavior 的定义对象 */
+        defFields: T,
+        /** 该 behavior 所使用的 behavior 的 definitionFilter 函数列表 */
+        definitionFilterArr?: DefinitionFilter[]
+    ) => void
+
+    interface Lifetimes {
+        /** 组件生命周期声明对象,组件的生命周期:`created`、`attached`、`ready`、`moved`、`detached` 将收归到 `lifetimes` 字段内进行声明,原有声明方式仍旧有效,如同时存在两种声明方式,则 `lifetimes` 字段内声明方式优先级最高
+         *
+         * 最低基础库: `2.2.3` */
+        lifetimes: Partial<{
+            /**
+             * 在组件实例刚刚被创建时执行,注意此时不能调用 `setData`
+             *
+             * 最低基础库版本:[`1.6.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
+             */
+            created(): void
+            /**
+             * 在组件实例进入页面节点树时执行
+             *
+             * 最低基础库版本:[`1.6.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
+             */
+            attached(): void
+            /**
+             * 在组件在视图层布局完成后执行
+             *
+             * 最低基础库版本:[`1.6.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
+             */
+            ready(): void
+            /**
+             * 在组件实例被移动到节点树另一个位置时执行
+             *
+             * 最低基础库版本:[`1.6.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
+             */
+            moved(): void
+            /**
+             * 在组件实例被从页面节点树移除时执行
+             *
+             * 最低基础库版本:[`1.6.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
+             */
+            detached(): void
+            /**
+             * 每当组件方法抛出错误时执行
+             *
+             * 最低基础库版本:[`2.4.1`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
+             */
+            error(err: Error): void
+        }>
+        /**
+         * @deprecated 旧式的定义方式,基础库 `2.2.3` 起请在 lifetimes 中定义
+         *
+         * 在组件实例刚刚被创建时执行
+         *
+         * 最低基础库版本:[`1.6.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
+         */
+        created(): void
+        /**
+         * @deprecated 旧式的定义方式,基础库 `2.2.3` 起请在 lifetimes 中定义
+         *
+         * 在组件实例进入页面节点树时执行
+         *
+         * 最低基础库版本:[`1.6.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
+         */
+        attached(): void
+        /**
+         * @deprecated 旧式的定义方式,基础库 `2.2.3` 起请在 lifetimes 中定义
+         *
+         * 在组件在视图层布局完成后执行
+         *
+         * 最低基础库版本:[`1.6.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
+         */
+        ready(): void
+        /**
+         * @deprecated 旧式的定义方式,基础库 `2.2.3` 起请在 lifetimes 中定义
+         *
+         * 在组件实例被移动到节点树另一个位置时执行
+         *
+         * 最低基础库版本:[`1.6.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
+         */
+        moved(): void
+        /**
+         * @deprecated 旧式的定义方式,基础库 `2.2.3` 起请在 lifetimes 中定义
+         *
+         * 在组件实例被从页面节点树移除时执行
+         *
+         * 最低基础库版本:[`1.6.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
+         */
+        detached(): void
+        /**
+         * @deprecated 旧式的定义方式,基础库 `2.2.3` 起请在 lifetimes 中定义
+         *
+         * 每当组件方法抛出错误时执行
+         *
+         * 最低基础库版本:[`2.4.1`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
+         */
+        error(err: Error): void
+    }
+
+    interface OtherOption {
+        /** 类似于mixins和traits的组件间代码复用机制,参见 [behaviors](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/behaviors.html) */
+        behaviors: Behavior.BehaviorIdentifier[]
+        /**
+         * 组件数据字段监听器,用于监听 properties 和 data 的变化,参见 [数据监听器](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/observer.html)
+         *
+         * 最低基础库版本:[`2.6.1`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
+         */
+        observers: Record<string, (...args: any[]) => any>
+        /** 组件间关系定义,参见 [组件间关系](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/lifetimes.html) */
+        relations: {
+            [componentName: string]: RelationOption
+        }
+        /** 组件接受的外部样式类,参见 [外部样式类](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/wxml-wxss.html) */
+        externalClasses?: string[]
+        /** 组件所在页面的生命周期声明对象,参见 [组件生命周期](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/lifetimes.html)
+         *
+         * 最低基础库版本: [`2.2.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) */
+        pageLifetimes?: Partial<PageLifetimes>
+        /** 一些选项(文档中介绍相关特性时会涉及具体的选项设置,这里暂不列举) */
+        options: ComponentOptions
+
+        /** 定义段过滤器,用于自定义组件扩展,参见 [自定义组件扩展](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/extend.html)
+         *
+         * 最低基础库版本: [`2.2.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) */
+        definitionFilter?: DefinitionFilter
+        /**
+         * 组件自定义导出,当使用 `behavior: wx://component-export` 时,这个定义段可以用于指定组件被 selectComponent 调用时的返回值,参见 [组件间通信与事件](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/events.html)
+         * 最低基础库版本: [`2.2.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) */
+        export: () => IAnyObject
+    }
+
+    interface KeyFrame {
+        /** 关键帧的偏移,范围[0-1] */
+        offset?: number
+        /** 动画缓动函数 */
+        ease?: string
+        /** 基点位置,即 CSS transform-origin */
+        transformOrigin?: string
+        /** 背景颜色,即 CSS background-color */
+        backgroundColor?: string
+        /** 底边位置,即 CSS bottom */
+        bottom?: number | string
+        /** 高度,即 CSS height */
+        height?: number | string
+        /** 左边位置,即 CSS left */
+        left?: number | string
+        /** 宽度,即 CSS width */
+        width?: number | string
+        /** 不透明度,即 CSS opacity */
+        opacity?: number | string
+        /** 右边位置,即 CSS right */
+        right?: number | string
+        /** 顶边位置,即 CSS top */
+        top?: number | string
+        /** 变换矩阵,即 CSS transform matrix */
+        matrix?: number[]
+        /** 三维变换矩阵,即 CSS transform matrix3d */
+        matrix3d?: number[]
+        /** 旋转,即 CSS transform rotate */
+        rotate?: number
+        /** 三维旋转,即 CSS transform rotate3d */
+        rotate3d?: number[]
+        /** X 方向旋转,即 CSS transform rotateX */
+        rotateX?: number
+        /** Y 方向旋转,即 CSS transform rotateY */
+        rotateY?: number
+        /** Z 方向旋转,即 CSS transform rotateZ */
+        rotateZ?: number
+        /** 缩放,即 CSS transform scale */
+        scale?: number[]
+        /** 三维缩放,即 CSS transform scale3d */
+        scale3d?: number[]
+        /** X 方向缩放,即 CSS transform scaleX */
+        scaleX?: number
+        /** Y 方向缩放,即 CSS transform scaleY */
+        scaleY?: number
+        /** Z 方向缩放,即 CSS transform scaleZ */
+        scaleZ?: number
+        /** 倾斜,即 CSS transform skew */
+        skew?: number[]
+        /** X 方向倾斜,即 CSS transform skewX */
+        skewX?: number
+        /** Y 方向倾斜,即 CSS transform skewY */
+        skewY?: number
+        /** 位移,即 CSS transform translate */
+        translate?: Array<number | string>
+        /** 三维位移,即 CSS transform translate3d */
+        translate3d?: Array<number | string>
+        /** X 方向位移,即 CSS transform translateX */
+        translateX?: number | string
+        /** Y 方向位移,即 CSS transform translateY */
+        translateY?: number | string
+        /** Z 方向位移,即 CSS transform translateZ */
+        translateZ?: number | string
+    }
+    interface ClearAnimationOptions {
+        /** 基点位置,即 CSS transform-origin */
+        transformOrigin?: boolean
+        /** 背景颜色,即 CSS background-color */
+        backgroundColor?: boolean
+        /** 底边位置,即 CSS bottom */
+        bottom?: boolean
+        /** 高度,即 CSS height */
+        height?: boolean
+        /** 左边位置,即 CSS left */
+        left?: boolean
+        /** 宽度,即 CSS width */
+        width?: boolean
+        /** 不透明度,即 CSS opacity */
+        opacity?: boolean
+        /** 右边位置,即 CSS right */
+        right?: boolean
+        /** 顶边位置,即 CSS top */
+        top?: boolean
+        /** 变换矩阵,即 CSS transform matrix */
+        matrix?: boolean
+        /** 三维变换矩阵,即 CSS transform matrix3d */
+        matrix3d?: boolean
+        /** 旋转,即 CSS transform rotate */
+        rotate?: boolean
+        /** 三维旋转,即 CSS transform rotate3d */
+        rotate3d?: boolean
+        /** X 方向旋转,即 CSS transform rotateX */
+        rotateX?: boolean
+        /** Y 方向旋转,即 CSS transform rotateY */
+        rotateY?: boolean
+        /** Z 方向旋转,即 CSS transform rotateZ */
+        rotateZ?: boolean
+        /** 缩放,即 CSS transform scale */
+        scale?: boolean
+        /** 三维缩放,即 CSS transform scale3d */
+        scale3d?: boolean
+        /** X 方向缩放,即 CSS transform scaleX */
+        scaleX?: boolean
+        /** Y 方向缩放,即 CSS transform scaleY */
+        scaleY?: boolean
+        /** Z 方向缩放,即 CSS transform scaleZ */
+        scaleZ?: boolean
+        /** 倾斜,即 CSS transform skew */
+        skew?: boolean
+        /** X 方向倾斜,即 CSS transform skewX */
+        skewX?: boolean
+        /** Y 方向倾斜,即 CSS transform skewY */
+        skewY?: boolean
+        /** 位移,即 CSS transform translate */
+        translate?: boolean
+        /** 三维位移,即 CSS transform translate3d */
+        translate3d?: boolean
+        /** X 方向位移,即 CSS transform translateX */
+        translateX?: boolean
+        /** Y 方向位移,即 CSS transform translateY */
+        translateY?: boolean
+        /** Z 方向位移,即 CSS transform translateZ */
+        translateZ?: boolean
+    }
+    interface ScrollTimelineKeyframe {
+        composite?: 'replace' | 'add' | 'accumulate' | 'auto'
+        easing?: string
+        offset?: number | null
+        [property: string]: string | number | null | undefined
+    }
+    interface ScrollTimelineOption {
+        /** 指定滚动元素的选择器(只支持 scroll-view),该元素滚动时会驱动动画的进度 */
+        scrollSource: string
+        /** 指定滚动的方向。有效值为 horizontal 或 vertical */
+        orientation?: string
+        /** 指定开始驱动动画进度的滚动偏移量,单位 px */
+        startScrollOffset: number
+        /** 指定停止驱动动画进度的滚动偏移量,单位 px */
+        endScrollOffset: number
+        /** 起始和结束的滚动范围映射的时间长度,该时间可用于与关键帧动画里的时间 (duration) 相匹配,单位 ms */
+        timeRange: number
+    }
+
+    interface SetUpdatePerformanceListenerOption<WithDataPath> {
+        /** 是否返回变更的 data 字段信息 */
+        withDataPaths?: WithDataPath
+    }
+    interface UpdatePerformanceListener<WithDataPath> {
+        (res: UpdatePerformance<WithDataPath>): void
+    }
+    interface UpdatePerformance<WithDataPath> {
+        /** 此次更新过程的 ID */
+        updateProcessId: number
+        /** 对于子更新,返回它所属的更新过程 ID */
+        parentUpdateProcessId?: number
+        /** 是否是被合并更新,如果是,则 updateProcessId 表示被合并到的更新过程 ID */
+        isMergedUpdate: boolean
+        /** 此次更新的 data 字段信息,只有 withDataPaths 设为 true 时才会返回 */
+        dataPaths: WithDataPath extends true ? string[] : undefined
+        /** 此次更新进入等待队列时的时间戳 */
+        pendingStartTimestamp: number
+        /** 更新运算开始时的时间戳 */
+        updateStartTimestamp: number
+        /** 更新运算结束时的时间戳 */
+        updateEndTimestamp: number
+    }
+}
+/** Component构造器可用于定义组件,调用Component构造器时可以指定组件的属性、数据、方法等。
+ *
+ * * 使用 `this.data` 可以获取内部数据和属性值,但不要直接修改它们,应使用 `setData` 修改。
+ * * 生命周期函数无法在组件方法中通过 `this` 访问到。
+ * * 属性名应避免以 data 开头,即不要命名成 `dataXyz` 这样的形式,因为在 WXML 中, `data-xyz=""` 会被作为节点 dataset 来处理,而不是组件属性。
+ * * 在一个组件的定义和使用时,组件的属性名和 data 字段相互间都不能冲突(尽管它们位于不同的定义段中)。
+ * * 从基础库 `2.0.9` 开始,对象类型的属性和 data 字段中可以包含函数类型的子字段,即可以通过对象类型的属性字段来传递函数。低于这一版本的基础库不支持这一特性。
+ * * `bug` : 对于 type 为 Object 或 Array 的属性,如果通过该组件自身的 `this.setData` 来改变属性值的一个子字段,则依旧会触发属性 observer ,且 observer 接收到的 `newVal` 是变化的那个子字段的值, `oldVal` 为空, `changedPath` 包含子字段的字段名相关信息。
+ */
+declare let Component: WechatMiniprogram.Component.Constructor

+ 1435 - 0
mini/types-tips-test/miniprogram-api-typings/types/wx/lib.wx.event.d.ts

xqd
@@ -0,0 +1,1435 @@
+/*! *****************************************************************************
+Copyright (c) 2022 Tencent, Inc. All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+***************************************************************************** */
+
+declare namespace WechatMiniprogram {
+    interface Target<DataSet extends IAnyObject = IAnyObject> {
+        /** 事件组件的 id */
+        id: string
+        /** 当前组件的类型 */
+        tagName?: string
+        /** 事件组件上由 `data-` 开头的自定义属性组成的集合 */
+        dataset: DataSet
+        /** 距离页面顶部的偏移量 */
+        offsetTop: number
+        /** 距离页面左边的偏移量 */
+        offsetLeft: number
+    }
+
+    /** 基础事件参数 */
+    interface BaseEvent<
+        Mark extends IAnyObject = IAnyObject,
+        CurrentTargetDataset extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = CurrentTargetDataset
+    > {
+        /** 事件类型 */
+        type: string
+        /** 页面打开到触发事件所经过的毫秒数 */
+        timeStamp: number
+        /** 事件冒泡路径上所有由 `mark:` 开头的自定义属性组成的集合 */
+        mark?: Mark
+        /** 触发事件的源组件 */
+        target: Target<TargetDataset>
+        /** 事件绑定的当前组件 */
+        currentTarget: Target<CurrentTargetDataset>
+    }
+
+    /** 自定义事件 */
+    interface CustomEvent<
+        Detail extends IAnyObject = IAnyObject,
+        Mark extends IAnyObject = IAnyObject,
+        CurrentTargetDataset extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = CurrentTargetDataset
+    > extends BaseEvent<Mark, CurrentTargetDataset, TargetDataset> {
+        /** 额外的信息 */
+        detail: Detail
+    }
+
+    /** Touch 对象 */
+    interface TouchDetail {
+        /** 距离页面可显示区域 (屏幕除去导航条) 左上角距离,横向为 X 轴 */
+        clientX: number
+        /** 距离页面可显示区域 (屏幕除去导航条) 左上角距离,纵向为 Y 轴 */
+        clientY: number
+        /** 触摸点的标识符 */
+        identifier: number
+        /** 距离文档左上角的距离,文档的左上角为原点,横向为 X 轴 */
+        pageX: number
+        /** 距离文档左上角的距离,文档的左上角为原点,纵向为 Y 轴 */
+        pageY: number
+    }
+
+    /** canvas Touch 对象 */
+    interface TouchCanvasDetail {
+        /** 触摸点的标识符 */
+        identifier: number
+        /** 距离 Canvas 左上角的距离,Canvas 的左上角为原点 ,横向为X轴 */
+        x: number
+        /** 距离 Canvas 左上角的距离,Canvas 的左上角为原点 纵向为Y轴 */
+        y: number
+    }
+
+    /** 触摸事件 */
+    interface Touch<
+        Detail extends IAnyObject = IAnyObject,
+        T extends TouchDetail | TouchCanvasDetail = TouchDetail,
+        Mark extends IAnyObject = IAnyObject,
+        CurrentTargetDataset extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = CurrentTargetDataset
+    > extends CustomEvent<Detail, Mark, CurrentTargetDataset, TargetDataset> {
+        /** 触摸事件,当前停留在屏幕中的触摸点信息的数组 */
+        touches: T[]
+        /** 触摸事件,当前变化的触摸点信息的数组 */
+        changedTouches: T[]
+    }
+
+    /** 触摸事件响应 */
+    type TouchEvent<
+        Detail extends IAnyObject = IAnyObject,
+        Mark extends IAnyObject = IAnyObject,
+        CurrentTargetDataset extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = CurrentTargetDataset
+    > = Touch<Detail, TouchDetail, Mark, CurrentTargetDataset, TargetDataset>
+
+    /** canvas 触摸事件响应 */
+    interface TouchCanvas<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > extends Touch<never, TouchCanvasDetail, Mark, never, TargetDataset> {
+        // canvas 中的触摸事件不可冒泡,所以没有 currentTarget。
+        currentTarget: never
+    }
+
+    /**
+     * 图片加载成功时触发
+     *
+     * 最低基础库: 2.1.0
+     */
+    type CoverImageLoad<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = CustomEvent<
+        {
+            /** 图片宽度 */
+            width: number
+            /** 图片高度 */
+            height: number
+        },
+        Mark,
+        TargetDataset
+    >
+
+    /**
+     * 图片加载失败时触发
+     *
+     * 最低基础库: 2.1.0
+     */
+    type CoverImageError = CustomEvent<GeneralCallbackResult>
+
+    /**
+     * 拖动过程中触发的事件,event.detail = {x, y, source}
+     *
+     * 最低基础库: 1.9.90
+     */
+    type MovableViewChange<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = CustomEvent<
+        {
+            x: number
+            y: number
+            /**
+             * 产生移动的原因
+             *
+             * - `touch` 拖动
+             * - `touch-out-of-bounds` 超出移动范围
+             * - `out-of-bounds` 超出移动范围后的回弹
+             * - `friction` 惯性
+             * - `空字符串` setData
+             */
+            source:
+                | 'touch'
+                | 'touch-out-of-bounds'
+                | 'out-of-bounds'
+                | 'friction'
+                | ''
+        },
+        Mark,
+        TargetDataset
+    >
+
+    /**
+     * 缩放过程中触发的事件
+     *
+     * event.detail = {x, y, scale}
+     *
+     * x 和 y 字段在 2.1.0 之后支持
+     *
+     * 最低基础库: 1.9.90
+     */
+    type MovableViewScale<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = CustomEvent<
+        {
+            /** 最低基础库: 2.1.0 */
+            x: number
+            /** 最低基础库: 2.1.0 */
+            y: number
+            scale: number
+        },
+        Mark,
+        TargetDataset
+    >
+
+    /**
+     * 滑动开始事件 (同时开启 enhanced 属性后生效)
+     *
+     * detail { scrollTop, scrollLeft }
+     *
+     * 最低基础库: 2.12.0
+     */
+    type ScrollViewDragStart<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = CustomEvent<
+        {
+            scrollTop: number
+            scrollLeft: number
+        },
+        Mark,
+        TargetDataset
+    >
+
+    /**
+     * 滑动事件 (同时开启 enhanced 属性后生效)
+     *
+     * detail { scrollTop, scrollLeft }
+     *
+     * 最低基础库: 2.12.0
+     */
+    type ScrollViewDragging<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = CustomEvent<
+        {
+            scrollTop: number
+            scrollLeft: number
+        },
+        Mark,
+        TargetDataset
+    >
+
+    /**
+     * 滑动结束事件 (同时开启 enhanced 属性后生效)
+     *
+     * detail { scrollTop, scrollLeft }
+     *
+     * 最低基础库: 2.12.0
+     */
+    type ScrollViewDragEnd<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = CustomEvent<
+        {
+            scrollTop: number
+            scrollLeft: number
+        },
+        Mark,
+        TargetDataset
+    >
+
+    /** 滚动到顶部/左边时触发 */
+    type ScrollViewScrollToUpper<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = CustomEvent<
+        {
+            direction: 'top' | 'left'
+        },
+        Mark,
+        TargetDataset
+    >
+
+    /** 滚动到底部/右边时触发 */
+    type ScrollViewScrollToLower<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = CustomEvent<
+        {
+            direction: 'bottom' | 'right'
+        },
+        Mark,
+        TargetDataset
+    >
+
+    /**
+     * 滚动时触发
+     *
+     * event.detail = {scrollLeft, scrollTop, scrollHeight, scrollWidth, deltaX, deltaY}
+     */
+    type ScrollViewScroll<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = CustomEvent<
+        {
+            scrollLeft: number
+            scrollTop: number
+            scrollHeight: number
+            scrollWidth: number
+            deltaX: number
+            deltaY: number
+        },
+        Mark,
+        TargetDataset
+    >
+
+    type ScrollViewRefresherPulling<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = CustomEvent<never, Mark, TargetDataset>
+
+    type ScrollViewRefresherRefresh<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = CustomEvent<never, Mark, TargetDataset>
+
+    type ScrollViewRefresherRestore<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = CustomEvent<never, Mark, TargetDataset>
+
+    type ScrollViewRefresherAbort<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = CustomEvent<never, Mark, TargetDataset>
+
+    /**
+     * current 改变时会触发 change 事件
+     *
+     * event.detail = {current, source}
+     *
+     * **Tip**: 如果在 bindchange 的事件回调函数中使用 setData 改变 current 值,则有可能导致 setData 被不停地调用,因而通常情况下请在改变 current 值前检测 source 字段来判断是否是由于用户触摸引起。
+     */
+    type SwiperChange<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = CustomEvent<
+        {
+            current: number
+            /**
+             * 表示导致变更的原因
+             *
+             * - `autoplay` 自动播放导致 swiper 变化;
+             * - `touch` 用户划动引起 swiper 变化;
+             * - 其它原因将用空字符串表示。
+             *
+             * 最低基础库: 1.4.0
+             */
+            source: '' | 'autoplay' | 'touch'
+            /** 该 swiper-item 的标识符 */
+            currentItemId: string
+        },
+        Mark,
+        TargetDataset
+    >
+
+    /**
+     * swiper-item 的位置发生改变时会触发 transition 事件
+     *
+     * event.detail = {dx: dx, dy: dy}
+     *
+     * 最低基础库: 2.4.3
+     */
+    type SwiperTransition<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = CustomEvent<
+        {
+            dx: number
+            dy: number
+        },
+        Mark,
+        TargetDataset
+    >
+
+    /**
+     * 动画结束时会触发 animationfinish 事件
+     *
+     * 最低基础库: 1.9.0
+     */
+    type SwiperAnimationFinish<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = SwiperChange<Mark, TargetDataset>
+
+    /**
+     * progress 动画完成事件
+     *
+     * 最低基础库 2.4.1
+     */
+    type ProgressActiveEnd<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = CustomEvent<
+        {
+            curPercent: number
+        },
+        Mark,
+        TargetDataset
+    >
+
+    /**
+     * 用户点击该按钮时,会返回获取到的用户信息,回调的 detail 数据与 `wx. getUserInfo` 返回的一致,`open-type="getUserInfo"` 时有效
+     *
+     * 最低基础库: 1.3.0
+     */
+    type ButtonGetUserInfo = CustomEvent<
+        GeneralCallbackResult & GetUserInfoSuccessCallbackResult
+    >
+
+    /**
+     * 客服消息回调,`open-type="contact"` 时有效
+     *
+     * 最低基础库: 1.5.0
+     */
+    type ButtonContact = CustomEvent<GeneralCallbackResult>
+
+    /**
+     * 获取用户手机号回调,`open-type=getPhoneNumber` 时有效
+     *
+     * 最低基础库: 1.2.0
+     */
+    type ButtonGetPhoneNumber = CustomEvent<
+        GeneralCallbackResult & Partial<GetWeRunDataSuccessCallbackResult>
+    >
+
+    /**
+     * 当使用开放能力时,发生错误的回调,`open-type=launchApp` 时有效
+     *
+     * 最低基础库: 1.9.5
+     */
+    type ButtonError = CustomEvent<GeneralCallbackResult>
+
+    /**
+     * 在打开授权设置页后回调,`open-type=openSetting` 时有效
+     *
+     * 最低基础库: 2.0.7
+     */
+    type ButtonOpenSetting = CustomEvent<
+        GeneralCallbackResult & OpenSettingSuccessCallbackResult
+    >
+
+    /**
+     * 打开 APP 成功的回调,`open-type=launchApp` 时有效
+     *
+     * 最低基础库: 2.4.4
+     */
+    type ButtonLaunchApp = CustomEvent<GeneralCallbackResult>
+
+    /**
+     * checkbox-group 中选中项发生改变时触发 change 事件
+     *
+     * detail = { value: ['选中的checkbox 的 value 的数组'] }
+     */
+    type CheckboxGroupChange<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = CustomEvent<
+        {
+            /** 选中的 checkbox 的 value 的数组 */
+            value: string[]
+        },
+        Mark,
+        TargetDataset
+    >
+
+    /**
+     * 编辑器初始化完成时触发
+     *
+     * 最低基础库: 2.7.0
+     */
+    type EditorReady<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = CustomEvent<never, Mark, TargetDataset>
+
+    /**
+     * 编辑器聚焦时触发
+     *
+     * event.detail = {html, text, delta}
+     *
+     * 最低基础库: 2.7.0
+     */
+    type EditorFocus<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = CustomEvent<
+        {
+            html: string
+            text: string
+            // eslint-disable-next-line @typescript-eslint/no-explicit-any
+            delta: any[]
+        },
+        Mark,
+        TargetDataset
+    >
+
+    /**
+     * 编辑器失去焦点时触发
+     *
+     * detail = {html, text, delta}
+     *
+     * 最低基础库: 2.7.0
+     */
+    type EditorBlur<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = EditorFocus<Mark, TargetDataset>
+
+    /**
+     * 编辑器内容改变时触发
+     *
+     * detail = {html, text, delta}
+     *
+     * 最低基础库: 2.7.0
+     */
+    type EditorInput<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = EditorFocus<Mark, TargetDataset>
+
+    /**
+     * 通过 Context 方法改变编辑器内样式时触发,返回选区已设置的样式
+     *
+     * 最低基础库: 2.7.0
+     */
+    type EditorStatusChange<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = CustomEvent<
+        Partial<{
+            align: 'left' | 'center' | 'right' | 'justify'
+            bold: 'strong'
+            italic: 'em'
+            underline: true
+            strike: 'del'
+            lineHeight: string
+            letterSpacing: string
+            marginTop: string
+            marginBottom: string
+            fontFamily: string
+            fontSize: string
+            color: string
+            backgroundColor: string
+            list: 'checked' | 'unchecked' | 'ordered' | 'bullet'
+            indent: number
+            header: number
+            script: 'sub' | 'super'
+            direction: 'rtl'
+        }>,
+        Mark,
+        TargetDataset
+    >
+
+    /**
+     * 携带 form 中的数据触发 submit 事件
+     *
+     * event.detail = {value : {'name': 'value'} , formId: ''}
+     */
+    type FormSubmit<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = CustomEvent<
+        {
+            formId?: unknown
+            target: Target
+            /** 表单中的数据,需要在表单组件中加上 name 来作为 key。 */
+            value: IAnyObject
+        },
+        Mark,
+        TargetDataset
+    >
+
+    /** 表单重置时会触发 reset 事件 */
+    type FormReset<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = CustomEvent<
+        {
+            target: Target
+        },
+        Mark,
+        TargetDataset
+    >
+
+    /** 键盘输入时触发
+     *
+     * event.detail = {value, cursor, keyCode}
+     *
+     * 处理函数可以直接 return 一个字符串,将替换输入框的内容。
+     */
+    type Input<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = CustomEvent<
+        {
+            /** 输入框内容 */
+            value: string
+            /** 光标位置 */
+            cursor: number
+            /** keyCode 为键值 (目前工具还不支持返回keyCode参数) `2.1.0` 起支持 */
+            keyCode?: number
+        },
+        Mark,
+        TargetDataset
+    >
+
+    /**
+     * 输入框聚焦时触发
+     *
+     * event.detail = { value, height }
+     */
+    type InputFocus<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = CustomEvent<
+        {
+            /** 输入框内容 */
+            value: string
+            /** 键盘高度, 在基础库 `1.9.90` 起支持 */
+            height: number
+        },
+        Mark,
+        TargetDataset
+    >
+
+    /**
+     * 输入框失去焦点时触发
+     *
+     * event.detail = {value: value}
+     */
+    type InputBlur<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = CustomEvent<
+        {
+            /** 输入框内容 */
+            value: string
+        },
+        Mark,
+        TargetDataset
+    >
+
+    /**
+     * 点击完成按钮时触发
+     *
+     * event.detail = {value: value}
+     */
+    type InputConfirm<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = CustomEvent<
+        {
+            /** 输入框内容 */
+            value: string
+        },
+        Mark,
+        TargetDataset
+    >
+
+    /**
+     * 键盘高度发生变化的时候触发此事件
+     *
+     * event.detail = {height: height, duration: duration}
+     *
+     * **tip**: 键盘高度发生变化,keyboardheightchange 事件可能会多次触发,开发者对于相同的 height 值应该忽略掉
+     *
+     * 最低基础库: `2.7.0`
+     */
+    type InputKeyboardHeightChange<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = CustomEvent<
+        {
+            /** 键盘高度 */
+            height: number
+            duration: number
+        },
+        Mark,
+        TargetDataset
+    >
+
+    /**
+     * 取消选择时触发
+     *
+     * 最低基础库: 1.9.90
+     */
+    type PickerCancel<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = CustomEvent<never, Mark, TargetDataset>
+
+    /**
+     * value 改变时触发 change 事件
+     *
+     * event.detail = {value}
+     *
+     * 当 mode = region 时 (最低基础库: 1.4.0)
+     *
+     * value 改变时触发 change 事件,event.detail = {value, code, postcode},其中字段 code 是统计用区划代码,postcode 是邮政编码
+     */
+    type PickerChange<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = CustomEvent<
+        {
+            /**
+             * 当 mode = selector 时, 返回当前选择的 value
+             *
+             * 当 mode = multiSelector 时, 返回一个索引数组
+             *
+             * 当 mode = time | date 时, 返回 `"12:01"` | `"2016-09-01"`
+             *
+             * 当 mode = region 时, 返回 `["广东省", "广州市", "海珠区"]`
+             */
+            value: string | number[] | [string, string, string]
+            /** 统计用区划代码 当 mode = region 时有效 (最低基础库: 1.4.0) */
+            code: [string, string, string]
+            /** 邮政编码 当 mode = region 时有效 (最低基础库: 1.4.0) */
+            postcode: string
+        },
+        Mark,
+        TargetDataset
+    >
+
+    /** 列改变时触发 当 `mode = multiSelector` 时有效 */
+    type PickerColumnChange<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = CustomEvent<
+        {
+            /** 修改的列 */
+            column: number
+            value: number
+        },
+        Mark,
+        TargetDataset
+    >
+
+    /**
+     * 滚动选择时触发 change 事件
+     *
+     * event.detail = {value}
+     */
+    type PickerViewChange<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = CustomEvent<
+        {
+            /** value 为数组,表示 picker-view 内的 picker-view-column 当前选择的是第几项 (下标从 0 开始)  */
+            value: number[]
+        },
+        Mark,
+        TargetDataset
+    >
+
+    /**
+     * 当滚动选择开始时候触发事件
+     *
+     * 最低基础库: 2.3.1
+     */
+    type PickerViewPickStart<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = CustomEvent<never, Mark, TargetDataset>
+
+    /**
+     * 当滚动选择结束时候触发事件
+     *
+     * 最低基础库: 2.3.1
+     */
+    type PickerViewPickEnd<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = CustomEvent<never, Mark, TargetDataset>
+
+    /** radio-group 切换事件 */
+    type RadioGroupChange<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = CustomEvent<
+        /** radio-group 中选中项的 value */
+        {
+            value: string
+        },
+        Mark,
+        TargetDataset
+    >
+
+    /**
+     * 完成一次拖动后触发的事件
+     *
+     * event.detail = {value}
+     */
+    type SliderChange<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = CustomEvent<
+        {
+            /** slider 的数值 0 - 100 */
+            value: number
+        },
+        Mark,
+        TargetDataset
+    >
+
+    /**
+     * 拖动过程中触发的事件
+     *
+     * event.detail = {value}
+     *
+     * 最低基础库: 1.7.0
+     */
+    type SliderChanging<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = SliderChange<Mark, TargetDataset>
+
+    /**
+     * checked 改变时触发 change 事件
+     *
+     * event.detail={ value}
+     */
+    type SwitchChange<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = CustomEvent<
+        {
+            value: boolean
+        },
+        Mark,
+        TargetDataset
+    >
+
+    /**
+     * 输入框聚焦时触发
+     *
+     * event.detail = { value, height },height 为键盘高度
+     *
+     * 在基础库 1.9.90 起支持
+     */
+    type TextareaFocus<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = InputFocus<Mark, TargetDataset>
+
+    /**
+     * 输入框失去焦点时触发
+     *
+     * event.detail = {value, cursor}
+     *
+     * **tip**: textarea 的 blur 事件会晚于页面上的 tap 事件,如果需要在 button 的点击事件获取 textarea,可以使用 form 的 bindsubmit。
+     */
+    type TextareaBlur<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = InputBlur<Mark, TargetDataset>
+
+    /**
+     * 输入框行数变化时调用
+     *
+     * event.detail = {height: 0, heightRpx: 0, lineCount: 0}
+     */
+    type TextareaLineChange<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = CustomEvent<
+        {
+            /** 输入框高度(px) */
+            height: number
+            /** 输入框高度(rpx) */
+            heightRpx: number
+            /** 行数 */
+            lineCount: number
+            /** 行高 */
+            lineHeight: number
+        },
+        Mark,
+        TargetDataset
+    >
+
+    /**
+     * 当键盘输入时,触发 input 事件
+     *
+     * event.detail = {value, cursor, keyCode}
+     *
+     * keyCode 为键值,目前工具还不支持返回 keyCode 参数。
+     *
+     * **tip**: 不建议在多行文本上对用户的输入进行修改,所以 **bindinput 处理函数的返回值并不会反映到 textarea 上**
+     */
+    type TextareaInput<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = Input<Mark, TargetDataset>
+
+    /**
+     * 点击完成时, 触发 confirm 事件
+     *
+     * event.detail = {value: value}
+     */
+    type TextareaConfirm<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = InputConfirm<Mark, TargetDataset>
+
+    /**
+     * 键盘高度发生变化的时候触发此事件
+     *
+     * event.detail = {height: height, duration: duration}
+     *
+     * **tip**: 键盘高度发生变化,keyboardheightchange事件可能会多次触发,开发者对于相同的height值应该忽略掉
+     *
+     * 最低基础库: 2.7.0
+     */
+    type TextareaKeyboardHeightChange<
+        Mark extends IAnyObject = IAnyObject,
+        TargetDataset extends IAnyObject = IAnyObject
+    > = InputKeyboardHeightChange<Mark, TargetDataset>
+
+    /**
+     * 功能页返回,且操作成功时触发, detail 格式与具体功能页相关
+     *
+     * 最低基础库: 2.1.0
+     */
+    type FunctionalNavigatorSuccess<
+        Detail extends IAnyObject = IAnyObject
+    > = CustomEvent<Detail, never, never>
+
+    /**
+     * 功能页返回,且操作失败时触发, detail 格式与具体功能页相关
+     *
+     * 最低基础库: 2.1.0
+     */
+    type FunctionalNavigatorFail<
+        Detail extends IAnyObject = IAnyObject
+    > = CustomEvent<Detail, never, never>
+
+    /**
+     * 当 `target="miniProgram"` 时有效,跳转小程序成功
+     *
+     * 最低基础库: 2.0.7
+     */
+    type NavigatorSuccess = CustomEvent
+    /**
+     * 当 `target="miniProgram"` 时有效,跳转小程序失败
+     *
+     * `tips`: 需要用户确认跳转 从 2.3.0 版本开始,在跳转至其他小程序前,将统一增加弹窗,询问是否跳转,用户确认后才可以跳转其他小程序。如果用户点击取消,则回调 fail cancel。
+     *
+     * 最低基础库: 2.0.7
+     */
+    type NavigatorFail = CustomEvent
+    /**
+     * 当 `target="miniProgram"` 时有效,跳转小程序完成
+     *
+     * 最低基础库: 2.0.7
+     */
+    type NavigatorComplete = CustomEvent
+
+    /**
+     * 当发生错误时触发 error 事件
+     *
+     * detail = {errMsg:MediaError.code}
+     */
+    type AudioError = CustomEvent<{
+        /**
+         * MediaError.code
+         *
+         * - 1 获取资源被用户禁止
+         * - 2 网络错误
+         * - 3 解码错误
+         * - 4 不合适资源
+         */
+        errMsg: 1 | 2 | 3 | 4
+    }>
+
+    /** 当开始/继续播放时触发play事件 */
+    type AudioPlay = CustomEvent
+
+    /** 当暂停播放时触发 pause 事件 */
+    type AudioPause = CustomEvent
+
+    /**
+     * 当播放进度改变时触发 timeupdate 事件
+     *
+     * detail = {currentTime, duration}
+     */
+    type AudioTimeUpdate = CustomEvent<{
+        currentTime: number
+        duration: number
+    }>
+
+    /** 当播放到末尾时触发 ended 事件 */
+    type AudioEnded = CustomEvent
+
+    /** 摄像头在非正常终止时触发,如退出后台等情况 */
+    type CameraStop = CustomEvent
+
+    /** 用户不允许使用摄像头时触发 */
+    type CameraError = CustomEvent
+
+    /**
+     * 相机初始化完成时触发
+     *
+     * 最低基础库: 2.7.0
+     */
+    type CameraInitDone = CustomEvent
+
+    /**
+     * 在扫码识别成功时触发,仅在 mode="scanCode" 时生效
+     *
+     * 最低基础库: 2.1.0
+     */
+    type CameraScanCode = CustomEvent
+
+    /** 当错误发生时触发,event.detail = {errMsg} */
+    type ImageError = CoverImageError
+    /** 当图片载入完毕时触发,event.detail = {height, width} */
+    type ImageLoad = CoverImageLoad
+
+    /**
+     * 播放状态变化事件,detail = {code}
+     *
+     * 最低基础库 1.7.0
+     */
+    type LivePlayerStateChange = CustomEvent<{
+        /**
+         * 状态码
+         *
+         * - `2001` 已经连接服务器
+         * - `2002` 已经连接服务器,开始拉流
+         * - `2003` 网络接收到首个视频数据包(IDR)
+         * - `2004` 视频播放开始
+         * - `2005` 视频播放进度
+         * - `2006` 视频播放结束
+         * - `2007` 视频播放Loading
+         * - `2008` 解码器启动
+         * - `2009` 视频分辨率改变
+         * - `-2301` 网络断连,且经多次重连抢救无效,更多重试请自行重启播放
+         * - `-2302` 获取加速拉流地址失败
+         * - `2101` 当前视频帧解码失败
+         * - `2102` 当前音频帧解码失败
+         * - `2103` 网络断连, 已启动自动重连
+         * - `2104` 网络来包不稳: 可能是下行带宽不足,或由于主播端出流不均匀
+         * - `2105` 当前视频播放出现卡顿
+         * - `2106` 硬解启动失败,采用软解
+         * - `2107` 当前视频帧不连续,可能丢帧
+         * - `2108` 当前流硬解第一个I帧失败,SDK自动切软解
+         * - `3001` RTMP -DNS解析失败
+         * - `3002` RTMP服务器连接失败
+         * - `3003` RTMP服务器握手失败
+         * - `3005` RTMP 读/写失败
+         */
+        code: number
+    }>
+
+    /**
+     * 全屏变化事件,detail = {direction, fullScreen}
+     *
+     * 最低基础库 1.7.0
+     */
+    type LivePlayerFullScreenChange = CustomEvent<{
+        direction: 'vertical' | 'horizontal'
+        fullScreen: boolean
+    }>
+
+    /**
+     * 网络状态通知,detail = {info}
+     *
+     * 最低基础库 1.9.0
+     */
+    type LivePlayerNetStatus = CustomEvent<{
+        /**
+         * 网络状态数据
+         *
+         *
+         * - `videoBitrate` 当前视频编/码器输出的比特率,单位 kbps
+         * - `audioBitrate` 当前音频编/码器输出的比特率,单位 kbps
+         * - `videoFPS` 当前视频帧率
+         * - `videoGOP` 当前视频 GOP,也就是每两个关键帧(I帧)间隔时长,单位 s
+         * - `netSpeed` 当前的发送/接收速度
+         * - `netJitter` 网络抖动情况,抖动越大,网络越不稳定
+         * - `videoWidth` 视频画面的宽度
+         * - `videoHeight` 视频画面的高度
+         */
+        info:
+            | 'videoBitrate'
+            | 'audioBitrate'
+            | 'videoFPS'
+            | 'videoGOP'
+            | 'netSpeed'
+            | 'netJitter'
+            | 'videoWidth'
+            | 'videoHeight'
+    }>
+
+    /**
+     * 状态变化事件,detail = {code}
+     *
+     * 最低基础库: 1.7.0
+     */
+    type LivePusherStateChange = CustomEvent<{
+        /**
+         * 状态码
+         *
+         * - `1001` 已经连接推流服务器
+         * - `1002` 已经与服务器握手完毕,开始推流
+         * - `1003` 打开摄像头成功
+         * - `1004` 录屏启动成功
+         * - `1005` 推流动态调整分辨率
+         * - `1006` 推流动态调整码率
+         * - `1007` 首帧画面采集完成
+         * - `1008` 编码器启动
+         * - `-1301` 打开摄像头失败
+         * - `-1302` 打开麦克风失败
+         * - `-1303` 视频编码失败
+         * - `-1304` 音频编码失败
+         * - `-1305` 不支持的视频分辨率
+         * - `-1306` 不支持的音频采样率
+         * - `-1307` 网络断连,且经多次重连抢救无效,更多重试请自行重启推流
+         * - `-1308` 开始录屏失败,可能是被用户拒绝
+         * - `-1309` 录屏失败,不支持的Android系统版本,需要5.0以上的系统
+         * - `-1310` 录屏被其他应用打断了
+         * - `-1311` Android Mic打开成功,但是录不到音频数据
+         * - `-1312` 录屏动态切横竖屏失败
+         * - `1101` 网络状况不佳: 上行带宽太小,上传数据受阻
+         * - `1102` 网络断连, 已启动自动重连
+         * - `1103` 硬编码启动失败,采用软编码
+         * - `1104` 视频编码失败
+         * - `1105` 新美颜软编码启动失败,采用老的软编码
+         * - `1106` 新美颜软编码启动失败,采用老的软编码
+         * - `3001` RTMP -DNS解析失败
+         * - `3002` RTMP服务器连接失败
+         * - `3003` RTMP服务器握手失败
+         * - `3004` RTMP服务器主动断开,请检查推流地址的合法性或防盗链有效期
+         * - `3005` RTMP 读/写失败
+         */
+        code: number
+    }>
+
+    /**
+     * 网络状态通知,detail = {info}
+     *
+     * 最低基础库: 1.9.0
+     */
+    type LivePusherNetStatus = CustomEvent<{
+        /**
+         * 网络状态数据
+         *
+         * -`videoBitrate` 当前视频编/码器输出的比特率,单位 kbps
+         * -`audioBitrate` 当前音频编/码器输出的比特率,单位 kbps
+         * -`videoFPS` 当前视频帧率
+         * -`videoGOP` 当前视频 GOP,也就是每两个关键帧(I帧)间隔时长,单位 s
+         * -`netSpeed` 当前的发送/接收速度
+         * -`netJitter` 网络抖动情况,抖动越大,网络越不稳定
+         * -`videoWidth` 视频画面的宽度
+         * -`videoHeight` 视频画面的高度
+         */
+        info:
+            | 'videoBitrate'
+            | 'audioBitrate'
+            | 'videoFPS'
+            | 'videoGOP'
+            | 'netSpeed'
+            | 'netJitter'
+            | 'videoWidth'
+            | 'videoHeight'
+    }>
+
+    /**
+     * 渲染错误事件,detail = {errMsg, errCode}
+     *
+     * `tip`: 开发者工具上暂不支持 live-pusher
+     *
+     * 最低基础库: 1.7.4
+     */
+    type LivePusherError = CustomEvent<{
+        errMsg: string
+        /**
+         * 错误码
+         *
+         * - `10001` 用户禁止使用摄像头
+         * - `10002` 用户禁止使用录音
+         * - `10003` 背景音资源 (BGM) 加载失败
+         * - `10004` 等待画面资源 (waiting-image) 加载失败
+         */
+        errCode: number
+    }>
+
+    /**
+     * 背景音开始播放时触发
+     *
+     * 最低基础库: 2.4.0
+     */
+    type LivePusherBgmStart = CustomEvent
+
+    /**
+     * 背景音进度变化时触发,detail = {progress, duration}
+     *
+     * 最低基础库: 2.4.0
+     */
+    type LivePusherBgmProgress = CustomEvent<{
+        progress: number
+        duration: number
+    }>
+
+    /**
+     * 背景音播放完成时触发
+     *
+     * 最低基础库: 2.4.0
+     */
+    type LivePusherBgmComplete = CustomEvent
+
+    /** 当开始/继续播放时触发play事件 */
+    type VideoPlay = CustomEvent
+
+    /** 当暂停播放时触发 pause 事件 */
+    type VideoPause = CustomEvent
+
+    /** 当播放到末尾时触发 ended 事件 */
+    type VideoEnded = CustomEvent
+
+    /** 播放进度变化时触发,event.detail = {currentTime, duration} 。触发频率 250ms 一次 */
+    type VideoTimeUpdate = CustomEvent<{
+        currentTime: number
+        duration: number
+    }>
+
+    /**
+     * 视频进入和退出全屏时触发,event.detail = {fullScreen, direction}
+     *
+     * 最低基础库: 1.4.0
+     */
+    type VideoFullScreenChange = CustomEvent<{
+        fullScreen: boolean
+        direction: 'vertical' | 'horizontal'
+    }>
+
+    /**
+     * 视频出现缓冲时触发
+     *
+     * 最低基础库: 1.7.0
+     */
+    type VideoWaiting = CustomEvent
+
+    /**
+     * 视频播放出错时触发
+     *
+     * 最低基础库: 1.7.0
+     */
+    type VideoError = CustomEvent
+
+    /**
+     * 加载进度变化时触发,只支持一段加载。
+     *
+     * 最低基础库: 2.4.0
+     */
+    type VideoPregress = CustomEvent<{
+        /** 百分比 */
+        buffered: number
+    }>
+
+    /**
+     * 加载进度变化时触发,只支持一段加载。
+     *
+     * 最低基础库: 2.4.0
+     */
+    type VoipRoomError = CustomEvent
+
+    /**
+     * 点击地图时触发
+     *
+     * 2.9.0 起返回经纬度信息
+     */
+    type MapTap = CustomEvent<{
+        /** 经度,最低基础库 2.9.0 */
+        longitude: number
+        /** 纬度,最低基础库 2.9.0 */
+        latitude: number
+    }>
+
+    /**
+     * 点击标记点时触发
+     *
+     * e.detail = {markerId}
+     */
+    type MarkerTap = CustomEvent<{
+        /** 标记点 ID */
+        markerId: number
+    }>
+
+    /**
+     * 点击 label 时触发
+     *
+     * e.detail = {markerId}
+     *
+     * 最低基础库: 2.9.0
+     */
+    type LabelTap = MarkerTap
+
+    /**
+     * 点击控件时触发
+     *
+     * e.detail = {controlId}
+     */
+    type ControlTap = CustomEvent<{
+        /** 控件 ID */
+        controlId: number
+    }>
+
+    /**
+     * 点击 label 时触发
+     *
+     * e.detail = {markerId}
+     *
+     * 最低基础库: 1.2.0
+     */
+    type CalloutTap = MarkerTap
+
+    /**
+     * 在地图渲染更新完成时触发
+     *
+     * 最低基础库: 1.6.0
+     */
+    type MapUpdated = CustomEvent
+
+    /**
+     * 在地图渲染更新完成时触发
+     *
+     * 最低基础库: 1.6.0
+     */
+    type RegionChange = CustomEvent<{
+        /** 旋转程度,最低基础库 2.3.0 */
+        rotate: number
+        /** 缩放程度,最低基础库 2.3.0 */
+        skew: number
+    }> &
+        (
+            | {
+                  /**
+                   * 视野变化开始、结束时触发
+                   *
+                   * 视野变化开始为 `begin`
+                   */
+                  type: 'begin'
+                  /**
+                   * 导致视野变化的原因
+                   *
+                   * - gesture: 用户手势
+                   * - update: 调用接口导致
+                   */
+                  causedBy: 'gesture' | 'update'
+              }
+            | {
+                  /**
+                   * 视野变化结束时触发
+                   *
+                   * 视野变化结束为 `end`
+                   */
+                  type: 'end'
+                  /**
+                   * 导致视野变化的原因
+                   *
+                   * - drag: 拖动地图导致
+                   * - scale: 缩放导致
+                   * - update: 调用接口导致
+                   */
+                  causedBy: 'drag' | 'scale' | 'update'
+              }
+        )
+
+    /**
+     * 广告加载成功的回调
+     *
+     * 最低基础库: 2.2.1
+     */
+    type AdLoad = CustomEvent
+
+    /**
+     * 广告加载失败的回调,event.detail = {errCode: 1002}
+     *
+     * `tip`: 监听到error回调后,开发者可以针对性的处理,比如隐藏广告组件的父容器,以保证用户体验,但不要移除广告组件,否则将无法收到bindload的回调。
+     *
+     * 最低基础库: 2.2.1
+     */
+    type AdError = CustomEvent<{
+        /**
+         * 错误码
+         *
+         * - `1000` 后端错误调用失败 该项错误不是开发者的异常情况 一般情况下忽略一段时间即可恢复。
+         * - `1001` 参数错误 使用方法错误 可以前往developers.weixin.qq.com 确认具体教程 (小程序和小游戏分别有各自的教程,可以在顶部选项中,“设计”一栏的右侧进行切换)。
+         * - `1002` 广告单元无效 可能是拼写错误、或者误用了其他APP的广告ID 请重新前往mp.weixin.qq.com确认广告位ID。
+         * - `1003` 内部错误 该项错误不是开发者的异常情况 一般情况下忽略一段时间即可恢复。
+         * - `1004` 无适合的广告 广告不是每一次都会出现,这次没有出现可能是由于该用户不适合浏览广告 属于正常情况,且开发者需要针对这种情况做形态上的兼容。
+         * - `1005` 广告组件审核中 你的广告正在被审核,无法展现广告 请前往mp.weixin.qq.com确认审核状态,且开发者需要针对这种情况做形态上的兼容。
+         * - `1006` 广告组件被驳回 你的广告审核失败,无法展现广告 请前往mp.weixin.qq.com确认审核状态,且开发者需要针对这种情况做形态上的兼容。
+         * - `1007` 广告组件被驳回 你的广告能力已经被封禁,封禁期间无法展现广告 请前往mp.weixin.qq.com确认小程序广告封禁状态。
+         * - `1008` 广告单元已关闭 该广告位的广告能力已经被关闭 请前往mp.weixin.qq.com重新打开对应广告位的展现。
+         */
+        errCode: number
+    }>
+
+    /**
+     * 广告关闭的回调
+     *
+     * 最低基础库: 2.6.5
+     */
+    type AdClose = CustomEvent
+
+    /**
+     * 网页向小程序 postMessage 时,会在特定时机 (小程序后退、组件销毁、分享) 触发并收到消息。e.detail = { data }
+     *
+     * 最低基础库: 1.6.4
+     */
+    type WebviewMessage = CustomEvent<{
+        /** 多次 postMessage 的参数组成的数组 */
+        // eslint-disable-next-line @typescript-eslint/no-explicit-any
+        data: any[]
+    }>
+
+    /**
+     * 网页加载成功时候触发此事件。e.detail = { src }
+     *
+     * 最低基础库: 1.6.4
+     */
+    type WebviewLoad = CustomEvent<{
+        src: string
+    }>
+
+    /**
+     * 网页加载失败的时候触发此事件。e.detail = { src }
+     *
+     * 最低基础库: 1.6.4
+     */
+    type WebviewError = CustomEvent<{
+        src: string
+    }>
+}

+ 263 - 0
mini/types-tips-test/miniprogram-api-typings/types/wx/lib.wx.page.d.ts

xqd
@@ -0,0 +1,263 @@
+/*! *****************************************************************************
+Copyright (c) 2022 Tencent, Inc. All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+***************************************************************************** */
+
+declare namespace WechatMiniprogram.Page {
+    type Instance<
+        TData extends DataOption,
+        TCustom extends CustomOption
+    > = OptionalInterface<ILifetime> &
+        InstanceProperties &
+        InstanceMethods<TData> &
+        Data<TData> &
+        TCustom
+    type Options<
+        TData extends DataOption,
+        TCustom extends CustomOption
+    > = (TCustom &
+        Partial<Data<TData>> &
+        Partial<ILifetime> & {
+            options?: Component.ComponentOptions
+        }) &
+        ThisType<Instance<TData, TCustom>>
+    type TrivialInstance = Instance<IAnyObject, IAnyObject>
+    interface Constructor {
+        <TData extends DataOption, TCustom extends CustomOption>(
+            options: Options<TData, TCustom>
+        ): void
+    }
+    interface ILifetime {
+        /** 生命周期回调—监听页面加载
+         *
+         * 页面加载时触发。一个页面只会调用一次,可以在 onLoad 的参数中获取打开当前页面路径中的参数。
+         */
+        onLoad(
+            /** 打开当前页面路径中的参数 */
+            query: Record<string, string | undefined>
+        ): void | Promise<void>
+        /** 生命周期回调—监听页面显示
+         *
+         * 页面显示/切入前台时触发。
+         */
+        onShow(): void | Promise<void>
+        /** 生命周期回调—监听页面初次渲染完成
+     *
+     * 页面初次渲染完成时触发。一个页面只会调用一次,代表页面已经准备妥当,可以和视图层进行交互。
+     *
+
+    * 注意:对界面内容进行设置的 API 如`wx.setNavigationBarTitle`,请在`onReady`之后进行。
+    */
+        onReady(): void | Promise<void>
+        /** 生命周期回调—监听页面隐藏
+         *
+         * 页面隐藏/切入后台时触发。 如 `navigateTo` 或底部 `tab` 切换到其他页面,小程序切入后台等。
+         */
+        onHide(): void | Promise<void>
+        /** 生命周期回调—监听页面卸载
+         *
+         * 页面卸载时触发。如`redirectTo`或`navigateBack`到其他页面时。
+         */
+        onUnload(): void | Promise<void>
+        /** 监听用户下拉动作
+         *
+         * 监听用户下拉刷新事件。
+         * - 需要在`app.json`的`window`选项中或页面配置中开启`enablePullDownRefresh`。
+         * - 可以通过`wx.startPullDownRefresh`触发下拉刷新,调用后触发下拉刷新动画,效果与用户手动下拉刷新一致。
+         * - 当处理完数据刷新后,`wx.stopPullDownRefresh`可以停止当前页面的下拉刷新。
+         */
+        onPullDownRefresh(): void | Promise<void>
+        /** 页面上拉触底事件的处理函数
+         *
+         * 监听用户上拉触底事件。
+         * - 可以在`app.json`的`window`选项中或页面配置中设置触发距离`onReachBottomDistance`。
+         * - 在触发距离内滑动期间,本事件只会被触发一次。
+         */
+        onReachBottom(): void | Promise<void>
+        /** 用户点击右上角转发
+         *
+         * 监听用户点击页面内转发按钮(`<button>` 组件 `open-type="share"`)或右上角菜单“转发”按钮的行为,并自定义转发内容。
+         *
+         * **注意:只有定义了此事件处理函数,右上角菜单才会显示“转发”按钮**
+         *
+         * 此事件需要 return 一个 Object,用于自定义转发内容
+         */
+        onShareAppMessage(
+            /** 分享发起来源参数 */
+            options: IShareAppMessageOption
+        ): ICustomShareContent | void
+        /**
+         * 监听右上角菜单“分享到朋友圈”按钮的行为,并自定义分享内容
+         *
+         * 本接口为 Beta 版本,暂只在 Android 平台支持,详见 [分享到朋友圈 (Beta)](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/share-timeline.html)
+         *
+         * 基础库 2.11.3 开始支持,低版本需做兼容处理。
+         */
+        onShareTimeline(): ICustomTimelineContent | void
+
+        /** 页面滚动触发事件的处理函数
+         *
+         * 监听用户滑动页面事件。
+         */
+        onPageScroll(
+            /** 页面滚动参数 */
+            options: IPageScrollOption
+        ): void | Promise<void>
+
+        /** 当前是 tab 页时,点击 tab 时触发,最低基础库: `1.9.0` */
+        onTabItemTap(
+            /** tab 点击参数 */
+            options: ITabItemTapOption
+        ): void | Promise<void>
+
+        /** 窗口尺寸改变时触发,最低基础库:`2.4.0` */
+        onResize(
+            /** 窗口尺寸参数 */
+            options: IResizeOption
+        ): void | Promise<void>
+
+        /**
+         * 监听用户点击右上角菜单“收藏”按钮的行为,并自定义收藏内容。
+         * 基础库 2.10.3,安卓 7.0.15 版本起支持,iOS 暂不支持
+         */
+        onAddToFavorites(options: IAddToFavoritesOption): IAddToFavoritesContent
+    }
+    interface InstanceProperties {
+        /** 页面的文件路径 */
+        is: string
+
+        /** 到当前页面的路径 */
+        route: string
+
+        /** 打开当前页面路径中的参数 */
+        options: Record<string, string | undefined>
+    }
+
+    type DataOption = Record<string, any>
+    type CustomOption = Record<string, any>
+
+    type InstanceMethods<D extends DataOption> = Component.InstanceMethods<D>
+
+    interface Data<D extends DataOption> {
+        /** 页面的初始数据
+         *
+         * `data` 是页面第一次渲染使用的**初始数据**。
+         *
+         * 页面加载时,`data` 将会以`JSON`字符串的形式由逻辑层传至渲染层,因此`data`中的数据必须是可以转成`JSON`的类型:字符串,数字,布尔值,对象,数组。
+         *
+         * 渲染层可以通过 `WXML` 对数据进行绑定。
+         */
+        data: D
+    }
+
+    interface ICustomShareContent {
+        /** 转发标题。默认值:当前小程序名称 */
+        title?: string
+        /** 转发路径,必须是以 / 开头的完整路径。默认值:当前页面 path */
+        path?: string
+        /** 自定义图片路径,可以是本地文件路径、代码包文件路径或者网络图片路径。支持PNG及JPG。显示图片长宽比是 5:4,最低基础库: `1.5.0`。默认值:使用默认截图 */
+        imageUrl?: string
+    }
+
+    interface ICustomTimelineContent {
+        /** 自定义标题,即朋友圈列表页上显示的标题。默认值:当前小程序名称 */
+        title?: string
+        /** 自定义页面路径中携带的参数,如 `path?a=1&b=2` 的 “?” 后面部分 默认值:当前页面路径携带的参数 */
+        query?: string
+        /** 自定义图片路径,可以是本地文件路径、代码包文件路径或者网络图片路径。支持 PNG 及 JPG。显示图片长宽比是 1:1。默认值:默认使用小程序 Logo*/
+        imageUrl?: string
+    }
+
+    interface IPageScrollOption {
+        /** 页面在垂直方向已滚动的距离(单位px) */
+        scrollTop: number
+    }
+
+    interface IShareAppMessageOption {
+        /** 转发事件来源。
+         *
+         * 可选值:
+         * - `button`:页面内转发按钮;
+         * - `menu`:右上角转发菜单。
+         *
+         * 最低基础库: `1.2.4`
+         */
+        from: 'button' | 'menu' | string
+        /** 如果 `from` 值是 `button`,则 `target` 是触发这次转发事件的 `button`,否则为 `undefined`
+         *
+         * 最低基础库: `1.2.4` */
+        target: any
+        /** 页面中包含`<web-view>`组件时,返回当前`<web-view>`的url
+         *
+         * 最低基础库: `1.6.4`
+         */
+        webViewUrl?: string
+    }
+
+    interface ITabItemTapOption {
+        /** 被点击tabItem的序号,从0开始,最低基础库: `1.9.0` */
+        index: string
+        /** 被点击tabItem的页面路径,最低基础库: `1.9.0` */
+        pagePath: string
+        /** 被点击tabItem的按钮文字,最低基础库: `1.9.0` */
+        text: string
+    }
+
+    interface IResizeOption {
+        size: {
+            /** 变化后的窗口宽度,单位 px */
+            windowWidth: number
+            /** 变化后的窗口高度,单位 px */
+            windowHeight: number
+        }
+    }
+
+    interface IAddToFavoritesOption {
+        /** 页面中包含web-view组件时,返回当前web-view的url */
+        webviewUrl?: string
+    }
+
+    interface IAddToFavoritesContent {
+        /** 自定义标题,默认值:页面标题或账号名称 */
+        title?: string
+        /** 自定义图片,显示图片长宽比为 1:1,默认值:页面截图 */
+        imageUrl?: string
+        /** 自定义query字段,默认值:当前页面的query */
+        query?: string
+    }
+
+    interface GetCurrentPages {
+        (): Array<Instance<IAnyObject, IAnyObject>>
+    }
+}
+
+/**
+ * 注册小程序中的一个页面。接受一个 `Object` 类型参数,其指定页面的初始数据、生命周期回调、事件处理函数等。
+ */
+declare let Page: WechatMiniprogram.Page.Constructor
+/**
+ * 获取当前页面栈。数组中第一个元素为首页,最后一个元素为当前页面。
+
+ *  __注意:__
+
+ *  - __不要尝试修改页面栈,会导致路由以及页面状态错误。__
+ *  - 不要在 `App.onLaunch` 的时候调用 `getCurrentPages()`,此时 `page` 还没有生成。
+ */
+declare let getCurrentPages: WechatMiniprogram.Page.GetCurrentPages

+ 4 - 0
mini/types-tips-test/miniprogram-api-typings/typings.json

xqd
@@ -0,0 +1,4 @@
+{
+	"name": "miniprogram-api-typings",
+	"main": "index.d.ts"
+}

+ 207 - 0
mini/types-tips-test/uni-app/app.d.ts

xqd
@@ -0,0 +1,207 @@
+declare namespace App {
+  interface ReferrerInfo {
+    /**
+     * 来源小程序或公众号或App的 appId
+     *
+     * 以下场景支持返回 referrerInfo.appId:
+     * - 1020(公众号 profile 页相关小程序列表): appId
+     * - 1035(公众号自定义菜单):来源公众号 appId
+     * - 1036(App 分享消息卡片):来源应用 appId
+     * - 1037(小程序打开小程序):来源小程序 appId
+     * - 1038(从另一个小程序返回):来源小程序 appId
+     * - 1043(公众号模板消息):来源公众号 appId
+     */
+    appId: string;
+    /**
+     * 来源小程序传过来的数据,scene=1037或1038时支持
+     */
+    extraData?: any;
+  }
+
+  interface LaunchShowOption {
+    /**
+     * 打开小程序的路径
+     */
+    path: string;
+    /**
+     * 打开小程序的query
+     */
+    // @ts-ignore
+    query: AnyObject;
+    /**
+     * 打开小程序的场景值
+     * - 1001: 发现栏小程序主入口,「最近使用」列表(基础库2.2.4版本起包含「我的小程序」列表)
+     * - 1005: 顶部搜索框的搜索结果页
+     * - 1006: 发现栏小程序主入口搜索框的搜索结果页
+     * - 1007: 单人聊天会话中的小程序消息卡片
+     * - 1008: 群聊会话中的小程序消息卡片
+     * - 1011: 扫描二维码
+     * - 1012: 长按图片识别二维码
+     * - 1013: 手机相册选取二维码
+     * - 1014: 小程序模板消息
+     * - 1017: 前往体验版的入口页
+     * - 1019: 微信钱包
+     * - 1020: 公众号 profile 页相关小程序列表
+     * - 1022: 聊天顶部置顶小程序入口
+     * - 1023: 安卓系统桌面图标
+     * - 1024: 小程序 profile 页
+     * - 1025: 扫描一维码
+     * - 1026: 附近小程序列表
+     * - 1027: 顶部搜索框搜索结果页「使用过的小程序」列表
+     * - 1028: 我的卡包
+     * - 1029: 卡券详情页
+     * - 1030: 自动化测试下打开小程序
+     * - 1031: 长按图片识别一维码
+     * - 1032: 手机相册选取一维码
+     * - 1034: 微信支付完成页
+     * - 1035: 公众号自定义菜单
+     * - 1036: App 分享消息卡片
+     * - 1037: 小程序打开小程序
+     * - 1038: 从另一个小程序返回
+     * - 1039: 摇电视
+     * - 1042: 添加好友搜索框的搜索结果页
+     * - 1043: 公众号模板消息
+     * - 1044: 带 shareTicket 的小程序消息卡片
+     * - 1045: 朋友圈广告
+     * - 1046: 朋友圈广告详情页
+     * - 1047: 扫描小程序码
+     * - 1048: 长按图片识别小程序码
+     * - 1049: 手机相册选取小程序码
+     * - 1052: 卡券的适用门店列表
+     * - 1053: 搜一搜的结果页
+     * - 1054: 顶部搜索框小程序快捷入口
+     * - 1056: 音乐播放器菜单
+     * - 1057: 钱包中的银行卡详情页
+     * - 1058: 公众号文章
+     * - 1059: 体验版小程序绑定邀请页
+     * - 1064: 微信连Wi-Fi状态栏
+     * - 1067: 公众号文章广告
+     * - 1068: 附近小程序列表广告
+     * - 1069: 移动应用
+     * - 1071: 钱包中的银行卡列表页
+     * - 1072: 二维码收款页面
+     * - 1073: 客服消息列表下发的小程序消息卡片
+     * - 1074: 公众号会话下发的小程序消息卡片
+     * - 1077: 摇周边
+     * - 1078: 连Wi-Fi成功页
+     * - 1079: 微信游戏中心
+     * - 1081: 客服消息下发的文字链
+     * - 1082: 公众号会话下发的文字链
+     * - 1084: 朋友圈广告原生页
+     * - 1089: 微信聊天主界面下拉,「最近使用」栏(基础库2.2.4版本起包含「我的小程序」栏)
+     * - 1090: 长按小程序右上角菜单唤出最近使用历史
+     * - 1091: 公众号文章商品卡片
+     * - 1092: 城市服务入口
+     * - 1095: 小程序广告组件
+     * - 1096: 聊天记录
+     * - 1097: 微信支付签约页
+     * - 1099: 页面内嵌插件
+     * - 1102: 公众号 profile 页服务预览
+     * - 1103: 发现栏小程序主入口,「我的小程序」列表(基础库2.2.4版本起废弃)
+     * - 1104: 微信聊天主界面下拉,「我的小程序」栏(基础库2.2.4版本起废弃)
+     */
+    scene: number;
+    /**
+     * 打开小程序的场景值
+     */
+    shareTicket: string;
+    /**
+     * 当场景为由从另一个小程序或公众号或App打开时,返回此字段
+     */
+    referrerInfo?: ReferrerInfo;
+  }
+
+  interface PageNotFoundOption {
+    /**
+     * 不存在页面的路径
+     */
+    path: string;
+    /**
+     * 打开不存在页面的 query
+     */
+    // @ts-ignore
+    query: AnyObject;
+    /**
+     * 是否本次启动的首个页面(例如从分享等入口进来,首个页面是开发者配置的分享页面)
+     */
+    isEntryPage: boolean;
+  }
+  // @ts-ignore
+  interface AppInstance<T extends AnyObject = {}> {
+    /**
+     * 全局对象
+     */
+    // @ts-ignore
+    globalData?: AnyObject;
+    /**
+     * 生命周期回调 监听应用初始化
+     *
+     * 应用初始化完成时触发,全局只触发一次。
+     */
+    onLaunch?(options?: LaunchShowOption): void;
+    /**
+     * 生命周期回调 监听应用显示
+     *
+     * 应用启动,或从后台进入前台显示时触发
+     */
+    onShow?(options?: LaunchShowOption): void;
+    /**
+     * 生命周期回调 监听应用隐藏
+     *
+     * 应用从前台进入后台时触发
+     */
+    onHide?(): void;
+    /**
+     * 错误监听函数
+     * 小程序发生脚本错误或 API 调用报错时触发
+     * @param error 错误信息,包含堆栈
+     */
+    onError?(error: string): void;
+    /**
+     * 页面不存在监听函数
+     *
+     * 应用要打开的页面不存在时触发,会带上页面信息回调该函数
+     *
+     * **注意:**
+     * 1. 如果开发者没有添加 `onPageNotFound` 监听,当跳转页面不存在时,将推入微信客户端原生的页面不存在提示页面。
+     * 2. 如果 `onPageNotFound` 回调中又重定向到另一个不存在的页面,将推入微信客户端原生的页面不存在提示页面,并且不再回调 `onPageNotFound`。
+     */
+    onPageNotFound?(options: PageNotFoundOption): void;
+    /**
+     * 未处理的 Promise 拒绝事件监听函数
+     */
+    // @ts-ignore
+    onUnhandledRejection?(options: UniApp.OnUnhandledRejectionCallbackResult): void;
+    /**
+     * 监听系统主题变化
+     */
+    // @ts-ignore
+    onThemeChange?(options: UniApp.OnThemeChangeCallbackResult): void;
+    /**
+     * 监听 nvue 页面消息
+     *
+     * nvue 页面使用 `uni.postMessage` 发送消息时触发
+     */
+    // @ts-ignore
+    onUniNViewMessage?(options: AnyObject): void;
+  }
+  // @ts-ignore
+  type AppConstructor = <T extends AnyObject & AppInstance>(
+    options: AppInstance<T> & T,
+  ) => void;
+
+  interface GetAppOption {
+    /**
+     * 在 `App` 未定义时返回默认实现。当App被调用时,默认实现中定义的属性会被覆盖合并到App中。一般用于独立分包
+     */
+    allowDefault: boolean;
+  }
+  // @ts-ignore
+  type GetApp = <T extends AnyObject>(opts?: GetAppOption) => AppInstance<T> & T;
+}
+
+declare const getApp: App.GetApp;
+
+declare const createApp: any;
+declare const createPage: any;
+declare const createComponent: any;

+ 34 - 0
mini/types-tips-test/uni-app/bytedance.d.ts

xqd
@@ -0,0 +1,34 @@
+declare namespace UniApp {
+    interface tt {
+      /**
+       * 登录
+       *
+       * 文档: [https://microapp.bytedance.com/docs/zh-CN/mini-app/develop/api/open-interface/pay/tt-pay)
+       */
+      pay(options: PayOptions): void;
+    }
+}
+
+interface PayOptions {
+  orderInfo: object,
+  service: number,
+  /**
+   * 接口调用成功的回调函数
+   */
+  success?: (result: any) => void;
+  /**
+   * 接口调用失败的回调函数
+   */
+  fail?: (result: any) => void;
+  /**
+   * 接口调用结束的回调函数(调用成功、失败都会执行)
+   */
+  complete?: (result: any) => void;
+}
+
+/**
+ * Uni 实例变量
+ *
+ * 文档: [http://uniapp.dcloud.io/api](http://uniapp.dcloud.io/api)
+ */
+declare let tt: UniApp.tt;

+ 2988 - 0
mini/types-tips-test/uni-app/cloud.d.ts

xqd
@@ -0,0 +1,2988 @@
+declare namespace UniCloud {
+    interface Database {
+        /**
+         * 数据库地理位置结构集
+         */
+        Geo: GeoType;
+        /**
+         * 数据库操作符
+         */
+        command: QueryCommand;
+        /**
+         * 正则表达式查询
+         */
+        RegExp: any;
+        /**
+         * 创建一个服务端当前时间的标记
+         */
+        serverDate: any;
+        config: any;
+        /**
+         * 数据库集合引用
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=collection](http://uniapp.dcloud.io/uniCloud/cf-database?id=collection)
+         */
+        collection(collName: string): CollectionReference;
+        /**
+         * 指定数据库操作需要执行的action
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/jql?id=action](http://uniapp.dcloud.io/uniCloud/jql?id=action)
+         */
+        action(actionName: string): Database;
+        /**
+         * 获取云端环境变量
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/jql?id=variable](http://uniapp.dcloud.io/uniCloud/jql?id=variable)
+         */
+        getCloudEnv(envStr: '$cloudEnv_uid' | '$cloudEnv_now' | '$cloudEnv_clientIP'): any;
+        /**
+         * 同时执行多次数据库查询操作
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/jql?id=multi-send](http://uniapp.dcloud.io/uniCloud/jql?id=multi-send)
+         */
+        multiSend(tempQuery1: GetTempQuery, tempQuery2?: GetTempQuery, tempQuery3?: GetTempQuery, tempQuery4?: GetTempQuery, tempQuery5?: GetTempQuery, tempQuery6?: GetTempQuery, tempQuery7?: GetTempQuery, tempQuery8?: GetTempQuery): Promise<any>;
+    }
+
+    interface GetTempQuery {
+    }
+
+    interface QueryCommand {
+        operator: QUERY_COMMANDS_LITERAL;
+        /**
+         * 聚合操作符
+         */
+        aggregate: AggregateCommand;
+        _setFieldName(fieldName: string): QueryCommand;
+        /**
+         * 用于设定字段等于指定值。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=set](http://uniapp.dcloud.io/uniCloud/cf-database?id=set)
+         */
+        set(): void;
+        /**
+         * 用于指示字段自增某个值。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=inc](http://uniapp.dcloud.io/uniCloud/cf-database?id=inc)
+         */
+        inc(): void;
+        /**
+         * 用于指示字段自乘某个值。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=mul](http://uniapp.dcloud.io/uniCloud/cf-database?id=mul)
+         */
+        mul(): void;
+        /**
+         * 向数组尾部追加元素,支持传入单个元素或数组
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=push](http://uniapp.dcloud.io/uniCloud/cf-database?id=push)
+         */
+        push(): void;
+        /**
+         * 删除数组尾部元素
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=pop](http://uniapp.dcloud.io/uniCloud/cf-database?id=pop)
+         */
+        pop(): void;
+        /**
+         * 向数组头部添加元素,支持传入单个元素或数组
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=unshift](http://uniapp.dcloud.io/uniCloud/cf-database?id=unshift)
+         */
+        unshift(): void;
+        /**
+         * 删除数组头部元素
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=set](http://uniapp.dcloud.io/uniCloud/cf-database?id=set)
+         */
+        shift(): void;
+        /**
+         * 查询筛选条件,表示字段等于某个值。eq 指令接受一个字面量 (literal),可以是 number, boolean, string, object, array, Date
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=eq](http://uniapp.dcloud.io/uniCloud/cf-database?id=eq)
+         */
+        eq(val: any): LogicCommand;
+        /**
+         * 查询筛选条件,表示字段不等于某个值。eq 指令接受一个字面量 (literal),可以是 number, boolean, string, object, array, Date。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=neq](http://uniapp.dcloud.io/uniCloud/cf-database?id=neq)
+         */
+        neq(val: any): LogicCommand;
+        /**
+         * 查询筛选操作符,表示需大于指定值。可以传入 Date 对象用于进行日期比较。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=gt](http://uniapp.dcloud.io/uniCloud/cf-database?id=gt)
+         */
+        gt(val: any): LogicCommand;
+        /**
+         * 查询筛选操作符,表示需大于或等于指定值。可以传入 Date 对象用于进行日期比较。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=gte](http://uniapp.dcloud.io/uniCloud/cf-database?id=gte)
+         */
+        gte(val: any): LogicCommand;
+        /**
+         * 查询筛选操作符,表示需小于指定值。可以传入 Date 对象用于进行日期比较。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=lt](http://uniapp.dcloud.io/uniCloud/cf-database?id=lt)
+         */
+        lt(val: any): LogicCommand;
+        /**
+         * 查询筛选操作符,表示需小于或等于指定值。可以传入 Date 对象用于进行日期比较。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=lte](http://uniapp.dcloud.io/uniCloud/cf-database?id=lte)
+         */
+        lte(val: any): LogicCommand;
+        /**
+         * 查询筛选操作符,表示要求值在给定的数组内。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=in](http://uniapp.dcloud.io/uniCloud/cf-database?id=in)
+         */
+        in(list: any): LogicCommand;
+        /**
+         * 查询筛选操作符,表示要求值不在给定的数组内。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=nin](http://uniapp.dcloud.io/uniCloud/cf-database?id=nin)
+         */
+        nin(list: any): LogicCommand;
+        /**
+         * 查询操作符,用于表示逻辑 "或" 的关系,表示需同时满足多个查询筛选条件。或指令有两种用法,一是可以进行字段值的 “或” 操作,二是也可以进行跨字段的 “或” 操作。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=or-1](http://uniapp.dcloud.io/uniCloud/cf-database?id=or-1)
+         */
+        or(val: any): LogicCommand;
+        /**
+         * 查询操作符,用于表示逻辑 "与" 的关系,表示需同时满足多个查询筛选条件。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=and-1](http://uniapp.dcloud.io/uniCloud/cf-database?id=and-1)
+         */
+        and(val: any): LogicCommand;
+        /**
+         * 按从近到远的顺序,找出字段值在给定点的附近的记录。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=geonear](http://uniapp.dcloud.io/uniCloud/cf-database?id=geonear)
+         */
+        geoNear(val: IGeoNearOptions): LogicCommand;
+        /**
+         * 找出字段值在指定区域内的记录,无排序。指定的区域必须是多边形(Polygon)或多边形集合(MultiPolygon)。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=geowithin](http://uniapp.dcloud.io/uniCloud/cf-database?id=geowithin)
+         */
+        geoWithin(val: IGeoWithinOptions): LogicCommand;
+        /**
+         * 找出给定的地理位置图形相交的记录
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=geointersects](http://uniapp.dcloud.io/uniCloud/cf-database?id=geointersects)
+         */
+        geoIntersects(val: IGeoIntersectsOptions): LogicCommand;
+    }
+
+    interface AggregateCommand {
+        /**
+         * 返回一个数字的绝对值。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=abs](http://uniapp.dcloud.io/uniCloud/cf-database?id=abs)
+         */
+        abs(absOptions: number | string): number;
+        /**
+         * 将数字相加或将数字加在日期上。如果数组中的其中一个值是日期,那么其他值将被视为毫秒数加在该日期上。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=add](http://uniapp.dcloud.io/uniCloud/cf-database?id=add)
+         */
+        add(addOptions: any []): number;
+        /**
+         * 向上取整,返回大于或等于给定数字的最小整数。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=ceil](http://uniapp.dcloud.io/uniCloud/cf-database?id=ceil)
+         */
+        ceil(ceilOptions: number | string): number;
+        /**
+         * 传入被除数和除数,求商。参数形式为:[被除数,除数]
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=divide](http://uniapp.dcloud.io/uniCloud/cf-database?id=divide)
+         */
+        divide(divideOptions: any []): number;
+        /**
+         * 取 e(自然对数的底数,欧拉数) 的 n 次方
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=exp](http://uniapp.dcloud.io/uniCloud/cf-database?id=exp)
+         */
+        exp(expOptions: number | string): number;
+        /**
+         * 向下取整,返回大于或等于给定数字的最小整数。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=floor](http://uniapp.dcloud.io/uniCloud/cf-database?id=floor)
+         */
+        floor(floorOptions: number | string): number;
+        /**
+         * 计算给定数字在自然对数值。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=ln](http://uniapp.dcloud.io/uniCloud/cf-database?id=ln)
+         */
+        ln(lnOptions: number | string): number;
+        /**
+         * 计算给定数字在给定对数底下的 log 值。参数形式为:[真数,底数]
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=log](http://uniapp.dcloud.io/uniCloud/cf-database?id=log)
+         */
+        log(logOptions: any []): number;
+        /**
+         * 计算给定数字在对数底为 10 下的 log 值。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=log10](http://uniapp.dcloud.io/uniCloud/cf-database?id=log10)
+         */
+        log10(log10Options: number | string): number;
+        /**
+         * 取模运算,取数字取模后的值。参数形式为:[被除数,除数]
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=mod](http://uniapp.dcloud.io/uniCloud/cf-database?id=mod)
+         */
+        mod(modOptions: any []): number;
+        /**
+         * 取传入的数字参数相乘的结果。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=multiply](http://uniapp.dcloud.io/uniCloud/cf-database?id=multiply)
+         */
+        multiply(multiplyOptions: any []): number;
+        /**
+         * 求给定基数的指数次幂。参数形式为:[底数,指数]
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=pow](http://uniapp.dcloud.io/uniCloud/cf-database?id=pow)
+         */
+        pow(powOptions: any []): number;
+        /**
+         * 求平方根。参数形式为:[被开方数]
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=sqrt](http://uniapp.dcloud.io/uniCloud/cf-database?id=sqrt)
+         */
+        sqrt(sqrtOptions: any []): number;
+        /**
+         * 将两个数字相减然后返回差值,或将两个日期相减然后返回相差的毫秒数,或将一个日期减去一个数字返回结果的日期。参数形式为:[被减数,减数]
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=subtract](http://uniapp.dcloud.io/uniCloud/cf-database?id=subtract)
+         */
+        subtract(subtractOptions: any []): number;
+        /**
+         * 将数字截断为整形。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=trunc](http://uniapp.dcloud.io/uniCloud/cf-database?id=trunc)
+         */
+        trunc(truncOptions: number | string): number;
+        /**
+         * 返回在指定数组下标的元素。参数形式为:[数组,下标]
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=arrayelemat](http://uniapp.dcloud.io/uniCloud/cf-database?id=arrayelemat)
+         */
+        arrayElemAt(arrayElemAtOptions: any []): any;
+        /**
+         * 将一个数组转换为对象。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=arraytoobject](http://uniapp.dcloud.io/uniCloud/cf-database?id=arraytoobject)
+         */
+        arrayToObject(arrayToObjectOptions: any [] | string): any;
+        /**
+         * 将多个数组拼接成一个数组。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=concatarrays](http://uniapp.dcloud.io/uniCloud/cf-database?id=concatarrays)
+         */
+        concatArrays(concatArraysOptions: any []): any [];
+        /**
+         * 根据给定条件返回满足条件的数组的子集。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=filter](http://uniapp.dcloud.io/uniCloud/cf-database?id=filter)
+         */
+        filter(filterOptions: FilterOptions): any [];
+        /**
+         * 给定一个值和一个数组,如果值在数组中则返回 true,否则返回 false。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=in](http://uniapp.dcloud.io/uniCloud/cf-database?id=in)
+         */
+        in(inOptions: number | string): number;
+        /**
+         * 在数组中找出等于给定值的第一个元素的下标,如果找不到则返回 -1。参数形式为:[数组,查找值,起始索引,结束索引],起始索引、结束索引为可选值。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=indexofarray](http://uniapp.dcloud.io/uniCloud/cf-database?id=indexofarray)
+         */
+        indexOfArray(indexOfArrayOptions: any []): number;
+        /**
+         * 判断给定表达式是否是数组,返回布尔值。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=isarray](http://uniapp.dcloud.io/uniCloud/cf-database?id=isarray)
+         */
+        isArray(isArrayOptions: any []): boolean;
+        /**
+         * 类似 JavaScript Array 上的 map 方法,将给定数组的每个元素按给定转换方法转换后得出新的数组。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=map](http://uniapp.dcloud.io/uniCloud/cf-database?id=map)
+         */
+        map(mapOptions: MapOptions): any [];
+        /**
+         * 将一个对象转换为数组。方法把对象的每个键值对都变成输出数组的一个元素,元素形如 { k: <key>, v: <value> }。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=objecttoarray](http://uniapp.dcloud.io/uniCloud/cf-database?id=objecttoarray)
+         */
+        objectToArray(objectToArrayOptions: any): any [];
+        /**
+         * 返回一组生成的序列数字。给定开始值、结束值、非零的步长,range 会返回从开始值开始逐步增长、步长为给定步长、但不包括结束值的序列。参数形式为:[起始值,结束值,步长]
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=range](http://uniapp.dcloud.io/uniCloud/cf-database?id=range)
+         */
+        range(rangeOptions: any []): any [];
+        /**
+         * 类似 JavaScript 的 reduce 方法,应用一个表达式于数组各个元素然后归一成一个元素。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=reduce](http://uniapp.dcloud.io/uniCloud/cf-database?id=reduce)
+         */
+        reduce(reduceOptions: ReduceOptions): any;
+        /**
+         * 返回给定数组的倒序形式。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=reversearray](http://uniapp.dcloud.io/uniCloud/cf-database?id=reversearray)
+         */
+        reverseArray(reverseArrayOptions: any [] | string): any [];
+        /**
+         * 返回数组长度。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=size](http://uniapp.dcloud.io/uniCloud/cf-database?id=size)
+         */
+        size(sizeOptions: any [] | string): number;
+        /**
+         * 类似 JavaScritp 的 slice 方法。返回给定数组的指定子集。参数形式:[数组,下标]
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=slice](http://uniapp.dcloud.io/uniCloud/cf-database?id=slice)
+         */
+        slice(sliceOptions: any []): any [];
+        /**
+         * 把二维数组的第二维数组中的相同序号的元素分别拼装成一个新的数组进而组装成一个新的二维数组。如可将 [ [ 1, 2, 3 ], [ "a", "b",
+         *                     "c"
+         *                     ] ] 转换成 [ [ 1, "a" ], [ 2, "b" ], [ 3, "c" ] ]。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=zip](http://uniapp.dcloud.io/uniCloud/cf-database?id=zip)
+         */
+        zip(zipOptions: ZipOptions): any [];
+        /**
+         * 给定多个表达式,and 仅在所有表达式都返回 true 时返回 true,否则返回 false 。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=and](http://uniapp.dcloud.io/uniCloud/cf-database?id=and)
+         */
+        and(andOptions: any []): boolean;
+        /**
+         * 给定一个表达式,如果表达式返回 true,则 not 返回 false,否则返回 true。注意表达式不能为逻辑表达式(and、or、nor、not)。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=not](http://uniapp.dcloud.io/uniCloud/cf-database?id=not)
+         */
+        not(notOptions: string): boolean;
+        /**
+         * 给定多个表达式,如果任意一个表达式返回 true,则 or 返回 true,否则返回 false。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=or](http://uniapp.dcloud.io/uniCloud/cf-database?id=or)
+         */
+        or(orOptions: any []): boolean;
+        /**
+         * 给定两个值,返回其比较值。如果第一个值小于第二个值,返回 -1 。如果第一个值大于第二个值,返回 1 。 如果两个值相等,返回 0 。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=cmp](http://uniapp.dcloud.io/uniCloud/cf-database?id=cmp)
+         */
+        cmp(cmpOptions: any []): number;
+        /**
+         * 匹配两个值,如果相等则返回 true,否则返回 false。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=eq](http://uniapp.dcloud.io/uniCloud/cf-database?id=eq)
+         */
+        eq(eqOptions: any []): boolean;
+        /**
+         * 匹配两个值,如果前者大于后者则返回 true,否则返回 false。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=gt](http://uniapp.dcloud.io/uniCloud/cf-database?id=gt)
+         */
+        gt(gtOptions: any []): boolean;
+        /**
+         * 匹配两个值,如果前者大于或等于后者则返回 true,否则返回 false。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=gte](http://uniapp.dcloud.io/uniCloud/cf-database?id=gte)
+         */
+        gte(gteOptions: any []): boolean;
+        /**
+         * 匹配两个值,如果前者小于后者则返回 true,否则返回 false。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=lt](http://uniapp.dcloud.io/uniCloud/cf-database?id=lt)
+         */
+        lt(ltOptions: any []): boolean;
+        /**
+         * 匹配两个值,如果前者小于或等于后者则返回 true,否则返回 false。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=lte](http://uniapp.dcloud.io/uniCloud/cf-database?id=lte)
+         */
+        lte(lteOptions: any []): boolean;
+        /**
+         * 匹配两个值,如果不相等则返回 true,否则返回 false。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=neq](http://uniapp.dcloud.io/uniCloud/cf-database?id=neq)
+         */
+        neq(neqOptions: any []): boolean;
+        /**
+         * 计算布尔表达式,返回指定的两个值其中之一。参数形式为:[布尔表达式,真值,假值],效果类似于 javascript 里的 condition?a:b
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=cond](http://uniapp.dcloud.io/uniCloud/cf-database?id=cond)
+         */
+        cond(condOptions: any []): any;
+        /**
+         * 计算给定的表达式,如果表达式结果为 null、undefined 或者不存在,那么返回一个替代值;否则返回原值。参数形式为:[表达式,替代值]
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=ifnull](http://uniapp.dcloud.io/uniCloud/cf-database?id=ifnull)
+         */
+        ifNull(ifNullOptions: any []): any;
+        /**
+         * 根据给定的 switch-case-default 计算返回值。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=switch](http://uniapp.dcloud.io/uniCloud/cf-database?id=switch)
+         */
+        switch(switchOptions: SwitchOptions): boolean;
+        /**
+         * 给定日期的相关信息,构建并返回一个日期对象。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=datefromparts](http://uniapp.dcloud.io/uniCloud/cf-database?id=datefromparts)
+         */
+        dateFromParts(dateFromPartsOptions: DateFromPartsOptions): DBDate;
+        /**
+         * 将一个日期/时间字符串转换为日期对象。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=datefromstring](http://uniapp.dcloud.io/uniCloud/cf-database?id=datefromstring)
+         */
+        dateFromString(dateFromStringOptions: DateFromStringOptions): DBDate;
+        /**
+         * 根据指定的表达式将日期对象格式化为符合要求的字符串。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=datetostring](http://uniapp.dcloud.io/uniCloud/cf-database?id=datetostring)
+         */
+        dateToString(dateToStringOptions: DateToStringOptions): string;
+        /**
+         * 返回日期字段对应的天数(一个月中的哪一天),是一个介于 1 至 31 之间的数字。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=dayofmonth](http://uniapp.dcloud.io/uniCloud/cf-database?id=dayofmonth)
+         */
+        dayOfMonth(dayOfMonthOptions: string): number;
+        /**
+         * 返回日期字段对应的天数(一周中的第几天),是一个介于 1(周日)到 7(周六)之间的整数。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=dayofweek](http://uniapp.dcloud.io/uniCloud/cf-database?id=dayofweek)
+         */
+        dayOfWeek(dayOfWeekOptions: string): number;
+        /**
+         * 返回日期字段对应的天数(一年中的第几天),是一个介于 1 到 366 之间的整数。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=dayofyear](http://uniapp.dcloud.io/uniCloud/cf-database?id=dayofyear)
+         */
+        dayOfYear(dayOfYearOptions: string): number;
+        /**
+         * 返回日期字段对应的小时数,是一个介于 0 到 23 之间的整数。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=hour](http://uniapp.dcloud.io/uniCloud/cf-database?id=hour)
+         */
+        hour(hourOptions: string): number;
+        /**
+         * 返回日期字段对应的 ISO 8601 标准的天数(一周中的第几天),是一个介于 1(周一)到 7(周日)之间的整数。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=isodayofweek](http://uniapp.dcloud.io/uniCloud/cf-database?id=isodayofweek)
+         */
+        isoDayOfWeek(isoDayOfWeekOptions: string): number;
+        /**
+         * 返回日期字段对应的 ISO 8601 标准的周数(一年中的第几周),是一个介于 1 到 53 之间的整数。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=isoweek](http://uniapp.dcloud.io/uniCloud/cf-database?id=isoweek)
+         */
+        isoWeek(isoWeekOptions: string): void;
+        /**
+         * 返回日期字段对应的 ISO 8601 标准的天数(一年中的第几天)。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=isoweekyear](http://uniapp.dcloud.io/uniCloud/cf-database?id=isoweekyear)
+         */
+        isoWeekYear(isoWeekYearOptions: string): number;
+        /**
+         * 返回日期字段对应的毫秒数,是一个介于 0 到 999 之间的整数。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=millisecond](http://uniapp.dcloud.io/uniCloud/cf-database?id=millisecond)
+         */
+        millisecond(millisecondOptions: string): number;
+        /**
+         * 返回日期字段对应的分钟数,是一个介于 0 到 59 之间的整数。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=minute](http://uniapp.dcloud.io/uniCloud/cf-database?id=minute)
+         */
+        minute(minuteOptions: string): number;
+        /**
+         * 返回日期字段对应的月份,是一个介于 1 到 12 之间的整数。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=month](http://uniapp.dcloud.io/uniCloud/cf-database?id=month)
+         */
+        month(monthOptions: string): number;
+        /**
+         * 返回日期字段对应的秒数,是一个介于 0 到 59 之间的整数,在特殊情况下(闰秒)可能等于 60。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=second](http://uniapp.dcloud.io/uniCloud/cf-database?id=second)
+         */
+        second(secondOptions: string): number;
+        /**
+         * 返回日期字段对应的周数(一年中的第几周),是一个介于 0 到 53 之间的整数。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=week](http://uniapp.dcloud.io/uniCloud/cf-database?id=week)
+         */
+        week(weekOptions: string): number;
+        /**
+         * 返回日期字段对应的年份。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=year](http://uniapp.dcloud.io/uniCloud/cf-database?id=year)
+         */
+        year(yearOptions: string): number;
+        /**
+         * 直接返回一个值的字面量,不经过任何解析和处理。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=literal](http://uniapp.dcloud.io/uniCloud/cf-database?id=literal)
+         */
+        literal(literalOptions: string): string;
+        /**
+         * 将一个对象转换为数组。方法把对象的每个键值对都变成输出数组的一个元素,元素形如 { k: <key>, v: <value> }。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=objecttoarray](http://uniapp.dcloud.io/uniCloud/cf-database?id=objecttoarray)
+         */
+        objectToArray(objectToArrayOptions: any): any [];
+        /**
+         * 输入一个数组,或者数组字段的表达式。如果数组中所有元素均为真值,那么返回 true,否则返回 false。空数组永远返回 true。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=allelementstrue](http://uniapp.dcloud.io/uniCloud/cf-database?id=allelementstrue)
+         */
+        allElementsTrue(allElementsTrueOptions: any []): boolean;
+        /**
+         * 输入一个数组,或者数组字段的表达式。如果数组中任意一个元素为真值,那么返回 true,否则返回 false。空数组永远返回 false。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=anyelementtrue](http://uniapp.dcloud.io/uniCloud/cf-database?id=anyelementtrue)
+         */
+        anyElementTrue(anyElementTrueOptions: any []): boolean;
+        /**
+         * 输入两个集合,输出只存在于第一个集合中的元素。。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=setdifference](http://uniapp.dcloud.io/uniCloud/cf-database?id=setdifference)
+         */
+        setDifference(setDifferenceOptions: any []): any;
+        /**
+         * 输入两个集合,判断两个集合中包含的元素是否相同(不考虑顺序、去重)。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=setequals](http://uniapp.dcloud.io/uniCloud/cf-database?id=setequals)
+         */
+        setEquals(setEqualsOptions: any []): boolean;
+        /**
+         * 输入两个集合,判断两个集合中包含的元素是否相同(不考虑顺序、去重)。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=setintersection](http://uniapp.dcloud.io/uniCloud/cf-database?id=setintersection)
+         */
+        setIntersection(setIntersectionOptions: any []): any;
+        /**
+         * 输入两个集合,判断第一个集合是否是第二个集合的子集。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=setissubset](http://uniapp.dcloud.io/uniCloud/cf-database?id=setissubset)
+         */
+        setIsSubset(setIsSubsetOptions: any []): any;
+        /**
+         * 输入两个集合,输出两个集合的并集。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=setunion](http://uniapp.dcloud.io/uniCloud/cf-database?id=setunion)
+         */
+        setUnion(setUnionOptions: any []): any;
+        /**
+         * 连接字符串,返回拼接后的字符串。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=concat](http://uniapp.dcloud.io/uniCloud/cf-database?id=concat)
+         */
+        concat(concatOptions: any []): string;
+        /**
+         * 在目标字符串中查找子字符串,并返回第一次出现的 UTF-8 的字节索引(从0开始)。如果不存在子字符串,返回 -1。参数形式为:[目标字符串表达式, 子字符串表达式, 开始位置,
+         *                     结束位置]
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=indexofbytes](http://uniapp.dcloud.io/uniCloud/cf-database?id=indexofbytes)
+         */
+        indexOfBytes(indexOfBytesOptions: any []): number;
+        /**
+         * 在目标字符串中查找子字符串,并返回第一次出现的 UTF-8 的 code point 索引(从0开始)。如果不存在子字符串,返回 -1。参数形式为:[目标字符串表达式,
+         *                     子字符串表达式, 开始位置,
+         *                     结束位置]
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=indexofcp](http://uniapp.dcloud.io/uniCloud/cf-database?id=indexofcp)
+         */
+        indexOfCP(indexOfCPOptions: any []): number;
+        /**
+         * 按照分隔符分隔字符串,并且删除分隔符,返回子字符串组成的数组。如果字符串无法找到分隔符进行分隔,返回原字符串作为数组的唯一元素。参数形式为:[字符串,分隔符]
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=split](http://uniapp.dcloud.io/uniCloud/cf-database?id=split)
+         */
+        split(splitOptions: string): any [];
+        /**
+         * 计算并返回指定字符串中 utf-8 编码的字节数量。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=strlenbytes](http://uniapp.dcloud.io/uniCloud/cf-database?id=strlenbytes)
+         */
+        strLenBytes(strLenBytesOptions: string): number;
+        /**
+         * 计算并返回指定字符串的UTF-8 code points 数量。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=strlencp](http://uniapp.dcloud.io/uniCloud/cf-database?id=strlencp)
+         */
+        strLenCP(strLenCPOptions: string): number;
+        /**
+         * 对两个字符串在不区分大小写的情况下进行大小比较,并返回比较的结果。如果第一个值小于第二个值,返回 -1 。如果第一个值大于第二个值,返回 1 。 如果两个值相等,返回 0 。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=strcasecmp](http://uniapp.dcloud.io/uniCloud/cf-database?id=strcasecmp)
+         */
+        strcasecmp(strcasecmpOptions: any []): number;
+        /**
+         * 返回字符串从指定位置开始的指定长度的子字符串。它是 db.command.aggregate.substrBytes
+         *                     的别名,更推荐使用后者。参数形式为:[字符串,起始位置,结束位置]
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=substr](http://uniapp.dcloud.io/uniCloud/cf-database?id=substr)
+         */
+        substr(substrOptions: any []): string;
+        /**
+         * 返回字符串从指定位置开始的指定长度的子字符串。子字符串是由字符串中指定的 UTF-8 字节索引的字符开始,长度为指定的字节数。参数形式为:[字符串,起始位置,结束位置]
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=substrbytes](http://uniapp.dcloud.io/uniCloud/cf-database?id=substrbytes)
+         */
+        substrBytes(substrBytesOptions: any []): string;
+        /**
+         * 返回字符串从指定位置开始的指定长度的子字符串。子字符串是由字符串中指定的 UTF-8 字节索引的字符开始,长度为指定的字节数。参数形式为:[字符串,起始位置,结束位置]
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=substrcp](http://uniapp.dcloud.io/uniCloud/cf-database?id=substrcp)
+         */
+        substrCP(substrCPOptions: any []): string;
+        /**
+         * 将字符串转化为小写并返回。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=tolower](http://uniapp.dcloud.io/uniCloud/cf-database?id=tolower)
+         */
+        toLower(toLowerOptions: string): string;
+        /**
+         * 将字符串转化为大写并返回。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=toupper](http://uniapp.dcloud.io/uniCloud/cf-database?id=toupper)
+         */
+        toUpper(toUpperOptions: string): string;
+        /**
+         * 向数组中添加值,如果数组中已存在该值,不执行任何操作。它只能在 group 阶段中使用。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=addtoset](http://uniapp.dcloud.io/uniCloud/cf-database?id=addtoset)
+         */
+        addToSet(addToSetOptions: string): void;
+        /**
+         * 返回一组集合中,指定字段对应数据的平均值。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=avg](http://uniapp.dcloud.io/uniCloud/cf-database?id=avg)
+         */
+        avg(avgOptions: string): void;
+        /**
+         * 返回指定字段在一组集合的第一条记录对应的值。仅当这组集合是按照某种定义排序( sort )后,此操作才有意义。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=first](http://uniapp.dcloud.io/uniCloud/cf-database?id=first)
+         */
+        first(firstOptions: string): void;
+        /**
+         * 返回指定字段在一组集合的最后一条记录对应的值。仅当这组集合是按照某种定义排序( sort )后,此操作才有意义。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=last](http://uniapp.dcloud.io/uniCloud/cf-database?id=last)
+         */
+        last(lastOptions: string): void;
+        /**
+         * 返回一组数值的最大值。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=max](http://uniapp.dcloud.io/uniCloud/cf-database?id=max)
+         */
+        max(maxOptions: string): void;
+        /**
+         * 返回一组数值的最小值。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=min](http://uniapp.dcloud.io/uniCloud/cf-database?id=min)
+         */
+        min(minOptions: string): void;
+        /**
+         * 将多个文档合并为单个文档
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=mergeobjects](http://uniapp.dcloud.io/uniCloud/cf-database?id=mergeobjects)
+         */
+        mergeObjects(mergeObjectsOptions: string | any []): void;
+        /**
+         * 在 group 阶段,返回一组中表达式指定列与对应的值,一起组成的数组。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=push-1](http://uniapp.dcloud.io/uniCloud/cf-database?id=push-1)
+         */
+        push(pushOptions: any): void;
+        /**
+         * 返回一组字段对应值的标准差。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=stddevpop](http://uniapp.dcloud.io/uniCloud/cf-database?id=stddevpop)
+         */
+        stdDevPop(stdDevPopOptions: string): void;
+        /**
+         * 计算输入值的样本标准偏差。如果输入值代表数据总体,或者不概括更多的数据,请改用 db.command.aggregate.stdDevPop 。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=stddevsamp](http://uniapp.dcloud.io/uniCloud/cf-database?id=stddevsamp)
+         */
+        stdDevSamp(stdDevSampOptions: string): void;
+        /**
+         * 计算并且返回一组字段所有数值的总和。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=sum](http://uniapp.dcloud.io/uniCloud/cf-database?id=sum)
+         */
+        sum(sumOptions: string): void;
+        /**
+         * 自定义变量,并且在指定表达式中使用,返回的结果是表达式的结果。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=let](http://uniapp.dcloud.io/uniCloud/cf-database?id=let)
+         */
+        let(letOptions: LetOptions): void;
+    }
+
+    interface DateToStringOptions {
+        /**
+         * 日期表达式
+         */
+        date: string;
+        /**
+         * 格式化表达式
+         */
+        format: string;
+        /**
+         * 时区表达式,指明运算结果的时区。它可以解析格式为 UTC Offset 或者 Olson Timezone Identifier 的字符串。
+         * - Asia/Shanghai:
+         */
+        timezone?: 'Asia/Shanghai';
+        /**
+         * 空值表达式,可选。当日期表达式返回空或者不存在的时候,会返回此表达式指明的值。
+         */
+        onNull?: string;
+    }
+
+    interface DateFromStringOptions {
+        /**
+         * 日期字符串
+         */
+        dateString: string;
+        /**
+         * 时区,Olson Timezone Identifier
+         * - Asia/Shanghai:
+         */
+        timezone?: 'Asia/Shanghai';
+    }
+
+    interface DateFromPartsOptions {
+        /**
+         * 年份
+         */
+        year?: number;
+        /**
+         * 月份
+         */
+        month?: number;
+        /**
+         * 日期
+         */
+        day?: number;
+        /**
+         * 小时
+         */
+        hour?: number;
+        /**
+         * 分钟
+         */
+        minute?: number;
+        /**
+         * 秒
+         */
+        second?: number;
+        /**
+         * 毫秒
+         */
+        millisecond?: number;
+        /**
+         * 时区,Olson Timezone Identifier
+         * - Asia/Shanghai:
+         */
+        timezone?: 'Asia/Shanghai';
+        /**
+         * ISO标准年份
+         */
+        isoWeekYear?: number;
+        /**
+         * ISO标准一年中的第几周
+         */
+        isoWeek?: number;
+        /**
+         * ISO标准一周中的第几天(周一:0-周日:7)
+         */
+        isoDayOfWeek?: number;
+    }
+
+    interface DBDate {
+    }
+
+    interface LetOptions {
+        /**
+         * 定义多个变量,变量的值由 变量表达式 计算而来,并且被定义的变量只有在 in 中的 结果表达式 才可以访问。
+         */
+        vars: any;
+        /**
+         * 结果表达式中访问自定义变量时候,请在变量名前加上双美元符号( $$ )并用引号括起来,如:'$$price'
+         */
+        in: any;
+    }
+
+    interface SwitchOptions {
+        /**
+         * switch操作的分支部分
+         */
+        branches: BranchedOptions [];
+        /**
+         * switch的默认操作
+         */
+        default: any;
+    }
+
+    interface BranchedOptions {
+        /**
+         * 判断条件
+         */
+        case: any;
+        /**
+         * 条件为真时执行的操作
+         */
+        then: any;
+    }
+
+    interface ZipOptions {
+        /**
+         * 一个二维数组(inputs 不可以是字段引用),其中每个元素的表达式(这个可以是字段引用)都可以解析为数组。如果其中任意一个表达式返回 null,inputs 也返回
+         *                     null。如果其中任意一个表达式不是指向一个合法的字段 / 解析为数组 / 解析为 null,则返回错误。
+         */
+        inputs: any;
+        /**
+         * 决定输出数组的长度是否采用输入数组中的最长数组的长度。默认为 false,即输入数组中的最短的数组的长度即是输出数组的各个元素的长度。
+         */
+        useLongestLength: any;
+        /**
+         * 一个数组,用于指定在输入数组长度不一的情况下时采用的数组各元素默认值。指定这个字段则必须指定 useLongestLength,否则返回错误。如果 useLongestLength
+         *                     是 true 但是
+         *                     defaults 是空或没有指定,则 zip 用 null 做数组元素的缺省默认值。指定各元素默认值时 defaults 数组的长度必须是输入数组最大的长度。
+         */
+        defaults: any;
+    }
+
+    interface ReduceOptions {
+        /**
+         * 输入数组,可以是任意解析为数组的表达式
+         */
+        input: string | any [];
+        /**
+         * 初始值
+         */
+        initialValue: string;
+        /**
+         * 用来作用于每个元素的表达式,在 in 中有两个可用变量,value 是表示累计值的变量,this 是表示当前数组元素的变量
+         */
+        in: any;
+    }
+
+    interface MapOptions {
+        /**
+         * 一个可以解析为数组的表达式
+         */
+        input: string;
+        /**
+         * 可选,用于表示数组各个元素的变量,默认为 this
+         */
+        as: string;
+        /**
+         * 一个可以应用在给定数组的各个元素上的表达式,各个元素的名字由 as 参数决定(参数名需加 $$ 前缀,如 $$this)
+         */
+        in: any;
+    }
+
+    interface FilterOptions {
+        /**
+         * 一个可以解析为数组的表达式
+         */
+        input: string;
+        /**
+         * 可选,用于表示数组各个元素的变量,默认为 this
+         */
+        as: string;
+        /**
+         * 一个可以解析为布尔值的表达式,用于判断各个元素是否满足条件,各个元素的名字由 as 参数决定(参数名需加 $$ 前缀,如 $$this)
+         */
+        cond: boolean;
+    }
+
+    interface IGeoNearOptions {
+        /**
+         * 地理位置点 (Point)
+         */
+        geometry: Point;
+        /**
+         * 选填,最大距离,单位为米
+         */
+        maxDistance: number;
+        /**
+         * 选填,最小距离,单位为米
+         */
+        minDistance: number;
+    }
+
+    interface IGeoWithinOptions {
+        /**
+         * 地理信息结构,Polygon,MultiPolygon,或 { centerSphere }
+         */
+        geometry: any;
+    }
+
+    interface IGeoIntersectsOptions {
+        /**
+         * 地理信息结构,Point
+         */
+        geometry: any;
+    }
+
+    interface LOGIC_COMMANDS_LITERAL {
+    }
+
+    interface LogicCommand {
+        fieldName: any;
+        operator: any;
+        operands: any;
+        _internalType: InternalSymbol;
+        _setFieldName(fieldName: string): LogicCommand;
+        /**
+         * 查询操作符,用于表示逻辑 "与" 的关系,表示需同时满足多个查询筛选条件
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=and](http://uniapp.dcloud.io/uniCloud/cf-database?id=and)
+         */
+        and(__expressions__: any): LogicCommand;
+        /**
+         * 查询操作符,用于表示逻辑 "或" 的关系,表示需同时满足多个查询筛选条件。或指令有两种用法,一是可以进行字段值的 “或” 操作,二是也可以进行跨字段的 “或” 操作。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=or](http://uniapp.dcloud.io/uniCloud/cf-database?id=or)
+         */
+        or(__expressions__: any): LogicCommand;
+    }
+
+    interface InternalSymbol {
+        for(target: any): InternalSymbol;
+    }
+
+    interface UPDATE_COMMANDS_LITERAL {
+    }
+
+    interface UpdateCommand {
+        fieldName: any;
+        operator: UPDATE_COMMANDS_LITERAL;
+        operands: any;
+        _internalType: InternalSymbol;
+        _setFieldName(fieldName: string): UpdateCommand;
+    }
+
+    interface GeoType {
+        /**
+         * 数据库地理位置结构集
+         */
+        Point: any;
+    }
+
+    interface Point {
+        /**
+         * 纬度
+         */
+        latitude: number;
+        /**
+         * 经度
+         */
+        longitude: number;
+        _internalType: any;
+        parse(key: any): any;
+        /**
+         * 返回相应的 GeoJSON 结构的对象
+         */
+        toJSON(): any;
+        /**
+         * 转换成可读字符串
+         */
+        toReadableString(): string;
+        validate(point: ISerializedPoint): boolean;
+    }
+
+    interface ISerializedPoint {
+        type: string;
+        coordinates: any;
+    }
+
+    interface ISerializedLineString {
+        type: string;
+        coordinates: any;
+    }
+
+    interface ISerializedPolygon {
+        type: string;
+        coordinates: any;
+    }
+
+    interface ISerializedMultiPoint {
+        type: string;
+        coordinates: any;
+    }
+
+    interface ISerializedMultiLineString {
+        type: string;
+        coordinates: any;
+    }
+
+    interface ISerializedMultiPolygon {
+        type: string;
+        coordinates: any;
+    }
+
+    interface GetParam {
+        /**
+         * 是否获取单条
+         */
+        getOne?: boolean;
+        /**
+         * 是否返回总数
+         */
+        getCount?: boolean;
+        /**
+         * 查询树形结构选定节点的所有子节点
+         */
+        getTree?: GetTreeParam | boolean;
+        /**
+         * 查询选定节点在树形结构内的路径
+         */
+        getTreePath?: GetTreePathParam;
+    }
+
+    interface GetTreeParam {
+        /**
+         * 第一层级条件
+         */
+        startWith: string;
+        /**
+         * 最大查询层级
+         */
+        limitLevel: number;
+    }
+
+    interface GetTreePathParam {
+        /**
+         * 要查询节点的条件
+         */
+        startWith: string;
+        /**
+         * 最大查询层级
+         */
+        limitLevel: number;
+    }
+
+    interface CollectionReference {
+        name: string;
+        /**
+         * 获取集合中指定记录的引用。方法接受一个 id 参数,指定需引用的记录的 _id
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=doc](http://uniapp.dcloud.io/uniCloud/cf-database?id=doc)
+         */
+        doc(docID: string): DocumentReference;
+        /**
+         * 新增记录,如果传入的记录对象没有 _id 字段,则由后台自动生成 _id;若指定了 _id,则不能与已有记录冲突
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=add](http://uniapp.dcloud.io/uniCloud/cf-database?id=add)
+         */
+        add(data: any): Promise<any>;
+        /**
+         * 获取记录数据,或获取根据查询条件筛选后的记录数据
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=query](http://uniapp.dcloud.io/uniCloud/cf-database?id=query)
+         */
+        get(GetParam?: GetParam): Promise<any>;
+        /**
+         * 延迟查询请求
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/jql?id=multi-send](http://uniapp.dcloud.io/uniCloud/jql?id=multi-send)
+         */
+        getTemp(GetParam?: GetParam): GetTempQuery;
+        /**
+         * 统计匹配查询条件的记录的条数
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=count](http://uniapp.dcloud.io/uniCloud/cf-database?id=count)
+         */
+        count(): any;
+        /**
+         * 指定查询条件,返回带新查询条件的新的集合引用
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=where](http://uniapp.dcloud.io/uniCloud/cf-database?id=where)
+         */
+        where(query: any): Query;
+        /**
+         * 指定查询排序条件
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=order-by](http://uniapp.dcloud.io/uniCloud/cf-database?id=order-by)
+         */
+        orderBy(fieldPath: string, directionStr: 'desc' | 'asc'): Query;
+        /**
+         * 指定查询结果集数量上限
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=limit](http://uniapp.dcloud.io/uniCloud/cf-database?id=limit)
+         */
+        limit(limit: number): Query;
+        /**
+         * 指定查询返回结果时从指定序列后的结果开始返回,常用于分页
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=skip](http://uniapp.dcloud.io/uniCloud/cf-database?id=skip)
+         */
+        skip(offset: number): Query;
+        /**
+         * 更新多条记录
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=update](http://uniapp.dcloud.io/uniCloud/cf-database?id=update)
+         */
+        update(data: any): Promise<any>;
+        /**
+         * 指定返回结果中记录需返回的字段
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=field](http://uniapp.dcloud.io/uniCloud/cf-database?id=field)
+         */
+        field(projection: string): Query;
+        /**
+         * 指定要使用的foreignKey
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/jql?id=lookup-foreign-key](http://uniapp.dcloud.io/uniCloud/jql?id=lookup-foreign-key)
+         */
+        foreignKey(foreignKeyName: string): Query;
+        /**
+         * 指定返回结果中记录需返回的字段
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/jql?id=groupby](http://uniapp.dcloud.io/uniCloud/jql?id=groupby)
+         */
+        preField(projection: string): Query;
+        /**
+         * 指定分组依据
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/jql?id=groupby](http://uniapp.dcloud.io/uniCloud/jql?id=groupby)
+         */
+        groupBy(projection: string): Query;
+        /**
+         * 指定统计指标
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/jql?id=groupby](http://uniapp.dcloud.io/uniCloud/jql?id=groupby)
+         */
+        groupField(projection: string): Query;
+        /**
+         * 删除多条记录。注意只支持通过匹配 where 语句来删除,不支持 skip 和 limit
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=remove](http://uniapp.dcloud.io/uniCloud/cf-database?id=remove)
+         */
+        remove(): Promise<any>;
+        /**
+         * 获取数据库集合的聚合操作实例
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=aggregate](http://uniapp.dcloud.io/uniCloud/cf-database?id=aggregate)
+         */
+        aggregate(): AggregateReference;
+    }
+
+    interface DocumentReference {
+        /**
+         * 文档ID
+         */
+        id: string;
+        /**
+         * 返回结果中记录需返回的字段
+         */
+        projection: any;
+        /**
+         * 替换更新一条记录
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=doc-set](http://uniapp.dcloud.io/uniCloud/cf-database?id=doc-set)
+         */
+        set(data: any): Promise<any>;
+        /**
+         * 更新一条记录
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=where-update](http://uniapp.dcloud.io/uniCloud/cf-database?id=where-update)
+         */
+        update(data: any): Promise<any>;
+        /**
+         * 删除一条记录
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=remove](http://uniapp.dcloud.io/uniCloud/cf-database?id=remove)
+         */
+        remove(): Promise<any>;
+        /**
+         * 获取记录数据,或获取根据查询条件筛选后的记录数据
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=query](http://uniapp.dcloud.io/uniCloud/cf-database?id=query)
+         */
+        get(GetParam?: GetParam): Promise<any>;
+        /**
+         * 获取记录数据,或获取根据查询条件筛选后的记录数据
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/jql?id=multi-send](http://uniapp.dcloud.io/uniCloud/jql?id=multi-send)
+         */
+        getTemp(GetParam?: GetParam): GetTempQuery;
+        /**
+         * 指定返回结果中记录需返回的字段
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=field](http://uniapp.dcloud.io/uniCloud/cf-database?id=field)
+         */
+        field(projection: string): DocumentReference;
+        /**
+         * 指定要使用的foreignKey
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/jql?id=lookup-foreign-key](http://uniapp.dcloud.io/uniCloud/jql?id=lookup-foreign-key)
+         */
+        foreignKey(foreignKeyName: string): DocumentReference;
+        /**
+         * 指定返回结果中记录需返回的字段
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/jql?id=groupby](http://uniapp.dcloud.io/uniCloud/jql?id=groupby)
+         */
+        preField(projection: string): Query;
+        /**
+         * 指定分组依据
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/jql?id=groupby](http://uniapp.dcloud.io/uniCloud/jql?id=groupby)
+         */
+        groupBy(projection: string): Query;
+        /**
+         * 指定统计指标
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/jql?id=groupby](http://uniapp.dcloud.io/uniCloud/jql?id=groupby)
+         */
+        groupField(projection: string): Query;
+    }
+
+    interface AggregateReference {
+        /**
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=aggregate-add-fields](http://uniapp.dcloud.io/uniCloud/cf-database?id=aggregate-add-fields)
+         */
+        addFields(addFieldsOptions: any): AggregateReference;
+        /**
+         * 将输入记录根据给定的条件和边界划分成不同的组,每组即一个bucket
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=aggregate-bucket](http://uniapp.dcloud.io/uniCloud/cf-database?id=aggregate-bucket)
+         */
+        bucket(bucketOptions: BucketOptions): AggregateReference;
+        /**
+         * 将输入记录根据给定的条件划分成不同的组,每组即一个 bucket。与 bucket 的其中一个不同之处在于无需指定 boundaries,bucketAuto
+         *                     会自动尝试将记录尽可能平均的分散到每组中。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=aggregate-bucket-auto](http://uniapp.dcloud.io/uniCloud/cf-database?id=aggregate-bucket-auto)
+         */
+        bucketAuto(bucketAutoOptions: BucketAutoOptions): AggregateReference;
+        /**
+         * 计算上一聚合阶段输入到本阶段的记录数,输出一个记录,其中指定字段的值为记录数。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=aggregate-count](http://uniapp.dcloud.io/uniCloud/cf-database?id=aggregate-count)
+         */
+        count(countOptions: string): AggregateReference;
+        /**
+         * 将输入记录按给定表达式分组,输出时每个记录代表一个分组,每个记录的 _id 是区分不同组的 key。输出记录中也可以包括累计值,将输出字段设为累计值即会从该分组中计算累计值。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=aggregate-group](http://uniapp.dcloud.io/uniCloud/cf-database?id=aggregate-group)
+         */
+        group(groupOptions: any): AggregateReference;
+        /**
+         * 限制输出到下一阶段的记录数。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=aggregate-limit](http://uniapp.dcloud.io/uniCloud/cf-database?id=aggregate-limit)
+         */
+        limit(limitOptions: number): AggregateReference;
+        /**
+         * 联表查询。与同个数据库下的一个指定的集合做 left outer join(左外连接)。对该阶段的每一个输入记录,lookup
+         *                     会在该记录中增加一个数组字段,该数组是被联表中满足匹配条件的记录列表。lookup 会将连接后的结果输出给下个阶段。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=aggregate-lookup](http://uniapp.dcloud.io/uniCloud/cf-database?id=aggregate-lookup)
+         */
+        lookup(lookupOptions: LookupOptions | LookupPipelineOptions): AggregateReference;
+        /**
+         * 根据条件过滤文档,并且把符合条件的文档传递给下一个流水线阶段。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=aggregate-match](http://uniapp.dcloud.io/uniCloud/cf-database?id=aggregate-match)
+         */
+        match(matchOptions: any): AggregateReference;
+        /**
+         * 把指定的字段传递给下一个流水线,指定的字段可以是某个已经存在的字段,也可以是计算出来的新字段。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=aggregate-project](http://uniapp.dcloud.io/uniCloud/cf-database?id=aggregate-project)
+         */
+        project(projectOptions: any): AggregateReference;
+        /**
+         * 指定一个已有字段作为输出的根节点,也可以指定一个计算出的新字段作为根节点。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=aggregate-replace-root](http://uniapp.dcloud.io/uniCloud/cf-database?id=aggregate-replace-root)
+         */
+        replaceRoot(replaceRootOptions: ReplaceRootOptions): AggregateReference;
+        /**
+         * 随机从文档中选取指定数量的记录。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=aggregate-sample](http://uniapp.dcloud.io/uniCloud/cf-database?id=aggregate-sample)
+         */
+        sample(sampleOptions: SampleOptions): AggregateReference;
+        /**
+         * 指定一个正整数,跳过对应数量的文档,输出剩下的文档。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=aggregate-skip](http://uniapp.dcloud.io/uniCloud/cf-database?id=aggregate-skip)
+         */
+        skip(skipOptions: number): AggregateReference;
+        /**
+         * 根据指定的字段,对输入的文档进行排序。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=aggregate-sort](http://uniapp.dcloud.io/uniCloud/cf-database?id=aggregate-sort)
+         */
+        sort(sortOptions: any): AggregateReference;
+        /**
+         * 根据指定的字段,对输入的文档进行排序。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=aggregate-sort-by-count](http://uniapp.dcloud.io/uniCloud/cf-database?id=aggregate-sort-by-count)
+         */
+        sortByCount(sortByCountOptions: string): AggregateReference;
+        /**
+         * 使用指定的数组字段中的每个元素,对文档进行拆分。拆分后,文档会从一个变为一个或多个,分别对应数组的每个元素。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=aggregate-unwind](http://uniapp.dcloud.io/uniCloud/cf-database?id=aggregate-unwind)
+         */
+        unwind(unwindOptions: UnwindOptions | string): void;
+        /**
+         * 标志聚合操作定义完成,发起实际聚合操作
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=aggregate-end](http://uniapp.dcloud.io/uniCloud/cf-database?id=aggregate-end)
+         */
+        end(): Promise<any>;
+    }
+
+    interface UnwindOptions {
+        /**
+         * 想要拆分的数组的字段名,需要以 $ 开头。
+         */
+        path: string;
+        /**
+         * 传入一个新的字段名,数组索引会保存在这个新的字段上。新的字段名不能以 $ 开头。
+         */
+        includeArrayIndex: string;
+        /**
+         * 如果为 true,那么在 path 对应的字段为 null、空数组或者这个字段不存在时,依然会输出这个文档;如果为 false,unwind 将不会输出这些文档。默认为 false。
+         */
+        preserveNullAndEmptyArrays: boolean;
+    }
+
+    interface SampleOptions {
+        /**
+         * 返回记录的数量
+         */
+        size: number;
+    }
+
+    interface ReplaceRootOptions {
+        /**
+         * 新的根节点
+         */
+        newRoot: any;
+    }
+
+    interface LookupOptions {
+        /**
+         * 要进行连接的另外一个集合的名字
+         */
+        from: string;
+        /**
+         * 当前流水线的输入记录的字段名,该字段将被用于与 from 指定的集合的 foreignField 进行相等匹配。如果输入记录中没有该字段,则该字段的值在匹配时会被视作 null
+         */
+        localField: string;
+        /**
+         * 被连接集合的字段名,该字段会被用于与 localField 进行相等匹配。如果被连接集合的记录中没有该字段,该字段的值将在匹配时被视作 null
+         */
+        foreignField: string;
+        /**
+         * 指定连接匹配出的记录列表要存放的字段名,这个数组包含的是匹配出的来自 from 集合的记录。如果输入记录中本来就已有该字段,则该字段会被覆写
+         */
+        as: string;
+    }
+
+    interface LookupPipelineOptions {
+        /**
+         * 要进行连接的另外一个集合的名字
+         */
+        from: string;
+        /**
+         * 可选。指定在 pipeline 中可以使用的变量,变量的值可以引用输入记录的字段,比如 let: { userName: '$name' } 就代表将输入记录的 name
+         *                     字段作为变量 userName
+         *                     的值。在 pipeline 中无法直接访问输入记录的字段,必须通过 let 定义之后才能访问,访问的方式是在 expr 操作符中用 $$变量名 的方式访问,比如 $$userName。
+         */
+        let: any;
+        /**
+         * 指定要在被连接集合中运行的聚合操作。如果要返回整个集合,则该字段取值空数组 []。在 pipeline 中无法直接访问输入记录的字段,必须通过 let
+         *                     定义之后才能访问,访问的方式是在 expr
+         *                     操作符中用 $$变量名 的方式访问,比如 $$userName。
+         */
+        pipeline: any;
+        /**
+         * 指定连接匹配出的记录列表要存放的字段名,这个数组包含的是匹配出的来自 from 集合的记录。如果输入记录中本来就已有该字段,则该字段会被覆写
+         */
+        as: string;
+    }
+
+    interface BucketOptions {
+        /**
+         * 一个用以决定分组的表达式,会应用在各个输入记录上。可以用 $ 前缀加上要用以分组的字段路径来作为表达式。除非用 default
+         *                     指定了默认值,否则每个记录都需要包含指定的字段,且字段值必须在
+         *                     boundaries 指定的范围之内。
+         */
+        groupBy: string;
+        /**
+         * 一个数组,每个元素分别是每组的下界。必须至少指定两个边界值。数组值必须是同类型递增的值
+         */
+        boundaries: any [];
+        /**
+         * 可选,指定之后,没有进入任何分组的记录将都进入一个默认分组,这个分组记录的 _id 即由 default 决定。default 的值必须小于 boundaries
+         *                     中的最小值或大于等于其中的最大值。default 的值可以与 boundaries 元素值类型不同。
+         */
+        default: string;
+        /**
+         * 可选,用以决定输出记录除了 _id 外还要包含哪些字段,各个字段的值必须用累加器表达式指定。
+         */
+        output: any;
+    }
+
+    interface BucketAutoOptions {
+        /**
+         * 一个用以决定分组的表达式,会应用在各个输入记录上。可以用 $ 前缀加上要用以分组的字段路径来作为表达式。除非用 default
+         *                     指定了默认值,否则每个记录都需要包含指定的字段,且字段值必须在
+         *                     boundaries 指定的范围之内。
+         */
+        groupBy: string;
+        /**
+         * 一个用于指定划分组数的正整数
+         */
+        buckets: number;
+        /**
+         * 用于保证自动计算出的边界符合给定的规则。这个字段仅可在所有 groupBy 值都是数字并且没有 NaN 的情况下使用。
+         * - R5: 边界规则
+         * - R10: 边界规则
+         * - R20: 边界规则
+         * - R40: 边界规则
+         * - R80: 边界规则
+         * - 1-2-5: 边界规则
+         * - E6: 边界规则
+         * - E12: 边界规则
+         * - E24: 边界规则
+         * - E48: 边界规则
+         * - E96: 边界规则
+         * - E192: 边界规则
+         * - POWERSOF: 边界规则
+         */
+        granularity: 'R5' | 'R10' | 'R20' | 'R40' | 'R80' | '1-2-5' | 'E6' | 'E12' | 'E24' | 'E48' | 'E96' | 'E192' | 'POWERSOF';
+        /**
+         * 用以决定输出记录除了 _id 外还要包含哪些字段,各个字段的值必须用累加器表达式指定
+         */
+        output: any;
+    }
+
+    interface Query {
+        /**
+         * 获取记录数据,或获取根据查询条件筛选后的记录数据
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=query](http://uniapp.dcloud.io/uniCloud/cf-database?id=query)
+         */
+        get(GetParam?: GetParam): Promise<any>;
+        /**
+         * 延迟查询请求
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/jql?id=multi-send](http://uniapp.dcloud.io/uniCloud/jql?id=multi-send)
+         */
+        getTemp(GetParam?: GetParam): GetTempQuery;
+        /**
+         * 统计匹配查询条件的记录的条数
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=count](http://uniapp.dcloud.io/uniCloud/cf-database?id=count)
+         */
+        count(): Promise<any>;
+        /**
+         * 指定查询条件,返回带新查询条件的新的集合引用
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=where](http://uniapp.dcloud.io/uniCloud/cf-database?id=where)
+         */
+        where(query: any): Query;
+        /**
+         * 指定查询排序条件
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=order-by](http://uniapp.dcloud.io/uniCloud/cf-database?id=order-by)
+         */
+        orderBy(fieldPath: string, directionStr: 'desc' | 'asc'): Query;
+        /**
+         * 指定查询结果集数量上限
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=limit](http://uniapp.dcloud.io/uniCloud/cf-database?id=limit)
+         */
+        limit(limit: number): Query;
+        /**
+         * 指定查询返回结果时从指定序列后的结果开始返回,常用于分页
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=skip](http://uniapp.dcloud.io/uniCloud/cf-database?id=skip)
+         */
+        skip(offset: number): Query;
+        /**
+         * 更新多条记录
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=update](http://uniapp.dcloud.io/uniCloud/cf-database?id=update)
+         */
+        update(data: any): Promise<any>;
+        /**
+         * 指定返回结果中记录需返回的字段
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=field](http://uniapp.dcloud.io/uniCloud/cf-database?id=field)
+         */
+        field(projection: any): Query;
+        /**
+         * 指定要使用的foreignKey
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/jql?id=lookup-foreign-key](http://uniapp.dcloud.io/uniCloud/jql?id=lookup-foreign-key)
+         */
+        foreignKey(foreignKeyName: string): Query;
+        /**
+         * 指定分组依据
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/jql?id=groupby](http://uniapp.dcloud.io/uniCloud/jql?id=groupby)
+         */
+        groupBy(projection: string): Query;
+        /**
+         * 指定统计指标
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/jql?id=groupby](http://uniapp.dcloud.io/uniCloud/jql?id=groupby)
+         */
+        groupField(projection: string): Query;
+        /**
+         * 删除多条记录。注意只支持通过匹配 where 语句来删除,不支持 skip 和 limit
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=remove](http://uniapp.dcloud.io/uniCloud/cf-database?id=remove)
+         */
+        remove(): Promise<any>;
+    }
+
+    interface QUERY_COMMANDS_LITERAL {
+    }
+
+    interface QueryCommand {
+        operator: QUERY_COMMANDS_LITERAL;
+        /**
+         * 聚合操作符
+         */
+        aggregate: AggregateCommand;
+        _setFieldName(fieldName: string): QueryCommand;
+        /**
+         * 用于设定字段等于指定值。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=set](http://uniapp.dcloud.io/uniCloud/cf-database?id=set)
+         */
+        set(): void;
+        /**
+         * 用于指示字段自增某个值。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=inc](http://uniapp.dcloud.io/uniCloud/cf-database?id=inc)
+         */
+        inc(): void;
+        /**
+         * 用于指示字段自乘某个值。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=mul](http://uniapp.dcloud.io/uniCloud/cf-database?id=mul)
+         */
+        mul(): void;
+        /**
+         * 向数组尾部追加元素,支持传入单个元素或数组
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=push](http://uniapp.dcloud.io/uniCloud/cf-database?id=push)
+         */
+        push(): void;
+        /**
+         * 删除数组尾部元素
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=pop](http://uniapp.dcloud.io/uniCloud/cf-database?id=pop)
+         */
+        pop(): void;
+        /**
+         * 向数组头部添加元素,支持传入单个元素或数组
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=unshift](http://uniapp.dcloud.io/uniCloud/cf-database?id=unshift)
+         */
+        unshift(): void;
+        /**
+         * 删除数组头部元素
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=set](http://uniapp.dcloud.io/uniCloud/cf-database?id=set)
+         */
+        shift(): void;
+        /**
+         * 查询筛选条件,表示字段等于某个值。eq 指令接受一个字面量 (literal),可以是 number, boolean, string, object, array, Date
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=eq](http://uniapp.dcloud.io/uniCloud/cf-database?id=eq)
+         */
+        eq(val: any): LogicCommand;
+        /**
+         * 查询筛选条件,表示字段不等于某个值。eq 指令接受一个字面量 (literal),可以是 number, boolean, string, object, array, Date。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=neq](http://uniapp.dcloud.io/uniCloud/cf-database?id=neq)
+         */
+        neq(val: any): LogicCommand;
+        /**
+         * 查询筛选操作符,表示需大于指定值。可以传入 Date 对象用于进行日期比较。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=gt](http://uniapp.dcloud.io/uniCloud/cf-database?id=gt)
+         */
+        gt(val: any): LogicCommand;
+        /**
+         * 查询筛选操作符,表示需大于或等于指定值。可以传入 Date 对象用于进行日期比较。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=gte](http://uniapp.dcloud.io/uniCloud/cf-database?id=gte)
+         */
+        gte(val: any): LogicCommand;
+        /**
+         * 查询筛选操作符,表示需小于指定值。可以传入 Date 对象用于进行日期比较。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=lt](http://uniapp.dcloud.io/uniCloud/cf-database?id=lt)
+         */
+        lt(val: any): LogicCommand;
+        /**
+         * 查询筛选操作符,表示需小于或等于指定值。可以传入 Date 对象用于进行日期比较。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=lte](http://uniapp.dcloud.io/uniCloud/cf-database?id=lte)
+         */
+        lte(val: any): LogicCommand;
+        /**
+         * 查询筛选操作符,表示要求值在给定的数组内。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=in](http://uniapp.dcloud.io/uniCloud/cf-database?id=in)
+         */
+        in(list: any): LogicCommand;
+        /**
+         * 查询筛选操作符,表示要求值不在给定的数组内。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=nin](http://uniapp.dcloud.io/uniCloud/cf-database?id=nin)
+         */
+        nin(list: any): LogicCommand;
+        /**
+         * 查询操作符,用于表示逻辑 "或" 的关系,表示需同时满足多个查询筛选条件。或指令有两种用法,一是可以进行字段值的 “或” 操作,二是也可以进行跨字段的 “或” 操作。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=or-1](http://uniapp.dcloud.io/uniCloud/cf-database?id=or-1)
+         */
+        or(val: any): LogicCommand;
+        /**
+         * 查询操作符,用于表示逻辑 "与" 的关系,表示需同时满足多个查询筛选条件。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=and-1](http://uniapp.dcloud.io/uniCloud/cf-database?id=and-1)
+         */
+        and(val: any): LogicCommand;
+        /**
+         * 按从近到远的顺序,找出字段值在给定点的附近的记录。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=geonear](http://uniapp.dcloud.io/uniCloud/cf-database?id=geonear)
+         */
+        geoNear(val: IGeoNearOptions): LogicCommand;
+        /**
+         * 找出字段值在指定区域内的记录,无排序。指定的区域必须是多边形(Polygon)或多边形集合(MultiPolygon)。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=geowithin](http://uniapp.dcloud.io/uniCloud/cf-database?id=geowithin)
+         */
+        geoWithin(val: IGeoWithinOptions): LogicCommand;
+        /**
+         * 找出给定的地理位置图形相交的记录
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=geointersects](http://uniapp.dcloud.io/uniCloud/cf-database?id=geointersects)
+         */
+        geoIntersects(val: IGeoIntersectsOptions): LogicCommand;
+    }
+
+    interface AggregateCommand {
+        /**
+         * 返回一个数字的绝对值。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=abs](http://uniapp.dcloud.io/uniCloud/cf-database?id=abs)
+         */
+        abs(absOptions: number | string): number;
+        /**
+         * 将数字相加或将数字加在日期上。如果数组中的其中一个值是日期,那么其他值将被视为毫秒数加在该日期上。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=add](http://uniapp.dcloud.io/uniCloud/cf-database?id=add)
+         */
+        add(addOptions: any []): number;
+        /**
+         * 向上取整,返回大于或等于给定数字的最小整数。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=ceil](http://uniapp.dcloud.io/uniCloud/cf-database?id=ceil)
+         */
+        ceil(ceilOptions: number | string): number;
+        /**
+         * 传入被除数和除数,求商。参数形式为:[被除数,除数]
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=divide](http://uniapp.dcloud.io/uniCloud/cf-database?id=divide)
+         */
+        divide(divideOptions: any []): number;
+        /**
+         * 取 e(自然对数的底数,欧拉数) 的 n 次方
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=exp](http://uniapp.dcloud.io/uniCloud/cf-database?id=exp)
+         */
+        exp(expOptions: number | string): number;
+        /**
+         * 向下取整,返回大于或等于给定数字的最小整数。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=floor](http://uniapp.dcloud.io/uniCloud/cf-database?id=floor)
+         */
+        floor(floorOptions: number | string): number;
+        /**
+         * 计算给定数字在自然对数值。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=ln](http://uniapp.dcloud.io/uniCloud/cf-database?id=ln)
+         */
+        ln(lnOptions: number | string): number;
+        /**
+         * 计算给定数字在给定对数底下的 log 值。参数形式为:[真数,底数]
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=log](http://uniapp.dcloud.io/uniCloud/cf-database?id=log)
+         */
+        log(logOptions: any []): number;
+        /**
+         * 计算给定数字在对数底为 10 下的 log 值。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=log10](http://uniapp.dcloud.io/uniCloud/cf-database?id=log10)
+         */
+        log10(log10Options: number | string): number;
+        /**
+         * 取模运算,取数字取模后的值。参数形式为:[被除数,除数]
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=mod](http://uniapp.dcloud.io/uniCloud/cf-database?id=mod)
+         */
+        mod(modOptions: any []): number;
+        /**
+         * 取传入的数字参数相乘的结果。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=multiply](http://uniapp.dcloud.io/uniCloud/cf-database?id=multiply)
+         */
+        multiply(multiplyOptions: any []): number;
+        /**
+         * 求给定基数的指数次幂。参数形式为:[底数,指数]
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=pow](http://uniapp.dcloud.io/uniCloud/cf-database?id=pow)
+         */
+        pow(powOptions: any []): number;
+        /**
+         * 求平方根。参数形式为:[被开方数]
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=sqrt](http://uniapp.dcloud.io/uniCloud/cf-database?id=sqrt)
+         */
+        sqrt(sqrtOptions: any []): number;
+        /**
+         * 将两个数字相减然后返回差值,或将两个日期相减然后返回相差的毫秒数,或将一个日期减去一个数字返回结果的日期。参数形式为:[被减数,减数]
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=subtract](http://uniapp.dcloud.io/uniCloud/cf-database?id=subtract)
+         */
+        subtract(subtractOptions: any []): number;
+        /**
+         * 将数字截断为整形。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=trunc](http://uniapp.dcloud.io/uniCloud/cf-database?id=trunc)
+         */
+        trunc(truncOptions: number | string): number;
+        /**
+         * 返回在指定数组下标的元素。参数形式为:[数组,下标]
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=arrayelemat](http://uniapp.dcloud.io/uniCloud/cf-database?id=arrayelemat)
+         */
+        arrayElemAt(arrayElemAtOptions: any []): any;
+        /**
+         * 将一个数组转换为对象。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=arraytoobject](http://uniapp.dcloud.io/uniCloud/cf-database?id=arraytoobject)
+         */
+        arrayToObject(arrayToObjectOptions: any [] | string): any;
+        /**
+         * 将多个数组拼接成一个数组。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=concatarrays](http://uniapp.dcloud.io/uniCloud/cf-database?id=concatarrays)
+         */
+        concatArrays(concatArraysOptions: any []): any [];
+        /**
+         * 根据给定条件返回满足条件的数组的子集。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=filter](http://uniapp.dcloud.io/uniCloud/cf-database?id=filter)
+         */
+        filter(filterOptions: FilterOptions): any [];
+        /**
+         * 给定一个值和一个数组,如果值在数组中则返回 true,否则返回 false。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=in](http://uniapp.dcloud.io/uniCloud/cf-database?id=in)
+         */
+        in(inOptions: number | string): number;
+        /**
+         * 在数组中找出等于给定值的第一个元素的下标,如果找不到则返回 -1。参数形式为:[数组,查找值,起始索引,结束索引],起始索引、结束索引为可选值。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=indexofarray](http://uniapp.dcloud.io/uniCloud/cf-database?id=indexofarray)
+         */
+        indexOfArray(indexOfArrayOptions: any []): number;
+        /**
+         * 判断给定表达式是否是数组,返回布尔值。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=isarray](http://uniapp.dcloud.io/uniCloud/cf-database?id=isarray)
+         */
+        isArray(isArrayOptions: any []): boolean;
+        /**
+         * 类似 JavaScript Array 上的 map 方法,将给定数组的每个元素按给定转换方法转换后得出新的数组。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=map](http://uniapp.dcloud.io/uniCloud/cf-database?id=map)
+         */
+        map(mapOptions: MapOptions): any [];
+        /**
+         * 将一个对象转换为数组。方法把对象的每个键值对都变成输出数组的一个元素,元素形如 { k: <key>, v: <value> }。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=objecttoarray](http://uniapp.dcloud.io/uniCloud/cf-database?id=objecttoarray)
+         */
+        objectToArray(objectToArrayOptions: any): any [];
+        /**
+         * 返回一组生成的序列数字。给定开始值、结束值、非零的步长,range 会返回从开始值开始逐步增长、步长为给定步长、但不包括结束值的序列。参数形式为:[起始值,结束值,步长]
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=range](http://uniapp.dcloud.io/uniCloud/cf-database?id=range)
+         */
+        range(rangeOptions: any []): any [];
+        /**
+         * 类似 JavaScript 的 reduce 方法,应用一个表达式于数组各个元素然后归一成一个元素。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=reduce](http://uniapp.dcloud.io/uniCloud/cf-database?id=reduce)
+         */
+        reduce(reduceOptions: ReduceOptions): any;
+        /**
+         * 返回给定数组的倒序形式。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=reversearray](http://uniapp.dcloud.io/uniCloud/cf-database?id=reversearray)
+         */
+        reverseArray(reverseArrayOptions: any [] | string): any [];
+        /**
+         * 返回数组长度。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=size](http://uniapp.dcloud.io/uniCloud/cf-database?id=size)
+         */
+        size(sizeOptions: any [] | string): number;
+        /**
+         * 类似 JavaScritp 的 slice 方法。返回给定数组的指定子集。参数形式:[数组,下标]
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=slice](http://uniapp.dcloud.io/uniCloud/cf-database?id=slice)
+         */
+        slice(sliceOptions: any []): any [];
+        /**
+         * 把二维数组的第二维数组中的相同序号的元素分别拼装成一个新的数组进而组装成一个新的二维数组。如可将 [ [ 1, 2, 3 ], [ "a", "b",
+         *                     "c"
+         *                     ] ] 转换成 [ [ 1, "a" ], [ 2, "b" ], [ 3, "c" ] ]。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=zip](http://uniapp.dcloud.io/uniCloud/cf-database?id=zip)
+         */
+        zip(zipOptions: ZipOptions): any [];
+        /**
+         * 给定多个表达式,and 仅在所有表达式都返回 true 时返回 true,否则返回 false 。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=and](http://uniapp.dcloud.io/uniCloud/cf-database?id=and)
+         */
+        and(andOptions: any []): boolean;
+        /**
+         * 给定一个表达式,如果表达式返回 true,则 not 返回 false,否则返回 true。注意表达式不能为逻辑表达式(and、or、nor、not)。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=not](http://uniapp.dcloud.io/uniCloud/cf-database?id=not)
+         */
+        not(notOptions: string): boolean;
+        /**
+         * 给定多个表达式,如果任意一个表达式返回 true,则 or 返回 true,否则返回 false。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=or](http://uniapp.dcloud.io/uniCloud/cf-database?id=or)
+         */
+        or(orOptions: any []): boolean;
+        /**
+         * 给定两个值,返回其比较值。如果第一个值小于第二个值,返回 -1 。如果第一个值大于第二个值,返回 1 。 如果两个值相等,返回 0 。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=cmp](http://uniapp.dcloud.io/uniCloud/cf-database?id=cmp)
+         */
+        cmp(cmpOptions: any []): number;
+        /**
+         * 匹配两个值,如果相等则返回 true,否则返回 false。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=eq](http://uniapp.dcloud.io/uniCloud/cf-database?id=eq)
+         */
+        eq(eqOptions: any []): boolean;
+        /**
+         * 匹配两个值,如果前者大于后者则返回 true,否则返回 false。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=gt](http://uniapp.dcloud.io/uniCloud/cf-database?id=gt)
+         */
+        gt(gtOptions: any []): boolean;
+        /**
+         * 匹配两个值,如果前者大于或等于后者则返回 true,否则返回 false。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=gte](http://uniapp.dcloud.io/uniCloud/cf-database?id=gte)
+         */
+        gte(gteOptions: any []): boolean;
+        /**
+         * 匹配两个值,如果前者小于后者则返回 true,否则返回 false。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=lt](http://uniapp.dcloud.io/uniCloud/cf-database?id=lt)
+         */
+        lt(ltOptions: any []): boolean;
+        /**
+         * 匹配两个值,如果前者小于或等于后者则返回 true,否则返回 false。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=lte](http://uniapp.dcloud.io/uniCloud/cf-database?id=lte)
+         */
+        lte(lteOptions: any []): boolean;
+        /**
+         * 匹配两个值,如果不相等则返回 true,否则返回 false。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=neq](http://uniapp.dcloud.io/uniCloud/cf-database?id=neq)
+         */
+        neq(neqOptions: any []): boolean;
+        /**
+         * 计算布尔表达式,返回指定的两个值其中之一。参数形式为:[布尔表达式,真值,假值],效果类似于 javascript 里的 condition?a:b
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=cond](http://uniapp.dcloud.io/uniCloud/cf-database?id=cond)
+         */
+        cond(condOptions: any []): any;
+        /**
+         * 计算给定的表达式,如果表达式结果为 null、undefined 或者不存在,那么返回一个替代值;否则返回原值。参数形式为:[表达式,替代值]
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=ifnull](http://uniapp.dcloud.io/uniCloud/cf-database?id=ifnull)
+         */
+        ifNull(ifNullOptions: any []): any;
+        /**
+         * 根据给定的 switch-case-default 计算返回值。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=switch](http://uniapp.dcloud.io/uniCloud/cf-database?id=switch)
+         */
+        switch(switchOptions: SwitchOptions): boolean;
+        /**
+         * 给定日期的相关信息,构建并返回一个日期对象。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=datefromparts](http://uniapp.dcloud.io/uniCloud/cf-database?id=datefromparts)
+         */
+        dateFromParts(dateFromPartsOptions: DateFromPartsOptions): DBDate;
+        /**
+         * 将一个日期/时间字符串转换为日期对象。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=datefromstring](http://uniapp.dcloud.io/uniCloud/cf-database?id=datefromstring)
+         */
+        dateFromString(dateFromStringOptions: DateFromStringOptions): DBDate;
+        /**
+         * 根据指定的表达式将日期对象格式化为符合要求的字符串。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=datetostring](http://uniapp.dcloud.io/uniCloud/cf-database?id=datetostring)
+         */
+        dateToString(dateToStringOptions: DateToStringOptions): string;
+        /**
+         * 返回日期字段对应的天数(一个月中的哪一天),是一个介于 1 至 31 之间的数字。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=dayofmonth](http://uniapp.dcloud.io/uniCloud/cf-database?id=dayofmonth)
+         */
+        dayOfMonth(dayOfMonthOptions: string): number;
+        /**
+         * 返回日期字段对应的天数(一周中的第几天),是一个介于 1(周日)到 7(周六)之间的整数。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=dayofweek](http://uniapp.dcloud.io/uniCloud/cf-database?id=dayofweek)
+         */
+        dayOfWeek(dayOfWeekOptions: string): number;
+        /**
+         * 返回日期字段对应的天数(一年中的第几天),是一个介于 1 到 366 之间的整数。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=dayofyear](http://uniapp.dcloud.io/uniCloud/cf-database?id=dayofyear)
+         */
+        dayOfYear(dayOfYearOptions: string): number;
+        /**
+         * 返回日期字段对应的小时数,是一个介于 0 到 23 之间的整数。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=hour](http://uniapp.dcloud.io/uniCloud/cf-database?id=hour)
+         */
+        hour(hourOptions: string): number;
+        /**
+         * 返回日期字段对应的 ISO 8601 标准的天数(一周中的第几天),是一个介于 1(周一)到 7(周日)之间的整数。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=isodayofweek](http://uniapp.dcloud.io/uniCloud/cf-database?id=isodayofweek)
+         */
+        isoDayOfWeek(isoDayOfWeekOptions: string): number;
+        /**
+         * 返回日期字段对应的 ISO 8601 标准的周数(一年中的第几周),是一个介于 1 到 53 之间的整数。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=isoweek](http://uniapp.dcloud.io/uniCloud/cf-database?id=isoweek)
+         */
+        isoWeek(isoWeekOptions: string): void;
+        /**
+         * 返回日期字段对应的 ISO 8601 标准的天数(一年中的第几天)。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=isoweekyear](http://uniapp.dcloud.io/uniCloud/cf-database?id=isoweekyear)
+         */
+        isoWeekYear(isoWeekYearOptions: string): number;
+        /**
+         * 返回日期字段对应的毫秒数,是一个介于 0 到 999 之间的整数。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=millisecond](http://uniapp.dcloud.io/uniCloud/cf-database?id=millisecond)
+         */
+        millisecond(millisecondOptions: string): number;
+        /**
+         * 返回日期字段对应的分钟数,是一个介于 0 到 59 之间的整数。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=minute](http://uniapp.dcloud.io/uniCloud/cf-database?id=minute)
+         */
+        minute(minuteOptions: string): number;
+        /**
+         * 返回日期字段对应的月份,是一个介于 1 到 12 之间的整数。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=month](http://uniapp.dcloud.io/uniCloud/cf-database?id=month)
+         */
+        month(monthOptions: string): number;
+        /**
+         * 返回日期字段对应的秒数,是一个介于 0 到 59 之间的整数,在特殊情况下(闰秒)可能等于 60。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=second](http://uniapp.dcloud.io/uniCloud/cf-database?id=second)
+         */
+        second(secondOptions: string): number;
+        /**
+         * 返回日期字段对应的周数(一年中的第几周),是一个介于 0 到 53 之间的整数。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=week](http://uniapp.dcloud.io/uniCloud/cf-database?id=week)
+         */
+        week(weekOptions: string): number;
+        /**
+         * 返回日期字段对应的年份。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=year](http://uniapp.dcloud.io/uniCloud/cf-database?id=year)
+         */
+        year(yearOptions: string): number;
+        /**
+         * 直接返回一个值的字面量,不经过任何解析和处理。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=literal](http://uniapp.dcloud.io/uniCloud/cf-database?id=literal)
+         */
+        literal(literalOptions: string): string;
+        /**
+         * 将一个对象转换为数组。方法把对象的每个键值对都变成输出数组的一个元素,元素形如 { k: <key>, v: <value> }。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=objecttoarray](http://uniapp.dcloud.io/uniCloud/cf-database?id=objecttoarray)
+         */
+        objectToArray(objectToArrayOptions: any): any [];
+        /**
+         * 输入一个数组,或者数组字段的表达式。如果数组中所有元素均为真值,那么返回 true,否则返回 false。空数组永远返回 true。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=allelementstrue](http://uniapp.dcloud.io/uniCloud/cf-database?id=allelementstrue)
+         */
+        allElementsTrue(allElementsTrueOptions: any []): boolean;
+        /**
+         * 输入一个数组,或者数组字段的表达式。如果数组中任意一个元素为真值,那么返回 true,否则返回 false。空数组永远返回 false。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=anyelementtrue](http://uniapp.dcloud.io/uniCloud/cf-database?id=anyelementtrue)
+         */
+        anyElementTrue(anyElementTrueOptions: any []): boolean;
+        /**
+         * 输入两个集合,输出只存在于第一个集合中的元素。。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=setdifference](http://uniapp.dcloud.io/uniCloud/cf-database?id=setdifference)
+         */
+        setDifference(setDifferenceOptions: any []): any;
+        /**
+         * 输入两个集合,判断两个集合中包含的元素是否相同(不考虑顺序、去重)。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=setequals](http://uniapp.dcloud.io/uniCloud/cf-database?id=setequals)
+         */
+        setEquals(setEqualsOptions: any []): boolean;
+        /**
+         * 输入两个集合,判断两个集合中包含的元素是否相同(不考虑顺序、去重)。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=setintersection](http://uniapp.dcloud.io/uniCloud/cf-database?id=setintersection)
+         */
+        setIntersection(setIntersectionOptions: any []): any;
+        /**
+         * 输入两个集合,判断第一个集合是否是第二个集合的子集。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=setissubset](http://uniapp.dcloud.io/uniCloud/cf-database?id=setissubset)
+         */
+        setIsSubset(setIsSubsetOptions: any []): any;
+        /**
+         * 输入两个集合,输出两个集合的并集。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=setunion](http://uniapp.dcloud.io/uniCloud/cf-database?id=setunion)
+         */
+        setUnion(setUnionOptions: any []): any;
+        /**
+         * 连接字符串,返回拼接后的字符串。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=concat](http://uniapp.dcloud.io/uniCloud/cf-database?id=concat)
+         */
+        concat(concatOptions: any []): string;
+        /**
+         * 在目标字符串中查找子字符串,并返回第一次出现的 UTF-8 的字节索引(从0开始)。如果不存在子字符串,返回 -1。参数形式为:[目标字符串表达式, 子字符串表达式, 开始位置,
+         *                     结束位置]
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=indexofbytes](http://uniapp.dcloud.io/uniCloud/cf-database?id=indexofbytes)
+         */
+        indexOfBytes(indexOfBytesOptions: any []): number;
+        /**
+         * 在目标字符串中查找子字符串,并返回第一次出现的 UTF-8 的 code point 索引(从0开始)。如果不存在子字符串,返回 -1。参数形式为:[目标字符串表达式,
+         *                     子字符串表达式, 开始位置,
+         *                     结束位置]
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=indexofcp](http://uniapp.dcloud.io/uniCloud/cf-database?id=indexofcp)
+         */
+        indexOfCP(indexOfCPOptions: any []): number;
+        /**
+         * 按照分隔符分隔字符串,并且删除分隔符,返回子字符串组成的数组。如果字符串无法找到分隔符进行分隔,返回原字符串作为数组的唯一元素。参数形式为:[字符串,分隔符]
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=split](http://uniapp.dcloud.io/uniCloud/cf-database?id=split)
+         */
+        split(splitOptions: string): any [];
+        /**
+         * 计算并返回指定字符串中 utf-8 编码的字节数量。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=strlenbytes](http://uniapp.dcloud.io/uniCloud/cf-database?id=strlenbytes)
+         */
+        strLenBytes(strLenBytesOptions: string): number;
+        /**
+         * 计算并返回指定字符串的UTF-8 code points 数量。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=strlencp](http://uniapp.dcloud.io/uniCloud/cf-database?id=strlencp)
+         */
+        strLenCP(strLenCPOptions: string): number;
+        /**
+         * 对两个字符串在不区分大小写的情况下进行大小比较,并返回比较的结果。如果第一个值小于第二个值,返回 -1 。如果第一个值大于第二个值,返回 1 。 如果两个值相等,返回 0 。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=strcasecmp](http://uniapp.dcloud.io/uniCloud/cf-database?id=strcasecmp)
+         */
+        strcasecmp(strcasecmpOptions: any []): number;
+        /**
+         * 返回字符串从指定位置开始的指定长度的子字符串。它是 db.command.aggregate.substrBytes
+         *                     的别名,更推荐使用后者。参数形式为:[字符串,起始位置,结束位置]
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=substr](http://uniapp.dcloud.io/uniCloud/cf-database?id=substr)
+         */
+        substr(substrOptions: any []): string;
+        /**
+         * 返回字符串从指定位置开始的指定长度的子字符串。子字符串是由字符串中指定的 UTF-8 字节索引的字符开始,长度为指定的字节数。参数形式为:[字符串,起始位置,结束位置]
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=substrbytes](http://uniapp.dcloud.io/uniCloud/cf-database?id=substrbytes)
+         */
+        substrBytes(substrBytesOptions: any []): string;
+        /**
+         * 返回字符串从指定位置开始的指定长度的子字符串。子字符串是由字符串中指定的 UTF-8 字节索引的字符开始,长度为指定的字节数。参数形式为:[字符串,起始位置,结束位置]
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=substrcp](http://uniapp.dcloud.io/uniCloud/cf-database?id=substrcp)
+         */
+        substrCP(substrCPOptions: any []): string;
+        /**
+         * 将字符串转化为小写并返回。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=tolower](http://uniapp.dcloud.io/uniCloud/cf-database?id=tolower)
+         */
+        toLower(toLowerOptions: string): string;
+        /**
+         * 将字符串转化为大写并返回。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=toupper](http://uniapp.dcloud.io/uniCloud/cf-database?id=toupper)
+         */
+        toUpper(toUpperOptions: string): string;
+        /**
+         * 向数组中添加值,如果数组中已存在该值,不执行任何操作。它只能在 group 阶段中使用。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=addtoset](http://uniapp.dcloud.io/uniCloud/cf-database?id=addtoset)
+         */
+        addToSet(addToSetOptions: string): void;
+        /**
+         * 返回一组集合中,指定字段对应数据的平均值。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=avg](http://uniapp.dcloud.io/uniCloud/cf-database?id=avg)
+         */
+        avg(avgOptions: string): void;
+        /**
+         * 返回指定字段在一组集合的第一条记录对应的值。仅当这组集合是按照某种定义排序( sort )后,此操作才有意义。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=first](http://uniapp.dcloud.io/uniCloud/cf-database?id=first)
+         */
+        first(firstOptions: string): void;
+        /**
+         * 返回指定字段在一组集合的最后一条记录对应的值。仅当这组集合是按照某种定义排序( sort )后,此操作才有意义。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=last](http://uniapp.dcloud.io/uniCloud/cf-database?id=last)
+         */
+        last(lastOptions: string): void;
+        /**
+         * 返回一组数值的最大值。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=max](http://uniapp.dcloud.io/uniCloud/cf-database?id=max)
+         */
+        max(maxOptions: string): void;
+        /**
+         * 返回一组数值的最小值。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=min](http://uniapp.dcloud.io/uniCloud/cf-database?id=min)
+         */
+        min(minOptions: string): void;
+        /**
+         * 将多个文档合并为单个文档
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=mergeobjects](http://uniapp.dcloud.io/uniCloud/cf-database?id=mergeobjects)
+         */
+        mergeObjects(mergeObjectsOptions: string | any []): void;
+        /**
+         * 在 group 阶段,返回一组中表达式指定列与对应的值,一起组成的数组。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=push-1](http://uniapp.dcloud.io/uniCloud/cf-database?id=push-1)
+         */
+        push(pushOptions: any): void;
+        /**
+         * 返回一组字段对应值的标准差。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=stddevpop](http://uniapp.dcloud.io/uniCloud/cf-database?id=stddevpop)
+         */
+        stdDevPop(stdDevPopOptions: string): void;
+        /**
+         * 计算输入值的样本标准偏差。如果输入值代表数据总体,或者不概括更多的数据,请改用 db.command.aggregate.stdDevPop 。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=stddevsamp](http://uniapp.dcloud.io/uniCloud/cf-database?id=stddevsamp)
+         */
+        stdDevSamp(stdDevSampOptions: string): void;
+        /**
+         * 计算并且返回一组字段所有数值的总和。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=sum](http://uniapp.dcloud.io/uniCloud/cf-database?id=sum)
+         */
+        sum(sumOptions: string): void;
+        /**
+         * 自定义变量,并且在指定表达式中使用,返回的结果是表达式的结果。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=let](http://uniapp.dcloud.io/uniCloud/cf-database?id=let)
+         */
+        let(letOptions: LetOptions): void;
+    }
+
+    interface DateToStringOptions {
+        /**
+         * 日期表达式
+         */
+        date: string;
+        /**
+         * 格式化表达式
+         */
+        format: string;
+        /**
+         * 时区表达式,指明运算结果的时区。它可以解析格式为 UTC Offset 或者 Olson Timezone Identifier 的字符串。
+         * - Asia/Shanghai:
+         */
+        timezone?: 'Asia/Shanghai';
+        /**
+         * 空值表达式,可选。当日期表达式返回空或者不存在的时候,会返回此表达式指明的值。
+         */
+        onNull?: string;
+    }
+
+    interface DateFromStringOptions {
+        /**
+         * 日期字符串
+         */
+        dateString: string;
+        /**
+         * 时区,Olson Timezone Identifier
+         * - Asia/Shanghai:
+         */
+        timezone?: 'Asia/Shanghai';
+    }
+
+    interface DateFromPartsOptions {
+        /**
+         * 年份
+         */
+        year?: number;
+        /**
+         * 月份
+         */
+        month?: number;
+        /**
+         * 日期
+         */
+        day?: number;
+        /**
+         * 小时
+         */
+        hour?: number;
+        /**
+         * 分钟
+         */
+        minute?: number;
+        /**
+         * 秒
+         */
+        second?: number;
+        /**
+         * 毫秒
+         */
+        millisecond?: number;
+        /**
+         * 时区,Olson Timezone Identifier
+         * - Asia/Shanghai:
+         */
+        timezone?: 'Asia/Shanghai';
+        /**
+         * ISO标准年份
+         */
+        isoWeekYear?: number;
+        /**
+         * ISO标准一年中的第几周
+         */
+        isoWeek?: number;
+        /**
+         * ISO标准一周中的第几天(周一:0-周日:7)
+         */
+        isoDayOfWeek?: number;
+    }
+
+    interface DBDate {
+    }
+
+    interface LetOptions {
+        /**
+         * 定义多个变量,变量的值由 变量表达式 计算而来,并且被定义的变量只有在 in 中的 结果表达式 才可以访问。
+         */
+        vars: any;
+        /**
+         * 结果表达式中访问自定义变量时候,请在变量名前加上双美元符号( $$ )并用引号括起来,如:'$$price'
+         */
+        in: any;
+    }
+
+    interface SwitchOptions {
+        /**
+         * switch操作的分支部分
+         */
+        branches: BranchedOptions [];
+        /**
+         * switch的默认操作
+         */
+        default: any;
+    }
+
+    interface BranchedOptions {
+        /**
+         * 判断条件
+         */
+        case: any;
+        /**
+         * 条件为真时执行的操作
+         */
+        then: any;
+    }
+
+    interface ZipOptions {
+        /**
+         * 一个二维数组(inputs 不可以是字段引用),其中每个元素的表达式(这个可以是字段引用)都可以解析为数组。如果其中任意一个表达式返回 null,inputs 也返回
+         *                     null。如果其中任意一个表达式不是指向一个合法的字段 / 解析为数组 / 解析为 null,则返回错误。
+         */
+        inputs: any;
+        /**
+         * 决定输出数组的长度是否采用输入数组中的最长数组的长度。默认为 false,即输入数组中的最短的数组的长度即是输出数组的各个元素的长度。
+         */
+        useLongestLength: any;
+        /**
+         * 一个数组,用于指定在输入数组长度不一的情况下时采用的数组各元素默认值。指定这个字段则必须指定 useLongestLength,否则返回错误。如果 useLongestLength
+         *                     是 true 但是
+         *                     defaults 是空或没有指定,则 zip 用 null 做数组元素的缺省默认值。指定各元素默认值时 defaults 数组的长度必须是输入数组最大的长度。
+         */
+        defaults: any;
+    }
+
+    interface ReduceOptions {
+        /**
+         * 输入数组,可以是任意解析为数组的表达式
+         */
+        input: string | any [];
+        /**
+         * 初始值
+         */
+        initialValue: string;
+        /**
+         * 用来作用于每个元素的表达式,在 in 中有两个可用变量,value 是表示累计值的变量,this 是表示当前数组元素的变量
+         */
+        in: any;
+    }
+
+    interface MapOptions {
+        /**
+         * 一个可以解析为数组的表达式
+         */
+        input: string;
+        /**
+         * 可选,用于表示数组各个元素的变量,默认为 this
+         */
+        as: string;
+        /**
+         * 一个可以应用在给定数组的各个元素上的表达式,各个元素的名字由 as 参数决定(参数名需加 $$ 前缀,如 $$this)
+         */
+        in: any;
+    }
+
+    interface FilterOptions {
+        /**
+         * 一个可以解析为数组的表达式
+         */
+        input: string;
+        /**
+         * 可选,用于表示数组各个元素的变量,默认为 this
+         */
+        as: string;
+        /**
+         * 一个可以解析为布尔值的表达式,用于判断各个元素是否满足条件,各个元素的名字由 as 参数决定(参数名需加 $$ 前缀,如 $$this)
+         */
+        cond: boolean;
+    }
+
+    interface IGeoNearOptions {
+        /**
+         * 地理位置点 (Point)
+         */
+        geometry: Point;
+        /**
+         * 选填,最大距离,单位为米
+         */
+        maxDistance: number;
+        /**
+         * 选填,最小距离,单位为米
+         */
+        minDistance: number;
+    }
+
+    interface IGeoWithinOptions {
+        /**
+         * 地理信息结构,Polygon,MultiPolygon,或 { centerSphere }
+         */
+        geometry: any;
+    }
+
+    interface IGeoIntersectsOptions {
+        /**
+         * 地理信息结构,Point
+         */
+        geometry: any;
+    }
+
+    interface LOGIC_COMMANDS_LITERAL {
+    }
+
+    interface LogicCommand {
+        fieldName: any;
+        operator: any;
+        operands: any;
+        _internalType: InternalSymbol;
+        _setFieldName(fieldName: string): LogicCommand;
+        /**
+         * 查询操作符,用于表示逻辑 "与" 的关系,表示需同时满足多个查询筛选条件
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=and](http://uniapp.dcloud.io/uniCloud/cf-database?id=and)
+         */
+        and(__expressions__: any): LogicCommand;
+        /**
+         * 查询操作符,用于表示逻辑 "或" 的关系,表示需同时满足多个查询筛选条件。或指令有两种用法,一是可以进行字段值的 “或” 操作,二是也可以进行跨字段的 “或” 操作。
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-database?id=or](http://uniapp.dcloud.io/uniCloud/cf-database?id=or)
+         */
+        or(__expressions__: any): LogicCommand;
+    }
+
+    interface InternalSymbol {
+        for(target: any): InternalSymbol;
+    }
+
+    interface UPDATE_COMMANDS_LITERAL {
+    }
+
+    interface UpdateCommand {
+        fieldName: any;
+        operator: UPDATE_COMMANDS_LITERAL;
+        operands: any;
+        _internalType: InternalSymbol;
+        _setFieldName(fieldName: string): UpdateCommand;
+    }
+
+    interface UniCloud {
+        /**
+         * 用于快速开发datacom规范的组件
+         */
+        mixinDatacom: any;
+        /**
+         * 服务空间初始化,返回uniCloud实例
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/init](http://uniapp.dcloud.io/uniCloud/init)
+         */
+        init(options: UniCloudOptions): UniCloud;
+        /**
+         * 获取登录对象
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/authentication?id=custom-auth](http://uniapp.dcloud.io/uniCloud/authentication?id=custom-auth)
+         */
+        customAuth(): Auth;
+        /**
+         * 调用云函数
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cf-functions?id=clientcallfunction](http://uniapp.dcloud.io/uniCloud/cf-functions?id=clientcallfunction)
+         */
+        callFunction(options: CallFunctionOptions): Promise<any>;
+        /**
+         * 调用云函数
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/cloud-obj](http://uniapp.dcloud.io/uniCloud/cloud-obj)
+         */
+        importObject(objectName: string | AnyObject): any;
+        /**
+         * 上传文件到云端
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/storage?id=uploadfile](http://uniapp.dcloud.io/uniCloud/storage?id=uploadfile)
+         */
+        uploadFile(options: UploadFileOptions): Promise<any>;
+        /**
+         * 选择并上传文件
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/storage?id=chooseanduploadfile](http://uniapp.dcloud.io/uniCloud/storage?id=chooseanduploadfile)
+         */
+        chooseAndUploadFile(options: ChooseAndUploadFileOptions): Promise<any>;
+        /**
+         * 删除云端文件
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/storage?id=deletefile](http://uniapp.dcloud.io/uniCloud/storage?id=deletefile)
+         */
+        deleteFile(options: DeleteFileOptions): Promise<any>;
+        /**
+         * 获取文件临时链接
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/storage?id=gettempfileurl](http://uniapp.dcloud.io/uniCloud/storage?id=gettempfileurl)
+         */
+        getTempFileURL(options: GetTempFileURLOptions): Promise<any>;
+        /**
+         * 获取数据库实例
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/jql?id=jssdk](http://uniapp.dcloud.io/uniCloud/jql?id=jssdk)
+         */
+        database(options?: UniCloudOptions): Database;
+        /**
+         * 获取当前用户缓存在token内的信息
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/client-sdk?id=client-getcurrentuserinfo](http://uniapp.dcloud.io/uniCloud/client-sdk?id=client-getcurrentuserinfo)
+         */
+        getCurrentUserInfo(): LocalUserInfo;
+        /**
+         * 获取文件临时链接
+         */
+        on(eventName: string, callback: (result: any) => void): any;
+        /**
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/client-sdk?id=add-interceptor](http://uniapp.dcloud.io/uniCloud/client-sdk?id=add-interceptor)
+         */
+        addInterceptor(apiName: string, interceptor: (result: any) => void);
+        /**
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/client-sdk?id=remove-interceptor](http://uniapp.dcloud.io/uniCloud/client-sdk?id=remove-interceptor)
+         */
+        removeInterceptor(apiName: string, interceptor?: (result: any) => void);
+    }
+
+    interface InterceptorMap {
+        invoke?: (result: any) => void;
+        success?: (result: any) => void;
+        fail?: (result: any) => void;
+        complete?: (result: any) => void;
+    }
+
+    interface ChooseAndUploadFileOptions {
+        /**
+         * 文件类型
+         * - image: 图片
+         * - video: 视频
+         * - all: 任意文件
+         */
+        type: 'image' | 'video' | 'all';
+        /**
+         * 文件数量
+         */
+        count?: number;
+        /**
+         * 允许的文件后缀数组
+         */
+        extension?: any [];
+        /**
+         * original 原图,compressed 压缩图,默认二者都有
+         */
+        sizeType?: string | string [];
+        /**
+         * album 从相册选图,camera 使用相机,默认二者都有
+         */
+        sourceType?: string | string [];
+        /**
+         * 摄像切换
+         * - front: 前置摄像头
+         * - back: 后置摄像头
+         */
+        camera?: 'front' | 'back';
+        /**
+         * 是否压缩所选的视频源文件,默认值为true,需要压缩
+         */
+        compressed?: boolean;
+        /**
+         * 拍摄视频最长拍摄时间,单位秒。最长支持 60 秒
+         */
+        maxDuration?: number;
+        /**
+         * 选择文件后的回调
+         */
+        onChooseFile?: (result: ChooseAndUploadFileOnChooseFileCallbackResult) => void;
+        /**
+         * 上传进度回调
+         */
+        onUploadProgress?: (result: ChooseAndUploadFileOnUploadProgressCallbackResult) => void;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: ChooseAndUploadFileSuccessCallbackResult) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface ChooseAndUploadFileSuccessCallbackResult {
+        /**
+         * 错误信息
+         */
+        errMsg: string;
+        /**
+         * 临时文件路径列表
+         */
+        tempFilePaths: any [];
+        /**
+         * 文件列表,每一项是一个 File 对象
+         */
+        tempFiles: any [];
+    }
+
+    interface ChooseAndUploadFileOnUploadProgressCallbackResult {
+        /**
+         * 触发当前上传进度回调的文件序号
+         */
+        index: number;
+        /**
+         * 已上传大小
+         */
+        loaded: number;
+        /**
+         * 总大小
+         */
+        total: number;
+        /**
+         * 临时文件路径
+         */
+        tempFilePath: string;
+        /**
+         * 文件对象
+         */
+        tempFile: any;
+    }
+
+    interface ChooseAndUploadFileOnChooseFileCallbackResult {
+        /**
+         * 错误信息
+         */
+        errMsg: string;
+        /**
+         * 临时文件路径列表
+         */
+        tempFilePaths: any [];
+        /**
+         * 文件列表,每一项是一个 File 对象
+         */
+        tempFiles: any [];
+    }
+
+    interface LocalUserInfo {
+        /**
+         * 当前用户uid
+         */
+        uid: string;
+        /**
+         * 当前用户角色列表
+         */
+        role: any [];
+        /**
+         * 当前用户权限列表
+         */
+        permission: any [];
+    }
+
+    interface UniCloudOptions {
+        /**
+         * 选择服务供应商
+         * - tencent: 选择腾讯云作为服务商
+         * - aliyun: 选择阿里云作为服务商
+         */
+        provider: 'tencent' | 'aliyun';
+        /**
+         * 服务空间ID
+         */
+        spaceId: string;
+        /**
+         * 服务空间对应的clientSecret
+         */
+        clientSecret?: string;
+        /**
+         * 服务空间地址
+         */
+        endpoint?: string;
+    }
+
+    interface UniCloudError {
+        /**
+         * 错误码
+         */
+        errCode: number | string;
+        /**
+         * 错误信息
+         */
+        errMsg: string;
+        /**
+         * 返回信息
+         */
+        message: string;
+        /**
+         * 请求id方便排错
+         */
+        requestId: string;
+        /**
+         * 请求id方便排错
+         */
+        detail: any;
+    }
+
+    interface UserInfo {
+        /**
+         * 用户在uniCloud的唯一ID
+         */
+        uid: string;
+        /**
+         * 自定义登录的用户ID
+         */
+        customUserId: string;
+    }
+
+    interface Auth {
+        /**
+         * 任何方式登录成功后,可以调用 getUserInfo 获得用户的身份信息
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/authentication?id=authgetuserinfo](http://uniapp.dcloud.io/uniCloud/authentication?id=authgetuserinfo)
+         */
+        getUserInfo(): UserInfo;
+        /**
+         * 开发者可以通过 getLoginState() 来获取当前的登录状态,调用 getLoginState() 后,SDK
+         *                     会识别本地是否有登录状态,如果有,则会尝试刷新登录状态,若刷新登录状态成功,则会返回新的登录状态,否则返回 undefined
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/authentication?id=authgetloginstate](http://uniapp.dcloud.io/uniCloud/authentication?id=authgetloginstate)
+         */
+        getLoginState(): void;
+        /**
+         * 进行匿名登录
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/authentication?id=authsigninanonymously](http://uniapp.dcloud.io/uniCloud/authentication?id=authsigninanonymously)
+         */
+        signInAnonymously(): void;
+        /**
+         * 进行自定义登录
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/authentication?id=authsigninwithticket](http://uniapp.dcloud.io/uniCloud/authentication?id=authsigninwithticket)
+         */
+        signInWithTicket(): void;
+        /**
+         * 进行自定义登录
+         *
+         * 文档: [http://uniapp.dcloud.io/uniCloud/authentication?id=authshouldrefreshaccesstoken](http://uniapp.dcloud.io/uniCloud/authentication?id=authshouldrefreshaccesstoken)
+         */
+        shouldRefreshAccessToken(callback: (result: any) => void): void;
+    }
+
+    interface CallFunctionOptions {
+        /**
+         * 云函数名
+         */
+        name: string;
+        /**
+         * 传递给云函数的参数
+         */
+        data?: any;
+        /**
+         * 成功返回的回调函数
+         */
+        success?: (result: CallFunctionResult) => void;
+        /**
+         * 失败返回的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 结束的回调函数(调用成功、失败都会执行
+         */
+        complete?: (result: CallFunctionResult) => void;
+    }
+
+    interface GeneralCallbackResult {
+        /**
+         * 状态码,操作成功则不返回
+         */
+        code: string;
+        /**
+         * 错误信息
+         */
+        message: string;
+    }
+
+    interface CallFunctionResult {
+        /**
+         * 云函数执行结果
+         */
+        result: any;
+        /**
+         * 请求序列号,用于错误排查
+         */
+        requestId?: string;
+    }
+
+    interface UploadFileOptions {
+        /**
+         * 文件的绝对路径,包含文件名。例如 foo/bar.jpg、foo/bar/baz.jpg 等
+         */
+        cloudPath: string;
+        /**
+         * 要上传的文件对象
+         */
+        filePath: string;
+        /**
+         * 上传进度回调
+         */
+        onUploadProgress?: (result: OnUploadProgressResult) => void;
+        /**
+         * 成功返回的回调函数
+         */
+        success?: (result: UploadFileResult) => void;
+        /**
+         * 失败返回的回调函数
+         */
+        fail?: (result: GeneralCallbackResult) => void;
+        /**
+         * 结束的回调函数(调用成功、失败都会执行
+         */
+        complete?: (result: UploadFileResult) => void;
+    }
+
+    interface OnUploadProgressResult {
+        /**
+         * 已上传大小
+         */
+        loaded: number;
+        /**
+         * 上传文件总大小
+         */
+        total: number;
+    }
+
+    interface UploadFileResult {
+        /**
+         * 文件唯一 ID,用来访问文件,建议存储起来
+         */
+        fileID: string;
+    }
+
+    interface DeleteFileOptions {
+        /**
+         * 文件ID组成的数组
+         */
+        fileList: any [];
+        /**
+         * 成功返回的回调函数
+         */
+        success?: (result: DeleteFileResult) => void;
+        /**
+         * 失败返回的回调函数
+         */
+        fail?: (result: GeneralCallbackResult) => void;
+        /**
+         * 结束的回调函数(调用成功、失败都会执行
+         */
+        complete?: (result: DeleteFileResult) => void;
+    }
+
+    interface DeleteFileItem {
+        /**
+         * 云端fileID
+         */
+        fileID: string;
+        /**
+         * 状态码,操作成功则不返回
+         */
+        code: string;
+    }
+
+    interface DeleteFileResult {
+        /**
+         * 要删除的文件 ID 组成的数组
+         */
+        fileList: DeleteFileItem [];
+    }
+
+    interface GetTempFileURLOptions {
+        /**
+         * 文件ID组成的数组
+         */
+        fileList: any [];
+        /**
+         * 成功返回的回调函数
+         */
+        success?: (result: GetTempFileURLResult) => void;
+        /**
+         * 失败返回的回调函数
+         */
+        fail?: (result: GeneralCallbackResult) => void;
+        /**
+         * 结束的回调函数(调用成功、失败都会执行
+         */
+        complete?: (result: GetTempFileURLResult) => void;
+    }
+
+    interface GetTempFileURLItem {
+        /**
+         * 文件 ID
+         */
+        fileID: string;
+        /**
+         * 状态码,操作成功则为 SUCCESS
+         */
+        code: string;
+        /**
+         * 文件访问链接
+         */
+        tempFileURL: string;
+    }
+
+    interface GetTempFileURLResult {
+        /**
+         * 存储下载链接的数组
+         */
+        fileList: any [];
+    }
+}
+
+/**
+ * uniCloud 实例变量
+ *
+ * 文档: [https://uniapp.dcloud.net.cn/uniCloud/](https://uniapp.dcloud.net.cn/uniCloud/)
+ */
+declare const uniCloud: UniCloud.UniCloud;

+ 7 - 0
mini/types-tips-test/uni-app/common.d.ts

xqd
@@ -0,0 +1,7 @@
+interface AnyObject {
+  [key: string]: any;
+}
+
+type KVInfer<T> = { [K in keyof T]: T[K] };
+
+type Void<T> = T | undefined | null;

+ 7 - 0
mini/types-tips-test/uni-app/index.d.ts

xqd
@@ -0,0 +1,7 @@
+/// <reference path="./app.d.ts" />
+/// <reference path="./common.d.ts" />
+/// <reference path="./page.d.ts" />
+/// <reference path="./uni.d.ts" />
+/// <reference path="./cloud.d.ts" />
+/// <reference path="./vue.d.ts" />
+/// <reference path="../html5plus/plus.d.ts" />

+ 66 - 0
mini/types-tips-test/uni-app/kuaishou.d.ts

xqd
@@ -0,0 +1,66 @@
+declare namespace UniApp {
+    interface ks {
+      /**
+       * 登录
+       *
+       * 文档: [https://mp.kuaishou.com/docs/develop/api-next/open/payment/ks.pay.html#ks-pay)
+       */
+      pay(options: PayOptions): void;
+      createVideoContext(videoId: string, currentComponent?: any): VideoContext;
+    }
+}
+
+interface PayOptions {
+  orderInfo: object,
+  service: number,
+  /**
+   * 接口调用成功的回调函数
+   */
+  success?: (result: any) => void;
+  /**
+   * 接口调用失败的回调函数
+   */
+  fail?: (result: any) => void;
+  /**
+   * 接口调用结束的回调函数(调用成功、失败都会执行)
+   */
+  complete?: (result: any) => void;
+}
+
+interface VideoContext {
+  /**
+   * 暂停
+   */
+  pause(): void;
+  /**
+   * 播放
+   */
+  play(): void;
+  /**
+   * 跳转到指定位置,单位 s
+   */
+  seek(position: number): void;
+  /**
+   * 发送弹幕,danmu 包含两个属性 text, color。
+   */
+  sendDanmu(danmu: Danmu): void;
+  /**
+   * 设置倍速播放,支持的倍率有 0.5/0.8/1.0/1.25/1.5
+   */
+  playbackRate(rate: number): void;
+  /**
+   * 进入全屏,可传入{direction}参数(1.7.0起支持),详见video组件文档
+   */
+  requestFullScreen(direction?: RequestFullScreenOptions): void;
+  /**
+   * 退出全屏
+   */
+  exitFullScreen(): void;
+}
+
+/**
+ * Uni 实例变量
+ *
+ * 文档: [http://uniapp.dcloud.io/api](http://uniapp.dcloud.io/api)
+ */
+declare let ks: UniApp.ks;

+ 244 - 0
mini/types-tips-test/uni-app/page.d.ts

xqd
@@ -0,0 +1,244 @@
+declare namespace Page {
+    interface CustomShareContent {
+        /**
+         * 转发标题。默认值:当前应用名称
+         */
+        title?: string;
+        /**
+         * 转发路径,必须是以 / 开头的完整路径。默认值:当前页面 path
+         */
+        path?: string;
+        /**
+         * 自定义图片路径,可以是本地文件路径、代码包文件路径或者网络图片路径。支持PNG及JPG。显示图片长宽比是 5:4,默认值:使用默认截图
+         */
+        imageUrl?: string;
+    }
+
+    interface ShareTimelineContent {
+        /**
+         * 自定义标题。默认值:当前小程序名称
+         */
+        title?: string;
+        /**
+         * 自定义页面路径中携带的参数
+         */
+        path?: string;
+        /**
+         * 自定义图片路径,可以是本地文件或者网络图片。支持 PNG 及 JPG,显示图片长宽比是 1:1。
+         */
+        imageUrl?: string;
+    }
+
+    interface PageScrollOption {
+        /**
+         * 页面在垂直方向已滚动的距离(单位 px)
+         */
+        scrollTop: number;
+    }
+
+    interface ShareAppMessageOption {
+        /**
+         * 转发事件来源。
+         * 可选值:
+         * - `button`:页面内转发按钮;
+         * - `menu`:右上角转发菜单。
+         */
+        from: "button" | "menu";
+        /**
+         * 如果 `from` 值是 `button`,则 `target` 是触发这次转发事件的 `button`,否则为 `undefined`
+         */
+        target: any;
+        /**
+         * 页面中包含 `<web-view>` 组件时,返回当前 `<web-view>` 的 url
+         */
+        webViewUrl?: string;
+    }
+
+    interface AddToFavoritesOption {
+        /**
+         * 页面中包含 `<web-view>` 组件时,返回当前 `<web-view>` 的 url
+         */
+        webviewUrl: string
+    }
+
+    interface CustomFavoritesContent {
+        /**
+         * 自定义标题,默认值:页面标题或账号名称
+         */
+        title?: string;
+        /**
+         * 自定义 query 字段
+         */
+        path?: string;
+        /**
+         * 自定义图片,显示图片长宽比为 1:1
+         */
+        imageUrl?: string;
+    }
+
+    interface TabItemTapOption {
+        /**
+         * 被点击 tabItem 的序号,从0开始
+         */
+        index: string;
+        /**
+         * 被点击 tabItem 的页面路径
+         */
+        pagePath: string;
+        /**
+         * 被点击 tabItem 的按钮文字
+         */
+        text: string;
+    }
+
+    interface NavigationBarButtonTapOption {
+        /**
+         * 原生标题栏按钮数组的下标
+         */
+        index: string;
+    }
+
+    interface BackPressOption {
+        /**
+         * - backbutton 顶部导航栏左边的返回按钮或 Android 实体返回键
+         * - navigateBack 返回 API,即 uni.navigateBack()
+         */
+        from: 'backbutton' | 'navigateBack';
+    }
+
+    interface NavigationBarSearchInputEvent {
+        /**
+         * 搜索输入框输入内容
+         */
+        text: string;
+    }
+
+    interface PageInstanceBaseProps<D extends AnyObject = any> {
+        /**
+         * 到当前页面的路径,类型为 `String`
+         */
+        route?: string;
+    }
+
+    interface PageInstance<D extends AnyObject = any, T extends AnyObject = any> extends PageInstanceBaseProps<D> {
+        /**
+         * 生命周期回调 监听页面初始化
+         *
+         * 页面初始化时触发。一个页面只会调用一次,可以在 onInit 的参数中获取打开当前页面路径中的参数。
+         * @param query 打开当前页面路径中的参数
+         */
+        onInit?(query?: AnyObject): void;
+        /**
+         * 生命周期回调 监听页面加载
+         *
+         * 页面加载时触发。一个页面只会调用一次,可以在 onLoad 的参数中获取打开当前页面路径中的参数。
+         * @param query 打开当前页面路径中的参数
+         */
+        onLoad?(query?: AnyObject): void;
+        /**
+         * 生命周期回调 监听页面显示
+         *
+         * 页面显示/切入前台时触发。
+         */
+        onShow?(): void;
+        /**
+         * 生命周期回调 监听页面初次渲染完成
+         *
+         * 页面初次渲染完成时触发。一个页面只会调用一次,代表页面已经准备妥当,可以和视图层进行交互。
+         */
+        onReady?(): void;
+        /**
+         * 生命周期回调 监听页面隐藏
+         *
+         * 页面隐藏/切入后台时触发。 如 `navigateTo` 或底部 `tab` 切换到其他页面,应用切入后台等。
+         */
+        onHide?(): void;
+        /**
+         * 生命周期回调 监听页面卸载
+         *
+         * 页面卸载时触发。如 `redirectTo` 或 `navigateBack` 到其他页面时。
+         */
+        onUnload?(): void;
+        /**
+         * 监听用户下拉动作
+         * - 需要在 `pages.json` 的页面配置中开启 `enablePullDownRefresh` 。
+         * - 可以通过 `uni.startPullDownRefresh` 触发下拉刷新,调用后触发下拉刷新动画,效果与用户手动下拉刷新一致。
+         * - 当处理完数据刷新后,`uni.stopPullDownRefresh` 可以停止当前页面的下拉刷新。
+         */
+        onPullDownRefresh?(): void;
+        /**
+         * 页面上拉触底事件的处理函数
+         * - 可以在 `pages.json` 的页面配置中设置触发距离 `onReachBottomDistance` 。
+         * - 在触发距离内滑动期间,本事件只会被触发一次。
+         */
+        onReachBottom?(): void;
+        /**
+         * 用户点击右上角转发
+         *
+         * 监听用户点击页面内转发按钮(`<button>` 组件 `open-type="share"`)或右上角菜单“转发”按钮的行为,并自定义转发内容。
+         * @param options 分享发起来源参数
+         * @return 转发内容
+         */
+        onShareAppMessage?(options: ShareAppMessageOption): CustomShareContent;
+        /**
+         * 用户点击右上角转发到朋友圈
+         *
+         * 监听右上角菜单“分享到朋友圈”按钮的行为,并自定义发享内容。
+         */
+        onShareTimeline?(): ShareTimelineContent;
+        /**
+         * 用户点击右上角收藏
+         * 
+         * 监听用户点击右上角菜单“收藏”按钮的行为,并自定义收藏内容。
+         */
+        onAddToFavorites?(options: AddToFavoritesOption): CustomFavoritesContent;
+        /**
+         * 页面滚动触发事件的处理函数
+         *
+         * 监听用户滑动页面事件。
+         * @param options 页面滚动参数
+         */
+        onPageScroll?(options: PageScrollOption): void;
+        /**
+         * 页面尺寸改变时触发
+         * @param options 页面滚动参数
+         */
+        onResize?(options: PageScrollOption): void;
+        /**
+         * 当前是 tab 页时,点击 tab 时触发
+         * @param options tab 点击参数
+         */
+        onTabItemTap?(options: TabItemTapOption): void;
+        /**
+         * 监听原生标题栏按钮点击事件
+         * @param options tab 点击参数
+         */
+        onNavigationBarButtonTap?(options: NavigationBarButtonTapOption): void;
+        /**
+         * 监听页面返回
+         * @param options tab 点击参数
+         * @return 返回 `true` 时阻止页面返回
+         */
+        onBackPress?(options: BackPressOption): any;
+        /**
+         * 监听原生标题栏搜索输入框输入内容变化事件
+         */
+        onNavigationBarSearchInputChanged?(event: NavigationBarSearchInputEvent): void;
+        /**
+         * 监听原生标题栏搜索输入框搜索事件,用户点击软键盘上的“搜索”按钮时触发。
+         */
+        onNavigationBarSearchInputConfirmed?(event: NavigationBarSearchInputEvent): void;
+        /**
+         * 监听原生标题栏搜索输入框点击事件
+         */
+        onNavigationBarSearchInputClicked?(): void;
+    }
+
+    type PageConstructor = <T extends AnyObject & PageInstance>(
+        options: PageInstance<AnyObject, T> & T,
+    ) => void;
+
+    type GetCurrentPages = <T extends AnyObject = {}>() => Array<PageInstance<AnyObject, T> & T>;
+}
+
+declare const getCurrentPages: Page.GetCurrentPages;

+ 16137 - 0
mini/types-tips-test/uni-app/uni.d.ts

xqd
@@ -0,0 +1,16137 @@
+declare namespace UniApp {
+    interface Uni {
+        $u: any;
+        /**
+         * 将 Base64 字符串转成 ArrayBuffer 对象
+         *
+         * 文档: [http://uniapp.dcloud.io/api/base64ToArrayBuffer?id=base64toarraybuffer](http://uniapp.dcloud.io/api/base64ToArrayBuffer?id=base64toarraybuffer)
+         */
+        base64ToArrayBuffer(base64: string): ArrayBuffer;
+        /**
+         * 将 ArrayBuffer 对象转成 Base64 字符串
+         *
+         * 文档: [http://uniapp.dcloud.io/api/arrayBufferToBase64?id=arraybuffertobase64](http://uniapp.dcloud.io/api/arrayBufferToBase64?id=arraybuffertobase64)
+         */
+        arrayBufferToBase64(arrayBuffer: ArrayBuffer): string;
+        /**
+         * 监听自定义事件。事件可以由 uni.$emit 触发。回调函数会接收 uni.$emit 传递的参数。
+         *
+         * 文档: [http://uniapp.dcloud.io/api/window/communication?id=on](http://uniapp.dcloud.io/api/window/communication?id=on)
+         */
+        $on(eventName: string, callback: (result: any) => void): void;
+        /**
+         * 触发自定义事件,附加的参数会传递给事件监听器。
+         *
+         * 文档: [http://uniapp.dcloud.io/api/window/communication?id=emit](http://uniapp.dcloud.io/api/window/communication?id=emit)
+         */
+        $emit(eventName: string, param?: any): void;
+        /**
+         * 监听一个自定义事件。事件只触发一次,在第一次触发之后移除事件监听器。
+         *
+         * 文档: [http://uniapp.dcloud.io/api/window/communication?id=once](http://uniapp.dcloud.io/api/window/communication?id=once)
+         */
+        $once(eventName: string, callback: (result: any) => void): void;
+        /**
+         * 移除自定义事件监听器。如果没有指定事件名,则移除所有事件监听器。如果提供事件名,则移除该事件的所有监听器。如果提供了事件名和回调,则只移除这个回调的监听器。
+         *
+         * 文档: [http://uniapp.dcloud.io/api/window/communication?id=off](http://uniapp.dcloud.io/api/window/communication?id=off)
+         */
+        $off(eventName?: string | string [], callback?: (result: any) => void): void;
+        /**
+         * 通过id 获取 subNVues 原生子窗体的实例
+         *
+         * 文档: [http://uniapp.dcloud.io/api/window/subNVues?id=app-getsubnvuebyid](http://uniapp.dcloud.io/api/window/subNVues?id=app-getsubnvuebyid)
+         */
+        getSubNVueById(subNvueId: string): SubNVue;
+        /**
+         * 获取当前 subNVues 原生子窗体的实例
+         *
+         * 文档: [http://uniapp.dcloud.io/api/window/subNVues?id=app-getsubnvuebyid](http://uniapp.dcloud.io/api/window/subNVues?id=app-getsubnvuebyid)
+         */
+        getCurrentSubNVue(): SubNVue;
+        /**
+         * 发起网络请求
+         *
+         * 文档: [http://uniapp.dcloud.io/api/request/request?id=request](http://uniapp.dcloud.io/api/request/request?id=request)
+         */
+        request(options: RequestOptions): RequestTask;
+        /**
+         * 上传文件
+         *
+         * 文档: [http://uniapp.dcloud.io/api/request/network-file?id=uploadfile](http://uniapp.dcloud.io/api/request/network-file?id=uploadfile)
+         */
+        uploadFile(options: UploadFileOption): UploadTask;
+        /**
+         * 下载文件
+         *
+         * 文档: [http://uniapp.dcloud.io/api/request/network-file?id=downloadfile](http://uniapp.dcloud.io/api/request/network-file?id=downloadfile)
+         */
+        downloadFile(options: DownloadFileOption): DownloadTask;
+        /**
+         * 导入原生插件
+         *
+         * 文档: [http://uniapp.dcloud.io/api/request/network-file?id=downloadfile](http://uniapp.dcloud.io/api/request/network-file?id=downloadfile)
+         */
+        requireNativePlugin(moduleName: string): void;
+        /**
+         * upx 换算为 px
+         *
+         * 文档: [http://uniapp.dcloud.io/frame?id=upx2px](http://uniapp.dcloud.io/frame?id=upx2px)
+         */
+        upx2px(upx: number): number;
+        /**
+         * 配置自签名证书
+         *
+         * 文档: [http://uniapp.dcloud.io/api/request/request?id=configMTLS](http://uniapp.dcloud.io/api/request/request?id=configMTLS)
+         */
+        configMTLS(options: ConfigMTLSOptions): void;
+        /**
+         * 创建一个 WebSocket 连接
+         *
+         * 文档: [http://uniapp.dcloud.io/api/request/websocket?id=connectsocket](http://uniapp.dcloud.io/api/request/websocket?id=connectsocket)
+         */
+        connectSocket(options: ConnectSocketOption): SocketTask;
+        /**
+         * 监听WebSocket连接打开事件
+         *
+         * 文档: [http://uniapp.dcloud.io/api/request/websocket?id=onsocketopen](http://uniapp.dcloud.io/api/request/websocket?id=onsocketopen)
+         */
+        onSocketOpen(options: (result: OnSocketOpenCallbackResult) => void): void;
+        /**
+         * 监听WebSocket错误
+         *
+         * 文档: [http://uniapp.dcloud.io/api/request/websocket?id=onsocketerror](http://uniapp.dcloud.io/api/request/websocket?id=onsocketerror)
+         */
+        onSocketError(callback: (result: GeneralCallbackResult) => void): void;
+        /**
+         * 通过 WebSocket 连接发送数据
+         *
+         * 文档: [http://uniapp.dcloud.io/api/request/websocket?id=sendsocketmessage](http://uniapp.dcloud.io/api/request/websocket?id=sendsocketmessage)
+         */
+        sendSocketMessage(options: SendSocketMessageOptions): void;
+        /**
+         * 监听WebSocket接受到服务器的消息事件
+         *
+         * 文档: [http://uniapp.dcloud.io/api/request/websocket?id=onsocketmessage](http://uniapp.dcloud.io/api/request/websocket?id=onsocketmessage)
+         */
+        onSocketMessage(callback: (result: OnSocketMessageCallbackResult) => void): void;
+        /**
+         * 关闭 WebSocket 连接
+         *
+         * 文档: [http://uniapp.dcloud.io/api/request/websocket?id=closesocket](http://uniapp.dcloud.io/api/request/websocket?id=closesocket)
+         */
+        closeSocket(options: CloseSocketOptions): void;
+        /**
+         * 监听WebSocket关闭
+         *
+         * 文档: [http://uniapp.dcloud.io/api/request/websocket?id=onsocketclose](http://uniapp.dcloud.io/api/request/websocket?id=onsocketclose)
+         */
+        onSocketClose(callback: (result: GeneralCallbackResult) => void): void;
+        /**
+         * 从本地相册选择图片或使用相机拍照
+         *
+         * 文档: [http://uniapp.dcloud.io/api/media/image?id=chooseimage](http://uniapp.dcloud.io/api/media/image?id=chooseimage)
+         */
+        chooseImage(options: ChooseImageOptions): void;
+        /**
+         * 从本地选择文件(仅支持H5)
+         *
+         * 文档: [http://uniapp.dcloud.io/api/media/file?id=chooseFile](http://uniapp.dcloud.io/api/media/file?id=chooseFile)
+         */
+        chooseFile(options: ChooseFileOptions): void;
+        /**
+         * 预览图片
+         *
+         * 文档: [http://uniapp.dcloud.io/api/media/image?id=previewimage](http://uniapp.dcloud.io/api/media/image?id=previewimage)
+         */
+        previewImage(options: PreviewImageOptions): void;
+        /**
+         * 预览图片
+         *
+         * 文档: [http://uniapp.dcloud.io/api/media/image?id=closepreviewimage](http://uniapp.dcloud.io/api/media/image?id=closepreviewimage)
+         */
+        closePreviewImage(options: CallBackOptions): void;
+        /**
+         * 预览图片
+         *
+         * 文档: [http://uniapp.dcloud.io/api/media/image?id=getimageinfo](http://uniapp.dcloud.io/api/media/image?id=getimageinfo)
+         */
+        getImageInfo(options: GetImageInfoOptions): void;
+        /**
+         * 保存图片到系统相册
+         *
+         * 文档: [http://uniapp.dcloud.io/api/media/image?id=saveimagetophotosalbum](http://uniapp.dcloud.io/api/media/image?id=saveimagetophotosalbum)
+         */
+        saveImageToPhotosAlbum(options: SaveImageToPhotosAlbumOptions): void;
+        /**
+         * 压缩图片
+         *
+         * 文档: [http://uniapp.dcloud.io/api/media/image?id=compressimage](http://uniapp.dcloud.io/api/media/image?id=compressimage)
+         */
+        compressImage(options: CompressImageOptions): void;
+        /**
+         * 录音管理
+         *
+         * 文档: [http://uniapp.dcloud.io/api/media/record-manager?id=getrecordermanager](http://uniapp.dcloud.io/api/media/record-manager?id=getrecordermanager)
+         */
+        getRecorderManager(): RecorderManager;
+        /**
+         * 获取全局唯一的背景音频管理器 backgroundAudioManager
+         *
+         * 文档: [http://uniapp.dcloud.io/api/media/background-audio-manager?id=getbackgroundaudiomanager](http://uniapp.dcloud.io/api/media/background-audio-manager?id=getbackgroundaudiomanager)
+         */
+        getBackgroundAudioManager(): BackgroundAudioManager;
+        /**
+         * 创建并返回 audio 上下文 audioContext 对象
+         *
+         * 文档: [http://uniapp.dcloud.io/api/media/audio-context?id=createinneraudiocontext](http://uniapp.dcloud.io/api/media/audio-context?id=createinneraudiocontext)
+         */
+        createInnerAudioContext(): InnerAudioContext;
+        /**
+         * 拍摄视频或从手机相册中选视频,返回视频的临时文件路径。
+         *
+         * 文档: [http://uniapp.dcloud.io/api/media/video?id=choosevideo](http://uniapp.dcloud.io/api/media/video?id=choosevideo)
+         */
+        chooseVideo(options: ChooseVideoOptions): void;
+        /**
+         * 压缩视频
+         *
+         * 文档: [http://uniapp.dcloud.io/api/media/video?id=compressvideo](http://uniapp.dcloud.io/api/media/video?id=compressvideo)
+         */
+        compressVideo(options: CompressVideoOptions): void;
+        /**
+         * 压缩视频
+         *
+         * 文档: [http://uniapp.dcloud.io/api/media/video?id=getvideoinfo](http://uniapp.dcloud.io/api/media/video?id=getvideoinfo)
+         */
+        getVideoInfo(options: GetVideoInfoOptions): void;
+        /**
+         * 打开视频编辑器
+         *
+         * 文档: [http://uniapp.dcloud.io/api/media/video?id=openvideoeditor](http://uniapp.dcloud.io/api/media/video?id=openvideoeditor)
+         */
+        openVideoEditor(options: OpenVideoEditorOptions): void;
+        /**
+         * 保存视频到系统相册
+         *
+         * 文档: [http://uniapp.dcloud.io/api/media/video?id=savevideotophotosalbum](http://uniapp.dcloud.io/api/media/video?id=savevideotophotosalbum)
+         */
+        saveVideoToPhotosAlbum(options: SaveVideoToPhotosAlbumOptions): void;
+        /**
+         * 创建并返回 video 上下文 videoContext 对象
+         *
+         * 文档: [http://uniapp.dcloud.io/api/media/video-context?id=createvideocontext](http://uniapp.dcloud.io/api/media/video-context?id=createvideocontext)
+         */
+        createVideoContext(videoId: string, currentComponent?: any): VideoContext;
+        /**
+         * 创建并返回 camera 组件的上下文 cameraContext 对象
+         *
+         * 文档: [http://uniapp.dcloud.io/api/media/camera-context](http://uniapp.dcloud.io/api/media/camera-context)
+         */
+        createCameraContext(): CameraContext;
+        /**
+         * 创建 live-pusher 上下文 livePusherContext 对象
+         *
+         * 文档: [http://uniapp.dcloud.io/api/media/camera-context](http://uniapp.dcloud.io/api/media/camera-context)
+         */
+        createLivePusherContext(livePusherId: string, currentComponent: any): LivePusherContext;
+        /**
+         * 保存文件到本地
+         *
+         * 文档: [http://uniapp.dcloud.io/api/file/file?id=savefile](http://uniapp.dcloud.io/api/file/file?id=savefile)
+         */
+        saveFile(options: SaveFileOptions): void;
+        /**
+         * 获取文件信息
+         */
+        getFileInfo(options: GetFileInfoOptions): void;
+        /**
+         * 获取本地已保存的文件列表
+         *
+         * 文档: [http://uniapp.dcloud.io/api/file/file?id=getsavedfilelist](http://uniapp.dcloud.io/api/file/file?id=getsavedfilelist)
+         */
+        getSavedFileList(options: GetSavedFileListOptions): void;
+        /**
+         * 获取本地文件的文件信息
+         *
+         * 文档: [http://uniapp.dcloud.io/api/file/file?id=getsavedfileinfo](http://uniapp.dcloud.io/api/file/file?id=getsavedfileinfo)
+         */
+        getSavedFileInfo(options: GetSavedFileInfoOptions): void;
+        /**
+         * 删除本地存储的文件
+         *
+         * 文档: [http://uniapp.dcloud.io/api/file/file?id=removesavedfile](http://uniapp.dcloud.io/api/file/file?id=removesavedfile)
+         */
+        removeSavedFile(options: RemoveSavedFileOptions): void;
+        /**
+         * 新开页面打开文档,支持格式:doc, xls, ppt, pdf, docx, xlsx, pptx
+         *
+         * 文档: [http://uniapp.dcloud.io/api/file/file?id=opendocument](http://uniapp.dcloud.io/api/file/file?id=opendocument)
+         */
+        openDocument(options: OpenDocumentOptions): void;
+        /**
+         * 将数据存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个异步接口
+         *
+         * 文档: [http://uniapp.dcloud.io/api/storage/storage?id=setstorage](http://uniapp.dcloud.io/api/storage/storage?id=setstorage)
+         */
+        setStorage(options: SetStorageOptions): void;
+        /**
+         * 将 data 存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个同步接口
+         *
+         * 文档: [http://uniapp.dcloud.io/api/storage/storage?id=setstoragesync](http://uniapp.dcloud.io/api/storage/storage?id=setstoragesync)
+         */
+        setStorageSync(key: string, value: any): void;
+        /**
+         * 自定义统计上报数据
+         *
+         * 文档: [http://uniapp.dcloud.io/api/other/report?id=统计](http://uniapp.dcloud.io/api/other/report?id=统计)
+         */
+        report(eventName: string, options: any): void;
+        /**
+         * 从本地缓存中异步获取指定 key 对应的内容
+         *
+         * 文档: [http://uniapp.dcloud.io/api/storage/storage?id=getstorage](http://uniapp.dcloud.io/api/storage/storage?id=getstorage)
+         */
+        getStorage(options: GetStorageOptions): void;
+        /**
+         * 从本地缓存中同步获取指定 key 对应的内容
+         *
+         * 文档: [http://uniapp.dcloud.io/api/storage/storage?id=getstoragesync](http://uniapp.dcloud.io/api/storage/storage?id=getstoragesync)
+         */
+        getStorageSync(key: string): any;
+        /**
+         * 异步获取当前 storage 的相关信息
+         *
+         * 文档: [http://uniapp.dcloud.io/api/storage/storage?id=getstorageinfo](http://uniapp.dcloud.io/api/storage/storage?id=getstorageinfo)
+         */
+        getStorageInfo(options: GetStorageInfoOptions): void;
+        /**
+         * 同步获取当前 storage 的相关信息
+         *
+         * 文档: [http://uniapp.dcloud.io/api/storage/storage?id=getstorageinfosync](http://uniapp.dcloud.io/api/storage/storage?id=getstorageinfosync)
+         */
+        getStorageInfoSync(): GetStorageInfoSuccess;
+        /**
+         * 从本地缓存中异步移除指定 key
+         *
+         * 文档: [http://uniapp.dcloud.io/api/storage/storage?id=removestorage](http://uniapp.dcloud.io/api/storage/storage?id=removestorage)
+         */
+        removeStorage(options: RemoveStorageOptions): void;
+        /**
+         * 从本地缓存中同步移除指定 key
+         *
+         * 文档: [http://uniapp.dcloud.io/api/storage/storage?id=removestoragesync](http://uniapp.dcloud.io/api/storage/storage?id=removestoragesync)
+         */
+        removeStorageSync(key: string): void;
+        /**
+         * 清理本地数据缓存
+         *
+         * 文档: [http://uniapp.dcloud.io/api/storage/storage?id=clearstorage](http://uniapp.dcloud.io/api/storage/storage?id=clearstorage)
+         */
+        clearStorage(): void;
+        /**
+         * 同步清理本地数据缓存
+         *
+         * 文档: [http://uniapp.dcloud.io/api/storage/storage?id=clearstoragesync](http://uniapp.dcloud.io/api/storage/storage?id=clearstoragesync)
+         */
+        clearStorageSync(): void;
+        /**
+         * 获取当前的地理位置、速度
+         *
+         * 文档: [http://uniapp.dcloud.io/api/location/location?id=getlocation](http://uniapp.dcloud.io/api/location/location?id=getlocation)
+         */
+        getLocation(options: GetLocationOptions): void;
+        /**
+         * 打开地图选择位置。
+         *
+         * 文档: [http://uniapp.dcloud.io/api/location/location?id=chooselocation](http://uniapp.dcloud.io/api/location/location?id=chooselocation)
+         */
+        chooseLocation(options: ChooseLocationOptions): void;
+        /**
+         * 使用地图查看位置
+         *
+         * 文档: [http://uniapp.dcloud.io/api/location/open-location?id=openlocation](http://uniapp.dcloud.io/api/location/open-location?id=openlocation)
+         */
+        openLocation(options: OpenLocationOptions): void;
+        /**
+         * 创建并返回 map 上下文 mapContext 对象
+         *
+         * 文档: [http://uniapp.dcloud.io/api/location/map?id=createmapcontext](http://uniapp.dcloud.io/api/location/map?id=createmapcontext)
+         */
+        createMapContext(mapId: string, currentComponent?: any): MapContext;
+        /**
+         * 异步获取系统信息
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/info?id=getsysteminfo](http://uniapp.dcloud.io/api/system/info?id=getsysteminfo)
+         */
+        getSystemInfo(options: GetSystemInfoOptions): void;
+        /**
+         * 同步获取系统信息
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/info?id=getsysteminfosync](http://uniapp.dcloud.io/api/system/info?id=getsysteminfosync)
+         */
+        getSystemInfoSync(): GetSystemInfoResult;
+        /**
+         * 判断uni-app的API,回调,参数,组件等是否在当前版本可用
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/info?id=caniuse](http://uniapp.dcloud.io/api/system/info?id=caniuse)
+         */
+        canIUse(options: string): boolean;
+        /**
+         * 获取网络类型
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/network?id=getnetworktype](http://uniapp.dcloud.io/api/system/network?id=getnetworktype)
+         */
+        getNetworkType(options: GetNetworkTypeOptions): void;
+        /**
+         * 监听网络状态变化
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/network?id=onnetworkstatuschange](http://uniapp.dcloud.io/api/system/network?id=onnetworkstatuschange)
+         */
+        onNetworkStatusChange(callback: (result: OnNetworkStatusChangeSuccess) => void): void;
+        /**
+         * 取消监听网络状态变化
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/compass?id=offnetworkstatuschange](http://uniapp.dcloud.io/api/system/compass?id=offnetworkstatuschange)
+         */
+        offNetworkStatusChange(callback: (result: any) => void): void;
+        /**
+         * 监听加速度数据
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/accelerometer?id=onaccelerometerchange](http://uniapp.dcloud.io/api/system/accelerometer?id=onaccelerometerchange)
+         */
+        onAccelerometerChange(callback: (result: OnAccelerometerChangeSuccess) => void): void;
+        /**
+         * 取消监听加速度数据
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/accelerometer?id=offaccelerometerchange](http://uniapp.dcloud.io/api/system/accelerometer?id=offaccelerometerchange)
+         */
+        offAccelerometerChange(callback: (result: any) => void): void;
+        /**
+         * 开始监听加速度数据
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/accelerometer?id=startaccelerometer](http://uniapp.dcloud.io/api/system/accelerometer?id=startaccelerometer)
+         */
+        startAccelerometer(options?: StartAccelerometerOptions): void;
+        /**
+         * 停止监听加速度数据
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/accelerometer?id=stopaccelerometer](http://uniapp.dcloud.io/api/system/accelerometer?id=stopaccelerometer)
+         */
+        stopAccelerometer(options?: StopAccelerometerOptions): void;
+        /**
+         * 监听罗盘数据
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/compass?id=oncompasschange](http://uniapp.dcloud.io/api/system/compass?id=oncompasschange)
+         */
+        onCompassChange(callback: (result: OnCompassChangeSuccess) => void): void;
+        /**
+         * 取消监听罗盘数据
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/compass?id=offcompasschange](http://uniapp.dcloud.io/api/system/compass?id=offcompasschange)
+         */
+        offCompassChange(callback: (result: any) => void): void;
+        /**
+         * 开始监听罗盘数据
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/compass?id=startcompass](http://uniapp.dcloud.io/api/system/compass?id=startcompass)
+         */
+        startCompass(options?: StartCompassOptions): void;
+        /**
+         * 停止监听罗盘数据
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/compass?id=stopcompass](http://uniapp.dcloud.io/api/system/compass?id=stopcompass)
+         */
+        stopCompass(options?: StopCompassOptions): void;
+        /**
+         * 拨打电话
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/phone?id=makephonecall](http://uniapp.dcloud.io/api/system/phone?id=makephonecall)
+         */
+        makePhoneCall(options: MakePhoneCallOptions): void;
+        /**
+         * 调用扫码界面,扫码成功后返回对应的结果
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/barcode?id=scancode](http://uniapp.dcloud.io/api/system/barcode?id=scancode)
+         */
+        scanCode(options: ScanCodeOptions): void;
+        /**
+         * 设置系统剪贴板的内容
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/clipboard?id=setclipboarddata](http://uniapp.dcloud.io/api/system/clipboard?id=setclipboarddata)
+         */
+        setClipboardData(options: SetClipboardDataOptions): void;
+        /**
+         * 获得系统剪贴板的内容
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/clipboard?id=getclipboarddata](http://uniapp.dcloud.io/api/system/clipboard?id=getclipboarddata)
+         */
+        getClipboardData(options: GetClipboardDataOptions): void;
+        /**
+         * 弹出软键盘
+         *
+         * 文档: [http://uniapp.dcloud.io/api/key?id=showkeyboard](http://uniapp.dcloud.io/api/key?id=showkeyboard)
+         */
+        showKeyboard(): void;
+        /**
+         * 隐藏软键盘
+         *
+         * 文档: [http://uniapp.dcloud.io/api/key?id=hidekeyboard](http://uniapp.dcloud.io/api/key?id=hidekeyboard)
+         */
+        hideKeyboard(): void;
+        /**
+         * 监听键盘高度变化
+         *
+         * 文档: [http://uniapp.dcloud.io/api/key?id=onkeyboardheightchange](http://uniapp.dcloud.io/api/key?id=onkeyboardheightchange)
+         */
+        onKeyboardHeightChange(callback: (result: OnKeyboardHeightChangeResult) => void): void;
+        /**
+         * 取消监听键盘高度变化事件
+         *
+         * 文档: [http://uniapp.dcloud.io/api/key?id=offkeyboardheightchange](http://uniapp.dcloud.io/api/key?id=offkeyboardheightchange)
+         */
+        offKeyboardHeightChange(callback?: (result: any) => void): void;
+        /**
+         * 获取输入框的光标位置
+         *
+         * 文档: [http://uniapp.dcloud.io/api/key?id=getselectedtextrange](http://uniapp.dcloud.io/api/key?id=getselectedtextrange)
+         */
+        getSelectedTextRange(options: GetSelectedTextRangeOptions): void;
+        /**
+         * 设置屏幕亮度
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/brightness?id=setscreenbrightness](http://uniapp.dcloud.io/api/system/brightness?id=setscreenbrightness)
+         */
+        setScreenBrightness(options: SetScreenBrightnessOptions): void;
+        /**
+         * 获取屏幕亮度
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/brightness?id=getscreenbrightness](http://uniapp.dcloud.io/api/system/brightness?id=getscreenbrightness)
+         */
+        getScreenBrightness(options: GetScreenBrightnessOptions): void;
+        /**
+         * 设置是否保持常亮状态
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/brightness?id=setkeepscreenon](http://uniapp.dcloud.io/api/system/brightness?id=setkeepscreenon)
+         */
+        setKeepScreenOn(options: SetKeepScreenOnOptions): void;
+        /**
+         * 使手机发生较长时间的振动(400ms)
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/vibrate?id=vibratelong](http://uniapp.dcloud.io/api/system/vibrate?id=vibratelong)
+         */
+        vibrateLong(options: VibrateLongOptions): void;
+        /**
+         * 使手机发生较短时间的振动(15ms)
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/vibrate?id=vibrateshort](http://uniapp.dcloud.io/api/system/vibrate?id=vibrateshort)
+         */
+        vibrateShort(options: VibrateShortOptions): void;
+        /**
+         * 手机通讯录联系人和联系方式的增加
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/contact?id=addphonecontact](http://uniapp.dcloud.io/api/system/contact?id=addphonecontact)
+         */
+        addPhoneContact(options: AddPhoneContactOptions): void;
+        /**
+         * 获取已搜索到的iBeacon设备
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/ibeacon?id=getbeacons](http://uniapp.dcloud.io/api/system/ibeacon?id=getbeacons)
+         */
+        getBeacons(options: GetBeaconsOptions): void;
+        /**
+         * 开始搜索附近的iBeacon设备
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/ibeacon?id=startbeacondiscovery](http://uniapp.dcloud.io/api/system/ibeacon?id=startbeacondiscovery)
+         */
+        startBeaconDiscovery(options: StartBeaconDiscoveryOptions): void;
+        /**
+         * 停止搜索附近的iBeacon设备
+         *
+         * 文档: [http://uniapp.dcloud.io//api/system/ibeacon?id=stopbeacondiscovery](http://uniapp.dcloud.io//api/system/ibeacon?id=stopbeacondiscovery)
+         */
+        stopBeaconDiscovery(options: StopBeaconDiscoveryOptions): void;
+        /**
+         * 监听iBeacon设备更新
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/ibeacon?id=onbeaconupdate](http://uniapp.dcloud.io/api/system/ibeacon?id=onbeaconupdate)
+         */
+        onBeaconUpdate(callback: (result: GetBeaconsRes) => void): void;
+        /**
+         * 监听iBeacon服务状态变化
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/ibeacon?id=onbeaconservicechange](http://uniapp.dcloud.io/api/system/ibeacon?id=onbeaconservicechange)
+         */
+        onBeaconServiceChange(callback: (result: BeaconService) => void): void;
+        /**
+         * 关闭蓝牙模块
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/bluetooth?id=closebluetoothadapter](http://uniapp.dcloud.io/api/system/bluetooth?id=closebluetoothadapter)
+         */
+        closeBluetoothAdapter(options: CloseBluetoothAdapterOptions): void;
+        /**
+         * 获取本机蓝牙适配器状态
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/bluetooth?id=getbluetoothadapterstate](http://uniapp.dcloud.io/api/system/bluetooth?id=getbluetoothadapterstate)
+         */
+        getBluetoothAdapterState(options: GetBluetoothAdapterStateOptions): void;
+        /**
+         * 获取已搜索到的蓝牙设备
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/bluetooth?id=getbluetoothdevices](http://uniapp.dcloud.io/api/system/bluetooth?id=getbluetoothdevices)
+         */
+        getBluetoothDevices(options: GetBluetoothDevicesOptions): void;
+        /**
+         * 根据uuid获取处于已连接的设备
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/bluetooth?id=getconnectedbluetoothdevices](http://uniapp.dcloud.io/api/system/bluetooth?id=getconnectedbluetoothdevices)
+         */
+        getConnectedBluetoothDevices(options: GetConnectedBluetoothDevicesOptions): void;
+        /**
+         * 监听蓝牙适配器状态变化事件
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/bluetooth?id=onbluetoothadapterstatechange](http://uniapp.dcloud.io/api/system/bluetooth?id=onbluetoothadapterstatechange)
+         */
+        onBluetoothAdapterStateChange(callback: (result: OnBluetoothAdapterStateChangeResult) => void): void;
+        /**
+         * 监听搜索到新设备的事件
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/bluetooth?id=onbluetoothdevicefound](http://uniapp.dcloud.io/api/system/bluetooth?id=onbluetoothdevicefound)
+         */
+        onBluetoothDeviceFound(callback: (result: OnBluetoothDeviceFoundResult) => void): void;
+        /**
+         * 初始化蓝牙模块
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/bluetooth?id=openbluetoothadapter](http://uniapp.dcloud.io/api/system/bluetooth?id=openbluetoothadapter)
+         */
+        openBluetoothAdapter(options: OpenBluetoothAdapterOptions): void;
+        /**
+         * 开始搜索附近的蓝牙设备
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/bluetooth?id=startbluetoothdevicesdiscovery](http://uniapp.dcloud.io/api/system/bluetooth?id=startbluetoothdevicesdiscovery)
+         */
+        startBluetoothDevicesDiscovery(options: StartBluetoothDevicesDiscoveryOptions): void;
+        /**
+         * 停止搜寻附近的蓝牙外围设备
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/bluetooth?id=stopbluetoothdevicesdiscovery](http://uniapp.dcloud.io/api/system/bluetooth?id=stopbluetoothdevicesdiscovery)
+         */
+        stopBluetoothDevicesDiscovery(options: StopBluetoothDevicesDiscoveryOptions): void;
+        /**
+         * 断开与低功耗蓝牙设备的连接
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/ble?id=closebleconnection](http://uniapp.dcloud.io/api/system/ble?id=closebleconnection)
+         */
+        closeBLEConnection(options: CloseBLEConnectionOptions): void;
+        /**
+         * 连接低功耗蓝牙设备
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/ble?id=createbleconnection](http://uniapp.dcloud.io/api/system/ble?id=createbleconnection)
+         */
+        createBLEConnection(options: CreateBLEConnectionOptions): void;
+        /**
+         * 获取蓝牙设备指定服务中所有特征值
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/ble?id=getbledevicecharacteristics](http://uniapp.dcloud.io/api/system/ble?id=getbledevicecharacteristics)
+         */
+        getBLEDeviceCharacteristics(options: GetBLEDeviceCharacteristicsOptions): void;
+        /**
+         * 获取蓝牙设备的所有服务
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/ble?id=getbledeviceservices](http://uniapp.dcloud.io/api/system/ble?id=getbledeviceservices)
+         */
+        getBLEDeviceServices(options: GetBLEDeviceServicesOptions): void;
+        /**
+         * 启用低功耗蓝牙设备特征值变化时的notify功能,订阅特征值
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/ble?id=notifyblecharacteristicvaluechange](http://uniapp.dcloud.io/api/system/ble?id=notifyblecharacteristicvaluechange)
+         */
+        notifyBLECharacteristicValueChange(options: NotifyBLECharacteristicValueChangeOptions): void;
+        /**
+         * 监听低功耗蓝牙设备的特征值变化事件
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/ble?id=onblecharacteristicvaluechange](http://uniapp.dcloud.io/api/system/ble?id=onblecharacteristicvaluechange)
+         */
+        onBLECharacteristicValueChange(callback: (result: OnBLECharacteristicValueChangeSuccess) => void): void;
+        /**
+         * 监听低功耗蓝牙设备连接状态变化事件
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/ble?id=onbleconnectionstatechange](http://uniapp.dcloud.io/api/system/ble?id=onbleconnectionstatechange)
+         */
+        onBLEConnectionStateChange(callback: (result: OnBLEConnectionStateChangeSuccess) => void): void;
+        /**
+         * 读取低功耗蓝牙设备指定特征值的二进制数据值
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/ble?id=readblecharacteristicvalue](http://uniapp.dcloud.io/api/system/ble?id=readblecharacteristicvalue)
+         */
+        readBLECharacteristicValue(options: ReadBLECharacteristicValueOptions): void;
+        /**
+         * 向低功耗蓝牙设备指定特征值写入二进制数据
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/ble?id=writeblecharacteristicvalue](http://uniapp.dcloud.io/api/system/ble?id=writeblecharacteristicvalue)
+         */
+        writeBLECharacteristicValue(options: WriteBLECharacteristicValueOptions): void;
+        /**
+         * 设置蓝牙最大传输单元。需在 uni.createBLEConnection调用成功后调用,mtu 设置范围 (22,512)。安卓5.1以上有效。
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/ble?id=setBLEMTU](http://uniapp.dcloud.io/api/system/ble?id=setBLEMTU)
+         */
+        setBLEMTU(options: SetBLEMTUOptions): void;
+        /**
+         * 获取蓝牙设备的信号强度。
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/ble?id=getBLEDeviceRSSI](http://uniapp.dcloud.io/api/system/ble?id=getBLEDeviceRSSI)
+         */
+        getBLEDeviceRSSI(options: GetBLEDeviceRSSIOptions): void;
+        /**
+         * 显示消息提示框
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/prompt?id=showtoast](http://uniapp.dcloud.io/api/ui/prompt?id=showtoast)
+         */
+        showToast(options: ShowToastOptions): void;
+        /**
+         * 显示 loading 提示框
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/prompt?id=showloading](http://uniapp.dcloud.io/api/ui/prompt?id=showloading)
+         */
+        showLoading(options: ShowLoadingOptions): void;
+        /**
+         * 隐藏消息提示框
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/prompt?id=hidetoast](http://uniapp.dcloud.io/api/ui/prompt?id=hidetoast)
+         */
+        hideToast(): void;
+        /**
+         * 隐藏 loading 提示框
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/prompt?id=hideloading](http://uniapp.dcloud.io/api/ui/prompt?id=hideloading)
+         */
+        hideLoading(): void;
+        /**
+         * 显示模态弹窗
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/prompt?id=showmodal](http://uniapp.dcloud.io/api/ui/prompt?id=showmodal)
+         */
+        showModal(options: ShowModalOptions): void;
+        /**
+         * 显示操作菜单
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/prompt?id=showactionsheet](http://uniapp.dcloud.io/api/ui/prompt?id=showactionsheet)
+         */
+        showActionSheet(options: ShowActionSheetOptions): void;
+        /**
+         * 动态设置当前页面的标题
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/navigationbar?id=setnavigationbartitle](http://uniapp.dcloud.io/api/ui/navigationbar?id=setnavigationbartitle)
+         */
+        setNavigationBarTitle(options: SetNavigationBarTitleOptions): void;
+        /**
+         * 在当前页面显示导航条加载动画
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/navigationbar?id=shownavigationbarloading](http://uniapp.dcloud.io/api/ui/navigationbar?id=shownavigationbarloading)
+         */
+        showNavigationBarLoading(): void;
+        /**
+         * 隐藏导航条加载动画
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/navigationbar?id=hidenavigationbarloading](http://uniapp.dcloud.io/api/ui/navigationbar?id=hidenavigationbarloading)
+         */
+        hideNavigationBarLoading(): void;
+        /**
+         * 隐藏返回首页按钮
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/navigationbar?id=hidehomebutton](http://uniapp.dcloud.io/api/ui/navigationbar?id=hidehomebutton)
+         */
+        hideHomeButton(): void;
+        /**
+         * 设置导航条颜色
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/navigationbar?id=setnavigationbarcolor](http://uniapp.dcloud.io/api/ui/navigationbar?id=setnavigationbarcolor)
+         */
+        setNavigationBarColor(options: SetNavigationbarColorOptions): void;
+        /**
+         * 动态设置 tabBar 某一项的内容
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/tabbar?id=settabbaritem](http://uniapp.dcloud.io/api/ui/tabbar?id=settabbaritem)
+         */
+        setTabBarItem(options: SetTabBarItemOptions): void;
+        /**
+         * 动态设置 tabBar 的整体样式
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/tabbar?id=settabbarstyle](http://uniapp.dcloud.io/api/ui/tabbar?id=settabbarstyle)
+         */
+        setTabBarStyle(options: SetTabBarStyleOptions): void;
+        /**
+         * 隐藏 tabBar
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/tabbar?id=hidetabbar](http://uniapp.dcloud.io/api/ui/tabbar?id=hidetabbar)
+         */
+        hideTabBar(options?: HideTabBarOptions): void;
+        /**
+         * 显示 tabBar
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/tabbar?id=showtabbar](http://uniapp.dcloud.io/api/ui/tabbar?id=showtabbar)
+         */
+        showTabBar(options?: ShowTabBarOptions): void;
+        /**
+         * 为 tabBar 某一项的右上角添加文本
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/tabbar?id=settabbarbadge](http://uniapp.dcloud.io/api/ui/tabbar?id=settabbarbadge)
+         */
+        setTabBarBadge(options: SetTabBarBadgeOptions): void;
+        /**
+         * 移除 tabBar 某一项右上角的文本
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/tabbar?id=removetabbarbadge](http://uniapp.dcloud.io/api/ui/tabbar?id=removetabbarbadge)
+         */
+        removeTabBarBadge(options: RemoveTabBarBadgeOptions): void;
+        /**
+         * 显示 tabBar 某一项的右上角的红点
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/tabbar?id=showtabbarreddot](http://uniapp.dcloud.io/api/ui/tabbar?id=showtabbarreddot)
+         */
+        showTabBarRedDot(options: ShowTabBarRedDotOptions): void;
+        /**
+         * 隐藏 tabBar 某一项的右上角的红点
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/tabbar?id=hidetabbarreddot](http://uniapp.dcloud.io/api/ui/tabbar?id=hidetabbarreddot)
+         */
+        hideTabBarRedDot(options: HideTabBarRedDotOptions): void;
+        /**
+         * 监听中间按钮的点击事件
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/tabbar?id=ontabbarmidbuttontap](http://uniapp.dcloud.io/api/ui/tabbar?id=ontabbarmidbuttontap)
+         */
+        onTabBarMidButtonTap(callback: (result: any) => void): void;
+        /**
+         * 保留当前页面,跳转到应用内的某个页面
+         *
+         * 文档: [http://uniapp.dcloud.io/api/router?id=navigateto](http://uniapp.dcloud.io/api/router?id=navigateto)
+         */
+        navigateTo(options: NavigateToOptions): void;
+        /**
+         * 关闭当前页面,跳转到应用内的某个页面
+         *
+         * 文档: [http://uniapp.dcloud.io/api/router?id=redirectto](http://uniapp.dcloud.io/api/router?id=redirectto)
+         */
+        redirectTo(options: RedirectToOptions): void;
+        /**
+         * 关闭所有页面,打开到应用内的某个页面
+         *
+         * 文档: [http://uniapp.dcloud.io/api/router?id=relaunch](http://uniapp.dcloud.io/api/router?id=relaunch)
+         */
+        reLaunch(options: ReLaunchOptions): void;
+        /**
+         * 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面
+         *
+         * 文档: [http://uniapp.dcloud.io/api/router?id=switchtab](http://uniapp.dcloud.io/api/router?id=switchtab)
+         */
+        switchTab(options: SwitchTabOptions): void;
+        /**
+         * 关闭当前页面,返回上一页面或多级页面
+         *
+         * 文档: [http://uniapp.dcloud.io/api/router?id=navigateback](http://uniapp.dcloud.io/api/router?id=navigateback)
+         */
+        navigateBack(options: NavigateBackOptions): void;
+        /**
+         * 预加载页面
+         *
+         * 文档: [http://uniapp.dcloud.io/api/preload-page?id=preloadpage](http://uniapp.dcloud.io/api/preload-page?id=preloadpage)
+         */
+        preloadPage(options: PreloadPageOptions): void;
+        /**
+         * 取消页面预加载
+         *
+         * 文档: [http://uniapp.dcloud.io/api/preload-page?id=unpreloadpage](http://uniapp.dcloud.io/api/preload-page?id=unpreloadpage)
+         */
+        unPreloadPage(options: UnPreloadPageOptions): void;
+        /**
+         * 创建一个动画实例
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/animation?id=createanimation](http://uniapp.dcloud.io/api/ui/animation?id=createanimation)
+         */
+        createAnimation(options?: CreateAnimationOptions): Animation;
+        /**
+         * 将页面滚动到目标位置
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/scroll?id=pagescrollto](http://uniapp.dcloud.io/api/ui/scroll?id=pagescrollto)
+         */
+        pageScrollTo(options: PageScrollToOptions): void;
+        /**
+         * 开始下拉刷新
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/pulldown?id=startpulldownrefresh](http://uniapp.dcloud.io/api/ui/pulldown?id=startpulldownrefresh)
+         */
+        startPullDownRefresh(options: StartPullDownRefreshOptions): void;
+        /**
+         * 停止当前页面下拉刷新
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/pulldown?id=stoppulldownrefresh](http://uniapp.dcloud.io/api/ui/pulldown?id=stoppulldownrefresh)
+         */
+        stopPullDownRefresh(): void;
+        /**
+         * 返回一个SelectorQuery对象实例
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/nodes-info?id=createselectorquery](http://uniapp.dcloud.io/api/ui/nodes-info?id=createselectorquery)
+         */
+        createSelectorQuery(): SelectorQuery;
+        /**
+         * 创建并返回一个 IntersectionObserver 对象实例
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/intersection-observer?id=createintersectionobserver](http://uniapp.dcloud.io/api/ui/intersection-observer?id=createintersectionobserver)
+         */
+        createIntersectionObserver(component: any, options?: CreateIntersectionObserverOptions): IntersectionObserver;
+        /**
+         * 创建并返回一个 MediaQueryObserver 对象实例。context: 自定义组件实例。小程序端不支持此参数,传入仅为抹平写法差异
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/media-query-observer?id=createmediaqueryobserver](http://uniapp.dcloud.io/api/ui/media-query-observer?id=createmediaqueryobserver)
+         */
+        createMediaQueryObserver(context?: any): MediaQueryObserver;
+        /**
+         * 创建 canvas 绘图上下文
+         *
+         * 文档: [http://uniapp.dcloud.io/api/canvas/createCanvasContext?id=createcanvascontext](http://uniapp.dcloud.io/api/canvas/createCanvasContext?id=createcanvascontext)
+         */
+        createCanvasContext(canvasId: string, componentInstance?: any): CanvasContext;
+        /**
+         * 把当前画布指定区域的内容导出生成指定大小的图片
+         *
+         * 文档: [http://uniapp.dcloud.io/api/canvas/canvasToTempFilePath?id=canvastotempfilepath](http://uniapp.dcloud.io/api/canvas/canvasToTempFilePath?id=canvastotempfilepath)
+         */
+        canvasToTempFilePath(options: CanvasToTempFilePathOptions, componentInstance?: any): void;
+        /**
+         * 描述 canvas 区域隐含的像素数据
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/canvas?id=canvasgetimagedata](http://uniapp.dcloud.io/api/ui/canvas?id=canvasgetimagedata)
+         */
+        canvasGetImageData(options: CanvasGetImageDataOptions): void;
+        /**
+         * 将像素数据绘制到画布
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/canvas?id=canvasputimagedata](http://uniapp.dcloud.io/api/ui/canvas?id=canvasputimagedata)
+         */
+        canvasPutImageData(options: CanvasPutImageDataOptions): void;
+        /**
+         * 监听窗口尺寸变化事件
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/window?id=onwindowresize](http://uniapp.dcloud.io/api/ui/window?id=onwindowresize)
+         */
+        onWindowResize(callback: (result: WindowResizeResult) => void): void;
+        /**
+         * 取消监听窗口尺寸变化事件
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/window?id=offwindowresize](http://uniapp.dcloud.io/api/ui/window?id=offwindowresize)
+         */
+        offWindowResize(callback: (result: any) => void): void;
+        /**
+         * 显示 topWindow 窗体
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/adapt?id=showTopWindow](http://uniapp.dcloud.io/api/ui/adapt?id=showTopWindow)
+         */
+        showTopWindow(options: CommonOptions): void;
+        /**
+         * 隐藏 topWindow 窗体
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/adapt?id=hideTopWindow](http://uniapp.dcloud.io/api/ui/adapt?id=hideTopWindow)
+         */
+        hideTopWindow(options: CommonOptions): void;
+        /**
+         * 显示 leftWindow 窗体
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/adapt?id=showLeftWindow](http://uniapp.dcloud.io/api/ui/adapt?id=showLeftWindow)
+         */
+        showLeftWindow(options: CommonOptions): void;
+        /**
+         * 隐藏 leftWindow 窗体
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/adapt?id=hideLeftWindow](http://uniapp.dcloud.io/api/ui/adapt?id=hideLeftWindow)
+         */
+        hideLeftWindow(options: CommonOptions): void;
+        /**
+         * 显示 rightWindow 窗体
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/adapt?id=showRightWindow](http://uniapp.dcloud.io/api/ui/adapt?id=showRightWindow)
+         */
+        showRightWindow(options: CommonOptions): void;
+        /**
+         * 隐藏 rightWindow 窗体
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/adapt?id=hideRightWindow](http://uniapp.dcloud.io/api/ui/adapt?id=hideRightWindow)
+         */
+        hideRightWindow(options: CommonOptions): void;
+        /**
+         * 获取leftWindow窗体样式
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/adapt?id=getLeftWindowStyle](http://uniapp.dcloud.io/api/ui/adapt?id=getLeftWindowStyle)
+         */
+        getLeftWindowStyle(): any;
+        /**
+         * 获取rightWindow窗体样式
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/adapt?id=getRightWindowStyle](http://uniapp.dcloud.io/api/ui/adapt?id=getRightWindowStyle)
+         */
+        getRightWindowStyle(): any;
+        /**
+         * 获取topWindow窗体样式
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/adapt?id=getTopWindowStyle](http://uniapp.dcloud.io/api/ui/adapt?id=getTopWindowStyle)
+         */
+        getTopWindowStyle(): any;
+        /**
+         * 设置leftWindow窗体样式
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/adapt?id=setLeftWindowStyle](http://uniapp.dcloud.io/api/ui/adapt?id=setLeftWindowStyle)
+         */
+        setLeftWindowStyle(options: any): void;
+        /**
+         * 设置rightWindow窗体样式
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/adapt?id=setRightWindowStyle](http://uniapp.dcloud.io/api/ui/adapt?id=setRightWindowStyle)
+         */
+        setRightWindowStyle(options: any): void;
+        /**
+         * 设置topWindow窗体样式
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/adapt?id=setTopWindowStyle](http://uniapp.dcloud.io/api/ui/adapt?id=setTopWindowStyle)
+         */
+        setTopWindowStyle(options: any): void;
+        /**
+         * 获取服务供应商
+         *
+         * 文档: [http://uniapp.dcloud.io/api/plugins/provider?id=getprovider](http://uniapp.dcloud.io/api/plugins/provider?id=getprovider)
+         */
+        getProvider(options: GetProviderOptions): void;
+        /**
+         * 登录
+         *
+         * 文档: [http://uniapp.dcloud.io/api/plugins/login?id=login](http://uniapp.dcloud.io/api/plugins/login?id=login)
+         */
+        login(options: LoginOptions): void;
+        /**
+         * 登录
+         *
+         * 文档: [http://uniapp.dcloud.io/api/plugins/login?id=unichecksession](http://uniapp.dcloud.io/api/plugins/login?id=unichecksession)
+         */
+        checkSession(options: CheckSessionOptions): void;
+        /**
+         * 获取用户信息
+         *
+         * 文档: [http://uniapp.dcloud.io/api/plugins/login?id=getuserinfo](http://uniapp.dcloud.io/api/plugins/login?id=getuserinfo)
+         */
+        getUserInfo(options: GetUserInfoOptions): void;
+        /**
+         * 获取用户信息
+         *
+         * 文档: [http://uniapp.dcloud.io/api/plugins/login?id=getUserProfile](http://uniapp.dcloud.io/api/plugins/login?id=getUserProfile)
+         */
+        getUserProfile(options: GetUserProfileOptions): void;
+        /**
+         * 预登录
+         *
+         * 文档: [http://uniapp.dcloud.io/api/plugins/login?id=prelogin](http://uniapp.dcloud.io/api/plugins/login?id=prelogin)
+         */
+        preLogin(options: PreLoginOptions): void;
+        /**
+         * 关闭一键登陆页面
+         *
+         * 文档: [http://uniapp.dcloud.io/api/plugins/login?id=closeauthview](http://uniapp.dcloud.io/api/plugins/login?id=closeauthview)
+         */
+        closeAuthView(): void;
+        /**
+         * 获取一键登录条款勾选框状态
+         *
+         * 文档: [http://uniapp.dcloud.io/api/plugins/login?id=getCheckBoxState](http://uniapp.dcloud.io/api/plugins/login?id=getCheckBoxState)
+         */
+        getCheckBoxState(options: GetCheckBoxStateOptions): void;
+        /**
+         * 获取全局唯一的一键登录管理器 UniverifyManager
+         *
+         * 文档: [http://uniapp.dcloud.io/api/plugins/login?id=getUniverifyManager](http://uniapp.dcloud.io/api/plugins/login?id=getUniverifyManager)
+         */
+        getUniverifyManager(): UniverifyManager;
+        /**
+         * 分享
+         *
+         * 文档: [http://uniapp.dcloud.io/api/plugins/share?id=share](http://uniapp.dcloud.io/api/plugins/share?id=share)
+         */
+        share(options: ShareOptions): void;
+        /**
+         * 调用系统分享
+         *
+         * 文档: [http://uniapp.dcloud.io/api/plugins/share?id=sharewithsystem](http://uniapp.dcloud.io/api/plugins/share?id=sharewithsystem)
+         */
+        shareWithSystem(options: ShareWithSystemOptions): void;
+        /**
+         * 支付
+         *
+         * 文档: [http://uniapp.dcloud.io/api/plugins/payment?id=requestpayment](http://uniapp.dcloud.io/api/plugins/payment?id=requestpayment)
+         */
+        requestPayment(options: RequestPaymentOptions): void;
+        /**
+         * 提前向用户发起授权请求
+         *
+         * 文档: [http://uniapp.dcloud.io/api/other/authorize?id=authorize](http://uniapp.dcloud.io/api/other/authorize?id=authorize)
+         */
+        authorize(options: AuthorizeOptions): void;
+        /**
+         * 调起客户端小程序设置界面,返回用户设置的操作结果
+         *
+         * 文档: [http://uniapp.dcloud.io/api/other/authorize?id=opensetting](http://uniapp.dcloud.io/api/other/authorize?id=opensetting)
+         */
+        openSetting(options: OpenSettingOptions): void;
+        /**
+         * 获取用户的当前设置
+         *
+         * 文档: [http://uniapp.dcloud.io/api/other/setting?id=getsetting](http://uniapp.dcloud.io/api/other/setting?id=getsetting)
+         */
+        getSetting(options: GetSettingOptions): void;
+        /**
+         * 获取用户收货地址。调起用户编辑收货地址原生界面,并在编辑完成后返回用户选择的地址,需要用户授权 scope.address
+         *
+         * 文档: [http://uniapp.dcloud.io/api/other/choose-address?id=chooseaddress](http://uniapp.dcloud.io/api/other/choose-address?id=chooseaddress)
+         */
+        chooseAddress(options: ChooseAddressOptions): void;
+        /**
+         * 选择用户的发票抬头,需要用户授权 scope.invoiceTitle
+         *
+         * 文档: [http://uniapp.dcloud.io/api/other/invoice-title?id=chooseinvoicetitle](http://uniapp.dcloud.io/api/other/invoice-title?id=chooseinvoicetitle)
+         */
+        chooseInvoiceTitle(options: ChooseInvoiceTitleOptions): void;
+        /**
+         * 调起客户端小程序设置界面,返回用户设置的操作结果
+         *
+         * 文档: [http://uniapp.dcloud.io/api/other/open-miniprogram?id=navigatetominiprogram](http://uniapp.dcloud.io/api/other/open-miniprogram?id=navigatetominiprogram)
+         */
+        navigateToMiniProgram(options: NavigateToMiniProgramOptions): void;
+        /**
+         * 跳转回上一个小程序,只有当另一个小程序跳转到当前小程序时才会能调用成功
+         *
+         * 文档: [http://uniapp.dcloud.io/api/other/open-miniprogram?id=navigatebackminiprogram](http://uniapp.dcloud.io/api/other/open-miniprogram?id=navigatebackminiprogram)
+         */
+        navigateBackMiniProgram(options: NavigateBackMiniProgramOptions): void;
+        /**
+         * 返回全局唯一的版本更新管理器对象: updateManager,用于管理小程序更新
+         *
+         * 文档: [http://uniapp.dcloud.io/api/other/update?id=getupdatemanager](http://uniapp.dcloud.io/api/other/update?id=getupdatemanager)
+         */
+        getUpdateManager(): UpdateManager;
+        /**
+         * 设置是否打开调试开关。此开关对正式版也能生效
+         *
+         * 文档: [http://uniapp.dcloud.io/api/other/set-enable-debug?id=setenabledebug](http://uniapp.dcloud.io/api/other/set-enable-debug?id=setenabledebug)
+         */
+        setEnableDebug(options: SetEnableDebugOptions): void;
+        /**
+         * 获取第三方平台自定义的数据字段
+         *
+         * 文档: [http://uniapp.dcloud.io/api/other/get-extconfig?id=getextconfig](http://uniapp.dcloud.io/api/other/get-extconfig?id=getextconfig)
+         */
+        getExtConfig(options: GetExtConfigOptions): void;
+        /**
+         * uni.getExtConfig() 的同步版本
+         *
+         * 文档: [http://uniapp.dcloud.io/api/other/get-extconfig?id=getextconfigsync](http://uniapp.dcloud.io/api/other/get-extconfig?id=getextconfigsync)
+         */
+        getExtConfigSync(): any;
+        /**
+         * 显示分享按钮
+         *
+         * 文档: [http://uniapp.dcloud.io/api/plugins/share?id=showsharemenu](http://uniapp.dcloud.io/api/plugins/share?id=showsharemenu)
+         */
+        showShareMenu(options: ShowShareMenuOptions): void;
+        /**
+         * 隐藏分享按钮
+         *
+         * 文档: [http://uniapp.dcloud.io/api/plugins/share?id=hidesharemenu](http://uniapp.dcloud.io/api/plugins/share?id=hidesharemenu)
+         */
+        hideShareMenu(options: HideShareMenuOptions): void;
+        /**
+         * 动态设置窗口的背景色
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/bgcolor?id=setbackgroundcolor](http://uniapp.dcloud.io/api/ui/bgcolor?id=setbackgroundcolor)
+         */
+        setBackgroundColor(options: SetBackgroundColorOptions): void;
+        /**
+         * 动态设置窗口的背景色
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/bgcolor?id=setbackgroundtextstyle](http://uniapp.dcloud.io/api/ui/bgcolor?id=setbackgroundtextstyle)
+         */
+        setBackgroundTextStyle(options: SetBackgroundTextStyleOptions): void;
+        /**
+         * 动态设置页面根节点样式和字体大小
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/setpagemeta](http://uniapp.dcloud.io/api/ui/setpagemeta)
+         */
+        setPageMeta(options: StatusBarStyle): void;
+        /**
+         * 监听陀螺仪数据变化事件
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/gyroscope?id=ongyroscopechange](http://uniapp.dcloud.io/api/system/gyroscope?id=ongyroscopechange)
+         */
+        onGyroscopeChange(callback: (result: OnGyroscopeChangeSuccess) => void): void;
+        /**
+         * 开始监听陀螺仪数据
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/gyroscope?id=startgyroscope](http://uniapp.dcloud.io/api/system/gyroscope?id=startgyroscope)
+         */
+        startGyroscope(options: StartGyroscopeOptions): void;
+        /**
+         * 停止监听陀螺仪数据
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/gyroscope?id=stopgyroscope](http://uniapp.dcloud.io/api/system/gyroscope?id=stopgyroscope)
+         */
+        stopGyroscope(options: StopGyroscopeOptions): void;
+        /**
+         * 动态加载网络字体
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/font?id=loadfontface](http://uniapp.dcloud.io/api/ui/font?id=loadfontface)
+         */
+        loadFontFace(options: LoadFontFaceOptions): void;
+        /**
+         * 获取小程序下该菜单按钮的布局位置信息
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/menuButton?id=getmenubuttonboundingclientrect](http://uniapp.dcloud.io/api/ui/menuButton?id=getmenubuttonboundingclientrect)
+         */
+        getMenuButtonBoundingClientRect(): GetMenuButtonBoundingClientRectRes;
+        /**
+         * 开始 SOTER 生物认证
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/authentication?id=startsoterauthentication](http://uniapp.dcloud.io/api/system/authentication?id=startsoterauthentication)
+         */
+        startSoterAuthentication(options: StartSoterAuthenticationOptions): void;
+        /**
+         * 获取本机支持的 SOTER 生物认证方式
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/authentication?id=checkissupportsoterauthentication](http://uniapp.dcloud.io/api/system/authentication?id=checkissupportsoterauthentication)
+         */
+        checkIsSupportSoterAuthentication(options: CheckIsSupportSoterAuthenticationOptions): void;
+        /**
+         * 获取设备内是否录入如指纹等生物信息
+         *
+         * 文档: [http://uniapp.dcloud.io/api/system/authentication?id=checkissoterenrolledindevice](http://uniapp.dcloud.io/api/system/authentication?id=checkissoterenrolledindevice)
+         */
+        checkIsSoterEnrolledInDevice(options: CheckIsSoterEnrolledInDeviceOptions): void;
+        /**
+         * 创建激励视频广告组件
+         *
+         * 文档: [http://uniapp.dcloud.io/api/a-d/rewarded-video](http://uniapp.dcloud.io/api/a-d/rewarded-video)
+         */
+        createRewardedVideoAd(options: RewardedVideoAdOptions): RewardedVideoAdContext;
+        /**
+         * 创建全屏视频广告组件
+         *
+         * 文档: [http://uniapp.dcloud.io/api/a-d/full-screen-video](http://uniapp.dcloud.io/api/a-d/full-screen-video)
+         */
+        createFullScreenVideoAd(options: FullScreenVideoAdOptions): FullScreenVideoAdContext;
+        /**
+         * 创建插屏广告组件
+         *
+         * 文档: [http://uniapp.dcloud.io/api/a-d/interstitial](http://uniapp.dcloud.io/api/a-d/interstitial)
+         */
+        createInterstitialAd(options: InterstitialAdOptions): InterstitialAdContext;
+        /**
+         * 创建互动广告组件
+         *
+         * 文档: [http://uniapp.dcloud.io/api/a-d/interactive](http://uniapp.dcloud.io/api/a-d/interactive)
+         */
+        createInteractiveAd(options: InteractiveAdOptions): InteractiveAdContext;
+        /**
+         * 添加拦截器
+         *
+         * 文档: [http://uniapp.dcloud.io/api/interceptor](http://uniapp.dcloud.io/api/interceptor)
+         */
+        addInterceptor(name: string, options: InterceptorOptions): void;
+        /**
+         * 删除拦截器
+         *
+         * 文档: [http://uniapp.dcloud.io/api/interceptor](http://uniapp.dcloud.io/api/interceptor)
+         */
+        removeInterceptor(name: string): void;
+        /**
+         * 获取当前设置的语言
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/language?id=getlocale](http://uniapp.dcloud.io/api/ui/language?id=getlocale)
+         */
+        getLocale(): string;
+        /**
+         * 设置当前语言
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/language?id=setlocale](http://uniapp.dcloud.io/api/ui/language?id=setlocale)
+         */
+        setLocale(locale: string): void;
+        /**
+         * 设置当前语言
+         *
+         * 文档: [http://uniapp.dcloud.io/api/ui/language?id=setlocale](http://uniapp.dcloud.io/api/ui/language?id=setlocale)
+         */
+        onLocaleChange(callback: (result: OnLocaleChangeCallbackResult) => void): void;
+        /**
+         *
+         * 获取当前帐号信息。线上小程序版本号仅支持在正式版小程序中获取,开发版和体验版中无法获取。
+         *
+         *
+         * 最低基础库: `2.2.2`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/open-api/account-info/wx.getAccountInfoSync.html](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/account-info/wx.getAccountInfoSync.html)
+         */
+        getAccountInfoSync(): AccountInfo;
+        /**
+         *
+         * [uni.getBatteryInfo](https://developers.weixin.qq.com/miniprogram/dev/api/device/battery/wx.getBatteryInfo.html) 的同步版本
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/battery/wx.getBatteryInfoSync.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/battery/wx.getBatteryInfoSync.html)
+         */
+        getBatteryInfoSync(): GetBatteryInfoSyncResult;
+        /**
+         *
+         * 获取本次小程序启动时的参数。如果当前是冷启动,则返回值与 [`App.onLaunch`](https://developers.weixin.qq.com/miniprogram/dev/reference/api/App.html#onLaunch-Object-object) 的回调参数一致;如果当前是热启动,则返回值与 [`App.onShow`](https://developers.weixin.qq.com/miniprogram/dev/reference/api/App.html#onShow-Object-object) 一致。
+         *
+         * **返回有效 referrerInfo 的场景**
+         *
+         *
+         * | 场景值 | 场景                            | appId含义  |
+         * | ------ | ------------------------------- | ---------- |
+         * | 1020   | 公众号 profile 页相关小程序列表 | 来源公众号 |
+         * | 1035   | 公众号自定义菜单                | 来源公众号 |
+         * | 1036   | App 分享消息卡片                | 来源App    |
+         * | 1037   | 小程序打开小程序                | 来源小程序 |
+         * | 1038   | 从另一个小程序返回              | 来源小程序 |
+         * | 1043   | 公众号模板消息                  | 来源公众号 |
+         *
+         * **注意**
+         *
+         *
+         * 部分版本在无 `referrerInfo` 的时候会返回 `undefined`,建议使用 `options.referrerInfo && options.referrerInfo.appId` 进行判断。
+         *
+         * 最低基础库: `2.9.4`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/base/app/life-cycle/wx.getEnterOptionsSync.html](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/life-cycle/wx.getEnterOptionsSync.html)
+         */
+        getEnterOptionsSync(): LaunchOptionsApp;
+        /**
+         *
+         * 获取小程序启动时的参数。与 [`App.onLaunch`](https://developers.weixin.qq.com/miniprogram/dev/reference/api/App.html#onlaunchobject-object) 的回调参数一致。
+         *
+         * **返回有效 referrerInfo 的场景**
+         *
+         *
+         * | 场景值 | 场景                            | appId含义  |
+         * | ------ | ------------------------------- | ---------- |
+         * | 1020   | 公众号 profile 页相关小程序列表 | 来源公众号 |
+         * | 1035   | 公众号自定义菜单                | 来源公众号 |
+         * | 1036   | App 分享消息卡片                | 来源App    |
+         * | 1037   | 小程序打开小程序                | 来源小程序 |
+         * | 1038   | 从另一个小程序返回              | 来源小程序 |
+         * | 1043   | 公众号模板消息                  | 来源公众号 |
+         * | 1069   | 移动应用                    | 来源App |
+         *
+         * **注意**
+         *
+         *
+         * 部分版本在无`referrerInfo`的时候会返回 `undefined`,建议使用 `options.referrerInfo && options.referrerInfo.appId` 进行判断。
+         *
+         * 最低基础库: `2.1.2`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/base/app/life-cycle/wx.getLaunchOptionsSync.html](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/life-cycle/wx.getLaunchOptionsSync.html)
+         */
+        getLaunchOptionsSync(): LaunchOptionsApp;
+        /**
+         *
+         * 创建 [audio](https://developers.weixin.qq.com/miniprogram/dev/component/audio.html) 上下文 [AudioContext](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/AudioContext.html) 对象。
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/wx.createAudioContext.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/wx.createAudioContext.html)
+         */
+        createAudioContext(id: string, component?: any): AudioContext;
+        /**
+         *
+         * 获取全局唯一的文件管理器
+         *
+         * 最低基础库: `1.9.9`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/file/wx.getFileSystemManager.html](https://developers.weixin.qq.com/miniprogram/dev/api/file/wx.getFileSystemManager.html)
+         */
+        getFileSystemManager(): FileSystemManager;
+        /**
+         *
+         * 创建 [live-player](https://developers.weixin.qq.com/miniprogram/dev/component/live-player.html) 上下文 [LivePlayerContext](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePlayerContext.html) 对象。
+         *
+         * 最低基础库: `1.7.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/live/wx.createLivePlayerContext.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/wx.createLivePlayerContext.html)
+         */
+        createLivePlayerContext(id: string, component?: any): LivePlayerContext;
+        /**
+         *
+         * 获取日志管理器对象。
+         *
+         *
+         * 最低基础库: `2.1.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/wx.getLogManager.html](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/wx.getLogManager.html)
+         */
+        getLogManager(option: GetLogManagerOption): LogManager;
+        /**
+         *
+         * 创建音视频处理容器,最终可将容器中的轨道合成一个视频
+         *
+         * 最低基础库: `2.9.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/video-processing/wx.createMediaContainer.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/video-processing/wx.createMediaContainer.html)
+         */
+        createMediaContainer(): MediaContainer;
+        /**
+         *
+         * 创建 WebGL 画面录制器,可逐帧录制在 WebGL 上渲染的画面并导出视频文件
+         *
+         * 最低基础库: `2.11.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/media-recorder/wx.createMediaRecorder.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/media-recorder/wx.createMediaRecorder.html)
+         */
+        createMediaRecorder(canvas: Record<string, any>, options: CreateMediaRecorderOption): MediaRecorder;
+        /**
+         *
+         * 获取 NFC 实例
+         *
+         * **示例代码**
+         *
+         *
+         * [在微信开发者工具中查看示例](https://developers.weixin.qq.com/s/1WsbDwmb75ig)
+         *
+         * 最低基础库: `2.11.2`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/wx.getNFCAdapter.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/wx.getNFCAdapter.html)
+         */
+        getNFCAdapter(): NFCAdapter;
+        /**
+         *
+         * 创建离屏 canvas 实例
+         *
+         * 最低基础库: `2.7.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/canvas/wx.createOffscreenCanvas.html](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/wx.createOffscreenCanvas.html)
+         */
+        createOffscreenCanvas(): OffscreenCanvas;
+        /**
+         *
+         * 获取实时日志管理器对象。
+         *
+         *
+         * 最低基础库: `2.7.1`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/wx.getRealtimeLogManager.html](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/wx.getRealtimeLogManager.html)
+         */
+        getRealtimeLogManager(): RealtimeLogManager;
+        /**
+         *
+         * 创建一个 UDP Socket 实例。使用前请注意阅读[相关说明](https://developers.weixin.qq.com/miniprogram/dev/framework/ability/network.html)。
+         *
+         * 最低基础库: `2.7.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/network/udp/wx.createUDPSocket.html](https://developers.weixin.qq.com/miniprogram/dev/api/network/udp/wx.createUDPSocket.html)
+         */
+        createUDPSocket(): UDPSocket;
+        /**
+         *
+         * 创建视频解码器,可逐帧获取解码后的数据
+         *
+         * 最低基础库: `2.11.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/video-decoder/wx.createVideoDecoder.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/video-decoder/wx.createVideoDecoder.html)
+         */
+        createVideoDecoder(): VideoDecoder;
+        /**
+         *
+         * 创建一个 [Worker 线程](https://developers.weixin.qq.com/miniprogram/dev/framework/workers.html)。目前限制最多只能创建一个 Worker,创建下一个 Worker 前请先调用 [Worker.terminate](https://developers.weixin.qq.com/miniprogram/dev/api/worker/Worker.terminate.html)
+         *
+         * 最低基础库: `1.9.90`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/worker/wx.createWorker.html](https://developers.weixin.qq.com/miniprogram/dev/api/worker/wx.createWorker.html)
+         */
+        createWorker(scriptPath: string): Worker;
+        /**
+         *
+         * 批量添加卡券。只有通过 [认证](https://developers.weixin.qq.com/miniprogram/product/renzheng.html) 的小程序或文化互动类目的小游戏才能使用。更多文档请参考 [微信卡券接口文档](https://mp.weixin.qq.com/cgi-bin/announce?action=getannouncement&key=1490190158&version=1&lang=zh_CN&platform=2)。
+         *
+         * **cardExt 说明**
+         *
+         *
+         * cardExt 是卡券的扩展参数,其值是一个 JSON 字符串。
+         *
+         *
+         * 最低基础库: `1.1.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/open-api/card/wx.addCard.html](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/card/wx.addCard.html)
+         */
+        addCard(option: AddCardOption): void;
+        /**
+         *
+         * 选择用户已有的发票。
+         *
+         * **通过 cardId 和 encryptCode 获得报销发票的信息**
+         *
+         *
+         * 请参考[微信电子发票文档](https://mp.weixin.qq.com/wiki?t=resource/res_main&id=21517918939oae3U)中,「查询报销发票信息」部分。
+         * 其中 `access_token` 的获取请参考[auth.getAccessToken](https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/access-token/auth.getAccessToken.html)文档
+         *
+         * 最低基础库: `2.3.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/open-api/invoice/wx.chooseInvoice.html](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/invoice/wx.chooseInvoice.html)
+         */
+        chooseInvoice(option?: ChooseInvoiceOption): void;
+        /**
+         *
+         * 拍摄或从手机相册中选择图片或视频。
+         *
+         *
+         * 最低基础库: `2.10.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/video/wx.chooseMedia.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/video/wx.chooseMedia.html)
+         */
+        chooseMedia(option: ChooseMediaOption): void;
+        /**
+         *
+         * 从客户端会话选择文件。
+         *
+         * ****
+         *
+         * ```js
+         * wx.chooseMessageFile({
+         * count: 10,
+         * type: 'image',
+         * success (res) {
+         * // tempFilePath可以作为img标签的src属性显示图片
+         * const tempFilePaths = res.tempFiles
+         * }
+         * })
+         * ```
+         *
+         * 最低基础库: `2.5.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.chooseMessageFile.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.chooseMessageFile.html)
+         */
+        chooseMessageFile(option: ChooseMessageFileOption): void;
+        /**
+         *
+         * 连接 Wi-Fi。若已知 Wi-Fi 信息,可以直接利用该接口连接。仅 Android 与 iOS 11 以上版本支持。
+         *
+         *
+         * 最低基础库: `1.6.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/wifi/wx.connectWifi.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/wifi/wx.connectWifi.html)
+         */
+        connectWifi(option: ConnectWifiOption): void;
+        /**
+         *
+         * 建立本地作为外围设备的服务端,可创建多个。
+         *
+         * 最低基础库: `2.10.3`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/wx.createBLEPeripheralServer.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/wx.createBLEPeripheralServer.html)
+         */
+        createBLEPeripheralServer(option?: CreateBLEPeripheralServerOption): void;
+        /**
+         *
+         * 关闭小程序页面返回询问对话框
+         *
+         * 最低基础库: `2.12.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/ui/interaction/wx.disableAlertBeforeUnload.html](https://developers.weixin.qq.com/miniprogram/dev/api/ui/interaction/wx.disableAlertBeforeUnload.html)
+         */
+        disableAlertBeforeUnload(option?: DisableAlertBeforeUnloadOption): void;
+        /**
+         *
+         * 开启小程序页面返回询问对话框
+         *
+         * 最低基础库: `2.12.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/ui/interaction/wx.enableAlertBeforeUnload.html](https://developers.weixin.qq.com/miniprogram/dev/api/ui/interaction/wx.enableAlertBeforeUnload.html)
+         */
+        enableAlertBeforeUnload(option: EnableAlertBeforeUnloadOption): void;
+        /**
+         *
+         * 退出(销毁)实时语音通话
+         *
+         * 最低基础库: `2.7.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/voip/wx.exitVoIPChat.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/voip/wx.exitVoIPChat.html)
+         */
+        exitVoIPChat(option?: ExitVoIPChatOption): void;
+        /**
+         *
+         * 获取当前支持的音频输入源
+         *
+         * 最低基础库: `2.1.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/wx.getAvailableAudioSources.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/wx.getAvailableAudioSources.html)
+         */
+        getAvailableAudioSources(option?: GetAvailableAudioSourcesOption): void;
+        /**
+         *
+         * 获取后台音乐播放状态。
+         *
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/wx.getBackgroundAudioPlayerState.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/wx.getBackgroundAudioPlayerState.html)
+         */
+        getBackgroundAudioPlayerState(option?: GetBackgroundAudioPlayerStateOption): void;
+        /**
+         *
+         * 拉取 backgroundFetch 客户端缓存数据
+         *
+         * 最低基础库: `2.8.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/storage/background-fetch/wx.getBackgroundFetchData.html](https://developers.weixin.qq.com/miniprogram/dev/api/storage/background-fetch/wx.getBackgroundFetchData.html)
+         */
+        getBackgroundFetchData(option: GetBackgroundFetchDataOption): void;
+        /**
+         *
+         * 获取设置过的自定义登录态。若无,则返回 fail。
+         *
+         * 最低基础库: `2.8.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/storage/background-fetch/wx.getBackgroundFetchToken.html](https://developers.weixin.qq.com/miniprogram/dev/api/storage/background-fetch/wx.getBackgroundFetchToken.html)
+         */
+        getBackgroundFetchToken(option?: GetBackgroundFetchTokenOption): void;
+        /**
+         *
+         * 获取设备电量。同步 API [uni.getBatteryInfoSync](https://developers.weixin.qq.com/miniprogram/dev/api/device/battery/wx.getBatteryInfoSync.html) 在 iOS 上不可用。
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/battery/wx.getBatteryInfo.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/battery/wx.getBatteryInfo.html)
+         */
+        getBatteryInfo(option?: GetBatteryInfoOption): void;
+        /**
+         *
+         * 获取已连接中的 Wi-Fi 信息。
+         *
+         * 最低基础库: `1.6.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/wifi/wx.getConnectedWifi.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/wifi/wx.getConnectedWifi.html)
+         */
+        getConnectedWifi(option?: GetConnectedWifiOption): void;
+        /**
+         *
+         * 判断当前设备是否支持 HCE 能力。
+         *
+         *
+         * 最低基础库: `1.7.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/wx.getHCEState.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/wx.getHCEState.html)
+         */
+        getHCEState(option?: GetHCEStateOption): void;
+        /**
+         *
+         * 获取当前小程序性能相关的信息。
+         *
+         * ****
+         *
+         * 目前支持获取以下几类性能指标:
+         *
+         * | 类别 | 名称 (entryType) | 指标             |
+         * | ---- | ---------------- | ---------------- |
+         * | 路由 | navigation       | route, appLaunch |
+         * | 渲染 | render           | firstRender      |
+         * | 脚本 | script           | evaluateScript   |
+         *
+         * - route: 路由性能
+         * - appLaunch: 小程序启动耗时
+         * - firstRender: 页面首次渲染耗时
+         * - evaluateScript: 注入脚本耗时
+         *
+         *
+         * 最低基础库: `2.11.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/open-api/performance/wx.getPerformance.html](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/performance/wx.getPerformance.html)
+         */
+        getPerformance(): void;
+        /**
+         *
+         * 获取转发详细信息
+         *
+         *
+         * **Tips**
+         *
+         *
+         * - 如需要展示群名称,小程序可以使用[开放数据组件](https://developers.weixin.qq.com/miniprogram/dev/component/open-ability/open-data.html)
+         * - 小游戏可以通过 `wx.getGroupInfo` 接口获取群名称
+         *
+         * 最低基础库: `1.1.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/share/wx.getShareInfo.html](https://developers.weixin.qq.com/miniprogram/dev/api/share/wx.getShareInfo.html)
+         */
+        getShareInfo(option: GetShareInfoOption): void;
+        /**
+         *
+         * 获取用户过去三十天微信运动步数。需要先调用 [uni.login](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/login/wx.login.html) 接口。步数信息会在用户主动进入小程序时更新。
+         *
+         *
+         * stepInfoList 中,每一项结构如下:
+         *
+         * | 属性 | 类型 | 说明 |
+         * | --- | ---- | --- |
+         * | timestamp | number | 时间戳,表示数据对应的时间 |
+         * | step | number | 微信运动步数 |
+         *
+         * 最低基础库: `1.2.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/open-api/werun/wx.getWeRunData.html](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/werun/wx.getWeRunData.html)
+         */
+        getWeRunData(option?: GetWeRunDataOption): void;
+        /**
+         *
+         * 请求获取 Wi-Fi 列表。在 `onGetWifiList` 注册的回调中返回 `wifiList` 数据。 **Android 调用前需要 [用户授权](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/authorize.html) scope.userLocation。**
+         *
+         * iOS 将跳转到系统的 Wi-Fi 界面,Android 不会跳转。 iOS 11.0 及 iOS 11.1 两个版本因系统问题,该方法失效。但在 iOS 11.2 中已修复。
+         *
+         * 最低基础库: `1.6.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/wifi/wx.getWifiList.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/wifi/wx.getWifiList.html)
+         */
+        getWifiList(option?: GetWifiListOption): void;
+        /**
+         *
+         * 加入 (创建) 实时语音通话,更多信息可见 [实时语音指南](#)
+         *
+         * 最低基础库: `2.7.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/voip/wx.joinVoIPChat.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/voip/wx.joinVoIPChat.html)
+         */
+        joinVoIPChat(option: JoinVoIPChatOption): void;
+        /**
+         *
+         * 蓝牙配对接口,仅安卓使用。安卓上蓝牙连接时,部分设备需先配对。
+         *
+         * 最低基础库: `2.12.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.makeBluetoothPair.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.makeBluetoothPair.html)
+         */
+        makeBluetoothPair(option: MakeBluetoothPairOption): void;
+        /**
+         *
+         * 取消监听小程序切后台事件
+         *
+         * 最低基础库: `2.1.2`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.offAppHide.html](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.offAppHide.html)
+         */
+        offAppHide(callback: OffAppHideCallback): void;
+        /**
+         *
+         * 取消监听小程序切前台事件
+         *
+         * 最低基础库: `2.1.2`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.offAppShow.html](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.offAppShow.html)
+         */
+        offAppShow(callback: OffAppShowCallback): void;
+        /**
+         *
+         * 取消监听音频因为受到系统占用而被中断开始事件
+         *
+         * 最低基础库: `2.6.2`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.offAudioInterruptionBegin.html](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.offAudioInterruptionBegin.html)
+         */
+        offAudioInterruptionBegin(callback: OffAudioInterruptionBeginCallback): void;
+        /**
+         *
+         * 取消监听音频中断结束事件
+         *
+         * 最低基础库: `2.6.2`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.offAudioInterruptionEnd.html](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.offAudioInterruptionEnd.html)
+         */
+        offAudioInterruptionEnd(callback: OffAudioInterruptionEndCallback): void;
+        /**
+         *
+         * 取消监听低功耗蓝牙设备的特征值变化事件。
+         *
+         * 最低基础库: `2.9.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.offBLECharacteristicValueChange.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.offBLECharacteristicValueChange.html)
+         */
+        offBLECharacteristicValueChange(callback: (...args: any[]) => any): void;
+        /**
+         *
+         * 取消监听低功耗蓝牙连接状态的改变事件
+         *
+         * 最低基础库: `2.9.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.offBLEConnectionStateChange.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.offBLEConnectionStateChange.html)
+         */
+        offBLEConnectionStateChange(callback: (...args: any[]) => any): void;
+        /**
+         *
+         * 取消监听当前外围设备被连接或断开连接事件
+         *
+         * 最低基础库: `2.10.3`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/wx.offBLEPeripheralConnectionStateChanged.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/wx.offBLEPeripheralConnectionStateChanged.html)
+         */
+        offBLEPeripheralConnectionStateChanged(callback: OffBLEPeripheralConnectionStateChangedCallback): void;
+        /**
+         *
+         * 取消监听 iBeacon 服务状态变化事件
+         *
+         * 最低基础库: `2.8.1`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/ibeacon/wx.offBeaconServiceChange.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/ibeacon/wx.offBeaconServiceChange.html)
+         */
+        offBeaconServiceChange(callback: OffBeaconServiceChangeCallback): void;
+        /**
+         *
+         * 取消监听 iBeacon 设备更新事件
+         *
+         * 最低基础库: `2.8.1`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/ibeacon/wx.offBeaconUpdate.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/ibeacon/wx.offBeaconUpdate.html)
+         */
+        offBeaconUpdate(callback: OffBeaconUpdateCallback): void;
+        /**
+         *
+         * 取消监听蓝牙适配器状态变化事件。
+         *
+         * 最低基础库: `2.9.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth/wx.offBluetoothAdapterStateChange.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth/wx.offBluetoothAdapterStateChange.html)
+         */
+        offBluetoothAdapterStateChange(callback: (...args: any[]) => any): void;
+        /**
+         *
+         * 取消监听寻找到新设备的事件。
+         *
+         * 最低基础库: `2.9.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth/wx.offBluetoothDeviceFound.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth/wx.offBluetoothDeviceFound.html)
+         */
+        offBluetoothDeviceFound(callback: (...args: any[]) => any): void;
+        /**
+         *
+         * 取消监听设备方向变化事件,参数为空,则取消所有的事件监听。
+         *
+         * 最低基础库: `2.9.3`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/motion/wx.offDeviceMotionChange.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/motion/wx.offDeviceMotionChange.html)
+         */
+        offDeviceMotionChange(callback: (...args: any[]) => any): void;
+        /**
+         *
+         * 取消监听小程序错误事件。
+         *
+         * 最低基础库: `2.1.2`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.offError.html](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.offError.html)
+         */
+        offError(callback: (...args: any[]) => any): void;
+        /**
+         *
+         * 取消监听获取到 Wi-Fi 列表数据事件。
+         *
+         * 最低基础库: `2.9.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/wifi/wx.offGetWifiList.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/wifi/wx.offGetWifiList.html)
+         */
+        offGetWifiList(callback: (...args: any[]) => any): void;
+        /**
+         *
+         * 取消监听陀螺仪数据变化事件。
+         *
+         * 最低基础库: `2.9.3`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/gyroscope/wx.offGyroscopeChange.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/gyroscope/wx.offGyroscopeChange.html)
+         */
+        offGyroscopeChange(callback: (...args: any[]) => any): void;
+        /**
+         *
+         * 接收 NFC 设备消息事件,取消事件监听。
+         *
+         * 最低基础库: `2.8.1`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/wx.offHCEMessage.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/wx.offHCEMessage.html)
+         */
+        offHCEMessage(callback: (...args: any[]) => any): void;
+        /**
+         *
+         * 取消监听 mDNS 服务停止搜索的事件
+         *
+         * 最低基础库: `2.4.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/network/mdns/wx.offLocalServiceDiscoveryStop.html](https://developers.weixin.qq.com/miniprogram/dev/api/network/mdns/wx.offLocalServiceDiscoveryStop.html)
+         */
+        offLocalServiceDiscoveryStop(callback: OffLocalServiceDiscoveryStopCallback): void;
+        /**
+         *
+         * 取消监听 mDNS 服务发现的事件
+         *
+         * 最低基础库: `2.4.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/network/mdns/wx.offLocalServiceFound.html](https://developers.weixin.qq.com/miniprogram/dev/api/network/mdns/wx.offLocalServiceFound.html)
+         */
+        offLocalServiceFound(callback: OffLocalServiceFoundCallback): void;
+        /**
+         *
+         * 取消监听 mDNS 服务离开的事件
+         *
+         * 最低基础库: `2.4.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/network/mdns/wx.offLocalServiceLost.html](https://developers.weixin.qq.com/miniprogram/dev/api/network/mdns/wx.offLocalServiceLost.html)
+         */
+        offLocalServiceLost(callback: OffLocalServiceLostCallback): void;
+        /**
+         *
+         * 取消监听 mDNS 服务解析失败的事件
+         *
+         * 最低基础库: `2.4.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/network/mdns/wx.offLocalServiceResolveFail.html](https://developers.weixin.qq.com/miniprogram/dev/api/network/mdns/wx.offLocalServiceResolveFail.html)
+         */
+        offLocalServiceResolveFail(callback: OffLocalServiceResolveFailCallback): void;
+        /**
+         *
+         * 取消监听实时地理位置变化事件
+         *
+         * 最低基础库: `2.8.1`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.offLocationChange.html](https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.offLocationChange.html)
+         */
+        offLocationChange(callback: OffLocationChangeCallback): void;
+        /**
+         *
+         * 取消监听内存不足告警事件。
+         *
+         * 最低基础库: `2.9.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/performance/wx.offMemoryWarning.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/performance/wx.offMemoryWarning.html)
+         */
+        offMemoryWarning(callback: (...args: any[]) => any): void;
+        /**
+         *
+         * 取消监听实时语音通话成员视频状态变化事件
+         *
+         * 最低基础库: `2.11.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/voip/wx.offOnVoIPVideoMembersChanged.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/voip/wx.offOnVoIPVideoMembersChanged.html)
+         */
+        offOnVoIPVideoMembersChanged(callback: OffOnVoIPVideoMembersChangedCallback): void;
+        /**
+         *
+         * 取消监听小程序要打开的页面不存在事件
+         *
+         * 最低基础库: `2.1.2`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.offPageNotFound.html](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.offPageNotFound.html)
+         */
+        offPageNotFound(callback: OffPageNotFoundCallback): void;
+        /**
+         *
+         * 取消监听系统主题改变事件
+         *
+         * 最低基础库: `2.11.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.offThemeChange.html](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.offThemeChange.html)
+         */
+        offThemeChange(callback: OffThemeChangeCallback): void;
+        /**
+         *
+         * 取消监听未处理的 Promise 拒绝事件
+         *
+         * 最低基础库: `2.10.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.offUnhandledRejection.html](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.offUnhandledRejection.html)
+         */
+        offUnhandledRejection(callback: OffUnhandledRejectionCallback): void;
+        /**
+         *
+         * 用户主动截屏事件。取消事件监听。
+         *
+         * 最低基础库: `2.9.3`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/screen/wx.offUserCaptureScreen.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/screen/wx.offUserCaptureScreen.html)
+         */
+        offUserCaptureScreen(callback: (...args: any[]) => any): void;
+        /**
+         *
+         * 取消监听被动断开实时语音通话事件。
+         *
+         * 最低基础库: `2.9.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/voip/wx.offVoIPChatInterrupted.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/voip/wx.offVoIPChatInterrupted.html)
+         */
+        offVoIPChatInterrupted(callback: (...args: any[]) => any): void;
+        /**
+         *
+         * 取消监听实时语音通话成员在线状态变化事件。
+         *
+         * 最低基础库: `2.9.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/voip/wx.offVoIPChatMembersChanged.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/voip/wx.offVoIPChatMembersChanged.html)
+         */
+        offVoIPChatMembersChanged(callback: (...args: any[]) => any): void;
+        /**
+         *
+         * 取消监听连接上 Wi-Fi 的事件。
+         *
+         * 最低基础库: `2.9.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/wifi/wx.offWifiConnected.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/wifi/wx.offWifiConnected.html)
+         */
+        offWifiConnected(callback: (...args: any[]) => any): void;
+        /**
+         *
+         * 监听小程序切后台事件。该事件与 [`App.onHide`](https://developers.weixin.qq.com/miniprogram/dev/reference/api/App.html#onhide) 的回调时机一致。
+         *
+         * 最低基础库: `2.1.2`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.onAppHide.html](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.onAppHide.html)
+         */
+        onAppHide(callback: OnAppHideCallback): void;
+        /**
+         *
+         * 监听小程序切前台事件。该事件与 [`App.onShow`](https://developers.weixin.qq.com/miniprogram/dev/reference/api/App.html#onshowobject-object) 的回调参数一致。
+         *
+         * **返回有效 referrerInfo 的场景**
+         *
+         *
+         * | 场景值 | 场景                            | appId含义  |
+         * | ------ | ------------------------------- | ---------- |
+         * | 1020   | 公众号 profile 页相关小程序列表 | 来源公众号 |
+         * | 1035   | 公众号自定义菜单                | 来源公众号 |
+         * | 1036   | App 分享消息卡片                | 来源App    |
+         * | 1037   | 小程序打开小程序                | 来源小程序 |
+         * | 1038   | 从另一个小程序返回              | 来源小程序 |
+         * | 1043   | 公众号模板消息                  | 来源公众号 |
+         *
+         * **注意**
+         *
+         *
+         * 部分版本在无`referrerInfo`的时候会返回 `undefined`,建议使用 `options.referrerInfo && options.referrerInfo.appId` 进行判断。
+         *
+         * 最低基础库: `2.1.2`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.onAppShow.html](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.onAppShow.html)
+         */
+        onAppShow(callback: OnAppShowCallback): void;
+        /**
+         *
+         * 监听音频因为受到系统占用而被中断开始事件。以下场景会触发此事件:闹钟、电话、FaceTime 通话、微信语音聊天、微信视频聊天。此事件触发后,小程序内所有音频会暂停。
+         *
+         * 最低基础库: `2.6.2`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.onAudioInterruptionBegin.html](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.onAudioInterruptionBegin.html)
+         */
+        onAudioInterruptionBegin(callback: OnAudioInterruptionBeginCallback): void;
+        /**
+         *
+         * 监听音频中断结束事件。在收到 onAudioInterruptionBegin 事件之后,小程序内所有音频会暂停,收到此事件之后才可再次播放成功
+         *
+         * 最低基础库: `2.6.2`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.onAudioInterruptionEnd.html](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.onAudioInterruptionEnd.html)
+         */
+        onAudioInterruptionEnd(callback: OnAudioInterruptionEndCallback): void;
+        /**
+         *
+         * 监听当前外围设备被连接或断开连接事件
+         *
+         * 最低基础库: `2.10.3`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/wx.onBLEPeripheralConnectionStateChanged.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/wx.onBLEPeripheralConnectionStateChanged.html)
+         */
+        onBLEPeripheralConnectionStateChanged(callback: OnBLEPeripheralConnectionStateChangedCallback): void;
+        /**
+         *
+         * 监听音乐暂停事件。
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/wx.onBackgroundAudioPause.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/wx.onBackgroundAudioPause.html)
+         */
+        onBackgroundAudioPause(callback: OnBackgroundAudioPauseCallback): void;
+        /**
+         *
+         * 监听音乐播放事件。
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/wx.onBackgroundAudioPlay.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/wx.onBackgroundAudioPlay.html)
+         */
+        onBackgroundAudioPlay(callback: OnBackgroundAudioPlayCallback): void;
+        /**
+         *
+         * 监听音乐停止事件。
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/wx.onBackgroundAudioStop.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/wx.onBackgroundAudioStop.html)
+         */
+        onBackgroundAudioStop(callback: OnBackgroundAudioStopCallback): void;
+        /**
+         *
+         * 监听收到 backgroundFetch 数据时的回调
+         *
+         * 最低基础库: `2.8.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/storage/background-fetch/wx.onBackgroundFetchData.html](https://developers.weixin.qq.com/miniprogram/dev/api/storage/background-fetch/wx.onBackgroundFetchData.html)
+         */
+        onBackgroundFetchData(callback: OnBackgroundFetchDataCallback): void;
+        /**
+         *
+         * 监听设备方向变化事件。频率根据 [uni.startDeviceMotionListening()](https://developers.weixin.qq.com/miniprogram/dev/api/device/motion/wx.startDeviceMotionListening.html) 的 interval 参数。可以使用 [uni.stopDeviceMotionListening()](https://developers.weixin.qq.com/miniprogram/dev/api/device/motion/wx.stopDeviceMotionListening.html) 停止监听。
+         *
+         * 最低基础库: `2.3.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/motion/wx.onDeviceMotionChange.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/motion/wx.onDeviceMotionChange.html)
+         */
+        onDeviceMotionChange(callback: OnDeviceMotionChangeCallback): void;
+        /**
+         *
+         * 监听小程序错误事件。如脚本错误或 API 调用报错等。该事件与 [`App.onError`](https://developers.weixin.qq.com/miniprogram/dev/reference/api/App.html#onerrorstring-error) 的回调时机与参数一致。
+         *
+         * 最低基础库: `2.1.2`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.onError.html](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.onError.html)
+         */
+        onError(callback: OnAppErrorCallback): void;
+        /**
+         *
+         * 监听获取到 Wi-Fi 列表数据事件
+         *
+         * 最低基础库: `1.6.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/wifi/wx.onGetWifiList.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/wifi/wx.onGetWifiList.html)
+         */
+        onGetWifiList(callback: OnGetWifiListCallback): void;
+        /**
+         *
+         * 监听接收 NFC 设备消息事件,仅能注册一个监听
+         *
+         * 最低基础库: `1.7.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/wx.onHCEMessage.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/wx.onHCEMessage.html)
+         */
+        onHCEMessage(callback: OnHCEMessageCallback): void;
+        /**
+         *
+         * 监听 mDNS 服务停止搜索的事件
+         *
+         * 最低基础库: `2.4.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/network/mdns/wx.onLocalServiceDiscoveryStop.html](https://developers.weixin.qq.com/miniprogram/dev/api/network/mdns/wx.onLocalServiceDiscoveryStop.html)
+         */
+        onLocalServiceDiscoveryStop(callback: OnLocalServiceDiscoveryStopCallback): void;
+        /**
+         *
+         * 监听 mDNS 服务发现的事件
+         *
+         * 最低基础库: `2.4.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/network/mdns/wx.onLocalServiceFound.html](https://developers.weixin.qq.com/miniprogram/dev/api/network/mdns/wx.onLocalServiceFound.html)
+         */
+        onLocalServiceFound(callback: OnLocalServiceFoundCallback): void;
+        /**
+         *
+         * 监听 mDNS 服务离开的事件
+         *
+         * 最低基础库: `2.4.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/network/mdns/wx.onLocalServiceLost.html](https://developers.weixin.qq.com/miniprogram/dev/api/network/mdns/wx.onLocalServiceLost.html)
+         */
+        onLocalServiceLost(callback: OnLocalServiceLostCallback): void;
+        /**
+         *
+         * 监听 mDNS 服务解析失败的事件
+         *
+         * 最低基础库: `2.4.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/network/mdns/wx.onLocalServiceResolveFail.html](https://developers.weixin.qq.com/miniprogram/dev/api/network/mdns/wx.onLocalServiceResolveFail.html)
+         */
+        onLocalServiceResolveFail(callback: OnLocalServiceResolveFailCallback): void;
+        /**
+         *
+         * 监听实时地理位置变化事件,需结合 [uni.startLocationUpdateBackground](https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.startLocationUpdateBackground.html)、[uni.startLocationUpdate](https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.startLocationUpdate.html)使用。
+         *
+         *
+         * 最低基础库: `2.8.1`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.onLocationChange.html](https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.onLocationChange.html)
+         */
+        onLocationChange(callback: OnLocationChangeCallback): void;
+        /**
+         *
+         * 监听内存不足告警事件。
+         *
+         * 当 iOS/Android 向小程序进程发出内存警告时,触发该事件。触发该事件不意味小程序被杀,大部分情况下仅仅是告警,开发者可在收到通知后回收一些不必要资源避免进一步加剧内存紧张。
+         *
+         *
+         * 最低基础库: `2.0.2`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/performance/wx.onMemoryWarning.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/performance/wx.onMemoryWarning.html)
+         */
+        onMemoryWarning(callback: OnMemoryWarningCallback): void;
+        /**
+         *
+         * 监听实时语音通话成员视频状态变化事件。
+         *
+         * 最低基础库: `2.11.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/voip/wx.onOnVoIPVideoMembersChanged.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/voip/wx.onOnVoIPVideoMembersChanged.html)
+         */
+        onOnVoIPVideoMembersChanged(callback: OnOnVoIPVideoMembersChangedCallback): void;
+        /**
+         *
+         * 监听小程序要打开的页面不存在事件。该事件与 [`App.onPageNotFound`](https://developers.weixin.qq.com/miniprogram/dev/reference/api/App.html#onpagenotfoundobject-object) 的回调时机一致。
+         *
+         * **注意**
+         *
+         *
+         * - 开发者可以在回调中进行页面重定向,但必须在回调中**同步**处理,异步处理(例如 `setTimeout` 异步执行)无效。
+         * - 若开发者没有调用 [uni.onPageNotFound](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.onPageNotFound.html) 绑定监听,也没有声明 `App.onPageNotFound`,当跳转页面不存在时,将推入微信客户端原生的页面不存在提示页面。
+         * - 如果回调中又重定向到另一个不存在的页面,将推入微信客户端原生的页面不存在提示页面,并且不再第二次回调。
+         *
+         * 最低基础库: `2.1.2`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.onPageNotFound.html](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.onPageNotFound.html)
+         */
+        onPageNotFound(callback: OnPageNotFoundCallback): void;
+        /**
+         *
+         * 监听系统主题改变事件。该事件与 [`App.onThemeChange`](https://developers.weixin.qq.com/miniprogram/dev/reference/api/App.html#onThemeChange-Object-object) 的回调时机一致。
+         *
+         * **注意**
+         *
+         *
+         * - 只有在全局配置"darkmode": true时才会触发此事件。
+         *
+         * 最低基础库: `2.11.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.onThemeChange.html](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.onThemeChange.html)
+         */
+        onThemeChange(callback: OnThemeChangeCallback): void;
+        /**
+         *
+         * 监听未处理的 Promise 拒绝事件。该事件与 `App.onUnhandledRejection` 的回调时机与参数一致。
+         *
+         * **注意**
+         *
+         *
+         * - 安卓平台暂时不支持该事件
+         * - 所有的 unhandledRejection 都可以被这一监听捕获,但只有 Error 类型的才会在小程序后台触发报警。
+         *
+         * 最低基础库: `2.10.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.onUnhandledRejection.html](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.onUnhandledRejection.html)
+         */
+        onUnhandledRejection(callback: OnUnhandledRejectionCallback): void;
+        /**
+         *
+         * 监听用户主动截屏事件。用户使用系统截屏按键截屏时触发,只能注册一个监听
+         *
+         *
+         * 最低基础库: `1.4.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/screen/wx.onUserCaptureScreen.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/screen/wx.onUserCaptureScreen.html)
+         */
+        onUserCaptureScreen(callback: OnUserCaptureScreenCallback): void;
+        /**
+         *
+         * 监听被动断开实时语音通话事件。包括小游戏切入后端时断开
+         *
+         * 最低基础库: `2.7.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/voip/wx.onVoIPChatInterrupted.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/voip/wx.onVoIPChatInterrupted.html)
+         */
+        onVoIPChatInterrupted(callback: OnVoIPChatInterruptedCallback): void;
+        /**
+         *
+         * 监听实时语音通话成员在线状态变化事件。有成员加入/退出通话时触发回调
+         *
+         * 最低基础库: `2.7.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/voip/wx.onVoIPChatMembersChanged.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/voip/wx.onVoIPChatMembersChanged.html)
+         */
+        onVoIPChatMembersChanged(callback: OnVoIPChatMembersChangedCallback): void;
+        /**
+         *
+         * 监听实时语音通话成员通话状态变化事件。有成员开始/停止说话时触发回调
+         *
+         * 最低基础库: `2.7.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/voip/wx.onVoIPChatSpeakersChanged.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/voip/wx.onVoIPChatSpeakersChanged.html)
+         */
+        onVoIPChatSpeakersChanged(callback: OnVoIPChatSpeakersChangedCallback): void;
+        /**
+         *
+         * 监听连接上 Wi-Fi 的事件
+         *
+         * 最低基础库: `1.6.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/wifi/wx.onWifiConnected.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/wifi/wx.onWifiConnected.html)
+         */
+        onWifiConnected(callback: OnWifiConnectedCallback): void;
+        /**
+         *
+         * 查看微信卡包中的卡券。只有通过 [认证](https://developers.weixin.qq.com/miniprogram/product/renzheng.html) 的小程序或文化互动类目的小游戏才能使用。更多文档请参考 [微信卡券接口文档](https://mp.weixin.qq.com/cgi-bin/announce?action=getannouncement&key=1490190158&version=1&lang=zh_CN&platform=2)。
+         *
+         *
+         * 最低基础库: `1.1.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/open-api/card/wx.openCard.html](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/card/wx.openCard.html)
+         */
+        openCard(option: OpenCardOption): void;
+        /**
+         *
+         * 暂停播放音乐。
+         *
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/wx.pauseBackgroundAudio.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/wx.pauseBackgroundAudio.html)
+         */
+        pauseBackgroundAudio(option?: PauseBackgroundAudioOption): void;
+        /**
+         *
+         * 暂停正在播放的语音。再次调用 [uni.playVoice](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/wx.playVoice.html) 播放同一个文件时,会从暂停处开始播放。如果想从头开始播放,需要先调用 [uni.stopVoice](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/wx.stopVoice.html)。
+         *
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/wx.pauseVoice.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/wx.pauseVoice.html)
+         */
+        pauseVoice(option?: PauseVoiceOption): void;
+        /**
+         *
+         * 使用后台播放器播放音乐。对于微信客户端来说,只能同时有一个后台音乐在播放。当用户离开小程序后,音乐将暂停播放;当用户在其他小程序占用了音乐播放器,原有小程序内的音乐将停止播放。
+         *
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/wx.playBackgroundAudio.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/wx.playBackgroundAudio.html)
+         */
+        playBackgroundAudio(option: PlayBackgroundAudioOption): void;
+        /**
+         *
+         * 开始播放语音。同时只允许一个语音文件正在播放,如果前一个语音文件还没播放完,将中断前一个语音播放。
+         *
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/wx.playVoice.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/wx.playVoice.html)
+         */
+        playVoice(option: PlayVoiceOption): void;
+        /**
+         *
+         * 预览图片和视频。
+         *
+         * 最低基础库: `2.12.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.previewMedia.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.previewMedia.html)
+         */
+        previewMedia(option: PreviewMediaOption): void;
+        /**
+         *
+         * 自定义分析数据上报接口。使用前,需要在小程序管理后台自定义分析中新建事件,配置好事件名与字段。
+         *
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/open-api/data-analysis/wx.reportAnalytics.html](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/data-analysis/wx.reportAnalytics.html)
+         */
+        reportAnalytics(eventName: string, data: Record<string, any>): void;
+        /**
+         *
+         * 自定义业务数据监控上报接口。
+         *
+         * **使用说明**
+         *
+         *
+         * 使用前,需要在「小程序管理后台-运维中心-性能监控-业务数据监控」中新建监控事件,配置监控描述与告警类型。每一个监控事件对应唯一的监控ID,开发者最多可以创建128个监控事件。
+         *
+         *
+         * 最低基础库: `2.0.1`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/open-api/report/wx.reportMonitor.html](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/report/wx.reportMonitor.html)
+         */
+        reportMonitor(name: string, value: number): void;
+        /**
+         *
+         * 小程序测速上报。使用前,需要在小程序管理后台配置。 详情参见[小程序测速](#)指南。
+         *
+         *
+         * 最低基础库: `2.9.2`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/open-api/performance/wx.reportPerformance.html](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/performance/wx.reportPerformance.html)
+         */
+        reportPerformance(id: number, value: number, dimensions?: string | any[]): void;
+        /**
+         *
+         * 调起客户端小程序订阅消息界面,返回用户订阅消息的操作结果。当用户勾选了订阅面板中的“总是保持以上选择,不再询问”时,模板消息会被添加到用户的小程序设置页,通过 [uni.getSetting](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/setting/wx.getSetting.html) 接口可获取用户对相关模板消息的订阅状态。
+         *
+         * ## 注意事项
+         * - 一次性模板 id 和永久模板 id 不可同时使用。
+         * - 低版本基础库2.4.4~2.8.3 已支持订阅消息接口调用,仅支持传入一个一次性 tmplId / 永久 tmplId。
+         * - [2.8.2](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 版本开始,用户发生点击行为或者发起支付回调后,才可以调起订阅消息界面。
+         * - [2.10.0](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 版本开始,开发版和体验版小程序将禁止使用模板消息 formId。
+         *
+         * **错误码**
+         *
+         *
+         *
+         * | errCode | errMsg                                                 | 说明                                                           |
+         * | ------- | ------------------------------------------------------ | -------------------------------------------------------------- |
+         * | 10001   | TmplIds can't be empty                                 | 参数传空了                                                     |
+         * | 10002   | Request list fail                                       | 网络问题,请求消息列表失败                                     |
+         * | 10003   | Request subscribe fail                                 | 网络问题,订阅请求发送失败                                     |
+         * | 10004   | Invalid template id                                    | 参数类型错误                                                   |
+         * | 10005   | Cannot show subscribe message UI                       | 无法展示 UI,一般是小程序这个时候退后台了导致的                |
+         * | 20001   | No template data return, verify the template id exist  | 没有模板数据,一般是模板 ID 不存在 或者和模板类型不对应 导致的 |
+         * | 20002   | Templates type must be same                            | 模板消息类型 既有一次性的又有永久的                            |
+         * | 20003   | Templates count out of max bounds                      | 模板消息数量超过上限                                           |
+         * | 20004   | The main switch is switched off                        | 用户关闭了主开关,无法进行订阅                                 |
+         * | 20005   | This mini program was banned from subscribing messages | 小程序被禁封                                                   |
+         *
+         *
+         * 最低基础库: `2.4.4`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/open-api/subscribe-message/wx.requestSubscribeMessage.html](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/subscribe-message/wx.requestSubscribeMessage.html)
+         */
+        requestSubscribeMessage(option: RequestSubscribeMessageOption): void;
+        /**
+         *
+         * 保存文件系统的文件到用户磁盘,仅在 PC 端支持
+         *
+         * 最低基础库: `2.11.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/file/wx.saveFileToDisk.html](https://developers.weixin.qq.com/miniprogram/dev/api/file/wx.saveFileToDisk.html)
+         */
+        saveFileToDisk(option: SaveFileToDiskOption): void;
+        /**
+         *
+         * 控制音乐播放进度。
+         *
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/wx.seekBackgroundAudio.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/wx.seekBackgroundAudio.html)
+         */
+        seekBackgroundAudio(option: SeekBackgroundAudioOption): void;
+        /**
+         *
+         * 发送 NFC 消息。仅在安卓系统下有效。
+         *
+         *
+         * 最低基础库: `1.7.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/wx.sendHCEMessage.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/wx.sendHCEMessage.html)
+         */
+        sendHCEMessage(option: SendHCEMessageOption): void;
+        /**
+         *
+         * 设置自定义登录态,在周期性拉取数据时带上,便于第三方服务器验证请求合法性
+         *
+         * 最低基础库: `2.8.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/storage/background-fetch/wx.setBackgroundFetchToken.html](https://developers.weixin.qq.com/miniprogram/dev/api/storage/background-fetch/wx.setBackgroundFetchToken.html)
+         */
+        setBackgroundFetchToken(option: SetBackgroundFetchTokenOption): void;
+        /**
+         *
+         * 设置 [InnerAudioContext](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/InnerAudioContext.html) 的播放选项。设置之后对当前小程序全局生效。
+         *
+         * 最低基础库: `2.3.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/wx.setInnerAudioOption.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/wx.setInnerAudioOption.html)
+         */
+        setInnerAudioOption(option: SetInnerAudioOption): void;
+        /**
+         *
+         * 动态设置置顶栏文字内容。只有当前小程序被置顶时能生效,如果当前小程序没有被置顶,也能调用成功,但是不会立即生效,只有在用户将这个小程序置顶后才换上设置的文字内容.
+         *
+         *
+         * **注意**
+         *
+         *
+         * - 调用成功后,需间隔 5s 才能再次调用此接口,如果在 5s 内再次调用此接口,会回调 fail,errMsg:"setTopBarText: fail invoke too frequently"
+         *
+         * 最低基础库: `1.4.3`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/ui/sticky/wx.setTopBarText.html](https://developers.weixin.qq.com/miniprogram/dev/api/ui/sticky/wx.setTopBarText.html)
+         */
+        setTopBarText(option: SetTopBarTextOption): void;
+        /**
+         *
+         * 设置 `wifiList` 中 AP 的相关信息。在 `onGetWifiList` 回调后调用,**iOS特有接口**。
+         *
+         * **注意**
+         *
+         *
+         * - 该接口只能在 `onGetWifiList` 回调之后才能调用。
+         * - 此时客户端会挂起,等待小程序设置 Wi-Fi 信息,请务必尽快调用该接口,若无数据请传入一个空数组。
+         * - 有可能随着周边 Wi-Fi 列表的刷新,单个流程内收到多次带有存在重复的 Wi-Fi 列表的回调。
+         *
+         *
+         * 最低基础库: `1.6.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/wifi/wx.setWifiList.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/wifi/wx.setWifiList.html)
+         */
+        setWifiList(option: SetWifiListOption): void;
+        /**
+         *
+         * 设置窗口大小,该接口仅适用于 PC 平台,使用细则请参见指南
+         *
+         * 最低基础库: `2.10.1`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/ui/window/wx.setWindowSize.html](https://developers.weixin.qq.com/miniprogram/dev/api/ui/window/wx.setWindowSize.html)
+         */
+        setWindowSize(option: SetWindowSizeOption): void;
+        /**
+         *
+         * 拉取h5领取红包封面页。获取参考红包封面地址参考 [微信红包封面开发平台](https://cover.weixin.qq.com/cgi-bin/mmcover-bin/readtemplate?t=page%2Fdoc%2Fguide%2Fintroduce.html)。
+         *
+         * 最低基础库: `2.10.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/open-api/redpackage/wx.showRedPackage.html](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/redpackage/wx.showRedPackage.html)
+         */
+        showRedPackage(option: ShowRedPackageOption): void;
+        /**
+         *
+         * 开始监听设备方向的变化。
+         *
+         * 最低基础库: `2.3.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/motion/wx.startDeviceMotionListening.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/motion/wx.startDeviceMotionListening.html)
+         */
+        startDeviceMotionListening(option: StartDeviceMotionListeningOption): void;
+        /**
+         *
+         * 初始化 NFC 模块。
+         *
+         *
+         * 最低基础库: `1.7.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/wx.startHCE.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/wx.startHCE.html)
+         */
+        startHCE(option: StartHCEOption): void;
+        /**
+         *
+         * 开始搜索局域网下的 mDNS 服务。搜索的结果会通过 wx.onLocalService* 事件返回。
+         *
+         * **注意**
+         *
+         *
+         * 1. wx.startLocalServiceDiscovery 是一个消耗性能的行为,开始 30 秒后会自动 stop 并执行 wx.onLocalServiceDiscoveryStop 注册的回调函数。
+         * 2. 在调用 wx.startLocalServiceDiscovery 后,在这次搜索行为停止后才能发起下次 wx.startLocalServiceDiscovery。停止本次搜索行为的操作包括调用 wx.stopLocalServiceDiscovery 和 30 秒后系统自动 stop 本次搜索。
+         *
+         * 最低基础库: `2.4.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/network/mdns/wx.startLocalServiceDiscovery.html](https://developers.weixin.qq.com/miniprogram/dev/api/network/mdns/wx.startLocalServiceDiscovery.html)
+         */
+        startLocalServiceDiscovery(option: StartLocalServiceDiscoveryOption): void;
+        /**
+         *
+         * 开启小程序进入前台时接收位置消息
+         *
+         * **注意**
+         *
+         *
+         * - 获取位置信息需配置[地理位置用途说明](https://developers.weixin.qq.com/miniprogram/dev/reference/configuration/app.html#permission)。
+         *
+         * 最低基础库: `2.8.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.startLocationUpdate.html](https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.startLocationUpdate.html)
+         */
+        startLocationUpdate(option?: StartLocationUpdateOption): void;
+        /**
+         *
+         * 开启小程序进入前后台时均接收位置消息,需引导用户开启[授权]((open-ability/authorize#后台定位))。授权以后,小程序在运行中或进入后台均可接受位置消息变化。
+         *
+         * **注意**
+         *
+         *
+         * - 安卓微信7.0.6版本,iOS 7.0.5版本起支持该接口
+         * - 需在app.json中配置requiredBackgroundModes: ['location']后使用
+         * - 获取位置信息需配置[地理位置用途说明](https://developers.weixin.qq.com/miniprogram/dev/reference/configuration/app.html#permission)。
+         *
+         * 最低基础库: `2.8.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.startLocationUpdateBackground.html](https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.startLocationUpdateBackground.html)
+         */
+        startLocationUpdateBackground(option?: StartLocationUpdateBackgroundOption): void;
+        /**
+         *
+         * 开始录音。当主动调用 [uni.stopRecord](https://developers.weixin.qq.com/miniprogram/dev/api/media/recorder/wx.stopRecord.html),或者录音超过1分钟时自动结束录音。当用户离开小程序时,此接口无法调用。
+         *
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/recorder/wx.startRecord.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/recorder/wx.startRecord.html)
+         */
+        startRecord(option: WxStartRecordOption): void;
+        /**
+         *
+         * 初始化 Wi-Fi 模块。
+         *
+         *
+         * 最低基础库: `1.6.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/wifi/wx.startWifi.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/wifi/wx.startWifi.html)
+         */
+        startWifi(option?: StartWifiOption): void;
+        /**
+         *
+         * 停止播放音乐。
+         *
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/wx.stopBackgroundAudio.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/wx.stopBackgroundAudio.html)
+         */
+        stopBackgroundAudio(option?: StopBackgroundAudioOption): void;
+        /**
+         *
+         * 停止监听设备方向的变化。
+         *
+         * 最低基础库: `2.3.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/motion/wx.stopDeviceMotionListening.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/motion/wx.stopDeviceMotionListening.html)
+         */
+        stopDeviceMotionListening(option?: StopDeviceMotionListeningOption): void;
+        /**
+         *
+         * 关闭 NFC 模块。仅在安卓系统下有效。
+         *
+         *
+         * 最低基础库: `1.7.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/wx.stopHCE.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/wx.stopHCE.html)
+         */
+        stopHCE(option?: StopHCEOption): void;
+        /**
+         *
+         * 停止搜索 mDNS 服务
+         *
+         * 最低基础库: `2.4.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/network/mdns/wx.stopLocalServiceDiscovery.html](https://developers.weixin.qq.com/miniprogram/dev/api/network/mdns/wx.stopLocalServiceDiscovery.html)
+         */
+        stopLocalServiceDiscovery(option?: StopLocalServiceDiscoveryOption): void;
+        /**
+         *
+         * 关闭监听实时位置变化,前后台都停止消息接收
+         *
+         * 最低基础库: `2.8.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.stopLocationUpdate.html](https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.stopLocationUpdate.html)
+         */
+        stopLocationUpdate(option?: StopLocationUpdateOption): void;
+        /**
+         *
+         * 停止录音。
+         *
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/recorder/wx.stopRecord.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/recorder/wx.stopRecord.html)
+         */
+        stopRecord(option?: WxStopRecordOption): void;
+        /**
+         *
+         * 结束播放语音。
+         *
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/wx.stopVoice.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/wx.stopVoice.html)
+         */
+        stopVoice(option?: StopVoiceOption): void;
+        /**
+         *
+         * 关闭 Wi-Fi 模块。
+         *
+         *
+         * 最低基础库: `1.6.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/wifi/wx.stopWifi.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/wifi/wx.stopWifi.html)
+         */
+        stopWifi(option?: StopWifiOption): void;
+        /**
+         *
+         * 更新转发属性
+         *
+         *
+         * 最低基础库: `1.2.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/share/wx.updateShareMenu.html](https://developers.weixin.qq.com/miniprogram/dev/api/share/wx.updateShareMenu.html)
+         */
+        updateShareMenu(option: UpdateShareMenuOption): void;
+        /**
+         *
+         * 更新实时语音静音设置
+         *
+         * 最低基础库: `2.7.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/voip/wx.updateVoIPChatMuteConfig.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/voip/wx.updateVoIPChatMuteConfig.html)
+         */
+        updateVoIPChatMuteConfig(option: UpdateVoIPChatMuteConfigOption): void;
+        /**
+         *
+         * 更新客户端版本。当判断用户小程序所在客户端版本过低时,可使用该接口跳转到更新微信页面。
+         *
+         * 最低基础库: `2.12.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/base/update/wx.updateWeChatApp.html](https://developers.weixin.qq.com/miniprogram/dev/api/base/update/wx.updateWeChatApp.html)
+         */
+        updateWeChatApp(option?: UpdateWeChatAppOption): void;
+    }
+
+    interface NavigateToMiniProgramOptions {
+        /**
+         * 要打开的小程序 appId(百度小程序则填写App Key)
+         */
+        appId: string;
+        /**
+         * 打开的页面路径,如果为空则打开首页
+         */
+        path?: string;
+        /**
+         * 需要传递给目标小程序的数据,目标小程序可在 App.vue 的 onLaunch或onShow 中获取到这份数据
+         */
+        extraData?: any;
+        /**
+         * 要打开的小程序版本,有效值: develop(开发版),trial(体验版),release(正式版)。仅在当前小程序为开发版或体验版时此参数有效。如果当前小程序是正式版,则打开的小程序必定是正式版
+         * - release: 正式版
+         * - develop: 开发版
+         * - trial: 体验版
+         */
+        envVersion?: 'release' | 'develop' | 'trial';
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface NavigateBackMiniProgramOptions {
+        /**
+         * 需要传递给目标小程序的数据,目标小程序可在 App.vue 的 onLaunch或onShow 中获取到这份数据
+         */
+        extraData?: any;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GeneralCallbackResult {
+        /**
+         * 错误信息
+         */
+        errMsg: string;
+    }
+
+    interface SubNVue {
+        /**
+         * 显示原生子窗体
+         */
+        show(options: 'slide-in-right' | 'slide-in-left' | 'slide-in-top' | 'slide-in-bottom' | 'fade-in' | 'zoom-out' | 'zoom-fade-out' | 'pop-in'): void;
+        /**
+         * 隐藏原生子窗体
+         */
+        hide(options: 'slide-out-right' | 'slide-out-left' | 'slide-out-top' | 'slide-out-bottom' | 'fade-out' | 'zoom-in' | 'zoom-fade-in' | 'pop-out'): void;
+        /**
+         * 设置原生子窗体的样式
+         */
+        setStyle(options: SubNVuesSetStyleOptions): void;
+        /**
+         * 发送消息
+         */
+        postMessage(message: any): void;
+        /**
+         * 监听消息
+         */
+        onMessage(success: (result: any) => void): void;
+    }
+
+    interface SubNVuesSetStyleOptions {
+        /**
+         * 原生子窗体的排版位置
+         * - static: 原生子窗体在页面中正常定位
+         * - absolute: 原生子窗体在页面中绝对定位
+         * - dock: 原生子窗体在页面中停靠
+         */
+        position: 'static' | 'absolute' | 'dock';
+        /**
+         * 原生子窗体的停靠方式,仅当原生子窗体 "position" 属性值设置为 "dock" 时才生效
+         * - top: 原生子窗体停靠则页面顶部
+         * - bottom: 原生子窗体停靠在页面底部
+         * - left: 原生子窗体停靠在页面左侧
+         * - right: 原生子窗体停靠在页面右侧
+         */
+        dock: 'top' | 'bottom' | 'left' | 'right';
+        /**
+         * 原生子窗体的内置样式
+         * - popup: 弹出层
+         * - navigationBar: 导航栏
+         */
+        type: 'popup' | 'navigationBar';
+        /**
+         * 原生子窗体的遮罩层,仅当原生子窗体 "type" 属性值设置为 "popup" 时才生效
+         * - popup: 弹出层
+         * - navigationBar: 导航栏
+         */
+        mask: 'popup' | 'navigationBar';
+        /**
+         * 原生子窗体的宽度
+         */
+        width: string;
+        /**
+         * 原生子窗体的高度
+         */
+        height: string;
+        /**
+         * 原生子窗体垂直向下的偏移量
+         */
+        top: string;
+        /**
+         * 原生子窗体垂直向上的偏移量
+         */
+        bottom: string;
+        /**
+         * 原生子窗体水平向左的偏移量
+         */
+        left: string;
+        /**
+         * 原生子窗体水平向右的偏移量
+         */
+        right: string;
+        /**
+         * 原生子窗体的边距
+         */
+        margin: string;
+    }
+
+    interface RequestPaymentOptions {
+        /**
+         * 支付服务提供商,通过 uni.getProvider 获取
+         * - alipay: 支付宝支付
+         * - wxpay: 微信支付
+         * - baidu: 百度收银台
+         * - appleiap: 苹果应用内支付
+         */
+        provider: 'alipay' | 'wxpay' | 'baidu' | 'appleiap';
+        /**
+         * 订单数据
+         */
+        orderInfo: string;
+        /**
+         * 时间戳从1970年1月1日至今的秒数,即当前的时间,微信小程序独有
+         */
+        timeStamp?: string;
+        /**
+         * 随机字符串,长度为32个字符以下,微信小程序独有 。
+         */
+        nonceStr?: string;
+        /**
+         * 统一下单接口返回的 prepay_id 参数值,提交格式如:prepay_id=xx,微信小程序独有
+         */
+        package?: string;
+        /**
+         * 签名算法,暂支持 MD5 ,微信小程序独有
+         */
+        signType?: string;
+        /**
+         * 签名,具体签名方案参见小程序支付接口文档,微信小程序独有
+         */
+        paySign?: string;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface RequestOptions {
+        /**
+         * 资源url
+         */
+        url: string;
+      /**
+       * 请求的参数
+       */
+      // @ts-ignore
+      data?: string | AnyObject | ArrayBuffer;
+        /**
+         * 设置请求的 header,header 中不能设置 Referer。
+         */
+        header?: any;
+        /**
+         * 默认为 GET
+         * 可以是:OPTIONS,GET,HEAD,POST,PUT,DELETE,TRACE,CONNECT
+         */
+        method?: 'OPTIONS' | 'GET' | 'HEAD' | 'POST' | 'PUT' | 'DELETE' | 'TRACE' | 'CONNECT';
+        /**
+         * 超时时间
+         */
+        timeout?: number;
+        /**
+         * 如果设为json,会尝试对返回的数据做一次 JSON.parse
+         */
+        dataType?: string;
+        /**
+         * 设置响应的数据类型。合法值:text、arraybuffer
+         */
+        responseType?: string;
+        /**
+         * 验证 ssl 证书
+         */
+        sslVerify?: boolean;
+        /**
+         * 跨域请求时是否携带凭证
+         */
+        withCredentials?: boolean;
+        /**
+         * DNS解析时优先使用 ipv4
+         */
+        firstIpv4?: boolean;
+        /**
+         * 成功返回的回调函数
+         */
+        success?: (result: RequestSuccessCallbackResult) => void;
+        /**
+         * 失败的回调函数
+         */
+        fail?: (result: GeneralCallbackResult) => void;
+        /**
+         * 结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: GeneralCallbackResult) => void;
+    }
+
+    interface RequestSuccessCallbackResult {
+      /**
+       * 开发者服务器返回的数据
+       */
+      // @ts-ignore
+        data: string | AnyObject | ArrayBuffer;
+        /**
+         * 开发者服务器返回的 HTTP 状态码
+         */
+        statusCode: number;
+        /**
+         * 开发者服务器返回的 HTTP Response Header
+         */
+        header: any;
+        /**
+         * 开发者服务器返回的 cookies,格式为字符串数组
+         */
+        cookies: string [];
+    }
+
+    interface RequestTask {
+        /**
+         * 中断请求任务
+         */
+        abort(): void;
+        /**
+         * 监听 HTTP Response Header 事件
+         */
+        onHeadersReceived(callback: (result: any) => void): void;
+        /**
+         * 取消监听 HTTP Response Header 事件
+         */
+        offHeadersReceived(callback: (result: any) => void): void;
+    }
+
+    interface ConfigMTLSOptions {
+        /**
+         * 资源url
+         */
+        certificates: Certificate [];
+        /**
+         * 成功返回的回调函数
+         */
+        success?: (result: ConfigMTLSResult) => void;
+        /**
+         * 失败的回调函数
+         */
+        fail?: (result: ConfigMTLSResult) => void;
+        /**
+         * 结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface Certificate {
+        /**
+         * 对应请求的域名(注意:不要协议部分)
+         */
+        host: string;
+        /**
+         * 客户端证书(服务器端需要验证客户端证书时需要配置此项,格式要求请参考下面的证书格式说明,注意 iOS 平台客户端证书只支持 .p12 类型的证书)
+         */
+        client?: string;
+        /**
+         * 客户端证书对应的密码(客户端证书存在时必须配置此项)
+         */
+        clientPassword?: string;
+        /**
+         * 服务器端证书(客户端需要对服务器端证书做校验时需要配置此项,格式要求请参考下面的证书格式说明,注意 iOS 平台服务器端证书只支持 .cer 类型的证书)
+         */
+        server?: string [];
+    }
+
+    interface ConfigMTLSResult {
+        /**
+         * 成功返回 0,失败返回相应 code 码
+         */
+        code: number;
+    }
+
+    interface UploadFileOption {
+        /**
+         * 开发者服务器 url
+         */
+        url: string;
+        /**
+         * 文件类型,image/video/audio,仅支付宝小程序,且必填。
+         * - image: 图像
+         * - video: 视频
+         * - audio: 音频
+         */
+        fileType?: 'image' | 'video' | 'audio';
+        /**
+         * 要上传的文件对象
+         */
+        file?: File;
+        /**
+         * 要上传文件资源的路径
+         */
+        filePath?: string;
+        /**
+         * 文件对应的 key , 开发者在服务器端通过这个 key 可以获取到文件二进制内容
+         */
+        name?: string;
+        /**
+         * 需要上传的文件列表。
+         */
+        files?: UploadFileOptionFiles [];
+        /**
+         * HTTP 请求 Header, header 中不能设置 Referer
+         */
+        header?: any;
+        /**
+         * HTTP 请求中其他额外的 form data
+         */
+        formData?: any;
+        /**
+         * 超时时间,单位 ms
+         */
+        timeout?: number;
+        /**
+         * 成功返回的回调函数
+         */
+        success?: (result: UploadFileSuccessCallbackResult) => void;
+        /**
+         * 失败的回调函数
+         */
+        fail?: (result: GeneralCallbackResult) => void;
+        /**
+         * 结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: GeneralCallbackResult) => void;
+    }
+
+    interface UploadFileOptionFiles {
+        /**
+         * multipart 提交时,表单的项目名,默认为 file,如果 name 不填或填的值相同,可能导致服务端读取文件时只能读取到一个文件。
+         */
+        name?: string;
+        /**
+         * 要上传的文件对象
+         */
+        file?: File;
+        /**
+         * 要上传文件资源的路径
+         */
+        uri?: string;
+    }
+
+    interface UploadTask {
+        /**
+         * 中断上传任务
+         */
+        abort(): void;
+        /**
+         * 监听上传进度变化
+         */
+        onProgressUpdate(callback: (result: OnProgressUpdateResult) => void): void;
+        /**
+         * 取消监听上传进度变化事件
+         */
+        offProgressUpdate(callback: (result: any) => void): void;
+        /**
+         * 监听 HTTP Response Header 事件
+         */
+        onHeadersReceived(callback: (result: any) => void): void;
+        /**
+         * 取消监听 HTTP Response Header 事件
+         */
+        offHeadersReceived(callback: (result: any) => void): void;
+    }
+
+    interface OnProgressUpdateResult {
+        /**
+         * 上传进度百分比
+         */
+        progress: number;
+        /**
+         * 已经上传的数据长度,单位 Bytes
+         */
+        totalBytesSent: number;
+        /**
+         * 预期需要上传的数据总长度,单位 Bytes
+         */
+        totalBytesExpectedToSend: number;
+    }
+
+    interface DownloadFileOption {
+        /**
+         * 下载资源的 url
+         */
+        url: string;
+        /**
+         * HTTP 请求 Header,header 中不能设置 Referer
+         */
+        header?: any;
+        /**
+         * 超时时间,单位 ms
+         */
+        timeout?: number;
+        /**
+         * 下载成功后以 tempFilePath 的形式传给页面,res = {tempFilePath: '文件的临时路径'}
+         */
+        success?: (result: DownloadSuccessData) => void;
+        /**
+         * 失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface DownloadTask {
+        /**
+         * 中断下载任务
+         */
+        abort(): void;
+        /**
+         * 监听下载进度变化
+         */
+        onProgressUpdate(callback: (result: OnProgressDownloadResult) => void): void;
+        /**
+         * 取消监听下载进度变化
+         */
+        offProgressUpdate(callback: (result: any) => void): void;
+        /**
+         * 监听 HTTP Response Header 事件
+         */
+        onProgressUpdate(callback: (result: any) => void): void;
+        /**
+         * 取消监听 HTTP Response Header 事件
+         */
+        offHeadersReceived(callback: (result: any) => void): void;
+    }
+
+    interface OnProgressDownloadResult {
+        /**
+         * 下载进度百分比
+         */
+        progress: number;
+        /**
+         * 已经下载的数据长度,单位 Bytes
+         */
+        totalBytesWritten: number;
+        /**
+         * 预期需要下载的数据总长度,单位 Bytes
+         */
+        totalBytesExpectedToWrite: number;
+    }
+
+    interface UploadFileSuccessCallbackResult {
+        /**
+         * 开发者服务器返回的数据
+         */
+        data: string;
+        /**
+         * 开发者服务器返回的 HTTP 状态码
+         */
+        statusCode: number;
+    }
+
+    interface DownloadSuccessData {
+        /**
+         * 临时文件路径,下载后的文件会存储到一个临时文件
+         */
+        tempFilePath: string;
+        /**
+         * 开发者服务器返回的 HTTP 状态码
+         */
+        statusCode: number;
+    }
+
+    interface ConnectSocketOption {
+        /**
+         * 开发者服务器接口地址,必须是 wss 协议,且域名必须是后台配置的合法域名
+         */
+        url: string;
+        /**
+         * HTTP 请求 Header,header 中不能设置 Referer
+         */
+        header?: any;
+        /**
+         * 默认为 GET
+         * 可以是:OPTIONS,GET,HEAD,POST,PUT,DELETE,TRACE,CONNECT
+         */
+        method?: 'OPTIONS' | 'GET' | 'HEAD' | 'POST' | 'PUT' | 'DELETE' | 'TRACE' | 'CONNECT';
+        /**
+         * 子协议数组
+         */
+        protocols?: string [];
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface SendSocketMessageOptions {
+        /**
+         * 需要发送的内容
+         */
+        data: string | ArrayBuffer;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: GeneralCallbackResult) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: GeneralCallbackResult) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: GeneralCallbackResult) => void;
+    }
+
+    interface CloseSocketOptions {
+        /**
+         * 一个数字值表示关闭连接的状态号,表示连接被关闭的原因。如果这个参数没有被指定,默认的取值是1000 (表示正常连接关闭)
+         */
+        code?: number;
+        /**
+         * 一个可读的字符串,表示连接被关闭的原因。这个字符串必须是不长于123字节的UTF-8 文本(不是字符)
+         */
+        reason?: string;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: GeneralCallbackResult) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: GeneralCallbackResult) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: GeneralCallbackResult) => void;
+    }
+
+    interface SocketTask {
+        /**
+         * 通过 WebSocket 连接发送数据
+         */
+        send(options: SendSocketMessageOptions): void;
+        /**
+         * 关闭 WebSocket 连接
+         */
+        close(options: CloseSocketOptions): void;
+        /**
+         * 监听 WebSocket 连接打开事件
+         */
+        onOpen(callback: (result: OnSocketOpenCallbackResult) => void): void;
+        /**
+         * 监听 WebSocket 连接关闭事件
+         */
+        onClose(callback: (result: any) => void): void;
+        /**
+         * 监听 WebSocket 错误
+         */
+        onError(callback: (result: GeneralCallbackResult) => void): void;
+        /**
+         * 监听WebSocket接受到服务器的消息事件
+         */
+        onMessage(callback: (result: OnSocketMessageCallbackResult) => void): void;
+    }
+
+    interface OnSocketMessageCallbackResult {
+        /**
+         * 服务器返回的消息
+         */
+        data: string | ArrayBuffer;
+    }
+
+    interface OnSocketOpenCallbackResult {
+        /**
+         * 连接成功的 HTTP 响应 Header
+         */
+        header: any;
+    }
+
+    interface ChooseImageOptions {
+        /**
+         * 最多可以选择的图片张数,默认9
+         */
+        count?: number;
+        /**
+         * original 原图,compressed 压缩图,默认二者都有
+         */
+        sizeType?: string | string [];
+        /**
+         * album 从相册选图,camera 使用相机,默认二者都有
+         */
+        sourceType?: string [];
+        /**
+         * 根据文件拓展名过滤,每一项都不能是空字符串。默认不过滤。
+         */
+        extension?: string [];
+        /**
+         * 图像裁剪参数,设置后 sizeType 失效。
+         */
+        crop?: ChooseImageCropOptions;
+        /**
+         * 成功则返回图片的本地文件路径列表 tempFilePaths
+         */
+        success?: (result: ChooseImageSuccessCallbackResult) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface ChooseImageCropOptions {
+        /**
+         * 裁剪的宽度,单位为px,用于计算裁剪宽高比。
+         */
+        width: number;
+        /**
+         * 裁剪的高度,单位为px,用于计算裁剪宽高比。
+         */
+        height: number;
+        /**
+         * 取值范围为1-100,数值越小,质量越低(仅对jpg格式有效)。默认值为80。
+         */
+        quality?: number;
+        /**
+         * 是否将width和height作为裁剪保存图片真实的像素值。默认值为true。注:设置为false时在裁剪编辑界面显示图片的像素值,设置为true时不显示。
+         */
+        resize?: boolean;
+        /**
+         * 是否将裁剪的图片保存到手机相册里,默认值为false。
+         */
+        saveToAlbum?: boolean;
+    }
+
+    interface ChooseImageSuccessCallbackResult {
+        /**
+         * 图片的本地文件路径列表
+         */
+        tempFilePaths: string | string [];
+        /**
+         * 图片的本地文件列表,每一项是一个 File 对象
+         */
+        tempFiles: ChooseImageSuccessCallbackResultFile | ChooseImageSuccessCallbackResultFile [] | File | File [];
+    }
+
+    interface ChooseImageSuccessCallbackResultFile {
+        /**
+         * 本地文件路径
+         */
+        path: string;
+        /**
+         * 本地文件大小,单位:B
+         */
+        size: number;
+    }
+
+    interface PreviewImageOptions {
+        /**
+         * 当前显示图片的链接,不填则默认为 urls 的第一张
+         */
+        count?: string;
+        /**
+         * current 为当前显示图片的链接/索引值,不填或填写的值无效则为 urls 的第一张。App平台在 1.9.5至1.9.8之间,current为必填。不填会报错
+         */
+        current?: string | number;
+        /**
+         * 需要预览的图片链接列表
+         */
+        urls: string [];
+        /**
+         * 图片指示器样式
+         * - default: 底部圆点指示器
+         * - number: 顶部数字指示器
+         * - none: 不显示指示器
+         */
+        indicator?: 'default' | 'number' | 'none';
+        /**
+         * 是否可循环预览
+         */
+        loop?: boolean;
+        /**
+         * 长按图片显示操作菜单,如不填默认为保存相册,1.9.5 起支持。
+         */
+        longPressActions?: LongPressActionsOptions;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface LongPressActionsOptions {
+        /**
+         * 按钮的文字数组
+         */
+        itemList: string [];
+        /**
+         * 按钮的文字颜色,字符串格式,默认为"#000000"
+         */
+        itemColor?: string;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: LongPressActionsSuccessData) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface LongPressActionsSuccessData {
+        /**
+         * 接口调用失败的回调函数
+         */
+        tapIndex: number;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        index: number;
+    }
+
+    interface GetImageInfoOptions {
+        /**
+         * 图片的路径,可以是相对路径,临时文件路径,存储文件路径,网络图片路径
+         */
+        src: string;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: GetImageInfoSuccessData) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetImageInfoSuccessData {
+        /**
+         * 图片宽度,单位px
+         */
+        width: number;
+        /**
+         * 图片高度,单位px
+         */
+        height: number;
+        /**
+         * 返回图片的本地路径
+         */
+        path: string;
+        /**
+         * 返回图片的方向
+         */
+        orientation?: string;
+        /**
+         * 返回图片的格式
+         */
+        type?: string;
+    }
+
+    interface SaveImageToPhotosAlbumOptions {
+        /**
+         * 图片文件路径,可以是临时文件路径也可以是永久文件路径,不支持网络图片路径
+         */
+        filePath: string;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: SaveImageToPhotosAlbumResult) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface SaveImageToPhotosAlbumResult {
+        /**
+         * 保存到相册的图片路径
+         */
+        path: string;
+    }
+
+    interface CompressImageOptions {
+        /**
+         * 图片路径,图片的路径,可以是相对路径、临时文件路径、存储文件路径
+         */
+        src: string;
+        /**
+         * 压缩质量,范围0~100,数值越小,质量越低,压缩率越高(仅对jpg有效)
+         */
+        quality?: number;
+        /**
+         * 缩放图片的宽度
+         */
+        width?: string;
+        /**
+         * 缩放图片的高度
+         */
+        height?: string;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: CompressImageSuccessResult) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface CompressImageSuccessResult {
+        /**
+         * 压缩后图片的临时文件路径
+         */
+        tempFilePath: string;
+    }
+
+    interface CompressVideoOptions {
+        /**
+         * 视频文件路径,可以是临时文件路径也可以是永久文件路径
+         */
+        src: string;
+        /**
+         * 压缩质量
+         * - low: 低
+         * - medium: 中
+         * - high: 高
+         */
+        quality?: 'low' | 'medium' | 'high';
+        /**
+         * 码率,单位 kbps
+         */
+        bitrate?: number;
+        /**
+         * 帧率
+         */
+        fps?: number;
+        /**
+         * 相对于原视频的分辨率比例,取值范围(0, 1]
+         */
+        resolution?: number;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: CompressVideoSuccessData) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface CompressVideoSuccessData {
+        /**
+         * 压缩后的临时文件地址
+         */
+        tempFilePath: string;
+        /**
+         * 压缩后的大小,单位 kB
+         */
+        size: string;
+    }
+
+    interface GetVideoInfoOptions {
+        /**
+         * 视频文件路径,可以是临时文件路径也可以是永久文件路径
+         */
+        src: string;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: GetVideoInfoSuccessData) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetVideoInfoSuccessData {
+        /**
+         * 画面方向
+         */
+        orientation: string;
+        /**
+         * 视频格式
+         */
+        type: string;
+        /**
+         * 视频长度
+         */
+        duration: number;
+        /**
+         * 视频大小,单位 kB
+         */
+        size: number;
+        /**
+         * 视频的长,单位 px
+         */
+        height: number;
+        /**
+         * 视频的宽,单位 px
+         */
+        width: number;
+        /**
+         * 视频帧率
+         */
+        fps: number;
+        /**
+         * 视频码率,单位 kbps
+         */
+        bitrate: number;
+    }
+
+    interface OpenVideoEditorOptions {
+        /**
+         * 视频源的路径,只支持本地路径
+         */
+        filePath: string;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: OpenVideoEditorSuccessData) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface OpenVideoEditorSuccessData {
+        /**
+         * 剪辑后生成的视频文件的时长,单位毫秒(ms)
+         */
+        duration: number;
+        /**
+         * 剪辑后生成的视频文件大小,单位字节数(byte)
+         */
+        size: number;
+        /**
+         * 编辑后生成的视频文件的临时路径
+         */
+        tempFilePath: string;
+        /**
+         * 编辑后生成的缩略图文件的临时路径
+         */
+        tempThumbPath: string;
+    }
+
+    interface ChooseFileOptions {
+        /**
+         * 最多可以选择的文件数,默认100
+         */
+        count?: number;
+        /**
+         * 选择文件的类型,默认all,可选image、video
+         * - image: 选择图片文件
+         * - video: 选择视频文件
+         * - all: 默认值,选择本地文件,包含图片和视频
+         */
+        type?: 'image' | 'video' | 'all';
+        /**
+         * 选择文件的后缀名,暂只支持.zip、.png等,不支持application/msword等值
+         */
+        extension?: string [];
+        /**
+         * original 原图,compressed 压缩图,默认二者都有
+         */
+        sizeType?: string | string [];
+        /**
+         * album 从相册选图,camera 使用相机,默认二者都有
+         */
+        sourceType?: string [];
+        /**
+         * 成功则返回图片的本地文件路径列表 tempFilePaths、tempFiles
+         */
+        success?: (result: ChooseFileSuccessCallbackResult) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface ChooseFileSuccessCallbackResult {
+        /**
+         * 文件的本地文件路径列表
+         */
+        tempFilePaths: string | string [];
+        /**
+         * 文件的本地文件列表,每一项是一个 File 对象
+         */
+        tempFiles: ChooseFileSuccessCallbackResultFile | ChooseFileSuccessCallbackResultFile [] | File | File [];
+    }
+
+    interface ChooseFileSuccessCallbackResultFile {
+        /**
+         * 本地文件路径
+         */
+        path: string;
+        /**
+         * 本地文件大小,单位:B
+         */
+        size: number;
+    }
+
+    interface StartRecordOptions {
+        /**
+         * 录音成功后调用,返回录音文件的临时文件路径,res = {tempFilePath: '录音文件的临时路径'}
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface RecorderManager {
+        /**
+         * 开始录音
+         */
+        start(options: RecorderManagerStartOptions): void;
+        /**
+         * 暂停录音
+         */
+        pause(): void;
+        /**
+         * 暂停录音
+         */
+        resume(): void;
+        /**
+         * 停止录音
+         */
+        stop(): void;
+        /**
+         * 录音开始事件
+         */
+        onStart(options: (result: any) => void): void;
+        /**
+         * 录音暂停事件
+         */
+        onPause(options: (result: any) => void): void;
+        /**
+         * 录音停止事件,会回调文件地址
+         */
+        onStop(options: (result: any) => void): void;
+        /**
+         * 已录制完指定帧大小的文件,会回调录音分片结果数据。如果设置了 frameSize ,则会回调此事件
+         */
+        onFrameRecorded(options: (result: any) => void): void;
+        /**
+         * 录音错误事件, 会回调错误信息
+         */
+        onError(options: (result: any) => void): void;
+    }
+
+    interface RecorderManagerStartOptions {
+        /**
+         * 指定录音的时长,单位 ms ,如果传入了合法的 duration ,在到达指定的 duration 后会自动停止录音,最大值 600000(10 分钟),默认值 60000(1 分钟)
+         */
+        duration?: number;
+        /**
+         * 采样率,有效值 8000/16000/44100
+         */
+        sampleRate?: number;
+        /**
+         * 录音通道数,有效值 1/2
+         */
+        numberOfChannels?: number;
+        /**
+         * 编码码率,有效值见下表格
+         */
+        encodeBitRate?: number;
+        /**
+         * 音频格式,有效值 aac/mp3
+         */
+        format?: string;
+        /**
+         * 指定帧大小,单位 KB。传入 frameSize 后,每录制指定帧大小的内容后,会回调录制的文件内容,不指定则不会回调。暂仅支持 mp3 格式。
+         */
+        frameSize?: number;
+    }
+
+    interface PlayVoiceOptions {
+        /**
+         * 需要播放的语音文件的文件路径
+         */
+        filePath: string;
+        /**
+         * original 原图,compressed 压缩图,默认二者都有
+         */
+        duration?: number;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetBackgroundAudioPlayerStateOptions {
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: GetBackgroundAudioPlayerStateSuccessData) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetBackgroundAudioPlayerStateSuccessData {
+        /**
+         * 选定音频的长度(单位:s),只有在当前有音乐播放时返回
+         */
+        duration: number;
+        /**
+         * 选定音频的播放位置(单位:s),只有在当前有音乐播放时返回
+         */
+        currentPosition: number;
+        /**
+         * 播放状态(2:没有音乐在播放,1:播放中,0:暂停中)
+         */
+        status: number;
+        /**
+         * 音频的下载进度(整数,80 代表 80%),只有在当前有音乐播放时返回
+         */
+        downloadPercent: number;
+        /**
+         * 歌曲数据链接,只有在当前有音乐播放时返回
+         */
+        dataUrl: string;
+    }
+
+    interface SeekBackgroundAudioOptions {
+        /**
+         * 音乐位置,单位:秒
+         */
+        position: number;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface BackgroundAudioManager {
+        /**
+         * 当前音频的长度(单位:s),只有在当前有合法的 src 时返回
+         */
+        duration: number;
+        /**
+         * 当前音频的播放位置(单位:s),只有在当前有合法的 src 时返回
+         */
+        currentTime: number;
+        /**
+         * 当前是是否暂停或停止状态,true 表示暂停或停止,false 表示正在播放
+         */
+        paused: boolean;
+        /**
+         * 音频的数据源,默认为空字符串,当设置了新的 src 时,会自动开始播放 ,目前支持的格式有 m4a, aac, mp3, wav
+         */
+        src: string;
+        /**
+         * 音频开始播放的位置(单位:s)
+         */
+        startTime: number;
+        /**
+         * 音频缓冲的时间点,仅保证当前播放时间点到此时间点内容已缓冲
+         */
+        buffered: number;
+        /**
+         * 音频标题,用于做原生音频播放器音频标题。原生音频播放器中的分享功能,分享出去的卡片标题,也将使用该值。
+         */
+        title: string;
+        /**
+         * 专辑名,原生音频播放器中的分享功能,分享出去的卡片简介,也将使用该值
+         */
+        epname: string;
+        /**
+         * 歌手名,原生音频播放器中的分享功能,分享出去的卡片简介,也将使用该值
+         */
+        singer: string;
+        /**
+         * 封面图url,用于做原生音频播放器背景图。原生音频播放器中的分享功能,分享出去的卡片配图及背景也将使用该图。
+         */
+        coverImgUrl: string;
+        /**
+         * 页面链接,原生音频播放器中的分享功能,分享出去的卡片简介,也将使用该值
+         */
+        webUrl: string;
+        /**
+         * 音频协议。默认值为 'http',设置 'hls' 可以支持播放 HLS 协议的直播音频
+         */
+        protocol: string;
+        /**
+         * 播放
+         */
+        play(): void;
+        /**
+         * 暂停
+         */
+        pause(): void;
+        /**
+         * 跳转到指定位置,单位 s
+         */
+        seek(position: number): void;
+        /**
+         * 停止
+         */
+        stop(): void;
+        /**
+         * 背景音频进入可以播放状态,但不保证后面可以流畅播放
+         */
+        onCanplay(callback: (result: any) => void): void;
+        /**
+         * 背景音频播放事件
+         */
+        onPlay(callback: (result: any) => void): void;
+        /**
+         * 背景音频暂停事件
+         */
+        onPause(callback: (result: any) => void): void;
+        /**
+         * 背景音频停止事件
+         */
+        onStop(callback: (result: any) => void): void;
+        /**
+         * 背景音频自然播放结束事件
+         */
+        onEnded(callback: (result: any) => void): void;
+        /**
+         * 背景音频播放进度更新事件
+         */
+        onTimeUpdate(callback: (result: any) => void): void;
+        /**
+         * 用户在系统音乐播放面板点击上一曲事件(iOS only)
+         */
+        onPrev(callback: (result: any) => void): void;
+        /**
+         * 用户在系统音乐播放面板点击下一曲事件(iOS only)
+         */
+        onNext(callback: (result: any) => void): void;
+        /**
+         * 背景音频播放错误事件
+         */
+        onError(callback: (result: any) => void): void;
+        /**
+         * 音频加载中事件,当音频因为数据不足,需要停下来加载时会触发
+         */
+        onWaiting(callback: (result: any) => void): void;
+    }
+
+    interface AudioContext {
+        /**
+         * 音频的地址
+         */
+        setSrc(): void;
+        /**
+         * 暂停
+         */
+        pause(): void;
+        /**
+         * 播放
+         */
+        play(): void;
+        /**
+         * 跳转到指定位置,单位 s
+         */
+        seek(position: number): void;
+    }
+
+    interface InnerAudioContext {
+        /**
+         * 当前音频的长度(单位:s),只有在当前有合法的 src 时返回
+         */
+        duration: number;
+        /**
+         * 当前音频的播放位置(单位:s),只有在当前有合法的 src 时返回
+         */
+        currentTime: number;
+        /**
+         * 当前是是否暂停或停止状态,true 表示暂停或停止,false 表示正在播放
+         */
+        paused: boolean;
+        /**
+         * 音频的数据链接,用于直接播放。
+         */
+        src: string;
+        /**
+         * 音频开始播放的位置(单位:s)
+         */
+        startTime: number;
+        /**
+         * 音频缓冲的时间点,仅保证当前播放时间点到此时间点内容已缓冲
+         */
+        buffered: number;
+        /**
+         * 是否自动开始播放,默认 false
+         */
+        autoplay: boolean;
+        /**
+         * 是否循环播放,默认 false
+         */
+        loop: boolean;
+        /**
+         * 是否遵循系统静音开关,当此参数为 false 时,即使用户打开了静音开关,也能继续发出声音,默认值 true
+         */
+        obeyMuteSwitch: boolean;
+        /**
+         * 音量。范围 0~1。
+         */
+        volume: number;
+        /**
+         * 暂停
+         */
+        pause(): void;
+        /**
+         * 停止
+         */
+        stop(): void;
+        /**
+         * 播放
+         */
+        play(): void;
+        /**
+         * 跳转到指定位置,单位 s
+         */
+        seek(position: number): void;
+        /**
+         * 销毁当前实例
+         */
+        destroy(): void;
+        /**
+         * 音频进入可以播放状态,但不保证后面可以流畅播放
+         */
+        onCanplay(callback: (result: any) => void): void;
+        /**
+         * 音频播放事件
+         */
+        onPlay(callback: (result: any) => void): void;
+        /**
+         * 音频暂停事件
+         */
+        onPause(callback: (result: any) => void): void;
+        /**
+         * 音频停止事件
+         */
+        onStop(callback: (result: any) => void): void;
+        /**
+         * 音频自然播放结束事件
+         */
+        onEnded(callback: (result: any) => void): void;
+        /**
+         * 音频播放进度更新事件
+         */
+        onTimeUpdate(callback: (result: any) => void): void;
+        /**
+         * 音频播放错误事件
+         */
+        onError(callback: (result: any) => void): void;
+        /**
+         * 音频加载中事件,当音频因为数据不足,需要停下来加载时会触发
+         */
+        onWaiting(callback: (result: any) => void): void;
+        /**
+         * 音频进行 seek 操作事件
+         */
+        onSeeking(callback: (result: any) => void): void;
+        /**
+         * 音频完成 seek 操作事件
+         */
+        onSeeked(callback: (result: any) => void): void;
+        /**
+         * 取消监听 onCanplay 事件
+         */
+        offCanplay(callback: (result: any) => void): void;
+        /**
+         * 取消监听 onPlay 事件
+         */
+        offPlay(callback: (result: any) => void): void;
+        /**
+         * 取消监听 onPause 事件
+         */
+        offPause(callback: (result: any) => void): void;
+        /**
+         * 取消监听 onStop 事件
+         */
+        offStop(callback: (result: any) => void): void;
+        /**
+         * 取消监听 onEnded 事件
+         */
+        offEnded(callback: (result: any) => void): void;
+        /**
+         * 取消监听 onTimeUpdate 事件
+         */
+        offTimeUpdate(callback: (result: any) => void): void;
+        /**
+         * 取消监听 onWaiting 事件
+         */
+        offError(callback: (result: any) => void): void;
+        /**
+         * 取消监听 onWaiting 事件
+         */
+        offWaiting(callback: (result: any) => void): void;
+        /**
+         * 取消监听 onSeeking 事件
+         */
+        offSeeking(callback: (result: any) => void): void;
+        /**
+         * 取消监听 onSeeked 事件
+         */
+        offSeeked(callback: (result: any) => void): void;
+    }
+
+    interface ChooseVideoOptions {
+        /**
+         * album 从相册选视频,camera 使用相机拍摄,默认为:['album', 'camera']
+         */
+        sourceType?: string [];
+        /**
+         * 是否压缩所选的视频源文件,默认值为true,需要压缩
+         */
+        compressed?: boolean;
+        /**
+         * 拍摄视频最长拍摄时间,单位秒。最长支持 60 秒
+         */
+        maxDuration?: number;
+        /**
+         * 摄像切换
+         * - front: 前置摄像头
+         * - back: 后置摄像头
+         */
+        camera?: 'front' | 'back';
+        /**
+         * 根据文件拓展名过滤,每一项都不能是空字符串。默认不过滤。
+         */
+        extension?: string [];
+        /**
+         * 接口调用成功,返回视频文件的临时文件路径,详见返回参数说明
+         */
+        success?: (result: ChooseVideoSuccess) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface SaveVideoToPhotosAlbumOptions {
+        /**
+         * 视频文件路径,可以是临时文件路径也可以是永久文件路径
+         */
+        filePath: string;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface ChooseVideoSuccess {
+        /**
+         * 选定视频的临时文件路径
+         */
+        tempFilePath: string;
+        /**
+         * 选定的视频文件
+         */
+        tempFile: File;
+        /**
+         * 选定视频的时间长度
+         */
+        duration: number;
+        /**
+         * 选定视频的数据量大小
+         */
+        size: number;
+        /**
+         * 返回选定视频的长
+         */
+        height: number;
+        /**
+         * 返回选定视频的宽
+         */
+        width: number;
+        /**
+         * 包含扩展名的文件名称(仅H5支持)
+         */
+        name: string;
+    }
+
+    interface VideoContext {
+        /**
+         * 暂停
+         */
+        pause(): void;
+        /**
+         * 播放
+         */
+        play(): void;
+        /**
+         * 跳转到指定位置,单位 s
+         */
+        seek(position: number): void;
+        /**
+         * 发送弹幕,danmu 包含两个属性 text, color。
+         */
+        sendDanmu(danmu: Danmu): void;
+        /**
+         * 设置倍速播放,支持的倍率有 0.5/0.8/1.0/1.25/1.5
+         */
+        playbackRate(rate: number): void;
+        /**
+         * 进入全屏,可传入{direction}参数(1.7.0起支持),详见video组件文档
+         */
+        requestFullScreen(direction?: RequestFullScreenOptions): void;
+        /**
+         * 退出全屏
+         */
+        exitFullScreen(): void;
+    }
+
+    interface Danmu {
+        /**
+         * 弹幕文字
+         */
+        text?: string;
+        /**
+         * 弹幕颜色
+         */
+        color?: string;
+    }
+
+    interface RequestFullScreenOptions {
+        /**
+         * direction
+         * - 0: 正常竖向
+         * - 90: 屏幕逆时针90度
+         * - -90: 屏幕顺时针90度
+         */
+        direction?: 0 | 90 | -90;
+    }
+
+    interface CameraContext {
+        /**
+         * 拍照,可指定质量,成功则返回图片
+         */
+        takePhoto(options: CameraContextTakePhotoOptions): void;
+        /**
+         * 开始录像
+         */
+        startRecord(options: CameraContextStartRecordOptions): void;
+        /**
+         * 结束录像,成功则返回封面与视频
+         */
+        stopRecord(options: CameraContextStopRecordOptions): void;
+        /**
+         * 结束录像,成功则返回封面与视频
+         */
+        onCameraFrame(callback: (result: CameraFrame) => void): void;
+    }
+
+    interface CameraContextTakePhotoOptions {
+        /**
+         * 成像质量,值为high, normal, low,默认normal
+         * - normal: 普通质量
+         * - high: 高质量
+         * - low: 低质量
+         */
+        quality?: 'normal' | 'high' | 'low';
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: CameraContextTakePhotoResult) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface CameraContextTakePhotoResult {
+        /**
+         * 照片文件的临时路径,安卓是jpg图片格式,ios是png
+         */
+        tempImagePath: string;
+    }
+
+    interface CameraContextStartRecordOptions {
+        /**
+         * 超过30s或页面onHide时会结束录像
+         */
+        timeoutCallback?: (result: CameraContextStopRecordResult) => void;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface CameraContextStopRecordOptions {
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: CameraContextStopRecordResult) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface CameraContextStopRecordResult {
+        /**
+         * 封面图片文件的临时路径
+         */
+        tempThumbPath: string;
+        /**
+         * 视频的文件的临时路径
+         */
+        tempVideoPath: string;
+    }
+
+    interface CameraFrame {
+        /**
+         * 图像数据矩形的宽度
+         */
+        width: number;
+        /**
+         * 图像数据矩形的高度
+         */
+        height: number;
+        /**
+         * 图像像素点数据,一维数组,每四项表示一个像素点的 rgba
+         */
+        data: ArrayBuffer;
+    }
+
+    interface LivePusherContext {
+        /**
+         * 开始推流
+         */
+        start(options?: LivePusherContextOptions): void;
+        /**
+         * 暂停推流
+         */
+        pause(options?: LivePusherContextOptions): void;
+        /**
+         * 恢复推流
+         */
+        resume(options?: LivePusherContextOptions): void;
+        /**
+         * 停止推流
+         */
+        stop(options?: LivePusherContextOptions): void;
+        /**
+         * 切换前后摄像头
+         */
+        switchCamera(options?: LivePusherContextOptions): void;
+        /**
+         * 快照
+         */
+        snapshot(options?: LivePusherContextOptions): void;
+        /**
+         * 开启摄像头预览
+         */
+        startPreview(options?: LivePusherContextOptions): void;
+        /**
+         * 关闭摄像头预览
+         */
+        stopPreview(options?: LivePusherContextOptions): void;
+    }
+
+    interface LivePusherContextOptions {
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface SaveFileOptions {
+        /**
+         * 需要保存的文件的临时路径
+         */
+        tempFilePath: string;
+        /**
+         * 返回文件的保存路径,res = {savedFilePath: '文件的保存路径'}
+         */
+        success?: (result: SaveFileSuccess) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface SaveFileSuccess {
+        /**
+         * 文件的保存路径
+         */
+        savedFilePath: string;
+    }
+
+    interface GetFileInfoOptions {
+        /**
+         * 本地路径
+         */
+        filePath: string;
+        /**
+         * 计算文件摘要的算法,默认值 md5,有效值:md5,sha1
+         */
+        digestAlgorithm?: string;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: GetFileInfoSuccess) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetFileInfoSuccess {
+        /**
+         * 文件大小,单位:B
+         */
+        size: number;
+        /**
+         * 按照传入的 digestAlgorithm 计算得出的的文件摘要
+         */
+        digest?: string;
+        /**
+         * 调用结果
+         */
+        errMsg: string;
+    }
+
+    interface GetSavedFileListOptions {
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: GetSavedFileListSuccess) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetSavedFileListSuccess {
+        /**
+         * 接口调用结果
+         */
+        errMsg: number;
+        /**
+         * 文件列表
+         */
+        fileList: GetSavedFileListSuccessFileItem [];
+    }
+
+    interface GetSavedFileListSuccessFileItem {
+        /**
+         * 文件的本地路径
+         */
+        filePath: string;
+        /**
+         * 文件的保存时的时间戳
+         */
+        createTime: number;
+        /**
+         * 文件大小,以字节为单位
+         */
+        size: number;
+    }
+
+    interface GetSavedFileInfoOptions {
+        /**
+         * 文件路径
+         */
+        filePath: string;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: GetSavedFileInfoSuccess) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetSavedFileInfoSuccess {
+        /**
+         * 接口调用结果
+         */
+        errMsg: string;
+        /**
+         * 文件大小,单位B
+         */
+        size: number;
+        /**
+         * 文件保存时的时间戳,从1970/01/01 08:00:00 到该时刻的秒数
+         */
+        createTime: number;
+    }
+
+    interface RemoveSavedFileOptions {
+        /**
+         * 文件路径
+         */
+        filePath: string;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface OpenDocumentOptions {
+        /**
+         * 文件路径
+         */
+        filePath: string;
+        /**
+         * 文件类型,指定文件类型打开文件,有效值 doc, xls, ppt, pdf, docx, xlsx, pptx
+         */
+        fileType?: string;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface SetStorageOptions {
+        /**
+         * 本地缓存中的指定的 key
+         */
+        key: string;
+        /**
+         * 需要存储的内容,只支持原生类型、及能够通过 JSON.stringify 序列化的对象
+         */
+        data: any;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetStorageOptions {
+        /**
+         * 本地缓存中的指定的 key
+         */
+        key: string;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetStorageInfoOptions {
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: GetStorageInfoSuccess) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetStorageInfoSuccess {
+        /**
+         * 当前storage中所有的 key
+         */
+        keys: string [];
+        /**
+         * 当前占用的空间大小, 单位 kb
+         */
+        currentSize: number;
+        /**
+         * 限制的空间大小,单位kb
+         */
+        limitSize: number;
+    }
+
+    interface RemoveStorageOptions {
+        /**
+         * 本地缓存中的指定的 key
+         */
+        key: string;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetLocationOptions {
+        /**
+         * 默认为 wgs84 返回 gps 坐标,gcj02 返回可用于uni.openLocation的坐标
+         */
+        type?: string;
+        /**
+         * 传入 true 会返回高度信息,由于获取高度需要较高精确度,会减慢接口返回速度
+         */
+        altitude?: boolean;
+        /**
+         * 传入 true 会解析地址
+         */
+        geocode?: boolean;
+        /**
+         * 高精度定位超时时间(ms),指定时间内返回最高精度,该值3000ms以上高精度定位才有效果
+         */
+        highAccuracyExpireTime?: number;
+        /**
+         * 开启高精度定位
+         */
+        isHighAccuracy?: boolean;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: GetLocationSuccess) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetLocationSuccess {
+        /**
+         * 纬度,浮点数,范围为-90~90,负数表示南纬
+         */
+        latitude: number;
+        /**
+         * 经度,范围为-180~180,负数表示西经
+         */
+        longitude: number;
+        /**
+         * 速度,浮点数,单位m/s
+         */
+        speed: number;
+        /**
+         * 位置的精确度
+         */
+        accuracy: number;
+        /**
+         * 高度,单位 m
+         */
+        altitude: number;
+        /**
+         * 垂直精度,单位 m(Android 无法获取,返回 0)
+         */
+        verticalAccuracy: number;
+        /**
+         * 水平精度,单位 m
+         */
+        horizontalAccuracy: number;
+        /**
+         * 地址信息
+         */
+        address?: any;
+    }
+
+    interface ChooseLocationOptions {
+        /**
+         * 目标地纬度
+         */
+        latitude?: number;
+        /**
+         * 目标地经度
+         */
+        longitude?: number;
+        /**
+         * 搜索关键字
+         */
+        keyword?: string;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: ChooseLocationSuccess) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface ChooseLocationSuccess {
+        /**
+         * 位置名称
+         */
+        name: string;
+        /**
+         * 详细地址
+         */
+        address: string;
+        /**
+         * 纬度,浮点数,范围为-90~90,负数表示南纬
+         */
+        latitude: number;
+        /**
+         * 经度,范围为-180~180,负数表示西经
+         */
+        longitude: number;
+    }
+
+    interface OpenLocationOptions {
+        /**
+         * 纬度,范围为-90~90,负数表示南纬
+         */
+        latitude: number;
+        /**
+         * 经度,范围为-180~180,负数表示西经
+         */
+        longitude: number;
+        /**
+         * 缩放比例,范围5~18,默认为18
+         */
+        scale?: number;
+        /**
+         * 位置名称
+         */
+        name?: string;
+        /**
+         * 地址的详细说明
+         */
+        address?: string;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface MapContext {
+        /**
+         * 获取当前地图中心的经纬度,返回的是 gcj02 坐标系,可以用于 uni.openLocation
+         */
+        getCenterLocation(options: MapContextGetCenterLocationOptions): void;
+        /**
+         * 将地图中心移动到当前定位点,需要配合map组件的show-location使用
+         */
+        moveToLocation(options: MapContextMoveToLocationOptions): void;
+        /**
+         * 平移marker,带动画
+         */
+        translateMarker(options: MapContextTranslateMarkerOptions): void;
+        /**
+         * 缩放视野展示所有经纬度
+         */
+        includePoints(options: MapContextIncludePointsOptions): void;
+        /**
+         * 获取当前地图的视野范围
+         */
+        getRegion(options: MapContextGetRegionOptions): void;
+        /**
+         * 获取当前地图的缩放级别
+         */
+        getScale(options: MapContextGetScaleOptions): void;
+        /**
+         * 获取原生地图对象 plus.maps.Map
+         */
+        $getAppMap(): any;
+    }
+
+    interface MapContextGetCenterLocationOptions {
+        /**
+         * 接口调用成功的回调函数 ,res = { longitude: "经度", latitude: "纬度"}
+         */
+        success?: (result: LocationObject) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface MapContextMoveToLocationOptions {
+        /**
+         * 纬度,浮点数,范围为-90~90,负数表示南纬
+         */
+        latitude?: number;
+        /**
+         * 经度,范围为-180~180,负数表示西经
+         */
+        longitude?: number;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface LocationObject {
+        /**
+         * 纬度,浮点数,范围为-90~90,负数表示南纬
+         */
+        latitude: number;
+        /**
+         * 经度,范围为-180~180,负数表示西经
+         */
+        longitude: number;
+    }
+
+    interface MapContextTranslateMarkerOptions {
+        /**
+         * 指定marker
+         */
+        markerId: number;
+        /**
+         * 指定marker移动到的目标点
+         */
+        destination: LocationObject;
+        /**
+         * 移动过程中是否自动旋转marker
+         */
+        autoRotate?: boolean;
+        /**
+         * marker的旋转角度
+         */
+        rotate?: number;
+        /**
+         * 动画持续时长,默认值1000ms,平移与旋转分别计算
+         */
+        duration?: number;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 动画结束回调函数
+         */
+        animationEnd: (result: any) => void;
+    }
+
+    interface MapContextIncludePointsOptions {
+        /**
+         * 要显示在可视区域内的坐标点列表,[{latitude, longitude}]
+         */
+        points: LocationObject [];
+        /**
+         * 坐标点形成的矩形边缘到地图边缘的距离,单位像素。格式为[上,右,下,左],安卓上只能识别数组第一项,上下左右的padding一致。开发者工具暂不支持padding参数。
+         */
+        padding?: number [];
+    }
+
+    interface MapContextGetRegionOptions {
+        /**
+         * 接口调用成功的回调函数,res = {southwest, northeast},西南角与东北角的经纬度
+         */
+        success?: (result: MapContextGetRegionResult) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface MapContextGetRegionResult {
+        /**
+         * 西南角的经纬度
+         */
+        southwest: LocationObject;
+        /**
+         * 东北角的经纬度
+         */
+        northeast: LocationObject;
+    }
+
+    interface MapContextGetScaleOptions {
+        /**
+         * 接口调用成功的回调函数,res = {scale}
+         */
+        success?: (result: MapContextGetScaleResult) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface MapContextGetScaleResult {
+        /**
+         * 地图缩放级别
+         */
+        scale: number;
+    }
+
+    interface GetSystemInfoOptions {
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: GetSystemInfoResult) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetSystemInfoResult {
+        /**
+         * 手机品牌
+         */
+        brand?: string;
+        /**
+         * 手机型号
+         */
+        model: string;
+        /**
+         * 设备像素比
+         */
+        pixelRatio: number;
+        /**
+         * 屏幕宽度
+         */
+        screenWidth: number;
+        /**
+         * 屏幕高度
+         */
+        screenHeight: number;
+        /**
+         * 可使用窗口宽度
+         */
+        windowWidth: number;
+        /**
+         * 可使用窗口高度
+         */
+        windowHeight: number;
+        /**
+         * 状态栏的高度
+         */
+        statusBarHeight?: number;
+        /**
+         * 导航栏的高度
+         */
+        navigationBarHeight?: number;
+        /**
+         * 标题栏高度
+         */
+        titleBarHeight?: number;
+        /**
+         * 程序设置的语言
+         */
+        language?: string;
+        /**
+         * 引擎版本号
+         */
+        version: string;
+        /**
+         * 设备磁盘容量
+         */
+        storage?: string;
+        /**
+         * 当前电量百分比
+         */
+        currentBattery?: string;
+        /**
+         * 宿主APP名称
+         */
+        appName?: string;
+        /**
+         * App平台
+         */
+        AppPlatform?: string;
+        /**
+         * 宿主平台
+         */
+        host?: string;
+        /**
+         * 当前运行的客户端
+         */
+        app?: string;
+        /**
+         * 客户端基础库版本
+         */
+        SDKVersion: string;
+        /**
+         * 宿主平台版本号
+         */
+        swanNativeVersion?: string;
+        /**
+         * 操作系统版本
+         */
+        system: string;
+        /**
+         * 客户端平台
+         */
+        platform: string;
+        /**
+         * 用户字体大小设置
+         */
+        fontSizeSetting?: number;
+        /**
+         * 可使用窗口的顶部位置
+         */
+        windowTop?: number;
+        /**
+         * 可使用窗口的底部位置
+         */
+        windowBottom?: number;
+        /**
+         * 允许微信使用相册的开关(仅 iOS 有效)
+         */
+        albumAuthorized?: boolean;
+        /**
+         * 允许微信使用摄像头的开关
+         */
+        cameraAuthorized?: boolean;
+        /**
+         * 允许微信使用定位的开关
+         */
+        locationAuthorized?: boolean;
+        /**
+         * 允许微信使用麦克风的开关
+         */
+        microphoneAuthorized?: boolean;
+        /**
+         * 允许微信通知的开关
+         */
+        notificationAuthorized?: boolean;
+        /**
+         * 允许微信通知带有提醒的开关(仅 iOS 有效)
+         */
+        notificationAlertAuthorized?: boolean;
+        /**
+         * 允许微信通知带有标记的开关(仅 iOS 有效)
+         */
+        notificationBadgeAuthorized?: boolean;
+        /**
+         * 允许微信通知带有声音的开关(仅 iOS 有效)
+         */
+        notificationSoundAuthorized?: boolean;
+        /**
+         * 蓝牙的系统开关
+         */
+        bluetoothEnabled?: boolean;
+        /**
+         * 地理位置的系统开关
+         */
+        locationEnabled?: boolean;
+        /**
+         * Wi-Fi 的系统开关
+         */
+        wifiEnabled?: boolean;
+        /**
+         * 在竖屏正方向下的安全区域
+         */
+        safeArea?: SafeArea;
+        /**
+         * 在竖屏正方向下的安全区域插入位置
+         */
+        safeAreaInsets?: SafeAreaInsets;
+        /**
+         * 上一次缓存的位置信息
+         */
+        cacheLocation?: any;
+        /**
+         * 设备 ID
+         */
+        deviceId: string;
+    }
+
+    interface SafeArea {
+        /**
+         * 安全区域左上角横坐标
+         */
+        left: number;
+        /**
+         * 安全区域右下角横坐标
+         */
+        right: number;
+        /**
+         * 安全区域左上角纵坐标
+         */
+        top: number;
+        /**
+         * 安全区域右下角纵坐标
+         */
+        bottom: number;
+        /**
+         * 安全区域的宽度,单位逻辑像素
+         */
+        width: number;
+        /**
+         * 安全区域的高度,单位逻辑像素
+         */
+        height: number;
+    }
+
+    interface SafeAreaInsets {
+        /**
+         * 安全区域左侧插入位置
+         */
+        left: number;
+        /**
+         * 安全区域右侧插入位置
+         */
+        right: number;
+        /**
+         * 安全区顶部插入位置
+         */
+        top: number;
+        /**
+         * 安全区域底部插入位置
+         */
+        bottom: number;
+    }
+
+    interface GetNetworkTypeOptions {
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: GetNetworkTypeSuccess) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetNetworkTypeSuccess {
+        /**
+         * 网络类型
+         */
+        networkType: string;
+    }
+
+    interface OnNetworkStatusChangeSuccess {
+        /**
+         * 当前是否有网络连接
+         */
+        isConnected: boolean;
+        /**
+         * 网络类型
+         */
+        networkType: string;
+    }
+
+    interface OnKeyboardHeightChangeResult {
+        /**
+         * 键盘高度
+         */
+        height: number;
+    }
+
+    interface OnAccelerometerChangeSuccess {
+        /**
+         * X 轴
+         */
+        x: number;
+        /**
+         * Y 轴
+         */
+        y: number;
+        /**
+         * Z 轴
+         */
+        z: number;
+    }
+
+    interface StartAccelerometerOptions {
+        /**
+         * interval
+         * - game: 适用于更新游戏的回调频率,在 20ms/次 左右
+         * - ui: 适用于更新游戏的回调频率,在 20ms/次 左右
+         * - normal: 普通的回调频率,在 200ms/次 左右
+         */
+        interval?: 'game' | 'ui' | 'normal';
+        /**
+         * 成功返回的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface StopAccelerometerOptions {
+        /**
+         * 成功返回的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface OnCompassChangeSuccess {
+        /**
+         * 面对的方向度数
+         */
+        direction: number;
+    }
+
+    interface StartCompassOptions {
+        /**
+         * 成功返回的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface StopCompassOptions {
+        /**
+         * 成功返回的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface MakePhoneCallOptions {
+        /**
+         * 需要拨打的电话号码
+         */
+        phoneNumber: string;
+        /**
+         * 成功返回的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface ScanCodeOptions {
+        /**
+         * 是否只能从相机扫码,不允许从相册选择图片
+         */
+        onlyFromCamera?: boolean;
+        /**
+         * 扫码类型,参数类型是数组,二维码是'qrCode',一维码是'barCode',DataMatrix是‘datamatrix’,pdf417是‘pdf417’。
+         */
+        scanType?: any [];
+        /**
+         * 仅App端支持
+         */
+        autoDecodeCharSet?: boolean;
+        /**
+         * 成功返回的回调函数
+         */
+        success?: (result: ScanCodeSuccessRes) => void;
+        /**
+         * 失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface ScanCodeSuccessRes {
+        /**
+         * 所扫码的内容
+         */
+        result: string;
+        /**
+         * 所扫码的类型
+         */
+        scanType: string;
+        /**
+         * 所扫码的字符集
+         */
+        charSet: string;
+        /**
+         * 当所扫的码为当前应用的合法二维码时,会返回此字段,内容为二维码携带的 path。
+         */
+        path: string;
+    }
+
+    interface SetClipboardDataOptions {
+        /**
+         * 需要设置的内容
+         */
+        data: string;
+        /**
+         * 是否弹出提示,默认弹出提示
+         */
+        showToast?: boolean;
+        /**
+         * 成功返回的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetClipboardDataOptions {
+        /**
+         * 成功返回的回调函数
+         */
+        success?: (result: GetClipboardDataSuccessRes) => void;
+        /**
+         * 失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetClipboardDataSuccessRes {
+        /**
+         * 剪贴板的内容
+         */
+        data: string;
+    }
+
+    interface OpenBluetoothAdapterOptions {
+        /**
+         * 成功则返回成功初始化信息
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface CloseBluetoothAdapterOptions {
+        /**
+         * 成功则返回成功关闭模块信息
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetBluetoothAdapterStateOptions {
+        /**
+         * 成功则返回本机蓝牙适配器状态
+         */
+        success?: (result: GetBluetoothAdapterStateSuccess) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetBluetoothAdapterStateSuccess {
+        /**
+         * 是否正在搜索设备
+         */
+        discovering: boolean;
+        /**
+         * 蓝牙适配器是否可用
+         */
+        available: boolean;
+        /**
+         * 成功:ok,错误:详细信息
+         */
+        errMsg: string;
+    }
+
+    interface OnBluetoothAdapterStateChangeResult {
+        /**
+         * 是否正在搜索设备
+         */
+        discovering: boolean;
+        /**
+         * 蓝牙适配器是否可用
+         */
+        available: boolean;
+    }
+
+    interface OnBluetoothDeviceFoundResult {
+        /**
+         * 设备列表信息
+         */
+        devices: BluetoothDeviceInfo [];
+    }
+
+    interface StartBluetoothDevicesDiscoveryOptions {
+        /**
+         * 蓝牙设备主 service 的 uuid 列表
+         */
+        services?: any [];
+        /**
+         * 是否允许重复上报同一设备, 如果允许重复上报,则onDeviceFound 方法会多次上报同一设备,但是 RSSI 值会有不同
+         */
+        allowDuplicatesKey?: boolean;
+        /**
+         * 上报设备的间隔,默认为0,意思是找到新设备立即上报,否则根据传入的间隔上报
+         */
+        interval?: number;
+        /**
+         * 成功则返回本机蓝牙适配器状态
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface StopBluetoothDevicesDiscoveryOptions {
+        /**
+         * 成功则返回本机蓝牙适配器状态
+         */
+        success?: (result: StopBluetoothDevicesDiscoverySuccess) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface StopBluetoothDevicesDiscoverySuccess {
+        /**
+         * 成功:ok,错误:详细信息
+         */
+        errMsg: string;
+    }
+
+    interface GetBluetoothDevicesOptions {
+        /**
+         * 成功则返回本机蓝牙适配器状态
+         */
+        success?: (result: GetBluetoothDevicesSuccess) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetBluetoothDevicesSuccess {
+        /**
+         * uuid 对应的的已连接设备列表
+         */
+        devices: BluetoothDeviceInfo [];
+        /**
+         * 成功:ok,错误:详细信息
+         */
+        errMsg: string;
+    }
+
+    interface BluetoothDeviceInfo {
+        /**
+         * 蓝牙设备名称,某些设备可能没有
+         */
+        name: string;
+        /**
+         * 用于区分设备的 id
+         */
+        deviceId: string;
+        /**
+         * 当前蓝牙设备的信号强度
+         */
+        RSSI: number;
+        /**
+         * 当前蓝牙设备的广播数据段中的ManufacturerData数据段 (注意:vConsole 无法打印出 ArrayBuffer 类型数据)
+         */
+        advertisData: any [];
+        /**
+         * 当前蓝牙设备的广播数据段中的ServiceUUIDs数据段
+         */
+        advertisServiceUUIDs: any [];
+        /**
+         * 当前蓝牙设备的广播数据段中的LocalName数据段
+         */
+        localName: string;
+        /**
+         * 当前蓝牙设备的广播数据段中的ServiceData数据段
+         */
+        serviceData: any [];
+    }
+
+    interface GetConnectedBluetoothDevicesOptions {
+        /**
+         * 蓝牙设备主 service 的 uuid 列表
+         */
+        services: any [];
+        /**
+         * 成功则返回本机蓝牙适配器状态
+         */
+        success?: (result: GetConnectedBluetoothDevicesSuccess) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetConnectedBluetoothDevicesSuccess {
+        /**
+         * 搜索到的设备列表
+         */
+        devices: GetConnectedBluetoothDevicesSuccessData [];
+        /**
+         * 成功:ok,错误:详细信息
+         */
+        errMsg: string;
+    }
+
+    interface GetConnectedBluetoothDevicesSuccessData {
+        /**
+         * 蓝牙设备名称,某些设备可能没有
+         */
+        name: string;
+        /**
+         * 用于区分设备的 id
+         */
+        deviceId: string;
+    }
+
+    interface CloseBLEConnectionOptions {
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+        /**
+         * 蓝牙设备 id,参考 device 对象
+         */
+        deviceId: string;
+    }
+
+    interface CreateBLEConnectionOptions {
+        /**
+         * 蓝牙设备 id,参考 getDevices 接口
+         */
+        deviceId: string;
+        /**
+         * 超时时间
+         */
+        timeout?: number;
+        /**
+         * 成功则返回本机蓝牙适配器状态
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface OnBLEConnectionStateChangeSuccess {
+        /**
+         * 蓝牙设备 id,参考 device 对象
+         */
+        deviceId: string;
+        /**
+         * 连接目前的状态
+         */
+        connected: boolean;
+    }
+
+    interface GetBLEDeviceServicesOptions {
+        /**
+         * 蓝牙设备 id,参考 device 对象
+         */
+        deviceId: string;
+        /**
+         * 成功则返回本机蓝牙适配器状态
+         */
+        success?: (result: GetBLEDeviceServicesSuccess) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetBLEDeviceServicesSuccess {
+        /**
+         * 设备服务列表
+         */
+        services: GetBLEDeviceServicesSuccessData [];
+        /**
+         * 成功:ok,错误:详细信息
+         */
+        errMsg: string;
+    }
+
+    interface GetBLEDeviceServicesSuccessData {
+        /**
+         * 蓝牙设备服务的 uuid
+         */
+        uuid: string;
+        /**
+         * 该服务是否为主服务
+         */
+        isPrimary: boolean;
+    }
+
+    interface GetBLEDeviceCharacteristicsOptions {
+        /**
+         * 蓝牙设备 id,参考 device 对象
+         */
+        deviceId: string;
+        /**
+         * 蓝牙服务 uuid
+         */
+        serviceId: string;
+        /**
+         * 成功则返回本机蓝牙适配器状态
+         */
+        success?: (result: GetBLEDeviceCharacteristicsSuccess) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetBLEDeviceCharacteristicsSuccess {
+        /**
+         * 设备特征值列表
+         */
+        characteristics: GetBLEDeviceCharacteristicsSuccessData [];
+        /**
+         * 成功:ok,错误:详细信息
+         */
+        errMsg: string;
+    }
+
+    interface GetBLEDeviceCharacteristicsSuccessData {
+        /**
+         * 蓝牙设备服务的 uuid
+         */
+        uuid: string;
+        /**
+         * 该特征值支持的操作类型
+         */
+        properties: any;
+    }
+
+    interface ReadBLECharacteristicValueOptions {
+        /**
+         * 蓝牙设备 id,参考 device 对象
+         */
+        deviceId: string;
+        /**
+         * 蓝牙特征值对应服务的 uuid
+         */
+        serviceId: string;
+        /**
+         * 蓝牙特征值的 uuid
+         */
+        characteristicId: string;
+        /**
+         * 成功则返回本机蓝牙适配器状态
+         */
+        success?: (result: ReadBLECharacteristicValueSuccess) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface ReadBLECharacteristicValueSuccess {
+        /**
+         * 错误码
+         */
+        errCode: string;
+        /**
+         * 成功:ok,错误:详细信息
+         */
+        errMsg: string;
+    }
+
+    interface WriteBLECharacteristicValueOptions {
+        /**
+         * 蓝牙设备 id,参考 device 对象
+         */
+        deviceId: string;
+        /**
+         * 蓝牙特征值对应服务的 uuid
+         */
+        serviceId: string;
+        /**
+         * 蓝牙特征值的 uuid
+         */
+        characteristicId: string;
+        /**
+         * 蓝牙设备特征值对应的二进制值
+         */
+        value: any [];
+        /**
+         * 成功则返回本机蓝牙适配器状态
+         */
+        success?: (result: StopBluetoothDevicesDiscoverySuccess) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface NotifyBLECharacteristicValueChangeOptions {
+        /**
+         * 蓝牙设备 id,参考 device 对象
+         */
+        deviceId: string;
+        /**
+         * 蓝牙特征值对应服务的 uuid
+         */
+        serviceId: string;
+        /**
+         * 蓝牙特征值的 uuid
+         */
+        characteristicId: string;
+        /**
+         * true: 启用 notify; false: 停用 notify
+         */
+        state: boolean;
+        /**
+         * 成功则返回本机蓝牙适配器状态
+         */
+        success?: (result: StopBluetoothDevicesDiscoverySuccess) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface OnBLECharacteristicValueChangeSuccess {
+        /**
+         * 蓝牙设备 id,参考 device 对象
+         */
+        deviceId: string;
+        /**
+         * 蓝牙特征值对应服务的 uuid
+         */
+        serviceId: string;
+        /**
+         * 蓝牙特征值的 uuid
+         */
+        characteristicId: string;
+        /**
+         * 特征值最新的值 (注意:vConsole 无法打印出 ArrayBuffer 类型数据)
+         */
+        value: any [];
+    }
+
+    interface StartBeaconDiscoveryOptions {
+        /**
+         * iBeacon设备广播的 uuids
+         */
+        uuids: any [];
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface StopBeaconDiscoveryOptions {
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface SetBLEMTUOptions {
+        /**
+         * 用于区分设备的 id
+         */
+        deviceId: string;
+        /**
+         * 最大传输单元(22,512) 区间内,单位 bytes
+         */
+        mtu: number;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetBLEDeviceRSSIOptions {
+        /**
+         * 蓝牙设备 id
+         */
+        deviceId: string;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetBeaconsOptions {
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: GetBeaconsRes) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetBeaconsRes {
+        /**
+         * 接口调用成功的回调函数
+         */
+        beacons: Beacon [];
+        /**
+         * 调用结果
+         */
+        errMsg: string;
+    }
+
+    interface Beacon {
+        /**
+         * iBeacon 设备广播的 uuid
+         */
+        uuid: string;
+        /**
+         * iBeacon 设备的主 id
+         */
+        major: string;
+        /**
+         * iBeacon 设备的次 id
+         */
+        minor: string;
+        /**
+         * 表示设备距离的枚举值
+         */
+        proximity: number;
+        /**
+         * iBeacon 设备的距离
+         */
+        accuracy: number;
+        /**
+         * 表示设备的信号强度
+         */
+        rssi: number;
+    }
+
+    interface BeaconService {
+        /**
+         * 服务目前是否可用
+         */
+        available: boolean;
+        /**
+         * 目前是否处于搜索状态
+         */
+        discovering: boolean;
+    }
+
+    interface GetHCEStateOptions {
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface StartHCEOptions {
+        /**
+         * 需要注册到系统的 AID 列表,每个 AID 为 String 类型
+         */
+        aid_list: any [];
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface StopHCEOptions {
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface HCEMessageRes {
+        /**
+         * 消息类型
+         */
+        messageType: number;
+        /**
+         * 客户端接收到 NFC 设备的指令
+         */
+        data: any [];
+        /**
+         * 此参数当且仅当 messageType=2 时有效
+         */
+        reason: number;
+    }
+
+    interface SendHCEMessageOptions {
+        /**
+         * 二进制数据
+         */
+        data: any [];
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface StartWifiOptions {
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface StopWifiOptions {
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface ConnectWifiOptions {
+        /**
+         * Wi-Fi 设备ssid
+         */
+        SSID: string;
+        /**
+         * Wi-Fi 设备bssid
+         */
+        BSSID?: string;
+        /**
+         * Wi-Fi 设备密码
+         */
+        password?: string;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetWifiListOptions {
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface WiFi {
+        /**
+         * Wi-Fi 的SSID
+         */
+        SSID: string;
+        /**
+         * Wi-Fi 的BSSID
+         */
+        BSSID: string;
+        /**
+         * Wi-Fi 是否安全
+         */
+        secure: boolean;
+        /**
+         * Wi-Fi 信号强度
+         */
+        signalStrength: number;
+    }
+
+    interface SetWifiListOptions {
+        /**
+         * Wi-Fi 的SSID
+         */
+        wifiList: WiFiItem [];
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface WiFiItem {
+        /**
+         * Wi-Fi 的SSID
+         */
+        SSID: string;
+        /**
+         * Wi-Fi 的BSSID
+         */
+        BSSID: string;
+        /**
+         * Wi-Fi 设备密码
+         */
+        password: string;
+    }
+
+    interface GetConnectedWifiOptions {
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: GetConnectedWifiRes) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetConnectedWifiRes {
+        /**
+         * 接口调用成功的回调函数
+         */
+        wifi: WiFi;
+    }
+
+    interface ShowToastOptions {
+        /**
+         * 提示的内容
+         */
+        title?: string;
+        /**
+         * 图标
+         * - success: 显示成功图标
+         * - loading: 显示加载图标
+         * - error: 显示错误图标
+         * - none: 不显示图标
+         */
+        icon?: 'success' | 'loading' | 'error' | 'none';
+        /**
+         * 自定义图标的本地路径,image 的优先级高于 icon
+         */
+        image?: string;
+        /**
+         * 提示的延迟时间,单位毫秒,默认:1500
+         */
+        duration?: number;
+        /**
+         * 纯文本轻提示显示位置,填写有效值后只有 title 属性生效
+         * - top: 居上显示
+         * - center: 居中显示
+         * - bottom: 居底显示
+         */
+        position?: 'top' | 'center' | 'bottom';
+        /**
+         * 是否显示透明蒙层,防止触摸穿透,默认:false
+         */
+        mask?: boolean;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface ShowLoadingOptions {
+        /**
+         * 提示的内容
+         */
+        title?: string;
+        /**
+         * 是否显示透明蒙层,防止触摸穿透,默认:false
+         */
+        mask?: boolean;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface ShowModalOptions {
+        /**
+         * 提示的标题
+         */
+        title?: string;
+        /**
+         * 提示的内容
+         */
+        content?: string;
+        /**
+         * 是否显示取消按钮,默认为 true
+         */
+        showCancel?: boolean;
+        /**
+         * 取消按钮的文字,默认为"取消"
+         */
+        cancelText?: string;
+        /**
+         * 取消按钮的文字颜色,默认为"#000000"
+         */
+        cancelColor?: string;
+        /**
+         * 确定按钮的文字,默认为"确定"
+         */
+        confirmText?: string;
+        /**
+         * 确定按钮的文字颜色,默认为"#3CC51F"
+         */
+        confirmColor?: string;
+        /**
+         * 是否显示输入框
+         */
+        editable?: boolean;
+        /**
+         * 显示输入框时的提示文本
+         */
+        placeholderText?: string;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: ShowModalRes) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface ShowModalRes {
+        /**
+         * 为 true 时,表示用户点击了确定按钮
+         */
+        confirm: boolean;
+        /**
+         * 为 true 时,表示用户点击了取消
+         */
+        cancel: boolean;
+        /**
+         * editable 为 true 时,用户输入的文本
+         */
+        content?: string;
+    }
+
+    interface ShowActionSheetOptions {
+        /**
+         * 警示文案(已废弃,请改用 alertText)
+         */
+        title?: string;
+        /**
+         * 警示文案
+         */
+        alertText?: string;
+        /**
+         * 按钮的文字数组
+         */
+        itemList: any [];
+        /**
+         * 按钮的文字颜色,默认为"#000000"
+         */
+        itemColor?: string;
+        /**
+         * 大屏设备弹出原生选择按钮框的指示区域,默认居中显示
+         */
+        popover?: ShowActionPopover;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: ShowActionSheetRes) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface ShowActionSheetRes {
+        /**
+         * 用户点击的按钮,从上到下的顺序,从0开始
+         */
+        tapIndex: number;
+    }
+
+    interface ShowActionPopover {
+        /**
+         * 指示区域坐标,使用原生 navigationBar 时一般需要加上 navigationBar 的高度
+         */
+        top?: number;
+        /**
+         * 指示区域坐标
+         */
+        left?: number;
+        /**
+         * 指示区域宽度
+         */
+        width?: number;
+        /**
+         * 指示区域高度
+         */
+        height?: number;
+    }
+
+    interface SetNavigationBarTitleOptions {
+        /**
+         * 页面标题
+         */
+        title: string;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface SetNavigationbarColorOptions {
+        /**
+         * 前景颜色值,包括按钮、标题、状态栏的颜色
+         */
+        frontColor?: string;
+        /**
+         * 背景颜色值,有效值为十六进制颜色
+         */
+        backgroundColor?: string;
+        /**
+         * 动画效果
+         */
+        animation?: NavigationBarAnimation;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface SetTabBarBadgeOptions {
+        /**
+         * tabBar的哪一项,从左边算起,索引从0开始
+         */
+        index: number;
+        /**
+         * 显示的文本,不超过 3 个半角字符
+         */
+        text: string;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface RemoveTabBarBadgeOptions {
+        /**
+         * tabBar的哪一项,从左边算起,索引从0开始
+         */
+        index: number;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface ShowTabBarRedDotOptions {
+        /**
+         * tabBar的哪一项,从左边算起,索引从0开始
+         */
+        index: number;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface HideTabBarRedDotOptions {
+        /**
+         * tabBar的哪一项,从左边算起,索引从0开始
+         */
+        index: number;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface NavigationBarAnimation {
+        /**
+         * 动画变化时间,默认0,单位:毫秒
+         */
+        duration: number;
+        /**
+         * 动画变化方式,默认 linear
+         * - linear: 动画从头到尾的速度是相同的
+         * - easeIn: 动画以低速开始
+         * - easeOut: 动画以低速结束
+         * - easeInOut: 动画以低速开始和结束
+         */
+        timingFunc: 'linear' | 'easeIn' | 'easeOut' | 'easeInOut';
+    }
+
+    interface WindowResizeResult {
+        /**
+         * 变化后的窗口的大小,单位为 px ,{windowWidth,windowHeight}
+         */
+        size: WindowResizeResultSize;
+        /**
+         * 变化后的设备方向
+         * - landscape: undefined
+         * - portrait: undefined
+         */
+        deviceOrientation: 'landscape' | 'portrait';
+    }
+
+    interface WindowResizeResultSize {
+        /**
+         * 变化后的窗口宽度,单位 px
+         */
+        windowWidth: number;
+        /**
+         * 变化后的窗口高度,单位 px
+         */
+        windowHeight: number;
+    }
+
+    interface SetTabBarBadgeOptions {
+        /**
+         * tabBar的哪一项,从左边算起,索引从0开始
+         */
+        index: number;
+        /**
+         * 显示的文本
+         */
+        text: string;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface RemoveTabBarBadgeOptions {
+        /**
+         * tabBar的哪一项,从左边算起,索引从0开始
+         */
+        index: number;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface ShowTabBarRedDotOptions {
+        /**
+         * tabBar的哪一项,从左边算起,索引从0开始
+         */
+        index: number;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface HideTabBarRedDotOptions {
+        /**
+         * tabBar的哪一项,从左边算起,索引从0开始
+         */
+        index: number;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface SetTabBarStyleOptions {
+        /**
+         * tab 上的文字默认颜色
+         */
+        color?: string;
+        /**
+         * tab 上的文字选中时的颜色
+         */
+        selectedColor?: string;
+        /**
+         * tab 的背景色
+         */
+        backgroundColor?: string;
+        /**
+         * 图片背景
+         */
+        backgroundImage?: string;
+        /**
+         * 背景图平铺方式
+         * - repeat: 背景图片在垂直方向和水平方向平铺
+         * - repeat-x: 背景图片在水平方向平铺,垂直方向拉伸
+         * - repeat-y: 背景图片在垂直方向平铺,水平方向拉伸
+         * - no-repeat: 背景图片在垂直方向和水平方向都拉伸
+         */
+        backgroundRepeat?: 'repeat' | 'repeat-x' | 'repeat-y' | 'no-repeat';
+        /**
+         * tabbar上边框的颜色
+         */
+        borderStyle?: string;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface SetTabBarItemOptions {
+        /**
+         * tabBar 的哪一项,从左边算起,索引从0开始
+         */
+        index: number;
+        /**
+         * tab 上按钮文字
+         */
+        text?: string;
+        /**
+         * 图片路径
+         */
+        iconPath?: string;
+        /**
+         * 选中时的图片路径
+         */
+        selectedIconPath?: string;
+        /**
+         * 页面绝对路径
+         */
+        pagePath?: string;
+        /**
+         * tab 是否显示
+         */
+        visible?: boolean;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface ShowTabBarOptions {
+        /**
+         * 是否需要动画效果
+         */
+        animation?: boolean;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface HideTabBarOptions {
+        /**
+         * 是否需要动画效果
+         */
+        animation?: boolean;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface SetTopBarTextOptions {
+        /**
+         * 置顶栏文字内容
+         */
+        text: string;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface NavigateToOptions {
+        /**
+         * 需要跳转的应用内非 tabBar 的页面的路径 , 路径后可以带参数
+         */
+        url: string;
+        /**
+         * 窗口显示的动画类型
+         * - auto: 自动选择动画效果
+         * - none: 无动画效果
+         * - slide-in-right: 从右侧横向滑动效果
+         * - slide-in-left: 左侧横向滑动效果
+         * - slide-in-top: 从上侧竖向滑动效果
+         * - slide-in-bottom: 从下侧竖向滑动效果
+         * - fade-in: 从透明到不透明逐渐显示效果
+         * - zoom-out: 从小到大逐渐放大显示效果
+         * - zoom-fade-out: 从小到大逐渐放大并且从透明到不透明逐渐显示效果
+         * - pop-in: 从右侧平移入栈动画效果
+         */
+        animationType?: 'auto' | 'none' | 'slide-in-right' | 'slide-in-left' | 'slide-in-top' | 'slide-in-bottom' | 'fade-in' | 'zoom-out' | 'zoom-fade-out' | 'pop-in';
+        /**
+         * 窗口显示动画的持续时间,单位为 ms
+         */
+        animationDuration?: number;
+        /**
+         * 页面间通信接口,用于监听被打开页面发送到当前页面的数据
+         */
+        events?: any;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface RedirectToOptions {
+        /**
+         * 需要跳转的应用内非 tabBar 的页面的路径 , 路径后可以带参数
+         */
+        url: string;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface ReLaunchOptions {
+        /**
+         * 需要跳转的应用内非 tabBar 的页面的路径 , 路径后可以带参数
+         */
+        url: string;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface SwitchTabOptions {
+        /**
+         * 需要跳转的 tabBar 页面的路径,路径后不能带参数
+         */
+        url: string;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface PreloadPageOptions {
+        /**
+         * 预加载页面的路径
+         */
+        url: string;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface UnPreloadPageOptions {
+        /**
+         * 需要跳转的 tabBar 页面的路径,路径后不能带参数
+         */
+        url: string;
+    }
+
+    interface CreateIntersectionObserverOptions {
+        /**
+         * 所有阈值
+         */
+        thresholds?: any [];
+        /**
+         * 初始的相交比例
+         */
+        initialRatio?: number;
+        /**
+         * 是否同时观测多个参照节点(而非一个)
+         */
+        observeAll?: boolean;
+    }
+
+    interface NavigateBackOptions {
+        /**
+         * 返回的页面数,如果 delta 大于现有页面数,则返回到首页
+         */
+        delta?: number;
+        /**
+         * 窗口关闭的动画类型
+         * - auto: 自动选择动画效果
+         * - none: 无动画效果
+         * - slide-out-right: 横向向右侧滑出屏幕动画
+         * - slide-out-left: 横向向左侧滑出屏幕动画
+         * - slide-out-top: 竖向向上侧滑出屏幕动画
+         * - slide-out-bottom: 竖向向下侧滑出屏幕动画
+         * - fade-out: 从不透明到透明逐渐隐藏动画
+         * - zoom-in: 从大逐渐缩小关闭动画
+         * - zoom-fade-in: 从大逐渐缩小并且从不透明到透明逐渐隐藏关闭动画
+         * - pop-out: 从右侧平移出栈动画效果
+         */
+        animationType?: 'auto' | 'none' | 'slide-out-right' | 'slide-out-left' | 'slide-out-top' | 'slide-out-bottom' | 'fade-out' | 'zoom-in' | 'zoom-fade-in' | 'pop-out';
+        /**
+         * 窗口关闭动画的持续时间,单位为 ms
+         */
+        animationDuration?: number;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface CreateAnimationOptions {
+        /**
+         * 动画持续时间,单位ms
+         */
+        duration?: number;
+        /**
+         * 定义动画的效果
+         * - linear: 动画从头到尾的速度是相同的
+         * - ease: 动画以低速开始,然后加快,在结束前变慢
+         * - ease-in: 动画以低速开始
+         * - ease-in-out: 动画以低速开始和结束
+         * - ease-out: 动画以低速结束
+         * - step-start: 动画第一帧就跳至结束状态直到结束
+         * - step-end: 动画一直保持开始状态,最后一帧跳到结束状态
+         */
+        timingFunction?: 'linear' | 'ease' | 'ease-in' | 'ease-in-out' | 'ease-out' | 'step-start' | 'step-end';
+        /**
+         * 动画延迟时间,单位 ms
+         */
+        delay?: number;
+        /**
+         * 设置transform-origin
+         */
+        transformOrigin?: string;
+    }
+
+    interface PageScrollToOptions {
+        /**
+         * 滚动到页面的目标位置
+         */
+        scrollTop?: number;
+        /**
+         * 选择器
+         */
+        selector?: string;
+        /**
+         * 滚动动画的时长
+         */
+        duration?: number;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface StartPullDownRefreshOptions {
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface SelectorQuery {
+        /**
+         * 将选择器的选取范围更改为自定义组件component内
+         */
+        in(component: any): SelectorQuery;
+        /**
+         * 在当前页面下选择第一个匹配选择器selector的节点
+         */
+        select(selector: string): NodesRef;
+        /**
+         * 在当前页面下选择匹配选择器selector的所有节点
+         */
+        selectAll(selector: string): NodesRef;
+        /**
+         * 选择显示区域
+         */
+        selectViewport(): NodesRef;
+        /**
+         * 执行所有的请求
+         */
+        exec(callback?: (result: any) => void): NodesRef;
+    }
+
+    interface NodesRef {
+        /**
+         * 添加节点的布局位置的查询请求,相对于显示区域,以像素为单位
+         */
+        boundingClientRect(callback: (result: NodeInfo) => void): SelectorQuery;
+        /**
+         * 添加节点的滚动位置查询请求,以像素为单位
+         */
+        scrollOffset(callback: (result: NodeInfo) => void): SelectorQuery;
+        /**
+         * 获取节点的相关信息,需要获取的字段在fields中指定
+         */
+        fields(fields: NodeField, callback: (result: NodeInfo) => void): SelectorQuery;
+        /**
+         * 添加节点的 Context 对象查询请求
+         */
+        context(callback: (result: NodeInfo) => void): SelectorQuery;
+        /**
+         * 获取 Node 节点实例。目前支持 Canvas 的获取。
+         */
+        node(callback: (result: any) => void): SelectorQuery;
+    }
+
+    interface NodeInfo {
+        /**
+         * 节点的ID
+         */
+        id?: string;
+        /**
+         * 节点的dataset
+         */
+        dataset?: any;
+        /**
+         * 节点的左边界坐标
+         */
+        left?: number;
+        /**
+         * 节点的右边界坐标
+         */
+        right?: number;
+        /**
+         * 节点的上边界坐标
+         */
+        top?: number;
+        /**
+         * 节点的下边界坐标
+         */
+        bottom?: number;
+        /**
+         * 节点的宽度
+         */
+        width?: number;
+        /**
+         * 节点的高度
+         */
+        height?: number;
+        /**
+         * 节点的水平滚动位置
+         */
+        scrollLeft?: number;
+        /**
+         * 节点的垂直滚动位置
+         */
+        scrollTop?: number;
+        /**
+         * 节点的内容高度
+         */
+        scrollHeight?: number;
+        /**
+         * 节点的内容宽度
+         */
+        scrollWidth?: number;
+        /**
+         * 节点对应的 Context 对象
+         */
+        context?: MapContext | CanvasContext | VideoContext | EditorContext;
+    }
+
+    interface EditorContext {
+        /**
+         * 修改样式
+         */
+        format(name: string, value: string): void;
+        /**
+         * 插入分割线
+         */
+        insertDivider(): void;
+        /**
+         * 获取节点的相关信息,需要获取的字段在fields中指定
+         */
+        insertImage(options: EditorContextInsertImageOptions): void;
+        /**
+         * 添加节点的 Context 对象查询请求
+         */
+        insertText(options: EditorContextInsertTextOptions): void;
+        /**
+         * 初始化编辑器内容,hmlt和delta同时存在时仅delta生效
+         */
+        setContents(options: EditorContextSetContentsOptions): void;
+        /**
+         * 初始化编辑器内容,hmlt和delta同时存在时仅delta生效
+         */
+        getContents(options: EditorContextGetContentsOptions): void;
+        /**
+         * 初始化编辑器内容,hmlt和delta同时存在时仅delta生效
+         */
+        clear(options: EditorContextClearOptions): void;
+        /**
+         * 清除当前选区的样式
+         */
+        removeFormat(options: EditorContextRemoveFormatOptions): void;
+        /**
+         * 撤销
+         */
+        undo(options: EditorContextUndoOptions): void;
+        /**
+         * 撤销
+         */
+        redo(options: EditorContextRedoOptions): void;
+        /**
+         * 编辑器失焦,同时收起键盘。
+         */
+        blur(options: CommonOptions): void;
+        /**
+         * 使得编辑器光标处滚动到窗口可视区域内。
+         */
+        scrollIntoView(options: CommonOptions): void;
+        /**
+         * 获取编辑器已选区域内的纯文本内容。当编辑器失焦或未选中一段区间时,返回内容为空。
+         */
+        getSelectionText(options: EditorContextGetSelectionTextOptions): void;
+    }
+
+    interface EditorContextInsertImageOptions {
+        /**
+         * 图片地址
+         */
+        src: string;
+        /**
+         * 图像无法显示时的替代文本
+         */
+        alt?: string;
+        /**
+         * 图片宽度(pixels/百分比)
+         */
+        width?: string;
+        /**
+         * 图片高度 (pixels/百分比)
+         */
+        height?: string;
+        /**
+         * 添加到图片 img 标签上的类名
+         */
+        extClass?: string;
+        /**
+         * data 被序列化为 name=value;name1=value2 的格式挂在属性 data-custom 上
+         */
+        data?: any;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface EditorContextInsertTextOptions {
+        /**
+         * 文本内容
+         */
+        text: string;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface EditorContextSetContentsOptions {
+        /**
+         * 带标签的HTML内容
+         */
+        html?: string;
+        /**
+         * 表示内容的delta对象
+         */
+        delta?: any;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface EditorContextGetContentsOptions {
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface EditorContextClearOptions {
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface EditorContextRemoveFormatOptions {
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface EditorContextUndoOptions {
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface EditorContextRedoOptions {
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface EditorContextGetSelectionTextOptions {
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: GetSelectionTextSuccessCallbackResult) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetSelectionTextSuccessCallbackResult {
+        /**
+         * 纯文本内容
+         */
+        text: string;
+    }
+
+    interface CommonOptions {
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface NodeField {
+        /**
+         * 是否返回节点 id
+         */
+        id?: boolean;
+        /**
+         * 是否返回节点 dataset
+         */
+        dataset?: boolean;
+        /**
+         * 是否返回节点布局位置(left right top bottom)
+         */
+        rect?: boolean;
+        /**
+         * 是否返回节点尺寸(width height)
+         */
+        size?: boolean;
+        /**
+         * 是否返回节点的 scrollLeft scrollTop,节点必须是 scroll-view 或者 viewport
+         */
+        scrollOffset?: boolean;
+        /**
+         * 指定属性名列表,返回节点对应属性名的当前属性值(只能获得组件文档中标注的常规属性值,id class style 和事件绑定的属性值不可获取)
+         */
+        properties?: string [];
+        /**
+         * 指定样式名列表,返回节点对应样式名的当前值
+         */
+        computedStyle?: string [];
+        /**
+         * 是否返回节点对应的 Context 对象
+         */
+        context?: boolean;
+    }
+
+    interface IntersectionObserver {
+        /**
+         * 使用选择器指定一个节点,作为参照区域之一
+         */
+        relativeTo(selector: string, margins?: any): IntersectionObserver;
+        /**
+         * 指定页面显示区域作为参照区域之一
+         */
+        relativeToViewport(margins?: any): IntersectionObserver;
+        /**
+         * 指定目标节点并开始监听相交状态变化情况
+         */
+        observe(targetSelector: string, callback: (result: ObserveResult) => void): void;
+        /**
+         * 停止监听
+         */
+        disconnect(): void;
+    }
+
+    /**
+     * 和 UI 相关的 api 在组件 mountd 后执行
+     */
+    interface MediaQueryObserver {
+        /**
+         * 开始监听页面 media query 变化情况
+         */
+        observe(descriptor: DescriptorOptions, callback: (result: MediaQueryObserveResult) => void): void;
+        /**
+         * 停止监听,回调函数将不再触发
+         */
+        disconnect(): void;
+    }
+
+    interface DescriptorOptions {
+        /**
+         * 屏幕方向( landscape 或 portrait )
+         * - landscape:
+         * - portrait:
+         */
+        orientation: 'landscape' | 'portrait';
+        /**
+         * 页面宽度( px 为单位)
+         */
+        width: number;
+        /**
+         * 页面高度( px 为单位)
+         */
+        height: number;
+        /**
+         * 页面最小宽度( px 为单位)
+         */
+        'min-width': number;
+        /**
+         * 页面最小高度( px 为单位)
+         */
+        'min-height': number;
+        /**
+         * 页面最大宽度( px 为单位)
+         */
+        'max-width': number;
+        /**
+         * 页面最大高度( px 为单位)
+         */
+        'max-height': number;
+    }
+
+    interface MediaQueryObserveResult {
+        /**
+         * 页面的当前状态是否满足所指定的 media query
+         */
+        matches: boolean;
+    }
+
+    interface ObserveResult {
+        /**
+         * 相交比例
+         */
+        intersectionRatio: number;
+        /**
+         * 相交区域的边界
+         */
+        intersectionRect: any;
+        /**
+         * 目标节点布局区域的边界
+         */
+        boundingClientRect: ObserveNodeRect;
+        /**
+         * 参照区域的边界
+         */
+        relativeRect: ObserveNodeRect;
+        /**
+         * 相交检测时的时间戳
+         */
+        time: number;
+    }
+
+    interface ObserveNodeRect {
+        /**
+         * left
+         */
+        left: number;
+        /**
+         * right
+         */
+        right: number;
+        /**
+         * top
+         */
+        top: number;
+        /**
+         * bottom
+         */
+        bottom: number;
+    }
+
+    interface Animation {
+        /**
+         * 设置透明度
+         */
+        opacity(value: number): Animation;
+        /**
+         * 设置背景色
+         */
+        backgroundColor(color: number): Animation;
+        /**
+         * 设置宽度
+         */
+        width(length: number | string): Animation;
+        /**
+         * 设置高度
+         */
+        height(length: number | string): Animation;
+        /**
+         * 设置 top 值
+         */
+        top(length: number): Animation;
+        /**
+         * 设置 left 值
+         */
+        left(length: number): Animation;
+        /**
+         * 设置 bottom 值
+         */
+        bottom(length: number): Animation;
+        /**
+         * 设置 right 值
+         */
+        right(length: number): Animation;
+        /**
+         * 从原点顺时针旋转一个角度
+         */
+        rotate(deg: number): Animation;
+        /**
+         * 从X轴顺时针旋转一个角度
+         */
+        rotateX(deg: number): Animation;
+        /**
+         * 从Y轴顺时针旋转一个角度
+         */
+        rotateY(deg: number): Animation;
+        /**
+         * 从Z轴顺时针旋转一个角度
+         */
+        rotateZ(deg: number): Animation;
+        /**
+         * 从固定轴顺时针旋转一个角度
+         */
+        rotate3d(x: number, y: number, z: number, deg: number): Animation;
+        /**
+         * 缩放
+         */
+        scale(sx: number, sy: number): Animation;
+        /**
+         * 缩放X轴
+         */
+        scaleX(sx: number): Animation;
+        /**
+         * 缩放Y轴
+         */
+        scaleY(sy: number): Animation;
+        /**
+         * 缩放Z轴
+         */
+        scaleZ(sz: number): Animation;
+        /**
+         * 缩放
+         */
+        scale3d(sx: number, sy: number, sz: number): Animation;
+        /**
+         * 平移变换
+         */
+        translate(tx: number, ty: number): Animation;
+        /**
+         * 对X轴平移
+         */
+        translateX(tx: number): Animation;
+        /**
+         * 对Y轴平移
+         */
+        translateY(ty: number): Animation;
+        /**
+         * 对Z轴平移
+         */
+        translateZ(tz: number): Animation;
+        /**
+         * 对X、Y、Z坐标进行平移变换
+         */
+        translate3d(tx: number, ty: number, tz: number): Animation;
+        /**
+         * 对X、Y轴坐标进行倾斜
+         */
+        skew(ax: number, ay: number): Animation;
+        /**
+         * 对X轴坐标进行倾斜
+         */
+        skewX(ax: number): Animation;
+        /**
+         * 对Y轴坐标进行倾斜
+         */
+        skewY(ay: number): Animation;
+        /**
+         * 矩阵变形
+         */
+        matrix(a: number, b: number, c: number, d: number, tx: number, ty: number): Animation;
+        /**
+         * 矩阵变形
+         */
+        matrix3d(): Animation;
+        /**
+         * 表示一组动画完成
+         */
+        step(options?: CreateAnimationOptions): void;
+        /**
+         * 导出动画队列
+         */
+        export(): any;
+    }
+
+    interface CanvasContext {
+        /**
+         * 填充色
+         */
+        fillStyle: string;
+        /**
+         * 边框颜色
+         */
+        strokeStyle: string;
+        /**
+         * 阴影的模糊级别
+         */
+        shadowBlur: number;
+        /**
+         * 阴影的颜色
+         */
+        shadowColor: string;
+        /**
+         * 阴影相对于形状在水平方向的偏移
+         */
+        shadowOffsetX: number;
+        /**
+         * 阴影相对于形状在竖直方向的偏移
+         */
+        shadowOffsetY: number;
+        /**
+         * 线条的宽度
+         */
+        lineWidth: number;
+        /**
+         * 线条的端点样式
+         * - butt:
+         * - round:
+         * - square:
+         */
+        lineCap: 'butt' | 'round' | 'square';
+        /**
+         * 线条的结束交点样式
+         * - bevel:
+         * - round:
+         * - miter:
+         */
+        lineJoin: 'bevel' | 'round' | 'miter';
+        /**
+         * 最大斜接长度
+         */
+        miterLimit: number;
+        /**
+         * 透明度
+         */
+        globalAlpha: number;
+        /**
+         * 设置要在绘制新形状时应用的合成操作的类型
+         */
+        globalCompositeOperation: string;
+        /**
+         * 偏移量
+         */
+        lineDashOffset: number;
+        /**
+         * 字体样式
+         */
+        font: string;
+        /**
+         * 设置填充色
+         */
+        setFillStyle(color: string | CanvasGradient): void;
+        /**
+         * 设置边框颜色
+         */
+        setStrokeStyle(color: string): void;
+        /**
+         * 设置阴影样式
+         */
+        setShadow(offsetX?: number, offsetY?: number, blur?: number, color?: string): void;
+        /**
+         * 创建一个线性的渐变颜色
+         */
+        createLinearGradient(x0: number, y0: number, x1: number, y1: number): CanvasGradient;
+        /**
+         * 创建一个圆形的渐变颜色
+         */
+        createCircularGradient(x: number, y: number, r: number): CanvasGradient;
+        /**
+         * 创建一个颜色的渐变点
+         */
+        addColorStop(stop: number, color: string): void;
+        /**
+         * 设置线条的宽度
+         */
+        setLineWidth(lineWidth: number): void;
+        /**
+         * 设置线条的端点样式
+         */
+        setLineCap(lineCap: 'butt' | 'round' | 'square'): void;
+        /**
+         * 设置线条的交点样式
+         */
+        setLineJoin(lineJoin: 'bevel' | 'round' | 'miter'): void;
+        /**
+         * 设置线条的宽度
+         */
+        setLineDash(pattern: any [], offset: number): void;
+        /**
+         * 设置最大斜接长度
+         */
+        setMiterLimit(miterLimit: number): void;
+        /**
+         * 创建一个矩形
+         */
+        rect(x: number, y: number, width: number, height: number): void;
+        /**
+         * 填充一个矩形
+         */
+        fillRect(x: number, y: number, width: number, height: number): void;
+        /**
+         * 画一个矩形(非填充)
+         */
+        strokeRect(x: number, y: number, width: number, height: number): void;
+        /**
+         * 清除画布上在该矩形区域内的内容
+         */
+        clearRect(x: number, y: number, width: number, height: number): void;
+        /**
+         * 对当前路径中的内容进行填充
+         */
+        fill(): void;
+        /**
+         * 画出当前路径的边框
+         */
+        stroke(): void;
+        /**
+         * 开始创建一个路径
+         */
+        beginPath(): void;
+        /**
+         * 关闭一个路径
+         */
+        closePath(): void;
+        /**
+         * 把路径移动到画布中的指定点,不创建线条
+         */
+        moveTo(x: number, y: number): void;
+        /**
+         * 增加一个新点,然后创建一条从上次指定点到目标点的线
+         */
+        lineTo(x: number, y: number): void;
+        /**
+         * 画一条弧线
+         */
+        arc(x: number, y: number, r: number, sAngle: number, eAngle: number, counterclockwise?: boolean): void;
+        /**
+         * 创建三次方贝塞尔曲线路径
+         */
+        bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void;
+        /**
+         * 创建二次贝塞尔曲线路径
+         */
+        quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void;
+        /**
+         * 横纵坐标缩放
+         */
+        scale(scaleWidth: number, scaleHeight: number): void;
+        /**
+         * 顺时针旋转当前坐标轴
+         */
+        rotate(rotate: number): void;
+        /**
+         * 对当前坐标系的原点(0, 0)进行变换
+         */
+        translate(x: number, y: number): void;
+        /**
+         * 从原始画布中剪切任意形状和尺寸
+         */
+        clip(): void;
+        /**
+         * 设置字体的字号
+         */
+        setFontSize(fontSize: number): void;
+        /**
+         * 在画布上绘制被填充的文本
+         */
+        fillText(text: string, x: number, y: number, maxWidth?: number): void;
+        /**
+         * 设置文字的对齐
+         */
+        setTextAlign(align: 'left' | 'center' | 'right'): void;
+        /**
+         * 设置文字的水平对齐
+         */
+        setTextBaseline(textBaseline: 'top' | 'bottom' | 'middle' | 'normal'): void;
+        /**
+         * 绘制图像到画布
+         */
+        drawImage(imageResource: string, dx?: number, dy?: number, dWidth?: number, dHeigt?: number, sx?: number, sy?: number, sWidth?: number, sHeight?: number): void;
+        /**
+         * 设置全局画笔透明度
+         */
+        setGlobalAlpha(alpha: number): void;
+        /**
+         * 保存当前的绘图上下文
+         */
+        save(): void;
+        /**
+         * 恢复之前保存的绘图上下文
+         */
+        restore(): void;
+        /**
+         * 将之前在绘图上下文中的描述(路径、变形、样式)画到 canvas 中
+         */
+        draw(reserve?: boolean, callback?: (result: any) => void): void;
+        /**
+         * 测量文本尺寸信息,目前仅返回文本宽度
+         */
+        measureText(text: string): CanvasTextMetrics;
+        /**
+         * 根据控制点和半径绘制圆弧路径
+         */
+        arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void;
+        /**
+         * 给定的 (x, y) 位置绘制文本描边的方法
+         */
+        strokeText(text: string, x: number, y: number, maxWidth?: number): void;
+        /**
+         * 对指定的图像创建模式的方法,可在指定的方向上重复元图像
+         */
+        createPattern(image: string, repetition: 'repeat' | 'repeat-x' | 'repeat-y' | 'no-repeat'): void;
+        /**
+         * 使用矩阵重新设置(覆盖)当前变换的方法
+         */
+        setTransform(scaleX: number, skewX: number, skewY: number, scaleY: number, translateX: number, translateY: number): void;
+    }
+
+    interface CanvasGradient {
+        /**
+         * 添加颜色的渐变点
+         */
+        addColorStop(stop: number, color: string): void;
+    }
+
+    interface CanvasTextMetrics {
+        /**
+         * 文本的宽度
+         */
+        width: number;
+    }
+
+    interface CanvasToTempFilePathOptions {
+        /**
+         * 画布x轴起点(默认0)
+         */
+        x?: number;
+        /**
+         * 画布y轴起点(默认0)
+         */
+        y?: number;
+        /**
+         * 画布宽度(默认为canvas宽度-x)
+         */
+        width?: number;
+        /**
+         * 画布高度(默认为canvas高度-y)
+         */
+        height?: number;
+        /**
+         * 输出图片宽度(默认为 width * 屏幕像素密度)
+         */
+        destWidth?: number;
+        /**
+         * 输出图片高度(默认为 height * 屏幕像素密度)
+         */
+        destHeight?: number;
+        /**
+         * 画布标识,传入 <canvas/> 的 canvas-id
+         */
+        canvasId: string;
+        /**
+         * 目标文件的类型,默认为 'png'
+         */
+        fileType?: string;
+        /**
+         * 图片的质量,取值范围为 (0, 1],不在范围内时当作1.0处理
+         */
+        quality?: number;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: CanvasToTempFilePathRes) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface CanvasToTempFilePathRes {
+        /**
+         * 导出生成的图片路径
+         */
+        tempFilePath: string;
+    }
+
+    interface CanvasGetImageDataOptions {
+        /**
+         * 画布标识,传入 <canvas/> 的 canvas-id
+         */
+        canvasId: string;
+        /**
+         * 将要被提取的图像数据矩形区域的左上角 x 坐标
+         */
+        x?: number;
+        /**
+         * 将要被提取的图像数据矩形区域的左上角 y 坐标
+         */
+        y?: number;
+        /**
+         * 将要被提取的图像数据矩形区域的宽度
+         */
+        width?: number;
+        /**
+         * 将要被提取的图像数据矩形区域的高度
+         */
+        height?: number;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: CanvasGetImageDataRes) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface CanvasGetImageDataRes {
+        /**
+         * 回调信息
+         */
+        errMsg: string;
+        /**
+         * 图像数据矩形的宽度
+         */
+        width: number;
+        /**
+         * 图像数据矩形的高度
+         */
+        height: number;
+        /**
+         * 图像像素点数据,一维数组,每四项表示一个像素点的rgba
+         */
+        data: any [];
+    }
+
+    interface CanvasPutImageDataOptions {
+        /**
+         * 画布标识,传入 <canvas/> 的 canvas-id
+         */
+        canvasId: string;
+        /**
+         * 图像像素点数据,一维数组,每四项表示一个像素点的rgba
+         */
+        data?: any [];
+        /**
+         * 源图像数据在目标画布中的位置偏移量(x 轴方向的偏移量)
+         */
+        x?: number;
+        /**
+         * 源图像数据在目标画布中的位置偏移量(y 轴方向的偏移量)
+         */
+        y?: number;
+        /**
+         * 源图像数据矩形区域的宽度
+         */
+        width?: number;
+        /**
+         * 源图像数据矩形区域的高度
+         */
+        height?: number;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface SetScreenBrightnessOptions {
+        /**
+         * 屏幕亮度值,范围 0~1,0 最暗,1 最亮
+         */
+        value: number;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetScreenBrightnessOptions {
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: GetScreenBrightnessSuccessRes) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetScreenBrightnessSuccessRes {
+        /**
+         * 屏幕亮度值,范围 0~1,0 最暗,1 最亮。
+         */
+        value: number;
+    }
+
+    interface SetKeepScreenOnOptions {
+        /**
+         * 是否保持屏幕常亮
+         */
+        keepScreenOn: boolean;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface VibrateLongOptions {
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface VibrateShortOptions {
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface AddPhoneContactOptions {
+        /**
+         * 头像本地文件路径
+         */
+        photoFilePath?: string;
+        /**
+         * 昵称
+         */
+        nickName?: string;
+        /**
+         * 姓氏
+         */
+        lastName?: string;
+        /**
+         * 中间名
+         */
+        middleName?: string;
+        /**
+         * 名字
+         */
+        firstName?: string;
+        /**
+         * 备注
+         */
+        remark?: string;
+        /**
+         * 手机号
+         */
+        mobilePhoneNumber?: string;
+        /**
+         * 微信号
+         */
+        weChatNumber?: string;
+        /**
+         * 联系地址国家
+         */
+        addressCountry?: string;
+        /**
+         * 联系地址省份
+         */
+        addressState?: string;
+        /**
+         * 联系地址城市
+         */
+        addressCity?: string;
+        /**
+         * 联系地址街道
+         */
+        addressStreet?: string;
+        /**
+         * 联系地址邮政编码
+         */
+        addressPostalCode?: string;
+        /**
+         * 公司
+         */
+        organization?: string;
+        /**
+         * 职位
+         */
+        title?: string;
+        /**
+         * 工作传真
+         */
+        workFaxNumber?: string;
+        /**
+         * 工作电话
+         */
+        workPhoneNumber?: string;
+        /**
+         * 公司电话
+         */
+        hostNumber?: string;
+        /**
+         * 电子邮件
+         */
+        email?: string;
+        /**
+         * 网站
+         */
+        url?: string;
+        /**
+         * 工作地址国家
+         */
+        workAddressCountry?: string;
+        /**
+         * 工作地址省份
+         */
+        workAddressState?: string;
+        /**
+         * 工作地址城市
+         */
+        workAddressCity?: string;
+        /**
+         * 工作地址街道
+         */
+        workAddressStreet?: string;
+        /**
+         * 工作地址邮政编码
+         */
+        workAddressPostalCode?: string;
+        /**
+         * 住宅传真
+         */
+        homeFaxNumber?: string;
+        /**
+         * 住宅电话
+         */
+        homePhoneNumber?: string;
+        /**
+         * 住宅地址国家
+         */
+        homeAddressCountry?: string;
+        /**
+         * 住宅地址省份
+         */
+        homeAddressState?: string;
+        /**
+         * 住宅地址城市
+         */
+        homeAddressCity?: string;
+        /**
+         * 住宅地址街道
+         */
+        homeAddressStreet?: string;
+        /**
+         * 住宅地址邮政编码
+         */
+        homeAddressPostalCode?: string;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetExtConfigOptions {
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetMenuButtonBoundingClientRectRes {
+        /**
+         * 小程序胶囊菜单按钮的宽度
+         */
+        width: number;
+        /**
+         * 小程序胶囊菜单按钮的高度
+         */
+        height: number;
+        /**
+         * 小程序胶囊菜单按钮的上边界坐标
+         */
+        top: number;
+        /**
+         * 小程序胶囊菜单按钮的右边界坐标
+         */
+        right: number;
+        /**
+         * 小程序胶囊菜单按钮的下边界坐标
+         */
+        bottom: number;
+        /**
+         * 小程序胶囊菜单按钮的左边界坐标
+         */
+        left: number;
+    }
+
+    interface GetProviderOptions {
+        /**
+         * 服务类型,可取值“oauth”、“share”、“payment”、“push”
+         * - oauth: 授权登录
+         * - share: 分享
+         * - payment: 支付
+         * - push: 推送
+         */
+        service: 'oauth' | 'share' | 'payment' | 'push';
+        /**
+         * 接口调用成功的回调
+         */
+        success?: (result: GetProviderRes) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetProviderRes {
+        /**
+         * 服务类型
+         * - oauth: 授权登录
+         * - share: 分享
+         * - payment: 支付
+         * - push: 推送
+         */
+        service: 'oauth' | 'share' | 'payment' | 'push';
+        /**
+         * 得到的服务供应商
+         */
+        provider: any [];
+        /**
+         * 描述信息
+         */
+        errMsg: string;
+    }
+
+    interface LoginOptions {
+        /**
+         * 授权登录服务提供商,通过uni.getProvider获取,如果不设置则弹出分享列表选择界面
+         * - weixin: 微信登录
+         * - qq: QQ登录
+         * - sinaweibo: 新浪微博登录
+         * - xiaomi: 小米登录
+         * - apple: Apple登录
+         * - univerify: 一键登录
+         */
+        provider?: 'weixin' | 'qq' | 'sinaweibo' | 'xiaomi' | 'apple' | 'univerify';
+        /**
+         * 授权类型,默认 auth_base。
+         */
+        scopes?: LoginScopes | LoginScopes [];
+        /**
+         * 超时时间,单位 ms
+         */
+        timeout?: number;
+        /**
+         * 一键登录页面样式
+         */
+        univerifyStyle?: UniverifyStyle;
+        /**
+         * 微信登录仅请求授权认证
+         */
+        onlyAuthorize?: boolean;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: LoginRes) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface UniverifyStyle {
+        /**
+         * 是否全屏模式。
+         *
+         * true表示全屏模式,false表示非全屏模式,默认值为false。
+         */
+        fullScreen?: boolean;
+        /**
+         * 授权界面背景颜色。
+         *
+         * 格式为"#RRGGBB",默认值为"#FFFFF"。
+         */
+        backgroundColor?: string;
+        /**
+         * 背景图片
+         */
+        backgroundImage?: string;
+        /**
+         * 授权界面图标样式。
+         *
+         * 可设置自定义图标,默认为应用图标。
+         */
+        icon?: UniverifyIconStyles;
+        /**
+         * 授权界面电话号码样式
+         *
+         * 可设置自定义电话号码文字颜色、大小等。
+         */
+        phoneNum?: UniverifyPhoneNumStyles;
+        /**
+         * 授权界面服务说明样式
+         *
+         * 可设置自定义服务说明文字颜色、大小等。
+         */
+        slogan?: UniverifySloganStyles;
+        /**
+         * 授权界面其他登录按钮样式
+         *
+         * 可设置自定义其他登录按钮背景颜色、文本内容、大小等。
+         */
+        authButton?: UniverifyAuthButtonStyles;
+        /**
+         * 支付宝小程序登录成功的授权 scope
+         */
+        otherLoginButton?: UniverifyOtherButtonStyles;
+        /**
+         * 授权界面服务协议样式
+         *
+         * 自定义设置服务器协议文字颜色、文本内容,添加自定义服务协议链接等。
+         */
+        privacyTerms?: UniverifyPrivacyTermsStyles;
+        /**
+         * 自定义登录按钮列表样式
+         *
+         * 自定义设置更多登录按钮列表,如其它三方登录等。
+         *                     注意:HBuilderX3.1.14+版本支持。
+         */
+        buttons?: UniVerifyButtonsStyles;
+    }
+
+    interface UniverifyIconStyles {
+        /**
+         * 图标地址
+         *
+         * 仅支持本地路径,默认为应用图标。
+         */
+        path: string;
+        /**
+         * 图标宽度
+         *
+         * 格式为“XXpx",默认值为"60px"。
+         */
+        width?: string;
+        /**
+         * 图标高度
+         *
+         * 格式为“XXpx",默认值为"60px"。
+         */
+        height?: string;
+    }
+
+    interface UniVerifyButtonsStyles {
+        /**
+         * 自定义登录按钮图标宽度
+         *
+         * 单位为px,默认值为45px。
+         *                     按指定宽度缩放,高度等比例缩放。
+         */
+        iconWidth?: string;
+        /**
+         * 自定义登录按钮列表
+         */
+        list: UniVerifyButtonListItem [];
+    }
+
+    interface UniVerifyButtonListItem {
+        /**
+         * 该按钮标识,会原样返回。
+         */
+        provider: string;
+        /**
+         * 图片路径
+         *
+         * 仅支持本地图片
+         */
+        iconPath: string;
+    }
+
+    interface UniverifyPhoneNumStyles {
+        /**
+         * 字体颜色
+         *
+         * 格式为"#RRGGBB",默认值为"#000000"。
+         */
+        color?: string;
+        /**
+         * 字体大小
+         *
+         * 格式为“XXpx",默认值为"18px"。注意:字体加粗显示。
+         */
+        fontSize?: string;
+    }
+
+    interface UniverifySloganStyles {
+        /**
+         * 字体颜色
+         *
+         * 格式为"#RRGGBB",默认值为"#8a8b90"。
+         */
+        color?: string;
+        /**
+         * 字体大小
+         *
+         * 格式为“XXpx",默认值为"12px"。
+         */
+        fontSize?: string;
+    }
+
+    interface UniverifyAuthButtonStyles {
+        /**
+         * 正常状态按钮颜色
+         *
+         * 格式为"#RRGGBB",默认值为"#3479f5"。
+         */
+        normalColor?: string;
+        /**
+         * 按下状态按钮颜色
+         *
+         * 格式为"#RRGGBB",默认值为"#2861c5"。
+         */
+        highlightColor?: string;
+        /**
+         * 不可点击状态按钮颜色
+         *
+         * 格式为"#RRGGBB",默认值为"#73aaf5"。 注意:仅iOS平台支持。
+         */
+        disabledColor?: string;
+        /**
+         * 按钮宽度
+         *
+         * 格式为“XXpx",默认值为自适应,距离屏幕左右"32px"。
+         */
+        width?: string;
+        /**
+         * 按钮高度
+         *
+         * 格式为“XXpx",默认值为"94px"。
+         */
+        height?: string;
+        /**
+         * 按钮上文字颜色
+         *
+         * 格式为"#RRGGBB",默认值为"#ffffff"。
+         */
+        textColor?: string;
+        /**
+         * 按钮上文字内容
+         *
+         * 默认值为"本机号码一键登录"。
+         */
+        title?: string;
+        /**
+         * 授权按钮圆角
+         *
+         * 格式为“XXpx",默认值:"24px" (按钮高度的一半)
+         */
+        borderRadius?: string;
+    }
+
+    interface UniverifyOtherButtonStyles {
+        /**
+         * 是否显示其它按钮
+         *
+         * 可取值: true - 显示其它按钮;false - 不显示其它按钮。 默认值为true。
+         */
+        visible?: boolean;
+        /**
+         * 正常状态按钮颜色
+         *
+         * 格式为"#RRGGBB",默认值为"#f8f8f8"。
+         */
+        normalColor?: string;
+        /**
+         * 按下状态按钮颜色
+         *
+         * 格式为"#RRGGBB",默认值为"#dedede"。
+         */
+        highlightColor?: string;
+        /**
+         * 按钮宽度
+         *
+         * 格式为“XXpx",默认值为自适应,距离屏幕左右"32px"。
+         */
+        width?: string;
+        /**
+         * 按钮高度
+         *
+         * 格式为“XXpx",默认值为"94px"。
+         */
+        height?: string;
+        /**
+         * 按钮上文字颜色
+         *
+         * 格式为"#RRGGBB",默认值为"#000000"。
+         */
+        textColor?: string;
+        /**
+         * 按钮上文字内容
+         *
+         * 默认值为"本机号码一键登录"。
+         */
+        title?: string;
+        /**
+         * 按钮边框宽度
+         *
+         * 格式为“XXpx",默认值为"1px"。 注意:仅iOS平台支持。
+         */
+        borderWidth?: string;
+        /**
+         * 按钮边框颜色
+         *
+         * 格式为"#RRGGBB",默认值为"#c5c5c5"。 注意:仅iOS平台支持。
+         */
+        borderColor?: string;
+        /**
+         * 其他登录按钮圆角
+         *
+         * 格式为“XXpx",默认值:"24px" (按钮高度的一半)
+         */
+        borderRadius?: string;
+    }
+
+    interface UniverifyPrivacyTermsStyles {
+        /**
+         * 默认是否勾选同意协议选择框
+         *
+         * ture表示勾选,false表示不勾选。默认值为true。
+         *                     HBuilderX3.1.0+版本新增支持。
+         */
+        defaultCheckBoxState?: boolean;
+        /**
+         * 普通文字颜色
+         *
+         * 格式为"#RRGGBB",默认值为"#8a8b90"。
+         */
+        textColor?: string;
+        /**
+         * 协议链接文字颜色
+         *
+         * 格式为"#RRGGBB",默认值为"#1d4788"。
+         */
+        termsColor?: string;
+        /**
+         * 服务协议前文本内容
+         *
+         * 默认值为"我已阅读并同意"。
+         */
+        prefix?: string;
+        /**
+         * 服务协议后文本内容
+         *
+         * 默认值为"并使用本机号码登录"。
+         */
+        suffix?: string;
+        /**
+         * 字体大小
+         *
+         * 格式为“XXpx",默认值为"12px"。
+         */
+        fontSize?: string;
+        /**
+         * 服务协议
+         *
+         * 自定义服务协议,可设置使用手机号码登录的协议,最多可设置两个协议。 注意:运营商的服务协议链接会自动添加到自定义服务协议之前。
+         */
+        privacyItems?: UniverifyPrivacyItemStyles [];
+    }
+
+    interface UniverifyPrivacyItemStyles {
+        /**
+         * 链接地址
+         *
+         * http/https开头的协议链接地址。
+         */
+        url: string;
+        /**
+         * 协议链接文字
+         */
+        title: string;
+    }
+
+    /**
+     * - auth_base: 静默授权
+     * - auth_user: 网站支付宝登录
+     * - auth_zhima: 用户芝麻信息
+     */
+    type LoginScopes = 'auth_base' | 'auth_user' | 'auth_zhima';
+
+    interface LoginRes {
+        /**
+         * 描述信息
+         */
+        errMsg: string;
+        /**
+         * 登录服务商提供的登录信息,服务商不同返回的结果不完全相同
+         */
+        authResult: string;
+        /**
+         * 小程序用户临时登录凭证
+         */
+        code: string;
+        /**
+         * 头条小程序当前设备标识
+         */
+        anonymousCode?: string;
+        /**
+         * 支付宝小程序授权码
+         */
+        authCode?: string;
+        /**
+         * 支付宝小程序登录失败的授权类型,key是授权失败的 scope,value 是对应的错误码
+         */
+        authErrorScope?: any;
+        /**
+         * 支付宝小程序登录成功的授权 scope
+         */
+        authSucessScope?: string [];
+        /**
+         * 苹果登录成功返回的信息
+         */
+        appleInfo?: AppleLoginAppleInfo;
+    }
+
+    interface AppleLoginAppleInfo {
+        /**
+         * 应用程序用来与服务器交互的令牌
+         */
+        authorizationCode?: string;
+        /**
+         * 返回身份的全名
+         */
+        fullName?: any;
+        /**
+         * 一个JSON Web令牌(JWT),可以安全地将用户信息传递给应用程序
+         */
+        identityToken?: string;
+        /**
+         * 指示用户是否为真人
+         */
+        realUserStatus?: number;
+        /**
+         * 验证用户的标识符
+         */
+        user?: string;
+    }
+
+    interface CheckSessionOptions {
+        /**
+         * 接口调用成功的回调函数,session_key未过期
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数,session_key已过期
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface AuthorizeOptions {
+        /**
+         * 需要获取权限的scope
+         */
+        scope: string;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetUserInfoOptions {
+        /**
+         * 授权登录服务提供商,通过uni.getProvider获取
+         * - weixin: 微信登录
+         * - qq: QQ登录
+         * - sinaweibo: 新浪微博登录
+         * - xiaomi: 小米登录
+         * - apple: Apple登录
+         */
+        provider?: 'weixin' | 'qq' | 'sinaweibo' | 'xiaomi' | 'apple';
+        /**
+         * 是否带上登录态信息,仅微信小程序生效。
+         */
+        withCredentials?: boolean;
+        /**
+         * 指定返回用户信息的语言,zh_CN 简体中文,zh_TW 繁体中文,en 英文。默认为en,仅微信小程序生效。
+         */
+        lang?: string;
+        /**
+         * 超时时间,单位 ms
+         */
+        timeout?: number;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: GetUserInfoRes) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetUserProfileOptions {
+        /**
+         * 授权登录服务提供商,通过uni.getProvider获取
+         * - weixin: 微信登录
+         * - qq: QQ登录
+         * - sinaweibo: 新浪微博登录
+         * - xiaomi: 小米登录
+         * - apple: Apple登录
+         */
+        provider?: 'weixin' | 'qq' | 'sinaweibo' | 'xiaomi' | 'apple';
+        /**
+         * 声明获取用户个人信息后的用途,不超过30个字符。仅微信小程序生效,且为必填。
+         */
+        desc?: string;
+        /**
+         * 是否带上登录态信息,仅微信小程序生效。
+         */
+        withCredentials?: boolean;
+        /**
+         * 指定返回用户信息的语言,zh_CN 简体中文,zh_TW 繁体中文,en 英文。默认为en,仅微信小程序生效。
+         * - en: 英文
+         * - zh_CN: 简体中文
+         * - zh_TW: 繁体中文
+         */
+        lang?: 'en' | 'zh_CN' | 'zh_TW';
+        /**
+         * 超时时间,单位 ms
+         */
+        timeout?: number;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: GetUserProfileRes) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetUserInfoRes {
+        /**
+         * 用户信息对象,不包含 openid 等敏感信息
+         */
+        userInfo: UserInfo;
+        /**
+         * 不包括敏感信息的原始数据字符串,用于计算签名。
+         */
+        rawData: string;
+        /**
+         * 使用 sha1( rawData + sessionkey ) 得到字符串,用于校验用户信息,仅微信小程序生效。
+         */
+        signature: string;
+        /**
+         * 包括敏感数据在内的完整用户信息的加密数据,详细见加密数据解密算法,仅微信小程序生效。
+         */
+        encryptedData: string;
+        /**
+         * 加密算法的初始向量,详细见加密数据解密算法,仅微信小程序生效。
+         */
+        iv: string;
+        /**
+         * 描述信息
+         */
+        errMsg: string;
+    }
+
+    interface GetUserProfileRes {
+        /**
+         * 用户信息对象,不包含 openid 等敏感信息
+         */
+        userInfo: UserInfo;
+        /**
+         * 不包括敏感信息的原始数据字符串,用于计算签名。
+         */
+        rawData: string;
+        /**
+         * 使用 sha1( rawData + sessionkey ) 得到字符串,用于校验用户信息,仅微信小程序生效。
+         */
+        signature: string;
+        /**
+         * 包括敏感数据在内的完整用户信息的加密数据,详细见加密数据解密算法,仅微信小程序生效。
+         */
+        encryptedData: string;
+        /**
+         * 加密算法的初始向量,详细见加密数据解密算法,仅微信小程序生效。
+         */
+        iv: string;
+        /**
+         * 描述信息
+         */
+        errMsg: string;
+    }
+
+    interface UserInfo {
+        /**
+         * 用户昵称
+         */
+        nickName: string;
+        /**
+         * 该服务商唯一用户标识
+         */
+        openId: string;
+        /**
+         * 用户头像
+         */
+        avatarUrl: string;
+    }
+
+    interface PreLoginOptions {
+        /**
+         * 授权登录服务提供商,通过uni.getProvider获取
+         * - univerify: 一键登录
+         */
+        provider?: 'univerify';
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetCheckBoxStateOptions {
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: GetCheckBoxStateRes) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetCheckBoxStateRes {
+        /**
+         * 错误信息
+         */
+        errMsg: string;
+        /**
+         * 一键登录条款勾选框状态
+         */
+        state: boolean;
+    }
+
+    interface UniverifyManager {
+        /**
+         * 一键登录
+         */
+        login(options: UniverifyLoginOptions): void;
+        /**
+         * 预登录
+         */
+        preLogin(options: CallBackOptions): void;
+        /**
+         * 关闭一键登陆页面
+         */
+        close(): void;
+        /**
+         * 获取一键登录条款勾选框状态
+         */
+        getCheckBoxState(options: GetCheckBoxStateOptions): void;
+        /**
+         * 订阅一键登录自定义按钮点击事件
+         */
+        onButtonsClick(callback: (result: any) => void): void;
+        /**
+         * 取消订阅一键登录自定义按钮点击事件
+         */
+        offButtonsClick(callback: (result: any) => void): void;
+    }
+
+    interface UniverifyLoginOptions {
+        /**
+         * 一键登录页面样式
+         */
+        univerifyStyle?: UniverifyStyle;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: LoginRes) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface CallBackOptions {
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface ShareOptions {
+        /**
+         * 分享服务提供商,通过uni.getProvider获取,如果不设置则弹出分享列表选择界面
+         * - sinaweibo: 新浪微博分享
+         * - qq: 分享到QQ好友
+         * - weixin: 分享微信消息、朋友圈及微信小程序
+         */
+        provider?: 'sinaweibo' | 'qq' | 'weixin';
+        /**
+         * 分享类型。默认图文0,纯文字1,纯图片2,音乐3,视频4,小程序5。
+         * - 0: 图文
+         * - 1: 纯文字
+         * - 2: 纯图片
+         * - 3: 音乐
+         * - 4: 视频
+         * - 5: 小程序
+         */
+        type?: 0 | 1 | 2 | 3 | 4 | 5;
+        /**
+         * 标题
+         */
+        title?: string;
+        /**
+         * 场景。可取值“WXSceneSession”分享到聊天界面,“WXSceneTimeline”分享到朋友圈,“WXSceneFavorite”分享到微信收藏
+         * - WXSceneSession: 分享到聊天界面
+         * - WXSceneTimeline: 分享到朋友圈
+         * - WXSceneFavorite: 分享到微信收藏
+         */
+        scene?: 'WXSceneSession' | 'WXSceneTimeline' | 'WXSceneFavorite';
+        /**
+         * 摘要
+         */
+        summary?: string;
+        /**
+         * 跳转链接
+         */
+        href?: string;
+        /**
+         * 图片地址
+         */
+        imageUrl?: string;
+        /**
+         * 音视频地址
+         */
+        mediaUrl?: string;
+        /**
+         * 分享小程序
+         */
+        miniProgram?: MiniProgramShareOptions;
+        /**
+         * 是否启用拉起客服功能(目前仅支持微信)
+         */
+        openCustomerServiceChat?: boolean;
+        /**
+         * 客服ID(目前仅支持微信)
+         */
+        corpid?: string;
+        /**
+         * 客服的页面路径(目前仅支持微信)
+         */
+        customerUrl?: string;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface MiniProgramShareOptions {
+        /**
+         * 微信小程序原始id
+         */
+        id?: string;
+        /**
+         * 点击链接进入的页面
+         */
+        path?: string;
+        /**
+         * 微信小程序版本类型,默认为0。
+         * - 0: 正式版
+         * - 1: 测试版
+         * - 2: 体验版
+         */
+        type?: 0 | 1 | 2;
+        /**
+         * 兼容低版本的网页链接
+         */
+        webUrl?: string;
+    }
+
+    interface ShareWithSystemOptions {
+        /**
+         * 分享内容的类型
+         * - text: 文字类型
+         * - image: 图片类型
+         */
+        type?: 'text' | 'image';
+        /**
+         * 分享文字内容
+         */
+        summary?: string;
+        /**
+         * 分享链接
+         */
+        href?: string;
+        /**
+         * 分享图片地址,仅支持本地图片
+         */
+        imageUrl?: string;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface SubscribePushOptions {
+        /**
+         * 推送服务提供商,通过uni.getProvider获取
+         * - unipush: UniPush
+         * - igexin: 个推
+         * - mipush: 小米推送
+         */
+        provider?: 'unipush' | 'igexin' | 'mipush';
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface UnscribePushOptions {
+        /**
+         * 推送服务提供商,通过uni.getProvider获取
+         * - unipush: UniPush
+         * - igexin: 个推
+         * - mipush: 小米推送
+         */
+        provider?: 'unipush' | 'igexin' | 'mipush';
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface OnPushOptions {
+        /**
+         * 推送服务提供商,通过uni.getProvider获取
+         * - unipush: UniPush
+         * - igexin: 个推
+         * - mipush: 小米推送
+         */
+        provider?: 'unipush' | 'igexin' | 'mipush';
+        /**
+         * 接收到透传数据回调,回调参数(Object):messageId(消息id)、data(消息内容)
+         */
+        callback?: (result: any) => void;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface OffPushOptions {
+        /**
+         * 推送服务提供商,通过uni.getProvider获取
+         * - unipush: UniPush
+         * - igexin: 个推
+         * - mipush: 小米推送
+         */
+        provider?: 'unipush' | 'igexin' | 'mipush';
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface ShowShareMenuOptions {
+        /**
+         * 是否使用带 shareTicket 的转发
+         */
+        withShareTicket?: boolean;
+        /**
+         * 需要显示的转发按钮名称列表
+         */
+        menus?: ShowShareMenuOptionsMenu [];
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    /**
+     * 转发按钮名称
+     * - shareAppMessage: 发送给朋友
+     * - shareTimeline: 分享到朋友圈
+     */
+    type ShowShareMenuOptionsMenu = 'shareAppMessage' | 'shareTimeline';
+
+    interface HideShareMenuOptions {
+        /**
+         * 控制隐藏的哪些分享选项
+         */
+        hideShareItems: any [];
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface UpdateShareMenuOptions {
+        /**
+         * 是否使用带 shareTicket 的转发
+         */
+        withShareTicket?: boolean;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetShareInfoOptions {
+        /**
+         * shareTicket
+         */
+        shareTicket: string;
+        /**
+         * 超时时间,单位 ms
+         */
+        timeout?: number;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: GetShareInfoRes) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetShareInfoRes {
+        /**
+         * 错误信息
+         */
+        errMsg: string;
+        /**
+         * 包括敏感数据在内的完整转发信息的加密数据
+         */
+        encryptedData: string;
+        /**
+         * 加密算法的初始向量
+         */
+        iv: string;
+    }
+
+    interface ChooseAddressOptions {
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: ChooseAddressRes) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface ChooseAddressRes {
+        /**
+         * 调用结果
+         */
+        errMsg: string;
+        /**
+         * 收货人姓名
+         */
+        userName: string;
+        /**
+         * 邮编
+         */
+        postalCode: string;
+        /**
+         * 国标收货地址第一级地址
+         */
+        provinceName: string;
+        /**
+         * 国标收货地址第二级地址
+         */
+        cityName: string;
+        /**
+         * 国标收货地址第三级地址
+         */
+        countyName: string;
+        /**
+         * 详细收货地址信息
+         */
+        detailInfo: string;
+        /**
+         * 收货地址国家码
+         */
+        nationalCode: string;
+        /**
+         * 收货人手机号码
+         */
+        telNumber: string;
+    }
+
+    interface AddCardOptions {
+        /**
+         * 需要添加的卡券列表
+         */
+        cardList: AddCardData [];
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: AddCardRes) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface AddCardData {
+        /**
+         * 卡券 id
+         */
+        cardId: string;
+        /**
+         * 卡券的扩展参数
+         */
+        cardExt: string;
+    }
+
+    interface AddCardRes {
+        /**
+         * 卡券 id
+         */
+        cardList: CardData [];
+    }
+
+    interface CardData {
+        /**
+         * 加密 code,为用户领取到卡券的code加密后的字符串
+         */
+        code: string;
+        /**
+         * 用户领取到卡券的id
+         */
+        cardId: string;
+        /**
+         * 用户领取到卡券的扩展参数,与调用时传入的参数相同
+         */
+        cardExt: string;
+        /**
+         * 是否成功
+         */
+        isSuccess: boolean;
+    }
+
+    interface OpenCardOptions {
+        /**
+         * 需要打开的卡券列表
+         */
+        cardList: OpenCardData [];
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface OpenCardData {
+        /**
+         * 需要打开的卡券 Id
+         */
+        cardId: string;
+        /**
+         * 由 addCard 的返回对象中的加密 code 通过解密后得到
+         */
+        code: string;
+    }
+
+    interface OpenSettingOptions {
+        /**
+         * 是否同时获取用户订阅消息的订阅状态,默认不获取。注意:withSubscriptions 只返回用户勾选过订阅面板中的“总是保持以上选择,不再询问”的订阅消息。
+         *
+         * 最低基础库:2.10.3
+         */
+        withSubscriptions?: boolean;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetSettingOptions {
+        /**
+         * 是否同时获取用户订阅消息的订阅状态
+         */
+        withSubscriptions?: boolean;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: GetSettingSuccessResult) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetSettingSuccessResult {
+        /**
+         * 用户授权结果
+         */
+        authSetting: AuthSetting;
+        /**
+         * 用户订阅消息设置
+         */
+        subscriptionsSetting: SubscriptionsSetting;
+    }
+
+    interface AuthSetting {
+        /**
+         * 是否授权用户信息
+         */
+        'scope.userInfo': boolean;
+        /**
+         * 是否授权地理位置
+         */
+        'scope.userLocation': boolean;
+        /**
+         * 是否授权通讯地址
+         */
+        'scope.address': boolean;
+        /**
+         * 是否授权发票抬头
+         */
+        'scope.invoiceTitle': boolean;
+        /**
+         * 是否授权获取发票
+         */
+        'scope.invoice': boolean;
+        /**
+         * 是否授权微信运动步数
+         */
+        'scope.werun': boolean;
+        /**
+         * 是否授权录音功能
+         */
+        'scope.record': boolean;
+        /**
+         * 是否授权保存到相册
+         */
+        'scope.writePhotosAlbum': boolean;
+        /**
+         * 是否授权摄像头
+         */
+        'scope.camera': boolean;
+    }
+
+    interface SubscriptionsSetting {
+        /**
+         * 订阅消息总开关
+         */
+        mainSwitch: boolean;
+        /**
+         * 每一项订阅消息的订阅状态
+         */
+        itemSettings: any;
+    }
+
+    interface GetWeRunDataOptions {
+        /**
+         * 超时时间,单位 ms
+         */
+        timeout?: number;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: GetWeRunDataRes) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetWeRunDataRes {
+        /**
+         * 调用结果
+         */
+        errMsg: string;
+        /**
+         * 包括敏感数据在内的完整用户信息的加密数据
+         */
+        encryptedData: string;
+        /**
+         * 加密算法的初始向量
+         */
+        iv: string;
+    }
+
+    interface ChooseInvoiceTitleOptions {
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: ChooseInvoiceTitleRes) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface ChooseInvoiceTitleRes {
+        /**
+         * 抬头类型(0:单位,1:个人)
+         */
+        type: string;
+        /**
+         * 抬头名称
+         */
+        title: string;
+        /**
+         * 抬头税号
+         */
+        taxNumber: string;
+        /**
+         * 单位地址
+         */
+        companyAddress: string;
+        /**
+         * 手机号码
+         */
+        telephone: string;
+        /**
+         * 银行名称
+         */
+        bankName: string;
+        /**
+         * 银行账号
+         */
+        bankAccount: string;
+        /**
+         * 接口调用结果
+         */
+        errMsg: string;
+    }
+
+    interface CheckIsSupportSoterAuthenticationOptions {
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: CheckIsSupportSoterAuthenticationRes) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface CheckIsSupportSoterAuthenticationRes {
+        /**
+         * 接口调用成功的回调函数
+         */
+        supportMode: SoterAuthModes [];
+        /**
+         * 接口调用结果
+         */
+        errMsg: string;
+    }
+
+    interface StartSoterAuthenticationOptions {
+        /**
+         * 请求使用的可接受的生物认证方式
+         */
+        requestAuthModes: SoterAuthModes [];
+        /**
+         * 挑战因子
+         */
+        challenge?: string;
+        /**
+         * 验证描述,即识别过程中显示在界面上的对话框提示内容
+         */
+        authContent?: string;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: StartSoterAuthenticationRes) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    /**
+     * 生物认证方式
+     * - fingerPrint: 指纹识别
+     * - facial: 人脸识别(暂未支持)
+     * - speech: 声纹识别(暂未支持)
+     */
+    type SoterAuthModes = 'fingerPrint' | 'facial' | 'speech';
+
+    interface StartSoterAuthenticationRes {
+        /**
+         * 错误码
+         */
+        errCode: number;
+        /**
+         * 生物认证方式
+         * - fingerPrint: 指纹识别
+         * - facial: 人脸识别(暂未支持)
+         * - speech: 声纹识别(暂未支持)
+         */
+        authMode: 'fingerPrint' | 'facial' | 'speech';
+        /**
+         * 在设备安全区域(TEE)内获得的本机安全信息以及本次认证信息
+         */
+        resultJSON?: string;
+        /**
+         * 用SOTER安全密钥对 resultJSON 的签名(SHA256 with RSA/PSS, saltlen=20)
+         */
+        resultJSONSignature?: string;
+        /**
+         * 接口调用结果
+         */
+        errMsg: string;
+    }
+
+    interface CheckIsSoterEnrolledInDeviceOptions {
+        /**
+         * 生物认证方式
+         * - fingerPrint: 指纹识别
+         * - facial: 人脸识别(暂未支持)
+         * - speech: 声纹识别(暂未支持)
+         */
+        checkAuthMode: 'fingerPrint' | 'facial' | 'speech';
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: CheckIsSoterEnrolledInDeviceRes) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface CheckIsSoterEnrolledInDeviceRes {
+        /**
+         * 是否已录入信息
+         */
+        isEnrolled: boolean;
+        /**
+         * 错误信息
+         */
+        errMsg: string;
+    }
+
+    interface UpdateManager {
+        /**
+         * 当向应用后台请求完新版本信息,会进行回调
+         */
+        onCheckForUpdate(callback: (result: OnCheckForUpdateResult) => void): void;
+        /**
+         * 当新版本下载完成,会进行回调
+         */
+        onUpdateReady(callback: (result: any) => void): void;
+        /**
+         * 当新版本下载失败,会进行回调
+         */
+        onUpdateFailed(callback: (result: any) => void): void;
+        /**
+         * 当新版本下载完成,调用该方法会强制当前uni-app应用上新版本并重启
+         */
+        applyUpdate(): void;
+    }
+
+    interface OnCheckForUpdateResult {
+        /**
+         * 是否有新版本
+         */
+        hasUpdate: boolean;
+    }
+
+    interface Worker {
+        /**
+         * 向 Worker 线程发送的消息。
+         */
+        postMessage(message: any): void;
+        /**
+         * 监听 Worker 线程向当前线程发送的消息
+         */
+        onMessage(callback: (result: any) => void): void;
+        /**
+         * 结束当前 Worker 线程,仅限在主线程 Worker 实例上调用。
+         */
+        terminate(): void;
+    }
+
+    interface SetEnableDebugOptions {
+        /**
+         * 是否打开调试
+         */
+        enableDebug: boolean;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface SetBackgroundColorOptions {
+        /**
+         * 窗口的背景色,必须为十六进制颜色值
+         */
+        backgroundColor?: string;
+        /**
+         * 顶部窗口的背景色,必须为十六进制颜色值,仅 iOS 支持
+         */
+        backgroundColorTop?: string;
+        /**
+         * 底部窗口的背景色,必须为十六进制颜色值,仅 iOS 支持
+         */
+        backgroundColorBottom?: string;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface SetBackgroundTextStyleOptions {
+        /**
+         * 下拉背景字体、loading 图的样式,值为:dark、light
+         */
+        textStyle: string;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface StatusBarStyle {
+        /**
+         * 页面根节点样式,页面根节点是所有页面节点的祖先节点,相当于 HTML 中的 body 节点
+         */
+        pageStyle?: string;
+        /**
+         * 页面的根字体大小,页面中的所有 rem 单位,将使用这个字体大小作为参考值,即 1rem 等于这个字体大小
+         */
+        rootFontSize?: string;
+    }
+
+    interface OnGyroscopeChangeSuccess {
+        /**
+         * x 轴方向角速度
+         */
+        x: number;
+        /**
+         * y 轴方向角速度
+         */
+        y: number;
+        /**
+         * z 轴方向角速度
+         */
+        z: number;
+    }
+
+    interface StartGyroscopeOptions {
+        /**
+         * 监听陀螺仪数据回调函数的执行频率:game(20ms/次)、ui(60ms/次)、normal (200ms/次)
+         */
+        interval?: string;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface StopGyroscopeOptions {
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface StopGyroscopeOptions {
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface LoadFontFaceOptions {
+        /**
+         * 定义的字体名称
+         */
+        family: string;
+        /**
+         * 字体资源的地址。建议格式为 TTF 和 WOFF,WOFF2 在低版本的iOS上会不兼容。
+         */
+        source: string;
+        /**
+         * 可选的字体描述符
+         */
+        desc?: LoadFontFaceOptionsDesc;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: any) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface LoadFontFaceOptionsDesc {
+        /**
+         * 字体样式,可选值为 normal、italic、oblique
+         */
+        style: string;
+        /**
+         * 字体粗细,可选值为 normal、bold、100、200../ 900
+         */
+        weight: string;
+        /**
+         * 设置小型大写字母的字体显示文本,可选值为 normal、small-caps、inherit
+         */
+        variant: string;
+    }
+
+    interface GetSelectedTextRangeOptions {
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: (result: GetSelectedTextRangeSuccessCallbackResult) => void;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: (result: any) => void;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface GetSelectedTextRangeSuccessCallbackResult {
+        /**
+         * 输入框光标起始位置
+         */
+        start?: number;
+        /**
+         * 输入框光标结束位置
+         */
+        end?: number;
+    }
+
+    interface RewardedVideoAdOptions {
+        /**
+         * 广告位 id
+         */
+        adpid?: string;
+        /**
+         * 小程序平台广告位 id
+         */
+        adUnitId?: string;
+    }
+
+    interface RewardedVideoAdContext {
+        /**
+         * 加载激励视频广告
+         */
+        load(): Promise<any>;
+        /**
+         * 显示激励视频广告
+         */
+        show(): Promise<any>;
+        /**
+         * 获取广告商
+         */
+        getProvider(): string;
+        /**
+         * 销毁激励视频广告实例
+         */
+        destroy(): void;
+        /**
+         * 绑定 load 事件的监听器
+         */
+        onLoad(callback: (result: any) => void): void;
+        /**
+         * 绑定 close 事件的监听器
+         */
+        onClose(callback: (result: any) => void): void;
+        /**
+         * 绑定 error 事件的监听器
+         */
+        onError(callback: (result: any) => void): void;
+        /**
+         * 解除绑定 load 事件的监听器
+         */
+        offLoad(callback: (result: any) => void): void;
+        /**
+         * 解除绑定 close 事件的监听器
+         */
+        offClose(callback: (result: any) => void): void;
+        /**
+         * 解除绑定 error 事件的监听器
+         */
+        offError(callback: (result: any) => void): void;
+    }
+
+    interface FullScreenVideoAdOptions {
+        /**
+         * 广告位 id
+         */
+        adpid?: string;
+    }
+
+    interface FullScreenVideoAdContext {
+        /**
+         * 加载全屏视频广告
+         */
+        load(): Promise<any>;
+        /**
+         * 显示全屏视频广告
+         */
+        show(): Promise<any>;
+        /**
+         * 销毁全屏视频广告实例
+         */
+        destroy(): void;
+        /**
+         * 绑定 load 事件的监听器
+         */
+        onLoad(callback: (result: any) => void): void;
+        /**
+         * 绑定 close 事件的监听器
+         */
+        onClose(callback: (result: any) => void): void;
+        /**
+         * 绑定 error 事件的监听器
+         */
+        onError(callback: (result: any) => void): void;
+        /**
+         * 解除绑定 load 事件的监听器
+         */
+        offLoad(callback: (result: any) => void): void;
+        /**
+         * 解除绑定 close 事件的监听器
+         */
+        offClose(callback: (result: any) => void): void;
+        /**
+         * 解除绑定 error 事件的监听器
+         */
+        offError(callback: (result: any) => void): void;
+    }
+
+    interface InterstitialAdOptions {
+        /**
+         * 广告位 id
+         */
+        adpid?: string;
+        /**
+         * 小程序平台广告位 id
+         */
+        adUnitId?: string;
+    }
+
+    interface InterstitialAdContext {
+        /**
+         * 加载插屏广告
+         */
+        load(): Promise<any>;
+        /**
+         * 显示插屏广告
+         */
+        show(): Promise<any>;
+        /**
+         * 销毁插屏广告实例
+         */
+        destroy(): void;
+        /**
+         * 绑定 load 事件的监听器
+         */
+        onLoad(callback: (result: any) => void): void;
+        /**
+         * 绑定 close 事件的监听器
+         */
+        onClose(callback: (result: any) => void): void;
+        /**
+         * 绑定 error 事件的监听器
+         */
+        onError(callback: (result: any) => void): void;
+        /**
+         * 解除绑定 load 事件的监听器
+         */
+        offLoad(callback: (result: any) => void): void;
+        /**
+         * 解除绑定 close 事件的监听器
+         */
+        offClose(callback: (result: any) => void): void;
+        /**
+         * 解除绑定 error 事件的监听器
+         */
+        offError(callback: (result: any) => void): void;
+    }
+
+    interface InteractiveAdOptions {
+        /**
+         * 广告位 id
+         */
+        adpid: string;
+        /**
+         * 广告服务商标识
+         */
+        provider: string;
+    }
+
+    interface InteractiveAdContext {
+        /**
+         * 加载互动广告
+         */
+        load(): Promise<any>;
+        /**
+         * 显示互动广告
+         */
+        show(): Promise<any>;
+        /**
+         * 场景入口曝光打点
+         */
+        reportExposure(): void;
+        /**
+         * 销毁互动广告实例
+         */
+        destroy(): void;
+        /**
+         * 绑定 load 事件的监听器
+         */
+        onLoad(callback: (result: any) => void): void;
+        /**
+         * 绑定 close 事件的监听器
+         */
+        onClose(callback: (result: any) => void): void;
+        /**
+         * 绑定 error 事件的监听器
+         */
+        onError(callback: (result: any) => void): void;
+        /**
+         * 解除绑定 load 事件的监听器
+         */
+        offLoad(callback: (result: any) => void): void;
+        /**
+         * 解除绑定 close 事件的监听器
+         */
+        offClose(callback: (result: any) => void): void;
+        /**
+         * 解除绑定 error 事件的监听器
+         */
+        offError(callback: (result: any) => void): void;
+    }
+
+    interface InterceptorOptions {
+        /**
+         * 拦截前触发
+         */
+        invoke?: (result: any) => void;
+        /**
+         * 成功回调拦截
+         */
+        success?: (result: any) => void;
+        /**
+         * 失败回调拦截
+         */
+        fail?: (result: any) => void;
+        /**
+         * 完成回调拦截
+         */
+        complete?: (result: any) => void;
+    }
+
+    interface OnLocaleChangeCallbackResult {
+        /**
+         * 当前语言
+         */
+        locale?: string;
+    }
+
+    /**
+     * 小程序帐号信息
+     */
+    interface MiniProgram {
+        /**
+         * 小程序 appId
+         */
+        appId: string;
+        /**
+         * 小程序版本
+         *
+         * 可选值:
+         * - 'develop': 开发版;
+         * - 'trial': 体验版;
+         * - 'release': 正式版;
+         *
+         * 最低基础库: `2.10.0`
+         */
+        envVersion: "develop" | "trial" | "release";
+        /**
+         * 线上小程序版本号
+         *
+         * 最低基础库: `2.10.2`
+         */
+        version: string;
+    }
+
+    /**
+     * 插件帐号信息(仅在插件中调用时包含这一项)
+     */
+    interface Plugin {
+        /**
+         * 插件 appId
+         */
+        appId: string;
+        /**
+         * 插件版本号
+         */
+        version: string;
+    }
+
+    /**
+     * 帐号信息
+     */
+    interface AccountInfo {
+        /**
+         * 小程序帐号信息
+         */
+        miniProgram: MiniProgram;
+        /**
+         * 插件帐号信息(仅在插件中调用时包含这一项)
+         */
+        plugin: Plugin;
+    }
+
+    interface GetBatteryInfoSyncResult {
+        /**
+         * 是否正在充电中
+         */
+        isCharging: boolean;
+        /**
+         * 设备电量,范围 1 - 100
+         */
+        level: string;
+    }
+
+    /**
+     * 来源信息。从另一个小程序、公众号或 App 进入小程序时返回。否则返回 `{}`。(参见后文注意)
+     */
+    interface ReferrerInfo {
+        /**
+         * 来源小程序、公众号或 App 的 appId
+         */
+        appId: string;
+        /**
+         * 来源小程序传过来的数据,scene=1037或1038时支持
+         */
+        extraData: Record<string, any>;
+    }
+
+    /**
+     * 启动参数
+     */
+    interface LaunchOptionsApp {
+        /**
+         * 启动小程序的路径 (代码包路径)
+         */
+        path: string;
+        /**
+         * 启动小程序的 query 参数
+         */
+        query: Record<string, any>;
+        /**
+         * 来源信息。从另一个小程序、公众号或 App 进入小程序时返回。否则返回 `{}`。(参见后文注意)
+         */
+        referrerInfo: ReferrerInfo;
+        /**
+         * 启动小程序的[场景值](https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/scene.html)
+         */
+        scene: number;
+        /**
+         * shareTicket,详见[获取更多转发信息](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/share.html)
+         */
+        shareTicket?: string;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type AccessCompleteCallback = (res: GeneralCallbackResult) => void;
+
+    interface AccessFailCallbackResult {
+        /**
+         * 错误信息
+         *
+         * 可选值:
+         * - 'fail no such file or directory ${path}': 文件/目录不存在;
+         */
+        errMsg: string;
+    }
+
+    /**
+     * 接口调用失败的回调函数
+     */
+    type AccessFailCallback = (result: AccessFailCallbackResult) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type AccessSuccessCallback = (res: GeneralCallbackResult) => void;
+
+    interface AccessOption {
+        /**
+         * 要判断是否存在的文件/目录路径 (本地路径)
+         */
+        path: string;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: AccessCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: AccessFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: AccessSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type AppendFileCompleteCallback = (res: GeneralCallbackResult) => void;
+
+    interface AppendFileFailCallbackResult {
+        /**
+         * 错误信息
+         *
+         * 可选值:
+         * - 'fail no such file or directory, open ${filePath}': 指定的 filePath 文件不存在;
+         * - 'fail illegal operation on a directory, open "${filePath}"': 指定的 filePath 是一个已经存在的目录;
+         * - 'fail permission denied, open ${dirPath}': 指定的 filePath 路径没有写权限;
+         * - 'fail sdcard not mounted': 指定的 filePath 是一个已经存在的目录;
+         */
+        errMsg: string;
+    }
+
+    /**
+     * 接口调用失败的回调函数
+     */
+    type AppendFileFailCallback = (result: AppendFileFailCallbackResult) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type AppendFileSuccessCallback = (res: GeneralCallbackResult) => void;
+
+    interface AppendFileOption {
+        /**
+         * 要追加的文本或二进制数据
+         */
+        data: string | ArrayBuffer;
+        /**
+         * 要追加内容的文件路径 (本地路径)
+         */
+        filePath: string;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: AppendFileCompleteCallback;
+        /**
+         * 指定写入文件的字符编码
+         *
+         * 可选值:
+         * - 'ascii': ;
+         * - 'base64': ;
+         * - 'binary': ;
+         * - 'hex': ;
+         * - 'ucs2': 以小端序读取;
+         * - 'ucs-2': 以小端序读取;
+         * - 'utf16le': 以小端序读取;
+         * - 'utf-16le': 以小端序读取;
+         * - 'utf-8': ;
+         * - 'utf8': ;
+         * - 'latin1': ;
+         */
+        encoding?: "ascii" | "base64" | "binary" | "hex" | "ucs2" | "ucs-2" | "utf16le" | "utf-16le" | "utf-8" | "utf8" | "latin1";
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: AppendFileFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: AppendFileSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type CopyFileCompleteCallback = (res: GeneralCallbackResult) => void;
+
+    interface CopyFileFailCallbackResult {
+        /**
+         * 错误信息
+         *
+         * 可选值:
+         * - 'fail permission denied, copyFile ${srcPath} -> ${destPath}': 指定目标文件路径没有写权限;
+         * - 'fail no such file or directory, copyFile ${srcPath} -> ${destPath}': 源文件不存在,或目标文件路径的上层目录不存在;
+         * - 'fail the maximum size of the file storage limit is exceeded': 存储空间不足;
+         */
+        errMsg: string;
+    }
+
+    /**
+     * 接口调用失败的回调函数
+     */
+    type CopyFileFailCallback = (result: CopyFileFailCallbackResult) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type CopyFileSuccessCallback = (res: GeneralCallbackResult) => void;
+
+    interface CopyFileOption {
+        /**
+         * 目标文件路径,支持本地路径
+         */
+        destPath: string;
+        /**
+         * 源文件路径,支持本地路径
+         */
+        srcPath: string;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: CopyFileCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: CopyFileFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: CopyFileSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type GetFileInfoCompleteCallback = (res: GeneralCallbackResult) => void;
+
+    interface GetFileInfoFailCallbackResult {
+        /**
+         * 错误信息
+         *
+         * 可选值:
+         * - 'fail file not exist': 指定的 filePath 找不到文件;
+         */
+        errMsg: string;
+    }
+
+    /**
+     * 接口调用失败的回调函数
+     */
+    type FileSystemManagerGetFileInfoFailCallback = (
+                result: GetFileInfoFailCallbackResult
+            ) => void;
+
+    interface FileSystemManagerGetFileInfoSuccessCallbackResult {
+        /**
+         * 文件大小,以字节为单位
+         */
+        size: number;
+        errMsg: string;
+    }
+
+    /**
+     * 接口调用成功的回调函数
+     */
+    type FileSystemManagerGetFileInfoSuccessCallback = (
+                result: FileSystemManagerGetFileInfoSuccessCallbackResult
+            ) => void;
+
+    interface FileSystemManagerGetFileInfoOption {
+        /**
+         * 要读取的文件路径 (本地路径)
+         */
+        filePath: string;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: GetFileInfoCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: FileSystemManagerGetFileInfoFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: FileSystemManagerGetFileInfoSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type GetSavedFileListCompleteCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type GetSavedFileListFailCallback = (res: GeneralCallbackResult) => void;
+
+    interface FileItem {
+        /**
+         * 文件保存时的时间戳,从1970/01/01 08:00:00 到当前时间的秒数
+         */
+        createTime: number;
+        /**
+         * 文件路径 (本地路径)
+         */
+        filePath: string;
+        /**
+         * 本地文件大小,以字节为单位
+         */
+        size: number;
+    }
+
+    interface FileSystemManagerGetSavedFileListSuccessCallbackResult {
+        /**
+         * 文件数组
+         */
+        fileList: FileItem[];
+        errMsg: string;
+    }
+
+    /**
+     * 接口调用成功的回调函数
+     */
+    type FileSystemManagerGetSavedFileListSuccessCallback = (
+                result: FileSystemManagerGetSavedFileListSuccessCallbackResult
+            ) => void;
+
+    interface FileSystemManagerGetSavedFileListOption {
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: GetSavedFileListCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: GetSavedFileListFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: FileSystemManagerGetSavedFileListSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type MkdirCompleteCallback = (res: GeneralCallbackResult) => void;
+
+    interface MkdirFailCallbackResult {
+        /**
+         * 错误信息
+         *
+         * 可选值:
+         * - 'fail no such file or directory ${dirPath}': 上级目录不存在;
+         * - 'fail permission denied, open ${dirPath}': 指定的 filePath 路径没有写权限;
+         * - 'fail file already exists ${dirPath}': 有同名文件或目录;
+         */
+        errMsg: string;
+    }
+
+    /**
+     * 接口调用失败的回调函数
+     */
+    type MkdirFailCallback = (result: MkdirFailCallbackResult) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type MkdirSuccessCallback = (res: GeneralCallbackResult) => void;
+
+    interface MkdirOption {
+        /**
+         * 创建的目录路径 (本地路径)
+         */
+        dirPath: string;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: MkdirCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: MkdirFailCallback;
+        /**
+         * 是否在递归创建该目录的上级目录后再创建该目录。如果对应的上级目录已经存在,则不创建该上级目录。如 dirPath 为 a/b/c/d 且 recursive 为 true,将创建 a 目录,再在 a 目录下创建 b 目录,以此类推直至创建 a/b/c 目录下的 d 目录。
+         *
+         * 最低基础库: `2.3.0`
+         */
+        recursive?: boolean;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: MkdirSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type ReadFileCompleteCallback = (res: GeneralCallbackResult) => void;
+
+    interface ReadFileFailCallbackResult {
+        /**
+         * 错误信息
+         *
+         * 可选值:
+         * - 'fail no such file or directory, open ${filePath}': 指定的 filePath 所在目录不存在;
+         * - 'fail permission denied, open ${dirPath}': 指定的 filePath 路径没有读权限;
+         */
+        errMsg: string;
+    }
+
+    /**
+     * 接口调用失败的回调函数
+     */
+    type ReadFileFailCallback = (result: ReadFileFailCallbackResult) => void;
+
+    interface ReadFileSuccessCallbackResult {
+        /**
+         * 文件内容
+         */
+        data: string | ArrayBuffer;
+        errMsg: string;
+    }
+
+    /**
+     * 接口调用成功的回调函数
+     */
+    type ReadFileSuccessCallback = (
+                result: ReadFileSuccessCallbackResult
+            ) => void;
+
+    interface ReadFileOption {
+        /**
+         * 要读取的文件的路径 (本地路径)
+         */
+        filePath: string;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: ReadFileCompleteCallback;
+        /**
+         * 指定读取文件的字符编码,如果不传 encoding,则以 ArrayBuffer 格式读取文件的二进制内容
+         *
+         * 可选值:
+         * - 'ascii': ;
+         * - 'base64': ;
+         * - 'binary': ;
+         * - 'hex': ;
+         * - 'ucs2': 以小端序读取;
+         * - 'ucs-2': 以小端序读取;
+         * - 'utf16le': 以小端序读取;
+         * - 'utf-16le': 以小端序读取;
+         * - 'utf-8': ;
+         * - 'utf8': ;
+         * - 'latin1': ;
+         */
+        encoding?: "ascii" | "base64" | "binary" | "hex" | "ucs2" | "ucs-2" | "utf16le" | "utf-16le" | "utf-8" | "utf8" | "latin1";
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: ReadFileFailCallback;
+        /**
+         * 指定文件的长度,如果不指定,则读到文件末尾。有效范围:[1, fileLength]。单位:byte
+         *
+         * 最低基础库: `2.10.0`
+         */
+        length?: string;
+        /**
+         * 从文件指定位置开始读,如果不指定,则从文件头开始读。读取的范围应该是左闭右开区间 [position, position+length)。有效范围:[0, fileLength - 1]。单位:byte
+         *
+         * 最低基础库: `2.10.0`
+         */
+        position?: string;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: ReadFileSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type ReaddirCompleteCallback = (res: GeneralCallbackResult) => void;
+
+    interface ReaddirFailCallbackResult {
+        /**
+         * 错误信息
+         *
+         * 可选值:
+         * - 'fail no such file or directory ${dirPath}': 目录不存在;
+         * - 'fail not a directory ${dirPath}': dirPath 不是目录;
+         * - 'fail permission denied, open ${dirPath}': 指定的 filePath 路径没有读权限;
+         */
+        errMsg: string;
+    }
+
+    /**
+     * 接口调用失败的回调函数
+     */
+    type ReaddirFailCallback = (result: ReaddirFailCallbackResult) => void;
+
+    interface ReaddirSuccessCallbackResult {
+        /**
+         * 指定目录下的文件名数组。
+         */
+        files: string[];
+        errMsg: string;
+    }
+
+    /**
+     * 接口调用成功的回调函数
+     */
+    type ReaddirSuccessCallback = (result: ReaddirSuccessCallbackResult) => void;
+
+    interface ReaddirOption {
+        /**
+         * 要读取的目录路径 (本地路径)
+         */
+        dirPath: string;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: ReaddirCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: ReaddirFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: ReaddirSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type RemoveSavedFileCompleteCallback = (res: GeneralCallbackResult) => void;
+
+    interface RemoveSavedFileFailCallbackResult {
+        /**
+         * 错误信息
+         *
+         * 可选值:
+         * - 'fail file not exist': 指定的 tempFilePath 找不到文件;
+         */
+        errMsg: string;
+    }
+
+    /**
+     * 接口调用失败的回调函数
+     */
+    type FileSystemManagerRemoveSavedFileFailCallback = (
+                result: RemoveSavedFileFailCallbackResult
+            ) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type RemoveSavedFileSuccessCallback = (res: GeneralCallbackResult) => void;
+
+    interface FileSystemManagerRemoveSavedFileOption {
+        /**
+         * 需要删除的文件路径 (本地路径)
+         */
+        filePath: string;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: RemoveSavedFileCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: FileSystemManagerRemoveSavedFileFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: RemoveSavedFileSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type RenameCompleteCallback = (res: GeneralCallbackResult) => void;
+
+    interface RenameFailCallbackResult {
+        /**
+         * 错误信息
+         *
+         * 可选值:
+         * - 'fail permission denied, rename ${oldPath} -> ${newPath}': 指定源文件或目标文件没有写权限;
+         * - 'fail no such file or directory, rename ${oldPath} -> ${newPath}': 源文件不存在,或目标文件路径的上层目录不存在;
+         */
+        errMsg: string;
+    }
+
+    /**
+     * 接口调用失败的回调函数
+     */
+    type RenameFailCallback = (result: RenameFailCallbackResult) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type RenameSuccessCallback = (res: GeneralCallbackResult) => void;
+
+    interface RenameOption {
+        /**
+         * 新文件路径,支持本地路径
+         */
+        newPath: string;
+        /**
+         * 源文件路径,支持本地路径
+         */
+        oldPath: string;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: RenameCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: RenameFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: RenameSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type RmdirCompleteCallback = (res: GeneralCallbackResult) => void;
+
+    interface RmdirFailCallbackResult {
+        /**
+         * 错误信息
+         *
+         * 可选值:
+         * - 'fail no such file or directory ${dirPath}': 目录不存在;
+         * - 'fail directory not empty': 目录不为空;
+         * - 'fail permission denied, open ${dirPath}': 指定的 dirPath 路径没有写权限;
+         */
+        errMsg: string;
+    }
+
+    /**
+     * 接口调用失败的回调函数
+     */
+    type RmdirFailCallback = (result: RmdirFailCallbackResult) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type RmdirSuccessCallback = (res: GeneralCallbackResult) => void;
+
+    interface RmdirOption {
+        /**
+         * 要删除的目录路径 (本地路径)
+         */
+        dirPath: string;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: RmdirCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: RmdirFailCallback;
+        /**
+         * 是否递归删除目录。如果为 true,则删除该目录和该目录下的所有子目录以及文件。
+         *
+         * 最低基础库: `2.3.0`
+         */
+        recursive?: boolean;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: RmdirSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type SaveFileCompleteCallback = (res: GeneralCallbackResult) => void;
+
+    interface SaveFileFailCallbackResult {
+        /**
+         * 错误信息
+         *
+         * 可选值:
+         * - 'fail tempFilePath file not exist': 指定的 tempFilePath 找不到文件;
+         * - 'fail permission denied, open "${filePath}"': 指定的 filePath 路径没有写权限;
+         * - 'fail no such file or directory "${dirPath}"': 上级目录不存在;
+         * - 'fail the maximum size of the file storage limit is exceeded': 存储空间不足;
+         */
+        errMsg: string;
+    }
+
+    /**
+     * 接口调用失败的回调函数
+     */
+    type FileSystemManagerSaveFileFailCallback = (
+                result: SaveFileFailCallbackResult
+            ) => void;
+
+    interface FileSystemManagerSaveFileSuccessCallbackResult {
+        /**
+         * 存储后的文件路径 (本地路径)
+         */
+        savedFilePath: string;
+        errMsg: string;
+    }
+
+    /**
+     * 接口调用成功的回调函数
+     */
+    type FileSystemManagerSaveFileSuccessCallback = (
+                result: FileSystemManagerSaveFileSuccessCallbackResult
+            ) => void;
+
+    interface FileSystemManagerSaveFileOption {
+        /**
+         * 临时存储文件路径 (本地路径)
+         */
+        tempFilePath: string;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: SaveFileCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: FileSystemManagerSaveFileFailCallback;
+        /**
+         * 要存储的文件路径 (本地路径)
+         */
+        filePath?: string;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: FileSystemManagerSaveFileSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type StatCompleteCallback = (res: GeneralCallbackResult) => void;
+
+    interface StatFailCallbackResult {
+        /**
+         * 错误信息
+         *
+         * 可选值:
+         * - 'fail permission denied, open ${path}': 指定的 path 路径没有读权限;
+         * - 'fail no such file or directory ${path}': 文件不存在;
+         */
+        errMsg: string;
+    }
+
+    /**
+     * 接口调用失败的回调函数
+     */
+    type StatFailCallback = (result: StatFailCallbackResult) => void;
+
+    /**
+     * 描述文件状态的对象
+     */
+    interface Stats {
+        /**
+         * 文件最近一次被存取或被执行的时间,UNIX 时间戳,对应 POSIX stat.st_atime
+         */
+        lastAccessedTime: number;
+        /**
+         * 文件最后一次被修改的时间,UNIX 时间戳,对应 POSIX stat.st_mtime
+         */
+        lastModifiedTime: number;
+        /**
+         * 文件的类型和存取的权限,对应 POSIX stat.st_mode
+         */
+        mode: string;
+        /**
+         * 文件大小,单位:B,对应 POSIX stat.st_size
+         */
+        size: number;
+    }
+
+    interface StatSuccessCallbackResult {
+        /**
+         * [Stats](https://developers.weixin.qq.com/miniprogram/dev/api/file/Stats.html)|Object
+         *
+         * 当 recursive 为 false 时,res.stats 是一个 Stats 对象。当 recursive 为 true 且 path 是一个目录的路径时,res.stats 是一个 Object,key 以 path 为根路径的相对路径,value 是该路径对应的 Stats 对象。
+         */
+        stats: Record<string, any> | Stats;
+        errMsg: string;
+    }
+
+    /**
+     * 接口调用成功的回调函数
+     */
+    type StatSuccessCallback = (result: StatSuccessCallbackResult) => void;
+
+    interface StatOption {
+        /**
+         * 文件/目录路径 (本地路径)
+         */
+        path: string;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: StatCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: StatFailCallback;
+        /**
+         * 是否递归获取目录下的每个文件的 Stats 信息
+         *
+         * 最低基础库: `2.3.0`
+         */
+        recursive?: boolean;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: StatSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type UnlinkCompleteCallback = (res: GeneralCallbackResult) => void;
+
+    interface UnlinkFailCallbackResult {
+        /**
+         * 错误信息
+         *
+         * 可选值:
+         * - 'fail permission denied, open ${path}': 指定的 path 路径没有读权限;
+         * - 'fail no such file or directory ${path}': 文件不存在;
+         * - 'fail operation not permitted, unlink ${filePath}': 传入的 filePath 是一个目录;
+         */
+        errMsg: string;
+    }
+
+    /**
+     * 接口调用失败的回调函数
+     */
+    type UnlinkFailCallback = (result: UnlinkFailCallbackResult) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type UnlinkSuccessCallback = (res: GeneralCallbackResult) => void;
+
+    interface UnlinkOption {
+        /**
+         * 要删除的文件路径 (本地路径)
+         */
+        filePath: string;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: UnlinkCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: UnlinkFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: UnlinkSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type UnzipCompleteCallback = (res: GeneralCallbackResult) => void;
+
+    interface UnzipFailCallbackResult {
+        /**
+         * 错误信息
+         *
+         * 可选值:
+         * - 'fail permission denied, unzip ${zipFilePath} -> ${destPath}': 指定目标文件路径没有写权限;
+         * - 'fail no such file or directory, unzip ${zipFilePath} -> "${destPath}': 源文件不存在,或目标文件路径的上层目录不存在;
+         */
+        errMsg: string;
+    }
+
+    /**
+     * 接口调用失败的回调函数
+     */
+    type UnzipFailCallback = (result: UnzipFailCallbackResult) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type UnzipSuccessCallback = (res: GeneralCallbackResult) => void;
+
+    interface UnzipOption {
+        /**
+         * 目标目录路径, 支持本地路径
+         */
+        targetPath: string;
+        /**
+         * 源文件路径,支持本地路径, 只可以是 zip 压缩文件
+         */
+        zipFilePath: string;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: UnzipCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: UnzipFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: UnzipSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type WriteFileCompleteCallback = (res: GeneralCallbackResult) => void;
+
+    interface WriteFileFailCallbackResult {
+        /**
+         * 错误信息
+         *
+         * 可选值:
+         * - 'fail no such file or directory, open ${filePath}': 指定的 filePath 所在目录不存在;
+         * - 'fail permission denied, open ${dirPath}': 指定的 filePath 路径没有写权限;
+         * - 'fail the maximum size of the file storage limit is exceeded': 存储空间不足;
+         */
+        errMsg: string;
+    }
+
+    /**
+     * 接口调用失败的回调函数
+     */
+    type WriteFileFailCallback = (result: WriteFileFailCallbackResult) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type WriteFileSuccessCallback = (res: GeneralCallbackResult) => void;
+
+    interface WriteFileOption {
+        /**
+         * 要写入的文本或二进制数据
+         */
+        data: string | ArrayBuffer;
+        /**
+         * 要写入的文件路径 (本地路径)
+         */
+        filePath: string;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: WriteFileCompleteCallback;
+        /**
+         * 指定写入文件的字符编码
+         *
+         * 可选值:
+         * - 'ascii': ;
+         * - 'base64': ;
+         * - 'binary': ;
+         * - 'hex': ;
+         * - 'ucs2': 以小端序读取;
+         * - 'ucs-2': 以小端序读取;
+         * - 'utf16le': 以小端序读取;
+         * - 'utf-16le': 以小端序读取;
+         * - 'utf-8': ;
+         * - 'utf8': ;
+         * - 'latin1': ;
+         */
+        encoding?: "ascii" | "base64" | "binary" | "hex" | "ucs2" | "ucs-2" | "utf16le" | "utf-16le" | "utf-8" | "utf8" | "latin1";
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: WriteFileFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: WriteFileSuccessCallback;
+    }
+
+    interface FileSystemManager {
+        /**
+         *
+         * [FileSystemManager.readdir](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.readdir.html) 的同步版本
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.readdirSync.html](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.readdirSync.html)
+         */
+        readdirSync(dirPath: string): string[];
+        /**
+         *
+         * 判断文件/目录是否存在
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.access.html](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.access.html)
+         */
+        access(option: AccessOption): void;
+        /**
+         *
+         * [FileSystemManager.access](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.access.html) 的同步版本
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.accessSync.html](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.accessSync.html)
+         */
+        accessSync(path: string): void;
+        /**
+         *
+         * 在文件结尾追加内容
+         *
+         * 最低基础库: `2.1.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.appendFile.html](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.appendFile.html)
+         */
+        appendFile(option: AppendFileOption): void;
+        /**
+         *
+         * [FileSystemManager.appendFile](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.appendFile.html) 的同步版本
+         *
+         * 最低基础库: `2.1.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.appendFileSync.html](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.appendFileSync.html)
+         */
+        appendFileSync(filePath: string, data: string | ArrayBuffer, encoding?: "ascii" | "base64" | "binary" | "hex" | "ucs2" | "ucs-2" | "utf16le" | "utf-16le" | "utf-8" | "utf8" | "latin1"): void;
+        /**
+         *
+         * 复制文件
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.copyFile.html](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.copyFile.html)
+         */
+        copyFile(option: CopyFileOption): void;
+        /**
+         *
+         * [FileSystemManager.copyFile](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.copyFile.html) 的同步版本
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.copyFileSync.html](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.copyFileSync.html)
+         */
+        copyFileSync(srcPath: string, destPath: string): void;
+        /**
+         *
+         * 获取该小程序下的 本地临时文件 或 本地缓存文件 信息
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.getFileInfo.html](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.getFileInfo.html)
+         */
+        getFileInfo(option: FileSystemManagerGetFileInfoOption): void;
+        /**
+         *
+         * 获取该小程序下已保存的本地缓存文件列表
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.getSavedFileList.html](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.getSavedFileList.html)
+         */
+        getSavedFileList(option?: FileSystemManagerGetSavedFileListOption): void;
+        /**
+         *
+         * 创建目录
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.mkdir.html](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.mkdir.html)
+         */
+        mkdir(option: MkdirOption): void;
+        /**
+         *
+         * [FileSystemManager.mkdir](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.mkdir.html) 的同步版本
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.mkdirSync.html](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.mkdirSync.html)
+         */
+        mkdirSync(dirPath: string, recursive?: boolean): void;
+        /**
+         *
+         * 读取本地文件内容
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.readFile.html](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.readFile.html)
+         */
+        readFile(option: ReadFileOption): void;
+        /**
+         *
+         * 读取目录内文件列表
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.readdir.html](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.readdir.html)
+         */
+        readdir(option: ReaddirOption): void;
+        /**
+         *
+         * 删除该小程序下已保存的本地缓存文件
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.removeSavedFile.html](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.removeSavedFile.html)
+         */
+        removeSavedFile(option: FileSystemManagerRemoveSavedFileOption): void;
+        /**
+         *
+         * 重命名文件。可以把文件从 oldPath 移动到 newPath
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.rename.html](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.rename.html)
+         */
+        rename(option: RenameOption): void;
+        /**
+         *
+         * [FileSystemManager.rename](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.rename.html) 的同步版本
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.renameSync.html](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.renameSync.html)
+         */
+        renameSync(oldPath: string, newPath: string): void;
+        /**
+         *
+         * 删除目录
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.rmdir.html](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.rmdir.html)
+         */
+        rmdir(option: RmdirOption): void;
+        /**
+         *
+         * [FileSystemManager.rmdir](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.rmdir.html) 的同步版本
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.rmdirSync.html](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.rmdirSync.html)
+         */
+        rmdirSync(dirPath: string, recursive?: boolean): void;
+        /**
+         *
+         * 保存临时文件到本地。此接口会移动临时文件,因此调用成功后,tempFilePath 将不可用。
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.saveFile.html](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.saveFile.html)
+         */
+        saveFile(option: FileSystemManagerSaveFileOption): void;
+        /**
+         *
+         * 获取文件 Stats 对象
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.stat.html](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.stat.html)
+         */
+        stat(option: StatOption): void;
+        /**
+         *
+         * 删除文件
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.unlink.html](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.unlink.html)
+         */
+        unlink(option: UnlinkOption): void;
+        /**
+         *
+         * [FileSystemManager.unlink](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.unlink.html) 的同步版本
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.unlinkSync.html](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.unlinkSync.html)
+         */
+        unlinkSync(filePath: string): void;
+        /**
+         *
+         * 解压文件
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.unzip.html](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.unzip.html)
+         */
+        unzip(option: UnzipOption): void;
+        /**
+         *
+         * 写文件
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.writeFile.html](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.writeFile.html)
+         */
+        writeFile(option: WriteFileOption): void;
+        /**
+         *
+         * [FileSystemManager.writeFile](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.writeFile.html) 的同步版本
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.writeFileSync.html](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.writeFileSync.html)
+         */
+        writeFileSync(filePath: string, data: string | ArrayBuffer, encoding?: "ascii" | "base64" | "binary" | "hex" | "ucs2" | "ucs-2" | "utf16le" | "utf-16le" | "utf-8" | "utf8" | "latin1"): void;
+        /**
+         *
+         * [FileSystemManager.stat](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.stat.html) 的同步版本
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.statSync.html](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.statSync.html)
+         */
+        statSync(path: string, recursive?: boolean): Record<string, any> | Stats;
+        /**
+         *
+         * [FileSystemManager.saveFile](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.saveFile.html) 的同步版本
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.saveFileSync.html](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.saveFileSync.html)
+         */
+        saveFileSync(tempFilePath: string, filePath?: string): string;
+        /**
+         *
+         * [FileSystemManager.readFile](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.readFile.html) 的同步版本
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.readFileSync.html](https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.readFileSync.html)
+         */
+        readFileSync(filePath: string, encoding?: "ascii" | "base64" | "binary" | "hex" | "ucs2" | "ucs-2" | "utf16le" | "utf-16le" | "utf-8" | "utf8" | "latin1", position?: string, length?: string): string | ArrayBuffer;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type ExitFullScreenCompleteCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type ExitFullScreenFailCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type ExitFullScreenSuccessCallback = (res: GeneralCallbackResult) => void;
+
+    interface ExitFullScreenOption {
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: ExitFullScreenCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: ExitFullScreenFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: ExitFullScreenSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type ExitPictureInPictureCompleteCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type ExitPictureInPictureFailCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type ExitPictureInPictureSuccessCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+
+    interface ExitPictureInPictureOption {
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: ExitPictureInPictureCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: ExitPictureInPictureFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: ExitPictureInPictureSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type MuteCompleteCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type MuteFailCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type MuteSuccessCallback = (res: GeneralCallbackResult) => void;
+
+    interface MuteOption {
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: MuteCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: MuteFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: MuteSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type PauseCompleteCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type PauseFailCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type PauseSuccessCallback = (res: GeneralCallbackResult) => void;
+
+    interface PauseOption {
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: PauseCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: PauseFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: PauseSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type PlayCompleteCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type PlayFailCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type PlaySuccessCallback = (res: GeneralCallbackResult) => void;
+
+    interface PlayOption {
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: PlayCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: PlayFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: PlaySuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type RequestFullScreenCompleteCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type RequestFullScreenFailCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type RequestFullScreenSuccessCallback = (res: GeneralCallbackResult) => void;
+
+    interface LivePlayerContextRequestFullScreenOption {
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: RequestFullScreenCompleteCallback;
+        /**
+         * 设置全屏时的方向
+         *
+         * 可选值:
+         * - 0: 正常竖向;
+         * - 90: 屏幕逆时针90度;
+         * - -90: 屏幕顺时针90度;
+         */
+        direction?: 0 | 90 | -90;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: RequestFullScreenFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: RequestFullScreenSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type ResumeCompleteCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type ResumeFailCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type ResumeSuccessCallback = (res: GeneralCallbackResult) => void;
+
+    interface ResumeOption {
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: ResumeCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: ResumeFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: ResumeSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type StopCompleteCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type StopFailCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type StopSuccessCallback = (res: GeneralCallbackResult) => void;
+
+    interface StopOption {
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: StopCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: StopFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: StopSuccessCallback;
+    }
+
+    interface LivePlayerContext {
+        /**
+         *
+         * 退出全屏
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePlayerContext.exitFullScreen.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePlayerContext.exitFullScreen.html)
+         */
+        exitFullScreen(option?: ExitFullScreenOption): void;
+        /**
+         *
+         * 退出小窗,该方法可在任意页面调用
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePlayerContext.exitPictureInPicture.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePlayerContext.exitPictureInPicture.html)
+         */
+        exitPictureInPicture(option?: ExitPictureInPictureOption): void;
+        /**
+         *
+         * 静音
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePlayerContext.mute.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePlayerContext.mute.html)
+         */
+        mute(option?: MuteOption): void;
+        /**
+         *
+         * 暂停
+         *
+         * 最低基础库: `1.9.90`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePlayerContext.pause.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePlayerContext.pause.html)
+         */
+        pause(option?: PauseOption): void;
+        /**
+         *
+         * 播放
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePlayerContext.play.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePlayerContext.play.html)
+         */
+        play(option?: PlayOption): void;
+        /**
+         *
+         * 进入全屏
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePlayerContext.requestFullScreen.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePlayerContext.requestFullScreen.html)
+         */
+        requestFullScreen(option: LivePlayerContextRequestFullScreenOption): void;
+        /**
+         *
+         * 恢复
+         *
+         * 最低基础库: `1.9.90`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePlayerContext.resume.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePlayerContext.resume.html)
+         */
+        resume(option?: ResumeOption): void;
+        /**
+         *
+         * 截图
+         *
+         * 最低基础库: `2.7.1`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePlayerContext.snapshot.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePlayerContext.snapshot.html)
+         */
+        snapshot(quality?: string): void;
+        /**
+         *
+         * 停止
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePlayerContext.stop.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/live/LivePlayerContext.stop.html)
+         */
+        stop(option?: StopOption): void;
+    }
+
+    interface GetLogManagerOption {
+        /**
+         * 取值为0/1,取值为0表示是否会把 `App`、`Page` 的生命周期函数和 uni 命名空间下的函数调用写入日志,取值为1则不会。默认值是 0
+         *
+         * 最低基础库: `2.3.2`
+         */
+        level?: number;
+    }
+
+    interface LogManager {
+        /**
+         *
+         * 写 debug 日志
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/LogManager.debug.html](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/LogManager.debug.html)
+         */
+        debug(args: any[]): void;
+        /**
+         *
+         * 写 info 日志
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/LogManager.info.html](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/LogManager.info.html)
+         */
+        info(args: any[]): void;
+        /**
+         *
+         * 写 log 日志
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/LogManager.log.html](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/LogManager.log.html)
+         */
+        log(args: any[]): void;
+        /**
+         *
+         * 写 warn 日志
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/LogManager.warn.html](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/LogManager.warn.html)
+         */
+        warn(args: any[]): void;
+    }
+
+    /**
+     * 可通过 [MediaContainer.extractDataSource](https://developers.weixin.qq.com/miniprogram/dev/api/media/video-processing/MediaContainer.extractDataSource.html) 返回。
+     *
+     * [MediaTrack](https://developers.weixin.qq.com/miniprogram/dev/api/media/video-processing/MediaTrack.html) 音频或视频轨道,可以对轨道进行一些操作
+     *
+     * 最低基础库: `2.9.0`
+     */
+    interface MediaTrack {
+        /**
+         * 轨道长度,只读
+         */
+        duration: number;
+        /**
+         * 轨道类型,只读
+         *
+         * 可选值:
+         * - 'audio': 音频轨道;
+         * - 'video': 视频轨道;
+         */
+        kind: "audio" | "video";
+        /**
+         * 音量,音频轨道下有效,可写
+         */
+        volume: number;
+    }
+
+    interface ExtractDataSourceOption {
+        /**
+         * 视频源地址,只支持本地文件
+         */
+        source: string;
+    }
+
+    interface MediaContainer {
+        /**
+         *
+         * 将音频或视频轨道添加到容器
+         *
+         * 最低基础库: `2.9.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/video-processing/MediaContainer.addTrack.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/video-processing/MediaContainer.addTrack.html)
+         */
+        addTrack(track: MediaTrack): void;
+        /**
+         *
+         * 将容器销毁,释放资源
+         *
+         * 最低基础库: `2.9.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/video-processing/MediaContainer.destroy.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/video-processing/MediaContainer.destroy.html)
+         */
+        destroy(): void;
+        /**
+         *
+         * 将容器内的轨道合并并导出视频文件
+         *
+         * 最低基础库: `2.9.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/video-processing/MediaContainer.export.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/video-processing/MediaContainer.export.html)
+         */
+        export(): void;
+        /**
+         *
+         * 将传入的视频源分离轨道。不会自动将轨道添加到待合成的容器里。
+         *
+         * 最低基础库: `2.9.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/video-processing/MediaContainer.extractDataSource.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/video-processing/MediaContainer.extractDataSource.html)
+         */
+        extractDataSource(option: ExtractDataSourceOption): void;
+        /**
+         *
+         * 将音频或视频轨道从容器中移除
+         *
+         * 最低基础库: `2.9.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/video-processing/MediaContainer.removeTrack.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/video-processing/MediaContainer.removeTrack.html)
+         */
+        removeTrack(track: MediaTrack): void;
+    }
+
+    interface CreateMediaRecorderOption {
+        /**
+         * 指定录制的时长(s),到达自动停止。最大 7200,最小 5
+         */
+        duration?: number;
+        /**
+         * 视频 fps
+         */
+        fps?: number;
+        /**
+         * 视频关键帧间隔
+         */
+        gop?: number;
+        /**
+         * 视频比特率(kbps),最小值 600,最大值 3000
+         */
+        videoBitsPerSecond?: number;
+    }
+
+    interface MediaRecorder {
+        /**
+         *
+         * 销毁录制器
+         *
+         * 最低基础库: `2.11.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/media-recorder/MediaRecorder.destroy.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/media-recorder/MediaRecorder.destroy.html)
+         */
+        destroy(): void;
+        /**
+         *
+         * 取消监听录制事件。当对应事件触发时,该回调函数不再执行。
+         *
+         * 最低基础库: `2.11.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/media-recorder/MediaRecorder.off.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/media-recorder/MediaRecorder.off.html)
+         */
+        off(eventName: string, callback: (...args: any[]) => any): void;
+        /**
+         *
+         * 注册监听录制事件的回调函数。当对应事件触发时,回调函数会被执行。
+         *
+         * 最低基础库: `2.11.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/media-recorder/MediaRecorder.on.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/media-recorder/MediaRecorder.on.html)
+         */
+        on(eventName: "start" | "stop", callback: (...args: any[]) => any): void;
+        /**
+         *
+         * 暂停录制
+         *
+         * 最低基础库: `2.11.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/media-recorder/MediaRecorder.pause.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/media-recorder/MediaRecorder.pause.html)
+         */
+        pause(): void;
+        /**
+         *
+         * 请求下一帧录制,在 callback 里完成一帧渲染后开始录制当前帧
+         *
+         * 最低基础库: `2.11.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/media-recorder/MediaRecorder.requestFrame.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/media-recorder/MediaRecorder.requestFrame.html)
+         */
+        requestFrame(callback: (...args: any[]) => any): void;
+        /**
+         *
+         * 恢复录制
+         *
+         * 最低基础库: `2.11.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/media-recorder/MediaRecorder.resume.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/media-recorder/MediaRecorder.resume.html)
+         */
+        resume(): void;
+        /**
+         *
+         * 开始录制
+         *
+         * 最低基础库: `2.11.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/media-recorder/MediaRecorder.start.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/media-recorder/MediaRecorder.start.html)
+         */
+        start(): void;
+        /**
+         *
+         * 结束录制
+         *
+         * 最低基础库: `2.11.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/media-recorder/MediaRecorder.stop.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/media-recorder/MediaRecorder.stop.html)
+         */
+        stop(): void;
+    }
+
+    /**
+     * 标签类型枚举
+     */
+    interface TechType {
+        /**
+         * 对应IsoDep实例,实例支持ISO-DEP (ISO 14443-4)标准的读写
+         */
+        isoDep: string;
+        /**
+         * 对应MifareClassic实例,实例支持MIFARE Classic标签的读写
+         */
+        mifareClassic: string;
+        /**
+         * 对应MifareUltralight实例,实例支持MIFARE Ultralight标签的读写
+         */
+        mifareUltralight: string;
+        /**
+         * 对应Ndef实例,实例支持对NDEF格式的NFC标签上的NDEF数据的读写
+         */
+        ndef: string;
+        /**
+         * 对应NfcA实例,实例支持NFC-A (ISO 14443-3A)标准的读写
+         */
+        nfcA: string;
+        /**
+         * 对应NfcB实例,实例支持NFC-B (ISO 14443-3B)标准的读写
+         */
+        nfcB: string;
+        /**
+         * 对应NfcF实例,实例支持NFC-F (JIS 6319-4)标准的读写
+         */
+        nfcF: string;
+        /**
+         * 对应NfcV实例,实例支持NFC-V (ISO 15693)标准的读写
+         */
+        nfcV: string;
+    }
+
+    /**
+     * 最低基础库: `2.11.2`
+     */
+    interface NFCAdapter {
+        /**
+         * 标签类型枚举
+         */
+        tech: TechType;
+    }
+
+    interface OffscreenCanvas {
+        /**
+         *
+         * 该方法返回 OffscreenCanvas 的绘图上下文
+         *
+         * ****
+         *
+         * 当前仅支持获取 WebGL 绘图上下文
+         *
+         * 最低基础库: `2.7.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/canvas/OffscreenCanvas.getContext.html](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/OffscreenCanvas.getContext.html)
+         */
+        getContext(contextType: string): any;
+    }
+
+    interface RealtimeLogManager {
+        /**
+         *
+         * 添加过滤关键字
+         *
+         * 最低基础库: `2.8.1`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/RealtimeLogManager.addFilterMsg.html](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/RealtimeLogManager.addFilterMsg.html)
+         */
+        addFilterMsg(msg: string): void;
+        /**
+         *
+         * 写 error 日志
+         *
+         * 最低基础库: `2.7.1`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/RealtimeLogManager.error.html](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/RealtimeLogManager.error.html)
+         */
+        error(args: any[]): void;
+        /**
+         *
+         * 设置实时日志page参数所在的页面
+         *
+         * 最低基础库: `2.9.1`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/RealtimeLogManager.in.html](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/RealtimeLogManager.in.html)
+         */
+        in(pageInstance: any): void;
+        /**
+         *
+         * 写 info 日志
+         *
+         * 最低基础库: `2.7.1`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/RealtimeLogManager.info.html](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/RealtimeLogManager.info.html)
+         */
+        info(args: any[]): void;
+        /**
+         *
+         * 设置过滤关键字
+         *
+         * 最低基础库: `2.7.3`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/RealtimeLogManager.setFilterMsg.html](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/RealtimeLogManager.setFilterMsg.html)
+         */
+        setFilterMsg(msg: string): void;
+        /**
+         *
+         * 写 warn 日志
+         *
+         * 最低基础库: `2.7.1`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/RealtimeLogManager.warn.html](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/RealtimeLogManager.warn.html)
+         */
+        warn(args: any[]): void;
+    }
+
+    type OffCloseCallback = (res: GeneralCallbackResult) => void;
+    type OffErrorCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 开始监听数据包消息的事件的回调函数
+     */
+    type OffListeningCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 收到消息的事件的回调函数
+     */
+    type OffMessageCallback = (res: GeneralCallbackResult) => void;
+    type UDPSocketOnCloseCallback = (res: GeneralCallbackResult) => void;
+
+    interface UDPSocketOnErrorCallbackResult {
+        /**
+         * 错误信息
+         */
+        errMsg: string;
+    }
+
+    type UDPSocketOnErrorCallback = (
+                result: UDPSocketOnErrorCallbackResult
+            ) => void;
+    /**
+     * 开始监听数据包消息的事件的回调函数
+     */
+    type OnListeningCallback = (res: GeneralCallbackResult) => void;
+
+    /**
+     * 消息来源的结构化信息
+     */
+    interface RemoteInfo {
+        /**
+         * 发送消息的 socket 的地址
+         */
+        address: string;
+        /**
+         * 使用的协议族,为 IPv4 或者 IPv6
+         */
+        family: string;
+        /**
+         * 端口号
+         */
+        port: number;
+        /**
+         * message 的大小,单位:字节
+         */
+        size: number;
+    }
+
+    interface UDPSocketOnMessageCallbackResult {
+        /**
+         * 收到的消息
+         */
+        message: ArrayBuffer;
+        /**
+         * 消息来源的结构化信息
+         */
+        remoteInfo: RemoteInfo;
+    }
+
+    /**
+     * 收到消息的事件的回调函数
+     */
+    type UDPSocketOnMessageCallback = (
+                result: UDPSocketOnMessageCallbackResult
+            ) => void;
+
+    interface UDPSocketSendOption {
+        /**
+         * 要发消息的地址。在基础库 2.9.3 及之前版本可以是一个和本机同网段的 IP 地址,也可以是在安全域名列表内的域名地址;在基础库 2.9.4 及之后版本,可以是任意 IP 和域名
+         */
+        address: string;
+        /**
+         * 要发送的数据
+         */
+        message: string | ArrayBuffer;
+        /**
+         * 要发送消息的端口号
+         */
+        port: number;
+        /**
+         * 发送数据的长度,仅当 message 为 ArrayBuffer 类型时有效
+         */
+        length?: number;
+        /**
+         * 发送数据的偏移量,仅当 message 为 ArrayBuffer 类型时有效
+         */
+        offset?: number;
+    }
+
+    interface UDPSocket {
+        /**
+         *
+         * 关闭 UDP Socket 实例,相当于销毁。 在关闭之后,UDP Socket 实例不能再发送消息,每次调用 `UDPSocket.send` 将会触发错误事件,并且 message 事件回调函数也不会再也执行。在 `UDPSocket` 实例被创建后将被 Native 强引用,保证其不被 GC。在 `UDPSocket.close` 后将解除对其的强引用,让 UDPSocket 实例遵从 GC。
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/network/udp/UDPSocket.close.html](https://developers.weixin.qq.com/miniprogram/dev/api/network/udp/UDPSocket.close.html)
+         */
+        close(): void;
+        /**
+         *
+         * 取消监听关闭事件
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/network/udp/UDPSocket.offClose.html](https://developers.weixin.qq.com/miniprogram/dev/api/network/udp/UDPSocket.offClose.html)
+         */
+        offClose(callback: OffCloseCallback): void;
+        /**
+         *
+         * 取消监听错误事件
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/network/udp/UDPSocket.offError.html](https://developers.weixin.qq.com/miniprogram/dev/api/network/udp/UDPSocket.offError.html)
+         */
+        offError(callback: OffErrorCallback): void;
+        /**
+         *
+         * 取消监听开始监听数据包消息的事件
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/network/udp/UDPSocket.offListening.html](https://developers.weixin.qq.com/miniprogram/dev/api/network/udp/UDPSocket.offListening.html)
+         */
+        offListening(callback: OffListeningCallback): void;
+        /**
+         *
+         * 取消监听收到消息的事件
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/network/udp/UDPSocket.offMessage.html](https://developers.weixin.qq.com/miniprogram/dev/api/network/udp/UDPSocket.offMessage.html)
+         */
+        offMessage(callback: OffMessageCallback): void;
+        /**
+         *
+         * 监听关闭事件
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/network/udp/UDPSocket.onClose.html](https://developers.weixin.qq.com/miniprogram/dev/api/network/udp/UDPSocket.onClose.html)
+         */
+        onClose(callback: UDPSocketOnCloseCallback): void;
+        /**
+         *
+         * 监听错误事件
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/network/udp/UDPSocket.onError.html](https://developers.weixin.qq.com/miniprogram/dev/api/network/udp/UDPSocket.onError.html)
+         */
+        onError(callback: UDPSocketOnErrorCallback): void;
+        /**
+         *
+         * 监听开始监听数据包消息的事件
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/network/udp/UDPSocket.onListening.html](https://developers.weixin.qq.com/miniprogram/dev/api/network/udp/UDPSocket.onListening.html)
+         */
+        onListening(callback: OnListeningCallback): void;
+        /**
+         *
+         * 监听收到消息的事件
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/network/udp/UDPSocket.onMessage.html](https://developers.weixin.qq.com/miniprogram/dev/api/network/udp/UDPSocket.onMessage.html)
+         */
+        onMessage(callback: UDPSocketOnMessageCallback): void;
+        /**
+         *
+         * 向指定的 IP 和 port 发送消息
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/network/udp/UDPSocket.send.html](https://developers.weixin.qq.com/miniprogram/dev/api/network/udp/UDPSocket.send.html)
+         */
+        send(option: UDPSocketSendOption): void;
+        /**
+         *
+         * 绑定一个系统随机分配的可用端口,或绑定一个指定的端口号
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/network/udp/UDPSocket.bind.html](https://developers.weixin.qq.com/miniprogram/dev/api/network/udp/UDPSocket.bind.html)
+         */
+        bind(port?: number): number;
+    }
+
+    /**
+     * 视频帧数据,若取不到则返回 null。当缓冲区为空的时候可能暂停取不到数据。
+     */
+    interface FrameDataOptions {
+        /**
+         * 帧数据
+         */
+        data: ArrayBuffer;
+        /**
+         * 帧数据高度
+         */
+        height: number;
+        /**
+         * 帧原始 dts
+         */
+        pkDts: number;
+        /**
+         * 帧原始 pts
+         */
+        pkPts: number;
+        /**
+         * 帧数据宽度
+         */
+        width: number;
+    }
+
+    interface VideoDecoderStartOption {
+        /**
+         * 需要解码的视频源文件,只支持本地路径
+         */
+        source: string;
+        /**
+         * 解码模式。0:按 pts 解码;1:以最快速度解码
+         */
+        mode?: number;
+    }
+
+    interface VideoDecoder {
+        /**
+         *
+         * 获取下一帧的解码数据
+         *
+         * 最低基础库: `2.11.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/video-decoder/VideoDecoder.getFrameData.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/video-decoder/VideoDecoder.getFrameData.html)
+         */
+        getFrameData(): FrameDataOptions;
+        /**
+         *
+         * 取消监听录制事件。当对应事件触发时,该回调函数不再执行
+         *
+         * 最低基础库: `2.11.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/video-decoder/VideoDecoder.off.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/video-decoder/VideoDecoder.off.html)
+         */
+        off(eventName: string, callback: (...args: any[]) => any): void;
+        /**
+         *
+         * 注册监听录制事件的回调函数。当对应事件触发时,回调函数会被执行
+         *
+         * 最低基础库: `2.11.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/video-decoder/VideoDecoder.on.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/video-decoder/VideoDecoder.on.html)
+         */
+        on(eventName: "start" | "stop" | "seek" | "bufferchange" | "ended", callback: (...args: any[]) => any): void;
+        /**
+         *
+         * 移除解码器
+         *
+         * 最低基础库: `2.11.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/video-decoder/VideoDecoder.remove.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/video-decoder/VideoDecoder.remove.html)
+         */
+        remove(): void;
+        /**
+         *
+         * 跳到某个时间点解码
+         *
+         * 最低基础库: `2.11.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/video-decoder/VideoDecoder.seek.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/video-decoder/VideoDecoder.seek.html)
+         */
+        seek(position: number): void;
+        /**
+         *
+         * 开始解码
+         *
+         * 最低基础库: `2.11.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/video-decoder/VideoDecoder.start.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/video-decoder/VideoDecoder.start.html)
+         */
+        start(option: VideoDecoderStartOption): void;
+        /**
+         *
+         * 停止解码
+         *
+         * 最低基础库: `2.11.0`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/media/video-decoder/VideoDecoder.stop.html](https://developers.weixin.qq.com/miniprogram/dev/api/media/video-decoder/VideoDecoder.stop.html)
+         */
+        stop(): void;
+    }
+
+    /**
+     * 需要添加的卡券列表
+     */
+    interface AddCardRequestInfo {
+        /**
+         * 卡券的扩展参数。需将 CardExt 对象 JSON 序列化为**字符串**传入
+         */
+        cardExt: string;
+        /**
+         * 卡券 ID
+         */
+        cardId: string;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type AddCardCompleteCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type AddCardFailCallback = (res: GeneralCallbackResult) => void;
+
+    /**
+     * 卡券添加结果列表
+     */
+    interface AddCardResponseInfo {
+        /**
+         * 卡券的扩展参数,结构请参考下文
+         */
+        cardExt: string;
+        /**
+         * 用户领取到卡券的 ID
+         */
+        cardId: string;
+        /**
+         * 加密 code,为用户领取到卡券的code加密后的字符串,解密请参照:[code 解码接口](https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1499332673_Unm7V)
+         */
+        code: string;
+        /**
+         * 是否成功
+         */
+        isSuccess: boolean;
+    }
+
+    interface AddCardSuccessCallbackResult {
+        /**
+         * 卡券添加结果列表
+         */
+        cardList: AddCardResponseInfo[];
+        errMsg: string;
+    }
+
+    /**
+     * 接口调用成功的回调函数
+     */
+    type AddCardSuccessCallback = (result: AddCardSuccessCallbackResult) => void;
+
+    interface AddCardOption {
+        /**
+         * 需要添加的卡券列表
+         */
+        cardList: AddCardRequestInfo[];
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: AddCardCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: AddCardFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: AddCardSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type ChooseInvoiceCompleteCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type ChooseInvoiceFailCallback = (res: GeneralCallbackResult) => void;
+
+    interface ChooseInvoiceSuccessCallbackResult {
+        /**
+         * 用户选中的发票信息,格式为一个 JSON 字符串,包含三个字段: card_id:所选发票卡券的 cardId,encrypt_code:所选发票卡券的加密 code,报销方可以通过 cardId 和 encryptCode 获得报销发票的信息,app_id: 发票方的 appId。
+         */
+        invoiceInfo: string;
+        errMsg: string;
+    }
+
+    /**
+     * 接口调用成功的回调函数
+     */
+    type ChooseInvoiceSuccessCallback = (
+                result: ChooseInvoiceSuccessCallbackResult
+            ) => void;
+
+    interface ChooseInvoiceOption {
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: ChooseInvoiceCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: ChooseInvoiceFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: ChooseInvoiceSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type ChooseMediaCompleteCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type ChooseMediaFailCallback = (res: GeneralCallbackResult) => void;
+
+    /**
+     * 本地临时文件列表
+     */
+    interface MediaFile {
+        /**
+         * 视频的时间长度
+         */
+        duration: number;
+        /**
+         * 视频的高度
+         */
+        height: number;
+        /**
+         * 本地临时文件大小,单位 B
+         */
+        size: number;
+        /**
+         * 本地临时文件路径 (本地路径)
+         */
+        tempFilePath: string;
+        /**
+         * 视频缩略图临时文件路径
+         */
+        thumbTempFilePath: string;
+        /**
+         * 视频的宽度
+         */
+        width: number;
+    }
+
+    interface ChooseMediaSuccessCallbackResult {
+        /**
+         * 本地临时文件列表
+         */
+        tempFiles: MediaFile[];
+        /**
+         * 文件类型,有效值有 image 、video
+         */
+        type: string;
+        errMsg: string;
+    }
+
+    /**
+     * 接口调用成功的回调函数
+     */
+    type ChooseMediaSuccessCallback = (
+                result: ChooseMediaSuccessCallbackResult
+            ) => void;
+
+    interface ChooseMediaOption {
+        /**
+         * 仅在 sourceType 为 camera 时生效,使用前置或后置摄像头
+         *
+         * 可选值:
+         * - 'back': 使用后置摄像头;
+         * - 'front': 使用前置摄像头;
+         */
+        camera?: "back" | "front";
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: ChooseMediaCompleteCallback;
+        /**
+         * 最多可以选择的文件个数
+         */
+        count?: number;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: ChooseMediaFailCallback;
+        /**
+         * 拍摄视频最长拍摄时间,单位秒。时间范围为 3s 至 30s 之间
+         */
+        maxDuration?: number;
+        /**
+         * 文件类型
+         *
+         * 可选值:
+         * - 'image': 只能拍摄图片或从相册选择图片;
+         * - 'video': 只能拍摄视频或从相册选择视频;
+         */
+        mediaType?: ("video" | "image")[];
+        /**
+         * 仅对 mediaType 为 image 时有效,是否压缩所选文件
+         */
+        sizeType?: string[];
+        /**
+         * 图片和视频选择的来源
+         *
+         * 可选值:
+         * - 'album': 从相册选择;
+         * - 'camera': 使用相机拍摄;
+         */
+        sourceType?: ("album" | "camera")[];
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: ChooseMediaSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type ChooseMessageFileCompleteCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type ChooseMessageFileFailCallback = (res: GeneralCallbackResult) => void;
+
+    /**
+     * 返回选择的文件的本地临时文件对象数组
+     */
+    interface ChooseFile {
+        /**
+         * 选择的文件名称
+         */
+        name: string;
+        /**
+         * 本地临时文件路径 (本地路径)
+         */
+        path: string;
+        /**
+         * 本地临时文件大小,单位 B
+         */
+        size: number;
+        /**
+         * 选择的文件的会话发送时间,Unix时间戳,工具暂不支持此属性
+         */
+        time: number;
+        /**
+         * 选择的文件类型
+         *
+         * 可选值:
+         * - 'video': 选择了视频文件;
+         * - 'image': 选择了图片文件;
+         * - 'file': 选择了除图片和视频的文件;
+         */
+        type: "video" | "image" | "file";
+    }
+
+    interface ChooseMessageFileSuccessCallbackResult {
+        /**
+         * 返回选择的文件的本地临时文件对象数组
+         */
+        tempFiles: ChooseFile[];
+        errMsg: string;
+    }
+
+    /**
+     * 接口调用成功的回调函数
+     */
+    type ChooseMessageFileSuccessCallback = (
+                result: ChooseMessageFileSuccessCallbackResult
+            ) => void;
+
+    interface ChooseMessageFileOption {
+        /**
+         * 最多可以选择的文件个数,可以 0~100
+         */
+        count: number;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: ChooseMessageFileCompleteCallback;
+        /**
+         * 根据文件拓展名过滤,仅 type==file 时有效。每一项都不能是空字符串。默认不过滤。
+         *
+         * 最低基础库: `2.6.0`
+         */
+        extension?: string[];
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: ChooseMessageFileFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: ChooseMessageFileSuccessCallback;
+        /**
+         * 所选的文件的类型
+         *
+         * 可选值:
+         * - 'all': 从所有文件选择;
+         * - 'video': 只能选择视频文件;
+         * - 'image': 只能选择图片文件;
+         * - 'file': 可以选择除了图片和视频之外的其它的文件;
+         */
+        type?: "video" | "image" | "file" | "all";
+    }
+
+    interface WifiError {
+        /**
+         * 错误信息
+         *
+         * | 错误码 | 错误信息 | 说明 |
+         * | - | - | - |
+         * | 0 | ok | 正常 |
+         * | 12000 | not init | 未先调用 `startWifi` 接口 |
+         * | 12001 | system not support | 当前系统不支持相关能力 |
+         * | 12002 | password error Wi-Fi | 密码错误 |
+         * | 12003 | connection timeout | 连接超时 |
+         * | 12004 | duplicate request | 重复连接 Wi-Fi |
+         * | 12005 | wifi not turned on | Android 特有,未打开 Wi-Fi 开关 |
+         * | 12006 | gps not turned on | Android 特有,未打开 GPS 定位开关 |
+         * | 12007 | user denied | 用户拒绝授权链接 Wi-Fi |
+         * | 12008 | invalid SSID | 无效 SSID |
+         * | 12009 | system config err | 系统运营商配置拒绝连接 Wi-Fi |
+         * | 12010 | system internal error | 系统其他错误,需要在 errmsg 打印具体的错误原因 |
+         * | 12011 | weapp in background | 应用在后台无法配置 Wi-Fi |
+         * | 12013 | wifi config may be expired | 系统保存的 Wi-Fi 配置过期,建议忘记 Wi-Fi 后重试 |
+         */
+        errMsg: string;
+        /**
+         * 错误码
+         *
+         * | 错误码 | 错误信息 | 说明 |
+         * | - | - | - |
+         * | 0 | ok | 正常 |
+         * | 12000 | not init | 未先调用 `startWifi` 接口 |
+         * | 12001 | system not support | 当前系统不支持相关能力 |
+         * | 12002 | password error Wi-Fi | 密码错误 |
+         * | 12003 | connection timeout | 连接超时 |
+         * | 12004 | duplicate request | 重复连接 Wi-Fi |
+         * | 12005 | wifi not turned on | Android 特有,未打开 Wi-Fi 开关 |
+         * | 12006 | gps not turned on | Android 特有,未打开 GPS 定位开关 |
+         * | 12007 | user denied | 用户拒绝授权链接 Wi-Fi |
+         * | 12008 | invalid SSID | 无效 SSID |
+         * | 12009 | system config err | 系统运营商配置拒绝连接 Wi-Fi |
+         * | 12010 | system internal error | 系统其他错误,需要在 errmsg 打印具体的错误原因 |
+         * | 12011 | weapp in background | 应用在后台无法配置 Wi-Fi |
+         * | 12013 | wifi config may be expired | 系统保存的 Wi-Fi 配置过期,建议忘记 Wi-Fi 后重试 |
+         */
+        errCode: number;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type ConnectWifiCompleteCallback = (res: WifiError) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type ConnectWifiFailCallback = (res: WifiError) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type ConnectWifiSuccessCallback = (res: WifiError) => void;
+
+    interface ConnectWifiOption {
+        /**
+         * Wi-Fi 设备 SSID
+         */
+        SSID: string;
+        /**
+         * Wi-Fi 设备密码
+         */
+        password: string;
+        /**
+         * Wi-Fi 设备 BSSID
+         */
+        BSSID?: string;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: ConnectWifiCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: ConnectWifiFailCallback;
+        /**
+         * 跳转到系统设置页进行连接,仅安卓生效
+         *
+         * 最低基础库: `2.12.0`
+         */
+        maunal?: boolean;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: ConnectWifiSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type CreateBLEPeripheralServerCompleteCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type CreateBLEPeripheralServerFailCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+
+    /**
+     * 描述符的权限
+     */
+    interface DescriptorPermission {
+        /**
+         * 读
+         */
+        read?: boolean;
+        /**
+         * 写
+         */
+        write?: boolean;
+    }
+
+    /**
+     * 描述符数据
+     */
+    interface CharacteristicDescriptor {
+        /**
+         * Descriptor 的 uuid
+         */
+        uuid: string;
+        /**
+         * 描述符的权限
+         */
+        permission?: DescriptorPermission;
+        /**
+         * 描述符数据
+         */
+        value?: ArrayBuffer;
+    }
+
+    /**
+     * 特征值权限
+     */
+    interface CharacteristicPermission {
+        /**
+         * 加密读请求
+         */
+        readEncryptionRequired?: boolean;
+        /**
+         * 可读
+         */
+        readable?: boolean;
+        /**
+         * 加密写请求
+         */
+        writeEncryptionRequired?: boolean;
+        /**
+         * 可写
+         */
+        writeable?: boolean;
+    }
+
+    /**
+     * 特征值支持的操作
+     */
+    interface CharacteristicProperties {
+        /**
+         * 回包
+         */
+        indicate?: boolean;
+        /**
+         * 订阅
+         */
+        notify?: boolean;
+        /**
+         * 读
+         */
+        read?: boolean;
+        /**
+         * 写
+         */
+        write?: boolean;
+    }
+
+    /**
+     * characteristics列表
+     */
+    interface Characteristic {
+        /**
+         * Characteristic 的 uuid
+         */
+        uuid: string;
+        /**
+         * 描述符数据
+         */
+        descriptors?: CharacteristicDescriptor[];
+        /**
+         * 特征值权限
+         */
+        permission?: CharacteristicPermission;
+        /**
+         * 特征值支持的操作
+         */
+        properties?: CharacteristicProperties;
+        /**
+         * 特征值对应的二进制值
+         */
+        value?: ArrayBuffer;
+    }
+
+    /**
+     * 描述service的Object
+     */
+    interface BLEPeripheralService {
+        /**
+         * characteristics列表
+         */
+        characteristics: Characteristic[];
+        /**
+         * service 的 uuid
+         */
+        uuid: string;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type AddServiceCompleteCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type AddServiceFailCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type AddServiceSuccessCallback = (res: GeneralCallbackResult) => void;
+
+    interface AddServiceOption {
+        /**
+         * 描述service的Object
+         */
+        service: BLEPeripheralService;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: AddServiceCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: AddServiceFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: AddServiceSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type CloseCompleteCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type CloseFailCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type CloseSuccessCallback = (res: GeneralCallbackResult) => void;
+
+    interface NdefCloseOption {
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: CloseCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: CloseFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: CloseSuccessCallback;
+    }
+
+    /**
+     * 已连接的设备请求读当前外围设备的特征值事件的回调函数
+     */
+    type OffCharacteristicReadRequestCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+    /**
+     * 已连接的设备请求写当前外围设备的特征值事件的回调函数
+     */
+    type OffCharacteristicWriteRequestCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+
+    interface OnCharacteristicReadRequestCallbackResult {
+        /**
+         * 唯一标识码,调用 writeCharacteristicValue 时使用
+         */
+        callbackId: number;
+        /**
+         * characteristic对应的uuid
+         */
+        characteristicId: string;
+        /**
+         * service对应的uuid
+         */
+        serviceId: string;
+    }
+
+    /**
+     * 已连接的设备请求读当前外围设备的特征值事件的回调函数
+     */
+    type OnCharacteristicReadRequestCallback = (
+                result: OnCharacteristicReadRequestCallbackResult
+            ) => void;
+
+    interface OnCharacteristicWriteRequestCallbackResult {
+        /**
+         * 唯一标识码,调用 writeCharacteristicValue 时使用
+         */
+        callbackId: number;
+        /**
+         * characteristic对应的uuid
+         */
+        characteristicId: string;
+        /**
+         * service对应的uuid
+         */
+        serviceId: string;
+        /**
+         * 请求写入的特征值数据
+         */
+        value: ArrayBuffer;
+    }
+
+    /**
+     * 已连接的设备请求写当前外围设备的特征值事件的回调函数
+     */
+    type OnCharacteristicWriteRequestCallback = (
+                result: OnCharacteristicWriteRequestCallbackResult
+            ) => void;
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type RemoveServiceCompleteCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type RemoveServiceFailCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type RemoveServiceSuccessCallback = (res: GeneralCallbackResult) => void;
+
+    interface RemoveServiceOption {
+        /**
+         * service 的 uuid
+         */
+        serviceId: string;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: RemoveServiceCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: RemoveServiceFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: RemoveServiceSuccessCallback;
+    }
+
+    /**
+     * 广播的制造商信息, 仅安卓支持
+     */
+    interface ManufacturerData {
+        /**
+         * 制造商ID,0x 开头的十六进制
+         */
+        manufacturerId: string;
+        /**
+         * 制造商信息
+         */
+        manufacturerSpecificData?: ArrayBuffer;
+    }
+
+    /**
+     * 广播自定义参数
+     */
+    interface AdvertiseReqObj {
+        /**
+         * 当前Service是否可连接
+         */
+        connectable?: boolean;
+        /**
+         * 广播中deviceName字段,默认为空
+         */
+        deviceName?: string;
+        /**
+         * 广播的制造商信息, 仅安卓支持
+         */
+        manufacturerData?: ManufacturerData[];
+        /**
+         * 要广播的serviceUuid列表
+         */
+        serviceUuids?: string[];
+    }
+
+    interface StartAdvertisingObject {
+        /**
+         * 广播自定义参数
+         */
+        advertiseRequest: AdvertiseReqObj;
+        /**
+         * 广播功率
+         *
+         * 可选值:
+         * - 'low': 功率低;
+         * - 'medium': 功率适中;
+         * - 'high': 功率高;
+         */
+        powerLevel?: "low" | "medium" | "high";
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type StopAdvertisingCompleteCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type StopAdvertisingFailCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type StopAdvertisingSuccessCallback = (res: GeneralCallbackResult) => void;
+
+    interface StopAdvertisingOption {
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: StopAdvertisingCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: StopAdvertisingFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: StopAdvertisingSuccessCallback;
+    }
+
+    interface WriteCharacteristicValueObject {
+        /**
+         * characteristic对应的uuid
+         */
+        characteristicId: string;
+        /**
+         * 是否需要通知主机value已更新
+         */
+        needNotify: boolean;
+        /**
+         * service 的 uuid
+         */
+        serviceId: string;
+        /**
+         * 特征值对应的二进制值
+         */
+        value: ArrayBuffer;
+        /**
+         * 可选,处理回包时使用
+         */
+        callbackId?: number;
+    }
+
+    interface BLEPeripheralServer {
+        /**
+         *
+         * 添加服务。
+         *
+         * 最低基础库: `2.10.3`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/BLEPeripheralServer.addService.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/BLEPeripheralServer.addService.html)
+         */
+        addService(option: AddServiceOption): void;
+        /**
+         *
+         * 关闭当前服务端。
+         *
+         * 最低基础库: `2.10.3`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/BLEPeripheralServer.close.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/BLEPeripheralServer.close.html)
+         */
+        close(option?: NdefCloseOption): void;
+        /**
+         *
+         * 取消监听已连接的设备请求读当前外围设备的特征值事件
+         *
+         * 最低基础库: `2.10.3`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/BLEPeripheralServer.offCharacteristicReadRequest.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/BLEPeripheralServer.offCharacteristicReadRequest.html)
+         */
+        offCharacteristicReadRequest(callback: OffCharacteristicReadRequestCallback): void;
+        /**
+         *
+         * 取消监听已连接的设备请求写当前外围设备的特征值事件
+         *
+         * 最低基础库: `2.10.3`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/BLEPeripheralServer.offCharacteristicWriteRequest.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/BLEPeripheralServer.offCharacteristicWriteRequest.html)
+         */
+        offCharacteristicWriteRequest(callback: OffCharacteristicWriteRequestCallback): void;
+        /**
+         *
+         * 监听已连接的设备请求读当前外围设备的特征值事件。收到该消息后需要立刻调用 `writeCharacteristicValue` 写回数据,否则主机不会收到响应。
+         *
+         * 最低基础库: `2.10.3`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/BLEPeripheralServer.onCharacteristicReadRequest.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/BLEPeripheralServer.onCharacteristicReadRequest.html)
+         */
+        onCharacteristicReadRequest(callback: OnCharacteristicReadRequestCallback): void;
+        /**
+         *
+         * 监听已连接的设备请求写当前外围设备的特征值事件。收到该消息后需要立刻调用 `writeCharacteristicValue` 写回数据,否则主机不会收到响应。
+         *
+         * 最低基础库: `2.10.3`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/BLEPeripheralServer.onCharacteristicWriteRequest.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/BLEPeripheralServer.onCharacteristicWriteRequest.html)
+         */
+        onCharacteristicWriteRequest(callback: OnCharacteristicWriteRequestCallback): void;
+        /**
+         *
+         * 移除服务。
+         *
+         * 最低基础库: `2.10.3`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/BLEPeripheralServer.removeService.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/BLEPeripheralServer.removeService.html)
+         */
+        removeService(option: RemoveServiceOption): void;
+        /**
+         *
+         * 开始广播本地创建的外围设备。
+         *
+         * 最低基础库: `2.10.3`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/BLEPeripheralServer.startAdvertising.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/BLEPeripheralServer.startAdvertising.html)
+         */
+        startAdvertising(Object: StartAdvertisingObject): void;
+        /**
+         *
+         * 停止广播。
+         *
+         * 最低基础库: `2.10.3`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/BLEPeripheralServer.stopAdvertising.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/BLEPeripheralServer.stopAdvertising.html)
+         */
+        stopAdvertising(option?: StopAdvertisingOption): void;
+        /**
+         *
+         * 往指定特征值写入数据,并通知已连接的主机,从机的特征值已发生变化,该接口会处理是走回包还是走订阅。
+         *
+         * 最低基础库: `2.10.3`
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/BLEPeripheralServer.writeCharacteristicValue.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/BLEPeripheralServer.writeCharacteristicValue.html)
+         */
+        writeCharacteristicValue(Object: WriteCharacteristicValueObject): void;
+    }
+
+    interface CreateBLEPeripheralServerSuccessCallbackResult {
+        /**
+         *
+         * 外围设备的服务端。
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/BLEPeripheralServer.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/BLEPeripheralServer.html)
+         */
+        server: BLEPeripheralServer;
+        errMsg: string;
+    }
+
+    /**
+     * 接口调用成功的回调函数
+     */
+    type CreateBLEPeripheralServerSuccessCallback = (
+                result: CreateBLEPeripheralServerSuccessCallbackResult
+            ) => void;
+
+    interface CreateBLEPeripheralServerOption {
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: CreateBLEPeripheralServerCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: CreateBLEPeripheralServerFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: CreateBLEPeripheralServerSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type DisableAlertBeforeUnloadCompleteCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type DisableAlertBeforeUnloadFailCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type DisableAlertBeforeUnloadSuccessCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+
+    interface DisableAlertBeforeUnloadOption {
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: DisableAlertBeforeUnloadCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: DisableAlertBeforeUnloadFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: DisableAlertBeforeUnloadSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type EnableAlertBeforeUnloadCompleteCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type EnableAlertBeforeUnloadFailCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type EnableAlertBeforeUnloadSuccessCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+
+    interface EnableAlertBeforeUnloadOption {
+        /**
+         * 询问对话框内容
+         */
+        message: string;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: EnableAlertBeforeUnloadCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: EnableAlertBeforeUnloadFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: EnableAlertBeforeUnloadSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type ExitVoIPChatCompleteCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type ExitVoIPChatFailCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type ExitVoIPChatSuccessCallback = (res: GeneralCallbackResult) => void;
+
+    interface ExitVoIPChatOption {
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: ExitVoIPChatCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: ExitVoIPChatFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: ExitVoIPChatSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type GetAvailableAudioSourcesCompleteCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type GetAvailableAudioSourcesFailCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+
+    interface GetAvailableAudioSourcesSuccessCallbackResult {
+        /**
+         * 支持的音频输入源列表,可在 [RecorderManager.start()](https://developers.weixin.qq.com/miniprogram/dev/api/media/recorder/RecorderManager.start.html) 接口中使用。返回值定义参考 https://developer.android.com/reference/kotlin/android/media/MediaRecorder.AudioSource
+         *
+         * 可选值:
+         * - 'auto': 自动设置,默认使用手机麦克风,插上耳麦后自动切换使用耳机麦克风,所有平台适用;
+         * - 'buildInMic': 手机麦克风,仅限 iOS;
+         * - 'headsetMic': 耳机麦克风,仅限 iOS;
+         * - 'mic': 麦克风(没插耳麦时是手机麦克风,插耳麦时是耳机麦克风),仅限 Android;
+         * - 'camcorder': 同 mic,适用于录制音视频内容,仅限 Android;
+         * - 'voice_communication': 同 mic,适用于实时沟通,仅限 Android;
+         * - 'voice_recognition': 同 mic,适用于语音识别,仅限 Android;
+         */
+        audioSources: ("auto" | "buildInMic" | "headsetMic" | "mic" | "camcorder" | "voice_communication" | "voice_recognition")[];
+        errMsg: string;
+    }
+
+    /**
+     * 接口调用成功的回调函数
+     */
+    type GetAvailableAudioSourcesSuccessCallback = (
+                result: GetAvailableAudioSourcesSuccessCallbackResult
+            ) => void;
+
+    interface GetAvailableAudioSourcesOption {
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: GetAvailableAudioSourcesCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: GetAvailableAudioSourcesFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: GetAvailableAudioSourcesSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type GetBackgroundAudioPlayerStateCompleteCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type GetBackgroundAudioPlayerStateFailCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+
+    interface GetBackgroundAudioPlayerStateSuccessCallbackResult {
+        /**
+         * 选定音频的播放位置(单位:s),只有在音乐播放中时返回
+         */
+        currentPosition: number;
+        /**
+         * 歌曲数据链接,只有在音乐播放中时返回
+         */
+        dataUrl: string;
+        /**
+         * 音频的下载进度百分比,只有在音乐播放中时返回
+         */
+        downloadPercent: number;
+        /**
+         * 选定音频的长度(单位:s),只有在音乐播放中时返回
+         */
+        duration: number;
+        /**
+         * 播放状态
+         *
+         * 可选值:
+         * - 0: 暂停中;
+         * - 1: 播放中;
+         * - 2: 没有音乐播放;
+         */
+        status: 0 | 1 | 2;
+        errMsg: string;
+    }
+
+    /**
+     * 接口调用成功的回调函数
+     */
+    type GetBackgroundAudioPlayerStateSuccessCallback = (
+                result: GetBackgroundAudioPlayerStateSuccessCallbackResult
+            ) => void;
+
+    interface GetBackgroundAudioPlayerStateOption {
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: GetBackgroundAudioPlayerStateCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: GetBackgroundAudioPlayerStateFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: GetBackgroundAudioPlayerStateSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type GetBackgroundFetchDataCompleteCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type GetBackgroundFetchDataFailCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type GetBackgroundFetchDataSuccessCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+
+    interface GetBackgroundFetchDataOption {
+        /**
+         * 取值为 periodic
+         */
+        fetchType: string;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: GetBackgroundFetchDataCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: GetBackgroundFetchDataFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: GetBackgroundFetchDataSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type GetBackgroundFetchTokenCompleteCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type GetBackgroundFetchTokenFailCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type GetBackgroundFetchTokenSuccessCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+
+    interface GetBackgroundFetchTokenOption {
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: GetBackgroundFetchTokenCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: GetBackgroundFetchTokenFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: GetBackgroundFetchTokenSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type GetBatteryInfoCompleteCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type GetBatteryInfoFailCallback = (res: GeneralCallbackResult) => void;
+
+    interface GetBatteryInfoSuccessCallbackResult {
+        /**
+         * 是否正在充电中
+         */
+        isCharging: boolean;
+        /**
+         * 设备电量,范围 1 - 100
+         */
+        level: string;
+        errMsg: string;
+    }
+
+    /**
+     * 接口调用成功的回调函数
+     */
+    type GetBatteryInfoSuccessCallback = (
+                result: GetBatteryInfoSuccessCallbackResult
+            ) => void;
+
+    interface GetBatteryInfoOption {
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: GetBatteryInfoCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: GetBatteryInfoFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: GetBatteryInfoSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type GetConnectedWifiCompleteCallback = (res: WifiError) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type GetConnectedWifiFailCallback = (res: WifiError) => void;
+
+    /**
+     * Wifi 信息
+     */
+    interface WifiInfo {
+        /**
+         * Wi-Fi 的 BSSID
+         */
+        BSSID: string;
+        /**
+         * Wi-Fi 的 SSID
+         */
+        SSID: string;
+        /**
+         * Wi-Fi 频段单位 MHz
+         *
+         * 最低基础库: `2.12.0`
+         */
+        frequency: number;
+        /**
+         * Wi-Fi 是否安全
+         */
+        secure: boolean;
+        /**
+         * Wi-Fi 信号强度
+         */
+        signalStrength: number;
+    }
+
+    interface GetConnectedWifiSuccessCallbackResult {
+        /**
+         *
+         * Wi-Fi 信息
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/wifi/WifiInfo.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/wifi/WifiInfo.html)
+         */
+        wifi: WifiInfo;
+        errMsg: string;
+    }
+
+    /**
+     * 接口调用成功的回调函数
+     */
+    type GetConnectedWifiSuccessCallback = (
+                result: GetConnectedWifiSuccessCallbackResult
+            ) => void;
+
+    interface GetConnectedWifiOption {
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: GetConnectedWifiCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: GetConnectedWifiFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: GetConnectedWifiSuccessCallback;
+    }
+
+    interface NFCError {
+        /**
+         * 错误信息
+         *
+         * | 错误码 | 错误信息 | 说明 |
+         * | - | - | - |
+         * | 0 | ok | 正常 |
+         * | 13000 |  | 当前设备不支持NFC |
+         * | 13001 |  | 当前设备支持NFC,但系统NFC开关未开启 |
+         * | 13002 |  | 当前设备支持NFC,但不支持HCE |
+         * | 13003 |  | AID列表参数格式错误 |
+         * | 13004 |  | 未设置微信为默认NFC支付应用 |
+         * | 13005 |  | 返回的指令不合法 |
+         * | 13006 |  | 注册AID失败 |
+         */
+        errMsg: string;
+        /**
+         * 错误码
+         *
+         * | 错误码 | 错误信息 | 说明 |
+         * | - | - | - |
+         * | 0 | ok | 正常 |
+         * | 13000 |  | 当前设备不支持NFC |
+         * | 13001 |  | 当前设备支持NFC,但系统NFC开关未开启 |
+         * | 13002 |  | 当前设备支持NFC,但不支持HCE |
+         * | 13003 |  | AID列表参数格式错误 |
+         * | 13004 |  | 未设置微信为默认NFC支付应用 |
+         * | 13005 |  | 返回的指令不合法 |
+         * | 13006 |  | 注册AID失败 |
+         */
+        errCode: number;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type GetHCEStateCompleteCallback = (res: NFCError) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type GetHCEStateFailCallback = (res: NFCError) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type GetHCEStateSuccessCallback = (res: NFCError) => void;
+
+    interface GetHCEStateOption {
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: GetHCEStateCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: GetHCEStateFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: GetHCEStateSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type GetShareInfoCompleteCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type GetShareInfoFailCallback = (res: GeneralCallbackResult) => void;
+
+    interface GetShareInfoSuccessCallbackResult {
+        /**
+         * 敏感数据对应的云 ID,开通[云开发](https://developers.weixin.qq.com/miniprogram/dev/wxcloud/basis/getting-started.html)的小程序才会返回,可通过云调用直接获取开放数据,详细见[云调用直接获取开放数据](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html#method-cloud)
+         *
+         * 最低基础库: `2.7.0`
+         */
+        cloudID: string;
+        /**
+         * 包括敏感数据在内的完整转发信息的加密数据,详细见[加密数据解密算法](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html)
+         */
+        encryptedData: string;
+        /**
+         * 错误信息
+         */
+        errMsg: string;
+        /**
+         * 加密算法的初始向量,详细见[加密数据解密算法](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html)
+         */
+        iv: string;
+    }
+
+    /**
+     * 接口调用成功的回调函数
+     */
+    type GetShareInfoSuccessCallback = (
+                result: GetShareInfoSuccessCallbackResult
+            ) => void;
+
+    interface GetShareInfoOption {
+        /**
+         * shareTicket
+         */
+        shareTicket: string;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: GetShareInfoCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: GetShareInfoFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: GetShareInfoSuccessCallback;
+        /**
+         * 超时时间,单位 ms
+         *
+         * 最低基础库: `1.9.90`
+         */
+        timeout?: number;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type GetWeRunDataCompleteCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type GetWeRunDataFailCallback = (res: GeneralCallbackResult) => void;
+
+    interface GetWeRunDataSuccessCallbackResult {
+        /**
+         * 敏感数据对应的云 ID,开通云开发的小程序才会返回,可通过云调用直接获取开放数据,详细见[云调用直接获取开放数据](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html#method-cloud)
+         *
+         * 最低基础库: `2.7.0`
+         */
+        cloudID: string;
+        /**
+         * 包括敏感数据在内的完整用户信息的加密数据,详细见[加密数据解密算法](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html)。解密后得到的数据结构见后文
+         */
+        encryptedData: string;
+        /**
+         * 加密算法的初始向量,详细见[加密数据解密算法](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html)
+         */
+        iv: string;
+        errMsg: string;
+    }
+
+    /**
+     * 接口调用成功的回调函数
+     */
+    type GetWeRunDataSuccessCallback = (
+                result: GetWeRunDataSuccessCallbackResult
+            ) => void;
+
+    interface GetWeRunDataOption {
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: GetWeRunDataCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: GetWeRunDataFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: GetWeRunDataSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type GetWifiListCompleteCallback = (res: WifiError) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type GetWifiListFailCallback = (res: WifiError) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type GetWifiListSuccessCallback = (res: WifiError) => void;
+
+    interface GetWifiListOption {
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: GetWifiListCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: GetWifiListFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: GetWifiListSuccessCallback;
+    }
+
+    interface JoinVoIPChatError {
+        /**
+         * 错误信息
+         *
+         * | 错误码 | 错误信息 | 说明 |
+         * | - | - | - |
+         * | -1 | 当前已在房间内 |  |
+         * | -2 | 录音设备被占用,可能是当前正在使用微信内语音通话或系统通话 |  |
+         * | -3 | 加入会话期间退出(可能是用户主动退出,或者退后台、来电等原因),因此加入失败 |  |
+         * | -1000 | 系统错误 |  |
+         */
+        errMsg: string;
+        /**
+         * 错误码
+         *
+         * | 错误码 | 错误信息 | 说明 |
+         * | - | - | - |
+         * | -1 | 当前已在房间内 |  |
+         * | -2 | 录音设备被占用,可能是当前正在使用微信内语音通话或系统通话 |  |
+         * | -3 | 加入会话期间退出(可能是用户主动退出,或者退后台、来电等原因),因此加入失败 |  |
+         * | -1000 | 系统错误 |  |
+         */
+        errCode: number;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type JoinVoIPChatCompleteCallback = (res: JoinVoIPChatError) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type JoinVoIPChatFailCallback = (res: JoinVoIPChatError) => void;
+
+    /**
+     * 静音设置
+     */
+    interface MuteConfig {
+        /**
+         * 是否静音耳机
+         */
+        muteEarphone?: boolean;
+        /**
+         * 是否静音麦克风
+         */
+        muteMicrophone?: boolean;
+    }
+
+    interface JoinVoIPChatSuccessCallbackResult {
+        /**
+         * 错误码
+         */
+        errCode: number;
+        /**
+         * 调用结果
+         */
+        errMsg: string;
+        /**
+         * 在此通话中的成员 openId 名单
+         */
+        openIdList: string[];
+    }
+
+    /**
+     * 接口调用成功的回调函数
+     */
+    type JoinVoIPChatSuccessCallback = (
+                result: JoinVoIPChatSuccessCallbackResult
+            ) => void;
+
+    interface JoinVoIPChatOption {
+        /**
+         * 小游戏内此房间/群聊的 ID。同一时刻传入相同 groupId 的用户会进入到同个实时语音房间。
+         */
+        groupId: string;
+        /**
+         * 验证所需的随机字符串
+         */
+        nonceStr: string;
+        /**
+         * 签名,用于验证小游戏的身份
+         */
+        signature: string;
+        /**
+         * 验证所需的时间戳
+         */
+        timeStamp: number;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: JoinVoIPChatCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: JoinVoIPChatFailCallback;
+        /**
+         * 静音设置
+         */
+        muteConfig?: MuteConfig;
+        /**
+         * 房间类型
+         *
+         * 可选值:
+         * - 'voice': 音频房间,用于语音通话;
+         * - 'video': 视频房间,结合 [voip-room](https://developers.weixin.qq.com/miniprogram/dev/component/voip-room.html) 组件可显示成员画面;
+         */
+        roomType?: "video" | "voice";
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: JoinVoIPChatSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type MakeBluetoothPairCompleteCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type MakeBluetoothPairFailCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type MakeBluetoothPairSuccessCallback = (res: GeneralCallbackResult) => void;
+
+    interface MakeBluetoothPairOption {
+        /**
+         * 蓝牙设备 id
+         */
+        deviceId: string;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: MakeBluetoothPairCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: MakeBluetoothPairFailCallback;
+        /**
+         * pin 码
+         */
+        pin?: ArrayBuffer;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: MakeBluetoothPairSuccessCallback;
+        /**
+         * 超时时间
+         */
+        timeout?: number;
+    }
+
+    /**
+     * 小程序切后台事件的回调函数
+     */
+    type OffAppHideCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 小程序切前台事件的回调函数
+     */
+    type OffAppShowCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 音频因为受到系统占用而被中断开始事件的回调函数
+     */
+    type OffAudioInterruptionBeginCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+    /**
+     * 音频中断结束事件的回调函数
+     */
+    type OffAudioInterruptionEndCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 当前外围设备被连接或断开连接事件的回调函数
+     */
+    type OffBLEPeripheralConnectionStateChangedCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+    /**
+     * iBeacon 服务状态变化事件的回调函数
+     */
+    type OffBeaconServiceChangeCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * iBeacon 设备更新事件的回调函数
+     */
+    type OffBeaconUpdateCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * mDNS 服务停止搜索的事件的回调函数
+     */
+    type OffLocalServiceDiscoveryStopCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+    /**
+     * mDNS 服务发现的事件的回调函数
+     */
+    type OffLocalServiceFoundCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * mDNS 服务离开的事件的回调函数
+     */
+    type OffLocalServiceLostCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * mDNS 服务解析失败的事件的回调函数
+     */
+    type OffLocalServiceResolveFailCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+    /**
+     * 实时地理位置变化事件的回调函数
+     */
+    type OffLocationChangeCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 实时语音通话成员视频状态变化事件的回调函数
+     */
+    type OffOnVoIPVideoMembersChangedCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+    /**
+     * 小程序要打开的页面不存在事件的回调函数
+     */
+    type OffPageNotFoundCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 系统主题改变事件的回调函数
+     */
+    type OffThemeChangeCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 未处理的 Promise 拒绝事件的回调函数
+     */
+    type OffUnhandledRejectionCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 小程序切后台事件的回调函数
+     */
+    type OnAppHideCallback = (res: GeneralCallbackResult) => void;
+
+    interface OnAppShowCallbackResult {
+        /**
+         * 小程序切前台的路径 (代码包路径)
+         */
+        path: string;
+        /**
+         * 小程序切前台的 query 参数
+         */
+        query: Record<string, any>;
+        /**
+         * 来源信息。从另一个小程序、公众号或 App 进入小程序时返回。否则返回 `{}`。(参见后文注意)
+         */
+        referrerInfo: ReferrerInfo;
+        /**
+         * 小程序切前台的[场景值](https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/scene.html)
+         */
+        scene: number;
+        /**
+         * shareTicket,详见[获取更多转发信息](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/share.html)
+         */
+        shareTicket?: string;
+    }
+
+    /**
+     * 小程序切前台事件的回调函数
+     */
+    type OnAppShowCallback = (result: OnAppShowCallbackResult) => void;
+    /**
+     * 音频因为受到系统占用而被中断开始事件的回调函数
+     */
+    type OnAudioInterruptionBeginCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 音频中断结束事件的回调函数
+     */
+    type OnAudioInterruptionEndCallback = (res: GeneralCallbackResult) => void;
+
+    interface OnBLEPeripheralConnectionStateChangedCallbackResult {
+        /**
+         * 连接目前状态
+         */
+        connected: boolean;
+        /**
+         * 连接状态变化的设备 id
+         */
+        deviceId: string;
+        /**
+         * server 的 uuid
+         */
+        serverId: string;
+    }
+
+    /**
+     * 当前外围设备被连接或断开连接事件的回调函数
+     */
+    type OnBLEPeripheralConnectionStateChangedCallback = (
+                result: OnBLEPeripheralConnectionStateChangedCallbackResult
+            ) => void;
+    /**
+     * 音乐暂停事件的回调函数
+     */
+    type OnBackgroundAudioPauseCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 音乐播放事件的回调函数
+     */
+    type OnBackgroundAudioPlayCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 音乐停止事件的回调函数
+     */
+    type OnBackgroundAudioStopCallback = (res: GeneralCallbackResult) => void;
+
+    interface OnBackgroundFetchDataCallbackResult {
+        /**
+         * 缓存数据类别 (periodic)
+         */
+        fetchType: string;
+        /**
+         * 缓存数据
+         */
+        fetchedData: string;
+        /**
+         * 客户端拿到缓存数据的时间戳
+         */
+        timeStamp: number;
+    }
+
+    /**
+     * 的回调函数
+     */
+    type OnBackgroundFetchDataCallback = (
+                result: OnBackgroundFetchDataCallbackResult
+            ) => void;
+
+    interface OnDeviceMotionChangeCallbackResult {
+        /**
+         * 当 手机坐标 X/Y 和 地球 X/Y 重合时,绕着 Z 轴转动的夹角为 alpha,范围值为 [0, 2*PI)。逆时针转动为正。
+         */
+        alpha: number;
+        /**
+         * 当手机坐标 Y/Z 和地球 Y/Z 重合时,绕着 X 轴转动的夹角为 beta。范围值为 [-1*PI, PI) 。顶部朝着地球表面转动为正。也有可能朝着用户为正。
+         */
+        beta: number;
+        /**
+         * 当手机 X/Z 和地球 X/Z 重合时,绕着 Y 轴转动的夹角为 gamma。范围值为 [-1*PI/2, PI/2)。右边朝着地球表面转动为正。
+         */
+        gamma: number;
+    }
+
+    /**
+     * 设备方向变化事件的回调函数
+     */
+    type OnDeviceMotionChangeCallback = (
+                result: OnDeviceMotionChangeCallbackResult
+            ) => void;
+    /**
+     * 小程序错误事件的回调函数
+     */
+    type OnAppErrorCallback = (
+                /** 错误信息,包含堆栈 */
+                error: string
+            ) => void;
+
+    interface OnGetWifiListCallbackResult {
+        /**
+         * Wi-Fi 列表数据
+         */
+        wifiList: WifiInfo[];
+    }
+
+    /**
+     * 获取到 Wi-Fi 列表数据事件的回调函数
+     */
+    type OnGetWifiListCallback = (result: OnGetWifiListCallbackResult) => void;
+
+    interface OnHCEMessageCallbackResult {
+        /**
+         * `messageType=1` 时 ,客户端接收到 NFC 设备的指令
+         */
+        data: ArrayBuffer;
+        /**
+         * 消息类型
+         *
+         * 可选值:
+         * - 1: HCE APDU Command类型,小程序需对此指令进行处理,并调用 sendHCEMessage 接口返回处理指令;
+         * - 2: 设备离场事件类型;
+         */
+        messageType: 1 | 2;
+        /**
+         * `messageType=2` 时,原因
+         */
+        reason: number;
+    }
+
+    /**
+     * 接收 NFC 设备消息事件的回调函数
+     */
+    type OnHCEMessageCallback = (result: OnHCEMessageCallbackResult) => void;
+    /**
+     * mDNS 服务停止搜索的事件的回调函数
+     */
+    type OnLocalServiceDiscoveryStopCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+
+    interface OnLocalServiceFoundCallbackResult {
+        /**
+         * 服务的 ip 地址
+         */
+        ip: string;
+        /**
+         * 服务的端口
+         */
+        port: number;
+        /**
+         * 服务的名称
+         */
+        serviceName: string;
+        /**
+         * 服务的类型
+         */
+        serviceType: string;
+    }
+
+    /**
+     * mDNS 服务发现的事件的回调函数
+     */
+    type OnLocalServiceFoundCallback = (
+                result: OnLocalServiceFoundCallbackResult
+            ) => void;
+
+    interface OnLocalServiceLostCallbackResult {
+        /**
+         * 服务的名称
+         */
+        serviceName: string;
+        /**
+         * 服务的类型
+         */
+        serviceType: string;
+    }
+
+    /**
+     * mDNS 服务离开的事件的回调函数
+     */
+    type OnLocalServiceLostCallback = (
+                result: OnLocalServiceLostCallbackResult
+            ) => void;
+    /**
+     * mDNS 服务解析失败的事件的回调函数
+     */
+    type OnLocalServiceResolveFailCallback = (
+                result: OnLocalServiceLostCallbackResult
+            ) => void;
+
+    interface OnLocationChangeCallbackResult {
+        /**
+         * 位置的精确度
+         */
+        accuracy: number;
+        /**
+         * 高度,单位 m
+         *
+         * 最低基础库: `1.2.0`
+         */
+        altitude: number;
+        /**
+         * 水平精度,单位 m
+         *
+         * 最低基础库: `1.2.0`
+         */
+        horizontalAccuracy: number;
+        /**
+         * 纬度,范围为 -90~90,负数表示南纬
+         */
+        latitude: number;
+        /**
+         * 经度,范围为 -180~180,负数表示西经
+         */
+        longitude: number;
+        /**
+         * 速度,单位 m/s
+         */
+        speed: number;
+        /**
+         * 垂直精度,单位 m(Android 无法获取,返回 0)
+         *
+         * 最低基础库: `1.2.0`
+         */
+        verticalAccuracy: number;
+    }
+
+    /**
+     * 实时地理位置变化事件的回调函数
+     */
+    type OnLocationChangeCallback = (
+                result: OnLocationChangeCallbackResult
+            ) => void;
+
+    interface OnMemoryWarningCallbackResult {
+        /**
+         * 内存告警等级,只有 Android 才有,对应系统宏定义
+         *
+         * 可选值:
+         * - 5: TRIM_MEMORY_RUNNING_MODERATE;
+         * - 10: TRIM_MEMORY_RUNNING_LOW;
+         * - 15: TRIM_MEMORY_RUNNING_CRITICAL;
+         */
+        level: 5 | 10 | 15;
+    }
+
+    /**
+     * 内存不足告警事件的回调函数
+     */
+    type OnMemoryWarningCallback = (
+                result: OnMemoryWarningCallbackResult
+            ) => void;
+
+    interface OnOnVoIPVideoMembersChangedCallbackResult {
+        /**
+         * 错误码
+         */
+        errCode: number;
+        /**
+         * 调用结果
+         */
+        errMsg: string;
+        /**
+         * 开启视频的成员名单
+         */
+        openIdList: string[];
+    }
+
+    /**
+     * 实时语音通话成员视频状态变化事件的回调函数
+     */
+    type OnOnVoIPVideoMembersChangedCallback = (
+                result: OnOnVoIPVideoMembersChangedCallbackResult
+            ) => void;
+
+    interface OnPageNotFoundCallbackResult {
+        /**
+         * 是否本次启动的首个页面(例如从分享等入口进来,首个页面是开发者配置的分享页面)
+         */
+        isEntryPage: boolean;
+        /**
+         * 不存在页面的路径 (代码包路径)
+         */
+        path: string;
+        /**
+         * 打开不存在页面的 query 参数
+         */
+        query: Record<string, any>;
+    }
+
+    /**
+     * 小程序要打开的页面不存在事件的回调函数
+     */
+    type OnPageNotFoundCallback = (result: OnPageNotFoundCallbackResult) => void;
+
+    interface OnThemeChangeCallbackResult {
+        /**
+         * 系统当前的主题,取值为`light`或`dark`
+         *
+         * 可选值:
+         * - 'dark': 深色主题;
+         * - 'light': 浅色主题;
+         */
+        theme: "dark" | "light";
+    }
+
+    /**
+     * 系统主题改变事件的回调函数
+     */
+    type OnThemeChangeCallback = (result: OnThemeChangeCallbackResult) => void;
+
+    interface OnUnhandledRejectionCallbackResult {
+        /**
+         * 被拒绝的 Promise 对象
+         */
+        promise: Promise<any>;
+        /**
+         * 拒绝原因,一般是一个 Error 对象
+         */
+        reason: string;
+    }
+
+    /**
+     * 未处理的 Promise 拒绝事件的回调函数
+     */
+    type OnUnhandledRejectionCallback = (
+                result: OnUnhandledRejectionCallbackResult
+            ) => void;
+    /**
+     * 用户主动截屏事件的回调函数
+     */
+    type OnUserCaptureScreenCallback = (res: GeneralCallbackResult) => void;
+
+    interface OnVoIPChatInterruptedCallbackResult {
+        /**
+         * 错误码
+         */
+        errCode: number;
+        /**
+         * 调用结果(错误原因)
+         */
+        errMsg: string;
+    }
+
+    /**
+     * 被动断开实时语音通话事件的回调函数
+     */
+    type OnVoIPChatInterruptedCallback = (
+                result: OnVoIPChatInterruptedCallbackResult
+            ) => void;
+
+    interface OnVoIPChatMembersChangedCallbackResult {
+        /**
+         * 错误码
+         */
+        errCode: number;
+        /**
+         * 调用结果
+         */
+        errMsg: string;
+        /**
+         * 还在实时语音通话中的成员 openId 名单
+         */
+        openIdList: string[];
+    }
+
+    /**
+     * 实时语音通话成员在线状态变化事件的回调函数
+     */
+    type OnVoIPChatMembersChangedCallback = (
+                result: OnVoIPChatMembersChangedCallbackResult
+            ) => void;
+
+    interface OnVoIPChatSpeakersChangedCallbackResult {
+        /**
+         * 错误码
+         */
+        errCode: number;
+        /**
+         * 调用结果(错误原因)
+         */
+        errMsg: string;
+        /**
+         * 还在实时语音通话中的成员 openId 名单
+         */
+        openIdList: string[];
+    }
+
+    /**
+     * 实时语音通话成员通话状态变化事件的回调函数
+     */
+    type OnVoIPChatSpeakersChangedCallback = (
+                result: OnVoIPChatSpeakersChangedCallbackResult
+            ) => void;
+
+    interface OnWifiConnectedCallbackResult {
+        /**
+         *
+         * Wi-Fi 信息
+         *
+         * 文档: [https://developers.weixin.qq.com/miniprogram/dev/api/device/wifi/WifiInfo.html](https://developers.weixin.qq.com/miniprogram/dev/api/device/wifi/WifiInfo.html)
+         */
+        wifi: WifiInfo;
+    }
+
+    /**
+     * 连接上 Wi-Fi 的事件的回调函数
+     */
+    type OnWifiConnectedCallback = (
+                result: OnWifiConnectedCallbackResult
+            ) => void;
+
+    /**
+     * 需要打开的卡券列表
+     */
+    interface OpenCardRequestInfo {
+        /**
+         * 卡券 ID
+         */
+        cardId: string;
+        /**
+         * 由 [uni.addCard](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/card/wx.addCard.html) 的返回对象中的加密 code 通过解密后得到,解密请参照:[code 解码接口](https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1499332673_Unm7V)
+         */
+        code: string;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type OpenCardCompleteCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type OpenCardFailCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type OpenCardSuccessCallback = (res: GeneralCallbackResult) => void;
+
+    interface OpenCardOption {
+        /**
+         * 需要打开的卡券列表
+         */
+        cardList: OpenCardRequestInfo[];
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: OpenCardCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: OpenCardFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: OpenCardSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type PauseBackgroundAudioCompleteCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type PauseBackgroundAudioFailCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type PauseBackgroundAudioSuccessCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+
+    interface PauseBackgroundAudioOption {
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: PauseBackgroundAudioCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: PauseBackgroundAudioFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: PauseBackgroundAudioSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type PauseVoiceCompleteCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type PauseVoiceFailCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type PauseVoiceSuccessCallback = (res: GeneralCallbackResult) => void;
+
+    interface PauseVoiceOption {
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: PauseVoiceCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: PauseVoiceFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: PauseVoiceSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type PlayBackgroundAudioCompleteCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type PlayBackgroundAudioFailCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type PlayBackgroundAudioSuccessCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+
+    interface PlayBackgroundAudioOption {
+        /**
+         * 音乐链接,目前支持的格式有 m4a, aac, mp3, wav
+         */
+        dataUrl: string;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: PlayBackgroundAudioCompleteCallback;
+        /**
+         * 封面URL
+         */
+        coverImgUrl?: string;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: PlayBackgroundAudioFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: PlayBackgroundAudioSuccessCallback;
+        /**
+         * 音乐标题
+         */
+        title?: string;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type PlayVoiceCompleteCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type PlayVoiceFailCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type PlayVoiceSuccessCallback = (res: GeneralCallbackResult) => void;
+
+    interface PlayVoiceOption {
+        /**
+         * 需要播放的语音文件的文件路径 (本地路径)
+         */
+        filePath: string;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: PlayVoiceCompleteCallback;
+        /**
+         * 指定录音时长,到达指定的录音时长后会自动停止录音,单位:秒
+         *
+         * 最低基础库: `1.6.0`
+         */
+        duration?: number;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: PlayVoiceFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: PlayVoiceSuccessCallback;
+    }
+
+    /**
+     * 需要预览的资源列表
+     */
+    interface MediaSource {
+        /**
+         * 图片或视频的地址
+         */
+        url: string;
+        /**
+         * 视频的封面图片
+         */
+        poster?: string;
+        /**
+         * 资源的类型,默认为图片
+         *
+         * 可选值:
+         * - 'image': 图片;
+         * - 'video': 视频;
+         */
+        type?: "video" | "image";
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type PreviewMediaCompleteCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type PreviewMediaFailCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type PreviewMediaSuccessCallback = (res: GeneralCallbackResult) => void;
+
+    interface PreviewMediaOption {
+        /**
+         * 需要预览的资源列表
+         */
+        sources: MediaSource[];
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: PreviewMediaCompleteCallback;
+        /**
+         * 当前显示的资源序号
+         */
+        current?: any;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: PreviewMediaFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: PreviewMediaSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type RequestSubscribeMessageCompleteCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+
+    interface RequestSubscribeMessageFailCallbackResult {
+        /**
+         * 接口调用失败错误码
+         */
+        errCode: number;
+        /**
+         * 接口调用失败错误信息
+         */
+        errMsg: string;
+    }
+
+    /**
+     * 接口调用失败的回调函数
+     */
+    type RequestSubscribeMessageFailCallback = (
+                result: RequestSubscribeMessageFailCallbackResult
+            ) => void;
+
+    interface RequestSubscribeMessageSuccessCallbackResult {
+        /**
+         * [TEMPLATE_ID]是动态的键,即模板id,值包括'accept'、'reject'、'ban'。'accept'表示用户同意订阅该条id对应的模板消息,'reject'表示用户拒绝订阅该条id对应的模板消息,'ban'表示已被后台封禁。例如 { errMsg: "requestSubscribeMessage:ok", zun-LzcQyW-edafCVvzPkK4de2Rllr1fFpw2A_x0oXE: "accept"} 表示用户同意订阅zun-LzcQyW-edafCVvzPkK4de2Rllr1fFpw2A_x0oXE这条消息
+         */
+        TEMPLATE_ID: string;
+        /**
+         * 接口调用成功时errMsg值为'requestSubscribeMessage:ok'
+         */
+        errMsg: string;
+    }
+
+    /**
+     * 接口调用成功的回调函数
+     */
+    type RequestSubscribeMessageSuccessCallback = (
+                result: RequestSubscribeMessageSuccessCallbackResult
+            ) => void;
+
+    interface RequestSubscribeMessageOption {
+        /**
+         * 需要订阅的消息模板的id的集合,一次调用最多可订阅3条消息(注意:iOS客户端7.0.6版本、Android客户端7.0.7版本之后的一次性订阅/长期订阅才支持多个模板消息,iOS客户端7.0.5版本、Android客户端7.0.6版本之前的一次订阅只支持一个模板消息)消息模板id在[微信公众平台(mp.weixin.qq.com)-功能-订阅消息]中配置
+         */
+        tmplIds: any[];
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: RequestSubscribeMessageCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: RequestSubscribeMessageFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: RequestSubscribeMessageSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type SaveFileToDiskCompleteCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type SaveFileToDiskFailCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type SaveFileToDiskSuccessCallback = (res: GeneralCallbackResult) => void;
+
+    interface SaveFileToDiskOption {
+        /**
+         * 待保存文件路径
+         */
+        filePath: string;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: SaveFileToDiskCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: SaveFileToDiskFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: SaveFileToDiskSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type SeekBackgroundAudioCompleteCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type SeekBackgroundAudioFailCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type SeekBackgroundAudioSuccessCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+
+    interface SeekBackgroundAudioOption {
+        /**
+         * 音乐位置,单位:秒
+         */
+        position: number;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: SeekBackgroundAudioCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: SeekBackgroundAudioFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: SeekBackgroundAudioSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type SendHCEMessageCompleteCallback = (res: NFCError) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type SendHCEMessageFailCallback = (res: NFCError) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type SendHCEMessageSuccessCallback = (res: NFCError) => void;
+
+    interface SendHCEMessageOption {
+        /**
+         * 二进制数据
+         */
+        data: ArrayBuffer;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: SendHCEMessageCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: SendHCEMessageFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: SendHCEMessageSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type SetBackgroundFetchTokenCompleteCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type SetBackgroundFetchTokenFailCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type SetBackgroundFetchTokenSuccessCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+
+    interface SetBackgroundFetchTokenOption {
+        /**
+         * 自定义的登录态
+         */
+        token: string;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: SetBackgroundFetchTokenCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: SetBackgroundFetchTokenFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: SetBackgroundFetchTokenSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type SetInnerAudioOptionCompleteCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type SetInnerAudioOptionFailCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type SetInnerAudioOptionSuccessCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+
+    interface SetInnerAudioOption {
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: SetInnerAudioOptionCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: SetInnerAudioOptionFailCallback;
+        /**
+         * 是否与其他音频混播,设置为 true 之后,不会终止其他应用或微信内的音乐
+         */
+        mixWithOther?: boolean;
+        /**
+         * (仅在 iOS 生效)是否遵循静音开关,设置为 false 之后,即使是在静音模式下,也能播放声音
+         */
+        obeyMuteSwitch?: boolean;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: SetInnerAudioOptionSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type SetTopBarTextCompleteCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type SetTopBarTextFailCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type SetTopBarTextSuccessCallback = (res: GeneralCallbackResult) => void;
+
+    interface SetTopBarTextOption {
+        /**
+         * 置顶栏文字
+         */
+        text: string;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: SetTopBarTextCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: SetTopBarTextFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: SetTopBarTextSuccessCallback;
+    }
+
+    /**
+     * 提供预设的 Wi-Fi 信息列表
+     */
+    interface WifiData {
+        /**
+         * Wi-Fi 的 BSSID
+         */
+        BSSID?: string;
+        /**
+         * Wi-Fi 的 SSID
+         */
+        SSID?: string;
+        /**
+         * Wi-Fi 设备密码
+         */
+        password?: string;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type SetWifiListCompleteCallback = (res: WifiError) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type SetWifiListFailCallback = (res: WifiError) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type SetWifiListSuccessCallback = (res: WifiError) => void;
+
+    interface SetWifiListOption {
+        /**
+         * 提供预设的 Wi-Fi 信息列表
+         */
+        wifiList: WifiData[];
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: SetWifiListCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: SetWifiListFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: SetWifiListSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type SetWindowSizeCompleteCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type SetWindowSizeFailCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type SetWindowSizeSuccessCallback = (res: GeneralCallbackResult) => void;
+
+    interface SetWindowSizeOption {
+        /**
+         * 窗口高度,以像素为单位
+         */
+        height: number;
+        /**
+         * 窗口宽度,以像素为单位
+         */
+        width: number;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: SetWindowSizeCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: SetWindowSizeFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: SetWindowSizeSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type ShowRedPackageCompleteCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type ShowRedPackageFailCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type ShowRedPackageSuccessCallback = (res: GeneralCallbackResult) => void;
+
+    interface ShowRedPackageOption {
+        /**
+         * 封面地址
+         */
+        url: string;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: ShowRedPackageCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: ShowRedPackageFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: ShowRedPackageSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type StartDeviceMotionListeningCompleteCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type StartDeviceMotionListeningFailCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type StartDeviceMotionListeningSuccessCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+
+    interface StartDeviceMotionListeningOption {
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: StartDeviceMotionListeningCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: StartDeviceMotionListeningFailCallback;
+        /**
+         * 监听设备方向的变化回调函数的执行频率
+         *
+         * 可选值:
+         * - 'game': 适用于更新游戏的回调频率,在 20ms/次 左右;
+         * - 'ui': 适用于更新 UI 的回调频率,在 60ms/次 左右;
+         * - 'normal': 普通的回调频率,在 200ms/次 左右;
+         */
+        interval?: "game" | "ui" | "normal";
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: StartDeviceMotionListeningSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type StartHCECompleteCallback = (res: NFCError) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type StartHCEFailCallback = (res: NFCError) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type StartHCESuccessCallback = (res: NFCError) => void;
+
+    interface StartHCEOption {
+        /**
+         * 需要注册到系统的 AID 列表
+         */
+        aid_list: string[];
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: StartHCECompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: StartHCEFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: StartHCESuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type StartLocalServiceDiscoveryCompleteCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+
+    interface StartLocalServiceDiscoveryFailCallbackResult {
+        /**
+         * 错误信息
+         *
+         * 可选值:
+         * - 'invalid param': serviceType 为空;
+         * - 'scan task already exist': 在当前 startLocalServiceDiscovery 发起的搜索未停止的情况下,再次调用 startLocalServiceDiscovery;
+         */
+        errMsg: string;
+    }
+
+    /**
+     * 接口调用失败的回调函数
+     */
+    type StartLocalServiceDiscoveryFailCallback = (
+                result: StartLocalServiceDiscoveryFailCallbackResult
+            ) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type StartLocalServiceDiscoverySuccessCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+
+    interface StartLocalServiceDiscoveryOption {
+        /**
+         * 要搜索的服务类型
+         */
+        serviceType: string;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: StartLocalServiceDiscoveryCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: StartLocalServiceDiscoveryFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: StartLocalServiceDiscoverySuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type StartLocationUpdateCompleteCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type StartLocationUpdateFailCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type StartLocationUpdateSuccessCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+
+    interface StartLocationUpdateOption {
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: StartLocationUpdateCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: StartLocationUpdateFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: StartLocationUpdateSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type StartLocationUpdateBackgroundCompleteCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type StartLocationUpdateBackgroundFailCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type StartLocationUpdateBackgroundSuccessCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+
+    interface StartLocationUpdateBackgroundOption {
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: StartLocationUpdateBackgroundCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: StartLocationUpdateBackgroundFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: StartLocationUpdateBackgroundSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type StartRecordCompleteCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type StartRecordFailCallback = (res: GeneralCallbackResult) => void;
+
+    interface StartRecordSuccessCallbackResult {
+        /**
+         * 录音文件的临时路径 (本地路径)
+         */
+        tempFilePath: string;
+        errMsg: string;
+    }
+
+    /**
+     * 接口调用成功的回调函数
+     */
+    type WxStartRecordSuccessCallback = (
+                result: StartRecordSuccessCallbackResult
+            ) => void;
+
+    interface WxStartRecordOption {
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: StartRecordCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: StartRecordFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: WxStartRecordSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type StartWifiCompleteCallback = (res: WifiError) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type StartWifiFailCallback = (res: WifiError) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type StartWifiSuccessCallback = (res: WifiError) => void;
+
+    interface StartWifiOption {
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: StartWifiCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: StartWifiFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: StartWifiSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type StopBackgroundAudioCompleteCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type StopBackgroundAudioFailCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type StopBackgroundAudioSuccessCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+
+    interface StopBackgroundAudioOption {
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: StopBackgroundAudioCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: StopBackgroundAudioFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: StopBackgroundAudioSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type StopDeviceMotionListeningCompleteCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type StopDeviceMotionListeningFailCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type StopDeviceMotionListeningSuccessCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+
+    interface StopDeviceMotionListeningOption {
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: StopDeviceMotionListeningCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: StopDeviceMotionListeningFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: StopDeviceMotionListeningSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type StopHCECompleteCallback = (res: NFCError) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type StopHCEFailCallback = (res: NFCError) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type StopHCESuccessCallback = (res: NFCError) => void;
+
+    interface StopHCEOption {
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: StopHCECompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: StopHCEFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: StopHCESuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type StopLocalServiceDiscoveryCompleteCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+
+    interface StopLocalServiceDiscoveryFailCallbackResult {
+        /**
+         * 错误信息
+         *
+         * 可选值:
+         * - 'task not found': 在当前没有处在搜索服务中的情况下调用 stopLocalServiceDiscovery;
+         */
+        errMsg: string;
+    }
+
+    /**
+     * 接口调用失败的回调函数
+     */
+    type StopLocalServiceDiscoveryFailCallback = (
+                result: StopLocalServiceDiscoveryFailCallbackResult
+            ) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type StopLocalServiceDiscoverySuccessCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+
+    interface StopLocalServiceDiscoveryOption {
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: StopLocalServiceDiscoveryCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: StopLocalServiceDiscoveryFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: StopLocalServiceDiscoverySuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type StopLocationUpdateCompleteCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type StopLocationUpdateFailCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type StopLocationUpdateSuccessCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+
+    interface StopLocationUpdateOption {
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: StopLocationUpdateCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: StopLocationUpdateFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: StopLocationUpdateSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type StopRecordCompleteCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type StopRecordFailCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type WxStopRecordSuccessCallback = (res: GeneralCallbackResult) => void;
+
+    interface WxStopRecordOption {
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: StopRecordCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: StopRecordFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: WxStopRecordSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type StopVoiceCompleteCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type StopVoiceFailCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type StopVoiceSuccessCallback = (res: GeneralCallbackResult) => void;
+
+    interface StopVoiceOption {
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: StopVoiceCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: StopVoiceFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: StopVoiceSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type StopWifiCompleteCallback = (res: WifiError) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type StopWifiFailCallback = (res: WifiError) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type StopWifiSuccessCallback = (res: WifiError) => void;
+
+    interface StopWifiOption {
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: StopWifiCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: StopWifiFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: StopWifiSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type UpdateShareMenuCompleteCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type UpdateShareMenuFailCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type UpdateShareMenuSuccessCallback = (res: GeneralCallbackResult) => void;
+
+    /**
+     * 参数列表
+     */
+    interface UpdatableMessageFrontEndParameter {
+        /**
+         * 参数名
+         */
+        name: string;
+        /**
+         * 参数值
+         */
+        value: string;
+    }
+
+    /**
+     * 动态消息的模板信息
+     *
+     * 最低基础库: `2.4.0`
+     */
+    interface UpdatableMessageFrontEndTemplateInfo {
+        /**
+         * 参数列表
+         */
+        parameterList: UpdatableMessageFrontEndParameter[];
+    }
+
+    interface UpdateShareMenuOption {
+        /**
+         * 动态消息的 activityId。通过 [updatableMessage.createActivityId](https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/updatable-message/updatableMessage.createActivityId.html) 接口获取
+         *
+         * 最低基础库: `2.4.0`
+         */
+        activityId?: string;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: UpdateShareMenuCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: UpdateShareMenuFailCallback;
+        /**
+         * 是否是动态消息,详见[动态消息](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/share/updatable-message.html)
+         *
+         * 最低基础库: `2.4.0`
+         */
+        isUpdatableMessage?: boolean;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: UpdateShareMenuSuccessCallback;
+        /**
+         * 动态消息的模板信息
+         *
+         * 最低基础库: `2.4.0`
+         */
+        templateInfo?: UpdatableMessageFrontEndTemplateInfo;
+        /**
+         * 群待办消息的id,通过toDoActivityId可以把多个群待办消息聚合为同一个。通过 [updatableMessage.createActivityId](https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/updatable-message/updatableMessage.createActivityId.html) 接口获取。详见[群待办消息](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/share.html)
+         *
+         * 最低基础库: `2.11.0`
+         */
+        toDoActivityId?: string;
+        /**
+         * 是否使用带 shareTicket 的转发[详情](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/share.html)
+         */
+        withShareTicket?: boolean;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type UpdateVoIPChatMuteConfigCompleteCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type UpdateVoIPChatMuteConfigFailCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type UpdateVoIPChatMuteConfigSuccessCallback = (
+                res: GeneralCallbackResult
+            ) => void;
+
+    interface UpdateVoIPChatMuteConfigOption {
+        /**
+         * 静音设置
+         */
+        muteConfig: MuteConfig;
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: UpdateVoIPChatMuteConfigCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: UpdateVoIPChatMuteConfigFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: UpdateVoIPChatMuteConfigSuccessCallback;
+    }
+
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    type UpdateWeChatAppCompleteCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用失败的回调函数
+     */
+    type UpdateWeChatAppFailCallback = (res: GeneralCallbackResult) => void;
+    /**
+     * 接口调用成功的回调函数
+     */
+    type UpdateWeChatAppSuccessCallback = (res: GeneralCallbackResult) => void;
+
+    interface UpdateWeChatAppOption {
+        /**
+         * 接口调用结束的回调函数(调用成功、失败都会执行)
+         */
+        complete?: UpdateWeChatAppCompleteCallback;
+        /**
+         * 接口调用失败的回调函数
+         */
+        fail?: UpdateWeChatAppFailCallback;
+        /**
+         * 接口调用成功的回调函数
+         */
+        success?: UpdateWeChatAppSuccessCallback;
+    }
+}
+
+/**
+ * Uni 实例变量
+ *
+ * 文档: [http://uniapp.dcloud.io/api](http://uniapp.dcloud.io/api)
+ */
+declare let uni: UniApp.Uni;

+ 13 - 0
mini/types-tips-test/uni-app/vue.d.ts

xqd
@@ -0,0 +1,13 @@
+// @ts-ignore
+import Vue from "vue";
+
+declare module "vue/types/options" {
+    // @ts-ignore
+  type Hooks = App.AppInstance & Page.PageInstance;
+    interface ComponentOptions<V extends Vue> extends Hooks {
+        /**
+         * 组件类型
+         */
+        mpType?: string;
+    }
+}

+ 39 - 0
mini/types-tips-test/vue/types/index.d.ts

xqd
@@ -0,0 +1,39 @@
+import { Vue } from "./vue";
+import "./umd";
+
+export default Vue;
+
+export {
+  CreateElement,
+  VueConstructor
+} from "./vue";
+
+export {
+  Component,
+  AsyncComponent,
+  ComponentOptions,
+  FunctionalComponentOptions,
+  RenderContext,
+  PropType,
+  PropOptions,
+  ComputedOptions,
+  WatchHandler,
+  WatchOptions,
+  WatchOptionsWithHandler,
+  DirectiveFunction,
+  DirectiveOptions
+} from "./options";
+
+export {
+  PluginFunction,
+  PluginObject
+} from "./plugin";
+
+export {
+  VNodeChildren,
+  VNodeChildrenArrayContents,
+  VNode,
+  VNodeComponentOptions,
+  VNodeData,
+  VNodeDirective
+} from "./vnode";

+ 207 - 0
mini/types-tips-test/vue/types/options.d.ts

xqd
@@ -0,0 +1,207 @@
+import { Vue, CreateElement, CombinedVueInstance } from "./vue";
+import { VNode, VNodeData, VNodeDirective, NormalizedScopedSlot } from "./vnode";
+
+type Constructor = {
+  new (...args: any[]): any;
+}
+
+// we don't support infer props in async component
+// N.B. ComponentOptions<V> is contravariant, the default generic should be bottom type
+export type Component<Data=DefaultData<never>, Methods=DefaultMethods<never>, Computed=DefaultComputed, Props=DefaultProps> =
+  | typeof Vue
+  | FunctionalComponentOptions<Props>
+  | ComponentOptions<never, Data, Methods, Computed, Props>
+
+type EsModule<T> = T | { default: T }
+
+type ImportedComponent<Data=DefaultData<never>, Methods=DefaultMethods<never>, Computed=DefaultComputed, Props=DefaultProps>
+  = EsModule<Component<Data, Methods, Computed, Props>>
+
+export type AsyncComponent<Data=DefaultData<never>, Methods=DefaultMethods<never>, Computed=DefaultComputed, Props=DefaultProps>
+  = AsyncComponentPromise<Data, Methods, Computed, Props>
+  | AsyncComponentFactory<Data, Methods, Computed, Props>
+
+export type AsyncComponentPromise<Data=DefaultData<never>, Methods=DefaultMethods<never>, Computed=DefaultComputed, Props=DefaultProps> = (
+  resolve: (component: Component<Data, Methods, Computed, Props>) => void,
+  reject: (reason?: any) => void
+) => Promise<ImportedComponent<Data, Methods, Computed, Props>> | void;
+
+export type AsyncComponentFactory<Data=DefaultData<never>, Methods=DefaultMethods<never>, Computed=DefaultComputed, Props=DefaultProps> = () => {
+  component: Promise<ImportedComponent<Data, Methods, Computed, Props>>;
+  loading?: ImportedComponent;
+  error?: ImportedComponent;
+  delay?: number;
+  timeout?: number;
+}
+
+/**
+ * When the `Computed` type parameter on `ComponentOptions` is inferred,
+ * it should have a property with the return type of every get-accessor.
+ * Since there isn't a way to query for the return type of a function, we allow TypeScript
+ * to infer from the shape of `Accessors<Computed>` and work backwards.
+ */
+export type Accessors<T> = {
+  [K in keyof T]: (() => T[K]) | ComputedOptions<T[K]>
+}
+
+type DataDef<Data, Props, V> = Data | ((this: Readonly<Props> & V) => Data)
+/**
+ * This type should be used when an array of strings is used for a component's `props` value.
+ */
+export type ThisTypedComponentOptionsWithArrayProps<V extends Vue, Data, Methods, Computed, PropNames extends string> =
+  object &
+  ComponentOptions<V, DataDef<Data, Record<PropNames, any>, V>, Methods, Computed, PropNames[], Record<PropNames, any>> &
+  ThisType<CombinedVueInstance<V, Data, Methods, Computed, Readonly<Record<PropNames, any>>>>;
+
+/**
+ * This type should be used when an object mapped to `PropOptions` is used for a component's `props` value.
+ */
+export type ThisTypedComponentOptionsWithRecordProps<V extends Vue, Data, Methods, Computed, Props> =
+  object &
+  ComponentOptions<V, DataDef<Data, Props, V>, Methods, Computed, RecordPropsDefinition<Props>, Props> &
+  ThisType<CombinedVueInstance<V, Data, Methods, Computed, Readonly<Props>>>;
+
+type DefaultData<V> =  object | ((this: V) => object);
+type DefaultProps = Record<string, any>;
+type DefaultMethods<V> =  { [key: string]: (this: V, ...args: any[]) => any };
+type DefaultComputed = { [key: string]: any };
+export interface ComponentOptions<
+  V extends Vue,
+  Data=DefaultData<V>,
+  Methods=DefaultMethods<V>,
+  Computed=DefaultComputed,
+  PropsDef=PropsDefinition<DefaultProps>,
+  Props=DefaultProps> {
+  data?: Data;
+  props?: PropsDef;
+  propsData?: object;
+  computed?: Accessors<Computed>;
+  methods?: Methods;
+  watch?: Record<string, WatchOptionsWithHandler<any> | WatchHandler<any>>;
+
+  el?: Element | string;
+  template?: string;
+  // hack is for functional component type inference, should not be used in user code
+  render?(createElement: CreateElement, hack: RenderContext<Props>): VNode;
+  renderError?(createElement: CreateElement, err: Error): VNode;
+  staticRenderFns?: ((createElement: CreateElement) => VNode)[];
+
+  beforeCreate?(this: V): void;
+  created?(): void;
+  beforeDestroy?(): void;
+  destroyed?(): void;
+  beforeMount?(): void;
+  mounted?(): void;
+  beforeUpdate?(): void;
+  updated?(): void;
+  activated?(): void;
+  deactivated?(): void;
+  errorCaptured?(err: Error, vm: Vue, info: string): boolean | void;
+  serverPrefetch?(this: V): Promise<void>;
+
+  directives?: { [key: string]: DirectiveFunction | DirectiveOptions };
+  components?: { [key: string]: Component<any, any, any, any> | AsyncComponent<any, any, any, any> };
+  transitions?: { [key: string]: object };
+  filters?: { [key: string]: Function };
+
+  provide?: object | (() => object);
+  inject?: InjectOptions;
+
+  model?: {
+    prop?: string;
+    event?: string;
+  };
+
+  parent?: Vue;
+  mixins?: (ComponentOptions<Vue> | typeof Vue)[];
+  name?: string;
+  // TODO: support properly inferred 'extends'
+  extends?: ComponentOptions<Vue> | typeof Vue;
+  delimiters?: [string, string];
+  comments?: boolean;
+  inheritAttrs?: boolean;
+}
+
+export interface FunctionalComponentOptions<Props = DefaultProps, PropDefs = PropsDefinition<Props>> {
+  name?: string;
+  props?: PropDefs;
+  model?: {
+    prop?: string;
+    event?: string;
+  };
+  inject?: InjectOptions;
+  functional: boolean;
+  render?(this: undefined, createElement: CreateElement, context: RenderContext<Props>): VNode | VNode[];
+}
+
+export interface RenderContext<Props=DefaultProps> {
+  props: Props;
+  children: VNode[];
+  slots(): any;
+  data: VNodeData;
+  parent: Vue;
+  listeners: { [key: string]: Function | Function[] };
+  scopedSlots: { [key: string]: NormalizedScopedSlot };
+  injections: any
+}
+
+export type Prop<T> = { (): T } | { new(...args: never[]): T & object } | { new(...args: string[]): Function }
+
+export type PropType<T> = Prop<T> | Prop<T>[];
+
+export type PropValidator<T> = PropOptions<T> | PropType<T>;
+
+export interface PropOptions<T=any> {
+  type?: PropType<T>;
+  required?: boolean;
+  default?: T | null | undefined | (() => T | null | undefined);
+  validator?(value: T): boolean;
+}
+
+export type RecordPropsDefinition<T> = {
+  [K in keyof T]: PropValidator<T[K]>
+}
+export type ArrayPropsDefinition<T> = (keyof T)[];
+export type PropsDefinition<T> = ArrayPropsDefinition<T> | RecordPropsDefinition<T>;
+
+export interface ComputedOptions<T> {
+  get?(): T;
+  set?(value: T): void;
+  cache?: boolean;
+}
+
+export type WatchHandler<T> = string | ((val: T, oldVal: T) => void);
+
+export interface WatchOptions {
+  deep?: boolean;
+  immediate?: boolean;
+}
+
+export interface WatchOptionsWithHandler<T> extends WatchOptions {
+  handler: WatchHandler<T>;
+}
+
+export interface DirectiveBinding extends Readonly<VNodeDirective> {
+  readonly modifiers: { [key: string]: boolean };
+}
+
+export type DirectiveFunction = (
+  el: HTMLElement,
+  binding: DirectiveBinding,
+  vnode: VNode,
+  oldVnode: VNode
+) => void;
+
+export interface DirectiveOptions {
+  bind?: DirectiveFunction;
+  inserted?: DirectiveFunction;
+  update?: DirectiveFunction;
+  componentUpdated?: DirectiveFunction;
+  unbind?: DirectiveFunction;
+}
+
+export type InjectKey = string | symbol;
+
+export type InjectOptions = {
+  [key: string]: InjectKey | { from?: InjectKey, default?: any }
+} | string[];

+ 8 - 0
mini/types-tips-test/vue/types/plugin.d.ts

xqd
@@ -0,0 +1,8 @@
+import { Vue as _Vue } from "./vue";
+
+export type PluginFunction<T> = (Vue: typeof _Vue, options?: T) => void;
+
+export interface PluginObject<T> {
+  install: PluginFunction<T>;
+  [key: string]: any;
+}

+ 48 - 0
mini/types-tips-test/vue/types/umd.d.ts

xqd
@@ -0,0 +1,48 @@
+import * as V from "./index";
+import {
+  DefaultData,
+  DefaultProps,
+  DefaultMethods,
+  DefaultComputed,
+  PropsDefinition
+} from "./options";
+
+// Expose some types for backward compatibility...
+declare namespace Vue {
+  // vue.d.ts
+  export type CreateElement = V.CreateElement;
+  export type VueConstructor<V extends Vue = Vue> = V.VueConstructor<V>;
+
+  // options.d.ts
+  export type Component<Data=DefaultData<never>, Methods=DefaultMethods<never>, Computed=DefaultComputed, Props=DefaultProps> = V.Component<Data, Methods, Computed, Props>;
+  export type AsyncComponent<Data=DefaultData<never>, Methods=DefaultMethods<never>, Computed=DefaultComputed, Props=DefaultProps> = V.AsyncComponent<Data, Methods, Computed, Props>;
+  export type ComponentOptions<V extends Vue, Data=DefaultData<V>, Methods=DefaultMethods<V>, Computed=DefaultComputed, PropsDef=PropsDefinition<DefaultProps>, Props=DefaultProps> = V.ComponentOptions<V, Data, Methods, Computed, PropsDef, Props>;
+  export type FunctionalComponentOptions<Props = DefaultProps, PropDefs = PropsDefinition<Props>> = V.FunctionalComponentOptions<Props, PropDefs>;
+  export type RenderContext<Props=DefaultProps> = V.RenderContext<Props>;
+  export type PropType<T> = V.PropType<T>;
+  export type PropOptions<T=any> = V.PropOptions<T>;
+  export type ComputedOptions<T> = V.ComputedOptions<T>;
+  export type WatchHandler<T> = V.WatchHandler<T>;
+  export type WatchOptions = V.WatchOptions;
+  export type WatchOptionsWithHandler<T> = V.WatchOptionsWithHandler<T>;
+  export type DirectiveFunction = V.DirectiveFunction;
+  export type DirectiveOptions = V.DirectiveOptions;
+
+  // plugin.d.ts
+  export type PluginFunction<T> = V.PluginFunction<T>;
+  export type PluginObject<T> = V.PluginObject<T>;
+
+  // vnode.d.ts
+  export type VNodeChildren = V.VNodeChildren;
+  export type VNodeChildrenArrayContents = V.VNodeChildrenArrayContents;
+  export type VNode = V.VNode;
+  export type VNodeComponentOptions = V.VNodeComponentOptions;
+  export type VNodeData = V.VNodeData;
+  export type VNodeDirective = V.VNodeDirective;
+}
+
+declare class Vue extends V.default {}
+
+export = Vue;
+
+export as namespace Vue;

+ 76 - 0
mini/types-tips-test/vue/types/vnode.d.ts

xqd
@@ -0,0 +1,76 @@
+import { Vue } from "./vue";
+
+export type ScopedSlot = (props: any) => ScopedSlotReturnValue;
+type ScopedSlotReturnValue = VNode | string | boolean | null | undefined | ScopedSlotReturnArray;
+interface ScopedSlotReturnArray extends Array<ScopedSlotReturnValue> {}
+
+// Scoped slots are guaranteed to return Array of VNodes starting in 2.6
+export type NormalizedScopedSlot = (props: any) => ScopedSlotChildren;
+export type ScopedSlotChildren = VNode[] | undefined;
+
+// Relaxed type compatible with $createElement
+export type VNodeChildren = VNodeChildrenArrayContents | [ScopedSlot] | string | boolean | null | undefined;
+export interface VNodeChildrenArrayContents extends Array<VNodeChildren | VNode> {}
+
+export interface VNode {
+  tag?: string;
+  data?: VNodeData;
+  children?: VNode[];
+  text?: string;
+  elm?: Node;
+  ns?: string;
+  context?: Vue;
+  key?: string | number | symbol | boolean;
+  componentOptions?: VNodeComponentOptions;
+  componentInstance?: Vue;
+  parent?: VNode;
+  raw?: boolean;
+  isStatic?: boolean;
+  isRootInsert: boolean;
+  isComment: boolean;
+}
+
+export interface VNodeComponentOptions {
+  Ctor: typeof Vue;
+  propsData?: object;
+  listeners?: object;
+  children?: VNode[];
+  tag?: string;
+}
+
+export interface VNodeData {
+  key?: string | number;
+  slot?: string;
+  scopedSlots?: { [key: string]: ScopedSlot | undefined };
+  ref?: string;
+  refInFor?: boolean;
+  tag?: string;
+  staticClass?: string;
+  class?: any;
+  staticStyle?: { [key: string]: any };
+  style?: string | object[] | object;
+  props?: { [key: string]: any };
+  attrs?: { [key: string]: any };
+  domProps?: { [key: string]: any };
+  hook?: { [key: string]: Function };
+  on?: { [key: string]: Function | Function[] };
+  nativeOn?: { [key: string]: Function | Function[] };
+  transition?: object;
+  show?: boolean;
+  inlineTemplate?: {
+    render: Function;
+    staticRenderFns: Function[];
+  };
+  directives?: VNodeDirective[];
+  keepAlive?: boolean;
+}
+
+export interface VNodeDirective {
+  name: string;
+  value?: any;
+  oldValue?: any;
+  expression?: string;
+  arg?: string;
+  oldArg?: string;
+  modifiers?: { [key: string]: boolean };
+}

+ 132 - 0
mini/types-tips-test/vue/types/vue.d.ts

xqd
@@ -0,0 +1,132 @@
+import {
+  Component,
+  AsyncComponent,
+  ComponentOptions,
+  FunctionalComponentOptions,
+  WatchOptionsWithHandler,
+  WatchHandler,
+  DirectiveOptions,
+  DirectiveFunction,
+  RecordPropsDefinition,
+  ThisTypedComponentOptionsWithArrayProps,
+  ThisTypedComponentOptionsWithRecordProps,
+  WatchOptions,
+} from "./options";
+import { VNode, VNodeData, VNodeChildren, NormalizedScopedSlot } from "./vnode";
+import { PluginFunction, PluginObject } from "./plugin";
+
+export interface CreateElement {
+  (tag?: string | Component<any, any, any, any> | AsyncComponent<any, any, any, any> | (() => Component), children?: VNodeChildren): VNode;
+  (tag?: string | Component<any, any, any, any> | AsyncComponent<any, any, any, any> | (() => Component), data?: VNodeData, children?: VNodeChildren): VNode;
+}
+
+export interface Vue {
+  readonly $el: Element;
+  readonly $options: ComponentOptions<Vue>;
+  readonly $parent: Vue;
+  readonly $root: Vue;
+  readonly $children: Vue[];
+  readonly $refs: { [key: string]: Vue | Element | (Vue | Element)[] | undefined };
+  readonly $slots: { [key: string]: VNode[] | undefined };
+  readonly $scopedSlots: { [key: string]: NormalizedScopedSlot | undefined };
+  readonly $isServer: boolean;
+  readonly $data: Record<string, any>;
+  readonly $props: Record<string, any>;
+  readonly $ssrContext: any;
+  readonly $vnode: VNode;
+  readonly $attrs: Record<string, string>;
+  readonly $listeners: Record<string, Function | Function[]>;
+
+  $mount(elementOrSelector?: Element | string, hydrating?: boolean): this;
+  $forceUpdate(): void;
+  $destroy(): void;
+  $set: typeof Vue.set;
+  $delete: typeof Vue.delete;
+  $watch(
+    expOrFn: string,
+    callback: (this: this, n: any, o: any) => void,
+    options?: WatchOptions
+  ): (() => void);
+  $watch<T>(
+    expOrFn: (this: this) => T,
+    callback: (this: this, n: T, o: T) => void,
+    options?: WatchOptions
+  ): (() => void);
+  $on(event: string | string[], callback: Function): this;
+  $once(event: string | string[], callback: Function): this;
+  $off(event?: string | string[], callback?: Function): this;
+  $emit(event: string, ...args: any[]): this;
+  $nextTick(callback: (this: this) => void): void;
+  $nextTick(): Promise<void>;
+  $createElement: CreateElement;
+}
+
+export type CombinedVueInstance<Instance extends Vue, Data, Methods, Computed, Props> =  Data & Methods & Computed & Props & Instance;
+export type ExtendedVue<Instance extends Vue, Data, Methods, Computed, Props> = VueConstructor<CombinedVueInstance<Instance, Data, Methods, Computed, Props> & Vue>;
+
+export interface VueConfiguration {
+  silent: boolean;
+  optionMergeStrategies: any;
+  devtools: boolean;
+  productionTip: boolean;
+  performance: boolean;
+  errorHandler(err: Error, vm: Vue, info: string): void;
+  warnHandler(msg: string, vm: Vue, trace: string): void;
+  ignoredElements: (string | RegExp)[];
+  keyCodes: { [key: string]: number | number[] };
+  async: boolean;
+}
+
+export interface VueConstructor<V extends Vue = Vue> {
+  new <Data = object, Methods = object, Computed = object, PropNames extends string = never>(options?: ThisTypedComponentOptionsWithArrayProps<V, Data, Methods, Computed, PropNames>): CombinedVueInstance<V, Data, Methods, Computed, Record<PropNames, any>>;
+  // ideally, the return type should just contain Props, not Record<keyof Props, any>. But TS requires to have Base constructors with the same return type.
+  new <Data = object, Methods = object, Computed = object, Props = object>(options?: ThisTypedComponentOptionsWithRecordProps<V, Data, Methods, Computed, Props>): CombinedVueInstance<V, Data, Methods, Computed, Record<keyof Props, any>>;
+  new (options?: ComponentOptions<V>): CombinedVueInstance<V, object, object, object, Record<keyof object, any>>;
+
+  extend<Data, Methods, Computed, PropNames extends string = never>(options?: ThisTypedComponentOptionsWithArrayProps<V, Data, Methods, Computed, PropNames>): ExtendedVue<V, Data, Methods, Computed, Record<PropNames, any>>;
+  extend<Data, Methods, Computed, Props>(options?: ThisTypedComponentOptionsWithRecordProps<V, Data, Methods, Computed, Props>): ExtendedVue<V, Data, Methods, Computed, Props>;
+  extend<PropNames extends string = never>(definition: FunctionalComponentOptions<Record<PropNames, any>, PropNames[]>): ExtendedVue<V, {}, {}, {}, Record<PropNames, any>>;
+  extend<Props>(definition: FunctionalComponentOptions<Props, RecordPropsDefinition<Props>>): ExtendedVue<V, {}, {}, {}, Props>;
+  extend(options?: ComponentOptions<V>): ExtendedVue<V, {}, {}, {}, {}>;
+
+  nextTick<T>(callback: (this: T) => void, context?: T): void;
+  nextTick(): Promise<void>
+  set<T>(object: object, key: string | number, value: T): T;
+  set<T>(array: T[], key: number, value: T): T;
+  delete(object: object, key: string | number): void;
+  delete<T>(array: T[], key: number): void;
+
+  directive(
+    id: string,
+    definition?: DirectiveOptions | DirectiveFunction
+  ): DirectiveOptions;
+  filter(id: string, definition?: Function): Function;
+
+  component(id: string): VueConstructor;
+  component<VC extends VueConstructor>(id: string, constructor: VC): VC;
+  component<Data, Methods, Computed, Props>(id: string, definition: AsyncComponent<Data, Methods, Computed, Props>): ExtendedVue<V, Data, Methods, Computed, Props>;
+  component<Data, Methods, Computed, PropNames extends string = never>(id: string, definition?: ThisTypedComponentOptionsWithArrayProps<V, Data, Methods, Computed, PropNames>): ExtendedVue<V, Data, Methods, Computed, Record<PropNames, any>>;
+  component<Data, Methods, Computed, Props>(id: string, definition?: ThisTypedComponentOptionsWithRecordProps<V, Data, Methods, Computed, Props>): ExtendedVue<V, Data, Methods, Computed, Props>;
+  component<PropNames extends string>(id: string, definition: FunctionalComponentOptions<Record<PropNames, any>, PropNames[]>): ExtendedVue<V, {}, {}, {}, Record<PropNames, any>>;
+  component<Props>(id: string, definition: FunctionalComponentOptions<Props, RecordPropsDefinition<Props>>): ExtendedVue<V, {}, {}, {}, Props>;
+  component(id: string, definition?: ComponentOptions<V>): ExtendedVue<V, {}, {}, {}, {}>;
+
+  use<T>(plugin: PluginObject<T> | PluginFunction<T>, options?: T): VueConstructor<V>;
+  use(plugin: PluginObject<any> | PluginFunction<any>, ...options: any[]): VueConstructor<V>;
+  mixin(mixin: VueConstructor | ComponentOptions<Vue>): VueConstructor<V>;
+  compile(template: string): {
+    render(createElement: typeof Vue.prototype.$createElement): VNode;
+    staticRenderFns: (() => VNode)[];
+  };
+
+  observable<T>(obj: T): T;
+
+  util: {
+    warn(msg: string, vm?: InstanceType<VueConstructor>): void;
+  };
+
+  config: VueConfiguration;
+  version: string;
+}
+
+export const Vue: VueConstructor;

+ 7 - 0
mini/types-tips-test/vuex/types/README.md

xqd
@@ -0,0 +1,7 @@
+This is the TypeScript declaration of Vuex.
+
+## Testing
+
+```sh
+$ tsc -p test/tsconfig.json
+```

+ 69 - 0
mini/types-tips-test/vuex/types/helpers.d.ts

xqd
@@ -0,0 +1,69 @@
+import Vue from 'vue';
+import { Dispatch, Commit } from './index';
+
+type Dictionary<T> = { [key: string]: T };
+type Computed = () => any;
+type MutationMethod = (...args: any[]) => void;
+type ActionMethod = (...args: any[]) => Promise<any>;
+type CustomVue = Vue & Dictionary<any>;
+
+interface Mapper<R> {
+  (map: string[]): Dictionary<R>;
+  (map: Dictionary<string>): Dictionary<R>;
+}
+
+interface MapperWithNamespace<R> {
+  (namespace: string, map: string[]): Dictionary<R>;
+  (namespace: string, map: Dictionary<string>): Dictionary<R>;
+}
+
+interface FunctionMapper<F, R> {
+  (map: Dictionary<(this: CustomVue, fn: F, ...args: any[]) => any>): Dictionary<R>;
+}
+
+interface FunctionMapperWithNamespace<F, R> {
+  (
+    namespace: string,
+    map: Dictionary<(this: CustomVue, fn: F, ...args: any[]) => any>
+  ): Dictionary<R>;
+}
+
+interface MapperForState {
+  <S>(
+    map: Dictionary<(this: CustomVue, state: S, getters: any) => any>
+  ): Dictionary<Computed>;
+}
+
+interface MapperForStateWithNamespace {
+  <S>(
+    namespace: string,
+    map: Dictionary<(this: CustomVue, state: S, getters: any) => any>
+  ): Dictionary<Computed>;
+}
+
+interface NamespacedMappers {
+  mapState: Mapper<Computed> & MapperForState;
+  mapMutations: Mapper<MutationMethod> & FunctionMapper<Commit, MutationMethod>;
+  mapGetters: Mapper<Computed>;
+  mapActions: Mapper<ActionMethod> & FunctionMapper<Dispatch, ActionMethod>;
+}
+
+export declare const mapState: Mapper<Computed>
+  & MapperWithNamespace<Computed>
+  & MapperForState
+  & MapperForStateWithNamespace;
+
+export declare const mapMutations: Mapper<MutationMethod>
+  & MapperWithNamespace<MutationMethod>
+  & FunctionMapper<Commit, MutationMethod>
+  & FunctionMapperWithNamespace<Commit, MutationMethod>;
+
+export declare const mapGetters: Mapper<Computed>
+  & MapperWithNamespace<Computed>;
+
+export declare const mapActions: Mapper<ActionMethod>
+  & MapperWithNamespace<ActionMethod>
+  & FunctionMapper<Dispatch, ActionMethod>
+  & FunctionMapperWithNamespace<Dispatch, ActionMethod>;
+
+export declare function createNamespacedHelpers(namespace: string): NamespacedMappers;

+ 150 - 0
mini/types-tips-test/vuex/types/index.d.ts

xqd
@@ -0,0 +1,150 @@
+// @ts-ignore
+import _Vue, { WatchOptions } from "vue";
+
+// augment typings of Vue.js
+import "./vue";
+
+import { mapState, mapMutations, mapGetters, mapActions, createNamespacedHelpers } from "./helpers";
+
+export * from "./helpers";
+
+export declare class Store<S> {
+  constructor(options: StoreOptions<S>);
+
+  readonly state: S;
+  readonly getters: any;
+
+  replaceState(state: S): void;
+
+  dispatch: Dispatch;
+  commit: Commit;
+
+  subscribe<P extends MutationPayload>(fn: (mutation: P, state: S) => any): () => void;
+  subscribeAction<P extends ActionPayload>(fn: SubscribeActionOptions<P, S>): () => void;
+  watch<T>(getter: (state: S, getters: any) => T, cb: (value: T, oldValue: T) => void, options?: WatchOptions): () => void;
+
+  registerModule<T>(path: string, module: Module<T, S>, options?: ModuleOptions): void;
+  registerModule<T>(path: string[], module: Module<T, S>, options?: ModuleOptions): void;
+
+  unregisterModule(path: string): void;
+  unregisterModule(path: string[]): void;
+
+  hotUpdate(options: {
+    actions?: ActionTree<S, S>;
+    mutations?: MutationTree<S>;
+    getters?: GetterTree<S, S>;
+    modules?: ModuleTree<S>;
+  }): void;
+}
+
+export declare function install(Vue: typeof _Vue): void;
+
+export interface Dispatch {
+  (type: string, payload?: any, options?: DispatchOptions): Promise<any>;
+  <P extends Payload>(payloadWithType: P, options?: DispatchOptions): Promise<any>;
+}
+
+export interface Commit {
+  (type: string, payload?: any, options?: CommitOptions): void;
+  <P extends Payload>(payloadWithType: P, options?: CommitOptions): void;
+}
+
+export interface ActionContext<S, R> {
+  dispatch: Dispatch;
+  commit: Commit;
+  state: S;
+  getters: any;
+  rootState: R;
+  rootGetters: any;
+}
+
+export interface Payload {
+  type: string;
+}
+
+export interface MutationPayload extends Payload {
+  payload: any;
+}
+
+export interface ActionPayload extends Payload {
+  payload: any;
+}
+
+export type ActionSubscriber<P, S> = (action: P, state: S) => any;
+
+export interface ActionSubscribersObject<P, S> {
+  before?: ActionSubscriber<P, S>;
+  after?: ActionSubscriber<P, S>;
+}
+
+export type SubscribeActionOptions<P, S> = ActionSubscriber<P, S> | ActionSubscribersObject<P, S>;
+
+export interface DispatchOptions {
+  root?: boolean;
+}
+
+export interface CommitOptions {
+  silent?: boolean;
+  root?: boolean;
+}
+
+export interface StoreOptions<S> {
+  state?: S | (() => S);
+  getters?: GetterTree<S, S>;
+  actions?: ActionTree<S, S>;
+  mutations?: MutationTree<S>;
+  modules?: ModuleTree<S>;
+  plugins?: Plugin<S>[];
+  strict?: boolean;
+}
+
+export type ActionHandler<S, R> = (this: Store<R>, injectee: ActionContext<S, R>, payload: any) => any;
+export interface ActionObject<S, R> {
+  root?: boolean;
+  handler: ActionHandler<S, R>;
+}
+
+export type Getter<S, R> = (state: S, getters: any, rootState: R, rootGetters: any) => any;
+export type Action<S, R> = ActionHandler<S, R> | ActionObject<S, R>;
+export type Mutation<S> = (state: S, payload: any) => any;
+export type Plugin<S> = (store: Store<S>) => any;
+
+export interface Module<S, R> {
+  namespaced?: boolean;
+  state?: S | (() => S);
+  getters?: GetterTree<S, R>;
+  actions?: ActionTree<S, R>;
+  mutations?: MutationTree<S>;
+  modules?: ModuleTree<R>;
+}
+
+export interface ModuleOptions {
+  preserveState?: boolean;
+}
+
+export interface GetterTree<S, R> {
+  [key: string]: Getter<S, R>;
+}
+
+export interface ActionTree<S, R> {
+  [key: string]: Action<S, R>;
+}
+
+export interface MutationTree<S> {
+  [key: string]: Mutation<S>;
+}
+
+export interface ModuleTree<R> {
+  [key: string]: Module<any, R>;
+}
+
+declare const _default: {
+  Store: typeof Store;
+  install: typeof install;
+  mapState: typeof mapState,
+  mapMutations: typeof mapMutations,
+  mapGetters: typeof mapGetters,
+  mapActions: typeof mapActions,
+  createNamespacedHelpers: typeof createNamespacedHelpers,
+};
+export default _default;

+ 19 - 0
mini/types-tips-test/vuex/types/vue.d.ts

xqd
@@ -0,0 +1,19 @@
+/**
+ * Extends interfaces in Vue.js
+ */
+
+// @ts-ignore
+import Vue, { ComponentOptions } from "vue";
+import { Store } from "./index";
+
+declare module "vue/types/options" {
+  interface ComponentOptions<V extends Vue> {
+    store?: Store<any>;
+  }
+}
+
+declare module "vue/types/vue" {
+  interface Vue {
+    $store: Store<any>;
+  }
+}

+ 79 - 0
mini/uni.scss

xqd
@@ -0,0 +1,79 @@
+/**
+ * 这里是uni-app内置的常用样式变量
+ *
+ * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
+ * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
+ *
+ */
+
+/**
+ * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
+ *
+ * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
+ */
+
+/* 颜色变量 */
+@import 'uni_modules/uview-ui/theme.scss';
+
+@import 'static/css/variable.scss';
+
+/* 行为相关颜色 */
+$uni-color-primary: #007aff;
+$uni-color-success: #4cd964;
+$uni-color-warning: #f0ad4e;
+$uni-color-error: #dd524d;
+
+/* 文字基本颜色 */
+$uni-text-color:#333;//基本色
+$uni-text-color-inverse:#fff;//反色
+$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息
+$uni-text-color-placeholder: #808080;
+$uni-text-color-disable:#c0c0c0;
+
+/* 背景颜色 */
+$uni-bg-color:#ffffff;
+$uni-bg-color-grey:#f8f8f8;
+$uni-bg-color-hover:#f1f1f1;//点击状态颜色
+$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色
+
+/* 边框颜色 */
+$uni-border-color:#c8c7cc;
+
+/* 尺寸变量 */
+
+/* 文字尺寸 */
+$uni-font-size-sm:12px;
+$uni-font-size-base:14px;
+$uni-font-size-lg:16;
+
+/* 图片尺寸 */
+$uni-img-size-sm:20px;
+$uni-img-size-base:26px;
+$uni-img-size-lg:40px;
+
+/* Border Radius */
+$uni-border-radius-sm: 2px;
+$uni-border-radius-base: 3px;
+$uni-border-radius-lg: 6px;
+$uni-border-radius-circle: 50%;
+
+/* 水平间距 */
+$uni-spacing-row-sm: 5px;
+$uni-spacing-row-base: 10px;
+$uni-spacing-row-lg: 15px;
+
+/* 垂直间距 */
+$uni-spacing-col-sm: 4px;
+$uni-spacing-col-base: 8px;
+$uni-spacing-col-lg: 12px;
+
+/* 透明度 */
+$uni-opacity-disabled: 0.3; // 组件禁用态的透明度
+
+/* 文章场景相关 */
+$uni-color-title: #2C405A; // 文章标题颜色
+$uni-font-size-title:20px;
+$uni-color-subtitle: #555555; // 二级标题颜色
+$uni-font-size-subtitle:26px;
+$uni-color-paragraph: #3F536E; // 文章段落颜色
+$uni-font-size-paragraph:15px;

+ 21 - 0
mini/uni_modules/uview-ui/LICENSE

xqd
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2020 www.uviewui.com
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.

+ 104 - 0
mini/uni_modules/uview-ui/README.md

xqd
@@ -0,0 +1,104 @@
+<p align="center">
+    <img alt="logo" src="https://uviewui.com/common/logo.png" width="120" height="120" style="margin-bottom: 10px;">
+</p>
+<h3 align="center" style="margin: 30px 0 30px;font-weight: bold;font-size:40px;">uView</h3>
+<h3 align="center">多平台快速开发的UI框架</h3>
+
+## 说明
+
+uView UI,是[uni-app](https://uniapp.dcloud.io/)生态优秀的UI框架,全面的组件和便捷的工具会让您信手拈来,如鱼得水
+
+## 特性
+
+- 兼容安卓,iOS,微信小程序,H5,QQ小程序,百度小程序,支付宝小程序,头条小程序
+- 60+精选组件,功能丰富,多端兼容,让您快速集成,开箱即用
+- 众多贴心的JS利器,让您飞镖在手,召之即来,百步穿杨
+- 众多的常用页面和布局,让您专注逻辑,事半功倍
+- 详尽的文档支持,现代化的演示效果
+- 按需引入,精简打包体积
+
+
+## 安装
+
+```bash
+# npm方式安装,插件市场导入无需执行此命令
+npm i uview-ui
+```
+
+## 快速上手
+
+1. `main.js`引入uView库
+```js
+// main.js
+import uView from 'uview-ui';
+Vue.use(uView);
+```
+
+2. `App.vue`引入基础样式(注意style标签需声明scss属性支持)
+```css
+/* App.vue */
+<style lang="scss">
+@import "uview-ui/index.scss";
+</style>
+```
+
+3. `uni.scss`引入全局scss变量文件
+```css
+/* uni.scss */
+@import "uview-ui/theme.scss";
+```
+
+4. `pages.json`配置easycom规则(按需引入)
+
+```js
+// pages.json
+{
+	"easycom": {
+		// npm安装的方式不需要前面的"@/",下载安装的方式需要"@/"
+		// npm安装方式
+		"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
+		// 下载安装方式
+		// "^u-(.*)": "@/uview-ui/components/u-$1/u-$1.vue"
+	},
+	// 此为本身已有的内容
+	"pages": [
+		// ......
+	]
+}
+```
+
+请通过[快速上手](https://www.uviewui.com/components/quickstart.html)了解更详细的内容 
+
+## 使用方法
+配置easycom规则后,自动按需引入,无需`import`组件,直接引用即可。
+
+```html
+<template>
+	<u-button text="按钮"></u-button>
+</template>
+```
+
+请通过[快速上手](https://www.uviewui.com/components/quickstart.html)了解更详细的内容 
+
+## 链接
+
+- [官方文档](https://www.uviewui.com/)
+- [更新日志](https://www.www.uviewui.com/components/changelog.html)
+- [升级指南](https://www.uviewui.com/components/changelog.html)
+- [关于我们](https://www.uviewui.com/cooperation/about.html)
+
+## 预览
+
+您可以通过**微信**扫码,查看最佳的演示效果。
+<br>
+<br>
+<img src="https://uviewui.com/common/weixin_mini_qrcode.png" width="220" height="220" >
+
+## 捐赠uView的研发
+
+uView文档和源码全部开源免费,如果您认为uView帮到了您的开发工作,您可以捐赠uView的研发工作,捐赠无门槛,哪怕是一杯可乐也好(相信这比打赏主播更有意义)。
+
+<img src="https://uviewui.com/common/alipay.png" width="220" ><img style="margin-left: 100px;" src="https://uviewui.com/common/wechat.png" width="220" >
+
+## 版权信息
+uView遵循[MIT](https://en.wikipedia.org/wiki/MIT_License)开源协议,意味着您无需支付任何费用,也无需授权,即可将uView应用到您的产品中。

+ 293 - 0
mini/uni_modules/uview-ui/changelog.md

xqd
@@ -0,0 +1,293 @@
+## 2.0.29(2022-03-13)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 修复`u--text`组件设置`decoration`属性未生效的问题
+2. 修复`u-datetime-picker`使用`formatter`后返回值不正确
+3. 修复`u-datetime-picker` `intercept` 可能为undefined
+4. 修复已设置单位 uni..config.unit = 'rpx'时,线型指示器 `transform` 的位置翻倍,导致指示器超出宽度
+5. 修复mixin中bem方法生成的类名在支付宝和字节小程序中失效
+6. 修复默认值传值为空的时候,打开`u-datetime-picker`报错,不能选中第一列时间的bug
+7. 修复`u-datetime-picker`使用`formatter`后返回值不正确
+8. 修复`u-image`组件`loading`无效果的问题
+9. 修复`config.unit`属性设为`rpx`时,导航栏占用高度不足导致塌陷的问题
+10. 修复`u-datetime-picker`组件`itemHeight`无效问题
+11. 其他修复
+## 2.0.28(2022-02-22)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. search组件新增searchIconSize属性
+2. 兼容Safari/Webkit中传入时间格式如2022-02-17 12:00:56
+3. 修复text value.js 判断日期出format错误问题
+4. priceFormat格式化金额出现精度错误
+5. priceFormat在部分情况下出现精度损失问题
+6. 优化表单rules提示
+7. 修复avatar组件src为空时,展示状态不对
+8. 其他修复
+## 2.0.27(2022-01-28)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1.样式修复
+## 2.0.26(2022-01-28)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1.样式修复
+## 2.0.25(2022-01-27)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 修复text组件mode=price时,可能会导致精度错误的问题
+2. 添加$u.setConfig()方法,可设置uView内置的config, props, zIndex, color属性,详见:[修改uView内置配置方案](https://uviewui.com/components/setting.html#%E9%BB%98%E8%AE%A4%E5%8D%95%E4%BD%8D%E9%85%8D%E7%BD%AE)
+3. 优化form组件在errorType=toast时,如果输入错误页面会有抖动的问题
+4. 修复$u.addUnit()对配置默认单位可能无效的问题
+## 2.0.24(2022-01-25)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 修复swiper在current指定非0时缩放有误
+2. 修复u-icon添加stop属性的时候报错
+3. 优化遗留的通过正则判断rpx单位的问题
+4. 优化Layout布局 vue使用gutter时,会超出固定区域
+5. 优化search组件高度单位问题(rpx -> px)
+6. 修复u-image slot 加载和错误的图片失去了高度
+7. 修复u-index-list中footer插槽与header插槽存在性判断错误
+8. 修复部分机型下u-popup关闭时会闪烁
+9. 修复u-image在nvue-app下失去宽高
+10. 修复u-popup运行报错
+11. 修复u-tooltip报错
+12. 修复box-sizing在app下的警告
+13. 修复u-navbar在小程序中报运行时错误
+14. 其他修复
+## 2.0.23(2022-01-24)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 修复image组件在hx3.3.9的nvue下可能会显示异常的问题
+2. 修复col组件gutter参数带rpx单位处理不正确的问题
+3. 修复text组件单行时无法显示省略号的问题
+4. navbar添加titleStyle参数
+5. 升级到hx3.3.9可消除nvue下控制台样式警告的问题
+## 2.0.22(2022-01-19)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. $u.page()方法优化,避免在特殊场景可能报错的问题
+2. picker组件添加immediateChange参数
+3. 新增$u.pages()方法
+## 2.0.21(2022-01-19)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 优化:form组件在用户设置rules的时候提示用户model必传
+2. 优化遗留的通过正则判断rpx单位的问题
+3. 修复微信小程序环境中tabbar组件开启safeAreaInsetBottom属性后,placeholder高度填充不正确
+4. 修复swiper在current指定非0时缩放有误
+5. 修复u-icon添加stop属性的时候报错
+6. 修复upload组件在accept=all的时候没有作用
+7. 修复在text组件mode为phone时call属性无效的问题
+8. 处理u-form clearValidate方法
+9. 其他修复
+## 2.0.20(2022-01-14)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 修复calendar默认会选择一个日期,如果直接点确定的话,无法取到值的问题
+2. 修复Slider缺少disabled props 还有注释
+3. 修复u-notice-bar点击事件无法拿到index索引值的问题
+4. 修复u-collapse-item在vue文件下,app端自定义插槽不生效的问题
+5. 优化头像为空时显示默认头像 
+6. 修复图片地址赋值后判断加载状态为完成问题
+7. 修复日历滚动到默认日期月份区域
+8. search组件暴露点击左边icon事件
+9. 修复u-form clearValidate方法不生效
+10. upload h5端增加返回文件参数(文件的name参数)
+11. 处理upload选择文件后url为blob类型无法预览的问题
+12. u-code-input 修复输入框没有往左移出一半屏幕
+13. 修复Upload上传 disabled为true时,控制台报hoverClass类型错误
+14. 临时处理ios app下grid点击坍塌问题
+15. 其他修复
+## 2.0.19(2021-12-29)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 优化微信小程序包体积可在微信中预览,请升级HbuilderX3.3.4,同时在“运行->运行到小程序模拟器”中勾选“运行时是否压缩代码”
+2. 优化微信小程序setData性能,处理某些方法如$u.route()无法在模板中使用的问题
+3. navbar添加autoBack参数
+4. 允许avatar组件的事件冒泡
+5. 修复cell组件报错问题
+6. 其他修复
+## 2.0.18(2021-12-28)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 修复app端编译报错问题
+2. 重新处理微信小程序端setData过大的性能问题
+3. 修复边框问题
+4. 修复最大最小月份不大于0则没有数据出现的问题
+5. 修复SwipeAction微信小程序端无法上下滑动问题
+6. 修复input的placeholder在小程序端默认显示为true问题
+7. 修复divider组件click事件无效问题
+8. 修复u-code-input maxlength 属性值为 String 类型时显示异常
+9. 修复当 grid只有 1到2时 在小程序端algin设置无效的问题
+10. 处理form-item的label为top时,取消错误提示的左边距
+11. 其他修复
+## 2.0.17(2021-12-26)
+## uView正在参与开源中国的“年度最佳项目”评选,之前投过票的现在也可以投票,恳请同学们投一票,[点此帮助uView](https://www.oschina.net/project/top_cn_2021/?id=583)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 解决HBuilderX3.3.3.20211225版本导致的样式问题
+2. calendar日历添加monthNum参数
+3. navbar添加center slot
+## 2.0.16(2021-12-25)
+## uView正在参与开源中国的“年度最佳项目”评选,之前投过票的现在也可以投票,恳请同学们投一票,[点此帮助uView](https://www.oschina.net/project/top_cn_2021/?id=583)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 解决微信小程序setData性能问题
+2. 修复count-down组件change事件不触发问题
+## 2.0.15(2021-12-21)
+## uView正在参与开源中国的“年度最佳项目”评选,之前投过票的现在也可以投票,恳请同学们投一票,[点此帮助uView](https://www.oschina.net/project/top_cn_2021/?id=583)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 修复Cell单元格titleWidth无效
+2. 修复cheakbox组件ischecked不更新
+3. 修复keyboard是否显示"."按键默认值问题
+4. 修复number-keyboard是否显示键盘的"."符号问题
+5. 修复Input输入框 readonly无效
+6. 修复u-avatar 导致打包app、H5时候报错问题
+7. 修复Upload上传deletable无效
+8. 修复upload当设置maxSize时无效的问题
+9. 修复tabs lineWidth传入带单位的字符串的时候偏移量计算错误问题
+10. 修复rate组件在有padding的view内,显示的星星位置和可触摸区域不匹配,无法正常选中星星
+## 2.0.13(2021-12-14)
+## [点击加群交流反馈:364463526](https://jq.qq.com/?_chanwv=1027&k=mCxS3TGY)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 修复配置默认单位为rpx可能会导致自定义导航栏高度异常的问题
+## 2.0.12(2021-12-14)
+## [点击加群交流反馈:364463526](https://jq.qq.com/?_chanwv=1027&k=mCxS3TGY)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 修复tabs组件在vue环境下划线消失的问题
+2. 修复upload组件在安卓小程序无法选择视频的问题
+3. 添加uni.$u.config.unit配置,用于配置参数默认单位,详见:[默认单位配置](https://www.uviewui.com/components/setting.html#%E9%BB%98%E8%AE%A4%E5%8D%95%E4%BD%8D%E9%85%8D%E7%BD%AE)
+4. 修复textarea组件在没绑定v-model时,字符统计不生效问题
+5. 修复nvue下控制是否出现滚动条失效问题
+## 2.0.11(2021-12-13)
+## [点击加群交流反馈:364463526](https://jq.qq.com/?_chanwv=1027&k=mCxS3TGY)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. text组件align参数无效的问题
+2. subsection组件添加keyName参数
+3. upload组件无法判断[Object file]类型的问题
+4. 处理notify层级过低问题
+5. codeInput组件添加disabledDot参数
+6. 处理actionSheet组件round参数无效的问题
+7. calendar组件添加round参数用于控制圆角值
+8. 处理swipeAction组件在vue环境下默认被打开的问题
+9. button组件的throttleTime节流参数无效的问题
+10. 解决u-notify手动关闭方法close()无效的问题
+11. input组件readonly不生效问题
+12. tag组件type参数为info不生效问题
+## 2.0.10(2021-12-08)
+## [点击加群交流反馈:364463526](https://jq.qq.com/?_chanwv=1027&k=mCxS3TGY)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 修复button sendMessagePath属性不生效
+2. 修复DatetimePicker选择器title无效
+3. 修复u-toast设置loading=true不生效
+4. 修复u-text金额模式传0报错
+5. 修复u-toast组件的icon属性配置不生效
+6. button的icon在特殊场景下的颜色优化
+7. IndexList优化,增加#
+## 2.0.9(2021-12-01)
+## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 优化swiper的height支持100%值(仅vue有效),修复嵌入视频时click事件无法触发的问题
+2. 优化tabs组件对list值为空的判断,或者动态变化list时重新计算相关尺寸的问题
+3. 优化datetime-picker组件逻辑,让其后续打开的默认值为上一次的选中值,需要通过v-model绑定值才有效
+4. 修复upload内嵌在其他组件中,选择图片可能不会换行的问题
+## 2.0.8(2021-12-01)
+## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 修复toast的position参数无效问题
+2. 处理input在ios nvue上无法获得焦点的问题
+3. avatar-group组件添加extraValue参数,让剩余展示数量可手动控制
+4. tabs组件添加keyName参数用于配置从对象中读取的键名
+5. 处理text组件名字脱敏默认配置无效的问题
+6. 处理picker组件item文本太长换行问题
+## 2.0.7(2021-11-30)
+## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 修复radio和checkbox动态改变v-model无效的问题。
+2. 优化form规则validator在微信小程序用法
+3. 修复backtop组件mode参数在微信小程序无效的问题
+4. 处理Album的previewFullImage属性无效的问题
+5. 处理u-datetime-picker组件mode='time'在选择改变时间时,控制台报错的问题
+## 2.0.6(2021-11-27)
+## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 处理tag组件在vue下边框无效的问题。
+2. 处理popup组件圆角参数可能无效的问题。
+3. 处理tabs组件lineColor参数可能无效的问题。
+4. propgress组件在值很小时,显示异常的问题。
+## 2.0.5(2021-11-25)
+## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. calendar在vue下显示异常问题。 
+2. form组件labelPosition和errorType参数无效的问题
+3. input组件inputAlign无效的问题
+4. 其他一些修复
+## 2.0.4(2021-11-23)
+## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+0. input组件缺失@confirm事件,以及subfix和prefix无效问题
+1. component.scss文件样式在vue下干扰全局布局问题
+2. 修复subsection在vue环境下表现异常的问题
+3. tag组件的bgColor等参数无效的问题
+4. upload组件不换行的问题
+5. 其他的一些修复处理
+## 2.0.3(2021-11-16)
+## [点击加群交流反馈:1129077272](https://jq.qq.com/?_wv=1027&k=KnbeceDU)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. uView2.0已实现全面兼容nvue
+2. uView2.0对1.x进行了架构重构,细节和性能都有极大提升
+3. 目前uView2.0为公测阶段,相关细节可能会有变动
+4. 我们写了一份与1.x的对比指南,详见[对比1.x](https://www.uviewui.com/components/diff1.x.html)
+5. 处理modal的confirm回调事件拼写错误问题
+6. 处理input组件@input事件参数错误问题
+7. 其他一些修复
+## 2.0.2(2021-11-16)
+## [点击加群交流反馈:1129077272](https://jq.qq.com/?_wv=1027&k=KnbeceDU)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. uView2.0已实现全面兼容nvue
+2. uView2.0对1.x进行了架构重构,细节和性能都有极大提升
+3. 目前uView2.0为公测阶段,相关细节可能会有变动
+4. 我们写了一份与1.x的对比指南,详见[对比1.x](https://www.uviewui.com/components/diff1.x.html)
+5. 修复input组件formatter参数缺失问题
+6. 优化loading-icon组件的scss写法问题,防止不兼容新版本scss
+## 2.0.0(2020-11-15)
+## [点击加群交流反馈:1129077272](https://jq.qq.com/?_wv=1027&k=KnbeceDU)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. uView2.0已实现全面兼容nvue
+2. uView2.0对1.x进行了架构重构,细节和性能都有极大提升
+3. 目前uView2.0为公测阶段,相关细节可能会有变动
+4. 我们写了一份与1.x的对比指南,详见[对比1.x](https://www.uviewui.com/components/diff1.x.html)
+5. 修复input组件formatter参数缺失问题
+
+

+ 78 - 0
mini/uni_modules/uview-ui/components/u--form/u--form.vue

xqd
@@ -0,0 +1,78 @@
+<template>
+	<uvForm
+		ref="uForm"
+		:model="model"
+		:rules="rules"
+		:errorType="errorType"
+		:borderBottom="borderBottom"
+		:labelPosition="labelPosition"
+		:labelWidth="labelWidth"
+		:labelAlign="labelAlign"
+		:labelStyle="labelStyle"
+		:customStyle="customStyle"
+	>
+		<slot />
+	</uvForm>
+</template>
+
+<script>
+	/**
+	 * 此组件存在的理由是,在nvue下,u-form被uni-app官方占用了,u-form在nvue中相当于form组件
+	 * 所以在nvue下,取名为u--form,内部其实还是u-form.vue,只不过做一层中转
+	 */
+	import uvForm from '../u-form/u-form.vue';
+	import props from '../u-form/props.js'
+	export default {
+		// #ifdef MP-WEIXIN
+		name: 'u-form',
+		// #endif
+		// #ifndef MP-WEIXIN
+		name: 'u--form',
+		// #endif
+		mixins: [uni.$u.mpMixin, props, uni.$u.mixin],
+		components: {
+			uvForm
+		},
+		created() {
+			this.children = []
+		},
+		methods: {
+			// 手动设置校验的规则,如果规则中有函数的话,微信小程序中会过滤掉,所以只能手动调用设置规则
+			setRules(rules) {
+				this.$refs.uForm.setRules(rules)
+			},
+			validate() {
+				/**
+				 * 在微信小程序中,通过this.$parent拿到的父组件是u--form,而不是其内嵌的u-form
+				 * 导致在u-form组件中,拿不到对应的children数组,从而校验无效,所以这里每次调用u-form组件中的
+				 * 对应方法的时候,在小程序中都先将u--form的children赋值给u-form中的children
+				 */
+				// #ifdef MP-WEIXIN
+				this.setMpData()
+				// #endif
+				return this.$refs.uForm.validate()
+			},
+			validateField(value, callback) {
+				// #ifdef MP-WEIXIN
+				this.setMpData()
+				// #endif
+				return this.$refs.uForm.validateField(value, callback)
+			},
+			resetFields() {
+				// #ifdef MP-WEIXIN
+				this.setMpData()
+				// #endif
+				return this.$refs.uForm.resetFields()
+			},
+			clearValidate(props) {
+				// #ifdef MP-WEIXIN
+				this.setMpData()
+				// #endif
+				return this.$refs.uForm.clearValidate(props)
+			},
+			setMpData() {
+				this.$refs.uForm.children = this.children
+			}
+		},
+	}
+</script>

+ 47 - 0
mini/uni_modules/uview-ui/components/u--image/u--image.vue

xqd
@@ -0,0 +1,47 @@
+<template>
+	<uvImage 
+		:src="src"
+		:mode="mode"
+		:width="width"
+		:height="height"
+		:shape="shape"
+		:radius="radius"
+		:lazyLoad="lazyLoad"
+		:showMenuByLongpress="showMenuByLongpress"
+		:loadingIcon="loadingIcon"
+		:errorIcon="errorIcon"
+		:showLoading="showLoading"
+		:showError="showError"
+		:fade="fade"
+		:webp="webp"
+		:duration="duration"
+		:bgColor="bgColor"
+		:customStyle="customStyle"
+		@click="$emit('click')"
+		@error="$emit('error')"
+		@load="$emit('load')"
+	>
+		<template v-slot:loading>
+			<slot name="loading"></slot>
+		</template>
+		<template v-slot:error>
+			<slot name="error"></slot>
+		</template>
+	</uvImage>
+</template>
+
+<script>
+	/**
+	 * 此组件存在的理由是,在nvue下,u-image被uni-app官方占用了,u-image在nvue中相当于image组件
+	 * 所以在nvue下,取名为u--image,内部其实还是u-iamge.vue,只不过做一层中转
+	 */
+	import uvImage from '../u-image/u-image.vue';
+	import props from '../u-image/props.js';
+	export default {
+		name: 'u--image',
+		mixins: [uni.$u.mpMixin, props, uni.$u.mixin],
+		components: {
+			uvImage
+		},
+	}
+</script>

Nem az összes módosított fájl került megjelenítésre, mert túl sok fájl változott