{"version":3,"file":"index.cjs","names":["Base64","EventEmitter"],"sources":["../node_modules/eventemitter3/index.js","../node_modules/eventemitter3/index.mjs","../node_modules/crypto-js/core.js","../node_modules/crypto-js/sha256.js","../node_modules/crypto-js/hmac.js","../node_modules/crypto-js/hmac-sha256.js","../node_modules/crypto-js/enc-base64.js","../src/index.ts"],"sourcesContent":["'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n  , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n  Events.prototype = Object.create(null);\n\n  //\n  // This hack is needed because the `__proto__` property is still inherited in\n  // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n  //\n  if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n  this.fn = fn;\n  this.context = context;\n  this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n  if (typeof fn !== 'function') {\n    throw new TypeError('The listener must be a function');\n  }\n\n  var listener = new EE(fn, context || emitter, once)\n    , evt = prefix ? prefix + event : event;\n\n  if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n  else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n  else emitter._events[evt] = [emitter._events[evt], listener];\n\n  return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n  if (--emitter._eventsCount === 0) emitter._events = new Events();\n  else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n  this._events = new Events();\n  this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n  var names = []\n    , events\n    , name;\n\n  if (this._eventsCount === 0) return names;\n\n  for (name in (events = this._events)) {\n    if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n  }\n\n  if (Object.getOwnPropertySymbols) {\n    return names.concat(Object.getOwnPropertySymbols(events));\n  }\n\n  return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n  var evt = prefix ? prefix + event : event\n    , handlers = this._events[evt];\n\n  if (!handlers) return [];\n  if (handlers.fn) return [handlers.fn];\n\n  for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n    ee[i] = handlers[i].fn;\n  }\n\n  return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n  var evt = prefix ? prefix + event : event\n    , listeners = this._events[evt];\n\n  if (!listeners) return 0;\n  if (listeners.fn) return 1;\n  return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return false;\n\n  var listeners = this._events[evt]\n    , len = arguments.length\n    , args\n    , i;\n\n  if (listeners.fn) {\n    if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n    switch (len) {\n      case 1: return listeners.fn.call(listeners.context), true;\n      case 2: return listeners.fn.call(listeners.context, a1), true;\n      case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n      case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n      case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n      case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n    }\n\n    for (i = 1, args = new Array(len -1); i < len; i++) {\n      args[i - 1] = arguments[i];\n    }\n\n    listeners.fn.apply(listeners.context, args);\n  } else {\n    var length = listeners.length\n      , j;\n\n    for (i = 0; i < length; i++) {\n      if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n      switch (len) {\n        case 1: listeners[i].fn.call(listeners[i].context); break;\n        case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n        case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n        case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n        default:\n          if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n            args[j - 1] = arguments[j];\n          }\n\n          listeners[i].fn.apply(listeners[i].context, args);\n      }\n    }\n  }\n\n  return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n  return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n  return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return this;\n  if (!fn) {\n    clearEvent(this, evt);\n    return this;\n  }\n\n  var listeners = this._events[evt];\n\n  if (listeners.fn) {\n    if (\n      listeners.fn === fn &&\n      (!once || listeners.once) &&\n      (!context || listeners.context === context)\n    ) {\n      clearEvent(this, evt);\n    }\n  } else {\n    for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n      if (\n        listeners[i].fn !== fn ||\n        (once && !listeners[i].once) ||\n        (context && listeners[i].context !== context)\n      ) {\n        events.push(listeners[i]);\n      }\n    }\n\n    //\n    // Reset the array, or remove it completely if we have no more listeners.\n    //\n    if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n    else clearEvent(this, evt);\n  }\n\n  return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n  var evt;\n\n  if (event) {\n    evt = prefix ? prefix + event : event;\n    if (this._events[evt]) clearEvent(this, evt);\n  } else {\n    this._events = new Events();\n    this._eventsCount = 0;\n  }\n\n  return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n  module.exports = EventEmitter;\n}\n","import EventEmitter from './index.js'\n\nexport { EventEmitter }\nexport default EventEmitter\n",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t    var crypto;\n\n\t    // Native crypto from window (Browser)\n\t    if (typeof window !== 'undefined' && window.crypto) {\n\t        crypto = window.crypto;\n\t    }\n\n\t    // Native crypto in web worker (Browser)\n\t    if (typeof self !== 'undefined' && self.crypto) {\n\t        crypto = self.crypto;\n\t    }\n\n\t    // Native crypto from worker\n\t    if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t        crypto = globalThis.crypto;\n\t    }\n\n\t    // Native (experimental IE 11) crypto from window (Browser)\n\t    if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t        crypto = window.msCrypto;\n\t    }\n\n\t    // Native crypto from global (NodeJS)\n\t    if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t        crypto = global.crypto;\n\t    }\n\n\t    // Native crypto import via require (NodeJS)\n\t    if (!crypto && typeof require === 'function') {\n\t        try {\n\t            crypto = require('crypto');\n\t        } catch (err) {}\n\t    }\n\n\t    /*\n\t     * Cryptographically secure pseudorandom number generator\n\t     *\n\t     * As Math.random() is cryptographically not safe to use\n\t     */\n\t    var cryptoSecureRandomInt = function () {\n\t        if (crypto) {\n\t            // Use getRandomValues method (Browser)\n\t            if (typeof crypto.getRandomValues === 'function') {\n\t                try {\n\t                    return crypto.getRandomValues(new Uint32Array(1))[0];\n\t                } catch (err) {}\n\t            }\n\n\t            // Use randomBytes method (NodeJS)\n\t            if (typeof crypto.randomBytes === 'function') {\n\t                try {\n\t                    return crypto.randomBytes(4).readInt32LE();\n\t                } catch (err) {}\n\t            }\n\t        }\n\n\t        throw new Error('Native crypto module could not be used to get secure random number.');\n\t    };\n\n\t    /*\n\t     * Local polyfill of Object.create\n\n\t     */\n\t    var create = Object.create || (function () {\n\t        function F() {}\n\n\t        return function (obj) {\n\t            var subtype;\n\n\t            F.prototype = obj;\n\n\t            subtype = new F();\n\n\t            F.prototype = null;\n\n\t            return subtype;\n\t        };\n\t    }());\n\n\t    /**\n\t     * CryptoJS namespace.\n\t     */\n\t    var C = {};\n\n\t    /**\n\t     * Library namespace.\n\t     */\n\t    var C_lib = C.lib = {};\n\n\t    /**\n\t     * Base object for prototypal inheritance.\n\t     */\n\t    var Base = C_lib.Base = (function () {\n\n\n\t        return {\n\t            /**\n\t             * Creates a new object that inherits from this object.\n\t             *\n\t             * @param {Object} overrides Properties to copy into the new object.\n\t             *\n\t             * @return {Object} The new object.\n\t             *\n\t             * @static\n\t             *\n\t             * @example\n\t             *\n\t             *     var MyType = CryptoJS.lib.Base.extend({\n\t             *         field: 'value',\n\t             *\n\t             *         method: function () {\n\t             *         }\n\t             *     });\n\t             */\n\t            extend: function (overrides) {\n\t                // Spawn\n\t                var subtype = create(this);\n\n\t                // Augment\n\t                if (overrides) {\n\t                    subtype.mixIn(overrides);\n\t                }\n\n\t                // Create default initializer\n\t                if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t                    subtype.init = function () {\n\t                        subtype.$super.init.apply(this, arguments);\n\t                    };\n\t                }\n\n\t                // Initializer's prototype is the subtype object\n\t                subtype.init.prototype = subtype;\n\n\t                // Reference supertype\n\t                subtype.$super = this;\n\n\t                return subtype;\n\t            },\n\n\t            /**\n\t             * Extends this object and runs the init method.\n\t             * Arguments to create() will be passed to init().\n\t             *\n\t             * @return {Object} The new object.\n\t             *\n\t             * @static\n\t             *\n\t             * @example\n\t             *\n\t             *     var instance = MyType.create();\n\t             */\n\t            create: function () {\n\t                var instance = this.extend();\n\t                instance.init.apply(instance, arguments);\n\n\t                return instance;\n\t            },\n\n\t            /**\n\t             * Initializes a newly created object.\n\t             * Override this method to add some logic when your objects are created.\n\t             *\n\t             * @example\n\t             *\n\t             *     var MyType = CryptoJS.lib.Base.extend({\n\t             *         init: function () {\n\t             *             // ...\n\t             *         }\n\t             *     });\n\t             */\n\t            init: function () {\n\t            },\n\n\t            /**\n\t             * Copies properties into this object.\n\t             *\n\t             * @param {Object} properties The properties to mix in.\n\t             *\n\t             * @example\n\t             *\n\t             *     MyType.mixIn({\n\t             *         field: 'value'\n\t             *     });\n\t             */\n\t            mixIn: function (properties) {\n\t                for (var propertyName in properties) {\n\t                    if (properties.hasOwnProperty(propertyName)) {\n\t                        this[propertyName] = properties[propertyName];\n\t                    }\n\t                }\n\n\t                // IE won't copy toString using the loop above\n\t                if (properties.hasOwnProperty('toString')) {\n\t                    this.toString = properties.toString;\n\t                }\n\t            },\n\n\t            /**\n\t             * Creates a copy of this object.\n\t             *\n\t             * @return {Object} The clone.\n\t             *\n\t             * @example\n\t             *\n\t             *     var clone = instance.clone();\n\t             */\n\t            clone: function () {\n\t                return this.init.prototype.extend(this);\n\t            }\n\t        };\n\t    }());\n\n\t    /**\n\t     * An array of 32-bit words.\n\t     *\n\t     * @property {Array} words The array of 32-bit words.\n\t     * @property {number} sigBytes The number of significant bytes in this word array.\n\t     */\n\t    var WordArray = C_lib.WordArray = Base.extend({\n\t        /**\n\t         * Initializes a newly created word array.\n\t         *\n\t         * @param {Array} words (Optional) An array of 32-bit words.\n\t         * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.lib.WordArray.create();\n\t         *     var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t         *     var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t         */\n\t        init: function (words, sigBytes) {\n\t            words = this.words = words || [];\n\n\t            if (sigBytes != undefined) {\n\t                this.sigBytes = sigBytes;\n\t            } else {\n\t                this.sigBytes = words.length * 4;\n\t            }\n\t        },\n\n\t        /**\n\t         * Converts this word array to a string.\n\t         *\n\t         * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t         *\n\t         * @return {string} The stringified word array.\n\t         *\n\t         * @example\n\t         *\n\t         *     var string = wordArray + '';\n\t         *     var string = wordArray.toString();\n\t         *     var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t         */\n\t        toString: function (encoder) {\n\t            return (encoder || Hex).stringify(this);\n\t        },\n\n\t        /**\n\t         * Concatenates a word array to this word array.\n\t         *\n\t         * @param {WordArray} wordArray The word array to append.\n\t         *\n\t         * @return {WordArray} This word array.\n\t         *\n\t         * @example\n\t         *\n\t         *     wordArray1.concat(wordArray2);\n\t         */\n\t        concat: function (wordArray) {\n\t            // Shortcuts\n\t            var thisWords = this.words;\n\t            var thatWords = wordArray.words;\n\t            var thisSigBytes = this.sigBytes;\n\t            var thatSigBytes = wordArray.sigBytes;\n\n\t            // Clamp excess bits\n\t            this.clamp();\n\n\t            // Concat\n\t            if (thisSigBytes % 4) {\n\t                // Copy one byte at a time\n\t                for (var i = 0; i < thatSigBytes; i++) {\n\t                    var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t                    thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t                }\n\t            } else {\n\t                // Copy one word at a time\n\t                for (var j = 0; j < thatSigBytes; j += 4) {\n\t                    thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t                }\n\t            }\n\t            this.sigBytes += thatSigBytes;\n\n\t            // Chainable\n\t            return this;\n\t        },\n\n\t        /**\n\t         * Removes insignificant bits.\n\t         *\n\t         * @example\n\t         *\n\t         *     wordArray.clamp();\n\t         */\n\t        clamp: function () {\n\t            // Shortcuts\n\t            var words = this.words;\n\t            var sigBytes = this.sigBytes;\n\n\t            // Clamp\n\t            words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t            words.length = Math.ceil(sigBytes / 4);\n\t        },\n\n\t        /**\n\t         * Creates a copy of this word array.\n\t         *\n\t         * @return {WordArray} The clone.\n\t         *\n\t         * @example\n\t         *\n\t         *     var clone = wordArray.clone();\n\t         */\n\t        clone: function () {\n\t            var clone = Base.clone.call(this);\n\t            clone.words = this.words.slice(0);\n\n\t            return clone;\n\t        },\n\n\t        /**\n\t         * Creates a word array filled with random bytes.\n\t         *\n\t         * @param {number} nBytes The number of random bytes to generate.\n\t         *\n\t         * @return {WordArray} The random word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.lib.WordArray.random(16);\n\t         */\n\t        random: function (nBytes) {\n\t            var words = [];\n\n\t            for (var i = 0; i < nBytes; i += 4) {\n\t                words.push(cryptoSecureRandomInt());\n\t            }\n\n\t            return new WordArray.init(words, nBytes);\n\t        }\n\t    });\n\n\t    /**\n\t     * Encoder namespace.\n\t     */\n\t    var C_enc = C.enc = {};\n\n\t    /**\n\t     * Hex encoding strategy.\n\t     */\n\t    var Hex = C_enc.Hex = {\n\t        /**\n\t         * Converts a word array to a hex string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The hex string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            // Shortcuts\n\t            var words = wordArray.words;\n\t            var sigBytes = wordArray.sigBytes;\n\n\t            // Convert\n\t            var hexChars = [];\n\t            for (var i = 0; i < sigBytes; i++) {\n\t                var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t                hexChars.push((bite >>> 4).toString(16));\n\t                hexChars.push((bite & 0x0f).toString(16));\n\t            }\n\n\t            return hexChars.join('');\n\t        },\n\n\t        /**\n\t         * Converts a hex string to a word array.\n\t         *\n\t         * @param {string} hexStr The hex string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t         */\n\t        parse: function (hexStr) {\n\t            // Shortcut\n\t            var hexStrLength = hexStr.length;\n\n\t            // Convert\n\t            var words = [];\n\t            for (var i = 0; i < hexStrLength; i += 2) {\n\t                words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t            }\n\n\t            return new WordArray.init(words, hexStrLength / 2);\n\t        }\n\t    };\n\n\t    /**\n\t     * Latin1 encoding strategy.\n\t     */\n\t    var Latin1 = C_enc.Latin1 = {\n\t        /**\n\t         * Converts a word array to a Latin1 string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The Latin1 string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            // Shortcuts\n\t            var words = wordArray.words;\n\t            var sigBytes = wordArray.sigBytes;\n\n\t            // Convert\n\t            var latin1Chars = [];\n\t            for (var i = 0; i < sigBytes; i++) {\n\t                var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t                latin1Chars.push(String.fromCharCode(bite));\n\t            }\n\n\t            return latin1Chars.join('');\n\t        },\n\n\t        /**\n\t         * Converts a Latin1 string to a word array.\n\t         *\n\t         * @param {string} latin1Str The Latin1 string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t         */\n\t        parse: function (latin1Str) {\n\t            // Shortcut\n\t            var latin1StrLength = latin1Str.length;\n\n\t            // Convert\n\t            var words = [];\n\t            for (var i = 0; i < latin1StrLength; i++) {\n\t                words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t            }\n\n\t            return new WordArray.init(words, latin1StrLength);\n\t        }\n\t    };\n\n\t    /**\n\t     * UTF-8 encoding strategy.\n\t     */\n\t    var Utf8 = C_enc.Utf8 = {\n\t        /**\n\t         * Converts a word array to a UTF-8 string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The UTF-8 string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            try {\n\t                return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t            } catch (e) {\n\t                throw new Error('Malformed UTF-8 data');\n\t            }\n\t        },\n\n\t        /**\n\t         * Converts a UTF-8 string to a word array.\n\t         *\n\t         * @param {string} utf8Str The UTF-8 string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t         */\n\t        parse: function (utf8Str) {\n\t            return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t        }\n\t    };\n\n\t    /**\n\t     * Abstract buffered block algorithm template.\n\t     *\n\t     * The property blockSize must be implemented in a concrete subtype.\n\t     *\n\t     * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t     */\n\t    var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t        /**\n\t         * Resets this block algorithm's data buffer to its initial state.\n\t         *\n\t         * @example\n\t         *\n\t         *     bufferedBlockAlgorithm.reset();\n\t         */\n\t        reset: function () {\n\t            // Initial values\n\t            this._data = new WordArray.init();\n\t            this._nDataBytes = 0;\n\t        },\n\n\t        /**\n\t         * Adds new data to this block algorithm's buffer.\n\t         *\n\t         * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t         *\n\t         * @example\n\t         *\n\t         *     bufferedBlockAlgorithm._append('data');\n\t         *     bufferedBlockAlgorithm._append(wordArray);\n\t         */\n\t        _append: function (data) {\n\t            // Convert string to WordArray, else assume WordArray already\n\t            if (typeof data == 'string') {\n\t                data = Utf8.parse(data);\n\t            }\n\n\t            // Append\n\t            this._data.concat(data);\n\t            this._nDataBytes += data.sigBytes;\n\t        },\n\n\t        /**\n\t         * Processes available data blocks.\n\t         *\n\t         * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t         *\n\t         * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t         *\n\t         * @return {WordArray} The processed data.\n\t         *\n\t         * @example\n\t         *\n\t         *     var processedData = bufferedBlockAlgorithm._process();\n\t         *     var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t         */\n\t        _process: function (doFlush) {\n\t            var processedWords;\n\n\t            // Shortcuts\n\t            var data = this._data;\n\t            var dataWords = data.words;\n\t            var dataSigBytes = data.sigBytes;\n\t            var blockSize = this.blockSize;\n\t            var blockSizeBytes = blockSize * 4;\n\n\t            // Count blocks ready\n\t            var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t            if (doFlush) {\n\t                // Round up to include partial blocks\n\t                nBlocksReady = Math.ceil(nBlocksReady);\n\t            } else {\n\t                // Round down to include only full blocks,\n\t                // less the number of blocks that must remain in the buffer\n\t                nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t            }\n\n\t            // Count words ready\n\t            var nWordsReady = nBlocksReady * blockSize;\n\n\t            // Count bytes ready\n\t            var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t            // Process blocks\n\t            if (nWordsReady) {\n\t                for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t                    // Perform concrete-algorithm logic\n\t                    this._doProcessBlock(dataWords, offset);\n\t                }\n\n\t                // Remove processed words\n\t                processedWords = dataWords.splice(0, nWordsReady);\n\t                data.sigBytes -= nBytesReady;\n\t            }\n\n\t            // Return processed words\n\t            return new WordArray.init(processedWords, nBytesReady);\n\t        },\n\n\t        /**\n\t         * Creates a copy of this object.\n\t         *\n\t         * @return {Object} The clone.\n\t         *\n\t         * @example\n\t         *\n\t         *     var clone = bufferedBlockAlgorithm.clone();\n\t         */\n\t        clone: function () {\n\t            var clone = Base.clone.call(this);\n\t            clone._data = this._data.clone();\n\n\t            return clone;\n\t        },\n\n\t        _minBufferSize: 0\n\t    });\n\n\t    /**\n\t     * Abstract hasher template.\n\t     *\n\t     * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t     */\n\t    var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t        /**\n\t         * Configuration options.\n\t         */\n\t        cfg: Base.extend(),\n\n\t        /**\n\t         * Initializes a newly created hasher.\n\t         *\n\t         * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t         *\n\t         * @example\n\t         *\n\t         *     var hasher = CryptoJS.algo.SHA256.create();\n\t         */\n\t        init: function (cfg) {\n\t            // Apply config defaults\n\t            this.cfg = this.cfg.extend(cfg);\n\n\t            // Set initial values\n\t            this.reset();\n\t        },\n\n\t        /**\n\t         * Resets this hasher to its initial state.\n\t         *\n\t         * @example\n\t         *\n\t         *     hasher.reset();\n\t         */\n\t        reset: function () {\n\t            // Reset data buffer\n\t            BufferedBlockAlgorithm.reset.call(this);\n\n\t            // Perform concrete-hasher logic\n\t            this._doReset();\n\t        },\n\n\t        /**\n\t         * Updates this hasher with a message.\n\t         *\n\t         * @param {WordArray|string} messageUpdate The message to append.\n\t         *\n\t         * @return {Hasher} This hasher.\n\t         *\n\t         * @example\n\t         *\n\t         *     hasher.update('message');\n\t         *     hasher.update(wordArray);\n\t         */\n\t        update: function (messageUpdate) {\n\t            // Append\n\t            this._append(messageUpdate);\n\n\t            // Update the hash\n\t            this._process();\n\n\t            // Chainable\n\t            return this;\n\t        },\n\n\t        /**\n\t         * Finalizes the hash computation.\n\t         * Note that the finalize operation is effectively a destructive, read-once operation.\n\t         *\n\t         * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t         *\n\t         * @return {WordArray} The hash.\n\t         *\n\t         * @example\n\t         *\n\t         *     var hash = hasher.finalize();\n\t         *     var hash = hasher.finalize('message');\n\t         *     var hash = hasher.finalize(wordArray);\n\t         */\n\t        finalize: function (messageUpdate) {\n\t            // Final message update\n\t            if (messageUpdate) {\n\t                this._append(messageUpdate);\n\t            }\n\n\t            // Perform concrete-hasher logic\n\t            var hash = this._doFinalize();\n\n\t            return hash;\n\t        },\n\n\t        blockSize: 512/32,\n\n\t        /**\n\t         * Creates a shortcut function to a hasher's object interface.\n\t         *\n\t         * @param {Hasher} hasher The hasher to create a helper for.\n\t         *\n\t         * @return {Function} The shortcut function.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t         */\n\t        _createHelper: function (hasher) {\n\t            return function (message, cfg) {\n\t                return new hasher.init(cfg).finalize(message);\n\t            };\n\t        },\n\n\t        /**\n\t         * Creates a shortcut function to the HMAC's object interface.\n\t         *\n\t         * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t         *\n\t         * @return {Function} The shortcut function.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t         */\n\t        _createHmacHelper: function (hasher) {\n\t            return function (message, key) {\n\t                return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t            };\n\t        }\n\t    });\n\n\t    /**\n\t     * Algorithm namespace.\n\t     */\n\t    var C_algo = C.algo = {};\n\n\t    return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var Hasher = C_lib.Hasher;\n\t    var C_algo = C.algo;\n\n\t    // Initialization and round constants tables\n\t    var H = [];\n\t    var K = [];\n\n\t    // Compute constants\n\t    (function () {\n\t        function isPrime(n) {\n\t            var sqrtN = Math.sqrt(n);\n\t            for (var factor = 2; factor <= sqrtN; factor++) {\n\t                if (!(n % factor)) {\n\t                    return false;\n\t                }\n\t            }\n\n\t            return true;\n\t        }\n\n\t        function getFractionalBits(n) {\n\t            return ((n - (n | 0)) * 0x100000000) | 0;\n\t        }\n\n\t        var n = 2;\n\t        var nPrime = 0;\n\t        while (nPrime < 64) {\n\t            if (isPrime(n)) {\n\t                if (nPrime < 8) {\n\t                    H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t                }\n\t                K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t                nPrime++;\n\t            }\n\n\t            n++;\n\t        }\n\t    }());\n\n\t    // Reusable object\n\t    var W = [];\n\n\t    /**\n\t     * SHA-256 hash algorithm.\n\t     */\n\t    var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t        _doReset: function () {\n\t            this._hash = new WordArray.init(H.slice(0));\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\t            // Shortcut\n\t            var H = this._hash.words;\n\n\t            // Working variables\n\t            var a = H[0];\n\t            var b = H[1];\n\t            var c = H[2];\n\t            var d = H[3];\n\t            var e = H[4];\n\t            var f = H[5];\n\t            var g = H[6];\n\t            var h = H[7];\n\n\t            // Computation\n\t            for (var i = 0; i < 64; i++) {\n\t                if (i < 16) {\n\t                    W[i] = M[offset + i] | 0;\n\t                } else {\n\t                    var gamma0x = W[i - 15];\n\t                    var gamma0  = ((gamma0x << 25) | (gamma0x >>> 7))  ^\n\t                                  ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t                                   (gamma0x >>> 3);\n\n\t                    var gamma1x = W[i - 2];\n\t                    var gamma1  = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t                                  ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t                                   (gamma1x >>> 10);\n\n\t                    W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t                }\n\n\t                var ch  = (e & f) ^ (~e & g);\n\t                var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t                var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t                var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7)  | (e >>> 25));\n\n\t                var t1 = h + sigma1 + ch + K[i] + W[i];\n\t                var t2 = sigma0 + maj;\n\n\t                h = g;\n\t                g = f;\n\t                f = e;\n\t                e = (d + t1) | 0;\n\t                d = c;\n\t                c = b;\n\t                b = a;\n\t                a = (t1 + t2) | 0;\n\t            }\n\n\t            // Intermediate hash value\n\t            H[0] = (H[0] + a) | 0;\n\t            H[1] = (H[1] + b) | 0;\n\t            H[2] = (H[2] + c) | 0;\n\t            H[3] = (H[3] + d) | 0;\n\t            H[4] = (H[4] + e) | 0;\n\t            H[5] = (H[5] + f) | 0;\n\t            H[6] = (H[6] + g) | 0;\n\t            H[7] = (H[7] + h) | 0;\n\t        },\n\n\t        _doFinalize: function () {\n\t            // Shortcuts\n\t            var data = this._data;\n\t            var dataWords = data.words;\n\n\t            var nBitsTotal = this._nDataBytes * 8;\n\t            var nBitsLeft = data.sigBytes * 8;\n\n\t            // Add padding\n\t            dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t            data.sigBytes = dataWords.length * 4;\n\n\t            // Hash final blocks\n\t            this._process();\n\n\t            // Return final computed hash\n\t            return this._hash;\n\t        },\n\n\t        clone: function () {\n\t            var clone = Hasher.clone.call(this);\n\t            clone._hash = this._hash.clone();\n\n\t            return clone;\n\t        }\n\t    });\n\n\t    /**\n\t     * Shortcut function to the hasher's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     *\n\t     * @return {WordArray} The hash.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hash = CryptoJS.SHA256('message');\n\t     *     var hash = CryptoJS.SHA256(wordArray);\n\t     */\n\t    C.SHA256 = Hasher._createHelper(SHA256);\n\n\t    /**\n\t     * Shortcut function to the HMAC's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     * @param {WordArray|string} key The secret key.\n\t     *\n\t     * @return {WordArray} The HMAC.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hmac = CryptoJS.HmacSHA256(message, key);\n\t     */\n\t    C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var Base = C_lib.Base;\n\t    var C_enc = C.enc;\n\t    var Utf8 = C_enc.Utf8;\n\t    var C_algo = C.algo;\n\n\t    /**\n\t     * HMAC algorithm.\n\t     */\n\t    var HMAC = C_algo.HMAC = Base.extend({\n\t        /**\n\t         * Initializes a newly created HMAC.\n\t         *\n\t         * @param {Hasher} hasher The hash algorithm to use.\n\t         * @param {WordArray|string} key The secret key.\n\t         *\n\t         * @example\n\t         *\n\t         *     var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t         */\n\t        init: function (hasher, key) {\n\t            // Init hasher\n\t            hasher = this._hasher = new hasher.init();\n\n\t            // Convert string to WordArray, else assume WordArray already\n\t            if (typeof key == 'string') {\n\t                key = Utf8.parse(key);\n\t            }\n\n\t            // Shortcuts\n\t            var hasherBlockSize = hasher.blockSize;\n\t            var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n\t            // Allow arbitrary length keys\n\t            if (key.sigBytes > hasherBlockSizeBytes) {\n\t                key = hasher.finalize(key);\n\t            }\n\n\t            // Clamp excess bits\n\t            key.clamp();\n\n\t            // Clone key for inner and outer pads\n\t            var oKey = this._oKey = key.clone();\n\t            var iKey = this._iKey = key.clone();\n\n\t            // Shortcuts\n\t            var oKeyWords = oKey.words;\n\t            var iKeyWords = iKey.words;\n\n\t            // XOR keys with pad constants\n\t            for (var i = 0; i < hasherBlockSize; i++) {\n\t                oKeyWords[i] ^= 0x5c5c5c5c;\n\t                iKeyWords[i] ^= 0x36363636;\n\t            }\n\t            oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n\t            // Set initial values\n\t            this.reset();\n\t        },\n\n\t        /**\n\t         * Resets this HMAC to its initial state.\n\t         *\n\t         * @example\n\t         *\n\t         *     hmacHasher.reset();\n\t         */\n\t        reset: function () {\n\t            // Shortcut\n\t            var hasher = this._hasher;\n\n\t            // Reset\n\t            hasher.reset();\n\t            hasher.update(this._iKey);\n\t        },\n\n\t        /**\n\t         * Updates this HMAC with a message.\n\t         *\n\t         * @param {WordArray|string} messageUpdate The message to append.\n\t         *\n\t         * @return {HMAC} This HMAC instance.\n\t         *\n\t         * @example\n\t         *\n\t         *     hmacHasher.update('message');\n\t         *     hmacHasher.update(wordArray);\n\t         */\n\t        update: function (messageUpdate) {\n\t            this._hasher.update(messageUpdate);\n\n\t            // Chainable\n\t            return this;\n\t        },\n\n\t        /**\n\t         * Finalizes the HMAC computation.\n\t         * Note that the finalize operation is effectively a destructive, read-once operation.\n\t         *\n\t         * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t         *\n\t         * @return {WordArray} The HMAC.\n\t         *\n\t         * @example\n\t         *\n\t         *     var hmac = hmacHasher.finalize();\n\t         *     var hmac = hmacHasher.finalize('message');\n\t         *     var hmac = hmacHasher.finalize(wordArray);\n\t         */\n\t        finalize: function (messageUpdate) {\n\t            // Shortcut\n\t            var hasher = this._hasher;\n\n\t            // Compute HMAC\n\t            var innerHash = hasher.finalize(messageUpdate);\n\t            hasher.reset();\n\t            var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n\t            return hmac;\n\t        }\n\t    });\n\t}());\n\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha256\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha256\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\treturn CryptoJS.HmacSHA256;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var C_enc = C.enc;\n\n\t    /**\n\t     * Base64 encoding strategy.\n\t     */\n\t    var Base64 = C_enc.Base64 = {\n\t        /**\n\t         * Converts a word array to a Base64 string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The Base64 string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            // Shortcuts\n\t            var words = wordArray.words;\n\t            var sigBytes = wordArray.sigBytes;\n\t            var map = this._map;\n\n\t            // Clamp excess bits\n\t            wordArray.clamp();\n\n\t            // Convert\n\t            var base64Chars = [];\n\t            for (var i = 0; i < sigBytes; i += 3) {\n\t                var byte1 = (words[i >>> 2]       >>> (24 - (i % 4) * 8))       & 0xff;\n\t                var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t                var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t                var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t                for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t                    base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t                }\n\t            }\n\n\t            // Add padding\n\t            var paddingChar = map.charAt(64);\n\t            if (paddingChar) {\n\t                while (base64Chars.length % 4) {\n\t                    base64Chars.push(paddingChar);\n\t                }\n\t            }\n\n\t            return base64Chars.join('');\n\t        },\n\n\t        /**\n\t         * Converts a Base64 string to a word array.\n\t         *\n\t         * @param {string} base64Str The Base64 string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t         */\n\t        parse: function (base64Str) {\n\t            // Shortcuts\n\t            var base64StrLength = base64Str.length;\n\t            var map = this._map;\n\t            var reverseMap = this._reverseMap;\n\n\t            if (!reverseMap) {\n\t                    reverseMap = this._reverseMap = [];\n\t                    for (var j = 0; j < map.length; j++) {\n\t                        reverseMap[map.charCodeAt(j)] = j;\n\t                    }\n\t            }\n\n\t            // Ignore padding\n\t            var paddingChar = map.charAt(64);\n\t            if (paddingChar) {\n\t                var paddingIndex = base64Str.indexOf(paddingChar);\n\t                if (paddingIndex !== -1) {\n\t                    base64StrLength = paddingIndex;\n\t                }\n\t            }\n\n\t            // Convert\n\t            return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t        },\n\n\t        _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t    };\n\n\t    function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t      var words = [];\n\t      var nBytes = 0;\n\t      for (var i = 0; i < base64StrLength; i++) {\n\t          if (i % 4) {\n\t              var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t              var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t              var bitsCombined = bits1 | bits2;\n\t              words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t              nBytes++;\n\t          }\n\t      }\n\t      return WordArray.create(words, nBytes);\n\t    }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));","// ========================================================\n// iWan SDK - TypeScript Rewrite\n// ========================================================\n// Original: https://github.com/wanchain/iWan-js-sdk\n// Features:\n// - Browser + Node full support (auto detect)\n// - isTestnet convenience flag (default: false)\n// - flag option kept (matches original README)\n// - Every request 100% signed with secretKey HMAC-SHA256\n// - Robust reconnect (max tries + lock), central timeout, clean pending\n// - High performance & zero debug logs\n// - Easy extend via .call()\n// - CommonJS/ESM/TS/Browser ready (tsdown)\n\nimport { EventEmitter } from 'eventemitter3';\nimport hmacSHA256 from 'crypto-js/hmac-sha256';\nimport Base64 from 'crypto-js/enc-base64';\n\n// ====================== CONFIG ======================\nconst DEFAULT_CONFIG = {\n  mainnet: { url: 'api.wanchain.org', port: 8443 },\n  testnet: { url: 'apitest.wanchain.org', port: 8443 },\n  flag: 'ws',\n  version: 'v3',\n  clientType: 'iWanSDK',\n  clientVersion: '1.4.0',\n  timeout: 30000,\n  pingTime: 30000,\n  maxTries: 3,\n  reconnTime: 2000,\n  wsOptions: { handshakeTimeout: 12000, rejectUnauthorized: true },\n} as const;\n\n// ====================== TYPES ======================\n/**\n * iWan SDK client options\n */\nexport interface IwanClientOptions {\n  /** RPC server hostname */\n  url?: string;\n  /** RPC server port */\n  port?: number;\n  /** Connection flag (default: 'ws') */\n  flag?: string;\n  /** API version (default: 'v3') */\n  version?: string;\n  /** Client identifier */\n  clientType?: string;\n  /** Client version */\n  clientVersion?: string;\n  /** Request timeout in ms */\n  timeout?: number;\n  /** Use testnet instead of mainnet */\n  isTestnet?: boolean;\n}\n\ninterface RPCMessage {\n  jsonrpc: '2.0';\n  method: string;\n  params: Record<string, any>;\n  id: number;\n}\n\ninterface RPCResponse<T = any> {\n  jsonrpc: '2.0';\n  id: number;\n  result?: T;\n  error?: { code: number; message: string };\n}\n\ninterface PendingRequest {\n  resolve: (value: any) => void;\n  reject: (reason?: any) => void;\n  time: number;\n  timerId: ReturnType<typeof setTimeout>;\n}\n\n// ====================== CUSTOM ERROR ======================\nclass IWanError extends Error {\n  constructor(message: string, public code?: string) {\n    super(message);\n    this.name = 'IWanError';\n  }\n}\n\n// ====================== CRYPTO (Node + Browser Safe) ======================\nfunction generateSignature(secret: string, msg: string): string {\n  return Base64.stringify(hmacSHA256(msg, secret));\n}\n// /**\n//  * @deprecated Using {@link generateSignature} instead.\n//  */\n// async function generateSignatureV1(secret: string, msg: string): Promise<string> {\n//   const encoder = new TextEncoder();\n//   if (typeof window !== 'undefined' && window.crypto?.subtle) {\n//     // Browser Web Crypto\n//     const webCrypto = window.crypto;\n//     const key = await webCrypto.subtle.importKey(\n//       'raw',\n//       encoder.encode(secret),\n//       { name: 'HMAC', hash: 'SHA-256' },\n//       false,\n//       ['sign']\n//     );\n//     const sig = await webCrypto.subtle.sign('HMAC', key, encoder.encode(msg));\n//     const arr = Array.from(new Uint8Array(sig));\n//     return btoa(String.fromCharCode(...arr));\n//   }\n\n//   // Node - dynamic import for ESM compatibility\n//   // const { createHmac } = await import('crypto');\n//   // return createHmac('sha256', secret).update(msg).digest('base64');\n\n//   const { default:crypto } = await import('crypto-js');\n//   return crypto.enc.Base64.stringify(crypto.HmacSHA256(msg, secret));\n// }\n\nfunction signPayload(payload: RPCMessage, secretKey: string): RPCMessage {\n  const newPayload = { ...payload };\n  newPayload.params.timestamp = Date.now();\n  newPayload.params.signature = generateSignature(secretKey, JSON.stringify(newPayload));\n  return newPayload;\n}\n\n// ====================== MAIN CLIENT ======================\n\n/**\n * Main iWan SDK client\n *\n * @example\n * ```ts\n * const client = new IwanClient(apiKey, secretKey, { isTestnet: false });\n * const balance = await client.getBalance('WAN', '0x...');\n * ```\n */\nexport default class IwanClient extends EventEmitter {\n  private ws: WebSocket|any = null;\n  private readonly apiKey: string;\n  private readonly secretKey: string;\n  private readonly option: Required<IwanClientOptions> & { isTestnet: boolean };\n  private readonly isBrowser: boolean;\n\n  private index = 0;\n  private pending = new Map<number, PendingRequest>();\n  private heartbeatTimer: ReturnType<typeof setInterval>|null = null;\n  private reconnTimer: ReturnType<typeof setTimeout>|null = null;\n  private tries = DEFAULT_CONFIG.maxTries;\n  private lockReconnect = false;\n  private manuallyClosed = false;\n\n  private _readyPromise: Promise<void>|null = null;\n\n  /**\n   * Creates a new iWan client instance\n   * @param apiKey - Your iWan API key (required)\n   * @param secretKey - Your iWan secret key (required)\n   * @param option - Optional configuration\n   * @throws IWanError if APIKEY or SECRETKEY is missing\n   */\n  constructor(apiKey: string, secretKey: string, option: IwanClientOptions = {}) {\n    super();\n\n    if (!apiKey || !secretKey) {\n      throw new IWanError('APIKEY and SECRETKEY are both required');\n    }\n\n    this.apiKey = apiKey;\n    this.secretKey = secretKey;\n    this.isBrowser = typeof window !== 'undefined';\n\n    const net = option.isTestnet ? DEFAULT_CONFIG.testnet : DEFAULT_CONFIG.mainnet;\n    this.option = {\n      url: option.url ?? net.url,\n      port: option.port ?? net.port,\n      flag: option.flag ?? DEFAULT_CONFIG.flag,\n      version: option.version ?? DEFAULT_CONFIG.version,\n      clientType: option.clientType ?? DEFAULT_CONFIG.clientType,\n      clientVersion: option.clientVersion ?? DEFAULT_CONFIG.clientVersion,\n      timeout: option.timeout ?? DEFAULT_CONFIG.timeout,\n      isTestnet: option.isTestnet ?? false,\n    };\n\n    this.createWebSocket().catch(e => this.emit('error', e));\n  }\n\n  private get wsUrl(): string {\n    let url = `wss://${this.option.url}:${this.option.port}`;\n    if (this.option.flag) url += `/${this.option.flag}`;\n    url += `/${this.option.version}/${this.apiKey}`;\n    return url;\n  }\n\n  private async createWebSocket() {\n    let WSConstructor: any;\n    if (this.isBrowser) {\n      WSConstructor = (window as any).WebSocket;\n    } else {\n      const module = await import('ws');\n      WSConstructor = module.default ?? module;\n    }\n\n    const options = this.isBrowser ? undefined : DEFAULT_CONFIG.wsOptions;\n    this.ws = new WSConstructor(this.wsUrl, options);\n    if (this.manuallyClosed) {\n      await this.closeWebsocket();\n    }\n\n    this.ws.onopen = () => {\n      this.manuallyClosed = false;\n      this.ws.isAlive = true;\n      this.emit('open');\n      this._resolveReadyPromise();\n\n      this.startHeartbeat();\n    };\n    this.ws.onmessage = (event: any) => this.handleMessage(event.data ?? event);\n    this.ws.onerror = (err: any) => {\n      this.emit('error', err);\n      this.clearPending('Connection error, reconnecting...');\n      this._rejectReadyPromise();\n      this.reconnect();\n    };\n    this.ws.onclose = (event: any) => {\n      this.emit('close', event);\n      if (!this.manuallyClosed) {\n        this.clearPending('Connection closed by server, reconnecting...');\n        this.reconnect();\n      } else {\n        this._rejectReadyPromise();\n        this.emit('closed');\n      }\n    };\n\n    if (!this.isBrowser && this.ws.on) {\n      this.ws.on('pong', () => { this.ws.isAlive = true; });\n    }\n  }\n\n  private async closeWebsocket() {\n    if (this.ws) {\n      await new Promise<void>(resolve => {\n        const onClose = () => resolve();\n        // Compatible with Node’s ws library and browser native WebSocket\n        if (typeof this.ws.once === 'function') {\n          this.ws.once('close', onClose);\n        } else {\n          this.ws.addEventListener('close', onClose, { once: true });\n        }\n        this.ws.close(1000, 'Client manual close');\n      });\n      this.ws = null;\n    }\n    // if (this.ws) {\n    //   await new Promise<void>(resolve => {\n    //     this.ws.once('close', () => resolve());\n    //     this.ws.close(1000, 'Client manual close');\n    //   });\n    //   this.ws = null;\n    // }\n  }\n\n  // ====================== Unified processing of ready Promise (revised core） ======================\n  private _resolveReadyPromise() {\n    if (this._readyPromise) {\n      // No manual resolution is needed here, because it has already been resolved in the `once` handler.\n      this._readyPromise = null;\n    }\n  }\n\n  private _rejectReadyPromise() {\n    if (this._readyPromise) {\n      // No manual rejection is needed here, because it has already been rejected in the `once` handler.\n      this._readyPromise = null;\n    }\n  }\n\n  // ====================== Clean up old requests ======================\n  private clearPending(reason: string) {\n    const err = new IWanError(reason);\n    this.pending.forEach((p) => {\n      clearTimeout(p.timerId);\n      p.reject(err)\n    });\n    this.pending.clear();\n  }\n\n  private clearReconnTimer() {\n    if (this.reconnTimer) {\n      clearTimeout(this.reconnTimer);\n      this.reconnTimer = null;\n    }\n  }\n\n  private handleMessage(data: any) {\n    let msg: RPCResponse;\n    try {\n      const text = typeof data === 'string' ? data : data.toString();\n      msg = JSON.parse(text);\n    } catch {\n      return;\n    }\n\n    const pending = this.pending.get(msg.id);\n    if (pending) {\n      clearTimeout(pending.timerId);\n      this.pending.delete(msg.id);\n      msg.error ? pending.reject(msg.error) : pending.resolve(msg.result);\n    }\n  }\n\n  private startHeartbeat() {\n    if (!this.isOpen() && this.manuallyClosed) return;\n\n    this.stopHeartbeat();\n\n    this.heartbeatTimer = setInterval(() => {\n      if (!this.isOpen() || this.manuallyClosed || this.isBrowser) return;\n\n      if (!this.ws.isAlive) {\n        this.tries--;\n        if (this.tries < 0) this.reconnect();\n      } else {\n        this.ws.isAlive = false;\n        this.ws.ping();\n      }\n    }, DEFAULT_CONFIG.pingTime);\n  }\n\n  private stopHeartbeat() {\n    if (this.heartbeatTimer) {\n      clearInterval(this.heartbeatTimer);\n      this.heartbeatTimer = null;\n    }\n  }\n\n  private reconnect() {\n    if (this.manuallyClosed || this.lockReconnect) return;\n    this.lockReconnect = true;\n\n    this.clearReconnTimer();\n\n    this.reconnTimer = setTimeout(() => {\n      this.tries = DEFAULT_CONFIG.maxTries;\n      this.createWebSocket().catch(e => this.emit('error', e));\n      this.lockReconnect = false;\n      this.emit('reconnect');\n      this.reconnTimer = null;\n    }, DEFAULT_CONFIG.reconnTime);\n  }\n\n  private isOpen(): boolean {\n    return this.ws?.readyState === WebSocket.OPEN;\n  }\n\n  private async _request<T>(method: string, params: any = {}): Promise<T> {\n    await this.ready();\n\n    if (this.manuallyClosed || !this.isOpen()) {\n      throw new IWanError('WebSocket manually closed or not connected');\n    }\n\n    const payload: RPCMessage = {\n      jsonrpc: '2.0',\n      method,\n      params: { ...params, clientType: this.option.clientType, clientVersion: this.option.clientVersion },\n      id: ++this.index,\n    };\n\n    const signed = signPayload(payload, this.secretKey);\n\n    return new Promise((resolve, reject) => {\n      const id = signed.id;\n\n      const reqTimer = setTimeout(() => {\n        if (this.pending.has(id)) {\n          this.pending.delete(id);\n          reject(new IWanError(`Request timeout ${this.option.timeout} ms`));\n        }\n      }, this.option.timeout);\n      this.pending.set(id, { resolve, reject, time: Date.now(), timerId: reqTimer });\n\n      this.ws.send(JSON.stringify(signed));\n    });\n  }\n\n  /**\n   * Wait for WebSocket connection to be ready\n   * \n   * All public methods (`call`, `getBalance`, etc.) automatically call this internally.\n   * You only need to call it manually if you want to wait before a batch of operations.\n   * \n   * @returns Promise that resolves when connected\n   * @throws IWanError when connection fails or manually closed\n   */\n  public async ready(): Promise<void> {\n    if (this.isOpen() && !this.manuallyClosed) return Promise.resolve();\n\n    if (!this._readyPromise) {\n      this._readyPromise = new Promise((resolve, reject) => {\n        const onOpen = () => {\n          resolve();\n          this._readyPromise = null;\n        };\n        const onFail = () => {\n          reject(new IWanError('WebSocket connection failed or manually closed'));\n          this._readyPromise = null;\n        };\n\n        this.once('open', onOpen);\n        this.once('closed', onFail);\n        this.once('error', onFail);\n      });\n    }\n    return this._readyPromise;\n  }\n\n  // ====================== PUBLIC WS API ======================\n  /**\n   * Manually close the connection\n   * \n   * - Stops all auto-reconnect\n   * - Rejects all pending requests\n   * - Cleans all timers\n   * - Waits for socket to fully close\n   * - Emits 'closed' event\n   * \n   * @since 1.1.0\n   * @group Common\n   * @throws IWanError on timeout, or server error\n   * @example\n   * await sdk.close();\n   */\n  public async close(): Promise<void> {\n    this.manuallyClosed = true;\n\n    this.stopHeartbeat();\n    this.clearReconnTimer();\n    this.clearPending('Connection closed by client');\n\n    await this.closeWebsocket();\n\n    this.removeAllListeners();\n  }\n\n  // ====================== PRIVATE SDK API ======================\n  private checkByte32Hash(hash: string): boolean {\n    // check if it has the basic requirements of a hash\n    return /^(0x)?[0-9a-fA-F]{64}$/i.test(hash)\n  }\n\n  // ====================== PUBLIC SDK API ======================\n  /**\n   * Generic RPC call (supports ALL iWan methods)\n   * @since 1.1.0\n   * @group CrossChain\n   * @param method - RPC method name (e.g. 'getBlockNumber')\n   * @param params - Parameters object\n   * @returns Promise with result from server\n   * @throws IWanError on timeout, connection error, or server error\n   * @example\n   * const ret = await sdk.call(\"getBlockNumber\", {chainType: \"WAN\"});\n   * console.log(ret);\n   * // 41898424\n   */\n  public async call<T = any>(method: string, params: any = {}): Promise<T> {\n    return await this._request(method, params);\n  }\n\n  /**\n   * Subscribe to a smart contract event monitor. The server will push the event to the subscriber when the event occurs.\n   * @since 1.1.0\n   * @group Events\n   * @param {string} chainType - The chain being queried, should be <code>\"ETH\"</code>,  <code>\"WAN\"</code>, and other EVM chains.\n   * @param {string} address - The contract address being queried.\n   * @param {string[]} address - Array of values which must each appear in the log entries. The order is important, if you want to leave topics out use null, e.g. [null, '0x00...'].\n   * @returns Promise with result from server\n   * @throws IWanError on timeout, connection error, or server error\n   * @example\n   * const ret = await sdk.monitorEvent(\"WAN\", \"0x0d18157D85c93A86Ca194DB635336E43B1Ffbd26\", [\"0x685c13adbbf429a7b274e90887dad988c5f9d0490c6fbedb07b03b388a1683c7\"]);\n   * console.log(ret);\n   * // [\n   * //   {\n   * //     \"address\": \"0x0d18157d85c93a86ca194db635336e43b1ffbd26\",\n   * //     \"topics\": [\"0x685c13adbbf429a7b274e90887dad988c5f9d0490c6fbedb07b03b388a1683c7\", \"0x0000000000000000000000000d18157d85c93a86ca194db635336e43b1ffbd26\"],\n   * //     \"data\": \"0xf124b8ff25fd9c5e4f4e555232840d6a0fb89f4eb9e507ee15b5eff1336de212\",\n   * //     \"blockNumber\": 685211,\n   * //     \"transactionHash\": \"0xf5889525629718bc39cc26909012f1502826e2241d6f169ac6c229328d38245b\",\n   * //     \"transactionIndex\": 0,\n   * //     \"blockHash\": \"0x6b673291fe79e06323766d0966430cafd0baec742ec7532a10be74018ba1d785\",\n   * //     \"logIndex\": 0,\n   * //     \"removed\": false\n   * //   }\n   * // ]\n   */\n  public async monitorEvent(chainType: string, address: string, topics: string[]): Promise<any> {\n    return await this._request('monitorEvent', { chainType, address, topics });\n  }\n\n  /**\n   * Get balance of an address\n   * @since 1.1.0\n   * @group Accounts\n   * @param {string} chainType - The chain being queried, should be <code>\"ETH\"</code>,  <code>\"WAN\"</code>, and other chains.\n   * @param {string} address - The account being queried.\n   * @returns {Promise<string>} - Balance as string.\n   * @throws IWanError on timeout, connection error, or server error\n   * @example\n   * const ret = await sdk.getBalance(\"WAN\", '0x2cc79fa3b80c5b9b02051facd02478ea88a78e2c');\n   * console.log(ret);\n   * // \"10000000000000000000000\"\n   */\n  public async getBalance(chainType: string, address: string): Promise<string> {\n    return await this._request('getBalance', { chainType, address });\n  }\n\n  /**\n   * Get balance for multiple Addresses in a single call.\n   * @since 1.1.0\n   * @group Accounts\n   * @param {string} chainType - The chain being queried, should be <code>\"ETH\"</code>,  <code>\"WAN\"</code>, and other chains.\n   * @param {Array<string>} address - An array of addresses being queried.\n   * @returns {Promise<any>} - Result of account role verification\n   * @throws IWanError on timeout, connection error, or server error\n   * @example\n   * const ret = await sdk.getMultiBalances(\"WAN\", ['0x2cc79fa3b80c5b9b02051facd02478ea88a78e2c']);\n   * console.log(ret);\n   * // {\"0x2cc79fa3b80c5b9b02051facd02478ea88a78e2c\": \"10000000000000000000000\"}\n   */\n  public async getMultiBalances(chainType: string, address: Array<string>): Promise<any> {\n    return await this._request('getMultiBalances', { chainType, address });\n  }\n\n  /**\n   * Get smart contract event log via topics.\n   * @since 1.1.0\n   * @group Events\n   * @param {string} chainType - The chain being queried, should be <code>\"ETH\"</code>,  <code>\"WAN\"</code>, and other chains.\n   * @param {string} address - The contract address.\n   * @param {Array<string|null>} topics - An array of string values which must each appear in the log entries. The order is important, if you want to leave topics out use null, e.g. [null, '0x00...'].\n   * @param {any} [option] - An object value which describes the range between fromBlock and toBlock.\n   * <br>&nbsp;&nbsp;<code>fromBlock</code> - The number of the earliest block (latest may be given to mean the most recent, block). By default 0.\n   * <br>&nbsp;&nbsp;<code>toBlock</code> - The number of the latest block (latest may be given to mean the most recent, block). By default latest.\n   * @returns {Promise<any[]>} - The smart contract event logs.\n   * @throws IWanError on timeout, connection error, or server error\n   * @example\n   * const ret = await sdk.getScEvent('WAN', '0xda5b90dc89be59365ec44f3f2d7af8b6700d1167', [\"0xa4345d0839b39e5a6622a55c68bd8f83ac8a68fad252a8363a2c09dbaf85c793\", \"0x0000000000000000000000000000000000000000000000000000000000000000\"]);\n   * console.log(ret);\n   * // [\n   * //   {\n   * //     \"address\": \"0xda5b90dc89be59365ec44f3f2d7af8b6700d1167\",\n   * //     \"topics\": [\n   * //         \"0xa4345d0839b39e5a6622a55c68bd8f83ac8a68fad252a8363a2c09dbaf85c793\",\n   * //         \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n   * //     ],\n   * //     \"data\": \"0x54657374206d6573736167650000000000000000000000000000000000000000\",\n   * //     \"blockNumber\": 1121916,\n   * //     \"transactionHash\": \"0x6bdd2acf6e946be40e2b3a39d3aaadd6d615d59c89730196870f640990a57cbe\",\n   * //     \"transactionIndex\": 0,\n   * //     \"blockHash\": \"0xedda83000829f7d0a0820a7bdf2103a3142a70c404f78fd1dfc7751dc007f5a2\",\n   * //     \"logIndex\": 0,\n   * //     \"removed\": false\n   * //   }\n   * // ]\n   */\n  public async getScEvent(chainType: string, address: string, topics: Array<string|null>, option?: any): Promise<any[]> {\n    const { fromBlock, toBlock, ...otherOpts } = option || {};\n    return await this._request('getScEvent', { chainType, address, topics, fromBlock: fromBlock || 0, toBlock: toBlock || 'latest', ...otherOpts });\n  }\n\n  /**\n   * Get the owner of the specified contract from the specified chain.\n   * @since 1.1.0\n   * @group Contracts\n   * @param {string} chainType - The chain being queried, should be <code>\"ETH\"</code>,  <code>\"WAN\"</code>, and other EVM chains.\n   * @param {string} scAddr - The token contract address for the specified token.\n   * @returns {Promise<string>} - The owner of the specified contract.\n   * @throws IWanError on timeout, connection error, or server error\n   * @example\n   * const ret = await sdk.getScOwner('WAN', '0x59adc38f0b3f64fb542b50e3e955e7a8c1eb3e3b');\n   * console.log(ret);\n   * // \"0xbb8703ca8226f411811dd16a3f1a2c1b3f71825d\"\n   */\n  public async getScOwner(chainType: string, scAddr: string): Promise<string> {\n    return await this._request('getScOwner', { chainType, scAddr });\n  }\n\n  /**\n   * Coin exchange ratio,such as 1 ETH to 880 WANs in ICO period, the precision is 10000, the ratio is 880*precision = 880,0000. The ratio would be changed according to the market value ratio periodically.\n   * @since 1.1.0\n   * @group CrossChain\n   * @param {string} crossChain - The cross-chain native coin name that you want to search, should be <code>\"ETH\"</code> or <code>\"BTC\"</code>.\n   * @returns {Promise<string>} - The owner of the specified contract.\n   * @throws IWanError on timeout, connection error, or server error\n   * @example\n   * const ret = await sdk.getCoin2WanRatio('ETH');\n   * console.log(ret);\n   * // \"20\"\n   */\n  public async getCoin2WanRatio(crossChain: string): Promise<string> {\n    return await this._request('getCoin2WanRatio', { crossChain });\n  }\n\n  /**\n   * Get the detail UTXO info for Bitcoin-like chain.\n   * @since 1.1.0\n   * @group Accounts\n   * @param {string} chainType - The chain name that you want to search, should be <code>\"BTC\"</code>, <code>\"LTC\"</code>, <code>\"DOGE\"</code>.\n   * @param {number} minconf - The min confirm number of BTC UTXO, usually 0.\n   * @param {number} maxconf - The max confirm number of BTC UTXO, usually the confirmed blocks you want to wait for the UTXO.\n   * @param {Array<string>} address - The contract address.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<any[]>} - The smart contract event logs.\n   * @throws IWanError on timeout, connection error, or server error\n   * @example\n   * const ret = await sdk.getUTXO('BTC', 0, 100, [\"n35aUMToGvxJhYm7QVMtyBL83PTDKzPC1R\"]);\n   * console.log(ret);\n   * // [\n   * //    {\n   * //      \"txid\": \"302588f81dc5ad7972d3affc781adc6eb326227a6feda53a990e9b98b715edcc\",\n   * //      \"vout\": 0,\n   * //      \"address\": \"n35aUMToGvxJhYm7QVMtyBL83PTDKzPC1R\",\n   * //      \"account\": \"\",\n   * //      \"scriptPubKey\": \"76a914ec8626d9aa394317659a45cfcbd1f0762126c5e888ac\",\n   * //      \"amount\": 0.079,\n   * //      \"confirmations\": 16,\n   * //      \"spendable\": false,\n   * //      \"solvable\": false,\n   * //      \"safe\": true,\n   * //      \"value\": 0.079\n   * //    }\n   * // ]\n   */\n  public async getUTXO(chainType: string, minconf: number, maxconf: number, address: string, option?: any): Promise<any> {\n    return await this._request('getUTXO', { chainType, address, minconf: minconf, maxconf: maxconf, ...(option || {}) });\n  }\n\n  /**\n   * Get the vout with OP_RETURN info for Bitcoin-like chain.\n   * @since 1.1.0\n   * @group Accounts\n   * @param {string} chainType - The chain name that you want to search, should be <code>\"BTC\"</code>, <code>\"LTC\"</code>, <code>\"DOGE\"</code>.\n   * @param {any} [option] - Optional:\n  * <br>&nbsp;&nbsp;<code>address</code> - Optional, the address array that you want to search.\n  * <br>&nbsp;&nbsp;<code>fromBlock</code> - Optional, the number of the earliest block (latest may be given to mean the most recent, block). By default 0.\n  * <br>&nbsp;&nbsp;<code>toBlock</code> - Optional, the number of the latest block (latest may be given to mean the most recent, block). By default latest.\n   * @returns {Promise<any[]>} - The vout with OP_RETURN info.\n   * @throws IWanError on timeout, connection error, or server error\n   * @example\n   * const ret = await sdk.getOpReturnOutputs('BTC', {address:[\"n35aUMToGvxJhYm7QVMtyBL83PTDKzPC1R\"]});\n   * console.log(ret);\n   * // [\n   * //   {\n   * //     \"txid\": \"2c7a583b84fe0732fe17017bf0b17437bb5dcdad3ca8a8d661e86be666c33cc0\",\n   * //     \"height\": 101641,\n   * //     \"vout\": [\n   * //       {\n   * //         \"scriptPubKey\": {\n   * //           \"addresses\": [\n   * //             \"mzW2hdZN2um7WBvTDerdahKqRgj3md9C29\"\n   * //           ],\n   * //           \"asm\": \"04ffd03de44a6e11b9917f3a29f9443283d9871c9d743ef30d5eddcd37094b64d1b3d8090496b53256786bf5c82932ec23c3b74d9f05a6f95a8b5529352656664b OP_CHECKSIG\",\n   * //           \"hex\": \"4104ffd03de44a6e11b9917f3a29f9443283d9871c9d743ef30d5eddcd37094b64d1b3d8090496b53256786bf5c82932ec23c3b74d9f05a6f95a8b5529352656664bac\",\n   * //           \"reqSigs\": 1,\n   * //           \"type\": \"pubkey\"\n   * //         },\n   * //         \"value\": 0.49743473,\n   * //         \"index\": 1\n   * //       },\n   * //       {\n   * //         \"scriptPubKey\": {\n   * //           \"asm\": \"OP_RETURN f25ce69be9489038099442ed615ca8b0003330821c2804f2763c7a8e72274d1c0000000000000a00\",\n   * //           \"hex\": \"6a28f25ce69be9489038099442ed615ca8b0003330821c2804f2763c7a8e72274d1c0000000000000a00\",\n   * //           \"type\": \"nulldata\"\n   * //         },\n   * //         \"value\": 0,\n   * //         \"index\": 2\n   * //       }\n   * //     ]\n   * //   }\n   * // ]\n   */\n  public async getOpReturnOutputs(chainType: string, option?: any): Promise<any> {\n    return await this._request('getOpReturnOutputs', { chainType, ...(option || {}) });\n  }\n\n  /**\n   * Get the detailed cross-chain storemanGroup info for one cross-chain native coin, like the quota, etc.\n   * @since 1.1.0\n   * @group CrossChain\n   * @param {string} crossChain - The cross-chain name that you want to search, should be <code>\"ETH\"</code> or <code>\"BTC\"</code>.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<any[]>} - The detailed cross-chain storemanGroup info.\n   * @example\n   * const ret = await sdk.getStoremanGroups('ETH');\n   * console.log(ret);\n   * // [\n   * //   {\n   * //     \"wanAddress\": \"0x06daa9379cbe241a84a65b217a11b38fe3b4b063\",\n   * //     \"ethAddress\": \"0x41623962c5d44565de623d53eb677e0f300467d2\",\n   * //     \"deposit\": \"128000000000000000000000\",\n   * //     \"txFeeRatio\": \"10\",\n   * //     \"quota\": \"400000000000000000000\",\n   * //     \"inboundQuota\": \"290134198386719012352\",\n   * //     \"outboundQuota\": \"85607176846820246993\",\n   * //     \"receivable\": \"80000000000000000\",\n   * //     \"payable\": \"24178624766460740655\",\n   * //     \"debt\": \"109785801613280987648\"\n   * //   }\n   * // ]\n   */\n  public async getStoremanGroups(crossChain: string, option?: any): Promise<any> {\n    return await this._request('getStoremanGroups', { crossChain, ...(option || {}) });\n  }\n\n  /**\n   * Get the detail cross-chain storemanGroup info for one specific token contract, like the quota, etc.\n   * @since 1.1.0\n   * @group CrossChain\n   * @param {string} crossChain - The cross-chain name that you want to search, should be <code>\"ETH\"</code> or <code>\"EOS\"</code>.\n   * @param {string} tokenScAddr - The token contract address for the specified token.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<any[]>} - The detailed cross-chain storemanGroup info.\n   * @example\n   * const ret = await sdk.getTokenStoremanGroups('ETH', '0x00f58d6d585f84b2d7267940cede30ce2fe6eae8');\n   * console.log(ret);\n   * // [\n   * //   {\n   * //     \"tokenOrigAddr\": \"0xdbf193627ee704d38495c2f5eb3afc3512eafa4c\",\n   * //     \"smgWanAddr\": \"0x765854f97f7a3b6762240c329331a870b65edd96\",\n   * //     \"smgOrigAddr\": \"0x38b6c9a1575c90ceabbfe31b204b6b3a3ce4b3d9\",\n   * //     \"wanDeposit\": \"5000000000000000000000\",\n   * //     \"quota\": \"10000000000000000000000\",\n   * //     \"txFeeRatio\": \"1\",\n   * //     \"inboundQuota\": \"9999500000000000000000\",\n   * //     \"outboundQuota\": \"500000000000000000\",\n   * //     \"receivable\": \"0\",\n   * //     \"payable\": \"0\",\n   * //     \"debt\": \"500000000000000000\"\n   * //   }\n   * // ]\n   */\n  public async getTokenStoremanGroups(crossChain: string, tokenScAddr: string, option?: any): Promise<any> {\n    return await this._request('getTokenStoremanGroups', { crossChain, tokenScAddr, ...(option || {}) });\n  }\n\n  /**\n   * Get the current gas price in wei as string type.\n   * @since 1.1.0\n   * @group Status\n   * @param {string} chainType - The chain being queried, should be <code>\"ETH\"</code>,  <code>\"WAN\"</code>, and other EVM chains.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<string>} - The current gas price in wei.\n   * @example\n   * const ret = await sdk.getGasPrice('WAN');\n   * console.log(ret);\n   * // \"180000000000\"\n   */\n  public async getGasPrice(chainType: string, option?: any): Promise<string> {\n    return await this._request('getGasPrice', { chainType, ...(option || {}) });\n  }\n\n  /**\n   * Get token balance for a single address of a specified token on specified chain.\n   * @since 1.1.0\n   * @group Tokens\n   * @param {string} chainType - The chain being queried, should be <code>\"ETH\"</code>,  <code>\"WAN\"</code>, and other EVM chains.\n   * @param {string} address - The account being queried.\n   * @param {string} tokenScAddr - The token contract address for specified token. I.e., If chainType is <code>'WAN'</code>, it should be the token address for <code>\"WETH\"</code> or <code>\"WBTC\"</code>.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<string>} - The current token balance.\n   * @example\n   * const ret = await sdk.getTokenBalance(\"WAN\", \"0x2cc79fa3b80c5b9b02051facd02478ea88a78e2c\", \"0x63eed4943abaac5f43f657d8eec098ca6d6a546e\");\n   * console.log(ret);\n   * // \"10000000000000000000000\"\n   */\n  public async getTokenBalance(chainType: string, address: string, tokenScAddr: string, option?: any): Promise<string> {\n    return await this._request('getTokenBalance', { chainType, address, tokenScAddr, ...(option || {}) });\n  }\n\n  /**\n   * Gets token balance for multiple addresses of specified token on Wanchain in a single call.\n   * @since 1.1.0\n   * @group Tokens\n   * @param {string} chainType - The chain being queried, should be <code>\"ETH\"</code>,  <code>\"WAN\"</code>, and other EVM chains.\n   * @param {Array<string>} address - An array of addresses being queried.\n   * @param {string} tokenScAddr - The token contract address for specified token. I.e., If chainType is <code>'WAN'</code>, it should be the token address for <code>\"WETH\"</code> or <code>\"WBTC\"</code>.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<string>} - The current token balance.\n   * @example\n   * const ret = await sdk.getMultiTokenBalance(\"WAN\", [\"0xfac95c16da814d24cc64b3186348afecf527324f\",\"0xfac95c16da814d24cc64b3186348afecf527324e\"], \"0x63eed4943abaac5f43f657d8eec098ca6d6a546e\");\n   * console.log(ret);\n   * // {\n   * //   \"0xfac95c16da814d24cc64b3186348afecf527324f\": \"10000000000000000000000\",\n   * //   \"0xfac95c16da814d24cc64b3186348afecf527324e\": \"0\"\n   * // }\n   */\n  public async getMultiTokenBalance(chainType: string, address: Array<string>, tokenScAddr: string, option?: any): Promise<any> {\n    return await this._request('getMultiTokenBalance', { chainType, address, tokenScAddr, ...(option || {}) });\n  }\n\n  /**\n   * Gets all balances for address.\n   * @since 1.1.0\n   * @group Tokens\n   * @param {string} chainType - chainType The chain being queried. Currently supports <code>'XRP'</code>.\n   * @param {string} address - String of address being queried.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<string>} - The current balances.\n   * @example\n   * const ret = await sdk.getAllBalances(\"WAN\", \"rgiPXoiRiwYXrzmpno6rRnKdKtsvvvJmn\");\n   * console.log(ret);\n   * // [\n   * //     {\n   * //         \"currency\": \"XRP\",\n   * //         \"value\": \"999.99976\"\n   * //     },\n   * //     {\n   * //         \"value\": \"0\",\n   * //         \"currency\": \"FOO\",\n   * //         \"issuer\": \"rnqpsE8GSmLrZQzXguURJHjT7sN5S1XSqz\"\n   * //     },\n   * //     {\n   * //         \"value\": \"1.012345678913579\",\n   * //         \"currency\": \"BAR\",\n   * //         \"issuer\": \"rnqpsE8GSmLrZQzXguURJHjT7sN5S1XSqz\"\n   * //     }\n   * // ]\n   */\n  public async getAllBalances(chainType: string, address: string, option?: any): Promise<any> {\n    return await this._request('getAllBalances', { chainType, address, ...(option || {}) });\n  }\n\n  /**\n   * Get total amount of certain token on specified chain.\n   * @since 1.1.0\n   * @group Tokens\n   * @param {string} chainType - The chain being queried, should be <code>\"ETH\"</code>,  <code>\"WAN\"</code>, and other EVM chains.\n   * @param {string} tokenScAddr - The token contract address for the specified token.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<string>} - The current token supply.\n   * @example\n   * const ret = await sdk.getTokenSupply(\"WAN\", \"0x63eed4943abaac5f43f657d8eec098ca6d6a546e\");\n   * console.log(ret);\n   * // \"30000000000000000000000\"\n   */\n  public async getTokenSupply(chainType: string, tokenScAddr: string, option?: any): Promise<string> {\n    return await this._request('getTokenSupply', { chainType, tokenScAddr, ...(option || {}) });\n  }\n\n  /**\n   * Get the token allowance for one specific account on one contract for one specific spender account on a certain chain.\n   * @since 1.1.0\n   * @group Tokens\n   * @param {string} chainType - The chain being queried, should be <code>\"ETH\"</code>,  <code>\"WAN\"</code>, and other EVM chains.\n   * @param {string} tokenScAddr - The token contract address for the specified token.\n   * @param {string} ownerAddr - The owner address on the specified contract.\n   * @param {string} spenderAddr - The spender address on the specified contract.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<string>} - The token allowance for one specific account on one contract for one specific spender account.\n   * @example\n   * const ret = await sdk.getTokenAllowance(\"ETH\", \"0xc5bc855056d99ef4bda0a4ae937065315e2ae11a\", \"0xc27ecd85faa4ae80bf5e28daf91b605db7be1ba8\", \"0xcdc96fea7e2a6ce584df5dc22d9211e53a5b18b1\");\n   * console.log(ret);\n   * // \"999999999999980000000000000\"\n   */\n  public async getTokenAllowance(chainType: string, tokenScAddr: string, ownerAddr: string, spenderAddr: string, option?: any): Promise<string> {\n    return await this._request('getTokenAllowance', { chainType, tokenScAddr, ownerAddr, spenderAddr, ...(option || {}) });\n  }\n\n  /**\n   * Get the info of token contract, like symbol and decimals, on certain chain.\n   * @since 1.1.0\n   * @group Tokens\n   * @param {string} chainType - The chain being queried, should be <code>\"ETH\"</code>,  <code>\"WAN\"</code>, and other EVM chains.\n   * @param {string} tokenScAddr - The token contract address for the specified token.\n   * @param {any} [option] - Optional:\n   * <br>&nbsp;&nbsp;<code>tokenType</code> - The token type, Currently supports <code>'Erc20'</code> and <code>'Erc721'</code>.\n   * @returns {Promise<string>} - The token info.\n   * @example\n   * const ret = await sdk.getTokenInfo(\"ETH\", \"0xc5bc855056d99ef4bda0a4ae937065315e2ae11a\");\n   * console.log(ret);\n   * // {\n   * //   \"symbol\": \"WCT\",\n   * //   \"decimals\": \"18\"\n   * // }\n   */\n  public async getTokenInfo(chainType: string, tokenScAddr: string, option?: any): Promise<any> {\n    return await this._request('getTokenInfo', { chainType, tokenScAddr, ...(option || {}) });\n  }\n\n  /**\n   * Get the information for multiple tokens.\n   * @since 1.1.0\n   * @group Tokens\n   * @param {string} chainType - The chain being queried, should be <code>\"ETH\"</code>,  <code>\"WAN\"</code>, and other EVM chains.\n   * @param {Array<string>} tokenScAddrArray - The token address array for the tokens that you want to query.\n   * @param {any} [option] - Optional:\n   * <br>&nbsp;&nbsp;<code>tokenType</code> - The token type, Currently supports <code>'Erc20'</code> and <code>'Erc721'</code>.\n   * @returns {Promise<string>} - The information for multiple tokens.\n   * @example\n   * const ret = await sdk.getMultiTokenInfo(\"ETH\", [\"0xc5bc855056d99ef4bda0a4ae937065315e2ae11a\",\"0x7017500899433272b4088afe34c04d742d0ce7df\"]);\n   * console.log(ret);\n   * // {\n   * //   \"0xc5bc855056d99ef4bda0a4ae937065315e2ae11a\": {\n   * //     \"symbol\": \"WCT\",\n   * //     \"decimals\": \"18\"\n   * //   },\n   * //   \"0x7017500899433272b4088afe34c04d742d0ce7df\": {\n   * //     \"symbol\": \"WCT_One\",\n   * //     \"decimals\": \"18\"\n   * //   }\n   * // }\n   */\n  public async getMultiTokenInfo(chainType: string, tokenScAddrArray: Array<string>, option?: any): Promise<any> {\n    return await this._request('getMultiTokenInfo', { chainType, tokenScAddrArray, ...(option || {}) });\n  }\n\n  /**\n   * Get the nonce of an account.\n   * @since 1.1.0\n   * @group Accounts\n   * @param {string} chainType - The chain being queried, should be <code>\"ETH\"</code>,  <code>\"WAN\"</code>, and other EVM chains.\n   * @param {string} address - The account being queried.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<string>} - The nonce.\n   * @example\n   * const ret = await sdk.getNonce(\"WAN\", \"0x2cc79fa3b80c5b9b02051facd02478ea88a78e2c\");\n   * console.log(ret);\n   * // \"0x0\"\n   */\n  public async getNonce(chainType: string, address: string, option?: any): Promise<string> {\n    return await this._request('getNonce', { chainType, address, ...(option || {}) });\n  }\n\n  /**\n   * Get the pending nonce of an account.\n   * @since 1.1.0\n   * @group Accounts\n   * @param {string} chainType - The chain being queried, should be <code>\"ETH\"</code>,  <code>\"WAN\"</code>, and other EVM chains.\n   * @param {string} address - The account being queried.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<string>} - The pending nonce.\n   * @example\n   * const ret = await sdk.getNonceIncludePending(\"WAN\", \"0x2cc79fa3b80c5b9b02051facd02478ea88a78e2c\");\n   * console.log(ret);\n   * // \"0x0\"\n   */\n  public async getNonceIncludePending(chainType: string, address: string, option?: any): Promise<string> {\n    return await this._request('getNonceIncludePending', { chainType, address, ...(option || {}) });\n  }\n\n  /**\n   * Get the current latest block number.\n   * @since 1.1.0\n   * @group Blocks\n   * @param {string} chainType - The chain being queried, should be <code>\"ETH\"</code>,  <code>\"WAN\"</code>, and other EVM chains.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<string>} - The current latest block number.\n   * @example\n   * const ret = await sdk.getBlockNumber(\"WAN\");\n   * console.log(ret);\n   * // \"119858\"\n   */\n  public async getBlockNumber(chainType: string, option?: any): Promise<string> {\n    return await this._request('getBlockNumber', { chainType, ...(option || {}) });\n  }\n\n  /**\n   * Submit a pre-signed transaction for broadcast to certain chain.\n   * @since 1.1.0\n   * @group Transactions\n   * @param {string} chainType - The chain being queried, should be <code>\"ETH\"</code>,  <code>\"WAN\"</code>,  <code>\"BTC\"</code>, and other chains.\n   * @param {string} signedTx - The signedTx you want to send.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<string>} - The transaction hash.\n   * @example\n   * const ret = await sdk.sendRawTransaction('WAN', '0xf86e0109852e90edd000832dc6c0946ed9c11cbd8a6ae8355fa62ebca48493da572661880de0b6b3a7640000801ca0bd349ec9f51dd171eb5c59df9a6b8c5656eacb6793bed945a7ec69135f191abfa0359da11e8a4fdd51b52a8752ac32f9125d168441546d011406736bce67b8a356');\n   * console.log(ret);\n   * // \"0x4dcfc82728b5a9307f249ac095c8e6fcc436db4f85a094a0c5a457255c20f80f\"\n   */\n  public async sendRawTransaction(chainType: string, signedTx: string, option?: any): Promise<string> {\n    return await this._request('sendRawTransaction', { chainType, signedTx, ...(option || {}) });\n  }\n\n  /**\n   * Get the transaction detail via transaction hash on certain chain.\n   * @since 1.1.0\n   * @group Transactions\n   * @param {string} chainType - The chain being queried, should be <code>\"ETH\"</code>,  <code>\"WAN\"</code>, <code>\"BTC\"</code>, and other chains.\n   * @param {string} txHash - The transaction hash you want to search.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<any>} - The transaction detail.\n   * @example\n   * const ret = await sdk.getTxInfo(\"WAN\", \"0xd2a5b1f403594dbc881e466d46a4cac3d6cf202476b1277876f0b24923d032da\");\n   * console.log(ret);\n   * // {\n   * //   \"txType\": \"0x1\",\n   * //   \"blockHash\": \"0xcb76ea6649d801cc45294f4d0858bad1ca0c2b169b20c4beae2852c57a7f69c9\",\n   * //   \"blockNumber\": 1137680,\n   * //   \"from\": \"0xed1baf7289c0acef52db0c18e1198768eb06247e\",\n   * //   \"gas\": 1000000,\n   * //   \"gasPrice\": \"320000000000\",\n   * //   \"hash\": \"0xd2a5b1f403594dbc881e466d46a4cac3d6cf202476b1277876f0b24923d032da\",\n   * //   \"input\": \"0x642b273754657374206d6573736167650000000000000000000000000000000000000000\",\n   * //   \"nonce\": 26,\n   * //   \"to\": \"0xda5b90dc89be59365ec44f3f2d7af8b6700d1167\",\n   * //   \"transactionIndex\": 0,\n   * //   \"value\": \"0\",\n   * //   \"v\": \"0x1b\",\n   * //   \"r\": \"0xe3a5a5d73d0b6512676723bc4bab4f7ffe01476f8cbc9631976890e175d487ac\",\n   * //   \"s\": \"0x3a79e17290fe2a9f4e5b5c5431eb322882729d68ca0d736c5d9b1f3285c9169e\"\n   * // }\n   */\n  public async getTxInfo(chainType: string, txHash: string, option?: any): Promise<any> {\n    return await this._request('getTxInfo', { chainType, txHash, ...(option || {}) });\n  }\n\n  /**\n   * Get the transaction mined result on certain chain.\n   * @since 1.1.0\n   * @group Transactions\n   * @param {string} chainType - The chain being queried, should be <code>\"ETH\"</code>,  <code>\"WAN\"</code>, and other chains.\n   * @param {number} waitBlocks - The confirm-block-number you want to set.\n   * @param {string} txHash - The transaction hash you want to search.\n   * @param {any} [option] - Optional.\n   * <br>&nbsp;&nbsp;<code>version</code> - The result format version you want to search, using <code>undefined</code> that means legacy format as default.\n   * @returns {Promise<any>} - The transaction mined result.\n   * @example\n   * const ret = await sdk.getTransactionConfirm(\"WAN\", 6, \"0xd2a5b1f403594dbc881e466d46a4cac3d6cf202476b1277876f0b24923d032da\");\n   * console.log(ret);\n   * // {\n   * //   \"blockHash\": \"0xcb76ea6649d801cc45294f4d0858bad1ca0c2b169b20c4beae2852c57a7f69c9\",\n   * //   \"blockNumber\": 1137680,\n   * //   \"contractAddress\": null,\n   * //   \"cumulativeGasUsed\": 29572,\n   * //   \"from\": \"0xed1baf7289c0acef52db0c18e1198768eb06247e\",\n   * //   \"gasUsed\": 29572,\n   * //   \"logs\": [{\n   * //     \"address\": \"0xda5b90dc89be59365ec44f3f2d7af8b6700d1167\",\n   * //     \"topics\": [\"0xa4345d0839b39e5a6622a55c68bd8f83ac8a68fad252a8363a2c09dbaf85c793\", \"0x0000000000000000000000000000000000000000000000000000000000000005\"],\n   * //     \"data\": \"0x54657374206d6573736167650000000000000000000000000000000000000000\",\n   * //     \"blockNumber\": 1137680,\n   * //     \"transactionHash\": \"0xd2a5b1f403594dbc881e466d46a4cac3d6cf202476b1277876f0b24923d032da\",\n   * //     \"transactionIndex\": 0,\n   * //     \"blockHash\": \"0xcb76ea6649d801cc45294f4d0858bad1ca0c2b169b20c4beae2852c57a7f69c9\",\n   * //     \"logIndex\": 0,\n   * //     \"removed\": false\n   * //   }],\n   * //   \"logsBloom\": \"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000001000000800000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000200000000000\",\n   * //   \"status\": \"0x1\",\n   * //   \"to\": \"0xda5b90dc89be59365ec44f3f2d7af8b6700d1167\",\n   * //   \"transactionHash\": \"0xd2a5b1f403594dbc881e466d46a4cac3d6cf202476b1277876f0b24923d032da\",\n   * //   \"transactionIndex\": 0\n   * // }\n   */\n  public async getTransactionConfirm(chainType: string, waitBlocks: number, txHash: string, option?: any): Promise<any> {\n    return await this._request('getTransactionConfirm', { chainType, waitBlocks, txHash, ...(option || {}) });\n  }\n\n  /**\n   * Get the receipt of a transaction by transaction hash on certain chain.\n   * @since 1.1.0\n   * @group Transactions\n   * @param {string} chainType - The chain being queried, should be <code>\"ETH\"</code>,  <code>\"WAN\"</code>, and other chains.\n   * @param {string} txHash - The transaction hash you want to search.\n   * @param {any} [option] - Optional.\n   * <br>&nbsp;&nbsp;<code>version</code> - The result format version you want to search, using <code>undefined</code> that means legacy format as default.\n   * @returns {Promise<any>} - The receipt of a transaction.\n   * @example\n   * const ret = await sdk.getTransactionReceipt(\"WAN\", \"0xc18c4bdf0d40c4bb2f34f0273eaf4dc674171fbf33c3301127e1d4c85c574ebe\");\n   * console.log(ret);\n   * // {\n   * //   \"logs\": [],\n   * //   \"blockHash\": \"0x18198d5e42859067db405c9144306f7da87210a8604aac66ef6759b14a199d6b\",\n   * //   \"blockNumber\": 2548378,\n   * //   \"contractAddress\": null,\n   * //   \"cumulativeGasUsed\": 21000,\n   * //   \"from\": \"0xdcfffcbb1edc98ebbc5c7a6b3b700a6748eca3b0\",\n   * //   \"gasUsed\": 21000,\n   * //   \"logsBloom\": \"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n   * //   \"status\": \"0x1\",\n   * //   \"to\": \"0x157908807e95f864284e84cc5d307ce6f3574532\",\n   * //   \"transactionHash\": \"0xc18c4bdf0d40c4bb2f34f0273eaf4dc674171fbf33c3301127e1d4c85c574ebe\",\n   * //   \"transactionIndex\": 0\n   * // }\n   */\n  public async getTransactionReceipt(chainType: string, txHash: string, option?: any): Promise<any> {\n    return await this._request('getTransactionReceipt', { chainType, txHash, ...(option || {}) });\n  }\n\n  /**\n   * Get transaction information in a given block by block number or block hash on certain chain.\n   * @since 1.1.0\n   * @group Transactions\n   * @param {string} chainType - The chain being queried, should be <code>\"ETH\"</code>,  <code>\"WAN\"</code>, and other chains.\n   * @param {string} blockHashOrBlockNumber - The blockHash or the blockNumber you want to search.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<any>} - The transaction information.\n   * @example\n   * const ret = await sdk.getTransByBlock(\"WAN\", \"0xc18c4bdf0d40c4bb2f34f0273eaf4dc674171fbf33c3301127e1d4c85c574ebe\");\n   * // const ret = await sdk.getTransByBlock(\"WAN\", \"984133\");\n   * console.log(ret);\n   * // [\n   * //   {\n   * //     \"blockNumber\": 984133,\n   * //     \"gas\": 4700000,\n   * //     \"nonce\": 414,\n   * //     \"transactionIndex\": 0,\n   * //     \"txType\": \"0x1\",\n   * //     \"blockHash\": \"0xaa0fc2a8a868566f2e4888b2942ec05c47c2254e8b81e43d3ea87420a09126c2\",\n   * //     \"from\": \"0xbb9003ca8226f411811dd16a3f1a2c1b3f71825d\",\n   * //     \"gasPrice\": \"180000000000\",\n   * //     \"hash\": \"0x2c6dee69c9cc5676484d80d173d683802a4f761d5785a694b4262fbf39dff8fe\",\n   * //     \"input\": \"0xfdacd5760000000000000000000000000000000000000000000000000000000000000002\",\n   * //     \"to\": \"0x92e8ae701cd081ae8f0cb03dcae2e57b9b261667\",\n   * //     \"value\": \"0\",\n   * //     \"v\": \"0x29\",\n   * //     \"r\": \"0x1c1ad7e8ee64fc284adce0910d6f811933af327b20cb8adba392a1b24a15054f\",\n   * //     \"s\": \"0x690785383bed28c9a951b30329a066cb78062f63febf5aa1ca7e7ef62a2108cb\"\n   * //   }\n   * // ]\n   */\n  public async getTransByBlock(chainType: string, blockHashOrBlockNumber: string, option?: any): Promise<any> {\n    const blockOpt = this.checkByte32Hash(blockHashOrBlockNumber) ? { blockHash: blockHashOrBlockNumber } : { blockNumber: blockHashOrBlockNumber };\n    return await this._request('getTransByBlock', { chainType, ...blockOpt, ...(option || {}) });\n  }\n\n  /**\n   * Get transaction information via the specified address on certain chain.\n   * @since 1.1.0\n   * @group Transactions\n   * @param {string} chainType - The chain being queried, should be <code>\"ETH\"</code>,  <code>\"WAN\"</code>, and other chains.\n   * @param {string} address - The account's address that you want to search.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<any>} - The transaction information.\n   * @example\n   * const ret = await sdk.getTransByAddress(\"WAN\", \"0xbb9003ca8226f411811dd16a3f1a2c1b3f71825d\");\n   * console.log(ret);\n   * // [\n   * //   {\n   * //     \"blockNumber\": 1004796,\n   * //     \"gas\": 90000,\n   * //     \"nonce\": 505,\n   * //     \"transactionIndex\": 0,\n   * //     \"txType\": \"0x1\",\n   * //     \"blockHash\": \"0x604e45aa6b67b1957ba793e534878d94bfbacd38eed2eb51990de097595a334e\",\n   * //     \"from\": \"0xbb9003ca8226f411811dd16a3f1a2c1b3f71825d\",\n   * //     \"gasPrice\": \"180000000000\",\n   * //     \"hash\": \"0x353545658d513ff4fe1db9b0f979a24a831ae0949b37bc1afefc8179fc29b358\",\n   * //     \"input\": \"0x\",\n   * //     \"to\": \"0x8fbc408bef86476e3098dc539762d4021092bbde\",\n   * //     \"value\": \"100000000000000000000\",\n   * //     \"v\": \"0x2a\",\n   * //     \"r\": \"0xbe8f287930782cff4d2e12e4a55c46765b610b88d13bc1a060a4565f3316e933\",\n   * //     \"s\": \"0x7a297e96c54fffd124833462e03725ea8d168465d34a3e577afbaa9d05a99cd0\"\n   * //   },\n   * //   {\n   * //     \"blockNumber\": 1004818,\n   * //     \"gas\": 21000,\n   * //     \"nonce\": 0,\n   * //     \"transactionIndex\": 0,\n   * //     \"txType\": \"0x1\",\n   * //     \"blockHash\": \"0xbb5769654036fdb768ede5b1a172298d408808e7dcb78a82b3c8d5ef32fc67cb\",\n   * //     \"from\": \"0x8fbc408bef86476e3098dc539762d4021092bbde\",\n   * //     \"gasPrice\": \"200000000000\",\n   * //     \"hash\": \"0xee3371655a53e6d413c3b9d570fee8852989554989fde51136cf3b9c672e272d\",\n   * //     \"input\": \"0x\",\n   * //     \"to\": \"0xc68b75ca4e4bf0b71e3594452a5e47b11d287724\",\n   * //     \"value\": \"1000000000000000000\",\n   * //     \"v\": \"0x2a\",\n   * //     \"r\": \"0x4341dcd4156050b664b9c977644756201a6357c7b12e5db86b370a38b1ed6dfb\",\n   * //     \"s\": \"0x43b380fc67394e8b9483af97f5de067ef6617b17cfaa75517f07ec8d166f3c65\"\n   * //   }\n   * // ]\n   */\n  public async getTransByAddress(chainType: string, address: string, option?: any): Promise<any> {\n    return await this._request('getTransByAddress', { chainType, address, ...(option || {}) });\n  }\n\n  /**\n   * Get transaction information via the specified address between the specified startBlockNo and endBlockNo on certain chain.\n   * <br>Comments:\n   * <br>&nbsp;&nbsp;&nbsp;&nbsp;if no <code>startBlockNo</code> given, <code>startBlockNo</code> will be set to 0;\n   * <br>&nbsp;&nbsp;&nbsp;&nbsp;if no <code>endBlockNo</code> given, <code>endBlockNo</code> will be set to the newest blockNumber.\n   * <br><br><strong>Returns:</strong>\n   * <br><font color=&#39;blue&#39;>«Promise,undefined»</font> Returns undefined if used with callback or a promise otherwise.\n   * \n   * @since 1.1.0\n   * @group Transactions\n   * @param {string} chainType - The chain being queried, should be <code>\"WAN\"</code>.\n   * @param {string} address - The account's address that you want to search.\n   * @param {number} startBlockNo - The start block number that you want to search from.\n   * @param {number} endBlockNo - The end block number that you want to search to.\n   * @param {any} [option] - Optional.\n   * <br>&nbsp;&nbsp;<code>counterparty</code> - The string of account's address that you want to search. Only for <code>\"XRP\"</code>. If provided, only return transactions with this account as a counterparty to the transaction.\n   * <br>&nbsp;&nbsp;<code>earliestFirst</code> - Boolean. Only for <code>\"XRP\"</code>. If true, sort transactions so that the earliest ones come first. By default, the newest transactions will come first.\n   * <br>&nbsp;&nbsp;<code>initiated</code> - Boolean. Only for <code>\"XRP\"</code>. If true, return only transactions initiated by the account specified by address. If false, return only transactions not initiated by the account specified by address.\n   * <br>&nbsp;&nbsp;<code>limit</code> - Number. Only for <code>\"XRP\"</code>. If specified, return at most this many transactions.\n   * <br>&nbsp;&nbsp;<code>types</code> - Array. Only for <code>\"XRP\"</code>. Only return transactions of the specified Transaction Types. Currently supports <code>\"payment\"</code>, <code>\"order\"</code>, <code>\"orderCancellation\"</code>, <code>\"trustline\"</code>, <code>\"settings\"</code>, <code>\"escrowCreation\"</code>, <code>\"escrowCancellation\"</code>, <code>\"escrowExecution\"</code>, <code>\"checkCreate\"</code>, <code>\"checkCancel\"</code>, <code>\"checkCash\"</code>, <code>\"paymentChannelCreate\"</code>, <code>\"paymentChannelFund\"</code>, <code>\"paymentChannelClaim\"</code>, <code>\"ticketCreate\"</code>.\n   * <br>&nbsp;&nbsp;<code>version</code> - The result format version you want to search, using <code>undefined</code> that means legacy format as default.\n   * @returns {Promise<any>} - The transaction information.\n   * @example\n   * const ret = await sdk.getTransByAddressBetweenBlocks(\"WAN\", \"0xbb9003ca8226f411811dd16a3f1a2c1b3f71825d\", 984119, 984120);\n   * console.log(ret);\n   * // [\n   * //   {\n   * //     \"blockNumber\": 984119,\n   * //     \"gas\": 4700000,\n   * //     \"nonce\": 407,\n   * //     \"transactionIndex\": 0,\n   * //     \"txType\": \"0x1\",\n   * //     \"blockHash\": \"0xdf59acacabe8c1b64ca6ff611c629069731d9dae60f4b0cc753c4a0571ea7f27\",\n   * //     \"from\": \"0xbb9003ca8226f411811dd16a3f1a2c1b3f71825d\",\n   * //     \"gasPrice\": \"180000000000\",\n   * //     \"hash\": \"0xf4610446d836b95d577ba723e1df55258e4f602cfa26d5ada3b50fa2fe82b469\",\n   * //     \"input\": \"0x6060604052341561000f57600080fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506102d78061005e6000396000f300606060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630900f01014610067578063445df0ac146100a05780638da5cb5b146100c9578063fdacd5761461011e575b600080fd5b341561007257600080fd5b61009e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610141565b005b34156100ab57600080fd5b6100b3610220565b6040518082815260200191505060405180910390f35b34156100d457600080fd5b6100dc610226565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561012957600080fd5b61013f600480803590602001909190505061024b565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561021c578190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b151561020b57600080fd5b5af1151561021857600080fd5b5050505b5050565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102a857806001819055505b505600a165627a7a72305820de682f89b485041a9206a7304a95a151cd2363297029280359a4ca996dcaeda20029\",\n   * //     \"to\": null,\n   * //     \"value\": \"0\",\n   * //     \"v\": \"0x29\",\n   * //     \"r\": \"0xd14dfde02e305a945e6a09b6dbd5fe1f1bd5a6dc0721c15f72732aa10a3829b3\",\n   * //     \"s\": \"0x56923b20a15f02633295b415ae52161529d560580dfcd62a97bc394c841bea37\"\n   * //   }\n   * // ]\n   */\n  public async getTransByAddressBetweenBlocks(chainType: string, address: string, startBlockNo: number, endBlockNo: number, option?: any): Promise<any> {\n    return await this._request('getTransByAddressBetweenBlocks', { chainType, address, startBlockNo, endBlockNo, ...(option || {}) });\n  }\n\n  /**\n   * Get the block information about a block by block number on certain chain.\n   * @since 1.1.0\n   * @group Blocks\n   * @param {string} chainType - The chain being queried, should be <code>\"ETH\"</code>,  <code>\"WAN\"</code>, and other chains.\n   * @param {number|string} blockNumber - The blockNumber you want to search.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<any>} - The block information.\n   * @example\n   * const ret = await sdk.getBlockByNumber(\"WAN\", \"670731\");\n   * console.log(ret);\n   * // {\n   * //   \"size\": 727,\n   * //   \"timestamp\": 1522575814,\n   * //   \"transactions\": [\"0x4dcfc82728b5a9307f249ac095c8e6fcc436db4f85a094a0c5a457255c20f80f\"],\n   * //   \"uncles\": [],\n   * //   \"difficulty\": \"5812826\",\n   * //   \"extraData\": \"0xd783010004846765746887676f312e392e32856c696e75780000000000000000de43ad982c5ccfa922f701d9ac91d47ceaaeeea7e1cc092b1ff6c3c5dcce70a07cf5a79886ff0cc02254ec0de51f1a6881a69a38cd2866a5c0dddbe0dd0f2ce301\",\n   * //   \"gasLimit\": 4712388,\n   * //   \"gasUsed\": 21000,\n   * //   \"hash\": \"0xeb3b437d765d4da9210481c2dd612fa9d0c51e0e83120ee7f573ed9d6296e9a8\",\n   * //   \"logsBloom\": \"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n   * //   \"miner\": \"0x321a210c019790308abb948360d144e7e00b7dc5\",\n   * //   \"mixHash\": \"0x691299af763a758e94200545b8a5fe9d4f2cedbbfea031a1bbc540cbde4631d1\",\n   * //   \"nonce\": \"0x2c8dd099eda5b188\",\n   * //   \"number\": 670731,\n   * //   \"parentHash\": \"0xd907820c7a46ba668a7e5bda8c6a23ec250877b853a85d8343688337f967b2d9\",\n   * //   \"receiptsRoot\": \"0x056b23fbba480696b65fe5a59b8f2148a1299103c4f57df839233af2cf4ca2d2\",\n   * //   \"sha3Uncles\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n   * //   \"stateRoot\": \"0xafbfae425a7fed863662f88d64819132079b43ac4d85988ab6cce7f9342348af\",\n   * //   \"totalDifficulty\": \"3610551057115\",\n   * //   \"transactionsRoot\": \"0x96fc902544191c38f1c9a2725ea2ae29e34246fb4e95728f3e72added7c9574b\"\n   * // }\n   */\n  public async getBlockByNumber(chainType: string, blockNumber: string, option?: any): Promise<any> {\n    return await this._request('getBlockByNumber', { chainType, blockNumber, ...(option || {}) });\n  }\n\n  /**\n   * Get the block information about a block by block number on certain chain.\n   * @since 1.1.0\n   * @group Blocks\n   * @param {string} chainType - The chain being queried, should be <code>\"ETH\"</code>,  <code>\"WAN\"</code>, and other chains.\n   * @param {string} blockHash - The blockHash you want to search.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<any>} - The block information.\n   * @example\n   * const ret = await sdk.getBlockByHash(\"WAN\", \"0xeb3b437d765d4da9210481c2dd612fa9d0c51e0e83120ee7f573ed9d6296e9a8\");\n   * console.log(ret);\n   * // {\n   * //   \"size\": 727,\n   * //   \"timestamp\": 1522575814,\n   * //   \"transactions\": [\"0x4dcfc82728b5a9307f249ac095c8e6fcc436db4f85a094a0c5a457255c20f80f\"],\n   * //   \"uncles\": [],\n   * //   \"difficulty\": \"5812826\",\n   * //   \"extraData\": \"0xd783010004846765746887676f312e392e32856c696e75780000000000000000de43ad982c5ccfa922f701d9ac91d47ceaaeeea7e1cc092b1ff6c3c5dcce70a07cf5a79886ff0cc02254ec0de51f1a6881a69a38cd2866a5c0dddbe0dd0f2ce301\",\n   * //   \"gasLimit\": 4712388,\n   * //   \"gasUsed\": 21000,\n   * //   \"hash\": \"0xeb3b437d765d4da9210481c2dd612fa9d0c51e0e83120ee7f573ed9d6296e9a8\",\n   * //   \"logsBloom\": \"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n   * //   \"miner\": \"0x321a210c019790308abb948360d144e7e00b7dc5\",\n   * //   \"mixHash\": \"0x691299af763a758e94200545b8a5fe9d4f2cedbbfea031a1bbc540cbde4631d1\",\n   * //   \"nonce\": \"0x2c8dd099eda5b188\",\n   * //   \"number\": 670731,\n   * //   \"parentHash\": \"0xd907820c7a46ba668a7e5bda8c6a23ec250877b853a85d8343688337f967b2d9\",\n   * //   \"receiptsRoot\": \"0x056b23fbba480696b65fe5a59b8f2148a1299103c4f57df839233af2cf4ca2d2\",\n   * //   \"sha3Uncles\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n   * //   \"stateRoot\": \"0xafbfae425a7fed863662f88d64819132079b43ac4d85988ab6cce7f9342348af\",\n   * //   \"totalDifficulty\": \"3610551057115\",\n   * //   \"transactionsRoot\": \"0x96fc902544191c38f1c9a2725ea2ae29e34246fb4e95728f3e72added7c9574b\"\n   * // }\n   */\n  public async getBlockByHash(chainType: string, blockHash: string, option?: any): Promise<any> {\n    return await this._request('getBlockByHash', { chainType, blockHash, ...(option || {}) });\n  }\n\n  /**\n   * Get the number of transaction in a given block by block number or block hash on certain chain.\n   * @since 1.1.0\n   * @group Blocks\n   * @param {string} chainType - The chain being queried, should be <code>\"ETH\"</code>,  <code>\"WAN\"</code>, and other EVM chains.\n   * @param {string} blockHashOrBlockNumber - The blockHash or the blockNumber you want to search.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<number>} - The block transaction count.\n   * @example\n   * const ret = await sdk.getBlockTransactionCount(\"WAN\", \"0xeb3b437d765d4da9210481c2dd612fa9d0c51e0e83120ee7f573ed9d6296e9a8\");\n   * // const ret = await sdk.getBlockTransactionCount(\"WAN\", \"670731\");\n   * console.log(ret);\n   * // 1\n   */\n  public async getBlockTransactionCount(chainType: string, blockHashOrBlockNumber: string, option?: any): Promise<number> {\n    const blockOpt = this.checkByte32Hash(blockHashOrBlockNumber) ? { blockHash: blockHashOrBlockNumber } : { blockNumber: blockHashOrBlockNumber };\n    return await this._request('getBlockTransactionCount', { chainType, ...blockOpt, ...(option || {}) });\n  }\n\n  /**\n   * Get transaction count on certain chain.\n   * @since 1.1.0\n   * @group Transactions\n   * @param {string} chainType - The chain being queried, should be <code>\"WAN\"</code>.\n   * @param {any} [option] - Optional.\n   * <br>&nbsp;&nbsp;<code>address</code> - The account's address that you want to search.\n   * <br>&nbsp;&nbsp;<code>startBlockNo</code> - The start block number that you want to search from.\n   * <br>&nbsp;&nbsp;<code>endBlockNo</code> - The end block number that you want to search to.\n   * @returns {Promise<number>} - The transaction count.\n   * @example\n   * const ret = await sdk.getTransCount(\"WAN\", {\"address\":\"0x0b80f69fcb2564479058e4d28592e095828d24aa\", \"startBlockNo\":3607100, \"endBlockNo\":3607130});\n   * console.log(ret);\n   * // 1\n   */\n  public async getTransCount(chainType: string, option?: any): Promise<number> {\n    return await this._request('getTransCount', { chainType, ...(option || {}) });\n  }\n\n  /**\n   * Returns an object with serializedTransaction(buffer) and empty signatures for the given actions with blocksBehind and expireSeconds.\n   * @since 1.1.0\n   * @group Transactions\n   * @param {string} chainType - The chain being queried. Currently supports <code>'EOS'</code> or <code>'XRP'</code>.\n   * @param {any} tx - The transaction to be packed.\n   * <br>&nbsp;&nbsp;<code>actions</code> - required Array of objects (Action).\n   * <br>&nbsp;&nbsp;<code>blocksBehind</code> - Optional, default is 3.\n   * <br>&nbsp;&nbsp;<code>expireSeconds</code> - Optional, default is 30.\n   * <br> If <code>blocksBehind</code> and <code>expireSeconds</code> are set, the block <code>blocksBehind</code> the head block retrieved from JsonRpc's <code>get_info</code> is set as the reference block and the transaction header is serialized using this reference block and the expiration field.\n   * @param {any} [option] - Optional.\n   * <br>&nbsp;&nbsp;<code>version</code> - The result format version you want to search, using <code>undefined</code> that means legacy format as default.\n   * @returns {Promise<any>} - The packed transaction.\n   * @example\n   * const ret = await sdk.packTransaction(\"EOS\", {\"actions\":[{\"account\":\"eosio\",\"name\":\"delegatebw\",\"authorization\":[{\"actor\":\"aarontestnet\",\"permission\":\"active\"}],\"data\":{\"from\":\"aarontestnet\",\"receiver\":\"aarontestnet\",\"stake_net_quantity\":\"0.0001 EOS\",\"stake_cpu_quantity\":\"0.0001 EOS\",\"transfer\":false}}]});\n   * console.log(ret);\n   * // {\n   * //   \"serializedTransaction\": {\n   * //     \"0\": 177,\n   * //     \"1\": 226,\n   * //     \"2\": 138,\n   * //     \"3\": 94,\n   * //     \"4\": 122,\n   * //     \"5\": 95,\n   * //     \"...\": \"...\",\n   * //     \"98\": 0\n   * //   },\n   * //   \"signatures\": []\n   * // }\n   */\n  public async packTransaction(chainType: string, tx: any, option?: any): Promise<any> {\n    return await this._request('packTransaction', { chainType, tx, ...(option || {}) });\n  }\n\n  /**\n   * Get the specific public parameter value of one contract on certain chain.\n   * @since 1.1.0\n   * @group Contracts\n   * @param {string} chainType - The chain being queried, should be <code>\"WAN\"</code>, <code>'ETH'</code> and other EVM chain.\n   * @param {string} scAddr - The token contract address for the specified token.\n   * @param {string} name - The name of the specific contract parameter.\n   * @param {Array} abi - The ABI of the specific contract.\n   * @returns {Promise<any>} - The specific public parameter value.\n   * @example\n   * const ret = await sdk.getScVar(\"WAN\", \"0x55ba61f4da3166487a804bccde7ee4015f609f45\", \"addr\", [/The Abi of the contracts/]);\n   * console.log(ret);\n   * // \"0x2ecb855170c941f239ffe3495f3e07cceabd8421\"\n   */\n  public async getScVar(chainType: string, scAddr: string, name: string, abi: Array<any>, version: string): Promise<any> {\n    return await this._request('getScVar', { chainType, scAddr, name, abi, version });\n  }\n\n  /**\n   * Get the specific public map value of one contract on certain chain.\n   * @since 1.1.0\n   * @group Contracts\n   * @param {string} chainType - The chain being queried, should be <code>\"WAN\"</code>, <code>'ETH'</code> and other EVM chain.\n   * @param {string} scAddr - The token contract address for the specified token.\n   * @param {string} name - The name of the specific contract parameter.\n   * @param {string} key - The key of parameter of the specific contract public map.\n   * @param {Array} abi - The ABI of the specific contract.\n   * @returns {Promise<any>} - The specific public map value.\n   * @example\n   * const ret = await sdk.getScMap(\"WAN\", \"0x55ba61f4da3166487a804bccde7ee4015f609f45\", \"mapAddr\", \"key\", [/The Abi of the contracts/]);\n   * console.log(ret);\n   * // \"0x2ecb855170c941f239ffe3495f3e07cceabd8421\"\n   */\n  public async getScMap(chainType: string, scAddr: string, name: string, key: string, abi: Array<any>, version: string): Promise<any> {\n    return await this._request('getScMap', { chainType, scAddr, name, key, abi, version });\n  }\n\n  /**\n   * Call the specific public function of one contract on certain chain.\n   * @since 1.1.0\n   * @group Contracts\n   * @param {string} chainType - The chain being queried, should be <code>\"WAN\"</code>, <code>'ETH'</code> and other EVM chain.\n   * @param {string} scAddr - The token contract address for the specified token.\n   * @param {string} name - The name of the specific contract parameter.\n   * @param {Array} args - The parameters array a of the specific contract public function.\n   * @param {Array} abi - The ABI of the specific contract.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<any>} - The result to call the specific public function.\n   * @example\n   * const ret = await sdk.callScFunc(\"WAN\", \"0x55ba61f4da3166487a804bccde7ee4015f609f45\", \"getPriAddress\", [], [/The Abi of the contracts/]);\n   * console.log(ret);\n   * // \"0x8cc420e422b3fa1c416a14fc600b3354e3312524\"\n   */\n  public async callScFunc(chainType: string, scAddr: string, name: string, args: Array<any>, abi: Array<any>, version: string, option?: any): Promise<any> {\n    return await this._request('callScFunc', { chainType, scAddr, name, args, abi, version, ...(option || {}) });\n  }\n\n  /**\n   * Get the x value of p2sh by hash(x) from BTC.\n   * @since 1.1.0\n   * @group CrossChain\n   * @param {string} chainType - The chain being queried, should be <code>\"BTC\"</code>.\n   * @param {string} hashX - The certain hashX that you want to search.\n   * @returns {Promise<string>} - The x value of p2sh by hash(x).\n   * @example\n   * const ret = await sdk.getP2shxByHashx(\"BTC\", \"d2a5b1f403594dbc881e466d46a4cac3d6cf202476b1277876f0b24923d032da\");\n   * console.log(ret);\n   * // \"2ecb855170c941f239ffe3495f3e07cceabd8421\"\n   */\n  public async getP2shxByHashx(chainType: string, hashX: string): Promise<string> {\n    return await this._request('getP2shxByHashx', { chainType, hashX });\n  }\n\n  /**\n   * Send a <code>'import address'</code> command to Bitcoin-like chain.\n   * @since 1.1.0\n   * @group Accounts\n   * @param {string} chainType - The chain being queried, should be <code>\"BTC\"</code>.\n   * @param {string} address - The BTC account address you want to import to the node to scan transactions.\n   * @returns {Promise<string>}\n   * @example\n   * const ret = await sdk.importAddress(\"BTC\", \"mmmmmsdfasdjflaksdfasdf\");\n   * console.log(ret);\n   * // \"success\"\n   */\n  public async importAddress(chainType: string, address: string): Promise<string> {\n    return await this._request('importAddress', { chainType, address });\n  }\n\n  /**\n   * Query a <code>'estimatesmartfee'</code> command to Bitcoin-like chain.\n   * @since 1.1.0\n   * @group Accounts\n   * @param {string} chainType - The chain name that you want to search, should be <code>\"BTC\"</code>, <code>\"LTC\"</code> and <code>\"DOGE\"</code>.\n   * @param {any} [option] - Optional:\n   * <br>&nbsp;&nbsp;<code>target</code> - The numeric of confirmation target in blocks (1 - 1008).\n   * <br>&nbsp;&nbsp;<code>mode</code> - The string of fee estimate mode.\n   * <br>&nbsp;&nbsp;<code>version</code> - The result format version you want to search, using <code>undefined</code> that means legacy format as default.\n   * @returns {Promise<string|number>} - The result of <code>'estimatesmartfee'</code>.\n   * @example\n   * const ret = await sdk.estimateSmartFee(\"BTC\");\n   * console.log(ret);\n   * // \"10500000000000\"\n   */\n  public async estimateSmartFee(chainType: string, option?: any): Promise<string|number> {\n    return await this._request('estimateSmartFee', { chainType, ...(option || {}) });\n  }\n\n  /**\n   * Get the information of tokens which are supported for cross-chain ability.\n   * @since 1.1.0\n   * @group CrossChain\n   * @param {string} crossChain - The cross-chain name that you want to search, should be <code>\"ETH\"</code>.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<Array<any>>} - The information of tokens.\n   * @example\n   * const ret = await sdk.getRegTokens(\"ETH\");\n   * console.log(ret);\n   * // [\n   * //   {\n   * //     \"tokenOrigAddr\": \"0x54950025d1854808b09277fe082b54682b11a50b\",\n   * //     \"tokenWanAddr\": \"0x67f3de547c7f3bc77095686a9e7fe49397e59cdf\",\n   * //     \"ratio\": \"15000000\",\n   * //     \"minDeposit\": \"10000000000000000000\",\n   * //     \"origHtlc\": \"0x149f1650f0ff097bca88118b83ed58fb1cfc68ef\",\n   * //     \"wanHtlc\": \"0x27feb1785f61504619a105faa00f57c49cc4d9c3\",\n   * //     \"withdrawDelayTime\": \"259200\",\n   * //     \"tokenHash\": \"0xe6bb4913c8cfb38d44a01360bb7874c58812e14b9154543bb67783e611e0475b\",\n   * //     \"name\": \"Wanchain MKR Crosschain Token\",\n   * //     \"symbol\": \"MKR\",\n   * //     \"decimals\": \"18\",\n   * //     \"iconData\": \"/9j/4AAQ...\",\n   * //     \"iconType\": \"jpg\"\n   * //   },\n   * //   {\n   * //     \"tokenOrigAddr\": \"0xdbf193627ee704d38495c2f5eb3afc3512eafa4c\",\n   * //     \"tokenWanAddr\": \"0xda16e66820a3c64c34f2b35da3f5e1d1742274cb\",\n   * //     \"ratio\": \"20000\",\n   * //     \"minDeposit\": \"10000000000000000000\",\n   * //     \"origHtlc\": \"0x149f1650f0ff097bca88118b83ed58fb1cfc68ef\",\n   * //     \"wanHtlc\": \"0x27feb1785f61504619a105faa00f57c49cc4d9c3\",\n   * //     \"withdrawDelayTime\": \"259200\",\n   * //     \"tokenHash\": \"0x0cfee48dd8c8e32ad342c0f4ee723df9c2818d02734e28897ad0295bb458d4bc\",\n   * //     \"name\": \"Wanchain SAI Crosschain Token\",\n   * //     \"symbol\": \"SAI\",\n   * //     \"decimals\": \"18\",\n   * //     \"iconData\": \"/9j/4AAQ...\",\n   * //     \"iconType\": \"jpg\"\n   * //   }\n   * // ]\n   */\n  public async getRegTokens(crossChain: string, option?: any): Promise<Array<any>> {\n    return await this._request('getRegTokens', { crossChain, ...(option || {}) });\n  }\n\n  /**\n   * Token exchange ratio,such as 1 token to 880 WANs, the precision is 10000, the ratio is 880*precision = 880,0000. The ratio would be changed accoring to the market value ratio periodically.\n   * @since 1.1.0\n   * @group CrossChain\n   * @param {string} crossChain - The cross-chain name that you want to search, should be <code>\"ETH\"</code>.\n   * @param {string} tokenScAddr - The token contract address for the specified token.\n   * @returns {Promise<string>} - The result of ratio.\n   * @example\n   * const ret = await sdk.getToken2WanRatio(\"ETH\", \"0x00f58d6d585f84b2d7267940cede30ce2fe6eae8\");\n   * console.log(ret);\n   * // \"3000\"\n   */\n  public async getToken2WanRatio(crossChain: string, tokenScAddr: string): Promise<string> {\n    return await this._request('getToken2WanRatio', { crossChain, tokenScAddr });\n  }\n\n  /**\n   * Returns an array about OTA mix set.\n   * @since 1.1.0\n   * @group PrivateTrans\n   * @param {string} address - The OTA address\n   * @param {number} num - The privateTx:ringSize.\n   * @param {string} chainType - Optional, the chain being queried. Currently supports <code>'WAN'</code>.\n   * @returns {Promise<Array<string>>} - The array about OTA mix set.\n   * @example\n   * const ret = await sdk.getOTAMixSet(\"0x02539dD49A75d6Cf4c5cc857bc87BC3836E74F1c845A08eC5E009A4dCa59D47C7c0298697d22cfa7d35A670B45C3531ea9D3aAc39E58c929d440Ac1392BDeB8926e7\", 8);\n   * console.log(ret);\n   * // [ '0x02a0ab76c74fc379743bdc958d806c9062f3fc68b097fe8e91453d7324f7ae648702a20af02d1fe495036b38ab8c44b5676c1c0158f0057b6500150374b6f19ab2ba',\n   * //   '0x020317c92daac5ad9cc5377bc4f493197772e9459fb737e1c26c7e6f030f21b7d002c5d50ef420e818f58c87a3f57cb1167adf268911021e9d0c3cf9aea7e06ac1ad',\n   * //   '0x02c6fa830d978e20bff8e993356d3456aa6c6f1dab966d20953bac55b7526ab0f203719139be2bc3660a8841fcf3d34d9043693e48b6cfebeaa4447cb1d72f809139',\n   * //   '0x03039ca6d4c95e75b7b6e131bf2af3d84b8d1807c34ed04fc637e57e45f5b590e503db2ce78d660ed6e230feb4ea91d8f7662315731d625d4a7d771cf82b686fb0a9',\n   * //   '0x03f0ee5da723151435e287a616e4502642315c9ed933569402ad0f838db0fd597a0325b3cb82275a6aa6cc1f1edc9675fc7201f5e9e589a34ed676f4400f2a081129',\n   * //   '0x038b3c1fada7710a519c4bb7929c8d08a8e9e17fcf7ea510043d00a6844a06155c02ec1e571a8f3a1471461cf74ecc4568d4009a3fc910c29c30bfdfb05f79924b12',\n   * //   '0x036d369b2a0e4fbd0e270c5d78e8fc53c1b0f1d58878f1a106812380325493fec3020f00e39b4e76169433289f92ee0fea44e1e0f26b87420c6f897489f6975621b6',\n   * //   '0x03bf32510e236f8bafd3127a3598f9c36f60612371f798ed766214183d1d2c3f1b027de375bc1112030300b843172f39031a735fc626f76e823e6b3e0367d89b269d'\n   * // ]\n   */\n  public async getOTAMixSet(address: string, num: number, chainType: string): Promise<Array<string>> {\n    return await this._request('getOTAMixSet', { address, number: num, chainType });\n  }\n\n  /**\n   * Executes a message call or transaction and returns the amount of the gas used.\n   * @since 1.1.0\n   * @group PrivateTrans\n   * @param {string} chainType - The chain being queried, should be <code>\"ETH\"</code>,  <code>\"WAN\"</code>, and other EVM chains.\n   * @param {any} tx - The transaction object see eth.sendTransaction, with the difference that for calls the from property is optional as well.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<number|string>} - The estimated gas.\n   * @example\n   * const ret = await sdk.estimateGas(\"WAN\", {from:'0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe', to:'0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe', value:'1000000000000000'});\n   * console.log(ret);\n   * // 21000\n   */\n  public async estimateGas(chainType: string, tx: any, option?: any): Promise<number|string> {\n    return await this._request('estimateGas', { chainType, ...tx, ...(option || {}) });\n  }\n\n  /**\n   * Returns an object containing various details about the blockchain.\n   * @since 1.1.0\n   * @group CrossChain\n   * @param {string} chainType - The chain being queried. Currently supports <code>'EOS'</code>.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<any>} - The blockchain info.\n   * @example\n   * const ret = await sdk.getChainInfo(\"EOS\");\n   * console.log(ret);\n   * // {\n   * //   server_version: 'aa60b9ca',\n   * //   chain_id: 'e70aaab8997e1dfce58fbfac80cbbb8fecec7b99cf982a9444273cbc64c41473',\n   * //   head_block_num: 84031197,\n   * //   last_irreversible_block_num: 84030870,\n   * //   last_irreversible_block_id: '05023596ebe1b775a39a0ab380a0fd95bf435fbe9eccbf2b3e38c44a0cdc6a0d',\n   * //   head_block_id: '050236dd683c4f98c9f5965910bf941d67b8fe6469a149114a3f0053779461da',\n   * //   head_block_time: '2020-04-02T11:35:25.000',\n   * //   head_block_producer: 'five.cartel',\n   * //   virtual_block_cpu_limit: 500000000,\n   * //   virtual_block_net_limit: 524288000,\n   * //   block_cpu_limit: 499990,\n   * //   block_net_limit: 524288,\n   * //   server_version_string: 'v2.0.2',\n   * //   fork_db_head_block_num: 84031197,\n   * //   fork_db_head_block_id: '050236dd683c4f98c9f5965910bf941d67b8fe6469a149114a3f0053779461da',\n   * //   server_full_version_string: 'v2.0.2-aa60b9caf9b7e2bd2411bb199c0c1d9fd8f085d5'\n   * // }\n   */\n  public async getChainInfo(chainType: string, option?: any): Promise<any> {\n    return await this._request('getChainInfo', { chainType, ...(option || {}) });\n  }\n\n  /**\n   * Returns an object with one member labeled as the symbol you requested, the object has three members: supply (Symbol), max_supply (Symbol) and issuer (Name).\n   * @since 1.1.0\n   * @group EOS\n   * @deprecated The EOS blockchain has been delisted.\n   * @param {string} chainType - The chain being queried. Currently supports <code>'EOS'</code>.\n   * @param {string} tokenScAddr - EOS contract code.\n   * @param {string} symbol - A string representation of an EOSIO symbol.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<any>} - The stats info.\n   * @example\n   * const ret = await sdk.getStats(\"EOS\", \"eosio.token\", \"EOS\");\n   * console.log(ret);\n   * // {\n   * //   \"supply\": \"10756688680.6257 EOS\",\n   * //   \"max_supply\": \"100000000000.0000 EOS\",\n   * //   \"issuer\": \"eosio\"\n   * // }\n   */\n  public async getStats(chainType: string, tokenScAddr: string, symbol: string, option?: any): Promise<any> {\n    return await this._request('getCurrencyStats', { chainType, tokenScAddr, symbol, ...(option || {}) });\n  }\n\n  /**\n   * Returns an object containing various details about a specific account on the blockchain.\n   * @since 1.1.0\n   * @group Accounts\n   * @param {string} chainType - The chain being queried. Currently supports <code>'XRP'</code>.\n   * @param {string} address - The account code.\n   * @param {any} [option] - Optional.\n   * <br>&nbsp;&nbsp;<code>version</code> - The result format version you want to search, using <code>undefined</code> that means legacy format as default.\n   * @returns {Promise<any>} - The account info.\n   * @example\n   * const ret = await sdk.getAccountInfo(\"EOS\", \"aarontestnet\");\n   * console.log(ret);\n   * // {\n   * //   \"account_name\": \"aarontestnet\",\n   * //   \"head_block_num\": 84039011,\n   * //   \"head_block_time\": \"2020-04-02T12: 40: 32.000\",\n   * //   \"privileged\": false,\n   * //   \"last_code_update\": \"1970-01-01T00: 00: 00.000\",\n   * //   \"created\": \"2019-04-22T03: 47: 11.500\",\n   * //   \"core_liquid_balance\": \"148.3494 EOS\",\n   * //   \"ram_quota\": 7517,\n   * //   \"net_weight\": 340000,\n   * //   \"cpu_weight\": 2230000,\n   * //   \"net_limit\": {\n   * //     \"used\": 520,\n   * //     \"available\": 2188721,\n   * //     \"max\": 2189241\n   * //   },\n   * //   \"cpu_limit\": {\n   * //     \"used\": 935,\n   * //     \"available\": 13184853,\n   * //     \"max\": 13185788\n   * //   },\n   * //   \"ram_usage\": 3894,\n   * //   \"permissions\": [\n   * //     {\n   * //       \"perm_name\": \"active\",\n   * //       \"parent\": \"owner\",\n   * //       \"required_auth\": [Object]\n   * //     },\n   * //     {\n   * //       \"perm_name\": \"owner\",\n   * //       \"parent\": \"\",\n   * //       \"required_auth\": [Object]\n   * //     }\n   * //   ],\n   * //   \"total_resources\": {\n   * //     \"owner\": \"aarontestnet\",\n   * //     \"net_weight\": \"34.0000 EOS\",\n   * //     \"cpu_weight\": \"223.0000 EOS\",\n   * //     \"ram_bytes\": 6117\n   * //   },\n   * //   \"self_delegated_bandwidth\": {\n   * //     \"from\": \"aarontestnet\",\n   * //     \"to\": \"aarontestnet\",\n   * //     \"net_weight\": \"24.0000 EOS\",\n   * //     \"cpu_weight\": \"73.0000 EOS\"\n   * //   },\n   * //   \"refund_request\": null,\n   * //   \"voter_info\": {\n   * //     \"owner\": \"aarontestnet\",\n   * //     \"proxy\": \"\",\n   * //     \"producers\": [],\n   * //     \"staked\": 2010000,\n   * //     \"last_vote_weight\": \"0.00000000000000000\",\n   * //     \"proxied_vote_weight\": \"0.00000000000000000\",\n   * //     \"is_proxy\": 0,\n   * //     \"flags1\": 0,\n   * //     \"reserved2\": 0,\n   * //     \"reserved3\": \"0\"\n   * //   },\n   * //   \"rex_info\": null\n   * // }\n   */\n  public async getAccountInfo(chainType: string, address: string, option?: any): Promise<any> {\n    return await this._request('getAccountInfo', { chainType, address, ...(option || {}) });\n  }\n\n  /**\n   * Returns an array containing account names which is related to the public key, or owned by the given account.\n   * @since 1.1.0\n   * @group EOS\n   * @deprecated The EOS blockchain has been delisted.\n   * @param {string} chainType - The chain being queried. Currently supports <code>'EOS'</code>.\n   * @param {string} addressOrPublicKey - The account name or the public key.\n   * <br>&nbsp;&nbsp;<code>version</code> - The result format version you want to search, using <code>undefined</code> that means legacy format as default.\n   * @returns {Array<any>} - The accounts.\n   * @example\n   * const ret = await sdk.getAccounts(\"EOS\", \"EOS6yEsFdisRXLpk4xg4AEnYJDW5bLrjwBDoHNREsDsxcwFEncErK\");\n   * // const ret = await sdk.getAccounts(\"EOS\", \"aarontestnet\");\n   * console.log(ret);\n   * // [ \"wanchainbbbb\", \"wanchainaaaa\" ]\n   */\n  public async getAccounts(chainType: string, addressOrPublicKey: string): Promise<any> {\n    const option = (addressOrPublicKey.startsWith(\"EOS\")) ? { publicKey: addressOrPublicKey } : { address: addressOrPublicKey };\n    return await this._request('getAccounts', { chainType, ...option });\n  }\n\n  /**\n   * Returns the required keys needed to sign a transaction.\n   * @since 1.1.0\n   * @group EOS\n   * @param {string} chainType - The chain being queried. Currently supports <code>'EOS'</code>.\n   * @param {any} txArgs - Optional, transaction arguments.\n   * <br>&nbsp;&nbsp;<code>expiration</code> - required string (DateTime) ^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}$ Time that transaction must be confirmed by.\n   * <br>&nbsp;&nbsp;<code>ref_block_num</code> - required integer.\n   * <br>&nbsp;&nbsp;<code>ref_block_prefix</code> - required integer.\n   * <br>&nbsp;&nbsp;<code>max_net_usage_words</code> - required string or integer (WholeNumber) A whole number.\n   * <br>&nbsp;&nbsp;<code>max_cpu_usage_ms</code> - required string or integer (WholeNumber) A whole number.\n   * <br>&nbsp;&nbsp;<code>delay_sec</code> - required integer.\n   * <br>&nbsp;&nbsp;<code>context_free_actions</code> - required Array of objects (Action).\n   * <br>&nbsp;&nbsp;<code>actions</code> - required Array of objects (Action).\n   * <br>&nbsp;&nbsp;<code>transaction_extensions</code> - Array of Array of integers or strings (Extension).\n   * <br>&nbsp;&nbsp;<code>available_keys</code> - Array of strings (PublicKey) Provide the available keys.\n   * @returns {Promise<Array<string>>} - The required keys.\n   * @example\n   * const ret = await sdk.getRequiredKeys(\"EOS\", {\"transaction\":{\"expiration\":\"2020-04-03T06:06:41\",\"ref_block_num\":15105,\"ref_block_prefix\":2116318876,\"max_net_usage_words\":\"\",\"max_cpu_usage_ms\":\"\",\"delay_sec\":0,\"context_free_actions\":[],\"actions\":[{\"account\":\"eosio.token\",\"name\":\"transfer\",\"authorization\":[{\"actor\":\"cuiqiangtest\",\"permission\":\"active\"}],\"data\":\"90D5CC58E549AF3180626ED39986A6E1010000000000000004454F530000000000\"}],\"transaction_extensions\":[]},\"available_keys\":[\"EOS7MiJnddv2dHhjS82i9SQWMpjLoBbxP1mmpDmwn6ALGz4mpkddv\"]});\n   * console.log(ret);\n   * // ['PUB_K1_69X3383RzBZj41k73CSjUNXM5MYGpnDxyPnWUKPEtYQmVzqTY7']\n   */\n  public async getRequiredKeys(chainType: string, txArgs: any, option?: any): Promise<Array<string>> {\n    return await this._request('getRequiredKeys', { chainType, txArgs, ...(option || {}) });\n  }\n\n  /**\n   * Retrieves raw code and ABI for a contract based on account name.\n   * @since 1.1.0\n   * @group EOS\n   * @deprecated The EOS blockchain has been delisted.\n   * @param {string} chainType - The chain being queried. Currently supports <code>'EOS'</code>.\n   * @param {string} scAddr - The contract account name.\n   * @returns {Promise<any>} - The raw code and ABI.\n   * @example\n   * const ret = await sdk.getRawCodeAndAbi(\"EOS\", \"wanchainhtlc\");\n   * console.log(ret);\n   * // { \"account_name\": \"wanchainhtlc\", \"wasm\": \"...\", \"abi\": \"...\" }\n   */\n  public async getRawCodeAndAbi(chainType: string, scAddr: string): Promise<any> {\n    return await this._request('getRawCodeAndAbi', { chainType, scAddr });\n  }\n\n  /**\n   * Retrieves the ABI for a contract based on its account name.\n   * @since 1.1.0\n   * @group EOS\n   * @deprecated The EOS blockchain has been delisted.\n   * @param {string} chainType - The chain being queried. Currently supports <code>'EOS'</code>.\n   * @param {string} scAddr - The contract account name.\n   * @returns {Promise<any>} - The ABI.\n   * @example\n   * const ret = await sdk.getAbi(\"EOS\", \"wanchainhtlc\");\n   * console.log(ret);\n   * // {\n   * //   \"version\": \"eosio::abi/1.1\",\n   * //   \"types\": [\n   * //     {\n   * //       \"new_type_name\": \"time_t\",\n   * //       \"type\": \"uint32\"\n   * //     }\n   * //   ],\n   * //   \"structs\": [\n   * //     {\n   * //       \"name\": \"asset_t\",\n   * //       \"base\": \"\",\n   * //       \"fields\": [\"Array\"]\n   * //     },\n   * //     {\n   * //       \"name\": \"debt_t\",\n   * //       \"base\": \"\",\n   * //       \"fields\": [\"Array\"]\n   * //     },\n   * //     {\n   * //       \"name\": \"fee_t\",\n   * //       \"base\": \"\",\n   * //       \"fields\": [\"Array\"]\n   * //     },\n   * //     {\n   * //       \"name\": \"inlock\",\n   * //       \"base\": \"\",\n   * //       \"fields\": [\"Array\"]\n   * //     },\n   * //     {\n   * //       \"name\": \"inredeem\",\n   * //       \"base\": \"\",\n   * //       \"fields\": [\"Array\"]\n   * //     },\n   * //     {\n   * //       \"name\": \"inrevoke\",\n   * //       \"base\": \"\",\n   * //       \"fields\": [\"Array\"]\n   * //     },\n   * //     {\n   * //       \"name\": \"lockdebt\",\n   * //       \"base\": \"\",\n   * //       \"fields\": [\"Array\"]\n   * //     },\n   * //     {\n   * //       \"name\": \"num64_t\",\n   * //       \"base\": \"\",\n   * //       \"fields\": [\"Array\"]\n   * //     },\n   * //     {\n   * //       \"name\": \"outlock\",\n   * //       \"base\": \"\",\n   * //       \"fields\": [\"Array\"]\n   * //     },\n   * //     {\n   * //       \"name\": \"outredeem\",\n   * //       \"base\": \"\",\n   * //       \"fields\": [\"Array\"]\n   * //     },\n   * //     {\n   * //       \"name\": \"outrevoke\",\n   * //       \"base\": \"\",\n   * //       \"fields\": [\"Array\"]\n   * //     },\n   * //     {\n   * //       \"name\": \"pk_t\",\n   * //       \"base\": \"\",\n   * //       \"fields\": [\"Array\"]\n   * //     },\n   * //     {\n   * //       \"name\": \"redeemdebt\",\n   * //       \"base\": \"\",\n   * //       \"fields\": [\"Array\"]\n   * //     },\n   * //     {\n   * //       \"name\": \"regsig\",\n   * //       \"base\": \"\",\n   * //       \"fields\": [\"Array\"]\n   * //     },\n   * //     {\n   * //       \"name\": \"revokedebt\",\n   * //       \"base\": \"\",\n   * //       \"fields\": [\"Array\"]\n   * //     },\n   * //     {\n   * //       \"name\": \"setratio\",\n   * //       \"base\": \"\",\n   * //       \"fields\": [\"Array\"]\n   * //     },\n   * //     {\n   * //       \"name\": \"signature_t\",\n   * //       \"base\": \"\",\n   * //       \"fields\": [\"Array\"]\n   * //     },\n   * //     {\n   * //       \"name\": \"transfer_t\",\n   * //       \"base\": \"\",\n   * //       \"fields\": [\"Array\"]\n   * //     },\n   * //     {\n   * //       \"name\": \"unregsig\",\n   * //       \"base\": \"\",\n   * //       \"fields\": [\"Array\"]\n   * //     },\n   * //     {\n   * //       \"name\": \"updatesig\",\n   * //       \"base\": \"\",\n   * //       \"fields\": [\"Array\"]\n   * //     },\n   * //     {\n   * //       \"name\": \"withdraw\",\n   * //       \"base\": \"\",\n   * //       \"fields\": [\"Array\"]\n   * //     }\n   * //   ],\n   * //   \"actions\": [\n   * //     {\n   * //       \"name\": \"inlock\",\n   * //       \"type\": \"inlock\",\n   * //       \"ricardian_contract\": \"\"\n   * //     },\n   * //     {\n   * //       \"name\": \"inredeem\",\n   * //       \"type\": \"inredeem\",\n   * //       \"ricardian_contract\": \"\"\n   * //     },\n   * //     {\n   * //       \"name\": \"inrevoke\",\n   * //       \"type\": \"inrevoke\",\n   * //       \"ricardian_contract\": \"\"\n   * //     },\n   * //     {\n   * //       \"name\": \"lockdebt\",\n   * //       \"type\": \"lockdebt\",\n   * //       \"ricardian_contract\": \"\"\n   * //     },\n   * //     {\n   * //       \"name\": \"outlock\",\n   * //       \"type\": \"outlock\",\n   * //       \"ricardian_contract\": \"\"\n   * //     },\n   * //     {\n   * //       \"name\": \"outredeem\",\n   * //       \"type\": \"outredeem\",\n   * //       \"ricardian_contract\": \"\"\n   * //     },\n   * //     {\n   * //       \"name\": \"outrevoke\",\n   * //       \"type\": \"outrevoke\",\n   * //       \"ricardian_contract\": \"\"\n   * //     },\n   * //     {\n   * //       \"name\": \"redeemdebt\",\n   * //       \"type\": \"redeemdebt\",\n   * //       \"ricardian_contract\": \"\"\n   * //     },\n   * //     {\n   * //       \"name\": \"regsig\",\n   * //       \"type\": \"regsig\",\n   * //       \"ricardian_contract\": \"\"\n   * //     },\n   * //     {\n   * //       \"name\": \"revokedebt\",\n   * //       \"type\": \"revokedebt\",\n   * //       \"ricardian_contract\": \"\"\n   * //     },\n   * //     {\n   * //       \"name\": \"setratio\",\n   * //       \"type\": \"setratio\",\n   * //       \"ricardian_contract\": \"\"\n   * //     },\n   * //     {\n   * //       \"name\": \"unregsig\",\n   * //       \"type\": \"unregsig\",\n   * //       \"ricardian_contract\": \"\"\n   * //     },\n   * //     {\n   * //       \"name\": \"updatesig\",\n   * //       \"type\": \"updatesig\",\n   * //       \"ricardian_contract\": \"\"\n   * //     },\n   * //     {\n   * //       \"name\": \"withdraw\",\n   * //       \"type\": \"withdraw\",\n   * //       \"ricardian_contract\": \"\"\n   * //     }\n   * //   ],\n   * //   \"tables\": [\n   * //     {\n   * //       \"name\": \"assets\",\n   * //       \"index_type\": \"i64\",\n   * //       \"key_names\": [],\n   * //       \"key_types\": [],\n   * //       \"type\": \"asset_t\"\n   * //     },\n   * //     {\n   * //       \"name\": \"debts\",\n   * //       \"index_type\": \"i64\",\n   * //       \"key_names\": [],\n   * //       \"key_types\": [],\n   * //       \"type\": \"debt_t\"\n   * //     },\n   * //     {\n   * //       \"name\": \"fees\",\n   * //       \"index_type\": \"i64\",\n   * //       \"key_names\": [],\n   * //       \"key_types\": [],\n   * //       \"type\": \"fee_t\"\n   * //     },\n   * //     {\n   * //       \"name\": \"longlongs\",\n   * //       \"index_type\": \"i64\",\n   * //       \"key_names\": [],\n   * //       \"key_types\": [],\n   * //       \"type\": \"num64_t\"\n   * //     },\n   * //     {\n   * //       \"name\": \"pks\",\n   * //       \"index_type\": \"i64\",\n   * //       \"key_names\": [],\n   * //       \"key_types\": [],\n   * //       \"type\": \"pk_t\"\n   * //     },\n   * //     {\n   * //       \"name\": \"signer\",\n   * //       \"index_type\": \"i64\",\n   * //       \"key_names\": [],\n   * //       \"key_types\": [],\n   * //       \"type\": \"signature_t\"\n   * //     },\n   * //     {\n   * //       \"name\": \"transfers\",\n   * //       \"index_type\": \"i64\",\n   * //       \"key_names\": [],\n   * //       \"key_types\": [],\n   * //       \"type\": \"transfer_t\"\n   * //     }\n   * //   ],\n   * //   \"ricardian_clauses\": [],\n   * //   \"error_messages\": [],\n   * //   \"abi_extensions\": [],\n   * //   \"variants\": []\n   * // }\n   */\n  public async getAbi(chainType: string, scAddr: string): Promise<any> {\n    return await this._request('getAbi', { chainType, scAddr });\n  }\n\n  /**\n   * Returns an object containing buffer ABI for a contract based on its account name.\n   * @since 1.1.0\n   * @group EOS\n   * @param {string} chainType - The chain being queried. Currently supports <code>'EOS'</code>.\n   * @param {string} scAddr - The contract account name.\n   * @returns {Promise<any>} - The accounts.\n   * @example\n   * const ret = await sdk.getRawAbi(\"EOS\", \"wanchainhtlc\");\n   * console.log(ret);\n   * // {\n   * //   \"0\": 14,\n   * //   \"1\": 101,\n   * //   \"2\": 111,\n   * //   \"3\": 115,\n   * //   \"…\": \"...\",\n   * //   \"1557\": 0\n   * // }\n   */\n  public async getRawAbi(chainType: string, scAddr: string, option?: any): Promise<any> {\n    return await this._request('getRawAbi', { chainType, scAddr, ...(option || {}) });\n  }\n\n  /**\n   * Returns an array of actions based on notified account..\n   * @since 1.1.0\n   * @group EOS\n   * @deprecated The EOS blockchain has been delisted.\n   * @param {string} chainType - The chain being queried. Currently supports <code>'EOS'</code>.\n   * @param {string} address - The account name you want to query.\n   * @param {any} option - Optional, the filter for actions.\n   * <br>&nbsp;&nbsp;<strong>For eosjs 16.0.0</strong>:\n   * <br>&nbsp;&nbsp;&nbsp;&nbsp;<code>pos</code> - An int32 that is absolute sequence positon, -1 is the end/last action.\n   * <br>&nbsp;&nbsp;&nbsp;&nbsp;<code>offset</code> - The number of actions relative to pos, negative numbers return [pos-offset,pos), positive numbers return [pos,pos+offset).\n   * \n   * <br>&nbsp;&nbsp;<strong>For eosjs 20</strong>:\n   * <br>&nbsp;&nbsp;&nbsp;&nbsp;<code>filter</code> - The string for code::name filter.\n   * <br>&nbsp;&nbsp;&nbsp;&nbsp;<code>skip</code> - The number to skip [n] actions (pagination).\n   * <br>&nbsp;&nbsp;&nbsp;&nbsp;<code>limit</code> - The number to limit of [n] actions per page.\n   * <br>&nbsp;&nbsp;&nbsp;&nbsp;<code>sort</code> - The string to sort direction.\n   * <br>&nbsp;&nbsp;&nbsp;&nbsp;<code>after</code> - The string to filter after specified date (ISO8601).\n   * <br>&nbsp;&nbsp;&nbsp;&nbsp;<code>before</code> - The string to filter before specified date (ISO8601).\n   * <br>&nbsp;&nbsp;&nbsp;&nbsp;<code>transfer_to</code> - The string to transfer filter to.\n   * <br>&nbsp;&nbsp;&nbsp;&nbsp;<code>transfer_from</code> - The string to transfer filter from. \n   * <br>&nbsp;&nbsp;&nbsp;&nbsp;<code>transfer_symbol</code> - The string to transfer filter symbol.\n   * <br>&nbsp;&nbsp;&nbsp;&nbsp;<code>act_name</code> - The string for act name. \n   * <br>&nbsp;&nbsp;&nbsp;&nbsp;<code>act_account</code> - The string for act account. \n   * @returns {Promise<any>} - The actions.\n   * @example\n   * const ret = await sdk.getActions(\"EOS\", \"wanchainhtlc\", {filter: \"wanchainhtlc:outlock\", limit: 2});\n   * console.log(ret);\n   * // [\n   * //   {\n   * //     \"act\": { \"authorization\": [Array],\n   * //     \"data\": [Object],\n   * //     \"account\": \"wanchainhtlc\",\n   * //     \"name\": \"outlock\"\n   * //   },\n   * //   \"cpu_usage_us\": 504,\n   * //   \"net_usage_words\": 65,\n   * //   \"account_ram_deltas\": [ [Object] ],\n   * //   \"global_sequence\": 564872608,\n   * //   \"@timestamp\": \"2020-02-20T03:19:58.500\",\n   * //   \"block_num\": 76739261,\n   * //   \"producer\": \"eight.cartel\",\n   * //   \"trx_id\": \"20bd931ce948c57614f9c6b617532f806a59314ebfe0cacea13be461e0806034\",\n   * //   \"action_ordinal\": 1,\n   * //   \"creator_action_ordinal\": 0,\n   * //   \"notified\": [ \"wanchainhtlc\" ]\n   * //   }\n   * // ]\n   */\n  public async getActions(chainType: string, address: string, option: any): Promise<any> {\n    return await this._request('getActions', { chainType, address, ...(option || {}) });\n  }\n\n  /**\n   * Returns an object containing rows from the specified table eosio.table.global.\n   * @since 1.1.0\n   * @group EOS\n   * @deprecated The EOS blockchain has been delisted.\n   * @param {string} chainType - The chain being queried. Currently supports <code>'EOS'</code>.\n   * @returns {Promise<any>} - The resource info.\n   * @example\n   * const ret = await sdk.getResource(\"EOS\");\n   * console.log(ret);\n   * // {\n   * //   \"max_block_net_usage\": 524288,\n   * //   \"target_block_net_usage_pct\": 1000,\n   * //   \"max_transaction_net_usage\": 524287,\n   * //   \"base_per_transaction_net_usage\": 12,\n   * //   \"net_usage_leeway\": 500,\n   * //   \"context_free_discount_net_usage_num\": 20,\n   * //   \"context_free_discount_net_usage_den\": 100,\n   * //   \"max_block_cpu_usage\": 500000,\n   * //   \"target_block_cpu_usage_pct\": 10,\n   * //   \"max_transaction_cpu_usage\": 200000,\n   * //   \"min_transaction_cpu_usage\": 10,\n   * //   \"max_transaction_lifetime\": 3600,\n   * //   \"deferred_trx_expiration_window\": 600,\n   * //   \"max_transaction_delay\": 3888000,\n   * //   \"max_inline_action_size\": 524287,\n   * //   \"max_inline_action_depth\": 16,\n   * //   \"max_authority_depth\": 6,\n   * //   \"max_ram_size\": \"68719476736\",\n   * //   \"total_ram_bytes_reserved\": \"31287726990\",\n   * //   \"total_ram_stake\": \"8358873421\",\n   * //   \"last_producer_schedule_update\": \"2020-04-05T13:19:05.500\",\n   * //   \"last_pervote_bucket_fill\": \"2020-04-05T13:12:01.000\",\n   * //   \"pervote_bucket\": 2472797114,\n   * //   \"perblock_bucket\": \"2207987466943\",\n   * //   \"total_unpaid_blocks\": 13819603,\n   * //   \"total_activated_stake\": \"2480152949826\",\n   * //   \"thresh_activated_stake_time\": \"2018-11-23T17:21:01.000\",\n   * //   \"last_producer_schedule_size\": 21,\n   * //   \"total_producer_vote_weight\": \"460825067195145191424.00000000000000000\",\n   * //   \"last_name_close\": \"2020-04-04T13:37:20.500\"\n   * // }\n   */\n  public async getResource(chainType: string): Promise<any> {\n    return await this._request('getResource', { chainType });\n  }\n\n  /**\n   * Returns an object containing net/cpu/ram price(cpu in ms/EOS, net/ram in KB/EOS) by provide one producer's account.\n   * @since 1.1.0\n   * @group EOS\n   * @deprecated The EOS blockchain has been delisted.\n   * @param {string} chainType - The chain being queried. Currently supports <code>'EOS'</code>.\n   * @param {string} address - The producer's account.\n   * @returns {Promise<any>} - The resource price.\n   * @example\n   * const ret = await sdk.getResourcePrice(\"EOS\", \"junglesweden\");\n   * console.log(ret);\n   * // { \"net\": \"0.005301073461471487\", \"cpu\": \"0.005637367015436455\", \"ram\": \"0.050223917691993435\" }\n   */\n  public async getResourcePrice(chainType: string, address: string): Promise<any> {\n    return await this._request('getResourcePrice', { chainType, address });\n  }\n\n  /**\n   * Returns an object containing net/cpu price(cpu in ms/EOS, net in KB/EOS) by provide one producer's account.\n   * @since 1.1.0\n   * @group EOS\n   * @deprecated The EOS blockchain has been delisted.\n   * @param {string} chainType - The chain being queried. Currently supports <code>'EOS'</code>.\n   * @param {string} address - The producer's account.\n   * @returns {Promise<any>} - The bandwidth price.\n   * @example\n   * const ret = await sdk.getBandwidthPrice(\"EOS\", \"junglesweden\");\n   * console.log(ret);\n   * // { \"net\": \"0.005301073461471487\", \"cpu\": \"0.005637367015436455\" }\n   */\n  public async getBandwidthPrice(chainType: string, address: string): Promise<any> {\n    return await this._request('getBandwidthPrice', { chainType, address });\n  }\n\n  /**\n   * Returns ram price(in KB/EOS).\n   * @since 1.1.0\n   * @group EOS\n   * @deprecated The EOS blockchain has been delisted.\n   * @param {string} chainType - The chain being queried. Currently supports <code>'EOS'</code>.\n   * @returns {Promise<string>} - The ram price.\n   * @example\n   * const ret = await sdk.getRamPrice(\"EOS\");\n   * console.log(ret);\n   * // \"0.05022503944229491\"\n   */\n  public async getRamPrice(chainType: string): Promise<string> {\n    return await this._request('getRamPrice', { chainType });\n  }\n\n  /**\n   * Returns an object with one member labeled as 'EOS' you requested, the object has three members: supply (Symbol), max_supply (Symbol) and issuer (Name).\n   * @since 1.1.0\n   * @group EOS\n   * @deprecated The EOS blockchain has been delisted.\n   * @param {string} chainType - The chain being queried. Currently supports <code>'EOS'</code>.\n   * @returns {Promise<any>} - The ram price.\n   * @example\n   * const ret = await sdk.getTotalSupply(\"EOS\");\n   * console.log(ret);\n   * // { \"supply\": \"10757681325.5591 EOS\", \"max_supply\": \"100000000000.0000 EOS\", \"issuer\": \"eosio\" }\n   */\n  public async getTotalSupply(chainType: string): Promise<any> {\n    return await this._request('getTotalSupply', { chainType });\n  }\n\n  /**\n   * Returns current 'EOS' stake amount.\n   * @since 1.1.0\n   * @group EOS\n   * @deprecated The EOS blockchain has been delisted.\n   * @param {string} chainType - The chain being queried. Currently supports <code>'EOS'</code>.\n   * @returns {Promise<string>} - The current 'EOS' stake amount.\n   * @example\n   * const ret = await sdk.getTotalStaked(\"EOS\");\n   * console.log(ret);\n   * // \"2868049208.8674 EOS\"\n   */\n  public async getTotalStaked(chainType: string): Promise<string> {\n    return await this._request('getTotalStaked', { chainType });\n  }\n\n  /**\n   * Returns an object with current 'EOS' stake info, the object has three members: totalStaked, totalSup and staked percent.\n   * @since 1.1.0\n   * @group EOS\n   * @deprecated The EOS blockchain has been delisted.\n   * @param {string} chainType - The chain being queried. Currently supports <code>'EOS'</code>.\n   * @returns {Promise<any>} - The stake info.\n   * @example\n   * const ret = await sdk.getTotalStakedPercent(\"EOS\");\n   * console.log(ret);\n   * // { \"totalStaked\": 2868049208.8674, \"totalSup\": 10757681325.5591, \"percent\": 0.266604774957706 }\n   */\n  public async getTotalStakedPercent(chainType: string): Promise<any> {\n    return await this._request('getTotalStakedPercent', { chainType });\n  }\n\n  /**\n   * Returns an object containing rows from the specified table.\n   * @since 1.1.0\n   * @group EOS\n   * @deprecated The EOS blockchain has been delisted.\n   * @param {string} chainType - The chain being queried. Currently supports <code>'EOS'</code>.\n   * @param {string} scAddr - The name of the smart contract that controls the provided table.\n   * @param {string} scope - The account to which this data belongs.\n   * @param {string} table - The name of the table to query.\n   * @returns {Promise<any>} - The object containing rows from the specified table.\n   * @example\n   * const ret = await sdk.getTableRows(\"EOS\", \"wanchainhtlc\", \"wanchainhtlc\", \"transfers\");\n   * console.log(ret);\n   * // {\n   * //   \"rows\": [\n   * //     {\n   * //       \"id\": 0,\n   * //       \"pid\": 0,\n   * //       \"quantity\": \"5.0000 EOS\",\n   * //       \"user\": \"cuiqiangtest\",\n   * //       \"lockedTime\": 7200,\n   * //       \"beginTime\": \"2019-12-26T13:59:24\",\n   * //       \"status\": \"inlock\",\n   * //       \"xHash\": \"e4b7be8900393ef6b09a172a21be3b4f1b814ff580dbaeba130484fa99b2da7c\",\n   * //       \"wanAddr\": \"25f2845ad9da78ebaa0e077404d35933f75422b8\",\n   * //       \"account\": \"eosio.token\"\n   * //     },\n   * //     {\n   * //       \"id\": 1,\n   * //       \"pid\": 0,\n   * //       \"quantity\": \"5.0000 EOS\",\n   * //       \"user\": \"cuiqiangtest\",\n   * //       \"lockedTime\": 7200,\n   * //       \"beginTime\": \"2019-12-30T12:23:25\",\n   * //       \"status\": \"inlock\",\n   * //       \"xHash\": \"2be3dee75ddc370d301e55fb74644bab9b1bac9883cb92c4c57a35f4543ce8f6\",\n   * //       \"wanAddr\": \"25f2845ad9da78ebaa0e077404d35933f75422b8\",\n   * //       \"account\": \"eosio.token\"\n   * //     }\n   * //   ],\n   * //   \"more\": true,\n   * //   \"next_key\": \"3\"\n   * // }\n   */\n  public async getTableRows(chainType: string, scAddr: string, scope: string, table: string): Promise<any> {\n    return await this._request('getTableRows', { chainType, scAddr, scope, table });\n  }\n\n  /**\n   * Get the current Epoch ID.\n   * @since 1.1.0\n   * @group POS\n   * @param {string} chainType - The chain being queried. Currently supports <code>'WAN'</code>, default: <code>'WAN'</code>.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<number>} - The current epoch ID.\n   * @example\n   * const ret = await sdk.getEpochID(\"WAN\");\n   * console.log(ret);\n   * // 18102\n   */\n  public async getEpochID(chainType: string, option?: any): Promise<number> {\n    return await this._request('getEpochID', { chainType, ...(option || {}) });\n  }\n\n  /**\n   * Get the current epoch slot ID.\n   * @since 1.1.0\n   * @group POS\n   * @param {string} chainType - The chain being queried. Currently supports <code>'WAN'</code>, default: <code>'WAN'</code>.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<number>} - The current epoch slot ID.\n   * @example\n   * const ret = await sdk.getSlotID(\"WAN\");\n   * console.log(ret);\n   * // 2541\n   */\n  public async getSlotID(chainType: string, option?: any): Promise<number> {\n    return await this._request('getSlotID', { chainType, ...(option || {}) });\n  }\n\n  /**\n   * Get the public key list of the epoch leaders of the specified EpochID with the input parameter as EpochID.\n   * @since 1.1.0\n   * @group POS\n   * @param {string} chainType - The chain being queried. Currently supports <code>'WAN'</code>, default: <code>'WAN'</code>.\n   * @param {number} epochID - The epochID you want to search.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<any>} - The public key list.\n   * @example\n   * const ret = await sdk.getEpochLeadersByEpochID(\"WAN\", 18102);\n   * console.log(ret);\n   * // {\n   * //   \"000000\": \"046c0979fbcd38b7887076db6b08adbbaae45189ac4239d2c06749b634dbeaafdf2b229b6c4eda1ab6ede7e46cbd9ab3ac35df1ac2a6f650bac39fd8474d85524e\",\n   * //   \"000001\": \"04dac7b023f0e9fb5be91b48e5d546b2f2eb91029705f6055c24b3c804a49cf83f7cd584a96346ca42a94a02456444b7df4e280d2726971bf267f8182341ff81b9\",\n   * //   \"000002\": \"042b7d4be32d25769472ea7c8d432bbad5abee051c048e4de425e6feb288fde6f33a16269e4e85fbda4f857a7d5eca8d33793b9249c83517a3214b64475cd50176\",\n   * //   ... ...\n   * //   \"000047\": \"046351650f15b8de869d89c572dc093000794e75e7f4a7c9f10e9b35f24694fa7555c143e4c4dd4548c0d06be2b2e6c536b37acf0c0ad4806e6c48f23ade4e4d9a\",\n   * //   \"000048\": \"04fdb485b566c2ddb40e2f4341b1e5746479a7c45e3d8101b1360b8bdba6206deee520ceecc9e9897e3b05b53e3ffa6fa659bef47c384984c0bc021a843df10847\",\n   * //   \"000049\": \"04fdb485b566c2ddb40e2f4341b1e5746479a7c45e3d8101b1360b8bdba6206deee520ceecc9e9897e3b05b53e3ffa6fa659bef47c384984c0bc021a843df10847\"\n   * // }\n   */\n  public async getEpochLeadersByEpochID(chainType: string, epochID: number, option?: any): Promise<any> {\n    return await this._request('getEpochLeadersByEpochID', { chainType, epochID, ...(option || {}) });\n  }\n\n  /**\n   * Gets Random Number Proposer public keys of the specified epoch.\n   * @since 1.1.0\n   * @group POS\n   * @param {string} chainType - The chain being queried. Currently supports <code>'WAN'</code>, default: <code>'WAN'</code>.\n   * @param {number} epochID - The epochID you want to search.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<any>} - The Random Number Proposer public keys.\n   * @example\n   * const ret = await sdk.getRandomProposersByEpochID(\"WAN\", 18102);\n   * console.log(ret);\n   * // {\n   *   \"000000\": \"29e0660fe921282b2d64c6adaf0b24945eee6d9fcdb419c39f84a551ed44151d27f786e5df7abcff94bbed2cbc2791bc76db21b5be469874be181e4fa234fb3e\",\n   *   \"000001\": \"26a70d685549ffe982df0d66a88f36ac3fca6e488bf69eb6de62a37b97f3f56e2b6b56f47e817c01225ad5549f1ca9751dc1f65559f1a81639c6a4126c9df3ce\",\n   *   \"000002\": \"21f4f0c4da56206685e94354acba851aab7dc7c090898f6bbb1fc42df986764b055f09e97ceb4c90976a1219ab749dd0b008d47f9c18b962a6056e66de8d858f\",\n   *   ... ...\n   *   \"000022\": \"1c96a7abf1424d0c5316fc74eb39022648062fc88997896bdeae70c4e008b3700136608e2ab653c037d144979403061d3247d6298bfdf0b26c9829db3175531e\",\n   *   \"000023\": \"00e0c4fae08f124f7a8fe82988a385d9723bea14c8a6e2996a684846ae8d0d4e27abedb7d2f7150bd42ba830e960774b873de74b1d91d7c5ea1ba349a849e575\",\n   *   \"000024\": \"2094589617397846c5125cf5922ba993643c401998ae8817d5005fe21245f4bc0fbb25158c54446757d2b03d89da10d7dfbbaa23afa38c6e87115dcebe2a8e4d\"\n   * }\n   */\n  public async getRandomProposersByEpochID(chainType: string, epochID: number, option?: any): Promise<any> {\n    return await this._request('getRandomProposersByEpochID', { chainType, epochID, ...(option || {}) });\n  }\n\n  /**\n   * Returns an array of validator information for all validators in the specified block number.\n   * @since 1.1.0\n   * @group POS\n   * @param {string} chainType - The chain being queried. Currently supports <code>'WAN'</code>, default: <code>'WAN'</code>.\n   * @param {number} blockNumber - The blockNumber you want to search.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<Array<any>>} - The specified block staker info.\n   * @example\n   * const ret = await sdk.getEpochID(\"WAN\");\n   * console.log(ret);\n   * // [\n   * //   {\n   * //     \"address\": \"0xa4626e2bb450204c4b34bcc7525e585e8f678c0d\",\n   * //     \"pubSec256\": \"0x04b7bf8d3868333f70a30041423c7db204b80b9be2e585c344cf3f391cbf77b17fd14f3058d4475d546355bf8c2709ed9ecf5f0cee9d021c90988af0e8cf52001b\",\n   * //     \"pubBn256\": \"0x289787688eb80c1e223375a71f8d17110d638a9143afa190dc11b3c1e64cf92b21feb02ab7a1dcb31892210dfda458aff890fe9e7508292099ae6256f197b325\",\n   * //     \"amount\": \"0xa968163f0a57b400000\",\n   * //     \"votingPower\": \"0x297116712be7b468800000\",\n   * //     \"lockEpochs\": 7,\n   * //     \"maxFeeRate\": 1500,\n   * //     \"nextLockEpochs\": 7,\n   * //     \"from\": \"0xdbb2d6199457d11288f0097659bcec24738e158f\",\n   * //     \"stakingEpoch\": 0,\n   * //     \"feeRate\": 1500,\n   * //     \"feeRateChangedEpoch\": 0,\n   * //     \"clients\": [\n   * //       {\n   * //         \"address\": \"0xfcc3736dc29bf9af7556fcc1dea10b53edaab51d\",\n   * //         \"amount\": \"0x56bc75e2d63100000\",\n   * //         \"votingPower\": \"0x1537da569da5bca00000\",\n   * //         \"quitEpoch\": 18071\n   * //       }\n   * //     ],\n   * //     \"partners\": []\n   * //   },\n   * //    ... ...\n   * // ]\n   */\n  public async getStakerInfo(chainType: string, blockNumber: number, option?: any): Promise<Array<any>> {\n    return await this._request('getStakerInfo', { chainType, blockNumber, ...(option || {}) });\n  }\n\n  /**\n   * Get the reward information of the specified epoch, enter epochID, and reward payment details (including RNP reward, EL reward and chunk reward) will be returned for all the verification nodes and clients working in the epoch.\n   * @since 1.1.0\n   * @group POS\n   * @param {string} chainType - The chain being queried. Currently supports <code>'WAN'</code>, default: <code>'WAN'</code>.\n   * @param {number} epochID - The epochID you want to search.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<Array<any>>} - The reward information.\n   * @example\n   * const ret = await sdk.getEpochIncentivePayDetail(\"WAN\", 18101);\n   * console.log(ret);\n   * // [\n   * //   {\n   * //     \"delegators\": [\n   * //       {\n   * //         \"address\": \"0x81ad5c65a815f8dc28e0fd1d17ac4fa38f8a6838\",\n   * //         \"incentive\": \"0x78b093af02e111\",\n   * //         \"type\": \"delegator\"\n   * //       },\n   * //       {\n   * //         \"address\": \"0x4e6b5f1abdd517739889334df047113bd736c546\",\n   * //         \"incentive\": \"0x13afa1b719d597636\",\n   * //         \"type\": \"delegator\"\n   * //       },\n   * //        ... ...\n   * //        {\n   * //         \"address\": \"0x8bf12b4cd3b41d40b2adfdf2857b2077d4194a44\",\n   * //         \"incentive\": \"0x1922a4583a858b0\",\n   * //         \"type\": \"delegator\"\n   * //       },\n   * //       {\n   * //         \"address\": \"0x51253d40bb113827781de47e5a2d41f41924431d\",\n   * //         \"incentive\": \"0x28376d59f73c11\",\n   * //         \"type\": \"delegator\"\n   * //       }\n   * //     ],\n   * //     \"address\": \"0xa4626e2bb450204c4b34bcc7525e585e8f678c0d\",\n   * //     \"stakeInFromAddr\": \"0xdbb2d6199457d11288f0097659bcec24738e158f\",\n   * //     \"incentive\": \"0xaf6f730467435b9f\",\n   * //     \"type\": \"validator\"\n   * //   },\n   * //      ... ...\n   * // ]\n   */\n  public async getEpochIncentivePayDetail(chainType: string, epochID: number, option?: any): Promise<Array<any>> {\n    return await this._request('getEpochIncentivePayDetail', { chainType, epochID, ...(option || {}) });\n  }\n\n  /**\n   * Get the activity information of the specified epoch. For historical epochs the values are fixed, while the current epoch will update the latest current values in real time.\n   * @since 1.1.0\n   * @group POS\n   * @param {string} chainType - The chain being queried. Currently supports <code>'WAN'</code>, default: <code>'WAN'</code>.\n   * @param {number} epochID - The epochID you want to search.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<any>} - The activity information.\n   * @example\n   * const ret = await sdk.getActivity(\"WAN\", 18102);\n   * console.log(ret);\n   * // {\n   * //   \"epLeader\":\n   * //   [\n   * //     \"0x28c12c7b51860b9d5aec3a0ceb63c6e187c00aac\",\n   * //     \"0x1a95e85e8ffcfd28eb61ee53a542dc98c57b337a\",\n   * //     \"0x46530055144fe9365eaae87ba623e2f91cd7eff2\",\n   * //     \"0x0e92d125ba28852a11428fcb63b6f0e44a52962f\",\n   * //     \"0xee1ad9c4f9d81f900221e95ee04246b6254b0c6f\",\n   * //     \"0xb58230a7923a6a1941016aa1682e212def899ed1\",\n   * //     \"0xb9d6c1a6e52119026cb5d2a82457f5fd6bc7e0c9\",\n   * //     \"0xdfd7aa554653ca236c197ad746edc2954ca172df\",\n   * //     \"0x1b7740df685f9d34773d5a2aba6ab3a2c1407f40\",\n   * //     \"0xdfd7aa554653ca236c197ad746edc2954ca172df\",\n   * //     \"0x266ddcfdbe3ded75e0e511e6356bca052b221c6b\",\n   * //     \"0x1ae5a38b4a5ca0aefbb1c17fd27073ab00fd2a3f\",\n   * //     \"0x2866bca06ff1d6afe52298f9fc759ea9b80f6902\",\n   * //     \"0xf0e02c3640020f083a314547ae99483aa2c7cd01\",\n   * //     \"0x2a6e8c39d4e9f9152958649fc5dbdb9c68cfcb0b\",\n   * //     \"0x0081a626fecff225cd87d3f23c0dd47a9fe243ac\",\n   * //     \"0x1a95e85e8ffcfd28eb61ee53a542dc98c57b337a\",\n   * //     \"0x1a95e85e8ffcfd28eb61ee53a542dc98c57b337a\",\n   * //     \"0x1a95e85e8ffcfd28eb61ee53a542dc98c57b337a\",\n   * //     \"0xdfd7aa554653ca236c197ad746edc2954ca172df\",\n   * //     \"0x2a6e8c39d4e9f9152958649fc5dbdb9c68cfcb0b\",\n   * //     \"0xa3fb8f5e1fadfe104e4b1da91e8d96aab52faaf3\",\n   * //     \"0x4bf9fd7308d0849a62c3a7dd71c5190e57c28756\",\n   * //     \"0x85dae7e5c7b433a1682c54eee63adf63d835d272\"\n   * //   ],\n   * //   \"epActivity\":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],\n   * //   \"rpLeader\":\n   * //   [\n   * //     \"0x89a7588529eb7aaea0a229f2dfbb277b15649969\",\n   * //     \"0x3dabf8331afbc553a1e458e37a6c9c819c452d55\",\n   * //     \"0x010ee9abdf364972ac8d279ab96fd1d167a4d830\",\n   * //     \"0x7815f56468915a08edb505fffa9d376ad21a9617\",\n   * //     \"0x2c72d7a8c02752fcfafbaea5a63c53056cfaf547\",\n   * //     \"0x9ce4664e9d7346869797b7d9fc8c7a0212d5ff44\",\n   * //     \"0xbdada4f58d17ce602cb0d2db2a55c3e4f47e397f\",\n   * //     \"0xa923ac48439add7124763b3682f4505044c81ae3\",\n   * //     \"0xf1d6ffc8a2276b7e0784973a1a07a26e75200edd\",\n   * //     \"0x5e165460b15f02d84a67f81b29517671989d2492\",\n   * //     \"0x8289e2141c10832e7c9b108317eae0dec2011c67\",\n   * //     \"0xb019a99f0653973ddb2d983a26e0970587d08447\",\n   * //     \"0x8289e2141c10832e7c9b108317eae0dec2011c67\",\n   * //     \"0xa4ebf5bbb131179b69bbf33319257728cdada5cf\",\n   * //     \"0x3dabf8331afbc553a1e458e37a6c9c819c452d55\",\n   * //     \"0x5e165460b15f02d84a67f81b29517671989d2492\",\n   * //     \"0xa4539e1bdffceb3557ffb81f87a92e2159f6d637\",\n   * //     \"0x7815f56468915a08edb505fffa9d376ad21a9617\",\n   * //     \"0xa4626e2bb450204c4b34bcc7525e585e8f678c0d\",\n   * //     \"0xf90cc528e5f4811c8c1f1a69b990b9a58039f7cf\",\n   * //     \"0x1a95e85e8ffcfd28eb61ee53a542dc98c57b337a\",\n   * //     \"0x46530055144fe9365eaae87ba623e2f91cd7eff2\",\n   * //     \"0x93c8ea0326ef334bdc3011e74cd1a6d78ce0594d\",\n   * //     \"0x57dca45124e253bfa93d7571b43555a861c7455f\",\n   * //     \"0x2c72d7a8c02752fcfafbaea5a63c53056cfaf547\"\n   * //   ],\n   * //   \"rpActivity\":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],\n   * //   \"sltLeader\":[],\n   * //   \"slBlocks\":[],\n   * //   \"slActivity\":0,\n   * //   \"slCtrlCount\":0\n   * //   }\n   */\n  public async getActivity(chainType: string, epochID: number, option?: any): Promise<any> {\n    return await this._request('getActivity', { chainType, epochID, ...(option || {}) });\n  }\n\n  /**\n   * Get the slot leader activity information of the specified epoch.\n   * @since 1.1.0\n   * @group POS\n   * @param {string} chainType - The chain being queried. Currently supports <code>'WAN'</code>, default: <code>'WAN'</code>.\n   * @param {number} epochID - The epochID you want to search.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<any>} - The slot leader activity information.\n   * @example\n   * const ret = await sdk.getEpochID(\"WAN\");\n   * console.log(ret);\n   * // {\n   * //   \"sltLeader\":\n   * //   [\n   * //     \"0xdf24acd01f69d93ad440c8e9ccf5ac6a32d672d4\",\n   * //     \"0x3628bf135f36c6e26a824ec9152885505f3fbc2a\",\n   * //     \"0xeb55839c891286d4d5bb11737fca1136797eaf83\",\n   * //     \"0x2c72d7a8c02752fcfafbaea5a63c53056cfaf547\",\n   * //     \"0xee1ad9c4f9d81f900221e95ee04246b6254b0c6f\",\n   * //     \"0xcd54e0c35b122860d8fe2eb41f2e8e3e79c085ba\",\n   * //     \"0x46530055144fe9365eaae87ba623e2f91cd7eff2\",\n   * //     \"0x375369561dd38fd1a8c93cade745443558fff0bb\",\n   * //     \"0xda8fa1aee77709d37f59fb96afd4cf10ccaeb6ce\",\n   * //     \"0x57dca45124e253bfa93d7571b43555a861c7455f\",\n   * //     \"0x2866bca06ff1d6afe52298f9fc759ea9b80f6902\",\n   * //     \"0xbee03f252dfd38f4f8d10d0664fb50c36526a611\",\n   * //     \"0x0081a626fecff225cd87d3f23c0dd47a9fe243ac\",\n   * //     \"0x1a95e85e8ffcfd28eb61ee53a542dc98c57b337a\",\n   * //     \"0x6273ce1f6f32e129f295f138d6e4ba6f0e19333e\"\n   * //   ],\n   * //   \"slBlocks\": [336, 1085, 359, 671, 693, 366, 349, 53, 74, 70, 364, 347, 339, 337, 339],\n   * //   \"slActivity\": 0.8467013888888889,\n   * //   \"slCtrlCount\": 8849\n   * //   }\n   */\n  public async getSlotActivity(chainType: string, epochID: number, option?: any): Promise<any> {\n    return await this._request('getSlotActivity', { chainType, epochID, ...(option || {}) });\n  }\n\n  /**\n   * Get the validator activity information of the Epoch Leaders and Random Number Proposers of the specified epoch. Returns null for the current Epoch or future Epochs.\n   * @since 1.1.0\n   * @group POS\n   * @param {string} chainType - The chain being queried. Currently supports <code>'WAN'</code>, default: <code>'WAN'</code>.\n   * @param {number} epochID - The epochID you want to search.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<any>} - The validator activity information.\n   * @example\n   * const ret = await sdk.getValidatorActivity(\"WAN\", 18102);\n   * console.log(ret);\n   * // {\n   * //   \"epLeader\":\n   * //   [\n   * //     \"0x880d861a8bb6909885bbc65f9fc255bbd11a5825\",\n   * //     \"0xc7afae3c9e99af27fe3eaa10f6ec73cd2dbe003b\",\n   * //     \"0x882c9c16c05496d7b5374840936aec1af2a16553\",\n   * //     \"0x54945447375e25d03033099c540f0998dfa4152d\",\n   * //     \"0x71d063d48ac747dd9ef455cc5a58272c04660983\",\n   * //     \"0xd5551afd5c976a8eaac478f438f51aea4547eda9\",\n   * //     \"0xdfd7aa554653ca236c197ad746edc2954ca172df\",\n   * //     \"0x2c72d7a8c02752fcfafbaea5a63c53056cfaf547\",\n   * //     \"0x73494477f3a099415348cd33e3d46a07f4052600\",\n   * //     \"0x847437144ab96c6c499cdee9edc4d64032d06c86\",\n   * //     \"0x0b80f69fcb2564479058e4d28592e095828d24aa\",\n   * //     \"0x54945447375e25d03033099c540f0998dfa4152d\",\n   * //     \"0x742d898d2ee28a338f03af79c47762a908281a6a\",\n   * //     \"0x93c8ea0326ef334bdc3011e74cd1a6d78ce0594d\",\n   * //     \"0x5c1f00ff943de649519ff1ff35ac5b4c62b90964\",\n   * //     \"0x2a6e8c39d4e9f9152958649fc5dbdb9c68cfcb0b\",\n   * //     \"0xc46b1935326ba2423a9f4bbabf97f74d47f37d59\",\n   * //     \"0xbeb30b68160d845593f01aeb6ad9b6e3cc2e3277\",\n   * //     \"0x3daddc5a590808694eb1b732636a70194ad3d98e\",\n   * //     \"0x266ddcfdbe3ded75e0e511e6356bca052b221c6b\",\n   * //     \"0xb9d6c1a6e52119026cb5d2a82457f5fd6bc7e0c9\",\n   * //     \"0xb44a825eb3f0539f6593ea05740c9f2686973f3c\",\n   * //     \"0xa4539e1bdffceb3557ffb81f87a92e2159f6d637\",\n   * //     \"0xb64b60ba915bc16dc71ea59c9950c1538dcead9c\"\n   * //   ],\n   * //   \"epActivity\":[0,1,0,1,0,1,1,1,1,0,1,1,1,1,1,0,1,0,1,0,1,1,0,0],\n   * //   \"rpLeader\":\n   * //   [\n   * //     \"0xee1ad9c4f9d81f900221e95ee04246b6254b0c6f\",\n   * //     \"0xaadb06ebb95f165155f12a38bdcb092ac66e0344\",\n   * //     \"0xdfd7aa554653ca236c197ad746edc2954ca172df\",\n   * //     \"0x4bf9fd7308d0849a62c3a7dd71c5190e57c28756\",\n   * //     \"0xb44a825eb3f0539f6593ea05740c9f2686973f3c\",\n   * //     \"0x3628bf135f36c6e26a824ec9152885505f3fbc2a\",\n   * //     \"0x2866bca06ff1d6afe52298f9fc759ea9b80f6902\",\n   * //     \"0x0b80f69fcb2564479058e4d28592e095828d24aa\",\n   * //     \"0x46530055144fe9365eaae87ba623e2f91cd7eff2\",\n   * //     \"0x36fad9acaf51a13527375b1ffc3d5a749153efdb\",\n   * //     \"0xf8fff523fb1450942dd2cd2b29837eaec2c4c860\",\n   * //     \"0x71d063d48ac747dd9ef455cc5a58272c04660983\",\n   * //     \"0x1b7740df685f9d34773d5a2aba6ab3a2c1407f40\",\n   * //     \"0xb58230a7923a6a1941016aa1682e212def899ed1\",\n   * //     \"0x54945447375e25d03033099c540f0998dfa4152d\",\n   * //     \"0x742d898d2ee28a338f03af79c47762a908281a6a\",\n   * //     \"0x85bbe8f965b1719f7089ee9912e7c9b10fe0a999\",\n   * //     \"0xbee03f252dfd38f4f8d10d0664fb50c36526a611\",\n   * //     \"0x2f13896d55ea42b58578cd835064233f8e80a929\",\n   * //     \"0xf543da34477455ccd0ce9b153baaf344cefd9413\",\n   * //     \"0xef09644a88ace467475c2f333f7bb8ffc9427452\",\n   * //     \"0x0adc1b8d04d3856b394c8a170fbaea68589c4de6\",\n   * //     \"0xaadb06ebb95f165155f12a38bdcb092ac66e0344\",\n   * //     \"0x38550ef70511ff71924c4b58220b54e65720384f\",\n   * //     \"0xda8fa1aee77709d37f59fb96afd4cf10ccaeb6ce\"\n   * //   ],\n   * //   \"rpActivity\":[1,1,1,1,0,1,1,1,1,0,1,0,0,1,0,0,1,1,0,0,0,0,1,1,1]\n   * // }\n   */\n  public async getValidatorActivity(chainType: string, epochID: number, option?: any): Promise<any> {\n    return await this._request('getValidatorActivity', { chainType, epochID, ...(option || {}) });\n  }\n\n  /**\n   * Get the current highest stable block number (no rollback).\n   * @since 1.1.0\n   * @group POS\n   * @param {string} chainType - The chain being queried. Currently supports <code>'WAN'</code>, default: <code>'WAN'</code>.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<number>} - The current highest stable block number.\n   * @example\n   * const ret = await sdk.getValidatorActivity(\"WAN\", 18102);\n   * console.log(ret);\n   * // 4018017\n   */\n  public async getMaxStableBlkNumber(chainType: string, option?: any): Promise<number> {\n    return await this._request('getMaxStableBlkNumber', { chainType, ...(option || {}) });\n  }\n\n  /**\n   * Get the random number of the queried epochID and block number.\n   * @since 1.1.0\n   * @group POS\n   * @param {string} chainType - The chain being queried. Currently supports <code>'WAN'</code>, default: <code>'WAN'</code>.\n   * @param {number} epochID - The epochID you want to search.\n   * @param {number} blockNumber - The blockNumber you want to search. If blockNumber is -1, use the latest block.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<string>} - The current highest stable block number.\n   * @example\n   * const ret = await sdk.getRandom(\"WAN\", 18102, -1);\n   * console.log(ret);\n   * // \"0x3a4277627fa45c3bf691014d79c05da2427f8eb115a076b71af7690cdb3a0b5e\"\n   */\n  public async getRandom(chainType: string, epochID: number, blockNumber: number, option?: any): Promise<string> {\n    return await this._request('getRandom', { chainType, epochID, blockNumber, ...(option || {}) });\n  }\n\n  /**\n   * Get the specified validator info by the validator address.\n   * @since 1.1.0\n   * @group POS\n   * @param {string} chainType - The chain being queried. Currently supports <code>'WAN'</code>, default: <code>'WAN'</code>.\n   * @param {string} address - The validator address you want to search.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<any>} - The specified validator info.\n   * @example\n   * const ret = await sdk.getValidatorInfo(\"WAN\", \"0xda8fa1aee77709d37f59fb96afd4cf10ccaeb6ce\");\n   * console.log(ret);\n   * // { \"address\": \"0xda8fa1aee77709d37f59fb96afd4cf10ccaeb6ce\", \"amount\": \"5.01e+22\", \"feeRate\": 1500 }\n   */\n  public async getValidatorInfo(chainType: string, address: string, option?: any): Promise<any> {\n    return await this._request('getValidatorInfo', { chainType, address, ...(option || {}) });\n  }\n\n  /**\n   * Get the specified validator staking info by the validator owner's address.\n   * @since 1.1.0\n   * @group POS\n   * @param {string} chainType - The chain being queried. Currently supports <code>'WAN'</code>, default: <code>'WAN'</code>.\n   * @param {string} address - The validator owner address you want to search.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<Array<any>>} - The specified validator staking info.\n   * @example\n   * const ret = await sdk.getValidatorStakeInfo(\"WAN\", \"0x086b4cfadfd9f232b068c2e8263d608baee85163\");\n   * console.log(ret);\n   * // [\n   * //   {\n   * //     \"partners\": [],\n   * //     \"address\": \"0xda8fa1aee77709d37f59fb96afd4cf10ccaeb6ce\",\n   * //     \"pubSec256\": \"0x04c5b937557d0f5f4d75831d746fc0197cba50c5a98cb901e941956240d45ea374c6ba5919bc3e57de69f9813f99f6658dc86433b6d1156298cbf2b7087429dcc1\",\n   * //     \"pubBn256\": \"0x0effcb9cb449235ff25108e0d8968b24a52402f4c6a8c67e4c0c71ac2558369d1ccd2e2f5b90613ef05d0594b675a5b7326dce01304f3c0c0b35f5bdc4a7f930\",\n   * //     \"amount\": \"0xa9bed2b4ed2de500000\",\n   * //     \"votingPower\": \"0x2a4544f88e102dc6c00000\",\n   * //     \"lockEpochs\": 10,\n   * //     \"nextLockEpochs\": 10,\n   * //     \"from\": \"0x086b4cfadfd9f232b068c2e8263d608baee85163\",\n   * //     \"stakingEpoch\": 18098,\n   * //     \"feeRate\": 1500,\n   * //     \"clients\":\n   * //     [\n   * //     {\n   * //       \"address\": \"0xf99a8bc18061812e09652f5855908e35d034154b\",\n   * //       \"amount\": \"0x3635c9adc5dea00000\",\n   * //       \"votingPower\": \"0xd42e876228795e400000\",\n   * //       \"quitEpoch\": 0\n   * //     },\n   * //     {\n   * //       \"address\": \"0xa078ecadd6011a0d8df127cb0be12b03f2db0599\",\n   * //       \"amount\": \"0x3635c9adc5dea00000\",\n   * //       \"votingPower\": \"0xd42e876228795e400000\",\n   * //       \"quitEpoch\": 0\n   * //     },\n   * //     {\n   * //       \"address\": \"0xa373c8e5cbbe161cebbaa5d44f991cd265dcf87d\",\n   * //       \"amount\": \"0x431cb388cb7d980000\",\n   * //       \"votingPower\": \"0x106ae56b56c7994f00000\",\n   * //       \"quitEpoch\": 0\n   * //     },\n   * //     {\n   * //       \"address\": \"0xe57fcb59c510354b414b2c982ae1ddc4b0f3d329\",\n   * //       \"amount\": \"0x3635c9adc5dea00000\",\n   * //       \"votingPower\": \"0xd42e876228795e400000\",\n   * //       \"quitEpoch\": 0\n   * //     },\n   * //     ... ...\n   * //     ],\n   * //     \"maxFeeRate\": 1500,\n   * //     \"feeRateChangedEpoch\": 18098\n   * //   }\n   * // ]\n   */\n  public async getValidatorStakeInfo(chainType: string, address: string, option?: any): Promise<Array<any>> {\n    return await this._request('getValidatorStakeInfo', { chainType, address, ...(option || {}) });\n  }\n\n  /**\n   * Get the specified validator's total incentives.\n   * @since 1.1.0\n   * @group POS\n   * @param {string} chainType - The chain being queried. Currently supports <code>'WAN'</code>, default: <code>'WAN'</code>.\n   * @param {string|Array<string>} address - The validator address you want to search.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<Array<any>>} - The specified validator's total incentives.\n   * @example\n   * const ret = await sdk.getValidatorTotalIncentive(\"WAN\", \"0xda8fa1aee77709d37f59fb96afd4cf10ccaeb6ce\");\n   * console.log(ret);\n   * // [\n   * //   {\n   * //     \"address\": \"0xda8fa1aee77709d37f59fb96afd4cf10ccaeb6ce\",\n   * //     \"amount\": \"1.828058184231574257465e+21\",\n   * //     \"minEpochId\": 18080,\n   * //     \"epochCount\": 21\n   * //   }\n   * // ]\n   */\n  public async getValidatorTotalIncentive(chainType: string, address: string, option?: any): Promise<Array<any>> {\n    return await this._request('getValidatorTotalIncentive', { chainType, address, ...(option || {}) });\n  }\n\n  /**\n   * Get the identified delegator's staking info.\n   * @since 1.1.0\n   * @group POS\n   * @param {string} chainType - The chain being queried. Currently supports <code>'WAN'</code>, default: <code>'WAN'</code>.\n   * @param {string} address - The delegator address you want to query.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<Array<any>>} - The identified delegator's staking info.\n   * @example\n   * const ret = await sdk.getDelegatorStakeInfo(\"WAN\", \"0xa6de4408d9003ee992b5dc0e1bf27968e48727dc\");\n   * console.log(ret);\n   * // [\n   * //   {\n   * //     \"address\": \"0x6fcfcd4719f110e77bef0633d31cc046616b4b34\",\n   * //     \"amount\": \"0xa968163f0a57b400000\",\n   * //     \"quitEpoch\": 0\n   * //   },\n   * //   {\n   * //     \"address\": \"0xdfd7aa554653ca236c197ad746edc2954ca172df\",\n   * //     \"amount\": \"0x3f870857a3e0e3800000\",\n   * //     \"quitEpoch\": 0\n   * //   },\n   * //   {\n   * //     \"address\": \"0x4bf9fd7308d0849a62c3a7dd71c5190e57c28756\",\n   * //     \"amount\": \"0xa968163f0a57b400000\",\n   * //     \"quitEpoch\": 0\n   * //   },\n   * //   {\n   * //     \"address\": \"0x93c8ea0326ef334bdc3011e74cd1a6d78ce0594d\",\n   * //     \"amount\": \"0xa968163f0a57b400000\",\n   * //     \"quitEpoch\": 0\n   * //   }\n   * // ]\n   */\n  public async getDelegatorStakeInfo(chainType: string, address: string, option?: any): Promise<Array<any>> {\n    return await this._request('getDelegatorStakeInfo', { chainType, address, ...(option || {}) });\n  }\n\n  /**\n   * Get the identified delegator rewards over a specified range of epochs.\n   * @since 1.1.0\n   * @group POS\n   * @param {string} chainType - The chain being queried. Currently supports <code>'WAN'</code>, default: <code>'WAN'</code>.\n   * @param {string} address - The delegator address you want to query.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<Array<any>>} - The identified delegator rewards.\n   * @example\n   * const ret = await sdk.getDelegatorIncentive(\"WAN\", \"0xa6de4408d9003ee992b5dc0e1bf27968e48727dc\");\n   * console.log(ret);\n   * // [\n   * //   {\n   * //     \"address\": \"0x6fcfcd4719f110e77bef0633d31cc046616b4b34\",\n   * //     \"amount\": \"0x3217e1b255185bf07\",\n   * //     \"epochId\": 18088\n   * //   },\n   * //   {\n   * //     \"address\": \"0x6fcfcd4719f110e77bef0633d31cc046616b4b34\",\n   * //     \"amount\": \"0x19029a8c0503573f2\",\n   * //     \"epochId\": 18090\n   * //   },\n   * //   ... ...\n   * // ]\n   */\n  public async getDelegatorIncentive(chainType: string, address: string, option?: any): Promise<Array<any>> {\n    return await this._request('getDelegatorIncentive', { chainType, address, ...(option || {}) });\n  }\n\n  /**\n   * Get the identified delegator's total incentives.\n   * @since 1.1.0\n   * @group POS\n   * @param {string} chainType - The chain being queried. Currently supports <code>'WAN'</code>, default: <code>'WAN'</code>.\n   * @param {string} address - The delegator address you want to query.\n   * @param {any} [option] - Optional.\n   * <br>&nbsp;&nbsp;<code>validatorAddress</code> - The validator's address you want to query.\n   * <br>&nbsp;&nbsp;<code>from</code> - The number that starting epochID you want to query.\n   * <br>&nbsp;&nbsp;<code>to</code> - The number that ending epochID you want to query.\n   * @returns {Promise<Array<any>>} - The identified delegator's total incentives.\n   * @example\n   * const ret = await sdk.getDelegatorTotalIncentive(\"WAN\", \"0xa6de4408d9003ee992b5dc0e1bf27968e48727dc\");\n   * console.log(ret);\n   * // [\n   * //   {\n   * //     \"address\": \"0x1a95e85e8ffcfd28eb61ee53a542dc98c57b337a\",\n   * //     \"amount\": \"233401766511923724414\",\n   * //     \"minEpochId\": 18080,\n   * //     \"epochCount\": 6\n   * //   },\n   * //   {\n   * //     \"address\": \"0x4bf9fd7308d0849a62c3a7dd71c5190e57c28756\",\n   * //     \"amount\": \"516430866915939128625\",\n   * //     \"minEpochId\": 18088,\n   * //     \"epochCount\": 12\n   * //   },\n   * //   ... ...\n   * // ]\n   */\n  public async getDelegatorTotalIncentive(chainType: string, address: string, option?: any): Promise<Array<any>> {\n    return await this._request('getDelegatorTotalIncentive', { chainType, address, ...(option || {}) });\n  }\n\n  /**\n   * Get the Epoch Leader and Random Number Proposer addresses and public key lists in the specified epoch.\n   * @since 1.1.0\n   * @group POS\n   * @param {string} chainType - The chain being queried. Currently supports <code>'WAN'</code>, default: <code>'WAN'</code>.\n   * @param {number} epochID - The epochID you want to search.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<Array<any>>} - The Epoch Leader and Random Number Proposer addresses and public key lists.\n   * @example\n   * const ret = await sdk.getLeaderGroupByEpochID(\"WAN\", 18102);\n   * console.log(ret);\n   * // [\n   * //   {\n   * //     \"pubBn256\": \"0x0342c5f001e6970037de3d9de692cb89284435df28e63657f88c8e99893be7960006f8cf93c699856ff8aeffcd64531ce0071cdf09a38d043b33bbbf4cd469ed\",\n   * //     \"pubSec256\": \"0x046c0979fbcd38b7887076db6b08adbbaae45189ac4239d2c06749b634dbeaafdf2b229b6c4eda1ab6ede7e46cbd9ab3ac35df1ac2a6f650bac39fd8474d85524e\",\n   * //     \"secAddr\": \"0x28c12c7b51860b9d5aec3a0ceb63c6e187c00aac\",\n   * //     \"type\": 0\n   * //   },\n   * //   {\n   * //     \"pubBn256\": \"0x093e87d8f1cf8d967be90fc841b73180e8185e480e5b1937c5bd0bf5b47288500598f33d4142bf226b2c8ddaf7358c3093423efdeb1b0a74bfba9d5749ecdf9c\",\n   * //     \"pubSec256\": \"0x04dac7b023f0e9fb5be91b48e5d546b2f2eb91029705f6055c24b3c804a49cf83f7cd584a96346ca42a94a02456444b7df4e280d2726971bf267f8182341ff81b9\",\n   * //     \"secAddr\": \"0x1a95e85e8ffcfd28eb61ee53a542dc98c57b337a\",\n   * //     \"type\": 0\n   * //   },\n   * //   {\n   * //     \"pubBn256\": \"0x00e0c4fae08f124f7a8fe82988a385d9723bea14c8a6e2996a684846ae8d0d4e27abedb7d2f7150bd42ba830e960774b873de74b1d91d7c5ea1ba349a849e575\",\n   * //     \"pubSec256\": \"0x047aa28ac3bf36c51e7781984e2843bdb78bf7d78e3e3f2fe5522581e8f94725749d81b6f2dd3068a02f95b9dddb5e3a97f9c6e22edf5a78e25339c3c94aeb31f1\",\n   * //     \"secAddr\": \"0x57dca45124e253bfa93d7571b43555a861c7455f\",\n   * //     \"type\": 1\n   * //   },\n   * //   {\n   * //     \"pubBn256\": \"0x2094589617397846c5125cf5922ba993643c401998ae8817d5005fe21245f4bc0fbb25158c54446757d2b03d89da10d7dfbbaa23afa38c6e87115dcebe2a8e4d\",\n   * //     \"pubSec256\": \"0x04428597d2d6ab60894c592951337243424637c8b65cc0057215f481dcb78b3e96268365c9bac17bc32b6c08e2c135ca231f636653040f995e8d4e03f6d4b8d812\",\n   * //     \"secAddr\": \"0x2c72d7a8c02752fcfafbaea5a63c53056cfaf547\",\n   * //     \"type\": 1\n   * //   },\n   * //   ... ...\n   * // ]\n   */\n  public async getLeaderGroupByEpochID(chainType: string, epochID: number, option?: any): Promise<Array<any>> {\n    return await this._request('getLeaderGroupByEpochID', { chainType, epochID, ...(option || {}) });\n  }\n\n  /**\n   * Get the current epoch info.\n   * @since 1.1.0\n   * @group POS\n   * @param {string} chainType - The chain being queried. Currently supports <code>'WAN'</code>, default: <code>'WAN'</code>.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<any>} - The current epoch info.\n   * @example\n   * const ret = await sdk.getCurrentEpochInfo(\"WAN\");\n   * console.log(ret);\n   * // { \"blockNumber\": 3938057, \"slotId\": 5661, \"epochId\": 18102 }\n   */\n  public async getCurrentEpochInfo(chainType: string, option?: any): Promise<any> {\n    return await this._request('getCurrentEpochInfo', { chainType, ...(option || {}) });\n  }\n\n  /**\n   * Returns an array with information on each of the current validators.\n   * @since 1.1.0\n   * @group POS\n   * @param {string} chainType - The chain being queried. Currently supports <code>'WAN'</code>, default: <code>'WAN'</code>.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<Array<any>>} - The information on each of the current validators.\n   * @example\n   * const ret = await sdk.getRandom(\"WAN\", 18102, -1);\n   * console.log(ret);\n   * // [\n   * //   {\n   * //     \"address\": \"0xa4626e2bb450204c4b34bcc7525e585e8f678c0d\",\n   * //     \"pubSec256\": \"0x04b7bf8d3868333f70a30041423c7db204b80b9be2e585c344cf3f391cbf77b17fd14f3058d4475d546355bf8c2709ed9ecf5f0cee9d021c90988af0e8cf52001b\",\n   * //     \"pubBn256\": \"0x289787688eb80c1e223375a71f8d17110d638a9143afa190dc11b3c1e64cf92b21feb02ab7a1dcb31892210dfda458aff890fe9e7508292099ae6256f197b325\",\n   * //     \"amount\": \"0xa968163f0a57b400000\",\n   * //     \"votingPower\": \"0x297116712be7b468800000\",\n   * //     \"lockEpochs\": 7,\n   * //     \"maxFeeRate\": 1500,\n   * //     \"nextLockEpochs\": 7,\n   * //     \"from\": \"0xdbb2d6199457d11288f0097659bcec24738e158f\",\n   * //     \"stakingEpoch\": 0,\n   * //     \"feeRate\": 1500,\n   * //     \"feeRateChangedEpoch\": 0,\n   * //     \"clients\":\n   * //     [\n   * //       {\n   * //         \"address\": \"0xfcc3736dc29bf9af7556fcc1dea10b53edaab51d\",\n   * //         \"amount\": \"0x56bc75e2d63100000\",\n   * //         \"votingPower\": \"0x1537da569da5bca00000\",\n   * //         \"quitEpoch\": 18071\n   * //       }\n   * //     ],\n   * //     \"partners\": []\n   * //   },\n   * //   ... ...\n   * // ]\n   */\n  public async getCurrentStakerInfo(chainType: string, option?: any): Promise<Array<any>> {\n    return await this._request('getCurrentStakerInfo', { chainType, ...(option || {}) });\n  }\n\n  /**\n   * Returns the total number of slots in an epoch. This is a constant.\n   * @since 1.1.0\n   * @group POS\n   * @param {string} chainType - The chain being queried. Currently supports <code>'WAN'</code>, default: <code>'WAN'</code>.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<number>} - The total number of slots in an epoch.\n   * @example\n   * const ret = await sdk.apiTest.getSlotCount(\"WAN\");\n   * console.log(ret);\n   * // 17280\n   */\n  public async getSlotCount(chainType: string, option?: any): Promise<number> {\n    return await this._request('getSlotCount', { chainType, ...(option || {}) });\n  }\n\n  /**\n   * Get the time span of a slot in seconds.\n   * @since 1.1.0\n   * @group POS\n   * @param {string} chainType - The chain being queried. Currently supports <code>'WAN'</code>, default: <code>'WAN'</code>.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<number>} - The time span of a slot in seconds.\n   * @example\n   * const ret = await sdk.getSlotTime(\"WAN\");\n   * console.log(ret);\n   * // 5\n   */\n  public async getSlotTime(chainType: string, option?: any): Promise<number> {\n    return await this._request('getSlotTime', { chainType, ...(option || {}) });\n  }\n\n  /**\n   * Returns the specified epoch's start time in UTC time seconds.\n   * @since 1.1.0\n   * @group POS\n   * @param {string} chainType - The chain being queried. Currently supports <code>'WAN'</code>, default: <code>'WAN'</code>.\n   * @param {number} epochID - The epochID you want to search.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<number>} - The specified epoch's start time in UTC time seconds.\n   * @example\n   * const ret = await sdk.getTimeByEpochID(\"WAN\", 18108);\n   * console.log(ret);\n   * // 1564531200\n   */\n  public async getTimeByEpochID(chainType: string, epochID: number, option?: any): Promise<number> {\n    return await this._request('getTimeByEpochID', { chainType, epochID, ...(option || {}) });\n  }\n\n  /**\n   * Calculates the Epoch ID according to the time. Enter the UTC time in seconds to get the corresponding Epoch ID.\n   * @since 1.1.0\n   * @group POS\n   * @param {string} chainType - The chain being queried. Currently supports <code>'WAN'</code>, default: <code>'WAN'</code>.\n   * @param {number} time - The UTC time seconds you want to query.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<number>} - The current highest stable block number.\n   * @example\n   * const ret = await sdk.getEpochIDByTime(\"WAN\", 1564550000);\n   * console.log(ret);\n   * // 18108\n   */\n  public async getEpochIDByTime(chainType: string, time: number, option?: any): Promise<number> {\n    return await this._request('getEpochIDByTime', { chainType, time, ...(option || {}) });\n  }\n\n  /**\n   * Get records of registered validators information.\n   * @since 1.1.0\n   * @group Service\n   * @param {string|Array<string>|number|undefined} [address] - The validator address you want to search.\n   * @param {number|undefined} [after] - The timestamp after you want to search.\n   * @returns {Promise<Array<any>>} - The records of registered validators information.\n   * @example\n   * const ret = await sdk.getRegisteredValidator();\n   * console.log(ret);\n   * // [\n   * //   {\n   * //     \"address\": \"0x17d47c6ac4f72d43420f5e9533b526b2dee626a6\",\n   * //     \"name\": \"MatPool\",\n   * //     \"iconData\": \"iVBORw0KGgoAAAANSUhEUgAAAEwAAABQCAYAAACzg5PLAAAABGd ... ...\",\n   * //     \"iconType\": \"png\",\n   * //     \"url\": \"https://matpool.io/\",\n   * //     \"updatedAt\": 1563780889497\n   * //   },\n   * //   ... ...\n   * // ]\n   */\n  public async getRegisteredValidator(address?: string|Array<string>|number|undefined, after?: number|undefined): Promise<Array<any>> {\n    let option = {};\n    if ('number' === typeof address) {\n      option = { after: address };\n    } else if ('number' === typeof after) {\n      option = ('string' === typeof address || Array.isArray(address)) ? { address, after } : { after };\n    } else if ('string' === typeof address || Array.isArray(address)) {\n      option = { address };\n    }\n    return await this._request('getRegisteredValidator', { ...option });\n  }\n\n  /**\n   * Get records of registered tokens information.\n   * @since 1.1.0\n   * @group Service\n   * @param {string|Array<string>|undefined} [tokenOrigAccount] - The original token account of chain.\n   * @param {number|undefined} [after] - The timestamp after you want to search.\n   * @returns {Promise<Array<any>>} - The records of registered tokens information.\n   * @example\n   * const ret = await sdk.getRegisteredValidator();\n   * console.log(ret);\n   * // [\n   * //   {\n   * //     \"tokenOrigAccount\": \"0x00f58d6d585f84b2d7267940cede30ce2fe6eae8\",\n   * //     \"decimals\": 18,\n   * //     \"deposit\": \"10000000000000000000\",\n   * //     \"iconData\": \"/9j/4AAQSkZJ ... ...\",\n   * //     \"iconType\": \"jpg\",\n   * //     \"name\": \"Wanchain ZRX Crosschain Token\",\n   * //     \"symbol\": \"ZRX\",\n   * //     \"token2WanRatio\": \"20000\",\n   * //     \"tokenWanAddr\": \"0x2a4359d8b84b270eb112b54273439ac538f32733\",\n   * //     \"updatedAt\": 1577155812722,\n   * //     \"withDrawDelayTime\": \"259200\"\n   * //   },\n   * //   ... ...\n   * // ]\n   */\n  public async getRegisteredToken(tokenOrigAccount?: string, after?: number): Promise<Array<any>> {\n    let option = {};\n    if ('number' === typeof tokenOrigAccount) {\n      option = { after: tokenOrigAccount };\n    } else if ('number' === typeof after) {\n      option = ('string' === typeof tokenOrigAccount || Array.isArray(tokenOrigAccount)) ? { tokenOrigAccount, after } : { after };\n    } else if ('string' === typeof tokenOrigAccount || Array.isArray(tokenOrigAccount)) {\n      option = { tokenOrigAccount };\n    }\n    return await this._request('getRegisteredToken', { tokenOrigAccount, after });\n  }\n\n  /**\n   * Get records of registered Dapps information.\n   * @since 1.1.0\n   * @group Service\n   * @param {any} [option] - Optional.\n   * <br>&nbsp;&nbsp;<code>chainType</code> - The chain type being queried. Currently supports <code>'WAN'</code>.\n   * <br>&nbsp;&nbsp;<code>url</code> - The URL being queried.\n   * <br>&nbsp;&nbsp;<code>language</code> - The supported language being queried.\n   * <br>&nbsp;&nbsp;<code>name</code> - The name being fuzzy queried.\n   * <br>&nbsp;&nbsp;<code>platform</code> - The supported platform being queried. Currently supports <code>'desktop'</code> and <code>'mobile'</code>.\n   * <br>&nbsp;&nbsp;<code>after</code> - The timestamp after you want to search.\n   * <br>&nbsp;&nbsp;<code>pageIndex</code> - The page index you want to search. If you want to query with the <code>pageIndex</code>, <code>page</code> is needed.\n   * <br>&nbsp;&nbsp;<code>page</code> - The page size you want to search.\n   * @returns {Promise<Array<any>>} - The records of registered Dapps information.\n   * @example\n   * const ret = await sdk.getRegisteredDapp({after:1577155812700, platform:[\"desktop\"]});\n   * console.log(ret);\n   * // [\n   * //   {\n   * //     \"langInfo\": [\n   * //     {\n   * //       \"language\": \"en\",\n   * //       \"name\": \"WRDEX\",\n   * //       \"summary\": \"A Crosschain Dex in wanchain.\",\n   * //       \"detail\": \"A Crosschain Dex in wanchain.\"\n   * //     }\n   * //     ],\n   * //     \"platform\":[\"desktop\",\"mobile\"],\n   * //     \"url\": \"https://exchange.wrdex.io\",\n   * //     \"chainType\": \"wan\",\n   * //     \"type\": \"Exchange\",\n   * //     \"creator\": \"rivex.io\",\n   * //     \"creatorWebsite\": \"https://wrdex.io\",\n   * //     \"scAddress\": [\n   * //     \"0x8786038ef9c2f659772c6c2ee8402bdfdc511bb8\"\n   * //     ],\n   * //     \"iconType\": \"jpg\",\n   * //     \"iconData\": \"/9j/4AAQSkZJRgABAQEBLAEsA ... ...\",\n   * //     \"updatedAt\": 1586226464996\n   * //   },\n   * //   ... ...\n   * // ]\n   */\n  public async getRegisteredDapp(option?: any): Promise<Array<any>> {\n    return await this._request('getRegisteredDapp', { ...(option || {}) });\n  }\n\n  /**\n   * Get records of registered advertisements information.\n   * @since 1.1.0\n   * @group Service\n   * @param {any} [option] - Optional.\n   * <br>&nbsp;&nbsp;<code>name</code> - The advertisement name you want to search.\n   * <br>&nbsp;&nbsp;<code>after</code> - The timestamp after you want to search.\n   * @returns {Promise<Array<any>>} - The records of registered advertisements information.\n   * @example\n   * const ret = await sdk.getRegisteredAds();\n   * console.log(ret);\n   * // [\n   * //   {\n   * //     \"name\": \"test\",\n   * //     \"iconData\": \"iVBORw0KGgoAAAGG ... ...\",\n   * //     \"iconType\": \"png\",\n   * //     \"url\": \"https://test.io/\",\n   * //     \"updatedAt\": 1563780893497\n   * //   },\n   * //   ... ...\n   * // ]\n   */\n  public async getRegisteredAds(option?: any): Promise<Array<any>> {\n    return await this._request('getRegisteredAds', { ...(option || {}) });\n  }\n\n  /**\n   * Get records of registered coingecko information.\n   * @since 1.1.0\n   * @group Service\n   * @param {any} [option] - Optional.\n   * <br>&nbsp;&nbsp;<code>symbol</code> - The array of coingecko symbol you want to search.\n   * <br>&nbsp;&nbsp;<code>after</code> - The timestamp after you want to search.\n   * @returns {Promise<Array<any>>} - The records of registered coingecko information.\n   * @example\n   * const ret = await sdk.getRegisteredCoinGecko({symbol:[\"wan\"]});\n   * console.log(ret);\n   * // [\n   * //    {\n   * //     \"id\": \"wanchain\",\n   * //     \"symbol\": \"wan\",\n   * //     \"name\": \"Wanchain\",\n   * //     \"updatedAt\": 1563780893497\n   * //    },\n   * //    ... ...\n   * // ]\n   */\n  public async getRegisteredCoinGecko(option?: any): Promise<Array<any>> {\n    return await this._request('getRegisteredCoinGecko', { ...(option || {}) });\n  }\n\n  /**\n   * Returns the epoch ID and block number when the switch from POW to the POS protocol occurred.\n   * @since 1.1.0\n   * @group POS\n   * @param {string} chainType - The chain being queried. Currently supports <code>'WAN'</code>, default: <code>'WAN'</code>.\n   * @param {any} [option] - A reserved parameter\n   * @returns {Promise<any>} - The POS info.\n   * @example\n   * const ret = await sdk.getPosInfo(\"WAN\");\n   * console.log(ret);\n   * // { \"firstBlockNumber\": 3560000, \"firstEpochId\": 18078 }\n   */\n  public async getPosInfo(chainType: string, option?: any): Promise<any> {\n    return await this._request('getPosInfo', { chainType, ...(option || {}) });\n  }\n\n  /**\n   * Get the highest block number of the specified epoch ID(s).\n   * @since 1.1.0\n   * @group POS\n   * @param {string} chainType - The chain being queried. Currently supports <code>'WAN'</code>, default: <code>'WAN'</code>.\n   * @param {number} epochID - The epochID you want to search.\n   * @param {any} [option] - A reserved parameter\n   * @returns {Promise<Array<any>>} - The the highest block number.\n   * @example\n   * const ret = await sdk.getMaxBlockNumber(\"WAN\", [18102, 18101]);\n   * console.log(ret);\n   * // [ { \"epochId\": 18102, \"blockNumber\": 3938057, }, { \"epochId\": 18101, \"blockNumber\": 3933152, } ]\n   */\n  public async getMaxBlockNumber(chainType: string, epochID: number, option?: any): Promise<Array<any>> {\n    return await this._request('getMaxBlockNumber', { chainType, epochID, ...(option || {}) });\n  }\n\n  /**\n   * Get supplementary information for the specified validator.\n   * @since 1.1.0\n   * @group POS\n   * @param {string} chainType - The chain being queried. Currently supports <code>'WAN'</code>, default: <code>'WAN'</code>.\n   * @param {string|Array<string>} address - The validator address you want to search.\n   * @param {any} [option] - A reserved parameter\n   * @returns {Promise<Array<any>>} - The supplementary information.\n   * @example\n   * const ret = await sdk.getValidatorSupStakeInfo(\"WAN\", [\"0x158bae682e6278a16d09d7c7311074585d38b54d\",\"0x85dae7e5c7b433a1682c54eee63adf63d835d272\"]);\n   * console.log(ret);\n   * // // [\n   * //     {\n   * //         \"address\": \"0x158bae682e6278a16d09d7c7311074585d38b54d\",\n   * //         \"stakeIn\": 3778078,\n   * //         \"stakeInTimestamp\": 1563134885\n   * //     },\n   * //     {\n   * //         \"address\": \"0x85dae7e5c7b433a1682c54eee63adf63d835d272\",\n   * //         \"stakeIn\": 3905210,\n   * //         \"stakeInTimestamp\": 1563848135\n   * //     }\n   * // ]\n   */\n  public async getValidatorSupStakeInfo(chainType: string, address: string|Array<string>, option?: any): Promise<Array<any>> {\n    return await this._request('getValidatorSupStakeInfo', { chainType, address, ...(option || {}) });\n  }\n\n  /**\n   * Get the specified delegator's supplementary information.\n   * @since 1.1.0\n   * @group POS\n   * @param {string} chainType - The chain being queried. Currently supports <code>'WAN'</code>, default: <code>'WAN'</code>.\n   * @param {string|Array<string>} address - The delegator's address you want to query.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<Array<any>>} - The supplementary information.\n   * @example\n   * const ret = await sdk.getDelegatorSupStakeInfo(\"WAN\", [\"0xc45089dfcf6308d80b377b0a6ffc8bd314273ce0\"]);\n   * console.log(ret);\n   * // // [\n   * //   {\n   * //     \"address\": \"0xc45089dfcf6308d80b377b0a6ffc8bd314273ce0\",\n   * //     \"vAddress\": \"0x1a95e85e8ffcfd28eb61ee53a542dc98c57b337a\",\n   * //     \"delegateIn\": 3788629,\n   * //     \"delegateInTimestamp\": 1563190930\n   * //   },\n   * //   {\n   * //     \"address\": \"0xc45089dfcf6308d80b377b0a6ffc8bd314273ce0\",\n   * //     \"vAddress\": \"0x1e1e954883d02fba32fa1f7d0d6314156aa2a4e8\",\n   * //     \"delegateIn\": 3788635,\n   * //     \"delegateInTimestamp\": 1563190970\n   * //   },\n   * //   ... ...\n   * // ]\n   */\n  public async getDelegatorSupStakeInfo(chainType: string, address: string|Array<string>, option?: any): Promise<Array<any>> {\n    return await this._request('getDelegatorSupStakeInfo', { chainType, address, ...(option || {}) });\n  }\n\n  /**\n   * Get the block number which contains the incentives transactions for the specified epoch.\n   * @since 1.1.0\n   * @group POS\n   * @param {string} chainType - The chain being queried. Currently supports <code>'WAN'</code>, default: <code>'WAN'</code>.\n   * @param {number} epochID - The epochID you want to search.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<number>} - The block number.\n   * @example\n   * const ret = await sdk.getEpochIncentiveBlockNumber(\"WAN\", 18106);\n   * console.log(ret);\n   * // 4003788\n   */\n  public async getEpochIncentiveBlockNumber(chainType: string, epochID: number, option?: any): Promise<number> {\n    return await this._request('getEpochIncentiveBlockNumber', { chainType, epochID, ...(option || {}) });\n  }\n\n  /**\n   * Get the record of stake out transactions for the specified epoch.\n   * @since 1.1.0\n   * @group POS\n   * @param {string} chainType - The chain being queried. Currently supports <code>'WAN'</code>, default: <code>'WAN'</code>.\n   * @param {number} epochID - The epochID you want to search.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<Array<any>>} - The record of stake out infomation.\n   * @example\n   * const ret = await sdk.getEpochStakeOut(\"WAN\", 18106);\n   * console.log(ret);\n   * // // [\n   * //   {\n   * //     \"address\": \"0x74b7505ef4ee4a4783f446df8964b6cdd4c61843\",\n   * //     \"amount\": \"0x8f1d5c1cae3740000\"\n   * //   },\n   * //   ... ...\n   * // ]\n   */\n  public async getEpochStakeOut(chainType: string, epochID: number, option?: any): Promise<Array<any>> {\n    return await this._request('getEpochStakeOut', { chainType, epochID, ...(option || {}) });\n  }\n\n  /**\n   * Check whether the OTA address is used.\n   * @since 1.1.0\n   * @group Accounts\n   * @param {string} chainType - The chain being queried. Currently supports <code>'WAN'</code>, default: <code>'WAN'</code>.\n   * @param {string} image - The OTA address.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<boolean>}\n   * @example\n   * const ret = await sdk.checkOTAUsed(\"WAN\", \"xxxxxxx\");\n   * console.log(ret);\n   * // true\n   */\n  public async checkOTAUsed(chainType: string, image: string, option?: any): Promise<boolean> {\n    return await this._request('checkOTAUsed', { chainType, image, ...(option || {}) });\n  }\n\n  /**\n   * Fetch service API by the native http.\n   * @since 1.1.0\n   * @group Service\n   * @param {string} srvType - The service type.\n   * @param {string} funcName - The service URI.\n   * @param {string} type - The http request method as string. Currently supports <code>'GET'</code> and <code>'POST'</code>.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<any>} - The service infomation.\n   * @example\n   * const ret = await sdk.fetchService(\"bp\", \"getAddress\", \"POST\", {});\n   * console.log(ret);\n   * // { \"name\": \"test\", \"address\":\"0x3786038ef9c2f659772c6c2ee8402bdfdc511bb5\" }\n   */\n  public async fetchService(srvType: string, funcName: string, type: string, option?: any): Promise<any> {\n    return await this._request('fetchService', { srvType, funcName, type, ...(option || {}) });\n  }\n\n  /**\n   * Fetch the special service API by the native http.\n   * @since 1.1.0\n   * @group Service\n   * @param {string} url - The special service request url absolutely.\n   * @param {string} type - The http request method as string. Currently supports <code>'GET'</code> and <code>'POST'</code>.\n   * @param {any} [option] - The arguments passing to service API.\n   * @returns {Promise<any>} - The service infomation.\n   * @example\n   * const ret = await sdk.fetchSpecialService(\"https://xxx.com:443/getAddress\", \"POST\", {});\n   * console.log(ret);\n   * // { \"name\": \"test\", \"address\":\"0x3786038ef9c2f659772c6c2ee8402bdfdc511bb5\" }\n   */\n  public async fetchSpecialService(url: string, type: string, option?: any): Promise<any> {\n    return await this._request('fetchSpecialService', { url, type, ...(option || {}) });\n  }\n\n  /**\n   * Get records of registered tokens information of original chain.\n   * @since 1.1.0\n   * @group Service\n   * @param {string} chainType - The chain being queried. Currently supports <code>'WAN'</code>, default: <code>'WAN'</code>.\n   * @param {any} [option] - Optional.\n   * <br>&nbsp;&nbsp;<code>tokenScAddr</code> - The token account of <code>'WAN'</code> chain.\n   * <br>&nbsp;&nbsp;<code>after</code> - The timestamp after you want to search.\n   * <br>&nbsp;&nbsp;<code>isEqual</code> - If you want to query with the <code>isEqual</code>, <code>after</code> is needed. The timestamp including <code>after</code> after you want to search.\n   * <br>&nbsp;&nbsp;<code>limit</code> - The maximum token logo you want to search.\n   * <br>&nbsp;&nbsp;<code>tokenTypes</code> - The multi token types logo you want to search. If <code>isAllTokenTypes</code> is <code>true</code>, using <code>isAllTokenTypes</code> first.\n   * <br>&nbsp;&nbsp;<code>isAllTokenTypes</code> - Whether to get all token type logo you want to search.\n   * <br>&nbsp;&nbsp;&nbsp;&nbsp;\n   * Set to <code>false</code> (the default) to return the default token logo.\n   * <br>&nbsp;&nbsp;&nbsp;&nbsp;\n   * Set to <code>true</code> to return all token type logo.\n   * @returns {Promise<Array<any>>} - The records of registered tokens information\n   * @example\n   * const ret = await sdk.getRegisteredOrigToken(\"WAN\", {after:1577155812700});\n   * console.log(ret);\n   * // [\n   * //   {\n   * //     \"tokenScAddr\": \"0xc6f4465a6a521124c8e3096b62575c157999d361\",\n   * //     \"iconType\": \"jpg\",\n   * //     \"iconData\": \"/9j/4AAQSkZJRgABAQEBLAEsA ... ...\",\n   * //     \"updatedAt\": 1589512354784\n   * //   },\n   * //   ... ...\n   * // ]\n   */\n  public async getRegisteredOrigToken(chainType: string, option?: any): Promise<Array<any>> {\n    return await this._request('getRegisteredOrigToken', { chainType, ...(option || {}) });\n  }\n\n  /**\n   * Get records of registered token's logo of specified chain.\n   * @since 1.1.0\n   * @group Service\n   * @param {string} chainType - The chain being queried. Currently supports <code>'WAN'</code>, default: <code>'WAN'</code>.\n   * @param {any} [option] - Optional.\n   * <br>&nbsp;&nbsp;<code>tokenScAddr</code> - The token account of <code>'WAN'</code> chain.\n   * <br>&nbsp;&nbsp;<code>after</code> - The timestamp after you want to search.\n   * <br>&nbsp;&nbsp;<code>isEqual</code> - If you want to query with the <code>isEqual</code>, <code>after</code> is needed. The timestamp including <code>after</code> after you want to search.\n   * <br>&nbsp;&nbsp;<code>limit</code> - The maximum token logo you want to search.\n   * <br>&nbsp;&nbsp;<code>tokenTypes</code> - The multi token types logo you want to search. If <code>isAllTokenTypes</code> is true, using <code>isAllTokenTypes</code> first.\n   * <br>&nbsp;&nbsp;<code>isAllTokenTypes</code> - Whether to get all token type logo you want to search.\n   * <br>&nbsp;&nbsp;&nbsp;&nbsp;\n   * Set to <code>false</code> (the default) to return the default token logo.\n   * <br>&nbsp;&nbsp;&nbsp;&nbsp;\n   * Set to <code>true</code> to return all token type logo.\n   * @returns {Promise<Array<any>>} - The records of registered token's logo\n   * @example\n   * const ret = await sdk.getRegisteredTokenLogo(\"WAN\", {after:1577155812700});\n   * console.log(ret);\n   * // [\n   * //   {\n   * //     \"tokenScAddr\": \"0xc6f4465a6a521124c8e3096b62575c157999d361\",\n   * //     \"iconType\": \"jpg\",\n   * //     \"iconData\": \"/9j/4AAQSkZJRgABAQEBLAEsA ... ...\",\n   * //     \"updatedAt\": 1589512354784\n   * //   },\n   * //   ... ...\n   * // ]\n   */\n  public async getRegisteredTokenLogo(chainType: string, option?: any): Promise<Array<any>> {\n    return await this._request('getRegisteredTokenLogo', { chainType, ...(option || {}) });\n  }\n\n  /**\n   * Get records of registered chain logo.\n   * @since 1.1.0\n   * @group Service\n   * @param {any} [option] - Optional.\n   * <br>&nbsp;&nbsp;<code>chainType</code> - The chainType you want to search.\n   * <br>&nbsp;&nbsp;<code>after</code> - The timestamp after you want to search.\n   * <br>&nbsp;&nbsp;<code>pageIndex</code> - The page index you want to search. If you want to query with the <code>pageIndex</code>, <code>page</code> is needed.\n   * <br>&nbsp;&nbsp;<code>page</code> - The page size you want to search.\n   * <br>&nbsp;&nbsp;&nbsp;&nbsp;\n   * Set to <code>false</code> (the default) to return the default token logo.\n   * <br>&nbsp;&nbsp;&nbsp;&nbsp;\n   * Set to <code>true</code> to return all token type logo.\n   * @returns {Promise<Array<any>>} The records of registered chain logo.\n   * @example\n   * const ret = await sdk.getRegisteredChainLogo({chainType:\"WAN\", after:1577155812700});\n   * console.log(ret);\n   * // [\n   * //   {\n   * //     \"chainType\": \"WAN\",\n   * //     \"iconType\": \"jpg\",\n   * //     \"iconData\": \"/9j/4AAQSkZJRgABAQEBLAEsA ... ...\",\n   * //     \"updatedAt\": 1589512354784\n   * //   },\n   * //   ... ...\n   * // ]\n   */\n  public async getRegisteredChainLogo(option?: any): Promise<Array<any>> {\n    return await this._request('getRegisteredChainLogo', { ...(option || {}) });\n  }\n\n  /**\n   * Get records of registered cross-chain token of multi-chain asset.\n   * @since 1.1.0\n   * @group Service\n   * @param {any} [option] - Optional.\n   * <br>&nbsp;&nbsp;<code>chainType</code> - The chainType you want to search.\n   * <br>&nbsp;&nbsp;<code>symbol</code> - The symbol you want to search.\n   * @returns {Promise<Array<any>>} - The records of registered cross-chain token.\n   * @example\n   * const ret = await sdk.getRegisteredMultiChainOrigToken({chainType:\"ETH\"});\n   * console.log(ret);\n   * // [\n   * //   {\n   * //     \"chainType\":\"ETH\",\n   * //     \"updatedAt\": :\"USDT\"\n   * //   },\n   * //   ... ...\n   * // ]\n   */\n  public async getRegisteredMultiChainOrigToken(option?: any): Promise<Array<any>> {\n    return await this._request('getRegisteredMultiChainOrigToken', { ...(option || {}) });\n  }\n\n  /**\n   * Get records of registered mapping tokens information of shadow chain.\n   * @since 1.1.0\n   * @group Service\n   * @param {string} chainType - The chain being queried. Default: <code>'WAN'</code>.\n   * @param {any} [option] - Optional.\n   * <br>&nbsp;&nbsp;<code>tokenScAddr</code> - The token account of <code>'WAN'</code> chain.\n   * <br>&nbsp;&nbsp;<code>after</code> - The timestamp after you want to search.\n   * <br>&nbsp;&nbsp;<code>pageIndex</code> - The page index you want to search. If you want to query with the <code>pageIndex</code>, <code>page</code> is needed.\n   * <br>&nbsp;&nbsp;<code>page</code> - The page size you want to search.\n   * @returns {Promise<Array<any>>} - The records of registered mapping tokens information.\n   * @example\n   * const ret = await sdk.getRegisteredMapToken(\"WAN\", {after:1577155812700});\n   * console.log(ret);\n   * // [\n   * //   {\n   * //     \"tokenScAddr\": \"0xc6f4465a6a521124c8e3096b62575c157999d361\",\n   * //     \"iconType\": \"jpg\",\n   * //     \"iconData\": \"/9j/4AAQSkZJRgABAQEBLAEsA ... ...\",\n   * //     \"updatedAt\": 1589512354784\n   * //   },\n   * //   ... ...\n   * // ]\n   */\n  public async getRegisteredMapToken(chainType: string, option?: any): Promise<Array<any>> {\n    return await this._request('getRegisteredMapToken', { chainType, ...(option || {}) });\n  }\n\n  /**\n   * Get records of registered subgraph info.\n   * @since 1.1.0\n   * @group Service\n   * @param {any} [option] - Optional.\n   * <br>&nbsp;&nbsp;<code>chainType</code> - The chainType you want to search.\n   * <br>&nbsp;&nbsp;<code>keywords</code> - The keywords you want to search.\n   * @returns {Promise<Array<any>>} - The records of registered subgraph info.\n   * @example\n   * const ret = await sdk.getRegisteredSubgraph({chainType:\"ETH\", keywords:[\"0x...\"]});\n   * console.log(ret);\n   * // [\n   * //   {\n   * //     \"chainType\":\"ETH\",\n   * //     \"keyword\":\"0x...\",\n   * //     \"subgraph\": \"https://...\"\n   * //   },\n   * //   ... ...\n   * // ]\n   */\n  public async getRegisteredSubgraph(option?: any): Promise<Array<any>> {\n    return await this._request('getRegisteredSubgraph', { ...(option || {}) });\n  }\n\n  /**\n   * Get records of registered token issuer info.\n   * @since 1.1.0\n   * @group Service\n   * @param {any} [option] - Optional.\n   * <br>&nbsp;&nbsp;<code>chainType</code> - The chainType you want to search.\n   * <br>&nbsp;&nbsp;<code>tokenScAddr</code> - The tokenScAddr you want to search.\n   * @returns {Promise<Array<any>>} - The records of registered token issuer info.\n   * @example\n   * const ret = await sdk.getRegisteredTokenIssuer({chainType:\"ETH\", tokenScAddr:\"0x0000000000000000000000000000000000000000\"});\n   * console.log(ret);\n   * // [{\"chainType\":\"ETH\",\"isNativeCoin\":true,\"issuer\":\"Ethereum\",\"tokenScAddr\":\"0x0000000000000000000000000000000000000000\",\"tokenType\":\"erc20\",\"updatedAt\":1680000764477}]\n   */\n  public async getRegisteredTokenIssuer(option?: any): Promise<Array<any>> {\n    return await this._request('getRegisteredTokenIssuer', { ...(option || {}) });\n  }\n\n  /**\n   * Get records of registered token list info.\n   * @since 1.1.0\n   * @group Service\n   * @param {any} [option] - Optional.\n   * <br>&nbsp;&nbsp;<code>chainType</code> - The chainType you want to search.\n   * <br>&nbsp;&nbsp;<code>tags</code> - The array of tag you want to search.\n   * <br>&nbsp;&nbsp;<code>tokenTypes</code> - The array of token type you want to search.\n   * @returns {Promise<Array<any>>} - The records of registered token list info.\n   * @example\n   * const ret = await sdk.getRegisteredTokenList({chainType:\"ETH\", tags:[\"desktop\"], tokenTypes:[\"erc20\"]});\n   * console.log(ret);\n   * // [{\"groupTag\":\"ETH\",\"address\":\"0x0000000000000000000000000000000000000000\",\"name\":\"ethereum\",\"symbol\":\"ETH\",\"decimals\":\"18\",\"tokenType\":\"erc20\",\"chainType\":\"ETH\"},{\"groupTag\":\"WAN\",\"address\":\"0xdd22d37d976648071277306fbf4883cb21ea86c6\",\"name\":\"WAN@ethereum\",\"symbol\":\"WAN\",\"decimals\":\"18\",\"tokenType\":\"erc20\",\"chainType\":\"ETH\"},...]\n   */\n  public async getRegisteredTokenList(option?: any): Promise<Array<any>> {\n    return await this._request('getRegisteredTokenList', { ...(option || {}) });\n  }\n\n  /**\n   * Get all the active storemanGroups, include the info like the groupid, etc.\n   * @since 1.1.0\n   * @group CrossChainV2\n   * @param {any} [option] - Optional.\n   * <br>&nbsp;&nbsp;<code>chainIds</code> -  Array of chain IDs about the cross chain pair.\n   * @returns {Promise<Array<any>>} - The storeman group active information.\n   * @example\n   * const ret = await sdk.getStoremanGroupList();\n   * console.log(ret);\n   * // [\n   * //     {\n   * //         \"preGroupId\": \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n   * //         \"workStart\": \"1621497600\",\n   * //         \"workDuration\": \"2678400\",\n   * //         \"endRegisterTime\": \"1621490412\",\n   * //         \"canStakeIn\": false,\n   * //         \"groupId\": \"0x0000000000000000000000000000000000000000006465765f646f745f303031\",\n   * //         \"status\": \"4\",\n   * //         \"deposit\": \"40039999999999999996400\",\n   * //         \"depositWeight\": \"60059999999999999994600\",\n   * //         \"selectedCount\": \"4\",\n   * //         \"memberCount\": \"6\",\n   * //         \"whiteCount\": \"1\",\n   * //         \"whiteCountAll\": \"11\",\n   * //         \"startTime\": \"1621497600\",\n   * //         \"endTime\": \"1624176000\",\n   * //         \"registerTime\": \"1621397780\",\n   * //         \"registerDuration\": \"92632\",\n   * //         \"memberCountDesign\": \"4\",\n   * //         \"threshold\": \"3\",\n   * //         \"chain1\": [\n   * //             2153201998,\n   * //             \"WAN\",\n   * //             \"Wanchain\",\n   * //             5718350\n   * //         ],\n   * //         \"chain2\": [\n   * //             2147483708,\n   * //             \"ETH\",\n   * //             \"Ethereum\",\n   * //             60\n   * //         ],\n   * //         \"curve1\": \"1\",\n   * //         \"curve2\": \"0\",\n   * //         \"tickedCount\": \"0\",\n   * //         \"minStakeIn\": \"10000000000000000000000\",\n   * //         \"minDelegateIn\": \"100000000000000000000\",\n   * //         \"minPartIn\": \"10000000000000000000000\",\n   * //         \"crossIncoming\": \"0\",\n   * //         \"gpk1\": \"0x\",\n   * //         \"gpk2\": \"0x\",\n   * //         \"delegateFee\": \"1000\",\n   * //         \"algo1\": \"1\",\n   * //         \"algo2\": \"0\"\n   * //     },\n   * //     ... ...\n   * // ]\n   */\n  public async getStoremanGroupList(option?: any): Promise<Array<any>> {\n    return await this._request('getStoremanGroupList', { ...(option || {}) });\n  }\n\n  /**\n   * Get the storeman group active information.\n   * @since 1.1.0\n   * @group CrossChainV2\n   * @param {string} groupId - The storeman group ID.\n   * @param {any} [option] - Optional.\n   * <br>&nbsp;&nbsp;<code>fromEpoch</code> - The number that begin epochID you want to search.\n   * <br>&nbsp;&nbsp;<code>toEpoch</code> - The number that end epochID you want to search.\n   * @returns {Promise<any>} - The storeman group active information.\n   * @example\n   * const ret = await sdk.getStoremanGroupActivity(\"0x0000000000000000000000000000000000000000000031353937383131313430\");\n   * console.log(ret);\n   * // {\n   * //   \"0\": {\n   * //     \"wkAddr\":\"0x5793e629c061e7fd642ab6a1b4d552cec0e2d606\",\n   * //     \"activity\": \"90\"\n   * //   },\n   * //   ... ...\n   * // }\n   */\n  public async getStoremanGroupActivity(groupId: string, option?: any): Promise<any> {\n    return await this._request('getStoremanGroupActivity', { groupId, ...(option || {}) });\n  }\n\n  /**\n   * Get the storeman group quota information.\n   * @since 1.1.0\n   * @group CrossChainV2\n   * @param {string} chainType - The from chain being queried, default: <code>'WAN'</code>.\n   * @param {string} groupId - The storeman group ID.\n   * @param {Array<string>} symbol - The array of symbol being queried.\n   * @param {any} option - Object:\n   * <br>&nbsp;&nbsp;<code>targetChainType</code> - The target chain being queried.\n   * <br>&nbsp;&nbsp;<code>ignoreReservation</code> - Optional. Whether to ignore the reservation quota:\n   * <br>&nbsp;&nbsp;&nbsp;&nbsp;\n   * Set to <code>false</code> (the default) to return the quota that deducts the reserved amount.\n   * <br>&nbsp;&nbsp;&nbsp;&nbsp;\n   * Set to <code>true</code> to return the quota without deducting the reservation amount.\n   * @returns {Promise<Array<any>>} - The storeman group quota information.\n   * @example\n   * const ret = await sdk.getStoremanInfo(\"0x13F5c27b1475a61A5fdEaF4e547D9611417c7375\");\n   * console.log(ret);\n   * // [ { \"symbol\": \"BTC\", \"minQuota\": \"2\", \"maxQuota\": \"3312485144\" } ]\n   */\n  public async getStoremanGroupQuota(chainType: string, groupId: string, symbol: Array<string>, option: any): Promise<Array<any>> {\n    return await this._request('getStoremanGroupQuota', { chainType, groupId, symbol, ...(option || {}) });\n  }\n\n  /**\n   * Get the detail info of one certain storemanGroup, include the info like the deposit, memberCount etc.\n   * @since 1.1.0\n   * @group CrossChainV2\n   * @param {string} groupId - The storeman group ID.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<any>} - The detail info of one certain storemanGroup.\n   * @example\n   * const ret = await sdk.getStoremanGroupInfo(\"0x000000000000000000000000000000000000000000000000006465765f323631\");\n   * console.log(ret);\n   * // {\"groupId\":\"0x000000000000000000000000000000000000000000000000006465765f323631\",\"status\":\"7\",\"deposit\":\"1360409999999999999936800\",\"depositWeight\":\"1506809999999999999905200\",\"selectedCount\":\"29\",\"memberCount\":\"29\",\"whiteCount\":\"1\",\"whiteCountAll\":\"10\",\"startTime\":\"1764129600\",\"endTime\":\"1764734400\",\"registerTime\":\"1763957830\",\"registerDuration\":\"779\",\"memberCountDesign\":\"29\",\"threshold\":\"21\",\"chain1\":\"2153201998\",\"chain2\":\"2147483708\",\"curve1\":\"1\",\"curve2\":\"0\",\"tickedCount\":\"0\",\"minStakeIn\":\"10000000000000000000000\",\"minDelegateIn\":\"100000000000000000000\",\"minPartIn\":\"10000000000000000000000\",\"crossIncoming\":\"0\",\"gpk1\":\"0x0bcf65cefe1f016f6578317be6ba72d37d4ff2b79430eec2ca35fd3413fa9ca420d50eedf68f78432982c09bd19043c41ccee1e018ffe5bd474ee535e110ab2f\",\"gpk2\":\"0x1ac23caa6723194a943e257f294d14308d12055286a1ecb59fd46bcccb9ac56d9451ce3d5a17f3322ebb646f32b5e1823951615d8b32893b220eae27a3126022\",\"delegateFee\":\"1000\",\"algo1\":\"1\",\"algo2\":\"0\",\"gpk3\":\"0xacafdcc977e4672bf1252eb2d2ba96f8f97c6828c092b6b3dac17c7f2c991fdc4621506ce12f995a464405ad23f9a719cdc650be636ad60dd517a6dfaa7694dc\",\"curve3\":\"0\",\"algo3\":\"2\"}\n   */\n  public async getStoremanGroupInfo(groupId: string, option?: any): Promise<any> {\n    return await this._request('getStoremanGroupInfo', { groupId, ...(option || {}) });\n  }\n\n  /**\n   * Get the detail info of multi-storemanGroup, include the info like the deposit, memberCount etc.\n   * @since 1.1.0\n   * @group CrossChainV2\n   * @param {Array<string>} groupId - The Array of storeman group ID.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<Array<any>>} - The detail info of multi-storemanGroup.\n   * @example\n   * const ret = await sdk.getMultiStoremanGroupInfo([\"0x000000000000000000000000000000000000000000000000006465765f323631\"]);\n   * console.log(ret);\n   * // [{\"groupId\":\"0x000000000000000000000000000000000000000000000000006465765f323631\",\"status\":\"7\",\"deposit\":\"1360409999999999999936800\",\"depositWeight\":\"1506809999999999999905200\",\"selectedCount\":\"29\",\"memberCount\":\"29\",\"whiteCount\":\"1\",\"whiteCountAll\":\"10\",\"startTime\":\"1764129600\",\"endTime\":\"1764734400\",\"registerTime\":\"1763957830\",\"registerDuration\":\"779\",\"memberCountDesign\":\"29\",\"threshold\":\"21\",\"chain1\":\"2153201998\",\"chain2\":\"2147483708\",\"curve1\":\"1\",\"curve2\":\"0\",\"tickedCount\":\"0\",\"minStakeIn\":\"10000000000000000000000\",\"minDelegateIn\":\"100000000000000000000\",\"minPartIn\":\"10000000000000000000000\",\"crossIncoming\":\"0\",\"gpk1\":\"0x0bcf65cefe1f016f6578317be6ba72d37d4ff2b79430eec2ca35fd3413fa9ca420d50eedf68f78432982c09bd19043c41ccee1e018ffe5bd474ee535e110ab2f\",\"gpk2\":\"0x1ac23caa6723194a943e257f294d14308d12055286a1ecb59fd46bcccb9ac56d9451ce3d5a17f3322ebb646f32b5e1823951615d8b32893b220eae27a3126022\",\"delegateFee\":\"1000\",\"algo1\":\"1\",\"algo2\":\"0\",\"gpk3\":\"0xacafdcc977e4672bf1252eb2d2ba96f8f97c6828c092b6b3dac17c7f2c991fdc4621506ce12f995a464405ad23f9a719cdc650be636ad60dd517a6dfaa7694dc\",\"curve3\":\"0\",\"algo3\":\"2\"}]\n   */\n  public async getMultiStoremanGroupInfo(groupId: Array<string>, option?: any): Promise<Array<any>> {\n    return await this._request('getMultiStoremanGroupInfo', { groupId, ...(option || {}) });\n  }\n\n  /**\n   * Get the detail config of one certain storemanGroup, include the info like the chain1/curve1/gpk1/chain2/curve2/gpk2, etc.\n   * @since 1.1.0\n   * @group CrossChainV2\n   * @param {string} groupId - The storeman group ID.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<any>} - The detail config of one certain storemanGroup.\n   * @example\n   * const ret = await sdk.getStoremanGroupConfig(\"0x000000000000000000000000000000000000000000000000006465765f323631\");\n   * console.log(ret);\n   * // {\"groupId\":\"0x000000000000000000000000000000000000000000000000006465765f323631\",\"status\":\"7\",\"deposit\":\"1360409999999999999936800\",\"chain1\":\"2153201998\",\"chain2\":\"2147483708\",\"curve1\":\"1\",\"curve2\":\"0\",\"gpk1\":\"0x0bcf65cefe1f016f6578317be6ba72d37d4ff2b79430eec2ca35fd3413fa9ca420d50eedf68f78432982c09bd19043c41ccee1e018ffe5bd474ee535e110ab2f\",\"gpk2\":\"0x1ac23caa6723194a943e257f294d14308d12055286a1ecb59fd46bcccb9ac56d9451ce3d5a17f3322ebb646f32b5e1823951615d8b32893b220eae27a3126022\",\"startTime\":\"1764129600\",\"endTime\":\"1764734400\"}\n   */\n  public async getStoremanGroupConfig(groupId: string, option?: any): Promise<any> {\n    return await this._request('getStoremanGroupConfig', { groupId, ...(option || {}) });\n  }\n\n  /**\n   * Get the detail info of one certain storeman, include the info like the groupid, deposit, delegatorDeposit, incentive, etc.\n   * @since 1.1.0\n   * @group CrossChainV2\n   * @param {string} wkAddr - The storeman wkAddr being queried.\n   * @param {any} [option] - A reserved parameter\n   * @returns {Promise<any>} - The detail info of one certain storeman.\n   * @example\n   * const ret = await sdk.getStoremanInfo(\"0x13F5c27b1475a61A5fdEaF4e547D9611417c7375\");\n   * console.log(ret);\n   * // {\"sender\":\"0xAf840473fDd273fB1e3347F8e6e555cb8F2a240F\",\"enodeID\":\"0x39c0251b5f6b8acf1458d14cb6a0c237fdc88460832c441b02b0fa3abb21dc7bbab2698e0800035bbf4e0c3c4c210f30ec400273a7ae985200bff2a7a8ad6972\",\"PK\":\"0x20490b3a57ca48824c496307a5c8c8b23fed70b8304defd936200ff6d3efffa7bb8395ff73da3bdd4240f73d20c55e95dc0b3971595a652bb893fc7eca2eeb13\",\"wkAddr\":\"0x13F5c27b1475a61A5fdEaF4e547D9611417c7375\",\"isWhite\":false,\"quited\":false,\"delegatorCount\":\"2\",\"delegateDeposit\":\"200000000000000000000\",\"partnerCount\":\"0\",\"partnerDeposit\":\"0\",\"crossIncoming\":\"34482758620689655\",\"slashedCount\":\"0\",\"incentivedDelegator\":\"0\",\"incentivedDay\":\"20531\",\"groupId\":\"0x000000000000000000000000000000000000000000000000006465765f323737\",\"nextGroupId\":\"0x0000000000000000000000000000000000000000000000000000000000000000\",\"deposit\":\"10099999999999999998600\",\"incentive\":\"3794897724406368827197\",\"delegatorInCount\":\"1\",\"delegateInDeposit\":\"100000000000000000000\"}\n   */\n  public async getStoremanInfo(wkAddr: string, option?: any): Promise<any> {\n    return await this._request('getStoremanInfo', { wkAddr, ...(option || {}) });\n  }\n\n  /**\n   * Get the detail info of multi certain storeman, include the info like the groupid, deposit, delegatorDeposit, incentive, etc.\n   * @since 1.1.0\n   * @group CrossChainV2\n   * @param {string} wkAddr - The storeman wkAddr being queried.\n   * @param {any} [option] - A reserved parameter\n   * @returns {Promise<Array<any>>} - The detail info of multi certain storeman.\n   * @example\n   * const ret = await sdk.getMultiStoremanInfo([\"0x13F5c27b1475a61A5fdEaF4e547D9611417c7375\"]);\n   * console.log(ret);\n   * // [{\"sender\":\"0xAf840473fDd273fB1e3347F8e6e555cb8F2a240F\",\"enodeID\":\"0x39c0251b5f6b8acf1458d14cb6a0c237fdc88460832c441b02b0fa3abb21dc7bbab2698e0800035bbf4e0c3c4c210f30ec400273a7ae985200bff2a7a8ad6972\",\"PK\":\"0x20490b3a57ca48824c496307a5c8c8b23fed70b8304defd936200ff6d3efffa7bb8395ff73da3bdd4240f73d20c55e95dc0b3971595a652bb893fc7eca2eeb13\",\"wkAddr\":\"0x13F5c27b1475a61A5fdEaF4e547D9611417c7375\",\"isWhite\":false,\"quited\":false,\"delegatorCount\":\"2\",\"delegateDeposit\":\"200000000000000000000\",\"partnerCount\":\"0\",\"partnerDeposit\":\"0\",\"crossIncoming\":\"34482758620689655\",\"slashedCount\":\"0\",\"incentivedDelegator\":\"0\",\"incentivedDay\":\"20531\",\"groupId\":\"0x000000000000000000000000000000000000000000000000006465765f323737\",\"nextGroupId\":\"0x0000000000000000000000000000000000000000000000000000000000000000\",\"deposit\":\"10099999999999999998600\",\"incentive\":\"3794897724406368827197\",\"delegatorInCount\":\"1\",\"delegateInDeposit\":\"100000000000000000000\"}]\n   */\n  public async getMultiStoremanInfo(wkAddr: Array<string>, option?: any): Promise<Array<any>> {\n    return await this._request('getMultiStoremanInfo', { wkAddr, ...(option || {}) });\n  }\n\n  /**\n   * Get the conf info of one certain storeman, include the info about backupCount, standaloneWeight, delegatorDeposit and delegationMulti.\n   * @since 1.1.0\n   * @group CrossChainV2\n   * @param {any} [option] - A reserved parameter\n   * @returns {Promise<any>} - The conf info.\n   * @example\n   * const ret = await sdk.getStoremanConf();\n   * console.log(ret);\n   * // {\"backupCount\":\"9\",\"standaloneWeight\":\"15000\",\"delegationMulti\":\"10\"}\n   */\n  public async getStoremanConf(option?: any): Promise<any> {\n    return await this._request('getStoremanConf', { ...(option || {}) });\n  }\n\n  /**\n   * Get the storeman candidates info of one certain storeman group.\n   * @since 1.1.0\n   * @group CrossChainV2\n   * @param {string} groupId - The storeman group ID.\n   * @param {any} [option] - A reserved parameter\n   * @returns {Promise<Arr<any>>} - The storeman candidates info.\n   * @example\n   * const ret = await sdk.getStoremanCandidates(\"0x0000000000000000000000000000000000000000000000003133323936333039\");\n   * console.log(ret);\n   * // [\n   * //   {\n   * //     \"sender\": \"0x4Eb7Cb5411D13014A69EDc089AA75a6E1fd0Aa68\",\n   * //     \"PK\": \"0xbe3b7fd88613dc272a36f4de570297f5f33b87c26de3060ad04e2ea697e13125a2454acd296e1879a7ddd0084d9e4e724fca9ef610b21420978476e2632a1782\",\n   * //     \"wkAddr\": \"0x23DcbE0323605A7A00ce554baBCFF197bAF99B10\",\n   * //     \"quited\": false,\n   * //     \"deposit\": \"2000\",\n   * //     \"delegateDeposit\": \"0\",\n   * //     \"incentive\": \"0\",\n   * //     \"delegatorCount\": \"0\",\n   * //     \"groupId\": \"0x0000000000000000000000000000000000000000000031353938353934383939\",\n   * //     \"nextGroupId\": \"0x0000000000000000000000000000000000000000000031353938353934383939\",\n   * //     \"incentivedDay\": \"13319374\",\n   * //     \"slashedCount\": \"0\"\n   * //   },\n   * //   ... ...\n   * // ]\n   */\n  public async getStoremanCandidates(groupId: string, option?: any): Promise<Array<any>> {\n    return await this._request('getStoremanCandidates', { groupId, ...(option || {}) });\n  }\n\n  /**\n  * @ignore\n  */\n  public async getStoremanCandidatesV2(groupId: string, option?: any): Promise<Array<any>> {\n    return await this._request('getStoremanCandidatesV2', { groupId, ...(option || {}) });\n  }\n\n  /**\n   * Get the storeman member info of one certain storeman group.\n   * @since 1.1.0\n   * @group CrossChainV2\n   * @param {string} groupId - The storeman group ID being queried.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<Array<any>>} - The storeman member info.\n   * @example\n   * const ret = await sdk.getStoremanGroupMember(\"0x0000000000000000000000000000000000000000000031353938353934383939\");\n   * console.log(ret);\n   * // [\n   * //   {\n   * //     \"isWhite\": true,\n   * //     \"sender\": \"0x7F1d642DbfD62aD4A8fA9810eA619707d09825D0\",\n   * //     \"PK\": \"0x25fa6a4190ddc87d9f9dd986726cafb901e15c21aafd2ed729efed1200c73de89f1657726631d29733f4565a97dc00200b772b4bc2f123a01e582e7e56b80cf8\",\n   * //     \"wkAddr\": \"0x5793e629c061e7FD642ab6A1b4d552CeC0e2D606\",\n   * //     \"quited\": false,\n   * //     \"deposit\": \"2000\",\n   * //     \"delegateDeposit\": \"0\",\n   * //     \"incentive\": \"0\",\n   * //     \"delegatorCount\": \"0\",\n   * //     \"groupId\": \"0x0000000000000000000000000000000000000000000031353938353934383939\",\n   * //     \"nextGroupId\": \"0x0000000000000000000000000000000000000000000031353938353934383939\",\n   * //     \"incentivedDay\": \"13319374\",\n   * //     \"slashedCount\": \"0\",\n   * //     \"name\": \"phorest.xyz\",\n   * //     \"url\": \"https://phorest.xyz/wan\",\n   * //     \"iconData\": \"...\",\n   * //     \"iconType\": \"png\"\n   * //   },\n   * //   ... ...\n   * // ]\n   */\n  public async getStoremanGroupMember(groupId: string, option?: any): Promise<Array<any>> {\n    return await this._request('getStoremanGroupMember', { groupId, ...(option || {}) });\n  }\n\n  /**\n  * @ignore\n  */\n  public async getStoremanGroupMemberV2(groupId: string, option?: any): Promise<Array<any>> {\n    return await this._request('getStoremanGroupMemberV2', { groupId, ...(option || {}) });\n  }\n\n  /**\n   * Get the stake info of certain storeman.\n   * @since 1.1.0\n   * @group CrossChainV2\n   * @param {any} [option] - Optional:\n   * <br>&nbsp;&nbsp;<code>address</code> - The array of storeman from address being queried.\n   * <br>&nbsp;&nbsp;<code>wkAddr</code> - The string of storeman work address being queried.\n   * <br>&nbsp;&nbsp;<code>groupId</code> - The string of storeman group ID being queried.\n   * @returns {Promise<Array<any>>} - The stake info.\n   * @example\n   * const ret = await sdk.getSupportedChainInfo();\n   * console.log(ret);\n   * // [{\"enodeID\":\"0x39c0251b5f6b8acf1458d14cb6a0c237fdc88460832c441b02b0fa3abb21dc7bbab2698e0800035bbf4e0c3c4c210f30ec400273a7ae985200bff2a7a8ad6972\",\"PK\":\"0x20490b3a57ca48824c496307a5c8c8b23fed70b8304defd936200ff6d3efffa7bb8395ff73da3bdd4240f73d20c55e95dc0b3971595a652bb893fc7eca2eeb13\",\"wkAddr\":\"0x13F5c27b1475a61A5fdEaF4e547D9611417c7375\",\"isWhite\":false,\"quited\":false,\"delegatorCount\":\"2\",\"delegateDeposit\":\"100000000000000000000\",\"partnerCount\":\"0\",\"partnerDeposit\":\"0\",\"crossIncoming\":\"34482758620689655\",\"slashedCount\":\"0\",\"incentivedDelegator\":\"0\",\"incentivedDay\":\"20531\",\"groupId\":\"0x000000000000000000000000000000000000000000000000006465765f323737\",\"nextGroupId\":\"0x0000000000000000000000000000000000000000000000000000000000000000\",\"deposit\":\"10099999999999999998600\",\"incentive\":\"3794897724406368827197\",\"canStakeOut\":true,\"canStakeClaim\":false,\"selectedCount\":29,\"rank\":19,\"activity\":1,\"from\":\"0xAf840473fDd273fB1e3347F8e6e555cb8F2a240F\"}]\n   */\n  public async getStoremanStakeInfo(option?: any): Promise<Array<any>> {\n    return await this._request('getStoremanStakeInfo', { ...(option || {}) });\n  }\n\n  /**\n   * Get the total incentive info of certain storeman stake.\n   * @since 1.1.0\n   * @group CrossChainV2\n   * @param {any} option - Object:\n   * <br>&nbsp;&nbsp;<code>address</code> - Optional, the array of storeman from address being queried.\n   * <br>&nbsp;&nbsp;<code>wkAddr</code> - Optional, the string of storeman work address being queried.\n   * <br>&nbsp;&nbsp;<code>groupId</code> - Optional, the string of storeman group ID being queried.\n   * <br>&nbsp;&nbsp;<code>fromBlock</code> - Optional, the number of the earliest block (latest may be given to mean the most recent, block). By default 0.\n   * <br>&nbsp;&nbsp;<code>toBlock</code> - Optional, the number of the latest block (latest may be given to mean the most recent, block). By default latest.\n   * @returns {Promise<Array<any>>} - The total incentive info.\n   * @example\n   * const ret = await sdk.getStoremanStakeTotalIncentive({wkAddr: \"0xe1e90b389ACB31c4C16aC5a2b5BBfFA927823c69\"});\n   * console.log(ret);\n   * // [{\"wkAddr\":\"0xe1e90b389ACB31c4C16aC5a2b5BBfFA927823c69\",\"amount\":\"0\",\"from\":\"0x0F02ac5D6015521b4fC33eE45Dce87870489781b\",\"timestamp\":1602319385},{\"wkAddr\":\"0x2bbCf2f1F8F0BB3dC2E68dEcc292836E91f1BDF1\",\"amount\":\"14444518831464769629339\",\"from\":\"0x0F02ac5D6015521b4fC33eE45Dce87870489781b\",\"timestamp\":1650425785}]\n   */\n  public async getStoremanStakeTotalIncentive(option: any): Promise<Array<any>> {\n    return await this._request('getStoremanStakeTotalIncentive', { ...(option || {}) });\n  }\n\n  /**\n   * Get the delegator info on certain storeman.\n   * @since 1.1.0\n   * @group CrossChainV2\n   * @param {any} option - Object:\n   * <br>&nbsp;&nbsp;<code>address</code> - Optional, the array of delegator's address being queried.\n   * <br>&nbsp;&nbsp;<code>wkAddr</code> - Optional, the array of storeman work address being queried.\n   * @returns {Promise<Array<any>>} - The total incentive info.\n   * @example\n   * const ret = await sdk.getStoremanDelegatorInfo({wkAddr: [\"0xef1Df88aB86Ce47baCB01ccB52818E87DdE08137\"]});\n   * console.log(ret);\n   * // [{\"from\":\"0x3Bc3048da78D305613482ef4199015d899bb4A01\",\"wkAddr\":\"0xef1Df88aB86Ce47baCB01ccB52818E87DdE08137\",\"deposit\":\"100000000000000000000\",\"incentive\":\"2091483709531610240\",\"groupId\":\"0x000000000000000000000000000000000000000000746573746e65745f303836\",\"wkStake\":{\"deposit\":\"1889000000000000000000000\",\"delegateDeposit\":\"136232000000000000000000\",\"partnerDeposit\":\"10001000000000000000000\"},\"chain1\":[2153201998,\"WAN\",\"Wanchain\",5718350],\"chain2\":[2147483708,\"ETH\",\"Ethereum\",60],\"quited\":true,\"canDelegateOut\":false,\"canDelegateClaim\":true}]\n   */\n  public async getStoremanDelegatorInfo(option: any): Promise<Array<any>> {\n    return await this._request('getStoremanDelegatorInfo', { ...(option || {}) });\n  }\n\n  /**\n   * Get the delegator total incentive info.\n   * @since 1.1.0\n   * @group CrossChainV2\n   * @param {any} option - Object:\n   * <br>&nbsp;&nbsp;<code>address</code> - The array of storeman from address being queried.\n   * <br>&nbsp;&nbsp;<code>wkAddr</code> - The string of storeman work address being queried.\n   * <br>&nbsp;&nbsp;<code>fromBlock</code> - Optional, the number of the earliest block (latest may be given to mean the most recent, block). By default `0`.\n   * <br>&nbsp;&nbsp;<code>toBlock</code> - Optional, the number of the latest block (latest may be given to mean the most recent, block). By default `latest`.\n   * @returns {Promise<Array<any>>} - The total incentive info.\n   * @example\n   * const ret = await sdk.getStoremanDelegatorTotalIncentive({\"wkAddr\":\"0x5c770cbf582d770b93ca90adad7e6bd33fabc44c\"});\n   * console.log(ret);\n   * // [\n   * //   {\n   * //     \"wkAddr\": \"0x5c770cbf582d770b93ca90adad7e6bd33fabc44c\",\n   * //     \"amount\": \"2070283666843429698\",\n   * //     \"from\": \"0x9930893f7c5febcd48b61dc8987e3e9fcc5ad0c9\",\n   * //     \"timestamp\": 1602323725\n   * //   },\n   * //   ... ...\n   * // ]\n   */\n  public async getStoremanDelegatorTotalIncentive(option: any): Promise<Array<any>> {\n    return await this._request('getStoremanDelegatorTotalIncentive', { ...(option || {}) });\n  }\n\n  /**\n   * Get the gpk slash info of certain storeman.\n   * @since 1.1.0\n   * @group CrossChainV2\n   * @param {any} option - Object:\n   * <br>&nbsp;&nbsp;<code>wkAddr</code> - The array of storeman work address being queried.\n   * <br>&nbsp;&nbsp;<code>groupId</code> - The string of storeman group ID being queried.\n   * <br>&nbsp;&nbsp;<code>fromBlock</code> - Optional, the number of the earliest block (latest may be given to mean the most recent, block). By default 0.\n   * <br>&nbsp;&nbsp;<code>toBlock</code> - Optional, the number of the latest block (latest may be given to mean the most recent, block). By default latest.\n   * @returns {Promise<Array<any>>} - The gpk slash info.\n   * @example\n   * const ret = await sdk.getStoremanGpkSlashInfo({\"wkAddr\":[\"0x2EBE3b8D6019AFb1ee724F56081D91b803e8553f\"]});\n   * console.log(ret);\n   * // [\n   * //   {\n   * //     \"groupId\": \"0x000000000000000000000000000000000000000000000041726965735f303031\",\n   * //     \"slashType\": \"1\",\n   * //     \"slashed\": \"0x2ebe3b8d6019afb1ee724f56081d91b803e8553f\",\n   * //     \"partner\": \"0x0000000000000000000000000000000000000000\",\n   * //     \"round\": \"0\",\n   * //     \"curveIndex\": \"0\",\n   * //     \"timestamp\": 1602904015\n   * //   }\n   * // ]\n   */\n  public async getStoremanGpkSlashInfo(option: any): Promise<Array<any>> {\n    return await this._request('getStoremanGpkSlashInfo', { ...(option || {}) });\n  }\n\n  /**\n   * Get the sign slash info of certain storeman.\n   * @since 1.1.0\n   * @group CrossChainV2\n   * @param {any} option - Object:\n   * <br>&nbsp;&nbsp;<code>wkAddr</code> - The array of storeman work address being queried.\n   * <br>&nbsp;&nbsp;<code>groupId</code> - The string of storeman group ID being queried.\n   * <br>&nbsp;&nbsp;<code>fromBlock</code> - Optional, the number of the earliest block (latest may be given to mean the most recent, block). By default 0.\n   * <br>&nbsp;&nbsp;<code>toBlock</code> - Optional, the number of the latest block (latest may be given to mean the most recent, block). By default latest.\n   * @returns {Promise<Array<any>>} - The sign slash info.\n   * @example\n   * const ret = await sdk.getStoremanSignSlashInfo({groupId:\"0x000000000000000000000000000000000000000000746573746e65745f303032\", \"wkAddr\":[\"0x5793e629c061e7fd642ab6a1b4d552cec0e2d606\"]});\n   * console.log(ret);\n   * // [\n   * //   {\n   * //     \"groupId\": \"0x000000000000000000000000000000000000000000000041726965735f303031\",\n   * //     \"slashType\": \"1\",\n   * //     \"slashed\": \"0x2ebe3b8d6019afb1ee724f56081d91b803e8553f\",\n   * //     \"partner\": \"0x0000000000000000000000000000000000000000\",\n   * //     \"round\": \"0\",\n   * //     \"curveIndex\": \"0\",\n   * //     \"timestamp\": 1602904015\n   * //   }\n   * // ]\n   */\n  public async getStoremanSignSlashInfo(option: any): Promise<Array<any>> {\n    return await this._request('getStoremanSignSlashInfo', { ...(option || {}) });\n  }\n\n  /**\n   * Get the info of all register tokenPairs, like fromChainID, toChainID, tokenAddress.\n   * @since 1.1.0\n   * @group TokensV2\n   * @param {any} [option] - Optional:\n   * <br>&nbsp;&nbsp;<code>chainIds</code> - Optional, the array of two chain IDs of cross chain pair.\n   * <br>&nbsp;&nbsp;<code>tags</code> - Optional, the array of tag of cross chain pair, should be in [<code>\"desktop\"</code>, <code>\"bridge\"</code>, <code>\"bridgeBeta\"</code>].\n   * <br>&nbsp;&nbsp;<code>isAllTokenPairs</code> - Optional, the boolean flag of cross chain pair, using true to return all token pairs, include not yet online token pairs.\n   * @returns {Promise<Array<any>>} - The token pairs.\n   * @example\n   * const ret = await sdk.getSupportedChainInfo();\n   * console.log(ret);\n   * // [\n   * //   {\n   * //     \"id\": \"1\",\n   * //     \"ancestorChainID\": \"2147483708\",\n   * //     \"fromChainID\": \"2147483708\",\n   * //     \"toChainID\": \"2153201998\",\n   * //     \"ancestorAccount\": \"0x0000000000000000000000000000000000000000\",\n   * //     \"fromAccount\": \"0x0000000000000000000000000000000000000000\",\n   * //     \"toAccount\": \"0x48344649b9611a891987b2db33faada3ac1d05ec\",\n   * //     \"ancestorName\": \"ethereum\",\n   * //     \"ancestorSymbol\": \"ETH\",\n   * //     \"ancestorDecimals\": \"18\",\n   * //     \"fromName\": \"ethereum\",\n   * //     \"fromSymbol\": \"ETH\",\n   * //     \"fromDecimals\": \"18\",\n   * //     \"name\": \"wanETH@wanchain\",\n   * //     \"symbol\": \"wanETH\",\n   * //     \"decimals\": \"18\",\n   * //     \"fromAccountType\": \"Erc20\",\n   * //     \"toAccountType\": \"Erc20\",\n   * //     \"fromAccountIsLayer2\": false,\n   * //     \"toAccountIsLayer2\": false\n   * //   },\n   * //   ... ...\n   * // ]\n   */\n  public async getTokenPairs(option?: any): Promise<Array<any>> {\n    return await this._request('getTokenPairs', { ...(option || {}) });\n  }\n\n  /**\n   * Get the info of tokenPair of certain tokenPairId, like fromChainID, toChainID, tokenAddress.\n   * @since 1.1.0\n   * @group TokensV2\n   * @param {string} id - The ID of tokenPair being queried.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<any>} - The token pair infomation.\n   * @example\n   * const ret = await sdk.getTokenPairInfo(\"1\"));\n   * console.log(ret);\n   * // {\n   * //   id: '1',\n   * //   ancestorChainID: '2147483708',\n   * //   fromChainID: '2147483708',\n   * //   toChainID: '2153201998',\n   * //   ancestorAccount: '0x0000000000000000000000000000000000000000',\n   * //   fromAccount: '0x0000000000000000000000000000000000000000',\n   * //   toAccount: '0x48344649b9611a891987b2db33faada3ac1d05ec',\n   * //   ancestorName: 'ethereum',\n   * //   ancestorSymbol: 'ETH',\n   * //   ancestorDecimals: '18',\n   * //   fromName: 'ethereum',\n   * //   fromSymbol: 'ETH',\n   * //   fromDecimals: '18',\n   * //   name: 'wanETH@wanchain',\n   * //   symbol: 'wanETH',\n   * //   decimals: '18',\n   * //   fromAccountType: 'Erc20',\n   * //   toAccountType: 'Erc20'\n   * // }\n   */\n  public async getTokenPairInfo(id: string, option?: any): Promise<any> {\n    return await this._request('getTokenPairInfo', { id, ...(option || {}) });\n  }\n\n  /**\n   * Get the info of tokenPair Ancestor of certain tokenPairId, like symbol, decimals.\n   * @since 1.1.0\n   * @group TokensV2\n   * @param {string} id - The ID of tokenPair being queried.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<any>} - The info of tokenPair Ancestor.\n   * @example\n   * const ret = await sdk.getTokenPairAncestorInfo(\"1\"));\n   * console.log(ret);\n   * // {\n   * //   account: '0x0000000000000000000000000000000000000000',\n   * //   name: 'ethereum',\n   * //   symbol: 'ETH',\n   * //   decimals: '18',\n   * //   chainId: '2147483708'\n   * // }\n   */\n  public async getTokenPairAncestorInfo(id: string, option?: any): Promise<any> {\n    return await this._request('getTokenPairAncestorInfo', { id, ...(option || {}) });\n  }\n\n  /**\n   * Get all register tokenPairIDs.\n   * @since 1.1.0\n   * @group TokensV2\n   * @param {any} [option] - Optional:\n   * <br>&nbsp;&nbsp;<code>chainIds</code> - Optional, the array of two chain IDs of cross chain pair.\n   * @returns {Promise<Array<string>>} - The token pairs.\n   * @example\n   * const ret = await sdk.getTokenPairIDs();\n   * console.log(ret);\n   * // [ '1',   '2',   '3', ... ]\n   */\n  public async getTokenPairIDs(option?: any): Promise<Array<string>> {\n    return await this._request('getTokenPairIDs', { ...(option || {}) });\n  }\n\n  /**\n   * Get the chainInfo by the chain id which is used as hardened derivation in BIP44.\n   * @since 1.1.0\n   * @group CrossChainV2\n   * @param {any} option - Object:\n   * <br>&nbsp;&nbsp;<code>chainId</code> - The chain id that you want to search, should like <code>\"2153201998\"</code>. Adding it to 2^31 to get the final hardened key index, 0x80000000 + 5718350(chain index) = 0x8057414e.\n   * <br>&nbsp;&nbsp;<code>symbol</code> - The chain symbol that you want to search, should like <code>\"WAN\"</code>.\n   * <br>&nbsp;&nbsp;<code>index</code> - The chain index that you want to search, should like <code>\"5718350\"</code>.\n   * @returns {Promise<Array<string|number>>} - The chain infomation.\n   * @example\n   * const ret = await sdk.getChainConstantInfo({\"chainId\":\"2153201998\"});\n   * console.log(ret);\n   * // [\n   * //   2153201998, // chain ID\n   * //   \"WAN\", // chain symbol\n   * //   \"Wanchain\", // chain name\n   * //   \"5718350\" // chainIndex\n   * // ]\n   */\n  public async getChainConstantInfo(option: any): Promise<Array<string|number>> {\n    return await this._request('getChainConstantInfo', { ...(option || {}) });\n  }\n\n  /**\n   * Get the supported chain info.\n   * @since 1.1.0\n   * @group CrossChainV2\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<Array<any>>} - The supported chain info.\n   * @example\n   * const ret = await sdk.getSupportedChainInfo();\n   * console.log(ret);\n   * // [\n   * //   {\n   * //     chainType: 'WAN',\n   * //     chainID: '2153201998',\n   * //     chainName: 'Wanchain',\n   * //     chainSymbol: 'WAN',\n   * //     chainDecimals: 18,\n   * //     transChainID: '999',\n   * //     crossScAddr: '0x62dE27e16f6f31d9Aa5B02F4599Fc6E21B339e79',\n   * //     multicallAddr: '0xFe3359b5C97191c4E2543dC7aC675d8BD947dE57',\n   * //     chainCoingeckoID: 'wanchain'\n   * //   },\n   * //   ... ...\n   * // ]\n   */\n  public async getSupportedChainInfo(option?: any): Promise<Array<any>> {\n    return await this._request('getSupportedChainInfo', { ...(option || {}) });\n  }\n\n  /**\n   * Get incentive count of all store man during special epochs.\n   * @since 1.1.0\n   * @group CrossChainV2\n   * @param {any} option - Object:\n   * <br>&nbsp;&nbsp;<code>groupId</code> - The string of storeman group ID being queried.\n   * <br>&nbsp;&nbsp;<code>fromEpoch</code> - Optional, the number of start epoch ID being queried.\n   * <br>&nbsp;&nbsp;<code>toEpoch</code> - Optional, the number of end epoch ID being queried.\n   * @returns {Promise<Array<string>>} - The incentive count.\n   * @example\n   * const ret = await sdk.getPrdInctMetric({groupId: \"0x000000000000000000000000000000000000000000000000006465765f323736\"});\n   * console.log(ret);\n   * // [\"4\",\"4\",\"4\", ... ]\n   */\n  public async getPrdInctMetric(option: any): Promise<Array<string>> {\n    return await this._request('getPrdInctMetric', { ...(option || {}) });\n  }\n\n  /**\n   * Get the selected storeman information of the specified index, including wkAddr, PK, enodeId, etc.\n   * @since 1.1.0\n   * @group CrossChainV2\n   * @param {any} option - Object:\n   * <br>&nbsp;&nbsp;<code>groupId</code> - The string of storeman group ID being queried.\n   * <br>&nbsp;&nbsp;<code>index</code> - The number of index being queried.\n   * @returns {Promise<any>} - The selected storeman information.\n   * @example\n   * const ret = await sdk.getSelectedSmInfo({groupId: \"0x000000000000000000000000000000000000000000000000006465765f323736\", index: 0});\n   * console.log(ret);\n   * // {\"wkAddr\":\"0x6f72Ca2ee51b765baEB744dc59734DE68134f7e9\",\"PK\":\"0xcbadd190d961a8ec5b990cc1f2c1f6478cdc1f914aa3d85e86febc9ad8cd939183175e91a2b7fdf7db57ad6c877bf8d149f67a2a31638b35249d949c74157e85\",\"enodeId\":\"0xcb715d7e634dc428beed2ecabf8bc9600cb32a7566866cfeb412b0caf80bfebd03712e75a788e6716f633eaa7defb3fa85079ca9b5573df45ede836c0b38ac8d\"}\n   */\n  public async getSelectedSmInfo(option: any): Promise<any> {\n    return await this._request('getSelectedSmInfo', { ...(option || {}) });\n  }\n\n  /**\n   * Get all the selected storeman.\n   * @since 1.1.0\n   * @group CrossChainV2\n   * @param {any} option - Object:\n   * <br>&nbsp;&nbsp;<code>groupId</code> - The string of storeman group ID being queried.\n   * @returns {Promise<Array<string>>} - The array of all selected storeman information.\n   * @example\n   * const ret = await sdk.getSelectedStoreman({groupId: \"0x000000000000000000000000000000000000000000000000006465765f323736\"});\n   * console.log(ret);\n   * // [\n   * //   \"0x6f72Ca2ee51b765baEB744dc59734DE68134f7e9\",\n   * //   \"0x832141a92c844827f051Dd0cF24c107e76270E54\",\n   * //   \"0xeEA88f80391Ce67016B2aEd38090765c4DA9B6c8\",\n   * //   \"0x12c91Cfbe155f3c57DCbE7ca6AFf09b42d9a216E\",\n   * //   \"0x2fE3653Bc36f45BD3B87cd7C909826a475BD85ee\",\n   * //   \"0x6E901535C85968e8feB951039726B621E9c14899\",\n   * //   \"0xd2a5af5Fda3ba0297B414e13FAb2CFCC611B2f31\",\n   * //   \"0xb99F93d84e10a4967C280F9455415E4E8003A651\",\n   * //   \"0x12EAf2f63F10E00dDa98B26b83b7b5C4719EeF3b\",\n   * //   \"0xc66cc0dEbC9c8dd77ACB05f28A554dbDe79dBA97\",\n   * //   \"0xBF5220c0C8A3Aa8a8535bf680F309Cc9BBA99A86\",\n   * //   \"0xB344B621E1c80c452eee7dCBDB1Ee6071Fe5b4eE\",\n   * //   \"0xb8433591D0D89ba20D62628085fB12Bd177bA7b3\",\n   * //   \"0x77E9AE721c6EfcB22470DB5B6C38d7a979b6F8e7\",\n   * //   \"0xfcB86CAD65bab310A6Dc392626f70486Cbe03f11\",\n   * //   \"0x4E58f4A04B0ee697732b0499B81463e69Cd80474\",\n   * //   \"0xa0C597f71286979F3c246DEAC08e8Cd22Ae0FD6b\",\n   * //   \"0x498A4890297E664DdEcE8296f7cFEA2ec6Db67E8\",\n   * //   \"0x13F5c27b1475a61A5fdEaF4e547D9611417c7375\",\n   * //   \"0x45b8A0A91C3D976AEA513A4dA60bF83B074E24a7\",\n   * //   \"0xC54a5Af242190ff9e3363f0c56e3F40dA4E80720\",\n   * //   \"0x1E83dB0a7D166C288Bc927256eDA7dEba2A06AdB\",\n   * //   \"0xc0cD6e60989060e751Ccb4731AED277fC74877AB\",\n   * //   \"0xc99bd9CB8FB583bE24dFc222fcd7BE755B6306eD\",\n   * //   \"0x39eFB9820eb5792AFB9312d678380Ba92e7E91a4\",\n   * //   \"0xB5A3C69758a5ecbDDa47062358481DF0Fff8a062\",\n   * //   \"0x57FeE9e46D614Db0e6Ef92f84A43d42972B4099C\",\n   * //   \"0xAF76F8d1eEdB8bE7588E601486b66b9933Fc1408\",\n   * //   \"0x0ca7D37367898a2eb2a7B3bD0Bc1e95AA26779b6\"\n   * // ]\n   */\n  public async getSelectedStoreman(option: any): Promise<Array<string>> {\n    return await this._request('getSelectedStoreman', { ...(option || {}) });\n  }\n\n  /**\n   * Get the information delegated to certain storeman.\n   * @since 1.1.0\n   * @group CrossChainV2\n   * @param {any} option - Object:\n   * <br>&nbsp;&nbsp;<code>address</code> - Optional, the array of delegator's address being queried.\n   * <br>&nbsp;&nbsp;<code>wkAddr</code> - The string of storeman work address being queried.\n   * @returns {Promise<any>} - The information delegated to certain storeman.\n   * @example\n   * const ret = await sdk.getSmDelegatorInfo({address:\"0x713668d2a4dfb3bb8265054615cfe83217c07d8b\",wkAddr:\"0x5a82fbfc7d85fed5e30387f1b3df7cc24e282591\"});\n   * console.log(ret);\n   * // {\"sender\":\"0x713668D2a4dfB3Bb8265054615cFe83217c07d8b\",\"deposit\":\"0\",\"incentive\":\"0\",\"quited\":false}\n   */\n  public async getSmDelegatorInfo(option: any): Promise<any> {\n    return await this._request('getSmDelegatorInfo', { ...(option || {}) });\n  }\n\n  /**\n   * Get the reward ratio.\n   * @since 1.1.0\n   * @group CrossChainV2\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<string>} - The reward ratio.\n   * @example\n   * const ret = await sdk.getRewardRatio();\n   * console.log(ret);\n   * // \"0.1000\"\n   */\n  public async getRewardRatio(option?: any): Promise<string> {\n    return await this._request('getRewardRatio', { ...(option || {}) });\n  }\n\n  /**\n   * Get result of contract via multicall.\n   * @since 1.1.0\n   * @group CrossChainV2\n   * @param {string} chainType - The chain being queried, should be <code>\"ETH\"</code>,  <code>\"WAN\"</code>, and other EVM chains.\n   * @param {Array<any>} calls - The array of call data.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<any>} - The code at a specific address.\n   * @example\n   * const ret = await sdk.multiCall(\"XDC\", [{\"target\":\"0xd4b5f10d61916bd6e0860144a91ac658de8a1437\",\"call\":[\"symbol()(string)\"],\"returns\":[[\"token_symbol\"]]}]);\n   * console.log(ret);\n   * // {\"results\":{\"blockNumber\":{\"_hex\":\"0x04c358f8\"},\"original\":{\"token_symbol\":\"USDT\"},\"transformed\":{\"token_symbol\":\"USDT\"}},\"keyToArgMap\":{}}\n   */\n  public async multiCall(chainType: string, calls: Array<any>, option?: any): Promise<any> {\n    return await this._request('multiCall', { chainType, calls, ...(option || {}) });\n  }\n\n  /**\n   * Get result of contract via multicall2.\n   * @since 1.1.0\n   * @group CrossChainV2\n   * @param {string} chainType - The chain being queried, should be <code>\"ETH\"</code>,  <code>\"WAN\"</code>, and other EVM chains.\n   * @param {Array<any>} calls - The array of call data.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<any>} - The code at a specific address.\n   * @example\n   * var targetInfo = [{\n        address:\"0xd4b5f10d61916bd6e0860144a91ac658de8a1437\"\n        ,funcName:\"symbol\"\n        ,inputTypes:[]\n        ,outputTypes:[{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}]\n        ,outputNames:[`token_symbol`]\n        ,args:[]\n    }]\n   * const ret = await sdk.multiCall2(\"XDC\", targetInfo);\n   * console.log(ret);\n   * // [{\"result\":[{\"token_symbol\":\"USDT\"}],\"status\":[true]}]\n   */\n  public async multiCall2(chainType: string, calls: Array<any>, option?: any): Promise<any> {\n    return await this._request('multiCall2', { chainType, calls, ...(option || {}) });\n  }\n\n  /**\n   * Get the code at a specific address.\n   * @since 1.1.0\n   * @group CrossChainV2\n   * @param {string} chainType - The chain being queried, should be <code>\"ETH\"</code>,  <code>\"WAN\"</code>, and other EVM chains.\n   * @param {string} address - The account being queried.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<string>} - The code at a specific address.\n   * @example\n   * const ret = await sdk.getCode(\"WAN\", \"0x5543C66182209CDB5d3763a25990781853461610\");\n   * console.log(ret);\n   * // \"0x608060...\"\n   */\n  public async getCode(chainType: string, address: string, option?: any): Promise<string> {\n    return await this._request('getCode', { chainType, address, ...(option || {}) });\n  }\n\n  /**\n   * Executes transaction network fee.\n   * @since 1.1.0\n   * @group PrivateTrans\n   * @param {string} chainType - The chain being queried. Currently supports <code>'BTC'</code>.\n   * @param {string} feeType - The type of fee that you want to search, should be <code>\"lock\"</code> or <code>\"release\"</code>.\n   * @param {any} [option] - Optional:\n   * <br>&nbsp;&nbsp;<code>target</code> - The numeric of confirmation target in blocks (1 - 1008), use 1 as default.\n   * <br>&nbsp;&nbsp;<code>mode</code> - The string of fee estimate mode, use \"CONSERVATIVE\" as default.\n   * <br>&nbsp;&nbsp;<code>feeRate</code> - The numeric of estimate fee rate.\n   * @returns {Promise<string|number>} - The network fee.\n   * @example\n   * const ret = await sdk.estimateNetworkFee(\"BTC\", \"lock\", {feeRate: 34});\n   * console.log(ret);\n   * // \"16864\"\n   */\n  public async estimateNetworkFee(chainType: string, feeType: 'lock'|'release', option?: any): Promise<string|number> {\n    return await this._request('estimateNetworkFee', { chainType, feeType, ...(option || {}) });\n  }\n\n  /**\n   * Get the current latest ledger version.\n   * @since 1.1.0\n   * @group Blocks\n   * @param {string} chainType - The chain being queried. Currently supports <code>\"XRP\"</code>.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<string>} - The current latest ledger version.\n   * @example\n   * const ret = await sdk.getLedgerVersion(\"XRP\");\n   * console.log(ret);\n   * // 15905577\n   */\n  public async getLedgerVersion(chainType: string, option?: any): Promise<string|number> {\n    return await this._request('getLedgerVersion', { chainType, ...(option || {}) });\n  }\n\n  /**\n   * Get the ledger information about a ledger by ledger version or hash on certain chain.\n   * @since 1.1.0\n   * @group Blocks\n   * @param {string} chainType - The chain being queried. Currently supports <code>\"XRP\"</code>.\n   * @param {any} option - Object:\n   * <br>&nbsp;&nbsp;<code>ledgerHash</code> - Optional, the ledger hash you want to search.\n   * <br>&nbsp;&nbsp;<code>ledgerVersion</code> - Optional, the ledger version you want to search.\n   * <br>&nbsp;&nbsp;<code>version</code> - The result format version you want to search.\n   * @returns {Promise<any>} - The ledger information.\n   * @example\n   * const ret = await sdk.getLedger(\"XRP\", {ledgerHash: \"8319E0F8538525840EBE2E709A48659BB2A4783C9996ECDE93DE2E387C6F5183\"});\n   * // const ret = await sdk.getLedger(\"XRP\", {ledgerVersion: 15905577});\n   * console.log(ret);\n   * // {\n   * //   \"stateHash\": \"0A13E07F0C26450C5EED0F85531F0A62890488EA00459E1ADB19C7B7D41FF42B\",\n   * //   \"closeTime\": \"2026-03-23T03:41:00.000Z\",\n   * //   \"closeTimeResolution\": 10,\n   * //   \"closeFlags\": 0,\n   * //   \"ledgerHash\": \"8319E0F8538525840EBE2E709A48659BB2A4783C9996ECDE93DE2E387C6F5183\",\n   * //   \"ledgerVersion\": 15905577,\n   * //   \"parentLedgerHash\": \"3CF57BFA1831A125541AA26C8D2040D53906976549382D8A8B6A47CDBE91E85A\",\n   * //   \"parentCloseTime\": \"2026-03-23T03:40:52.000Z\",\n   * //   \"totalDrops\": \"99999908454544992\",\n   * //   \"transactionHash\": \"C11B3DBC37B45FACF573F500CB09B1FA11A73DBFB223866A7780326633D08CC8\",\n   * //   \"transactionHashes\": [\n   * //     \"CA0CE976EABDA3C01F5F1963CB3D5539678A8F47C709C4093198C18A9E550DC3\",\n   * //     \"DB37AAC914910BC00B2AF2DF810FD7477012A0B1960F9D71A66F3811D56CEBA9\"\n   * //   ]\n   * // }\n   */\n  public async getLedger(chainType: string, option: any): Promise<any> {\n    return await this._request('getLedger', { chainType, ...(option || {}) });\n  }\n\n  /**\n   * Get server information.\n   * @since 1.1.0\n   * @group Blocks\n   * @param {string} chainType - The chain being queried. Currently supports <code>\"XRP\"</code>.\n   * @param {any} [option] - Optional:\n   * <br>&nbsp;&nbsp;<code>version</code> - The result format version you want to search.\n   * @returns {Promise<any>} - The server information.\n   * @example\n   * const ret = await sdk.getServerInfo('XRP', {version: 'v2'});\n   * console.log(ret);\n   * // {\n   * //   \"build_version\": \"3.1.2\",\n   * //   \"complete_ledgers\": \"13073099-15905720\",\n   * //   \"hostid\": \"MUFF\",\n   * //   \"initial_sync_duration_us\": \"179168513\",\n   * //   \"io_latency_ms\": 1,\n   * //   \"jq_trans_overflow\": \"0\",\n   * //   \"last_close\": {\n   * //     \"converge_time_s\": 2,\n   * //     \"proposers\": 6\n   * //   },\n   * //   \"load_factor\": 1,\n   * //   \"network_id\": 1,\n   * //   \"peer_disconnects\": \"80474\",\n   * //   \"peer_disconnects_resources\": \"1590\",\n   * //   \"peers\": 108,\n   * //   \"ports\": [\n   * //     {\n   * //       \"port\": \"2459\",\n   * //       \"protocol\": [\n   * //         \"peer\"\n   * //       ]\n   * //     },\n   * //     {\n   * //       \"port\": \"50051\",\n   * //       \"protocol\": [\n   * //         \"grpc\"\n   * //       ]\n   * //     }\n   * //   ],\n   * //   \"pubkey_node\": \"n94fvDin1mzPPqyK6cm6DWKpvYzVavSwvCRijCWwYiKkmaADHNED\",\n   * //   \"server_state\": \"full\",\n   * //   \"server_state_duration_us\": \"873761238759\",\n   * //   \"state_accounting\": {\n   * //     \"connected\": {\n   * //       \"duration_us\": \"172084963\",\n   * //       \"transitions\": \"2\"\n   * //     },\n   * //     \"disconnected\": {\n   * //       \"duration_us\": \"1079076\",\n   * //       \"transitions\": \"2\"\n   * //     },\n   * //     \"full\": {\n   * //       \"duration_us\": \"873761238759\",\n   * //       \"transitions\": \"1\"\n   * //     },\n   * //     \"syncing\": {\n   * //       \"duration_us\": \"6004467\",\n   * //       \"transitions\": \"1\"\n   * //     },\n   * //     \"tracking\": {\n   * //       \"duration_us\": \"5\",\n   * //       \"transitions\": \"1\"\n   * //     }\n   * //   },\n   * //   \"time\": \"2026-Mar-23 03:48:31.951954 UTC\",\n   * //   \"uptime\": 873940,\n   * //   \"validated_ledger\": {\n   * //     \"age\": 1,\n   * //     \"base_fee_xrp\": 0.00001,\n   * //     \"hash\": \"2DFE71CED41F59BADF266335EB50D06B00739E91A2E0B9F65D3FBEBE81F05CEE\",\n   * //     \"reserve_base_xrp\": 1,\n   * //     \"reserve_inc_xrp\": 0.2,\n   * //     \"seq\": 15905720\n   * //   },\n   * //   \"validation_quorum\": 5\n   * // }\n   */\n  public async getServerInfo(chainType: string, option?: any): Promise<any> {\n    return await this._request('getServerInfo', { chainType, ...(option || {}) });\n  }\n\n  /**\n   * Get cross chain fees.\n   * @since 1.1.0\n   * @group CrossChain\n   * @deprecated Use {@link estimateCrossChainNetworkFee} instead.\n   * @param {string} chainType - The chain being queried. Currently supports <code>\"XRP\"</code>.\n   * @param {[number|string, number|string]} chainIds - Array of chain pair IDs about cross chain.\n   * @param {any} option - Object:\n   * <br>&nbsp;&nbsp;<code>tokenPairID</code> - The ID of token pair you want to search.\n   * <br>&nbsp;&nbsp;<code>version</code> - The result format version you want to search.\n   * @returns {Promise<any>} - The cross chain fees.\n   * @example\n   * const ret = await sdk.getCrossChainFees(\"WAN\", [\"2153201998\", \"2147483708\"], {tokenPairID:\"1\", version: \"v2\"});\n   * console.log(ret);\n   * // {\"contractFee\":\"8583910607716746438\",\"agentFee\":\"0\"}\n   */\n  public async getCrossChainFees(chainType: string, chainIds: [number|string, number|string], option: any): Promise<any> {\n    return await this._request('getCrossChainFees', { chainType, chainIds, ...(option || {}) });\n  }\n\n  /**\n   * Get minimum cross-chain amount.\n   * @since 1.1.0\n   * @group CrossChain\n   * @param {string} crossChain - The destination chainType that you want to search.\n   * @param {string} symbol - The symbol that you want to search.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<any>} - The minimum cross-chain amount.\n   * @example\n   * const ret = await sdk.getMinCrossChainAmount(\"ETH\", [\"BTC\"]);\n   * console.log(ret);\n   * // {\"BTC\":\"100\"}\n   */\n  public async getMinCrossChainAmount(crossChain: string, symbol: string, option?: any): Promise<any> {\n    return await this._request('getMinCrossChainAmount', { crossChain, symbol, ...(option || {}) });\n  }\n\n  /**\n   * Get cross chain operation fee.\n   * @since 1.1.0\n   * @group CrossChain\n   * @param {string} chainType - The chain being queried, should be <code>\"ETH\"</code>,  <code>\"WAN\"</code>, and other chains.\n   * @param {string} targetChainType - The target chain being queried, should be <code>\"ETH\"</code>,  <code>\"WAN\"</code>, and other chains.\n   * @param {any} option - Object:\n   * <br>&nbsp;&nbsp;<code>tokenPairID</code> - The ID of token pair you want to search.\n   * <br>&nbsp;&nbsp;<code>address</code> - The array of address being queried.\n   * <br>&nbsp;&nbsp;<code>bridge</code> - The supported third-party bridge. Currently supports 'CCTPV1' and 'CCTPV2'.\n   * <br>&nbsp;&nbsp;<code>includeAtaCreation</code> - Include rent fee for creating Associated Token Account on Solana or not.\n   * @returns {Promise<any>} - The operation fee.\n   * @example\n   * const ret = await sdk.estimateCrossChainOperationFee(\"ARETH\", \"OETH\", {bridge: \"CCTPV2\", tokenPairID: \"...\", address:[\"0x1...\",\"0x2...\"]}));\n   * console.log(ret);\n   * // { value: '0.00013', isPercent: true, forwardFee: '200828', discountPercent: '1' }\n   */\n  public async estimateCrossChainOperationFee(chainType: string, targetChainType: string, option: any): Promise<any> {\n    return await this._request('estimateCrossChainOperationFee', { chainType, targetChainType, ...(option || {}) });\n  }\n\n  /**\n   * Get cross chain network fee.\n   * @since 1.1.0\n   * @group CrossChain\n   * @param {string} chainType - The chain being queried, should be <code>\"ETH\"</code>,  <code>\"WAN\"</code>, and other chains.\n   * @param {string} targetChainType - The target chain being queried, should be <code>\"ETH\"</code>,  <code>\"WAN\"</code>, and other chains.\n   * @param {any} option - Object:\n   * <br>&nbsp;&nbsp;<code>tokenPairID</code> - The ID of token pair you want to search.\n   * <br>&nbsp;&nbsp;<code>address</code> - Optional, the array of address being queried.\n   * <br>&nbsp;&nbsp;<code>bridge</code> - Optional, the supported third-party bridge. Currently supports 'CCTPV1' and 'CCTPV2'.\n   * @returns {Promise<any>} - The network fee.\n   * @example\n   * const ret = await sdk.estimateCrossChainNetworkFee(\"ARETH\", \"OETH\", {bridge: \"CCTPV2\", tokenPairID: \"...\", address:[\"0x1...\",\"0x2...\"]});\n   * console.log(ret);\n   * // { value: '69074274557747', isPercent: false, discountPercent: '1' }\n   */\n  public async estimateCrossChainNetworkFee(chainType: string, targetChainType: string, option: any): Promise<any> {\n    return await this._request('estimateCrossChainNetworkFee', { chainType, targetChainType, ...(option || {}) });\n  }\n\n  /**\n   * Get the latest block information on certain chain.\n   * @since 1.1.0\n   * @group Blocks\n   * @param {string} chainType - The chain being queried, should be <code>\"ADA\"</code>,  and other chains.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<any>} - The latest block information.\n   * @example\n   * const ret = await sdk.getLatestBlock(\"ADA\");\n   * console.log(ret);\n   * // {\n   * //   \"time\": 1641956199,\n   * //   \"height\": 3230335,\n   * //   \"hash\": \"8c5789337cdd540fed8fc57f07d93740100af974f471a58ccb446c0fa76a8d56\",\n   * //   \"slot\": 47586983,\n   * //   \"epoch\": 180,\n   * //   \"epoch_slot\": 196583,\n   * //   \"slot_leader\": \"pool10k7t5kp6etvj95ma0q3c8tugx05dlfwly3lcdfgke4gjkhdx0ej\",\n   * //   \"size\": 16699,\n   * //   \"tx_count\": 7,\n   * //   \"output\": \"38941298302128\",\n   * //   \"fees\": \"2110816\",\n   * //   \"block_vrf\": \"vrf_vk1yl2d9rfaeht0m9l8x0y9a3j9rapepz04yr4jlxrr2aw2ulpsyahs5mv4cx\",\n   * //   \"previous_block\": \"f0b44052ff43386d10b8e81303961a96f8bd79e2362842619700d536964cf5d4\",\n   * //   \"next_block\": null,\n   * //   \"confirmations\": 0\n   * // }\n   */\n  public async getLatestBlock(chainType: string, option?: any): Promise<any> {\n    return await this._request('getLatestBlock', { chainType, ...(option || {}) });\n  }\n\n  /**\n   * Get epoch parameters about a epoch by block ID on certain chain.\n   * @since 1.1.0\n   * @group POS\n   * @param {string} chainType - The chain being queried. Currently supports <code>\"ADA\"</code>.\n   * @param {any} [option] - Optional:\n   * <br>&nbsp;&nbsp;<code>epochID</code> - The ID of epoch you want to search.\n   * @returns {Promise<any>} - The epoch parameters.\n   * @example\n   * const ret = await sdk.getEpochParameters(\"ADA\", {\"epochID\":180});\n   * console.log(ret);\n   * // {\n   * //   \"min_fee_a\": \"44\",\n   * //   \"min_fee_b\": \"155381\",\n   * //   \"min_utxo\": \"1000000\",\n   * //   \"coins_per_utxo_word\": \"8620\",\n   * //   \"coins_per_utxo_byte\": \"4310\",\n   * //   \"price_mem\": \"\\\"577/10000\\\"\",\n   * //   \"price_step\": \"\\\"721/10000000\\\"\",\n   * //   \"collateral_percent\": \"150\",\n   * //   \"max_collateral_inputs\": \"3\",\n   * //   \"pool_deposit\": \"500000000\",\n   * //   \"key_deposit\": \"2000000\",\n   * //   \"max_tx_size\": \"16384\",\n   * //   \"max_val_size\": \"5000\",\n   * //   \"min_fee_ref_script_cost_per_byte\": \"15\",\n   * //   \"minFeeRefScriptCostPerByte\": \"15\"\n   * // }\n   */\n  public async getEpochParameters(chainType: string, option?: any): Promise<any> {\n    return await this._request('getEpochParameters', { chainType, ...(option || {}) });\n  }\n\n  /**\n   * Get epoch mofrl parameters about a epoch by block ID on certain chain.\n   * @since 1.1.0\n   * @group POS\n   * @param {string} chainType - The chain being queried. Currently supports <code>\"ADA\"</code>.\n   * @param {any} [option] - Optional:\n   * <br>&nbsp;&nbsp;<code>epochID</code> - The ID of epoch you want to search.\n   * @returns {Promise<any>} - The epoch mofrl parameters.\n   * @example\n   * const ret = await sdk.getCostModelParameters(\"ADA\", {\"epochID\":180});\n   * console.log(ret);\n   * // {\"minFeeCoefficient\":44,\"minFeeConstant\":155381,\"maxBlockBodySize\":90112,\"maxBlockHeaderSize\":1100,\"maxTxSize\":16384,\"stakeKeyDeposit\":2000000,\"poolDeposit\":500000000,\"poolRetirementEpochBound\":18,\"desiredNumberOfPools\":500,\"poolInfluence\":\"3/10\",\"monetaryExpansion\":\"3/1000\",\"treasuryExpansion\":\"1/5\",\"protocolVersion\":{\"major\":10,\"minor\":0},\"minPoolCost\":170000000,\"coinsPerUtxoByte\":4310,\"prices\":{\"memory\":\"577/10000\",\"steps\":\"721/10000000\"},\"maxExecutionUnitsPerTransaction\":{\"memory\":16500000,\"steps\":10000000000},\"maxExecutionUnitsPerBlock\":{\"memory\":72000000,\"steps\":20000000000},\"maxValueSize\":5000,\"collateralPercentage\":150,\"maxCollateralInputs\":3,\"range\":25600,\"minFeeRefScriptCostPerByte\":15,\"base\":15,\"multiplier\":1.2,\"costModels\":{\"PlutusV1\":{\"addInteger-cpu-arguments-intercept\":100788,\"addInteger-cpu-arguments-slope\":420,\"addInteger-memory-arguments-intercept\":1,\"addInteger-memory-arguments-slope\":1,\"appendByteString-cpu-arguments-intercept\":1000,\"appendByteString-cpu-arguments-slope\":173,\"appendByteString-memory-arguments-intercept\":0,\"appendByteString-memory-arguments-slope\":1,\"appendString-cpu-arguments-intercept\":1000,\"appendString-cpu-arguments-slope\":59957,\"appendString-memory-arguments-intercept\":4,\"appendString-memory-arguments-slope\":1,\"bData-cpu-arguments\":11183,\"bData-memory-arguments\":32,\"blake2b_256-cpu-arguments-intercept\":201305,\"blake2b_256-cpu-arguments-slope\":8356,\"blake2b_256-memory-arguments\":4,\"cekApplyCost-exBudgetCPU\":16000,\"cekApplyCost-exBudgetMemory\":100,\"cekBuiltinCost-exBudgetCPU\":16000,\"cekBuiltinCost-exBudgetMemory\":100,\"cekConstCost-exBudgetCPU\":16000,\"cekConstCost-exBudgetMemory\":100,\"cekDelayCost-exBudgetCPU\":16000,\"cekDelayCost-exBudgetMemory\":100,\"cekForceCost-exBudgetCPU\":16000,\"cekForceCost-exBudgetMemory\":100,\"cekLamCost-exBudgetCPU\":16000,\"cekLamCost-exBudgetMemory\":100,\"cekStartupCost-exBudgetCPU\":100,\"cekStartupCost-exBudgetMemory\":100,\"cekVarCost-exBudgetCPU\":16000,\"cekVarCost-exBudgetMemory\":100,\"chooseData-cpu-arguments\":94375,\"chooseData-memory-arguments\":32,\"chooseList-cpu-arguments\":132994,\"chooseList-memory-arguments\":32,\"chooseUnit-cpu-arguments\":61462,\"chooseUnit-memory-arguments\":4,\"consByteString-cpu-arguments-intercept\":72010,\"consByteString-cpu-arguments-slope\":178,\"consByteString-memory-arguments-intercept\":0,\"consByteString-memory-arguments-slope\":1,\"constrData-cpu-arguments\":22151,\"constrData-memory-arguments\":32,\"decodeUtf8-cpu-arguments-intercept\":91189,\"decodeUtf8-cpu-arguments-slope\":769,\"decodeUtf8-memory-arguments-intercept\":4,\"decodeUtf8-memory-arguments-slope\":2,\"divideInteger-cpu-arguments-constant\":85848,\"divideInteger-cpu-arguments-model-arguments-intercept\":228465,\"divideInteger-cpu-arguments-model-arguments-slope\":122,\"divideInteger-memory-arguments-intercept\":0,\"divideInteger-memory-arguments-minimum\":1,\"divideInteger-memory-arguments-slope\":1,\"encodeUtf8-cpu-arguments-intercept\":1000,\"encodeUtf8-cpu-arguments-slope\":42921,\"encodeUtf8-memory-arguments-intercept\":4,\"encodeUtf8-memory-arguments-slope\":2,\"equalsByteString-cpu-arguments-constant\":24548,\"equalsByteString-cpu-arguments-intercept\":29498,\"equalsByteString-cpu-arguments-slope\":38,\"equalsByteString-memory-arguments\":1,\"equalsData-cpu-arguments-intercept\":898148,\"equalsData-cpu-arguments-slope\":27279,\"equalsData-memory-arguments\":1,\"equalsInteger-cpu-arguments-intercept\":51775,\"equalsInteger-cpu-arguments-slope\":558,\"equalsInteger-memory-arguments\":1,\"equalsString-cpu-arguments-constant\":39184,\"equalsString-cpu-arguments-intercept\":1000,\"equalsString-cpu-arguments-slope\":60594,\"equalsString-memory-arguments\":1,\"fstPair-cpu-arguments\":141895,\"fstPair-memory-arguments\":32,\"headList-cpu-arguments\":83150,\"headList-memory-arguments\":32,\"iData-cpu-arguments\":15299,\"iData-memory-arguments\":32,\"ifThenElse-cpu-arguments\":76049,\"ifThenElse-memory-arguments\":1,\"indexByteString-cpu-arguments\":13169,\"indexByteString-memory-arguments\":4,\"lengthOfByteString-cpu-arguments\":22100,\"lengthOfByteString-memory-arguments\":10,\"lessThanByteString-cpu-arguments-intercept\":28999,\"lessThanByteString-cpu-arguments-slope\":74,\"lessThanByteString-memory-arguments\":1,\"lessThanEqualsByteString-cpu-arguments-intercept\":28999,\"lessThanEqualsByteString-cpu-arguments-slope\":74,\"lessThanEqualsByteString-memory-arguments\":1,\"lessThanEqualsInteger-cpu-arguments-intercept\":43285,\"lessThanEqualsInteger-cpu-arguments-slope\":552,\"lessThanEqualsInteger-memory-arguments\":1,\"lessThanInteger-cpu-arguments-intercept\":44749,\"lessThanInteger-cpu-arguments-slope\":541,\"lessThanInteger-memory-arguments\":1,\"listData-cpu-arguments\":33852,\"listData-memory-arguments\":32,\"mapData-cpu-arguments\":68246,\"mapData-memory-arguments\":32,\"mkCons-cpu-arguments\":72362,\"mkCons-memory-arguments\":32,\"mkNilData-cpu-arguments\":7243,\"mkNilData-memory-arguments\":32,\"mkNilPairData-cpu-arguments\":7391,\"mkNilPairData-memory-arguments\":32,\"mkPairData-cpu-arguments\":11546,\"mkPairData-memory-arguments\":32,\"modInteger-cpu-arguments-constant\":85848,\"modInteger-cpu-arguments-model-arguments-intercept\":228465,\"modInteger-cpu-arguments-model-arguments-slope\":122,\"modInteger-memory-arguments-intercept\":0,\"modInteger-memory-arguments-minimum\":1,\"modInteger-memory-arguments-slope\":1,\"multiplyInteger-cpu-arguments-intercept\":90434,\"multiplyInteger-cpu-arguments-slope\":519,\"multiplyInteger-memory-arguments-intercept\":0,\"multiplyInteger-memory-arguments-slope\":1,\"nullList-cpu-arguments\":74433,\"nullList-memory-arguments\":32,\"quotientInteger-cpu-arguments-constant\":85848,\"quotientInteger-cpu-arguments-model-arguments-intercept\":228465,\"quotientInteger-cpu-arguments-model-arguments-slope\":122,\"quotientInteger-memory-arguments-intercept\":0,\"quotientInteger-memory-arguments-minimum\":1,\"quotientInteger-memory-arguments-slope\":1,\"remainderInteger-cpu-arguments-constant\":85848,\"remainderInteger-cpu-arguments-model-arguments-intercept\":228465,\"remainderInteger-cpu-arguments-model-arguments-slope\":122,\"remainderInteger-memory-arguments-intercept\":0,\"remainderInteger-memory-arguments-minimum\":1,\"remainderInteger-memory-arguments-slope\":1,\"sha2_256-cpu-arguments-intercept\":270652,\"sha2_256-cpu-arguments-slope\":22588,\"sha2_256-memory-arguments\":4,\"sha3_256-cpu-arguments-intercept\":1457325,\"sha3_256-cpu-arguments-slope\":64566,\"sha3_256-memory-arguments\":4,\"sliceByteString-cpu-arguments-intercept\":20467,\"sliceByteString-cpu-arguments-slope\":1,\"sliceByteString-memory-arguments-intercept\":4,\"sliceByteString-memory-arguments-slope\":0,\"sndPair-cpu-arguments\":141992,\"sndPair-memory-arguments\":32,\"subtractInteger-cpu-arguments-intercept\":100788,\"subtractInteger-cpu-arguments-slope\":420,\"subtractInteger-memory-arguments-intercept\":1,\"subtractInteger-memory-arguments-slope\":1,\"tailList-cpu-arguments\":81663,\"tailList-memory-arguments\":32,\"trace-cpu-arguments\":59498,\"trace-memory-arguments\":32,\"unBData-cpu-arguments\":20142,\"unBData-memory-arguments\":32,\"unConstrData-cpu-arguments\":24588,\"unConstrData-memory-arguments\":32,\"unIData-cpu-arguments\":20744,\"unIData-memory-arguments\":32,\"unListData-cpu-arguments\":25933,\"unListData-memory-arguments\":32,\"unMapData-cpu-arguments\":24623,\"unMapData-memory-arguments\":32,\"verifyEd25519Signature-cpu-arguments-intercept\":53384111,\"verifyEd25519Signature-cpu-arguments-slope\":14333,\"verifyEd25519Signature-memory-arguments\":10},\"PlutusV2\":{\"addInteger-cpu-arguments-intercept\":100788,\"addInteger-cpu-arguments-slope\":420,\"addInteger-memory-arguments-intercept\":1,\"addInteger-memory-arguments-slope\":1,\"appendByteString-cpu-arguments-intercept\":1000,\"appendByteString-cpu-arguments-slope\":173,\"appendByteString-memory-arguments-intercept\":0,\"appendByteString-memory-arguments-slope\":1,\"appendString-cpu-arguments-intercept\":1000,\"appendString-cpu-arguments-slope\":59957,\"appendString-memory-arguments-intercept\":4,\"appendString-memory-arguments-slope\":1,\"bData-cpu-arguments\":11183,\"bData-memory-arguments\":32,\"blake2b_256-cpu-arguments-intercept\":201305,\"blake2b_256-cpu-arguments-slope\":8356,\"blake2b_256-memory-arguments\":4,\"cekApplyCost-exBudgetCPU\":16000,\"cekApplyCost-exBudgetMemory\":100,\"cekBuiltinCost-exBudgetCPU\":16000,\"cekBuiltinCost-exBudgetMemory\":100,\"cekConstCost-exBudgetCPU\":16000,\"cekConstCost-exBudgetMemory\":100,\"cekDelayCost-exBudgetCPU\":16000,\"cekDelayCost-exBudgetMemory\":100,\"cekForceCost-exBudgetCPU\":16000,\"cekForceCost-exBudgetMemory\":100,\"cekLamCost-exBudgetCPU\":16000,\"cekLamCost-exBudgetMemory\":100,\"cekStartupCost-exBudgetCPU\":100,\"cekStartupCost-exBudgetMemory\":100,\"cekVarCost-exBudgetCPU\":16000,\"cekVarCost-exBudgetMemory\":100,\"chooseData-cpu-arguments\":94375,\"chooseData-memory-arguments\":32,\"chooseList-cpu-arguments\":132994,\"chooseList-memory-arguments\":32,\"chooseUnit-cpu-arguments\":61462,\"chooseUnit-memory-arguments\":4,\"consByteString-cpu-arguments-intercept\":72010,\"consByteString-cpu-arguments-slope\":178,\"consByteString-memory-arguments-intercept\":0,\"consByteString-memory-arguments-slope\":1,\"constrData-cpu-arguments\":22151,\"constrData-memory-arguments\":32,\"decodeUtf8-cpu-arguments-intercept\":91189,\"decodeUtf8-cpu-arguments-slope\":769,\"decodeUtf8-memory-arguments-intercept\":4,\"decodeUtf8-memory-arguments-slope\":2,\"divideInteger-cpu-arguments-constant\":85848,\"divideInteger-cpu-arguments-model-arguments-intercept\":228465,\"divideInteger-cpu-arguments-model-arguments-slope\":122,\"divideInteger-memory-arguments-intercept\":0,\"divideInteger-memory-arguments-minimum\":1,\"divideInteger-memory-arguments-slope\":1,\"encodeUtf8-cpu-arguments-intercept\":1000,\"encodeUtf8-cpu-arguments-slope\":42921,\"encodeUtf8-memory-arguments-intercept\":4,\"encodeUtf8-memory-arguments-slope\":2,\"equalsByteString-cpu-arguments-constant\":24548,\"equalsByteString-cpu-arguments-intercept\":29498,\"equalsByteString-cpu-arguments-slope\":38,\"equalsByteString-memory-arguments\":1,\"equalsData-cpu-arguments-intercept\":898148,\"equalsData-cpu-arguments-slope\":27279,\"equalsData-memory-arguments\":1,\"equalsInteger-cpu-arguments-intercept\":51775,\"equalsInteger-cpu-arguments-slope\":558,\"equalsInteger-memory-arguments\":1,\"equalsString-cpu-arguments-constant\":39184,\"equalsString-cpu-arguments-intercept\":1000,\"equalsString-cpu-arguments-slope\":60594,\"equalsString-memory-arguments\":1,\"fstPair-cpu-arguments\":141895,\"fstPair-memory-arguments\":32,\"headList-cpu-arguments\":83150,\"headList-memory-arguments\":32,\"iData-cpu-arguments\":15299,\"iData-memory-arguments\":32,\"ifThenElse-cpu-arguments\":76049,\"ifThenElse-memory-arguments\":1,\"indexByteString-cpu-arguments\":13169,\"indexByteString-memory-arguments\":4,\"lengthOfByteString-cpu-arguments\":22100,\"lengthOfByteString-memory-arguments\":10,\"lessThanByteString-cpu-arguments-intercept\":28999,\"lessThanByteString-cpu-arguments-slope\":74,\"lessThanByteString-memory-arguments\":1,\"lessThanEqualsByteString-cpu-arguments-intercept\":28999,\"lessThanEqualsByteString-cpu-arguments-slope\":74,\"lessThanEqualsByteString-memory-arguments\":1,\"lessThanEqualsInteger-cpu-arguments-intercept\":43285,\"lessThanEqualsInteger-cpu-arguments-slope\":552,\"lessThanEqualsInteger-memory-arguments\":1,\"lessThanInteger-cpu-arguments-intercept\":44749,\"lessThanInteger-cpu-arguments-slope\":541,\"lessThanInteger-memory-arguments\":1,\"listData-cpu-arguments\":33852,\"listData-memory-arguments\":32,\"mapData-cpu-arguments\":68246,\"mapData-memory-arguments\":32,\"mkCons-cpu-arguments\":72362,\"mkCons-memory-arguments\":32,\"mkNilData-cpu-arguments\":7243,\"mkNilData-memory-arguments\":32,\"mkNilPairData-cpu-arguments\":7391,\"mkNilPairData-memory-arguments\":32,\"mkPairData-cpu-arguments\":11546,\"mkPairData-memory-arguments\":32,\"modInteger-cpu-arguments-constant\":85848,\"modInteger-cpu-arguments-model-arguments-intercept\":228465,\"modInteger-cpu-arguments-model-arguments-slope\":122,\"modInteger-memory-arguments-intercept\":0,\"modInteger-memory-arguments-minimum\":1,\"modInteger-memory-arguments-slope\":1,\"multiplyInteger-cpu-arguments-intercept\":90434,\"multiplyInteger-cpu-arguments-slope\":519,\"multiplyInteger-memory-arguments-intercept\":0,\"multiplyInteger-memory-arguments-slope\":1,\"nullList-cpu-arguments\":74433,\"nullList-memory-arguments\":32,\"quotientInteger-cpu-arguments-constant\":85848,\"quotientInteger-cpu-arguments-model-arguments-intercept\":228465,\"quotientInteger-cpu-arguments-model-arguments-slope\":122,\"quotientInteger-memory-arguments-intercept\":0,\"quotientInteger-memory-arguments-minimum\":1,\"quotientInteger-memory-arguments-slope\":1,\"remainderInteger-cpu-arguments-constant\":85848,\"remainderInteger-cpu-arguments-model-arguments-intercept\":228465,\"remainderInteger-cpu-arguments-model-arguments-slope\":122,\"remainderInteger-memory-arguments-intercept\":0,\"remainderInteger-memory-arguments-minimum\":1,\"remainderInteger-memory-arguments-slope\":1,\"serialiseData-cpu-arguments-intercept\":955506,\"serialiseData-cpu-arguments-slope\":213312,\"serialiseData-memory-arguments-intercept\":0,\"serialiseData-memory-arguments-slope\":2,\"sha2_256-cpu-arguments-intercept\":270652,\"sha2_256-cpu-arguments-slope\":22588,\"sha2_256-memory-arguments\":4,\"sha3_256-cpu-arguments-intercept\":1457325,\"sha3_256-cpu-arguments-slope\":64566,\"sha3_256-memory-arguments\":4,\"sliceByteString-cpu-arguments-intercept\":20467,\"sliceByteString-cpu-arguments-slope\":1,\"sliceByteString-memory-arguments-intercept\":4,\"sliceByteString-memory-arguments-slope\":0,\"sndPair-cpu-arguments\":141992,\"sndPair-memory-arguments\":32,\"subtractInteger-cpu-arguments-intercept\":100788,\"subtractInteger-cpu-arguments-slope\":420,\"subtractInteger-memory-arguments-intercept\":1,\"subtractInteger-memory-arguments-slope\":1,\"tailList-cpu-arguments\":81663,\"tailList-memory-arguments\":32,\"trace-cpu-arguments\":59498,\"trace-memory-arguments\":32,\"unBData-cpu-arguments\":20142,\"unBData-memory-arguments\":32,\"unConstrData-cpu-arguments\":24588,\"unConstrData-memory-arguments\":32,\"unIData-cpu-arguments\":20744,\"unIData-memory-arguments\":32,\"unListData-cpu-arguments\":25933,\"unListData-memory-arguments\":32,\"unMapData-cpu-arguments\":24623,\"unMapData-memory-arguments\":32,\"verifyEcdsaSecp256k1Signature-cpu-arguments\":43053543,\"verifyEcdsaSecp256k1Signature-memory-arguments\":10,\"verifyEd25519Signature-cpu-arguments-intercept\":53384111,\"verifyEd25519Signature-cpu-arguments-slope\":14333,\"verifyEd25519Signature-memory-arguments\":10,\"verifySchnorrSecp256k1Signature-cpu-arguments-intercept\":43574283,\"verifySchnorrSecp256k1Signature-cpu-arguments-slope\":26308,\"verifySchnorrSecp256k1Signature-memory-arguments\":10},\"PlutusV3\":{\"addInteger-cpu-arguments-intercept\":100788,\"addInteger-cpu-arguments-slope\":420,\"addInteger-memory-arguments-intercept\":1,\"addInteger-memory-arguments-slope\":1,\"appendByteString-cpu-arguments-intercept\":1000,\"appendByteString-cpu-arguments-slope\":173,\"appendByteString-memory-arguments-intercept\":0,\"appendByteString-memory-arguments-slope\":1,\"appendString-cpu-arguments-intercept\":1000,\"appendString-cpu-arguments-slope\":59957,\"appendString-memory-arguments-intercept\":4,\"appendString-memory-arguments-slope\":1,\"bData-cpu-arguments\":11183,\"bData-memory-arguments\":32,\"blake2b_256-cpu-arguments-intercept\":201305,\"blake2b_256-cpu-arguments-slope\":8356,\"blake2b_256-memory-arguments\":4,\"cekApplyCost-exBudgetCPU\":16000,\"cekApplyCost-exBudgetMemory\":100,\"cekBuiltinCost-exBudgetCPU\":16000,\"cekBuiltinCost-exBudgetMemory\":100,\"cekConstCost-exBudgetCPU\":16000,\"cekConstCost-exBudgetMemory\":100,\"cekDelayCost-exBudgetCPU\":16000,\"cekDelayCost-exBudgetMemory\":100,\"cekForceCost-exBudgetCPU\":16000,\"cekForceCost-exBudgetMemory\":100,\"cekLamCost-exBudgetCPU\":16000,\"cekLamCost-exBudgetMemory\":100,\"cekStartupCost-exBudgetCPU\":100,\"cekStartupCost-exBudgetMemory\":100,\"cekVarCost-exBudgetCPU\":16000,\"cekVarCost-exBudgetMemory\":100,\"chooseData-cpu-arguments\":94375,\"chooseData-memory-arguments\":32,\"chooseList-cpu-arguments\":132994,\"chooseList-memory-arguments\":32,\"chooseUnit-cpu-arguments\":61462,\"chooseUnit-memory-arguments\":4,\"consByteString-cpu-arguments-intercept\":72010,\"consByteString-cpu-arguments-slope\":178,\"consByteString-memory-arguments-intercept\":0,\"consByteString-memory-arguments-slope\":1,\"constrData-cpu-arguments\":22151,\"constrData-memory-arguments\":32,\"decodeUtf8-cpu-arguments-intercept\":91189,\"decodeUtf8-cpu-arguments-slope\":769,\"decodeUtf8-memory-arguments-intercept\":4,\"decodeUtf8-memory-arguments-slope\":2,\"divideInteger-cpu-arguments-constant\":85848,\"divideInteger-cpu-arguments-model-arguments-c00\":123203,\"divideInteger-cpu-arguments-model-arguments-c01\":7305,\"divideInteger-cpu-arguments-model-arguments-c02\":-900,\"divideInteger-cpu-arguments-model-arguments-c10\":1716,\"divideInteger-cpu-arguments-model-arguments-c11\":549,\"divideInteger-cpu-arguments-model-arguments-c20\":57,\"divideInteger-cpu-arguments-model-arguments-minimum\":85848,\"divideInteger-memory-arguments-intercept\":0,\"divideInteger-memory-arguments-minimum\":1,\"divideInteger-memory-arguments-slope\":1,\"encodeUtf8-cpu-arguments-intercept\":1000,\"encodeUtf8-cpu-arguments-slope\":42921,\"encodeUtf8-memory-arguments-intercept\":4,\"encodeUtf8-memory-arguments-slope\":2,\"equalsByteString-cpu-arguments-constant\":24548,\"equalsByteString-cpu-arguments-intercept\":29498,\"equalsByteString-cpu-arguments-slope\":38,\"equalsByteString-memory-arguments\":1,\"equalsData-cpu-arguments-intercept\":898148,\"equalsData-cpu-arguments-slope\":27279,\"equalsData-memory-arguments\":1,\"equalsInteger-cpu-arguments-intercept\":51775,\"equalsInteger-cpu-arguments-slope\":558,\"equalsInteger-memory-arguments\":1,\"equalsString-cpu-arguments-constant\":39184,\"equalsString-cpu-arguments-intercept\":1000,\"equalsString-cpu-arguments-slope\":60594,\"equalsString-memory-arguments\":1,\"fstPair-cpu-arguments\":141895,\"fstPair-memory-arguments\":32,\"headList-cpu-arguments\":83150,\"headList-memory-arguments\":32,\"iData-cpu-arguments\":15299,\"iData-memory-arguments\":32,\"ifThenElse-cpu-arguments\":76049,\"ifThenElse-memory-arguments\":1,\"indexByteString-cpu-arguments\":13169,\"indexByteString-memory-arguments\":4,\"lengthOfByteString-cpu-arguments\":22100,\"lengthOfByteString-memory-arguments\":10,\"lessThanByteString-cpu-arguments-intercept\":28999,\"lessThanByteString-cpu-arguments-slope\":74,\"lessThanByteString-memory-arguments\":1,\"lessThanEqualsByteString-cpu-arguments-intercept\":28999,\"lessThanEqualsByteString-cpu-arguments-slope\":74,\"lessThanEqualsByteString-memory-arguments\":1,\"lessThanEqualsInteger-cpu-arguments-intercept\":43285,\"lessThanEqualsInteger-cpu-arguments-slope\":552,\"lessThanEqualsInteger-memory-arguments\":1,\"lessThanInteger-cpu-arguments-intercept\":44749,\"lessThanInteger-cpu-arguments-slope\":541,\"lessThanInteger-memory-arguments\":1,\"listData-cpu-arguments\":33852,\"listData-memory-arguments\":32,\"mapData-cpu-arguments\":68246,\"mapData-memory-arguments\":32,\"mkCons-cpu-arguments\":72362,\"mkCons-memory-arguments\":32,\"mkNilData-cpu-arguments\":7243,\"mkNilData-memory-arguments\":32,\"mkNilPairData-cpu-arguments\":7391,\"mkNilPairData-memory-arguments\":32,\"mkPairData-cpu-arguments\":11546,\"mkPairData-memory-arguments\":32,\"modInteger-cpu-arguments-constant\":85848,\"modInteger-cpu-arguments-model-arguments-c00\":123203,\"modInteger-cpu-arguments-model-arguments-c01\":7305,\"modInteger-cpu-arguments-model-arguments-c02\":-900,\"modInteger-cpu-arguments-model-arguments-c10\":1716,\"modInteger-cpu-arguments-model-arguments-c11\":549,\"modInteger-cpu-arguments-model-arguments-c20\":57,\"modInteger-cpu-arguments-model-arguments-minimum\":85848,\"modInteger-memory-arguments-intercept\":0,\"modInteger-memory-arguments-slope\":1,\"multiplyInteger-cpu-arguments-intercept\":90434,\"multiplyInteger-cpu-arguments-slope\":519,\"multiplyInteger-memory-arguments-intercept\":0,\"multiplyInteger-memory-arguments-slope\":1,\"nullList-cpu-arguments\":74433,\"nullList-memory-arguments\":32,\"quotientInteger-cpu-arguments-constant\":85848,\"quotientInteger-cpu-arguments-model-arguments-c00\":123203,\"quotientInteger-cpu-arguments-model-arguments-c01\":7305,\"quotientInteger-cpu-arguments-model-arguments-c02\":-900,\"quotientInteger-cpu-arguments-model-arguments-c10\":1716,\"quotientInteger-cpu-arguments-model-arguments-c11\":549,\"quotientInteger-cpu-arguments-model-arguments-c20\":57,\"quotientInteger-cpu-arguments-model-arguments-minimum\":85848,\"quotientInteger-memory-arguments-intercept\":0,\"quotientInteger-memory-arguments-slope\":1,\"remainderInteger-cpu-arguments-constant\":1,\"remainderInteger-cpu-arguments-model-arguments-c00\":85848,\"remainderInteger-cpu-arguments-model-arguments-c01\":123203,\"remainderInteger-cpu-arguments-model-arguments-c02\":7305,\"remainderInteger-cpu-arguments-model-arguments-c10\":-900,\"remainderInteger-cpu-arguments-model-arguments-c11\":1716,\"remainderInteger-cpu-arguments-model-arguments-c20\":549,\"remainderInteger-cpu-arguments-model-arguments-minimum\":57,\"remainderInteger-memory-arguments-intercept\":85848,\"remainderInteger-memory-arguments-minimum\":0,\"remainderInteger-memory-arguments-slope\":1,\"serialiseData-cpu-arguments-intercept\":955506,\"serialiseData-cpu-arguments-slope\":213312,\"serialiseData-memory-arguments-intercept\":0,\"serialiseData-memory-arguments-slope\":2,\"sha2_256-cpu-arguments-intercept\":270652,\"sha2_256-cpu-arguments-slope\":22588,\"sha2_256-memory-arguments\":4,\"sha3_256-cpu-arguments-intercept\":1457325,\"sha3_256-cpu-arguments-slope\":64566,\"sha3_256-memory-arguments\":4,\"sliceByteString-cpu-arguments-intercept\":20467,\"sliceByteString-cpu-arguments-slope\":1,\"sliceByteString-memory-arguments-intercept\":4,\"sliceByteString-memory-arguments-slope\":0,\"sndPair-cpu-arguments\":141992,\"sndPair-memory-arguments\":32,\"subtractInteger-cpu-arguments-intercept\":100788,\"subtractInteger-cpu-arguments-slope\":420,\"subtractInteger-memory-arguments-intercept\":1,\"subtractInteger-memory-arguments-slope\":1,\"tailList-cpu-arguments\":81663,\"tailList-memory-arguments\":32,\"trace-cpu-arguments\":59498,\"trace-memory-arguments\":32,\"unBData-cpu-arguments\":20142,\"unBData-memory-arguments\":32,\"unConstrData-cpu-arguments\":24588,\"unConstrData-memory-arguments\":32,\"unIData-cpu-arguments\":20744,\"unIData-memory-arguments\":32,\"unListData-cpu-arguments\":25933,\"unListData-memory-arguments\":32,\"unMapData-cpu-arguments\":24623,\"unMapData-memory-arguments\":32,\"verifyEcdsaSecp256k1Signature-cpu-arguments\":43053543,\"verifyEcdsaSecp256k1Signature-memory-arguments\":10,\"verifyEd25519Signature-cpu-arguments-intercept\":53384111,\"verifyEd25519Signature-cpu-arguments-slope\":14333,\"verifyEd25519Signature-memory-arguments\":10,\"verifySchnorrSecp256k1Signature-cpu-arguments-intercept\":43574283,\"verifySchnorrSecp256k1Signature-cpu-arguments-slope\":26308,\"verifySchnorrSecp256k1Signature-memory-arguments\":10,\"cekConstrCost-exBudgetCPU\":16000,\"cekConstrCost-exBudgetMemory\":100,\"cekCaseCost-exBudgetCPU\":16000,\"cekCaseCost-exBudgetMemory\":100,\"bls12_381_G1_add-cpu-arguments\":962335,\"bls12_381_G1_add-memory-arguments\":18,\"bls12_381_G1_compress-cpu-arguments\":2780678,\"bls12_381_G1_compress-memory-arguments\":6,\"bls12_381_G1_equal-cpu-arguments\":442008,\"bls12_381_G1_equal-memory-arguments\":1,\"bls12_381_G1_hashToGroup-cpu-arguments-intercept\":52538055,\"bls12_381_G1_hashToGroup-cpu-arguments-slope\":3756,\"bls12_381_G1_hashToGroup-memory-arguments\":18,\"bls12_381_G1_neg-cpu-arguments\":267929,\"bls12_381_G1_neg-memory-arguments\":18,\"bls12_381_G1_scalarMul-cpu-arguments-intercept\":76433006,\"bls12_381_G1_scalarMul-cpu-arguments-slope\":8868,\"bls12_381_G1_scalarMul-memory-arguments\":18,\"bls12_381_G1_uncompress-cpu-arguments\":52948122,\"bls12_381_G1_uncompress-memory-arguments\":18,\"bls12_381_G2_add-cpu-arguments\":1995836,\"bls12_381_G2_add-memory-arguments\":36,\"bls12_381_G2_compress-cpu-arguments\":3227919,\"bls12_381_G2_compress-memory-arguments\":12,\"bls12_381_G2_equal-cpu-arguments\":901022,\"bls12_381_G2_equal-memory-arguments\":1,\"bls12_381_G2_hashToGroup-cpu-arguments-intercept\":166917843,\"bls12_381_G2_hashToGroup-cpu-arguments-slope\":4307,\"bls12_381_G2_hashToGroup-memory-arguments\":36,\"bls12_381_G2_neg-cpu-arguments\":284546,\"bls12_381_G2_neg-memory-arguments\":36,\"bls12_381_G2_scalarMul-cpu-arguments-intercept\":158221314,\"bls12_381_G2_scalarMul-cpu-arguments-slope\":26549,\"bls12_381_G2_scalarMul-memory-arguments\":36,\"bls12_381_G2_uncompress-cpu-arguments\":74698472,\"bls12_381_G2_uncompress-memory-arguments\":36,\"bls12_381_finalVerify-cpu-arguments\":333849714,\"bls12_381_finalVerify-memory-arguments\":1,\"bls12_381_millerLoop-cpu-arguments\":254006273,\"bls12_381_millerLoop-memory-arguments\":72,\"bls12_381_mulMlResult-cpu-arguments\":2174038,\"bls12_381_mulMlResult-memory-arguments\":72,\"keccak_256-cpu-arguments-intercept\":2261318,\"keccak_256-cpu-arguments-slope\":64571,\"keccak_256-memory-arguments\":4,\"blake2b_224-cpu-arguments-intercept\":207616,\"blake2b_224-cpu-arguments-slope\":8310,\"blake2b_224-memory-arguments\":4,\"integerToByteString-cpu-arguments-c0\":1293828,\"integerToByteString-cpu-arguments-c1\":28716,\"integerToByteString-cpu-arguments-c2\":63,\"integerToByteString-memory-arguments-intercept\":0,\"integerToByteString-memory-arguments-slope\":1,\"byteStringToInteger-cpu-arguments-c0\":1006041,\"byteStringToInteger-cpu-arguments-c1\":43623,\"byteStringToInteger-cpu-arguments-c2\":251,\"byteStringToInteger-memory-arguments-intercept\":0,\"byteStringToInteger-memory-arguments-slope\":1}}}\n   */\n  public async getCostModelParameters(chainType: string, option?: any): Promise<any> {\n    return await this._request('getCostModelParameters', { chainType, ...(option || {}) });\n  }\n\n  /**\n   * Get token pairs hash.\n   * @since 1.1.0\n   * @group CrossChainV2\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<string>} - The token pairs hash.\n   * @example\n   * const ret = await sdk.getTokenPairsHash();\n   * console.log(ret);\n   * // \"352bef4b54d176c31520d89a148c4b38\"\n   */\n  public async getTokenPairsHash(option?: any): Promise<string> {\n    return await this._request('getTokenPairsHash', { ...(option || {}) });\n  }\n\n  /**\n   * Calculates the total balances issued by a given account, optionally excluding amounts held by operational addresses.\n   * @since 1.1.0\n   * @group XRP\n   * @param {string} chainType - The chain being queried. Currently supports <code>'XRP'</code>.\n   * @param {string} address - The Address to check. This should be the issuing address.\n   * @param {any} [option] - Optional:\n   * <br>&nbsp;&nbsp;<code>excludeAddresses</code> - Optional, the array of addresses to exclude from the balances issued.\n   * @returns {Promise<any>} - The total balances issued by a given account.\n   * @example\n   * const ret = await sdk.getGateWayBalances(\"XRP\", \"rLZGBrdXNvS1RPjjJB7Z4FeA4w5Hggtt7t\");\n   * console.log(ret);\n   * // {\"account\":\"rLZGBrdXNvS1RPjjJB7Z4FeA4w5Hggtt7t\",\"ledger_hash\":\"16452CB42D4CC620541CB343195146D2C0E447ECD60A30E4034727799ECBD0DC\",\"ledger_index\":15906583,\"validated\":true}\n   */\n  public async getGateWayBalances(chainType: string, address: string, option?: any): Promise<any> {\n    return await this._request('getGateWayBalances', { chainType, address, ...(option || {}) });\n  }\n\n  /**\n   * Returns information about an account's trust lines, including balances in all non-XRP currencies and assets.\n   * @since 1.1.0\n   * @group XRP\n   * @param {string} chainType - The chain being queried. Currently supports <code>'XRP'</code>.\n   * @param {string} address - A unique identifier for the account, most commonly the account's Address.\n   * @param {any} [option] - Optional:\n   * <br>&nbsp;&nbsp;<code>peer</code> - Optional, the Address of a second account. If provided, show only lines of trust connecting the two accounts.\n   * <br>&nbsp;&nbsp;<code>ledgerVersion</code> - Optional, the ledger version of the ledger to use.\n   * @returns {Promise<Array<any>>} - The infomation of account's trust lines.\n   * @example\n   * const ret = await sdk.getTrustLines(\"XRP\", \"rKFgsDG5mqxaMG45GR8J1CeESFCJ3xpqHS\");\n   * console.log(ret);\n   * // [{\"account\":\"rnqc3LJgN6E2Ern7G4tdciihoFtcatm7FX\",\"balance\":\"1000000000\",\"currency\":\"BAR\",\"limit\":\"1000000000\",\"limit_peer\":\"0\",\"quality_in\":0,\"quality_out\":0},{\"account\":\"rh1FqPEZ4AvptV6vXr3WUgPHCgpkS2nb9G\",\"balance\":\"0\",\"currency\":\"FOO\",\"limit\":\"100000\",\"limit_peer\":\"0\",\"no_ripple_peer\":true,\"quality_in\":0,\"quality_out\":0}]\n   */\n  public async getTrustLines(chainType: string, address: string, option?: any): Promise<Array<any>> {\n    return await this._request('getTrustLines', { chainType, address, ...(option || {}) });\n  }\n\n  /**\n   * Get cross chain reserved quota.\n   * @since 1.1.0\n   * @group Accounts\n   * @param {any} option - Object:\n   * <br>&nbsp;&nbsp;<code>targetChainType</code> - The target chain being queried.\n   * <br>&nbsp;&nbsp;<code>symbols</code> - The array of token symbol being queried.\n   * @returns {Promise<any>} - The cross chain reserved quota.\n   * @example\n   * const ret = await sdk.getCrossChainReservedQuota({\"targetChainType\":\"BTC\", symbols:[\"BTC\"]});\n   * console.log(ret);\n   * // {\"BTC\":\"0.5\"}\n   */\n  public async getCrossChainReservedQuota(option: any): Promise<any> {\n    return await this._request('getCrossChainReservedQuota', { ...(option || {}) });\n  }\n\n  /**\n   * Check if address list contrains hacker account.\n   * @since 1.1.0\n   * @group CrossChainV2\n   * @param {Array<string>} address - The Array of address you want to check.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<boolean>} - The token pairs hash.\n   * @example\n   * const ret = await sdk.hasHackerAccount([\"0x...\"]);\n   * console.log(ret);\n   * // false\n   */\n  public async hasHackerAccount(address: Array<string>, option?: any): Promise<boolean> {\n    return await this._request('hasHackerAccount', { address, ...(option || {}) });\n  }\n\n  /**\n   * Get the parameters of the blockchain used for witnessses to create a proposal.\n   * @since 1.1.0\n   * @group Contracts\n   * @param {string} chainType - The chain being queried. Currently supports <code>'TRX'</code>.\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<Array<any>>} - The parameters.\n   * @example\n   * const ret = await sdk.getChainParameters(\"TRX\");\n   * console.log(ret);\n   * // [{\"key\":\"getMaintenanceTimeInterval\",\"value\":1800000},{\"key\":\"getAccountUpgradeCost\",\"value\":9999000000},{\"key\":\"getCreateAccountFee\",\"value\":100000},{\"key\":\"getTransactionFee\",\"value\":1000},{\"key\":\"getAssetIssueFee\",\"value\":1024000000},{\"key\":\"getWitnessPayPerBlock\",\"value\":8000000},{\"key\":\"getWitnessStandbyAllowance\",\"value\":100000000},{\"key\":\"getCreateNewAccountFeeInSystemContract\",\"value\":1000000},{\"key\":\"getCreateNewAccountBandwidthRate\",\"value\":1},{\"key\":\"getAllowCreationOfContracts\",\"value\":1},{\"key\":\"getRemoveThePowerOfTheGr\",\"value\":-1},{\"key\":\"getEnergyFee\",\"value\":100},{\"key\":\"getExchangeCreateFee\",\"value\":1024000000},{\"key\":\"getMaxCpuTimeOfOneTx\",\"value\":160},{\"key\":\"getAllowUpdateAccountName\"},{\"key\":\"getAllowSameTokenName\",\"value\":1},{\"key\":\"getAllowDelegateResource\",\"value\":1},{\"key\":\"getTotalEnergyLimit\",\"value\":180000000000},{\"key\":\"getAllowTvmTransferTrc10\",\"value\":1},{\"key\":\"getTotalEnergyCurrentLimit\",\"value\":180000000000},{\"key\":\"getAllowMultiSign\",\"value\":1},{\"key\":\"getAllowAdaptiveEnergy\"},{\"key\":\"getTotalEnergyTargetLimit\",\"value\":12500000},{\"key\":\"getTotalEnergyAverageUsage\"},{\"key\":\"getUpdateAccountPermissionFee\",\"value\":100000000},{\"key\":\"getMultiSignFee\",\"value\":1000000},{\"key\":\"getAllowAccountStateRoot\"},{\"key\":\"getAllowProtoFilterNum\"},{\"key\":\"getAllowTvmConstantinople\",\"value\":1},{\"key\":\"getAllowTvmSolidity059\",\"value\":1},{\"key\":\"getAllowTvmIstanbul\",\"value\":1},{\"key\":\"getAllowShieldedTRC20Transaction\",\"value\":1},{\"key\":\"getForbidTransferToContract\"},{\"key\":\"getAdaptiveResourceLimitTargetRatio\",\"value\":10},{\"key\":\"getAdaptiveResourceLimitMultiplier\",\"value\":1000},{\"key\":\"getChangeDelegation\",\"value\":1},{\"key\":\"getWitness127PayPerBlock\",\"value\":128000000},{\"key\":\"getAllowMarketTransaction\"},{\"key\":\"getMarketSellFee\"},{\"key\":\"getMarketCancelFee\"},{\"key\":\"getAllowPBFT\",\"value\":1},{\"key\":\"getAllowTransactionFeePool\"},{\"key\":\"getMaxFeeLimit\",\"value\":15000000000},{\"key\":\"getAllowOptimizeBlackHole\",\"value\":1},{\"key\":\"getAllowNewResourceModel\"},{\"key\":\"getAllowTvmFreeze\",\"value\":1},{\"key\":\"getAllowTvmVote\",\"value\":1},{\"key\":\"getAllowTvmLondon\",\"value\":1},{\"key\":\"getAllowTvmCompatibleEvm\"},{\"key\":\"getAllowAccountAssetOptimization\"},{\"key\":\"getFreeNetLimit\",\"value\":600},{\"key\":\"getTotalNetLimit\",\"value\":43200000000},{\"key\":\"getAllowHigherLimitForMaxCpuTimeOfOneTx\",\"value\":1},{\"key\":\"getAllowAssetOptimization\",\"value\":1},{\"key\":\"getAllowNewReward\",\"value\":1},{\"key\":\"getMemoFee\",\"value\":1000000},{\"key\":\"getAllowDelegateOptimization\",\"value\":1},{\"key\":\"getUnfreezeDelayDays\",\"value\":1},{\"key\":\"getAllowOptimizedReturnValueOfChainId\",\"value\":1},{\"key\":\"getAllowDynamicEnergy\",\"value\":1},{\"key\":\"getDynamicEnergyThreshold\",\"value\":5000000000},{\"key\":\"getDynamicEnergyIncreaseFactor\",\"value\":2000},{\"key\":\"getDynamicEnergyMaxFactor\",\"value\":34000},{\"key\":\"getAllowTvmShangHai\",\"value\":1},{\"key\":\"getAllowCancelAllUnfreezeV2\",\"value\":1},{\"key\":\"getMaxDelegateLockPeriod\",\"value\":144000},{\"key\":\"getAllowOldRewardOpt\",\"value\":1},{\"key\":\"getAllowEnergyAdjustment\",\"value\":1},{\"key\":\"getMaxCreateAccountTxSize\",\"value\":1000},{\"key\":\"getAllowStrictMath\",\"value\":1},{\"key\":\"getConsensusLogicOptimization\",\"value\":1},{\"key\":\"getAllowTvmCancun\",\"value\":1},{\"key\":\"getAllowTvmBlob\",\"value\":1},{\"key\":\"getAllowTvmSelfdestructRestriction\",\"value\":1},{\"key\":\"getProposalExpireTime\",\"value\":600000}]\n   */\n  public async getChainParameters(chainType: string, option?: any): Promise<Array<any>> {\n    return await this._request('getChainParameters', { chainType, ...(option || {}) });\n  }\n\n  /**\n   * Get cross chain quota hidden flags.\n   * @since 1.1.0\n   * @group CrossChainV2\n   * @deprecated use {@link getChainQuotaHiddenFlagDirectionally} instead.\n   * @param {any} [option] - Optional:\n   * <br>&nbsp;&nbsp;<code>chainIds</code> -  Array of chain IDs about the cross chain pair.\n   * @returns {Promise<any>} - The cross chain quota hidden flags.\n   * @example\n   * const ret = await sdk.getChainQuotaHiddenFlags({chainIds:[\"1073741834\", \"2147484458\", \"2153201998\"]});\n   * console.log(ret);\n   * // {}\n   */\n  public async getChainQuotaHiddenFlags(option?: any): Promise<any> {\n    return await this._request('getChainQuotaHiddenFlags', { ...(option || {}) });\n  }\n\n  /**\n   * Get cross chain quota hidden flags.\n   * @since 1.1.0\n   * @group CrossChainV2\n   * @param {any} [option] - Optional:\n   * <br>&nbsp;&nbsp;<code>chainIds</code> -  Array of chain bip44 IDs about the cross chain pair.\n   * @returns {Promise<any>} - The cross chain quota hidden flags.\n   * @example\n   * const ret = await sdk.getChainQuotaHiddenFlagDirectionally({chainIds:[\"1073741834\", \"2147484458\", \"2153201998\"]});\n   * console.log(ret);\n   * // {\"2153201998\":{\"hiddenSourceChainQuota\":false,\"hiddenTargetChainQuota\":false}}\n   */\n  public async getChainQuotaHiddenFlagDirectionally(option?: any): Promise<any> {\n    return await this._request('getChainQuotaHiddenFlagDirectionally', { ...(option || {}) });\n  }\n\n  /**\n   * Get discount info.\n   * @since 1.1.0\n   * @group CrossChainV2\n   * @param {any} [option] - A reserved parameter.\n   * @returns {Promise<Array<any>>} - The discount info.\n   * @example\n   * const ret = await sdk.getWanBridgeDiscounts();\n   * console.log(ret);\n   * // [\n   * //   {\n   * //     \"amount\": \"10000000000000000000000\",\n   * //     \"discount\": \"900000000000000000\"\n   * //   },\n   * //   {\n   * //     \"amount\": \"25000000000000000000000\",\n   * //     \"discount\": \"750000000000000000\"\n   * //   },\n   * //   {\n   * //     \"amount\": \"50000000000000000000000\",\n   * //     \"discount\": \"500000000000000000\"\n   * //   },\n   * //   {\n   * //     \"amount\": \"100000000000000000000000\",\n   * //     \"discount\": \"400000000000000000\"\n   * //   },\n   * //   {\n   * //     \"amount\": \"500000000000000000000000\",\n   * //     \"discount\": \"300000000000000000\"\n   * //   },\n   * //   {\n   * //     \"amount\": \"1000000000000000000000000\",\n   * //     \"discount\": \"200000000000000000\"\n   * //   }\n   * // ]\n   */\n  public async getWanBridgeDiscounts(option?: any): Promise<Array<any>> {\n    return await this._request('getWanBridgeDiscounts', { ...(option || {}) });\n  }\n\n\n}\n"],"x_google_ignoreList":[0,1,2,3,4,5,6],"mappings":"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"}