@kodiak-finance/orderly-core 2.8.18-rc.1 → 2.8.19-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +7361 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +7354 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js","../../../node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js","../../../node_modules/.pnpm/buffer@5.7.1/node_modules/buffer/index.js","../../../node_modules/.pnpm/node-stdlib-browser@1.3.1/node_modules/node-stdlib-browser/node_modules/process/browser.js","../../../node_modules/.pnpm/node-stdlib-browser@1.3.1/node_modules/node-stdlib-browser/proxy/process.js","../../../node_modules/.pnpm/node-stdlib-browser@1.3.1/node_modules/node-stdlib-browser/helpers/esbuild/shim.js","../../../node_modules/.pnpm/base-x@4.0.1/node_modules/base-x/src/index.js","../../../node_modules/.pnpm/bs58@5.0.0/node_modules/bs58/index.js","../src/index.ts","../src/keyStore.ts","../src/keyPair.ts","../../../node_modules/.pnpm/@noble+ed25519@2.3.0/node_modules/@noble/ed25519/index.js","../src/signer.ts","../src/utils.ts","../src/helper.ts","../src/contract.ts","../src/constants.ts","../src/wallet/abis/mainnetUSDCAbi.json","../src/wallet/abis/mainnetVaultAbi.json","../src/wallet/abis/stagingUSDCAbi.json","../src/wallet/abis/stagingVaultAbi.json","../src/di/simpleDI.ts","../src/di/container.ts","../src/account.ts","../src/additionalInfoRepository.ts","../src/assets.ts","../src/repository.ts","../src/walletAdapterManager.ts","../src/configStore/configStore.ts","../src/configStore/defaultConfigStore.ts","../src/wallet/baseWalletAdapter.ts","../src/wallet/index.ts","../src/wallet/etherAdapter.ts"],"sourcesContent":["'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n var proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n var copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n Buffer.from(buf).copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return '<Buffer ' + str + '>'\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (var i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable = (function () {\n var alphabet = '0123456789abcdef'\n var table = new Array(256)\n for (var i = 0; i < 16; ++i) {\n var i16 = i * 16\n for (var j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","import {\n\tnextTick,\n\ttitle,\n\tenv as environment,\n\targv,\n\tversion,\n\tversions,\n\ton,\n\taddListener,\n\tonce,\n\toff,\n\tremoveListener,\n\tremoveAllListeners,\n\temit,\n\tprependListener,\n\tprependOnceListener,\n\tlisteners,\n\tcwd,\n\tchdir,\n\tumask,\n\t// @ts-ignore\n\tbrowser as _browser,\n\t// @ts-ignore\n\tbinding as _binding\n} from 'process/browser.js';\n\nfunction noop() {}\n\nconst browser = /** @type {boolean} */ (_browser);\nconst emitWarning = noop;\nconst binding = /** @type {Function} */ (_binding);\nconst exit = noop;\nconst pid = 1;\nconst features = {};\nconst kill = noop;\nconst dlopen = noop;\nconst uptime = noop;\nconst memoryUsage = noop;\nconst uvCounters = noop;\nconst platform = 'browser';\nconst arch = 'browser';\nconst execPath = 'browser';\nconst execArgv = /** @type {string[]} */ ([]);\n\nconst api = {\n\tnextTick,\n\ttitle,\n\tbrowser,\n\tenv: environment,\n\targv,\n\tversion,\n\tversions,\n\ton,\n\taddListener,\n\tonce,\n\toff,\n\tremoveListener,\n\tremoveAllListeners,\n\temit,\n\temitWarning,\n\tprependListener,\n\tprependOnceListener,\n\tlisteners,\n\tbinding,\n\tcwd,\n\tchdir,\n\tumask,\n\texit,\n\tpid,\n\tfeatures,\n\tkill,\n\tdlopen,\n\tuptime,\n\tmemoryUsage,\n\tuvCounters,\n\tplatform,\n\tarch,\n\texecPath,\n\texecArgv\n};\n\nexport default api;\n\nexport {\n\tnextTick,\n\ttitle,\n\tbrowser,\n\tenvironment as env,\n\targv,\n\tversion,\n\tversions,\n\ton,\n\taddListener,\n\tonce,\n\toff,\n\tremoveListener,\n\tremoveAllListeners,\n\temit,\n\temitWarning,\n\tprependListener,\n\tprependOnceListener,\n\tlisteners,\n\tbinding,\n\tcwd,\n\tchdir,\n\tumask,\n\texit,\n\tpid,\n\tfeatures,\n\tkill,\n\tdlopen,\n\tuptime,\n\tmemoryUsage,\n\tuvCounters,\n\tplatform,\n\tarch,\n\texecPath,\n\texecArgv\n};\n","var _globalThis = function (Object) {\n function get() {\n var _global = this || self;\n delete Object.prototype.__magic__;\n return _global;\n }\n if (typeof globalThis === \"object\") {\n return globalThis;\n }\n if (this) {\n return get();\n } else {\n Object.defineProperty(Object.prototype, \"__magic__\", {\n configurable: true,\n get: get\n });\n var _global = __magic__;\n return _global;\n }\n}(Object);\nimport { Buffer } from 'buffer';\nimport process from 'process';\nvar _global = _globalThis;\nexport { Buffer, process, _global as global };\n","'use strict'\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\nfunction base (ALPHABET) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256)\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i)\n var xc = x.charCodeAt(0)\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i\n }\n var BASE = ALPHABET.length\n var LEADER = ALPHABET.charAt(0)\n var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n function encode (source) {\n if (source instanceof Uint8Array) {\n } else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength)\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source)\n }\n if (!(source instanceof Uint8Array)) { throw new TypeError('Expected Uint8Array') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0\n var length = 0\n var pbegin = 0\n var pend = source.length\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++\n zeroes++\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n var b58 = new Uint8Array(size)\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin]\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0\n b58[it1] = (carry % BASE) >>> 0\n carry = (carry / BASE) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n pbegin++\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length\n while (it2 !== size && b58[it2] === 0) {\n it2++\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes)\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return new Uint8Array() }\n var psz = 0\n // Skip and count leading '1's.\n var zeroes = 0\n var length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size)\n // Process the characters.\n while (source[psz]) {\n // Find code of next character\n var charCode = source.charCodeAt(psz)\n // Base map can not be indexed using char code\n if (charCode > 255) { return }\n // Decode character\n var carry = BASE_MAP[charCode]\n // Invalid character\n if (carry === 255) { return }\n var i = 0\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0\n b256[it3] = (carry % 256) >>> 0\n carry = (carry / 256) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n psz++\n }\n // Skip leading zeroes in b256.\n var it4 = size - length\n while (it4 !== size && b256[it4] === 0) {\n it4++\n }\n var vch = new Uint8Array(zeroes + (size - it4))\n var j = zeroes\n while (it4 !== size) {\n vch[j++] = b256[it4++]\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string)\n if (buffer) { return buffer }\n throw new Error('Non-base' + BASE + ' character')\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nmodule.exports = base\n","const basex = require('base-x')\nconst ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n\nmodule.exports = basex(ALPHABET)\n","export {\n MockKeyStore,\n LocalStorageStore,\n BaseKeyStore,\n type OrderlyKeyStore,\n} from \"./keyStore\";\nexport {\n type Signer,\n type MessageFactor,\n type SignedMessagePayload,\n BaseSigner,\n} from \"./signer\";\n\nexport { default as EventEmitter } from \"eventemitter3\";\n\nexport { type OrderlyKeyPair, BaseOrderlyKeyPair } from \"./keyPair\";\n\nexport {\n getMockSigner,\n getDefaultSigner,\n generateAddOrderlyKeyMessage,\n generateRegisterAccountMessage,\n generateSettleMessage,\n generateDexRequestMessage,\n} from \"./helper\";\n\nexport {\n type IContract,\n BaseContract as BaseContractManager,\n} from \"./contract\";\n\nexport { EVENT_NAMES } from \"./constants\";\n\nexport { default as SimpleDI } from \"./di/simpleDI\";\n\nexport { Account, type AccountState } from \"./account\";\nexport * from \"./configStore/configStore\";\nexport type { SubAccount } from \"./subAccount\";\n\nexport {\n DefaultConfigStore,\n API_URLS,\n type URLS,\n} from \"./configStore/defaultConfigStore\";\nexport type {\n ChainType,\n WalletAdapter,\n Message,\n RegisterAccountInputs,\n WithdrawInputs,\n InternalTransferInputs,\n SettleInputs,\n AddOrderlyKeyInputs,\n DexRequestInputs,\n} from \"./wallet/walletAdapter\";\nexport { BaseWalletAdapter } from \"./wallet/baseWalletAdapter\";\nexport type { Ed25519Keypair } from \"./types\";\nexport type { SignatureDomain } from \"./utils\";\n\nexport * from \"./wallet\";\n\nexport * as utils from \"./utils\";\n","import { BaseOrderlyKeyPair, OrderlyKeyPair } from \"./keyPair\";\n\nexport interface OrderlyKeyStore {\n getOrderlyKey: (address?: string) => OrderlyKeyPair | null;\n getAccountId: (address: string) => string | undefined | null;\n setAccountId: (address: string, accountId: string) => void;\n getAddress: () => string | undefined | null;\n setAddress: (address: string) => void;\n removeAddress: () => void;\n generateKey: () => OrderlyKeyPair;\n cleanKey: (address: string, key: string) => void;\n cleanAllKey: (address: string) => void;\n setKey: (orderlyKey: string, secretKey: OrderlyKeyPair) => void;\n}\n\nexport abstract class BaseKeyStore implements OrderlyKeyStore {\n constructor(\n private readonly networkId: string = \"testnet\" // private readonly accountId: string\n ) {}\n abstract getOrderlyKey(address?: string): OrderlyKeyPair | null;\n abstract getAccountId(address: string): string | undefined | null;\n abstract setAccountId(address: string, accountId: string): void;\n abstract getAddress(): string | undefined | null;\n abstract setAddress(address: string): void;\n abstract removeAddress(): void;\n abstract generateKey(): OrderlyKeyPair;\n abstract setKey(orderlyKey: string, secretKey: OrderlyKeyPair): void;\n abstract cleanAllKey(address: string): void;\n abstract cleanKey(address: string, key: string): void;\n\n protected get keyPrefix() {\n return `orderly_${this.networkId}_`;\n }\n}\n\nexport class LocalStorageStore extends BaseKeyStore {\n getOrderlyKey(address?: string): OrderlyKeyPair | null {\n //TODO: get secretKey from localStorage, and return a OrderlyKeyPair\n //\n let orderlyKey;\n\n if (address) {\n orderlyKey = this.getItem(address, \"orderlyKey\");\n } else {\n //if address is undefined, get the default address\n const address = this.getAddress();\n if (!address) return null;\n orderlyKey = this.getItem(address, \"orderlyKey\");\n }\n\n if (!orderlyKey) {\n return null;\n }\n return new BaseOrderlyKeyPair(orderlyKey);\n }\n\n getAccountId(address: string): string | undefined | null {\n return this.getItem(address, \"accountId\");\n }\n\n setAccountId(address: string, accountId: string) {\n // localStorage.setItem(`${this.keyPrefix}accountId`, accountId);\n this.setItem(address, { accountId });\n }\n\n getAddress(): string | undefined | null {\n return localStorage.getItem(`${this.keyPrefix}address`);\n }\n\n setAddress(address: string) {\n localStorage.setItem(`${this.keyPrefix}address`, address);\n // this.setItem(address, { address });\n }\n removeAddress() {\n localStorage.removeItem(`${this.keyPrefix}address`);\n }\n\n generateKey() {\n return BaseOrderlyKeyPair.generateKey();\n }\n\n setKey(address: string, orderlyKey: OrderlyKeyPair) {\n // localStorage.setItem(`${this.keyPrefix}orderlyKey`, orderlyKey);\n // localStorage.setItem(`${this.keyPrefix}secretKey`, secretKey);\n this.setItem(address, { orderlyKey: orderlyKey.secretKey });\n }\n\n cleanAllKey(address: string): void {\n localStorage.removeItem(`${this.keyPrefix}${address}`);\n localStorage.removeItem(`${this.keyPrefix}address`);\n }\n cleanKey(address: string, key: string): void {\n const data = this.getItem(address);\n delete data[key];\n localStorage.setItem(`${this.keyPrefix}${address}`, JSON.stringify(data));\n }\n\n private setItem(address: string, value: Record<string, any>) {\n const key = `${this.keyPrefix}${address}`;\n let oldValue: any = localStorage.getItem(key);\n\n if (oldValue) {\n oldValue = JSON.parse(oldValue);\n } else {\n oldValue = {};\n }\n\n localStorage.setItem(\n key,\n JSON.stringify({\n ...oldValue,\n ...value,\n })\n );\n }\n\n private getItem(address: string, name?: string) {\n const key = `${this.keyPrefix}${address}`;\n let value: any = localStorage.getItem(key);\n\n if (value) {\n value = JSON.parse(value);\n } else {\n value = {};\n }\n\n if (typeof name === \"undefined\") {\n return value;\n }\n\n return value[name];\n }\n}\n\n// for readux manage state\nexport class MockKeyStore implements OrderlyKeyStore {\n constructor(private readonly secretKey: string) {}\n\n generateKey() {\n return new BaseOrderlyKeyPair(this.secretKey);\n }\n\n getOrderlyKey() {\n return new BaseOrderlyKeyPair(this.secretKey);\n }\n\n getAccountId() {\n return \"\";\n }\n\n setAccountId(accountId: string) {}\n\n getAddress() {\n return \"\";\n }\n\n setAddress(address: string) {}\n\n removeAddress() {}\n\n setKey(orderlyKey: string, secretKey: OrderlyKeyPair): void {}\n\n cleanAllKey(): void {}\n cleanKey(key: string): void {}\n}\n","import { encode as bs58encode, decode as bs58Decode } from \"bs58\";\nimport * as ed from \"@noble/ed25519\";\n\nexport interface OrderlyKeyPair {\n getPublicKey(): Promise<string>;\n secretKey: string;\n sign: (data: Uint8Array) => Promise<Uint8Array>;\n}\n\nexport class BaseOrderlyKeyPair implements OrderlyKeyPair {\n secretKey: string;\n private privateKey: string;\n\n static generateKey(): OrderlyKeyPair {\n let privKey, secretKey;\n do {\n privKey = ed.utils.randomPrivateKey();\n secretKey = bs58encode(privKey);\n } while (secretKey.length !== 44);\n\n // const secretKey = bs58encode(privKey);\n\n return new BaseOrderlyKeyPair(secretKey);\n }\n\n constructor(secretKey: string) {\n this.secretKey = secretKey;\n const bytes = bs58Decode(secretKey);\n this.privateKey = Buffer.from(bytes).toString(\"hex\");\n }\n\n async sign(message: Uint8Array): Promise<Uint8Array> {\n return await ed.signAsync(message, this.privateKey);\n }\n\n async getPublicKey(): Promise<string> {\n const pubKey = await ed.getPublicKeyAsync(this.privateKey);\n\n const publicKey = `ed25519:${bs58encode(pubKey)}`;\n return publicKey;\n }\n\n toString() {\n return this.privateKey;\n }\n}\n","/*! noble-ed25519 - MIT License (c) 2019 Paul Miller (paulmillr.com) */\n/**\n * 4KB JS implementation of ed25519 EdDSA signatures.\n * Compliant with RFC8032, FIPS 186-5 & ZIP215.\n * @module\n * @example\n * ```js\nimport * as ed from '@noble/ed25519';\n(async () => {\n const privKey = ed.utils.randomPrivateKey();\n const message = Uint8Array.from([0xab, 0xbc, 0xcd, 0xde]);\n const pubKey = await ed.getPublicKeyAsync(privKey); // Sync methods are also present\n const signature = await ed.signAsync(message, privKey);\n const isValid = await ed.verifyAsync(signature, message, pubKey);\n})();\n```\n */\n/**\n * Curve params. ed25519 is twisted edwards curve. Equation is −x² + y² = -a + dx²y².\n * * P = `2n**255n - 19n` // field over which calculations are done\n * * N = `2n**252n + 27742317777372353535851937790883648493n` // group order, amount of curve points\n * * h = 8 // cofactor\n * * a = `Fp.create(BigInt(-1))` // equation param\n * * d = -121665/121666 a.k.a. `Fp.neg(121665 * Fp.inv(121666))` // equation param\n * * Gx, Gy are coordinates of Generator / base point\n */\nconst ed25519_CURVE = {\n p: 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedn,\n n: 0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3edn,\n h: 8n,\n a: 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffecn,\n d: 0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3n,\n Gx: 0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51an,\n Gy: 0x6666666666666666666666666666666666666666666666666666666666666658n,\n};\nconst { p: P, n: N, Gx, Gy, a: _a, d: _d } = ed25519_CURVE;\nconst h = 8n; // cofactor\nconst L = 32; // field / group byte length\nconst L2 = 64;\n// Helpers and Precomputes sections are reused between libraries\n// ## Helpers\n// ----------\n// error helper, messes-up stack trace\nconst err = (m = '') => {\n throw new Error(m);\n};\nconst isBig = (n) => typeof n === 'bigint'; // is big integer\nconst isStr = (s) => typeof s === 'string'; // is string\nconst isBytes = (a) => a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n/** assert is Uint8Array (of specific length) */\nconst abytes = (a, l) => !isBytes(a) || (typeof l === 'number' && l > 0 && a.length !== l)\n ? err('Uint8Array expected')\n : a;\n/** create Uint8Array */\nconst u8n = (len) => new Uint8Array(len);\nconst u8fr = (buf) => Uint8Array.from(buf);\nconst padh = (n, pad) => n.toString(16).padStart(pad, '0');\nconst bytesToHex = (b) => Array.from(abytes(b))\n .map((e) => padh(e, 2))\n .join('');\nconst C = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 }; // ASCII characters\nconst _ch = (ch) => {\n if (ch >= C._0 && ch <= C._9)\n return ch - C._0; // '2' => 50-48\n if (ch >= C.A && ch <= C.F)\n return ch - (C.A - 10); // 'B' => 66-(65-10)\n if (ch >= C.a && ch <= C.f)\n return ch - (C.a - 10); // 'b' => 98-(97-10)\n return;\n};\nconst hexToBytes = (hex) => {\n const e = 'hex invalid';\n if (!isStr(hex))\n return err(e);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2)\n return err(e);\n const array = u8n(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n // treat each char as ASCII\n const n1 = _ch(hex.charCodeAt(hi)); // parse first char, multiply it by 16\n const n2 = _ch(hex.charCodeAt(hi + 1)); // parse second char\n if (n1 === undefined || n2 === undefined)\n return err(e);\n array[ai] = n1 * 16 + n2; // example: 'A9' => 10*16 + 9\n }\n return array;\n};\n/** normalize hex or ui8a to ui8a */\nconst toU8 = (a, len) => abytes(isStr(a) ? hexToBytes(a) : u8fr(abytes(a)), len);\nconst cr = () => globalThis?.crypto; // WebCrypto is available in all modern environments\nconst subtle = () => cr()?.subtle ?? err('crypto.subtle must be defined');\n// prettier-ignore\nconst concatBytes = (...arrs) => {\n const r = u8n(arrs.reduce((sum, a) => sum + abytes(a).length, 0)); // create u8a of summed length\n let pad = 0; // walk through each array,\n arrs.forEach(a => { r.set(a, pad); pad += a.length; }); // ensure they have proper type\n return r;\n};\n/** WebCrypto OS-level CSPRNG (random number generator). Will throw when not available. */\nconst randomBytes = (len = L) => {\n const c = cr();\n return c.getRandomValues(u8n(len));\n};\nconst big = BigInt;\nconst arange = (n, min, max, msg = 'bad number: out of range') => isBig(n) && min <= n && n < max ? n : err(msg);\n/** modular division */\nconst M = (a, b = P) => {\n const r = a % b;\n return r >= 0n ? r : b + r;\n};\nconst modN = (a) => M(a, N);\n/** Modular inversion using eucledian GCD (non-CT). No negative exponent for now. */\n// prettier-ignore\nconst invert = (num, md) => {\n if (num === 0n || md <= 0n)\n err('no inverse n=' + num + ' mod=' + md);\n let a = M(num, md), b = md, x = 0n, y = 1n, u = 1n, v = 0n;\n while (a !== 0n) {\n const q = b / a, r = b % a;\n const m = x - u * q, n = y - v * q;\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n return b === 1n ? M(x, md) : err('no inverse'); // b is gcd at this point\n};\nconst callHash = (name) => {\n // @ts-ignore\n const fn = etc[name];\n if (typeof fn !== 'function')\n err('hashes.' + name + ' not set');\n return fn;\n};\nconst apoint = (p) => (p instanceof Point ? p : err('Point expected'));\n// ## End of Helpers\n// -----------------\nconst B256 = 2n ** 256n;\n/** Point in XYZT extended coordinates. */\nclass Point {\n static BASE;\n static ZERO;\n ex;\n ey;\n ez;\n et;\n constructor(ex, ey, ez, et) {\n const max = B256;\n this.ex = arange(ex, 0n, max);\n this.ey = arange(ey, 0n, max);\n this.ez = arange(ez, 1n, max);\n this.et = arange(et, 0n, max);\n Object.freeze(this);\n }\n static fromAffine(p) {\n return new Point(p.x, p.y, 1n, M(p.x * p.y));\n }\n /** RFC8032 5.1.3: Uint8Array to Point. */\n static fromBytes(hex, zip215 = false) {\n const d = _d;\n // Copy array to not mess it up.\n const normed = u8fr(abytes(hex, L));\n // adjust first LE byte = last BE byte\n const lastByte = hex[31];\n normed[31] = lastByte & ~0x80;\n const y = bytesToNumLE(normed);\n // zip215=true: 0 <= y < 2^256\n // zip215=false, RFC8032: 0 <= y < 2^255-19\n const max = zip215 ? B256 : P;\n arange(y, 0n, max);\n const y2 = M(y * y); // y²\n const u = M(y2 - 1n); // u=y²-1\n const v = M(d * y2 + 1n); // v=dy²+1\n let { isValid, value: x } = uvRatio(u, v); // (uv³)(uv⁷)^(p-5)/8; square root\n if (!isValid)\n err('bad point: y not sqrt'); // not square root: bad point\n const isXOdd = (x & 1n) === 1n; // adjust sign of x coordinate\n const isLastByteOdd = (lastByte & 0x80) !== 0; // x_0, last bit\n if (!zip215 && x === 0n && isLastByteOdd)\n err('bad point: x==0, isLastByteOdd'); // x=0, x_0=1\n if (isLastByteOdd !== isXOdd)\n x = M(-x);\n return new Point(x, y, 1n, M(x * y)); // Z=1, T=xy\n }\n /** Checks if the point is valid and on-curve. */\n assertValidity() {\n const a = _a;\n const d = _d;\n const p = this;\n if (p.is0())\n throw new Error('bad point: ZERO'); // TODO: optimize, with vars below?\n // Equation in affine coordinates: ax² + y² = 1 + dx²y²\n // Equation in projective coordinates (X/Z, Y/Z, Z): (aX² + Y²)Z² = Z⁴ + dX²Y²\n const { ex: X, ey: Y, ez: Z, et: T } = p;\n const X2 = M(X * X); // X²\n const Y2 = M(Y * Y); // Y²\n const Z2 = M(Z * Z); // Z²\n const Z4 = M(Z2 * Z2); // Z⁴\n const aX2 = M(X2 * a); // aX²\n const left = M(Z2 * M(aX2 + Y2)); // (aX² + Y²)Z²\n const right = M(Z4 + M(d * M(X2 * Y2))); // Z⁴ + dX²Y²\n if (left !== right)\n throw new Error('bad point: equation left != right (1)');\n // In Extended coordinates we also have T, which is x*y=T/Z: check X*Y == Z*T\n const XY = M(X * Y);\n const ZT = M(Z * T);\n if (XY !== ZT)\n throw new Error('bad point: equation left != right (2)');\n return this;\n }\n /** Equality check: compare points P&Q. */\n equals(other) {\n const { ex: X1, ey: Y1, ez: Z1 } = this;\n const { ex: X2, ey: Y2, ez: Z2 } = apoint(other); // checks class equality\n const X1Z2 = M(X1 * Z2);\n const X2Z1 = M(X2 * Z1);\n const Y1Z2 = M(Y1 * Z2);\n const Y2Z1 = M(Y2 * Z1);\n return X1Z2 === X2Z1 && Y1Z2 === Y2Z1;\n }\n is0() {\n return this.equals(I);\n }\n /** Flip point over y coordinate. */\n negate() {\n return new Point(M(-this.ex), this.ey, this.ez, M(-this.et));\n }\n /** Point doubling. Complete formula. Cost: `4M + 4S + 1*a + 6add + 1*2`. */\n double() {\n const { ex: X1, ey: Y1, ez: Z1 } = this;\n const a = _a;\n // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#doubling-dbl-2008-hwcd\n const A = M(X1 * X1);\n const B = M(Y1 * Y1);\n const C = M(2n * M(Z1 * Z1));\n const D = M(a * A);\n const x1y1 = X1 + Y1;\n const E = M(M(x1y1 * x1y1) - A - B);\n const G = D + B;\n const F = G - C;\n const H = D - B;\n const X3 = M(E * F);\n const Y3 = M(G * H);\n const T3 = M(E * H);\n const Z3 = M(F * G);\n return new Point(X3, Y3, Z3, T3);\n }\n /** Point addition. Complete formula. Cost: `8M + 1*k + 8add + 1*2`. */\n add(other) {\n const { ex: X1, ey: Y1, ez: Z1, et: T1 } = this;\n const { ex: X2, ey: Y2, ez: Z2, et: T2 } = apoint(other); // doesn't check if other on-curve\n const a = _a;\n const d = _d;\n // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html#addition-add-2008-hwcd-3\n const A = M(X1 * X2);\n const B = M(Y1 * Y2);\n const C = M(T1 * d * T2);\n const D = M(Z1 * Z2);\n const E = M((X1 + Y1) * (X2 + Y2) - A - B);\n const F = M(D - C);\n const G = M(D + C);\n const H = M(B - a * A);\n const X3 = M(E * F);\n const Y3 = M(G * H);\n const T3 = M(E * H);\n const Z3 = M(F * G);\n return new Point(X3, Y3, Z3, T3);\n }\n /**\n * Point-by-scalar multiplication. Scalar must be in range 1 <= n < CURVE.n.\n * Uses {@link wNAF} for base point.\n * Uses fake point to mitigate side-channel leakage.\n * @param n scalar by which point is multiplied\n * @param safe safe mode guards against timing attacks; unsafe mode is faster\n */\n multiply(n, safe = true) {\n if (!safe && (n === 0n || this.is0()))\n return I;\n arange(n, 1n, N);\n if (n === 1n)\n return this;\n if (this.equals(G))\n return wNAF(n).p;\n // init result point & fake point\n let p = I;\n let f = G;\n for (let d = this; n > 0n; d = d.double(), n >>= 1n) {\n // if bit is present, add to point\n // if not present, add to fake, for timing safety\n if (n & 1n)\n p = p.add(d);\n else if (safe)\n f = f.add(d);\n }\n return p;\n }\n /** Convert point to 2d xy affine point. (X, Y, Z) ∋ (x=X/Z, y=Y/Z) */\n toAffine() {\n const { ex: x, ey: y, ez: z } = this;\n // fast-paths for ZERO point OR Z=1\n if (this.equals(I))\n return { x: 0n, y: 1n };\n const iz = invert(z, P);\n // (Z * Z^-1) must be 1, otherwise bad math\n if (M(z * iz) !== 1n)\n err('invalid inverse');\n // x = X*Z^-1; y = Y*Z^-1\n return { x: M(x * iz), y: M(y * iz) };\n }\n toBytes() {\n const { x, y } = this.assertValidity().toAffine();\n const b = numTo32bLE(y);\n // store sign in first LE byte\n b[31] |= x & 1n ? 0x80 : 0;\n return b;\n }\n toHex() {\n return bytesToHex(this.toBytes());\n } // encode to hex string\n clearCofactor() {\n return this.multiply(big(h), false);\n }\n isSmallOrder() {\n return this.clearCofactor().is0();\n }\n isTorsionFree() {\n // multiply by big number CURVE.n\n let p = this.multiply(N / 2n, false).double(); // ensures the point is not \"bad\".\n if (N % 2n)\n p = p.add(this); // P^(N+1) // P*N == (P*(N/2))*2+P\n return p.is0();\n }\n static fromHex(hex, zip215) {\n return Point.fromBytes(toU8(hex), zip215);\n }\n get x() {\n return this.toAffine().x;\n }\n get y() {\n return this.toAffine().y;\n }\n toRawBytes() {\n return this.toBytes();\n }\n}\n/** Generator / base point */\nconst G = new Point(Gx, Gy, 1n, M(Gx * Gy));\n/** Identity / zero point */\nconst I = new Point(0n, 1n, 1n, 0n);\n// Static aliases\nPoint.BASE = G;\nPoint.ZERO = I;\nconst numTo32bLE = (num) => hexToBytes(padh(arange(num, 0n, B256), L2)).reverse();\nconst bytesToNumLE = (b) => big('0x' + bytesToHex(u8fr(abytes(b)).reverse()));\nconst pow2 = (x, power) => {\n // pow2(x, 4) == x^(2^4)\n let r = x;\n while (power-- > 0n) {\n r *= r;\n r %= P;\n }\n return r;\n};\n// prettier-ignore\nconst pow_2_252_3 = (x) => {\n const x2 = (x * x) % P; // x^2, bits 1\n const b2 = (x2 * x) % P; // x^3, bits 11\n const b4 = (pow2(b2, 2n) * b2) % P; // x^(2^4-1), bits 1111\n const b5 = (pow2(b4, 1n) * x) % P; // x^(2^5-1), bits 11111\n const b10 = (pow2(b5, 5n) * b5) % P; // x^(2^10)\n const b20 = (pow2(b10, 10n) * b10) % P; // x^(2^20)\n const b40 = (pow2(b20, 20n) * b20) % P; // x^(2^40)\n const b80 = (pow2(b40, 40n) * b40) % P; // x^(2^80)\n const b160 = (pow2(b80, 80n) * b80) % P; // x^(2^160)\n const b240 = (pow2(b160, 80n) * b80) % P; // x^(2^240)\n const b250 = (pow2(b240, 10n) * b10) % P; // x^(2^250)\n const pow_p_5_8 = (pow2(b250, 2n) * x) % P; // < To pow to (p+3)/8, multiply it by x.\n return { pow_p_5_8, b2 };\n};\nconst RM1 = 0x2b8324804fc1df0b2b4d00993dfbd7a72f431806ad2fe478c4ee1b274a0ea0b0n; // √-1\n// for sqrt comp\n// prettier-ignore\nconst uvRatio = (u, v) => {\n const v3 = M(v * v * v); // v³\n const v7 = M(v3 * v3 * v); // v⁷\n const pow = pow_2_252_3(u * v7).pow_p_5_8; // (uv⁷)^(p-5)/8\n let x = M(u * v3 * pow); // (uv³)(uv⁷)^(p-5)/8\n const vx2 = M(v * x * x); // vx²\n const root1 = x; // First root candidate\n const root2 = M(x * RM1); // Second root candidate; RM1 is √-1\n const useRoot1 = vx2 === u; // If vx² = u (mod p), x is a square root\n const useRoot2 = vx2 === M(-u); // If vx² = -u, set x <-- x * 2^((p-1)/4)\n const noRoot = vx2 === M(-u * RM1); // There is no valid root, vx² = -u√-1\n if (useRoot1)\n x = root1;\n if (useRoot2 || noRoot)\n x = root2; // We return root2 anyway, for const-time\n if ((M(x) & 1n) === 1n)\n x = M(-x); // edIsNegative\n return { isValid: useRoot1 || useRoot2, value: x };\n};\n// N == L, just weird naming\nconst modL_LE = (hash) => modN(bytesToNumLE(hash)); // modulo L; but little-endian\nconst sha512a = (...m) => etc.sha512Async(...m); // Async SHA512\nconst sha512s = (...m) => callHash('sha512Sync')(...m);\n// RFC8032 5.1.5\nconst hash2extK = (hashed) => {\n // slice creates a copy, unlike subarray\n const head = hashed.slice(0, L);\n head[0] &= 248; // Clamp bits: 0b1111_1000\n head[31] &= 127; // 0b0111_1111\n head[31] |= 64; // 0b0100_0000\n const prefix = hashed.slice(L, L2); // private key \"prefix\"\n const scalar = modL_LE(head); // modular division over curve order\n const point = G.multiply(scalar); // public key point\n const pointBytes = point.toBytes(); // point serialized to Uint8Array\n return { head, prefix, scalar, point, pointBytes };\n};\n// RFC8032 5.1.5; getPublicKey async, sync. Hash priv key and extract point.\nconst getExtendedPublicKeyAsync = (priv) => sha512a(toU8(priv, L)).then(hash2extK);\nconst getExtendedPublicKey = (priv) => hash2extK(sha512s(toU8(priv, L)));\n/** Creates 32-byte ed25519 public key from 32-byte private key. Async. */\nconst getPublicKeyAsync = (priv) => getExtendedPublicKeyAsync(priv).then((p) => p.pointBytes);\n/** Creates 32-byte ed25519 public key from 32-byte private key. To use, set `etc.sha512Sync` first. */\nconst getPublicKey = (priv) => getExtendedPublicKey(priv).pointBytes;\nconst hashFinishA = (res) => sha512a(res.hashable).then(res.finish);\nconst hashFinishS = (res) => res.finish(sha512s(res.hashable));\nconst _sign = (e, rBytes, msg) => {\n // sign() shared code\n const { pointBytes: P, scalar: s } = e;\n const r = modL_LE(rBytes); // r was created outside, reduce it modulo L\n const R = G.multiply(r).toBytes(); // R = [r]B\n const hashable = concatBytes(R, P, msg); // dom2(F, C) || R || A || PH(M)\n const finish = (hashed) => {\n // k = SHA512(dom2(F, C) || R || A || PH(M))\n const S = modN(r + modL_LE(hashed) * s); // S = (r + k * s) mod L; 0 <= s < l\n return abytes(concatBytes(R, numTo32bLE(S)), L2); // 64-byte sig: 32b R.x + 32b LE(S)\n };\n return { hashable, finish };\n};\n/**\n * Signs message (NOT message hash) using private key. Async.\n * Follows RFC8032 5.1.6.\n */\nconst signAsync = async (msg, privKey) => {\n const m = toU8(msg);\n const e = await getExtendedPublicKeyAsync(privKey);\n const rBytes = await sha512a(e.prefix, m); // r = SHA512(dom2(F, C) || prefix || PH(M))\n return hashFinishA(_sign(e, rBytes, m)); // gen R, k, S, then 64-byte signature\n};\n/**\n * Signs message (NOT message hash) using private key. To use, set `hashes.sha512` first.\n * Follows RFC8032 5.1.6.\n */\nconst sign = (msg, privKey) => {\n const m = toU8(msg);\n const e = getExtendedPublicKey(privKey);\n const rBytes = sha512s(e.prefix, m); // r = SHA512(dom2(F, C) || prefix || PH(M))\n return hashFinishS(_sign(e, rBytes, m)); // gen R, k, S, then 64-byte signature\n};\nconst veriOpts = { zip215: true };\nconst _verify = (sig, msg, pub, opts = veriOpts) => {\n sig = toU8(sig, L2); // Signature hex str/Bytes, must be 64 bytes\n msg = toU8(msg); // Message hex str/Bytes\n pub = toU8(pub, L);\n const { zip215 } = opts; // switch between zip215 and rfc8032 verif\n let A;\n let R;\n let s;\n let SB;\n let hashable = Uint8Array.of();\n try {\n A = Point.fromHex(pub, zip215); // public key A decoded\n R = Point.fromHex(sig.slice(0, L), zip215); // 0 <= R < 2^256: ZIP215 R can be >= P\n s = bytesToNumLE(sig.slice(L, L2)); // Decode second half as an integer S\n SB = G.multiply(s, false); // in the range 0 <= s < L\n hashable = concatBytes(R.toBytes(), A.toBytes(), msg); // dom2(F, C) || R || A || PH(M)\n }\n catch (error) { }\n const finish = (hashed) => {\n // k = SHA512(dom2(F, C) || R || A || PH(M))\n if (SB == null)\n return false; // false if try-catch catched an error\n if (!zip215 && A.isSmallOrder())\n return false; // false for SBS: Strongly Binding Signature\n const k = modL_LE(hashed); // decode in little-endian, modulo L\n const RkA = R.add(A.multiply(k, false)); // [8]R + [8][k]A'\n return RkA.add(SB.negate()).clearCofactor().is0(); // [8][S]B = [8]R + [8][k]A'\n };\n return { hashable, finish };\n};\n/** Verifies signature on message and public key. Async. Follows RFC8032 5.1.7. */\nconst verifyAsync = async (s, m, p, opts = veriOpts) => hashFinishA(_verify(s, m, p, opts));\n/** Verifies signature on message and public key. To use, set `hashes.sha512` first. Follows RFC8032 5.1.7. */\nconst verify = (s, m, p, opts = veriOpts) => hashFinishS(_verify(s, m, p, opts));\n/** Math, hex, byte helpers. Not in `utils` because utils share API with noble-curves. */\nconst etc = {\n sha512Async: async (...messages) => {\n const s = subtle();\n const m = concatBytes(...messages);\n return u8n(await s.digest('SHA-512', m.buffer));\n },\n sha512Sync: undefined,\n bytesToHex: bytesToHex,\n hexToBytes: hexToBytes,\n concatBytes: concatBytes,\n mod: M,\n invert: invert,\n randomBytes: randomBytes,\n};\n/** ed25519-specific key utilities. */\nconst utils = {\n getExtendedPublicKeyAsync: getExtendedPublicKeyAsync,\n getExtendedPublicKey: getExtendedPublicKey,\n randomPrivateKey: () => randomBytes(L),\n precompute: (w = 8, p = G) => {\n p.multiply(3n);\n w;\n return p;\n }, // no-op\n};\n// ## Precomputes\n// --------------\nconst W = 8; // W is window size\nconst scalarBits = 256;\nconst pwindows = Math.ceil(scalarBits / W) + 1; // 33 for W=8\nconst pwindowSize = 2 ** (W - 1); // 128 for W=8\nconst precompute = () => {\n const points = [];\n let p = G;\n let b = p;\n for (let w = 0; w < pwindows; w++) {\n b = p;\n points.push(b);\n for (let i = 1; i < pwindowSize; i++) {\n b = b.add(p);\n points.push(b);\n } // i=1, bc we skip 0\n p = b.double();\n }\n return points;\n};\nlet Gpows = undefined; // precomputes for base point G\n// const-time negate\nconst ctneg = (cnd, p) => {\n const n = p.negate();\n return cnd ? n : p;\n};\n/**\n * Precomputes give 12x faster getPublicKey(), 10x sign(), 2x verify() by\n * caching multiples of G (base point). Cache is stored in 32MB of RAM.\n * Any time `G.multiply` is done, precomputes are used.\n * Not used for getSharedSecret, which instead multiplies random pubkey `P.multiply`.\n *\n * w-ary non-adjacent form (wNAF) precomputation method is 10% slower than windowed method,\n * but takes 2x less RAM. RAM reduction is possible by utilizing `.subtract`.\n *\n * !! Precomputes can be disabled by commenting-out call of the wNAF() inside Point#multiply().\n */\nconst wNAF = (n) => {\n const comp = Gpows || (Gpows = precompute());\n let p = I;\n let f = G; // f must be G, or could become I in the end\n const pow_2_w = 2 ** W; // 256 for W=8\n const maxNum = pow_2_w; // 256 for W=8\n const mask = big(pow_2_w - 1); // 255 for W=8 == mask 0b11111111\n const shiftBy = big(W); // 8 for W=8\n for (let w = 0; w < pwindows; w++) {\n let wbits = Number(n & mask); // extract W bits.\n n >>= shiftBy; // shift number by W bits.\n if (wbits > pwindowSize) {\n wbits -= maxNum;\n n += 1n;\n } // split if bits > max: +224 => 256-32\n const off = w * pwindowSize;\n const offF = off; // offsets, evaluate both\n const offP = off + Math.abs(wbits) - 1;\n const isEven = w % 2 !== 0; // conditions, evaluate both\n const isNeg = wbits < 0;\n if (wbits === 0) {\n // off == I: can't add it. Adding random offF instead.\n f = f.add(ctneg(isEven, comp[offF])); // bits are 0: add garbage to fake point\n }\n else {\n p = p.add(ctneg(isNeg, comp[offP])); // bits are 1: add to result point\n }\n }\n return { p, f }; // return both real and fake points for JIT\n};\n// !! Remove the export to easily use in REPL / browser console\nexport { ed25519_CURVE as CURVE, etc, Point as ExtendedPoint, getPublicKey, getPublicKeyAsync, Point, sign, signAsync, utils, verify, verifyAsync, };\n","import { OrderlyKeyStore } from \"./keyStore\";\nimport { base64url, getTimestamp } from \"./utils\";\n\nimport { Buffer } from \"buffer\";\n// window.Buffer = window.Buffer || Buffer;\n\nexport type MessageFactor = {\n url: string;\n\n method: \"GET\" | \"POST\" | \"PUT\" | \"DELETE\";\n\n data?: any;\n};\n\nexport type SignedMessagePayload = {\n \"orderly-key\": string;\n \"orderly-timestamp\": string;\n \"orderly-signature\": string;\n \"orderly-account-id\"?: string;\n};\n\n/**\n * Singer interface\n * @example\n * ```ts\n * const signer = new BaseSigner(keyStore);\n * const payload = await signer.sign({\n * url: \"https://api.orderly.io/get_account?address=0x1234567890&brokerId=orderly\",\n * method: \"GET\",\n * data: {\n * address: \"0x1234567890\",\n * brokerId: \"orderly\",\n * },\n * });\n * ```\n */\nexport interface Signer {\n sign: (\n data: MessageFactor,\n timestamp?: number\n ) => Promise<SignedMessagePayload>;\n signText: (text: string) => Promise<{ signature: string; publicKey: string }>;\n}\n\nexport class BaseSigner implements Signer {\n constructor(private readonly keyStore: OrderlyKeyStore) {}\n\n async sign(\n message: MessageFactor,\n timestamp = getTimestamp()\n ): Promise<SignedMessagePayload> {\n const _timestamp = timestamp.toString();\n\n let msgStr = [_timestamp, message.method.toUpperCase(), message.url].join(\n \"\"\n );\n\n if (message.data && Object.keys(message.data).length) {\n msgStr += JSON.stringify(message.data);\n }\n\n const { signature, publicKey } = await this.signText(msgStr);\n\n return {\n \"orderly-key\": publicKey,\n \"orderly-timestamp\": _timestamp,\n \"orderly-signature\": signature,\n };\n }\n\n async signText(\n text: string\n ): Promise<{ signature: string; publicKey: string }> {\n const orderlyKeyPair = this.keyStore.getOrderlyKey();\n\n if (!orderlyKeyPair) {\n throw new Error(\"orderlyKeyPair is not defined\");\n }\n\n const u8 = Buffer.from(text);\n\n const signature = await orderlyKeyPair.sign(u8 as unknown as Uint8Array);\n\n const signHex = Buffer.from(signature).toString(\"base64\");\n\n const b64 = base64url(signHex);\n\n return {\n signature: b64,\n publicKey: await orderlyKeyPair.getPublicKey(),\n };\n }\n}\n","import {\n keccak256,\n AbiCoder,\n solidityPackedKeccak256,\n parseUnits,\n formatUnits,\n Numeric,\n} from \"ethers\";\nimport type { BigNumberish } from \"ethers/src.ts/utils\";\n\nexport { parseUnits } from \"ethers\";\n\nexport type SignatureDomain = {\n name: string;\n version: string;\n chainId: number;\n verifyingContract: string;\n};\n\nexport const base64url = function (aStr: string): string {\n return aStr.replace(/\\+/g, \"-\").replace(/\\//g, \"_\");\n};\n\nexport function parseBrokerHash(brokerId: string) {\n return calculateStringHash(brokerId);\n}\n\nexport function parseAccountId(userAddress: string, brokerId: string) {\n const abicoder = AbiCoder.defaultAbiCoder();\n return keccak256(\n abicoder.encode(\n [\"address\", \"bytes32\"],\n [userAddress, parseBrokerHash(brokerId)]\n )\n );\n}\n\nexport function parseTokenHash(tokenSymbol: string) {\n return calculateStringHash(tokenSymbol);\n}\n\nexport function calculateStringHash(input: string) {\n return solidityPackedKeccak256([\"string\"], [input]);\n}\n\n// export function parseUnits(amount: string) {\n// return parseUnits(amount, 6).toString();\n// }\n\nexport function formatByUnits(\n amount: BigNumberish,\n unit: number | \"ether\" | \"gwei\" = \"ether\"\n) {\n return formatUnits(amount, unit);\n}\n\nexport function isHex(value: string): boolean {\n const hexRegex = /^[a-f0-9]+$/iu;\n return hexRegex.test(value);\n}\n\nexport function isHexString(value: string): boolean {\n return typeof value === \"string\" && value.startsWith(\"0x\") && isHex(value);\n}\n\nexport const getGlobalObject = () => {\n if (typeof globalThis !== \"undefined\") {\n return globalThis;\n }\n if (typeof self !== \"undefined\") {\n return self;\n }\n if (typeof window !== \"undefined\") {\n return window;\n }\n // @ts-ignore\n if (typeof global !== \"undefined\") {\n // @ts-ignore\n return global;\n }\n throw new Error(\"cannot find the global object\");\n};\n\n/// get timestamp\nexport const getTimestamp = (): number => {\n if (typeof window !== \"undefined\") {\n // @ts-ignore\n const timeOffset = getGlobalObject()?.__ORDERLY_timestamp_offset;\n if (typeof timeOffset === \"number\") {\n return Date.now() + (timeOffset || 0);\n }\n }\n return Date.now();\n};\n","import { DEFAUL_ORDERLY_KEY_SCOPE, definedTypes } from \"@kodiak-finance/orderly-types\";\nimport { LocalStorageStore, MockKeyStore } from \"./keyStore\";\nimport { BaseSigner } from \"./signer\";\nimport { getTimestamp, SignatureDomain } from \"./utils\";\n\nexport const getMockSigner = (secretKey?: string) => {\n const mockKeyStore = new MockKeyStore(\n secretKey || \"AFmQSju4FhDwG93cMdKogcnKx7SWmViDtDv5PVzfvRDF\",\n // \"c24fe227663f5a73493cad3f4049514f70623177272d57fffa8cb895fa1f92de\"\n );\n\n return new BaseSigner(mockKeyStore);\n};\n\nexport const getDefaultSigner = () => {\n if (typeof window === \"undefined\") {\n throw new Error(\"the default signer only supports browsers.\");\n }\n\n const localStorageStore = new LocalStorageStore(\"\");\n\n return new BaseSigner(localStorageStore);\n};\n\nexport function getVerifyingContract() {\n return \"0x8794E7260517B1766fc7b55cAfcd56e6bf08600e\";\n}\n\nexport function getDomain(chainId: number, onChainDomain?: boolean) {\n return {\n name: \"Orderly\",\n version: \"1\",\n chainId,\n verifyingContract: onChainDomain\n ? getVerifyingContract()\n : \"0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC\",\n };\n}\n\n/**\n * generate `registerAccount` data and to be signed message structure\n */\nexport function generateRegisterAccountMessage(inputs: {\n chainId: number;\n registrationNonce: number;\n brokerId: string;\n timestamp?: number;\n}) {\n const {\n chainId,\n registrationNonce,\n brokerId,\n timestamp = getTimestamp(),\n } = inputs;\n // const now = Date.now();\n const primaryType = \"Registration\";\n const message = {\n brokerId,\n chainId,\n timestamp,\n registrationNonce,\n };\n\n const typeDefinition = {\n EIP712Domain: definedTypes.EIP712Domain,\n [primaryType]: definedTypes[primaryType],\n };\n\n const toSignatureMessage = {\n domain: getDomain(chainId),\n message,\n primaryType,\n types: typeDefinition,\n };\n\n return [message, toSignatureMessage] as const;\n}\n\n/**\n * generate `addOrderlyKey` data and to be signed message structure\n */\nexport function generateAddOrderlyKeyMessage(inputs: {\n publicKey: string;\n chainId: number;\n brokerId: string;\n primaryType: keyof typeof definedTypes;\n expiration?: number;\n timestamp?: number;\n scope?: string;\n tag?: string;\n subAccountId?: string;\n}) {\n const {\n publicKey,\n chainId,\n primaryType,\n brokerId,\n expiration = 365,\n timestamp = getTimestamp(),\n scope,\n tag,\n subAccountId,\n } = inputs;\n // const now = Date.now();\n // message;\n const message = {\n brokerId,\n orderlyKey: publicKey,\n scope: scope || DEFAUL_ORDERLY_KEY_SCOPE,\n chainId,\n timestamp,\n expiration: timestamp + 1000 * 60 * 60 * 24 * expiration,\n ...(typeof tag !== \"undefined\" ? { tag } : {}),\n ...(typeof subAccountId !== \"undefined\" ? { subAccountId } : {}),\n };\n\n const typeDefinition = {\n EIP712Domain: definedTypes.EIP712Domain,\n [primaryType]: definedTypes[primaryType],\n };\n\n const toSignatureMessage = {\n domain: getDomain(chainId),\n message,\n primaryType,\n types: typeDefinition,\n };\n\n return [message, toSignatureMessage] as const;\n}\n\n/**\n * generate `settle` data and to be signed message structure\n */\nexport function generateSettleMessage(inputs: {\n chainId: number;\n brokerId: string;\n settlePnlNonce: string;\n domain: SignatureDomain;\n}) {\n const { chainId, settlePnlNonce, domain, brokerId } = inputs;\n const primaryType = \"SettlePnl\";\n const timestamp = getTimestamp();\n\n const typeDefinition = {\n EIP712Domain: definedTypes.EIP712Domain,\n [primaryType]: definedTypes[primaryType],\n };\n\n const message = {\n brokerId,\n chainId: chainId,\n timestamp: timestamp,\n settleNonce: settlePnlNonce,\n };\n\n const toSignatureMessage = {\n domain,\n message,\n primaryType,\n types: typeDefinition,\n };\n\n return [message, toSignatureMessage] as const;\n}\n\n/**\n * generate `dexRequest` data and to be signed message structure\n */\nexport function generateDexRequestMessage(inputs: {\n chainId: number;\n payloadType: number;\n nonce: string;\n receiver: string;\n amount: string;\n vaultId: string;\n token: string;\n dexBrokerId: string;\n domain: SignatureDomain;\n timestamp?: number;\n}) {\n const {\n chainId,\n payloadType,\n nonce,\n receiver,\n amount,\n vaultId,\n token,\n dexBrokerId,\n domain,\n timestamp = getTimestamp(),\n } = inputs;\n\n const primaryType = \"DexRequest\";\n\n const typeDefinition = {\n EIP712Domain: definedTypes.EIP712Domain,\n [primaryType]: definedTypes[primaryType],\n };\n\n const message = {\n payloadType,\n nonce,\n receiver,\n amount,\n vaultId,\n token,\n dexBrokerId,\n };\n\n const toSignatureMessage = {\n domain,\n message,\n primaryType,\n types: typeDefinition,\n };\n\n return [message, toSignatureMessage] as const;\n}\n","import {\n BSC_TESTNET_CHAINID,\n ABSTRACT_CHAIN_ID_MAP,\n MONAD_TESTNET_CHAINID,\n STORY_TESTNET_CHAINID,\n} from \"@kodiak-finance/orderly-types\";\nimport { ConfigStore } from \"./configStore/configStore\";\nimport {\n mainnetUSDCAddress,\n mainnetVaultAddress,\n mainnetVerifyAddress,\n nativeUSDCAddress,\n solanaDevVaultAddress,\n solanaMainnetUSDCAddress,\n solanaMainnetVaultAddress,\n solanaQaVaultAddress,\n solanaStagingVualtAddress,\n solanaUSDCAddress,\n stagingStoryTestnetVaultAddress,\n stagingUSDCAddressOnArbitrumTestnet,\n stagingVaultAddressOnArbitrumTestnet,\n stagingVerifyAddressOnArbitrumTestnet,\n stagingMonadTestnetVaultAddress,\n MonadTestnetUSDCAddress,\n qaMonadTestnetVaultAddress,\n stagingAbstractTestnetVaultAddress,\n AbstractTestnetUSDCAddress,\n abstractMainnetVaultAddress,\n AbstractQaVaultAddress,\n AbstractDevVaultAddress,\n AbstractMainnetUSDCAddress,\n bscMainnetVaultAddress,\n bscMainnetUSDCAddress,\n bscTestnetQaVaultAddress,\n bscTestnetUSDCAddress,\n bscTestnetDevVaultAddress,\n bscTestnetStagingVaultAddress,\n qaArbitrumTestnetVaultAddress,\n} from \"./constants\";\nimport mainnetUSDCAbi from \"./wallet/abis/mainnetUSDCAbi.json\";\nimport mainnetVaultAbi from \"./wallet/abis/mainnetVaultAbi.json\";\nimport stagingUSDCAbiOnArbitrumTestnet from \"./wallet/abis/stagingUSDCAbi.json\";\nimport stagingVaultAbiOnArbitrumTestnet from \"./wallet/abis/stagingVaultAbi.json\";\n\n/**\n * Orderly contracts information\n */\nexport type OrderlyContracts = {\n usdcAddress: string;\n usdcAbi: any;\n erc20Abi: any;\n vaultAddress: string;\n vaultAbi: any;\n verifyContractAddress: string;\n solanaUSDCAddress: string;\n solanaVaultAddress: string;\n // only for testnet, mainnet vault on evm chain is all same address\n storyTestnetVaultAddress?: string;\n monadTestnetVaultAddress?: string;\n monadTestnetUSDCAddress?: string;\n abstractVaultAddress?: string;\n abstractUSDCAddress?: string;\n bscVaultAddress?: string;\n bscUSDCAddress?: string;\n};\n\nexport interface IContract {\n getContractInfoByEnv(): OrderlyContracts;\n}\n\n/** @hidden */\nexport class BaseContract implements IContract {\n constructor(private readonly configStore: ConfigStore) {}\n\n getContractInfoByEnv() {\n const networkId = this.configStore.get(\"networkId\");\n const env = this.configStore.get(\"env\");\n let verifyContractAddress = stagingVerifyAddressOnArbitrumTestnet;\n\n if (networkId === \"mainnet\") {\n return {\n usdcAddress: mainnetUSDCAddress,\n usdcAbi: mainnetUSDCAbi,\n vaultAddress: mainnetVaultAddress,\n vaultAbi: mainnetVaultAbi,\n verifyContractAddress: mainnetVerifyAddress,\n erc20Abi: mainnetUSDCAbi,\n solanaUSDCAddress: solanaMainnetUSDCAddress,\n solanaVaultAddress: solanaMainnetVaultAddress,\n abstractVaultAddress: abstractMainnetVaultAddress,\n abstractUSDCAddress: AbstractMainnetUSDCAddress,\n bscVaultAddress: bscMainnetVaultAddress,\n bscUSDCAddress: bscMainnetUSDCAddress,\n };\n }\n\n let solanaVaultAddress = solanaStagingVualtAddress;\n let storyTestnetVaultAddress = stagingStoryTestnetVaultAddress;\n let monadTestnetVaultAddress = stagingMonadTestnetVaultAddress;\n const monadTestnetUSDCAddress = MonadTestnetUSDCAddress;\n let abstractVaultAddress = stagingAbstractTestnetVaultAddress;\n const abstractUSDCAddress = AbstractTestnetUSDCAddress;\n let bscVaultAddress = bscTestnetStagingVaultAddress;\n let bscUSDCAddress = bscTestnetUSDCAddress;\n let vaultAddress = stagingVaultAddressOnArbitrumTestnet;\n if (env === \"qa\") {\n solanaVaultAddress = solanaQaVaultAddress;\n verifyContractAddress = \"0x50F59504D3623Ad99302835da367676d1f7E3D44\";\n storyTestnetVaultAddress = \"0xFeA61647309cA4624EfF3c86EEEeb76a6F3eaFf7\";\n monadTestnetVaultAddress = qaMonadTestnetVaultAddress;\n abstractVaultAddress = AbstractQaVaultAddress;\n bscVaultAddress = bscTestnetQaVaultAddress;\n bscUSDCAddress = bscTestnetUSDCAddress;\n vaultAddress = qaArbitrumTestnetVaultAddress;\n } else if (env === \"dev\") {\n abstractVaultAddress = AbstractDevVaultAddress;\n bscVaultAddress = bscTestnetDevVaultAddress;\n bscUSDCAddress = bscTestnetUSDCAddress;\n verifyContractAddress = \"0x8794E7260517B1766fc7b55cAfcd56e6bf08600e\";\n }\n\n return {\n usdcAddress: nativeUSDCAddress,\n usdcAbi: stagingUSDCAbiOnArbitrumTestnet,\n vaultAddress: vaultAddress,\n solanaVaultAddress: solanaVaultAddress,\n solanaUSDCAddress: solanaUSDCAddress,\n vaultAbi: stagingVaultAbiOnArbitrumTestnet,\n verifyContractAddress: verifyContractAddress,\n erc20Abi: stagingUSDCAbiOnArbitrumTestnet,\n storyTestnetVaultAddress: storyTestnetVaultAddress,\n monadTestnetVaultAddress: monadTestnetVaultAddress,\n monadTestnetUSDCAddress: monadTestnetUSDCAddress,\n abstractUSDCAddress: abstractUSDCAddress,\n abstractVaultAddress: abstractVaultAddress,\n bscVaultAddress: bscVaultAddress,\n bscUSDCAddress: bscUSDCAddress,\n };\n }\n}\n\nexport function getContractInfoByChainId(\n chainId: number,\n contractInfo: OrderlyContracts,\n) {\n let vaultAddress = contractInfo.vaultAddress;\n let tokenAddress = contractInfo.usdcAddress;\n\n if (chainId === STORY_TESTNET_CHAINID) {\n vaultAddress = contractInfo.storyTestnetVaultAddress ?? \"\";\n }\n\n if (chainId === MONAD_TESTNET_CHAINID) {\n vaultAddress = contractInfo.monadTestnetVaultAddress ?? \"\";\n tokenAddress = contractInfo.monadTestnetUSDCAddress ?? \"\";\n }\n\n if (ABSTRACT_CHAIN_ID_MAP.has(chainId)) {\n vaultAddress = contractInfo.abstractVaultAddress ?? \"\";\n tokenAddress = contractInfo.abstractUSDCAddress ?? \"\";\n }\n\n if (chainId === BSC_TESTNET_CHAINID) {\n vaultAddress = contractInfo.bscVaultAddress ?? \"\";\n tokenAddress = contractInfo.bscUSDCAddress ?? \"\";\n }\n\n return {\n vaultAddress,\n tokenAddress,\n };\n}\n","export const nativeUSDCAddress = \"0xfd064A18f3BF249cf1f87FC203E90D8f650f2d63\";\n\nexport const stagingUSDCAddressOnArbitrumTestnet =\n \"0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d\";\n\nexport const stagingVaultAddressOnArbitrumTestnet =\n \"0x0EaC556c0C2321BA25b9DC01e4e3c95aD5CDCd2f\";\nexport const stagingVerifyAddressOnArbitrumTestnet =\n \"0x1826B75e2ef249173FC735149AE4B8e9ea10abff\";\n\nexport const mainnetUSDCAddress = \"0xaf88d065e77c8cC2239327C5EDb3A432268e5831\";\nexport const mainnetVaultAddress = \"0x816f722424B49Cf1275cc86DA9840Fbd5a6167e9\";\nexport const mainnetVerifyAddress =\n \"0x6F7a338F2aA472838dEFD3283eB360d4Dff5D203\";\n\nexport const solanaMainnetVaultAddress =\n \"ErBmAD61mGFKvrFNaTJuxoPwqrS8GgtwtqJTJVjFWx9Q\";\nexport const solanaStagingVualtAddress =\n \"9shwxWDUNhtwkHocsUAmrNAQfBH2DHh4njdAEdHZZkF2\";\nexport const solanaDevVaultAddress =\n \"EYJq9eU4GMRUriUJBgGoZ8YLQBXcWaciXuSsEXE7ieQS\";\nexport const solanaQaVaultAddress =\n \"5zBjLor7vEraAt4zp2H82sy9MSqFoDnNa1Lx6EYKTYRZ\";\nexport const solanaUSDCAddress = \"4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU\";\nexport const solanaMainnetUSDCAddress =\n \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\";\n\nexport const EVENT_NAMES = {\n statusChanged: \"change:status\",\n validateStart: \"validate:start\",\n validateEnd: \"validate:end\",\n switchAccount: \"switch:account\",\n subAccountCreated: \"account:sub:created\",\n subAccountUpdated: \"account:sub:updated\",\n};\nexport const stagingStoryTestnetVaultAddress =\n \"0x65B99E978d1eeE9CfEdfD463EC7A81317e5A5073\";\n// monad testnet constractconfig\nexport const stagingMonadTestnetVaultAddress =\n \"0x9442e24203e999db4aE87E35Dc0c8F3C610c29A0\";\nexport const MonadTestnetUSDCAddress =\n \"0x77F77926C6596c78f285D230Cd0dC8dC3540e3a6\";\nexport const qaMonadTestnetVaultAddress =\n \"0xdd6E018D747D70C705BA84B67B6eAD7748a57cDa\";\nexport const qaArbitrumTestnetVaultAddress =\n \"0xB15a3a4D451311e03e34d9331C695078Ad5Cf5F1\";\nexport const AbstractMainnetUSDCAddress =\n \"0x84A71ccD554Cc1b02749b35d22F684CC8ec987e1\";\nexport const AbstractTestnetUSDCAddress =\n \"0xa0BB43E2eA7fcE91F07e628d72fD6333e80F47D2\";\nexport const AbstractDevVaultAddress =\n \"0x44Df3723136b7372a61c404Dc1Bd503460833310\";\nexport const AbstractQaVaultAddress =\n \"0xf14Ff11F3bb1011ff42665Ec869c7827c43745Fd\";\nexport const stagingAbstractTestnetVaultAddress =\n \"0x2c65ea2eE7265df755d7258291202690c27C6d2d\";\nexport const abstractMainnetVaultAddress =\n \"0xE80F2396A266e898FBbD251b89CFE65B3e41fD18\";\nexport const bscTestnetDevVaultAddress =\n \"0x27631bCB066704A4576FaB2f36D24D9ffbf80FC1\";\nexport const bscTestnetQaVaultAddress =\n \"0xc93fA36a46bF544537dE3BF1Dec27A1074d71099\";\nexport const bscTestnetStagingVaultAddress =\n \"0xaf2036D5143219fa00dDd90e7A2dbF3E36dba050\";\nexport const bscTestnetUSDCAddress =\n \"0x31873b5804bABE258d6ea008f55e08DD00b7d51E\";\nexport const bscMainnetVaultAddress =\n \"0x816f722424B49Cf1275cc86DA9840Fbd5a6167e9\";\nexport const bscMainnetUSDCAddress =\n \"0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d\";\n","[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"authorizer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"nonce\",\"type\":\"bytes32\"}],\"name\":\"AuthorizationCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"authorizer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"nonce\",\"type\":\"bytes32\"}],\"name\":\"AuthorizationUsed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"Blacklisted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newBlacklister\",\"type\":\"address\"}],\"name\":\"BlacklisterChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"burner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newMasterMinter\",\"type\":\"address\"}],\"name\":\"MasterMinterChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minterAllowedAmount\",\"type\":\"uint256\"}],\"name\":\"MinterConfigured\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldMinter\",\"type\":\"address\"}],\"name\":\"MinterRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Pause\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"PauserChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newRescuer\",\"type\":\"address\"}],\"name\":\"RescuerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"UnBlacklisted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Unpause\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"CANCEL_AUTHORIZATION_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RECEIVE_WITH_AUTHORIZATION_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TRANSFER_WITH_AUTHORIZATION_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"authorizer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"nonce\",\"type\":\"bytes32\"}],\"name\":\"authorizationState\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"blacklist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blacklister\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"authorizer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"nonce\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"cancelAuthorization\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minterAllowedAmount\",\"type\":\"uint256\"}],\"name\":\"configureMinter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currency\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"decrement\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"increment\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tokenSymbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tokenCurrency\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"tokenDecimals\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"newMasterMinter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newPauser\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newBlacklister\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"newName\",\"type\":\"string\"}],\"name\":\"initializeV2\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"lostAndFound\",\"type\":\"address\"}],\"name\":\"initializeV2_1\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"isBlacklisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isMinter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"masterMinter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"}],\"name\":\"minterAllowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauser\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"validAfter\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"validBefore\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"nonce\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"receiveWithAuthorization\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"}],\"name\":\"removeMinter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"rescueERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rescuer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"validAfter\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"validBefore\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"nonce\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"transferWithAuthorization\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"unBlacklist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newBlacklister\",\"type\":\"address\"}],\"name\":\"updateBlacklister\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newMasterMinter\",\"type\":\"address\"}],\"name\":\"updateMasterMinter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newPauser\",\"type\":\"address\"}],\"name\":\"updatePauser\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newRescuer\",\"type\":\"address\"}],\"name\":\"updateRescuer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]","[\n {\n \"inputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [],\n \"name\": \"AccountIdInvalid\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"AddressZero\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"balance\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"amount\",\n \"type\": \"uint128\"\n }\n ],\n \"name\": \"BalanceNotEnough\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"BrokerNotAllowed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"EnumerableSetError\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"OnlyCrossChainManagerCanCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"TokenNotAllowed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ZeroDepositFee\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"accountId\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"userAddress\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint64\",\n \"name\": \"depositNonce\",\n \"type\": \"uint64\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint128\",\n \"name\": \"tokenAmount\",\n \"type\": \"uint128\"\n }\n ],\n \"name\": \"AccountDeposit\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"accountId\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"userAddress\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint64\",\n \"name\": \"depositNonce\",\n \"type\": \"uint64\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint128\",\n \"name\": \"tokenAmount\",\n \"type\": \"uint128\"\n }\n ],\n \"name\": \"AccountDepositTo\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"accountId\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint64\",\n \"name\": \"withdrawNonce\",\n \"type\": \"uint64\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"brokerHash\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint128\",\n \"name\": \"tokenAmount\",\n \"type\": \"uint128\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint128\",\n \"name\": \"fee\",\n \"type\": \"uint128\"\n }\n ],\n \"name\": \"AccountWithdraw\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"oldAddress\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"newAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ChangeCrossChainManager\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"_tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"_tokenAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ChangeTokenAddressAndAllow\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint8\",\n \"name\": \"version\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"previousOwner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnershipTransferred\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Paused\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"_brokerHash\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bool\",\n \"name\": \"_allowed\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"SetAllowedBroker\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"_tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bool\",\n \"name\": \"_allowed\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"SetAllowedToken\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Unpaused\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"allowedToken\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_tokenAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"changeTokenAddressAndAllow\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"crossChainManagerAddress\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"accountId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"brokerHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"tokenAmount\",\n \"type\": \"uint128\"\n }\n ],\n \"internalType\": \"struct VaultTypes.VaultDepositFE\",\n \"name\": \"data\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"deposit\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"accountId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"brokerHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"tokenAmount\",\n \"type\": \"uint128\"\n }\n ],\n \"internalType\": \"struct VaultTypes.VaultDepositFE\",\n \"name\": \"data\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"deposit\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"depositFeeEnabled\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"depositId\",\n \"outputs\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"\",\n \"type\": \"uint64\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"accountId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"brokerHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"tokenAmount\",\n \"type\": \"uint128\"\n }\n ],\n \"internalType\": \"struct VaultTypes.VaultDepositFE\",\n \"name\": \"data\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"depositTo\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"emergencyPause\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"emergencyUnpause\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"_enabled\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"enableDepositFee\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getAllAllowedBroker\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"\",\n \"type\": \"bytes32[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getAllAllowedToken\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"\",\n \"type\": \"bytes32[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_brokerHash\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"getAllowedBroker\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_tokenHash\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"getAllowedToken\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"accountId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"brokerHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"tokenAmount\",\n \"type\": \"uint128\"\n }\n ],\n \"internalType\": \"struct VaultTypes.VaultDepositFE\",\n \"name\": \"data\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"getDepositFee\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"messageTransmitterContract\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"owner\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"paused\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"dstDomain\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"rebalanceId\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"amount\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"burnChainId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"mintChainId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"dstVaultAddress\",\n \"type\": \"address\"\n }\n ],\n \"internalType\": \"struct RebalanceTypes.RebalanceBurnCCData\",\n \"name\": \"data\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"rebalanceBurn\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"rebalanceId\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"amount\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"burnChainId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"mintChainId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"messageBytes\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"messageSignature\",\n \"type\": \"bytes\"\n }\n ],\n \"internalType\": \"struct RebalanceTypes.RebalanceMintCCData\",\n \"name\": \"data\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"rebalanceMint\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"renounceOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_brokerHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"_allowed\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"setAllowedBroker\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"_allowed\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"setAllowedToken\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_crossChainManagerAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setCrossChainManager\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_rebalanceMessengerContract\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setRebalanceMessengerContract\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_tokenMessengerContract\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setTokenMessengerContract\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"tokenMessengerContract\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"transferOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"accountId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"brokerHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"tokenAmount\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"fee\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"withdrawNonce\",\n \"type\": \"uint64\"\n }\n ],\n \"internalType\": \"struct VaultTypes.VaultWithdraw\",\n \"name\": \"data\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"withdraw\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n]","[\n {\n \"inputs\":[\n {\n \"internalType\":\"string\",\n \"name\":\"name_\",\n \"type\":\"string\"\n },\n {\n \"internalType\":\"string\",\n \"name\":\"symbol_\",\n \"type\":\"string\"\n },\n {\n \"internalType\":\"uint8\",\n \"name\":\"decimals_\",\n \"type\":\"uint8\"\n }\n ],\n \"stateMutability\":\"nonpayable\",\n \"type\":\"constructor\"\n },\n {\n \"anonymous\":false,\n \"inputs\":[\n {\n \"indexed\":true,\n \"internalType\":\"address\",\n \"name\":\"owner\",\n \"type\":\"address\"\n },\n {\n \"indexed\":true,\n \"internalType\":\"address\",\n \"name\":\"spender\",\n \"type\":\"address\"\n },\n {\n \"indexed\":false,\n \"internalType\":\"uint256\",\n \"name\":\"value\",\n \"type\":\"uint256\"\n }\n ],\n \"name\":\"Approval\",\n \"type\":\"event\"\n },\n {\n \"anonymous\":false,\n \"inputs\":[\n {\n \"indexed\":true,\n \"internalType\":\"address\",\n \"name\":\"from\",\n \"type\":\"address\"\n },\n {\n \"indexed\":true,\n \"internalType\":\"address\",\n \"name\":\"to\",\n \"type\":\"address\"\n },\n {\n \"indexed\":false,\n \"internalType\":\"uint256\",\n \"name\":\"value\",\n \"type\":\"uint256\"\n }\n ],\n \"name\":\"Transfer\",\n \"type\":\"event\"\n },\n {\n \"inputs\":[\n {\n \"internalType\":\"address\",\n \"name\":\"owner\",\n \"type\":\"address\"\n },\n {\n \"internalType\":\"address\",\n \"name\":\"spender\",\n \"type\":\"address\"\n }\n ],\n \"name\":\"allowance\",\n \"outputs\":[\n {\n \"internalType\":\"uint256\",\n \"name\":\"\",\n \"type\":\"uint256\"\n }\n ],\n \"stateMutability\":\"view\",\n \"type\":\"function\"\n },\n {\n \"inputs\":[\n {\n \"internalType\":\"address\",\n \"name\":\"spender\",\n \"type\":\"address\"\n },\n {\n \"internalType\":\"uint256\",\n \"name\":\"amount\",\n \"type\":\"uint256\"\n }\n ],\n \"name\":\"approve\",\n \"outputs\":[\n {\n \"internalType\":\"bool\",\n \"name\":\"\",\n \"type\":\"bool\"\n }\n ],\n \"stateMutability\":\"nonpayable\",\n \"type\":\"function\"\n },\n {\n \"inputs\":[\n {\n \"internalType\":\"address\",\n \"name\":\"account\",\n \"type\":\"address\"\n }\n ],\n \"name\":\"balanceOf\",\n \"outputs\":[\n {\n \"internalType\":\"uint256\",\n \"name\":\"\",\n \"type\":\"uint256\"\n }\n ],\n \"stateMutability\":\"view\",\n \"type\":\"function\"\n },\n {\n \"inputs\":[\n \n ],\n \"name\":\"decimals\",\n \"outputs\":[\n {\n \"internalType\":\"uint8\",\n \"name\":\"\",\n \"type\":\"uint8\"\n }\n ],\n \"stateMutability\":\"view\",\n \"type\":\"function\"\n },\n {\n \"inputs\":[\n {\n \"internalType\":\"address\",\n \"name\":\"spender\",\n \"type\":\"address\"\n },\n {\n \"internalType\":\"uint256\",\n \"name\":\"subtractedValue\",\n \"type\":\"uint256\"\n }\n ],\n \"name\":\"decreaseAllowance\",\n \"outputs\":[\n {\n \"internalType\":\"bool\",\n \"name\":\"\",\n \"type\":\"bool\"\n }\n ],\n \"stateMutability\":\"nonpayable\",\n \"type\":\"function\"\n },\n {\n \"inputs\":[\n {\n \"internalType\":\"address\",\n \"name\":\"spender\",\n \"type\":\"address\"\n },\n {\n \"internalType\":\"uint256\",\n \"name\":\"addedValue\",\n \"type\":\"uint256\"\n }\n ],\n \"name\":\"increaseAllowance\",\n \"outputs\":[\n {\n \"internalType\":\"bool\",\n \"name\":\"\",\n \"type\":\"bool\"\n }\n ],\n \"stateMutability\":\"nonpayable\",\n \"type\":\"function\"\n },\n {\n \"inputs\":[\n {\n \"internalType\":\"uint256\",\n \"name\":\"amount\",\n \"type\":\"uint256\"\n }\n ],\n \"name\":\"issue\",\n \"outputs\":[\n \n ],\n \"stateMutability\":\"nonpayable\",\n \"type\":\"function\"\n },\n {\n \"inputs\":[\n {\n \"internalType\":\"address\",\n \"name\":\"_to\",\n \"type\":\"address\"\n },\n {\n \"internalType\":\"uint256\",\n \"name\":\"_amount\",\n \"type\":\"uint256\"\n }\n ],\n \"name\":\"mint\",\n \"outputs\":[\n \n ],\n \"stateMutability\":\"nonpayable\",\n \"type\":\"function\"\n },\n {\n \"inputs\":[\n \n ],\n \"name\":\"name\",\n \"outputs\":[\n {\n \"internalType\":\"string\",\n \"name\":\"\",\n \"type\":\"string\"\n }\n ],\n \"stateMutability\":\"view\",\n \"type\":\"function\"\n },\n {\n \"inputs\":[\n {\n \"internalType\":\"bool\",\n \"name\":\"_paused\",\n \"type\":\"bool\"\n }\n ],\n \"name\":\"pauseTransfers\",\n \"outputs\":[\n \n ],\n \"stateMutability\":\"nonpayable\",\n \"type\":\"function\"\n },\n {\n \"inputs\":[\n \n ],\n \"name\":\"symbol\",\n \"outputs\":[\n {\n \"internalType\":\"string\",\n \"name\":\"\",\n \"type\":\"string\"\n }\n ],\n \"stateMutability\":\"view\",\n \"type\":\"function\"\n },\n {\n \"inputs\":[\n \n ],\n \"name\":\"totalSupply\",\n \"outputs\":[\n {\n \"internalType\":\"uint256\",\n \"name\":\"\",\n \"type\":\"uint256\"\n }\n ],\n \"stateMutability\":\"view\",\n \"type\":\"function\"\n },\n {\n \"inputs\":[\n {\n \"internalType\":\"address\",\n \"name\":\"recipient\",\n \"type\":\"address\"\n },\n {\n \"internalType\":\"uint256\",\n \"name\":\"amount\",\n \"type\":\"uint256\"\n }\n ],\n \"name\":\"transfer\",\n \"outputs\":[\n {\n \"internalType\":\"bool\",\n \"name\":\"\",\n \"type\":\"bool\"\n }\n ],\n \"stateMutability\":\"nonpayable\",\n \"type\":\"function\"\n },\n {\n \"inputs\":[\n {\n \"internalType\":\"address\",\n \"name\":\"sender\",\n \"type\":\"address\"\n },\n {\n \"internalType\":\"address\",\n \"name\":\"recipient\",\n \"type\":\"address\"\n },\n {\n \"internalType\":\"uint256\",\n \"name\":\"amount\",\n \"type\":\"uint256\"\n }\n ],\n \"name\":\"transferFrom\",\n \"outputs\":[\n {\n \"internalType\":\"bool\",\n \"name\":\"\",\n \"type\":\"bool\"\n }\n ],\n \"stateMutability\":\"nonpayable\",\n \"type\":\"function\"\n }\n]\n","[\n {\n \"inputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [],\n \"name\": \"AccountIdInvalid\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"AddressZero\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"balance\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"amount\",\n \"type\": \"uint128\"\n }\n ],\n \"name\": \"BalanceNotEnough\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"BrokerNotAllowed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"EnumerableSetError\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"OnlyCrossChainManagerCanCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"TokenNotAllowed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ZeroDepositFee\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"accountId\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"userAddress\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint64\",\n \"name\": \"depositNonce\",\n \"type\": \"uint64\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint128\",\n \"name\": \"tokenAmount\",\n \"type\": \"uint128\"\n }\n ],\n \"name\": \"AccountDeposit\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"accountId\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"userAddress\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint64\",\n \"name\": \"depositNonce\",\n \"type\": \"uint64\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint128\",\n \"name\": \"tokenAmount\",\n \"type\": \"uint128\"\n }\n ],\n \"name\": \"AccountDepositTo\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"accountId\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint64\",\n \"name\": \"withdrawNonce\",\n \"type\": \"uint64\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"brokerHash\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint128\",\n \"name\": \"tokenAmount\",\n \"type\": \"uint128\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint128\",\n \"name\": \"fee\",\n \"type\": \"uint128\"\n }\n ],\n \"name\": \"AccountWithdraw\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"oldAddress\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"newAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ChangeCrossChainManager\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"_tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"_tokenAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ChangeTokenAddressAndAllow\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint8\",\n \"name\": \"version\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"previousOwner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnershipTransferred\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Paused\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"_brokerHash\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bool\",\n \"name\": \"_allowed\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"SetAllowedBroker\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"_tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bool\",\n \"name\": \"_allowed\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"SetAllowedToken\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Unpaused\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"allowedToken\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_tokenAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"changeTokenAddressAndAllow\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"crossChainManagerAddress\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"accountId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"brokerHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"tokenAmount\",\n \"type\": \"uint128\"\n }\n ],\n \"internalType\": \"struct VaultTypes.VaultDepositFE\",\n \"name\": \"data\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"deposit\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"depositFeeEnabled\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"depositId\",\n \"outputs\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"\",\n \"type\": \"uint64\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"accountId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"brokerHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"tokenAmount\",\n \"type\": \"uint128\"\n }\n ],\n \"internalType\": \"struct VaultTypes.VaultDepositFE\",\n \"name\": \"data\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"depositTo\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"emergencyPause\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"emergencyUnpause\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"_enabled\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"enableDepositFee\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getAllAllowedBroker\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"\",\n \"type\": \"bytes32[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getAllAllowedToken\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"\",\n \"type\": \"bytes32[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_brokerHash\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"getAllowedBroker\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_tokenHash\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"getAllowedToken\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"accountId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"brokerHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"tokenAmount\",\n \"type\": \"uint128\"\n }\n ],\n \"internalType\": \"struct VaultTypes.VaultDepositFE\",\n \"name\": \"data\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"getDepositFee\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"messageTransmitterContract\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"owner\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"paused\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"dstDomain\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"rebalanceId\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"amount\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"burnChainId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"mintChainId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"dstVaultAddress\",\n \"type\": \"address\"\n }\n ],\n \"internalType\": \"struct RebalanceTypes.RebalanceBurnCCData\",\n \"name\": \"data\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"rebalanceBurn\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"rebalanceId\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"amount\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"burnChainId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"mintChainId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"messageBytes\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"messageSignature\",\n \"type\": \"bytes\"\n }\n ],\n \"internalType\": \"struct RebalanceTypes.RebalanceMintCCData\",\n \"name\": \"data\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"rebalanceMint\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"renounceOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_brokerHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"_allowed\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"setAllowedBroker\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"_allowed\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"setAllowedToken\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_crossChainManagerAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setCrossChainManager\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_rebalanceMessengerContract\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setRebalanceMessengerContract\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_tokenMessengerContract\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setTokenMessengerContract\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"tokenMessengerContract\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"transferOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"accountId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"brokerHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"tokenAmount\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"fee\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"withdrawNonce\",\n \"type\": \"uint64\"\n }\n ],\n \"internalType\": \"struct VaultTypes.VaultWithdraw\",\n \"name\": \"data\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"withdraw\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n]","import { getGlobalObject } from \"../utils\";\nimport Container from \"./container\";\n\n//https://github.com/kl4n4/typescript-simple-di\nexport class SimpleDI {\n private static KEY = \"__ORDERLY_CONTAINER__\";\n private static container: Container =\n (getGlobalObject() as any)[SimpleDI.KEY] || null;\n\n private static getContainer(): Container {\n if (!SimpleDI.container) {\n (getGlobalObject() as any)[SimpleDI.KEY] = SimpleDI.container =\n new Container();\n }\n return SimpleDI.container;\n }\n\n static register(...serviceClasses: any[]): void {\n SimpleDI.getContainer().register(...serviceClasses);\n }\n\n static registerByName(name: string, serviceClass: any): void {\n SimpleDI.getContainer().registerByName(name, serviceClass);\n }\n\n // static addInjectProperty(target: any, propertyKey: string, serviceName: string = propertyKey): void {\n // SimpleDI.getContainer().addInjectProperty(target, propertyKey, serviceName);\n // }\n\n static get<T = any>(name: string): T {\n return SimpleDI.getContainer().get<T>(name);\n }\n\n static getOr<T = any>(name: string, instance: T): T {\n const s = SimpleDI.getContainer().get<T>(name);\n if (!s) {\n SimpleDI.registerByName(name, instance);\n }\n return instance;\n }\n\n // static getByType<T>(c: new (...args: any[]) => T): T {\n // return SimpleDI.getContainer().getByType(c);\n // }\n\n static getAll(): { [name: string]: any } {\n return SimpleDI.getContainer().getAll();\n }\n\n private constructor() {}\n}\n\nexport default SimpleDI;\n","export class Container {\n private injectProperties: {\n [key: string]: Array<{\n target: any;\n propertyKey: string;\n serviceName: string;\n }>;\n } = {};\n\n public constructor(\n private providers: any[] = [],\n private services: { [name: string]: any } = {},\n ) {}\n\n register(...serviceClasses: any[]): void {\n this.providers.push(...serviceClasses);\n serviceClasses.forEach((serviceClass) => {\n let service = serviceClass;\n if (service instanceof Function) {\n service = new serviceClass();\n }\n this.add(service);\n });\n }\n\n registerByName(name: string, serviceClass: any): void {\n let service = serviceClass;\n if (service instanceof Function) {\n service = new serviceClass();\n }\n this.addByName(name, service);\n }\n\n get<T = any>(name: string): T {\n return this.services[name];\n }\n\n // getByType<T>(c: new (...args: any[]) => T): T {\n // return this.get<T>(c.name.toLowerCase());\n // }\n\n getAll(): { [name: string]: any } {\n return Object.assign({}, this.services);\n }\n\n // addInjectProperty(\n // target: any,\n // propertyKey: string,\n // serviceName: string = propertyKey,\n // ) {\n // if (target) {\n // this.getInjectProperty(serviceName.toLowerCase()).push({\n // target,\n // propertyKey,\n // serviceName,\n // });\n // this.inject(\n // target,\n // propertyKey,\n // this.services[serviceName.toLowerCase()],\n // );\n // }\n // }\n\n private add(service: any): any {\n return this.addByName(service.constructor.name, service);\n }\n\n private addByName(name: string, service: any): any {\n this.services[name] = service;\n this.services[name.toLowerCase()] = service;\n this.injectIntoProperties(service, name);\n return this.get(name);\n }\n\n private inject(target: any, propertyKey: string, service: any) {\n if (target && service) {\n target[propertyKey] = service;\n }\n }\n\n private injectIntoProperties(\n service: any,\n name: string = service.constructor.name,\n ) {\n this.getInjectProperty(name.toLowerCase()).forEach((property) => {\n this.inject(property.target, property.propertyKey, service);\n });\n }\n\n private getInjectProperty(key: string) {\n if (!this.injectProperties[key]) {\n this.injectProperties[key] = [];\n }\n return this.injectProperties[key];\n }\n}\n\nexport default Container;\n","import { PublicKey } from \"@solana/web3.js\";\nimport { AbiCoder, keccak256 } from \"ethers\";\nimport EventEmitter from \"eventemitter3\";\nimport {\n AccountStatusEnum,\n SDKError,\n ChainNamespace,\n API,\n DEFAUL_ORDERLY_KEY_SCOPE,\n EMPTY_LIST,\n} from \"@kodiak-finance/orderly-types\";\nimport { AdditionalInfoRepository } from \"./additionalInfoRepository\";\nimport { Assets } from \"./assets\";\nimport { ConfigStore } from \"./configStore/configStore\";\nimport { EVENT_NAMES } from \"./constants\";\nimport { BaseContract, IContract } from \"./contract\";\nimport { BaseOrderlyKeyPair, OrderlyKeyPair } from \"./keyPair\";\nimport { OrderlyKeyStore } from \"./keyStore\";\nimport { LocalStorageRepository } from \"./repository\";\nimport { BaseSigner, MessageFactor, Signer } from \"./signer\";\nimport { SubAccount } from \"./subAccount\";\nimport {\n getTimestamp,\n isHex,\n parseAccountId,\n parseBrokerHash,\n SignatureDomain,\n} from \"./utils\";\nimport { WalletAdapter } from \"./wallet/walletAdapter\";\nimport { WalletAdapterManager } from \"./walletAdapterManager\";\n\nexport interface AccountState {\n status: AccountStatusEnum;\n\n // checking: boolean;\n\n /**\n * whether the account is validating\n */\n validating: boolean;\n /**\n * whether the account is revalidating\n */\n // revalidating?: boolean;\n\n /**\n * The current active account ID\n * Can be either a root account ID or sub-account ID\n * @since 2.3.0\n */\n accountId?: string;\n /**\n * root account id\n * @since 2.3.0\n */\n mainAccountId?: string;\n /**\n * sub account id\n * @since 2.3.0\n */\n subAccountId?: string | undefined;\n userId?: string;\n address?: string;\n chainNamespace?: ChainNamespace;\n /** new account */\n isNew?: boolean;\n\n connectWallet?: {\n name: string;\n chainId: number;\n };\n\n /**\n * sub accounts\n * @since 2.3.0\n */\n subAccounts?: SubAccount[];\n\n // balance: string;\n // leverage: number;\n}\n\n/**\n * Account\n * @example\n * ```ts\n * const account = new Account();\n * account.login(\"0x1234567890\");\n * ```\n */\nexport class Account {\n static instanceName = \"account\";\n static additionalInfoRepositoryName = \"orderly_walletAdditionalInfo\";\n static ACTIVE_SUB_ACCOUNT_ID_KEY = \"ACTIVE_SUB_ACCOUNT_ID\";\n // private walletClient?: WalletClient;\n private _singer?: Signer;\n\n private _ee = new EventEmitter();\n\n private walletAdapterManager: WalletAdapterManager;\n\n assetsManager: Assets;\n\n private additionalInfoRepository: AdditionalInfoRepository;\n\n private _state: AccountState = {\n status: AccountStatusEnum.NotConnected,\n // balance: \"\",\n // checking: false,\n validating: false, // if address exists, validating is available\n // leverage: Number.NaN,\n isNew: false,\n };\n\n private readonly contractManger;\n\n constructor(\n private readonly configStore: ConfigStore,\n readonly keyStore: OrderlyKeyStore,\n // private readonly getWalletAdapter: getWalletAdapterFunc, // private readonly walletAdapterClass: { new (options: any): WalletAdapter } // private walletClient?: WalletClient\n walletAdapters: WalletAdapter[],\n options?: Partial<{\n /**\n * smart contract configuration class\n * provide contract address and abi\n */\n contracts: IContract;\n }>,\n ) {\n // this._initState();\n\n if (options?.contracts) {\n this.contractManger = options.contracts;\n } else {\n this.contractManger = new BaseContract(configStore);\n }\n\n this.assetsManager = new Assets(configStore, this.contractManger, this);\n this.walletAdapterManager = new WalletAdapterManager(walletAdapters);\n\n this.additionalInfoRepository = new AdditionalInfoRepository(\n new LocalStorageRepository(Account.additionalInfoRepositoryName),\n );\n\n this._bindEvents();\n }\n\n logout() {\n // ...\n }\n\n async setAddress(\n address: string,\n wallet: {\n provider: any;\n chain: { id: string | number; namespace: ChainNamespace };\n wallet: {\n name: string;\n };\n [key: string]: any;\n },\n options?: {\n /**\n * @deprecated will be remove this in next minor version\n */\n validateOrderlyKeyScope?: (scope: string) => boolean;\n },\n ): Promise<AccountStatusEnum> {\n if (!address) throw new SDKError(\"Address is required\");\n if (!wallet) throw new SDKError(\"Wallet is required\");\n if (!wallet?.chain?.id) throw new SDKError(\"Chain id is required\");\n\n if (this.stateValue.address === address) {\n console.warn(\n \"address parameter is the same as the current address, if you want to change chain, please use `switchChain` method.\",\n );\n return this.stateValue.status;\n } else {\n /// emit switch account event\n if (this.stateValue.status > AccountStatusEnum.NotConnected) {\n this._ee.emit(EVENT_NAMES.switchAccount, address);\n }\n }\n\n wallet.chain.id = this.parseChainId(wallet?.chain?.id);\n\n this.keyStore.setAddress(address);\n\n this.saveAdditionalInfo(address, wallet);\n\n const nextState: AccountState = {\n ...this.stateValue,\n status: AccountStatusEnum.Connected,\n address,\n chainNamespace: wallet.chain.namespace,\n accountId: undefined, // if address change, accountId should be reset\n connectWallet: {\n // ...wallet?.wallet,\n name: wallet.wallet.name || \"unknown\",\n chainId: wallet.chain.id,\n },\n validating: true,\n // revalidating: this._state.validating,\n };\n\n this._ee.emit(EVENT_NAMES.statusChanged, nextState);\n\n // if (wallet) {\n // // this.walletClient = new this.walletAdapterClass(wallet);\n // this.walletClient = this.getWalletAdapter({\n // ...wallet,\n // address,\n // } as WalletAdapterOptions);\n // }\n\n this.walletAdapterManager.switchWallet(\n wallet.chain.namespace,\n address,\n wallet.chain.id,\n {\n provider: wallet.provider,\n contractManager: this.contractManger,\n },\n );\n\n /**\n * update chainNamespace\n */\n this.configStore.set(\"chainNamespace\", wallet.chain.namespace);\n\n this._ee.emit(EVENT_NAMES.validateStart);\n\n const finallyState = await this._checkAccount(address, options);\n\n this._ee.emit(EVENT_NAMES.validateEnd, finallyState);\n\n return finallyState;\n }\n private saveAdditionalInfo(\n address: string,\n wallet: {\n [key: string]: any;\n additionalInfo?: Record<string, any>;\n },\n ) {\n if (typeof wallet.additionalInfo !== \"undefined\") {\n if (typeof wallet.additionalInfo !== \"object\") {\n console.warn(\"`wallet.additionalInfo` is not an object\");\n } else {\n this.additionalInfoRepository.save(address, wallet.additionalInfo);\n }\n }\n }\n\n get stateValue(): AccountState {\n // return this._state$.getValue();\n return this._state;\n }\n\n get accountId(): string | undefined {\n const state = this.stateValue;\n return state.subAccountId || state.mainAccountId;\n }\n\n get mainAccountId(): string | undefined {\n const state = this.stateValue;\n return state.mainAccountId;\n }\n\n get subAccountId(): string | undefined {\n const state = this.stateValue;\n return state.subAccountId;\n }\n\n get isSubAccount(): boolean {\n const state = this.stateValue;\n return state.mainAccountId !== state.accountId;\n }\n\n get accountIdHashStr(): string | undefined {\n if (!this.address) {\n throw new Error(\"address is error\");\n }\n\n // if (!this.configStore.get(\"brokerId\")) {\n // throw new Error(\"brokerId is undefined\");\n // }\n const brokerId = this.configStore.get<string>(\"brokerId\");\n if (this.walletAdapter?.chainNamespace === ChainNamespace.solana) {\n const userAccount = new PublicKey(this.address);\n const decodedUserAccount = Buffer.from(userAccount.toBytes());\n const abicoder = AbiCoder.defaultAbiCoder();\n return keccak256(\n abicoder.encode(\n [\"bytes32\", \"bytes32\"],\n [decodedUserAccount, parseBrokerHash(brokerId)],\n ),\n );\n }\n return parseAccountId(this.address, brokerId);\n }\n\n get address(): string | undefined {\n return this.stateValue.address;\n }\n\n get chainId(): number | string | undefined {\n // return this.walletClient?.chainId;\n if (!this.walletAdapterManager.isAdapterExist) {\n return;\n }\n return this.walletAdapterManager.chainId;\n }\n get apiBaseUrl(): string | undefined {\n return this.configStore.get(\"apiBaseUrl\");\n }\n\n private updateState(state: AccountState) {\n this._state = state;\n }\n\n private _bindEvents() {\n this._ee.addListener(EVENT_NAMES.statusChanged, (state: AccountState) => {\n this._state = state;\n });\n }\n\n // Check account status\n private async _checkAccount(\n address: string,\n options?: {\n /**\n * @deprecated will be remove this in next minor version\n */\n validateOrderlyKeyScope?: (scope: string) => boolean;\n },\n ): Promise<AccountStatusEnum> {\n // if (!this.walletClient) return;\n //\n let nextState: AccountState;\n try {\n // check account exists\n const accountInfo = await this._checkAccountExist(address);\n //\n\n if (accountInfo && accountInfo.account_id) {\n this.keyStore.setAccountId(address, accountInfo.account_id);\n // this.keyStore.setAddress(address);\n\n nextState = {\n ...this.stateValue,\n status: AccountStatusEnum.SignedIn,\n accountId: accountInfo.account_id,\n mainAccountId: accountInfo.account_id,\n userId: accountInfo.user_id,\n };\n this._ee.emit(EVENT_NAMES.statusChanged, nextState);\n //\n } else {\n nextState = {\n ...this.stateValue,\n validating: false,\n status: AccountStatusEnum.NotSignedIn,\n };\n\n this._ee.emit(EVENT_NAMES.statusChanged, nextState);\n\n return AccountStatusEnum.NotSignedIn;\n }\n // check orderlyKey state\n // get orderlyKey from keyStore\n // const orderlyKey = this.keyStore.getOrderlyKey(address);\n const orderlyKey = this.keyStore.getOrderlyKey();\n\n // nextState = {\n // ...this.stateValue,\n // isNew: false,\n // validating: false,\n // status: AccountStatusEnum.DisabledTrading,\n // };\n\n if (!orderlyKey) {\n nextState = {\n ...this.stateValue,\n isNew: false,\n validating: false,\n status: AccountStatusEnum.DisabledTrading,\n };\n this._ee.emit(EVENT_NAMES.statusChanged, nextState);\n\n return AccountStatusEnum.DisabledTrading;\n }\n\n const publicKey = await orderlyKey.getPublicKey();\n\n const orderlyKeyStatus = await this._checkOrderlyKeyState(\n accountInfo.account_id,\n publicKey,\n );\n\n if (\n orderlyKeyStatus &&\n orderlyKeyStatus.orderly_key &&\n orderlyKeyStatus.key_status === \"ACTIVE\"\n ) {\n const now = getTimestamp();\n const expiration = orderlyKeyStatus.expiration;\n\n const validScope =\n typeof options?.validateOrderlyKeyScope === \"function\"\n ? options.validateOrderlyKeyScope(orderlyKeyStatus.scope)\n : true;\n\n if (now > expiration || !validScope) {\n // orderlyKey is expired, remove orderlyKey\n nextState = {\n ...this.stateValue,\n validating: false,\n status: AccountStatusEnum.DisabledTrading,\n };\n this._ee.emit(EVENT_NAMES.statusChanged, nextState);\n this.keyStore.cleanKey(address, \"orderlyKey\");\n return AccountStatusEnum.DisabledTrading;\n }\n\n /**\n * Fetch sub-accounts list when trading is enabled for this account\n */\n // const subAccounts = await this.getSubAccounts();\n\n // nextState = {\n // ...this.stateValue,\n // validating: false,\n // status: AccountStatusEnum.EnableTrading,\n // };\n\n // if (subAccounts.length) {\n // // load active sub-account from local storage\n // const activeSubAccount = this.additionalInfoRepository.get(\n // address,\n // Account.ACTIVE_SUB_ACCOUNT_ID_KEY\n // );\n\n // nextState.subAccounts = subAccounts.map(\n // (subAccount: {\n // sub_account_id: string;\n // description: string;\n // holding: API.Holding[];\n // }) => ({\n // id: subAccount.sub_account_id,\n // description: subAccount.description,\n // holding: subAccount.holding,\n // })\n // );\n\n // if (activeSubAccount) {\n // // check if the activeSubAccount is included in the subAccounts\n // if (\n // nextState.subAccounts?.find(\n // (subAccount) => subAccount.id === activeSubAccount\n // )\n // ) {\n // nextState.subAccountId = activeSubAccount;\n // nextState.accountId = activeSubAccount;\n // }\n // }\n // }\n\n nextState = await this._restoreSubAccount();\n\n this._ee.emit(EVENT_NAMES.statusChanged, nextState);\n\n return AccountStatusEnum.EnableTrading;\n }\n\n this._ee.emit(EVENT_NAMES.statusChanged, {\n ...this.stateValue,\n validating: false,\n // status: AccountStatusEnum.DisabledTrading,\n });\n\n this.keyStore.cleanKey(address, \"orderlyKey\");\n\n return AccountStatusEnum.NotConnected;\n } catch (err) {\n // return this.stateValue.status;\n this._ee.emit(EVENT_NAMES.statusChanged, {\n ...this.stateValue,\n validating: false,\n // status: AccountStatusEnum.DisabledTrading,\n });\n }\n\n return AccountStatusEnum.NotSignedIn;\n }\n\n private async _checkAccountExist(\n address: string,\n chainNamespace?: string,\n ): Promise<{ account_id: string; user_id: string } | null> {\n // const brokerId = this.configStore.get(\"brokerId\");\n const res = await this._getAccountInfo(address, chainNamespace);\n\n if (res.success) {\n return res.data;\n } else {\n // throw new Error(res.message);\n return null;\n }\n }\n\n private async _restoreSubAccount(): Promise<AccountState> {\n const subAccounts = await this.getSubAccounts();\n\n const nextState = {\n ...this.stateValue,\n validating: false,\n status: AccountStatusEnum.EnableTrading,\n subAccounts: [] as SubAccount[],\n subAccountId: undefined,\n };\n\n if (subAccounts.length) {\n // load active sub-account from local storage\n const activeSubAccount = this.additionalInfoRepository.get(\n this.stateValue.address!,\n Account.ACTIVE_SUB_ACCOUNT_ID_KEY,\n );\n\n nextState.subAccounts = subAccounts.map((subAccount) => ({\n id: subAccount.sub_account_id,\n description: subAccount.description,\n holding: subAccount.holding,\n }));\n\n if (activeSubAccount) {\n // check if the activeSubAccount is included in the subAccounts\n if (\n nextState.subAccounts?.find(\n (subAccount) => subAccount.id === activeSubAccount,\n )\n ) {\n nextState.subAccountId = activeSubAccount;\n nextState.accountId = activeSubAccount;\n }\n }\n }\n\n return nextState;\n }\n\n async restoreSubAccount(): Promise<AccountState> {\n const nextState = await this._restoreSubAccount();\n this._ee.emit(EVENT_NAMES.statusChanged, nextState);\n return nextState;\n }\n\n async createAccount(): Promise<any> {\n // if (!this.walletClient) {\n // return Promise.reject(\"walletClient is undefined\");\n // }\n\n const { nonce, timestamp } = await this._getRegisterationNonce();\n\n const address = this.stateValue.address;\n\n if (!address) {\n throw new Error(\"address is undefined\");\n }\n\n // const [message, toSignatureMessage] = generateRegisterAccountMessage({\n // registrationNonce: nonce,\n // chainId: this.walletClient.chainId,\n // brokerId: this.configStore.get(\"brokerId\"),\n // timestamp,\n // });\n\n // const signatured = await this.signTypedData(toSignatureMessage);\n\n const { message, signatured } =\n await this.walletAdapterManager.adapter!.generateRegisterAccountMessage({\n registrationNonce: nonce,\n // chainId: this.walletClient.chainId,\n brokerId: this.configStore.get(\"brokerId\"),\n timestamp,\n });\n\n // const signatured = await this.signTypedData(toSignatureMessage);\n\n const res = await this._simpleFetch(\"/v1/register_account\", {\n method: \"POST\",\n body: JSON.stringify({\n signature: signatured,\n message,\n userAddress: address,\n }),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n });\n\n if (res.success) {\n // this.keyStore.setKey(address, keyPair);\n this.keyStore.setAccountId(address, res.data.account_id);\n\n const nextState = {\n ...this.stateValue,\n status: AccountStatusEnum.DisabledTrading,\n accountId: res.data.account_id,\n mainAccountId: res.data.account_id,\n userId: res.data.user_id,\n isNew: true,\n };\n\n this._ee.emit(EVENT_NAMES.statusChanged, nextState);\n\n return res;\n } else {\n throw new Error(res.message);\n }\n }\n\n async createSubAccount(description: string = \"\"): Promise<any> {\n if (!this.stateValue.mainAccountId) {\n throw new Error(\"mainAccountId is undefined\");\n }\n\n const url = \"/v1/client/add_sub_account\";\n\n const data = {\n description,\n };\n\n const signature = await this.signData(url, data);\n\n const res = await this._simpleFetch(url, {\n method: \"POST\",\n body: JSON.stringify(data),\n headers: {\n // \"X-Account-Id\": this.stateValue.mainAccountId,\n \"orderly-account-id\": this.stateValue.mainAccountId,\n \"Content-Type\": \"application/json\",\n ...signature,\n },\n });\n\n if (res.success) {\n const subAccount = {\n id: res.data.sub_account_id,\n description,\n holding: [],\n };\n\n const nextState = { ...this._state };\n\n // if (!Array.isArray(nextState.subAccounts)) {\n // nextState.subAccounts = [];\n // }\n nextState.subAccounts = [...(nextState.subAccounts ?? []), subAccount];\n\n this._ee.emit(EVENT_NAMES.subAccountCreated, subAccount);\n this._ee.emit(EVENT_NAMES.statusChanged, nextState);\n\n return res.data;\n } else {\n throw new Error(res.message);\n }\n }\n\n async updateSubAccount({\n subAccountId,\n description = \"\",\n }: {\n subAccountId: string;\n description?: string;\n }) {\n if (!this.stateValue.mainAccountId) {\n throw new Error(\"mainAccountId is undefined\");\n }\n\n if (description?.trim() !== \"\") {\n // Validate description format: up to 50 characters, only allows English characters,\n // numbers, @, comma, space, underscore and dash\n const descriptionRegex = /^[a-zA-Z0-9@,\\s_\\-]{0,50}$/;\n if (description && !descriptionRegex.test(description)) {\n throw new Error(\n \"Description must be up to 50 characters and can only contain English characters, numbers, @, comma, space, underscore and dash.\",\n );\n }\n }\n\n // check the subAccountId is included in the subAccounts\n const subAccount = this.stateValue.subAccounts?.find(\n (subAccount) => subAccount.id === subAccountId,\n );\n if (!subAccount) {\n throw new Error(\n `Sub-account with ID ${subAccountId} not found. Please verify the sub-account ID and try again.`,\n );\n }\n\n const url = \"/v1/client/update_sub_account\";\n\n const data = {\n sub_account_id: subAccountId,\n description,\n };\n\n const signature = await this.signData(url, data);\n\n const res = await this._simpleFetch(url, {\n method: \"POST\",\n body: JSON.stringify(data),\n headers: {\n \"orderly-account-id\": this.stateValue.mainAccountId,\n \"Content-Type\": \"application/json\",\n ...signature,\n },\n });\n\n if (res.success) {\n const nextState = { ...this._state };\n nextState.subAccounts = nextState.subAccounts?.map((subAccount) => {\n if (subAccount.id === subAccountId) {\n return { ...subAccount, description: description ?? \"\" };\n }\n return subAccount;\n });\n\n this._ee.emit(EVENT_NAMES.subAccountUpdated, data);\n\n this._ee.emit(EVENT_NAMES.statusChanged, nextState);\n return res.data;\n } else {\n throw new Error(res.message);\n }\n }\n\n switchAccount(accountId: string) {\n const nextState = {\n ...this._state,\n accountId,\n };\n\n // if the accountId is the main account, set the subAccountId to undefined\n if (accountId === nextState.mainAccountId) {\n nextState.subAccountId = undefined;\n\n this.additionalInfoRepository.remove(\n this.stateValue.address!,\n Account.ACTIVE_SUB_ACCOUNT_ID_KEY,\n );\n } else {\n nextState.subAccountId = accountId;\n\n this.additionalInfoRepository.save(this.stateValue.address!, {\n [Account.ACTIVE_SUB_ACCOUNT_ID_KEY]: accountId,\n });\n }\n\n this._ee.emit(EVENT_NAMES.statusChanged, nextState);\n }\n\n async getSubAccounts(): Promise<\n ({\n sub_account_id: string;\n description: string;\n } & { holding: API.Holding[] })[]\n > {\n const url = \"/v1/client/sub_account\";\n\n //\n const signature = await this.signGetMessageFactor(url);\n\n const res = await this._simpleFetch(url, {\n headers: {\n \"orderly-account-id\": this.stateValue.mainAccountId!,\n ...signature,\n },\n });\n\n if (res.success) {\n // if the subAccounts is not empty, fetch the subAccount balance\n if (res.data.rows?.length > 0) {\n const subAccountBalances = await this.getSubAccountBalances();\n return res.data.rows.map((account: { sub_account_id: string }) => {\n const holding =\n subAccountBalances[account.sub_account_id] ?? EMPTY_LIST;\n return {\n ...account,\n holding,\n };\n });\n }\n return res.data.rows ?? EMPTY_LIST;\n } else {\n throw new Error(res.message);\n }\n }\n\n async getSubAccountBalances(): Promise<Record<string, API.Holding[]>> {\n const url = \"/v1/client/aggregate/holding\";\n\n const signature = await this.signGetMessageFactor(url);\n\n const res = await this._simpleFetch(url, {\n headers: {\n \"orderly-account-id\": this.stateValue.mainAccountId!,\n ...signature,\n },\n });\n\n if (res.success) {\n // Group the data by account_id and transform it into {account_id: array} format\n const groupedData: Record<string, API.Holding[]> = {};\n if (res.data.rows && Array.isArray(res.data.rows)) {\n res.data.rows.forEach((item: API.Holding & { account_id: string }) => {\n if (!groupedData[item.account_id]) {\n groupedData[item.account_id] = [];\n }\n groupedData[item.account_id].push(item);\n });\n\n // For debugging purposes\n // console.log(\"Grouped data by account_id:\", groupedData);\n }\n // return res.data.rows ?? [];\n return groupedData;\n } else {\n throw new Error(res.message);\n }\n }\n\n /**\n * refresh sub account balances\n * @since 2.3.0\n */\n async refreshSubAccountBalances() {\n const subAccountBalances = await this.getSubAccountBalances();\n const nextState = {\n ...this.stateValue,\n subAccounts: this.stateValue.subAccounts?.map((subAccount) => {\n const holding = subAccountBalances[subAccount.id] ?? EMPTY_LIST;\n return { ...subAccount, holding };\n }),\n };\n this._ee.emit(EVENT_NAMES.statusChanged, nextState);\n\n return subAccountBalances;\n }\n\n /**\n * @since 2.3.0\n * if you are using main account orderly key, you can create api key for sub account\n */\n async createSubAccountApiKey(\n /**\n * expiration days\n */\n expiration: number,\n options: {\n tag?: string;\n scope?: string;\n subAccountId: string;\n },\n ) {\n try {\n const { res, keyPair } = await this.generateApiKey(expiration, options);\n if (res.success) {\n const key = await keyPair.getPublicKey();\n return {\n key: key.replace(\"ed25519:\", \"\"),\n secretKey: keyPair.secretKey?.replace(\"ed25519:\", \"\"),\n };\n }\n } catch (e) {\n console.log(\"createApiKey error\", e);\n\n if (`${e}`.includes(\"user rejected action\")) {\n throw new Error(\"User rejected the request.\");\n }\n\n throw e;\n }\n throw new Error(\"create api key failed\");\n }\n\n async createApiKey(\n /**\n * expiration days\n */\n expiration: number,\n options?: {\n tag?: string;\n scope?: string;\n },\n ) {\n try {\n const { res, keyPair } = await this.generateApiKey(expiration, options);\n if (res.success) {\n const key = await keyPair.getPublicKey();\n return {\n key: key.replace(\"ed25519:\", \"\"),\n secretKey: keyPair.secretKey?.replace(\"ed25519:\", \"\"),\n };\n }\n } catch (e) {\n console.log(\"createApiKey error\", e);\n\n if (`${e}`.includes(\"user rejected action\")) {\n throw new Error(\"User rejected the request.\");\n }\n\n throw e;\n }\n throw new Error(\"create api key failed\");\n }\n\n async createOrderlyKey(\n expiration?: number,\n options?: {\n tag?: string;\n scope?: string;\n },\n ): Promise<any> {\n const { res, address, keyPair } = await this.generateApiKey(\n expiration,\n options,\n );\n\n if (res.success) {\n this.keyStore.setKey(address, keyPair);\n const nextState = {\n ...this.stateValue,\n status: AccountStatusEnum.EnableTrading,\n // accountId: res.data.account_id,\n // userId: res.data.user_id,\n };\n\n this._ee.emit(EVENT_NAMES.statusChanged, nextState);\n\n return res;\n } else {\n throw new Error(res.message);\n }\n }\n\n private async generateApiKey(\n expiration?: number,\n options?: {\n tag?: string;\n scope?: string;\n /**\n * @since 2.3.0\n * if you are main account, you can pass the subAccountId to create the api key for the sub account\n * */\n subAccountId?: string;\n },\n ) {\n if (this.stateValue.mainAccountId === undefined) {\n throw new Error(\"account id is undefined\");\n }\n\n // if (!this.walletAdapterManager) {\n // throw new Error(\"walletAdapterManager is undefined\");\n // }\n\n if (!this.walletAdapter) {\n throw new Error(\"walletAdapter is undefined\");\n }\n\n if (!this.walletAdapterManager.isAdapterExist) {\n throw new Error(\"wallet adapter is not exist\");\n }\n\n if (typeof expiration !== \"number\") {\n throw new Error(\"the 'expiration' must be valid number\");\n }\n\n // const primaryType = \"AddOrderlyKey\";\n // const keyPair = this.keyStore.generateKey();\n const secretKey = this.walletAdapter.generateSecretKey();\n\n const keyPair = new BaseOrderlyKeyPair(secretKey);\n const publicKey = await keyPair.getPublicKey();\n\n const address = this.stateValue.address;\n\n if (!address) {\n throw new Error(\"address is undefined\");\n }\n\n const { message, signatured } =\n await this.walletAdapter.generateAddOrderlyKeyMessage({\n // chainId: number;\n brokerId: this.configStore.get(\"brokerId\"),\n publicKey,\n expiration,\n timestamp: getTimestamp(),\n // domain: any;\n scope: options?.scope || DEFAUL_ORDERLY_KEY_SCOPE,\n tag: options?.tag,\n subAccountId: options?.subAccountId,\n });\n\n // console.log(\"generateAPiKey\", publicKey, address);\n\n const res = await this._simpleFetch(\"/v1/orderly_key\", {\n method: \"POST\",\n body: JSON.stringify({\n signature: signatured,\n message,\n userAddress: address,\n }),\n headers: {\n // TODO: remove this header\n \"X-Account-Id\": this.stateValue.mainAccountId,\n \"Content-Type\": \"application/json\",\n },\n });\n\n return { res, address, keyPair };\n }\n\n async importOrderlyKey(options: {\n secretKey: string;\n address: string;\n chainNamespace: ChainNamespace;\n }) {\n const { address, secretKey, chainNamespace } = options;\n if (!address || !secretKey || !chainNamespace) return;\n\n const accountInfo = await this._checkAccountExist(address, chainNamespace);\n const accountId = accountInfo?.account_id;\n\n if (!accountId) return;\n\n const orderlyKey = new BaseOrderlyKeyPair(secretKey);\n const res = await this.checkOrderlyKey(address, orderlyKey, accountId);\n if (res) {\n this.configStore.set(\"chainNamespace\", chainNamespace);\n }\n\n return res;\n }\n\n async checkOrderlyKey(\n address: string,\n orderlyKey: OrderlyKeyPair,\n accountId: string,\n ) {\n if (!address || !orderlyKey || !accountId) return;\n const publicKey = await orderlyKey.getPublicKey();\n\n const orderlyKeyStatus = await this._checkOrderlyKeyState(\n accountId,\n publicKey,\n );\n\n const { orderly_key, key_status, expiration } = orderlyKeyStatus || {};\n const now = getTimestamp();\n\n if (orderly_key && key_status === \"ACTIVE\" && expiration > now) {\n this.keyStore.setAddress(address);\n\n this.keyStore.setKey(address, orderlyKey);\n this.keyStore.setAccountId(address, accountId);\n\n const nextState = {\n ...this.stateValue,\n address,\n accountId,\n mainAccountId: accountId,\n // userId: accountInfo.user_id,\n status: AccountStatusEnum.EnableTradingWithoutConnected,\n };\n // should update state first, because get sub accounts need to use the main account id\n this.updateState(nextState);\n const subAccountState = await this._restoreSubAccount();\n this._ee.emit(EVENT_NAMES.statusChanged, {\n ...nextState,\n subAccounts: subAccountState.subAccounts,\n subAccountId: undefined,\n });\n\n return true;\n }\n }\n\n /**\n * @since 2.3.0\n * settle sub account pnl\n */\n async settleSubAccount(options?: {\n /**\n * if you are main account and want to settle the sub account, you need to pass the subAccountId\n * if you are sub account, not need to pass the subAccountId\n * */\n subAccountId?: string;\n }): Promise<any> {\n const subAccountId = options?.subAccountId || this.stateValue.accountId;\n const nonce = await this._getSettleNonce(subAccountId);\n const url = \"/v1/sub_account_settle_pnl\";\n\n const data = {\n settle_nonce: nonce,\n };\n\n const signature = await this.signData(url, data);\n\n const res = await this._simpleFetch(url, {\n method: \"POST\",\n body: JSON.stringify(data),\n headers: {\n \"Content-Type\": \"application/json\",\n \"orderly-account-id\": subAccountId!,\n ...signature,\n },\n });\n\n if (res.success) {\n return res;\n } else {\n throw res;\n }\n }\n\n /** set main account pnl */\n async settle(options?: {\n /**\n * if you are main account, you don't need to pass the accountId\n * if you are sub account and you want to settle the main account, you need to pass main account id\n * */\n accountId?: string;\n }): Promise<any> {\n if (!this.walletAdapter) {\n return Promise.reject(\"walletAdapter is undefined\");\n }\n\n const nonce = await this._getSettleNonce(options?.accountId);\n const address = this.stateValue.address;\n\n // const domain = this.getDomain(true);\n\n const url = \"/v1/settle_pnl\";\n\n const timestamp = getTimestamp();\n\n const { message, signatured, domain } =\n await this.walletAdapter.generateSettleMessage({\n settlePnlNonce: nonce,\n timestamp,\n // chainId: this.walletClient.chainId,\n brokerId: this.configStore.get(\"brokerId\"),\n // domain,\n verifyContract:\n this.contractManger.getContractInfoByEnv().verifyContractAddress,\n });\n\n const data = {\n signature: signatured,\n message,\n userAddress: address,\n verifyingContract: domain.verifyingContract,\n };\n\n const signature = await this.signData(url, data);\n\n const res = await this._simpleFetch(url, {\n method: \"POST\",\n body: JSON.stringify(data),\n headers: {\n \"Content-Type\": \"application/json\",\n \"orderly-account-id\": options?.accountId || this.stateValue.accountId!,\n ...signature,\n },\n });\n\n if (res.success) {\n return res;\n } else {\n throw res;\n }\n }\n\n private async signData(url: string, data: any) {\n const payload: MessageFactor = {\n method: \"POST\",\n url,\n data,\n };\n\n const signature = await this.signer.sign(payload, getTimestamp());\n // const signature = await this.signMessageFactor(payload);\n return signature;\n }\n\n async destroyOrderlyKey(): Promise<void> {\n if (!!this.stateValue.address) {\n // const key = await this.keyStore.getOrderlyKey()?.getPublicKey();\n this.keyStore.cleanKey(this.stateValue.address, \"orderlyKey\");\n // TODO: remove sub-account\n }\n\n const nextState = {\n ...this.stateValue,\n status: AccountStatusEnum.DisabledTrading,\n };\n this._ee.emit(EVENT_NAMES.statusChanged, nextState);\n }\n\n async disconnect(): Promise<void> {\n if (!!this.stateValue.address) {\n // this.keyStore.cleanAllKey(this.stateValue.address);\n this.keyStore.removeAddress();\n\n this.additionalInfoRepository.clear(this.stateValue.address);\n }\n\n const nextState = {\n ...this.stateValue,\n status: AccountStatusEnum.NotConnected,\n accountId: undefined,\n userId: undefined,\n address: undefined,\n };\n this._ee.emit(EVENT_NAMES.statusChanged, nextState);\n }\n\n switchChainId(chainId: number | string) {\n chainId = this.parseChainId(chainId);\n\n const nextState: AccountState = {\n ...this.stateValue,\n connectWallet: {\n // ...wallet?.wallet,\n ...this.stateValue.connectWallet!,\n chainId: chainId,\n },\n // revalidating: this._state.validating,\n };\n\n if (this.walletAdapter) {\n this.walletAdapter.chainId = chainId as number;\n }\n\n this._ee.emit(EVENT_NAMES.statusChanged, nextState);\n }\n\n private parseChainId(chainId: string | number): number {\n if (\n typeof chainId === \"string\" &&\n (isHex(chainId) || (chainId.startsWith(\"0x\") && isHex(chainId.slice(2))))\n ) {\n chainId = parseInt(chainId, 16);\n }\n return chainId as number;\n }\n\n private async _checkOrderlyKeyState(accountId: string, orderlyKey: string) {\n const res = await this._simpleFetch(\n `/v1/get_orderly_key?account_id=${accountId}&orderly_key=${orderlyKey}`,\n );\n\n if (res.success) {\n return res.data;\n } else {\n // throw new Error(res.message);\n return null;\n }\n }\n\n get signer(): Signer {\n if (!this._singer) {\n // this._singer = getMockSigner();\n this._singer = new BaseSigner(this.keyStore);\n }\n return this._singer;\n }\n\n get walletAdapter() {\n return this.walletAdapterManager.adapter;\n }\n\n private async _getRegisterationNonce() {\n const res = await this._simpleFetch(\"/v1/registration_nonce\", {\n headers: {\n \"orderly-account-id\": this.stateValue.accountId!,\n },\n });\n\n if (res.success) {\n return {\n nonce: res.data?.registration_nonce,\n timestamp: res.timestamp,\n };\n } else {\n throw new Error(res.message);\n }\n }\n\n private async _getTimestampFromServer() {\n const res = await this._getAccountInfo();\n\n if (res.success) {\n return res.timestamp;\n } else {\n throw new SDKError(\"get timestamp error\");\n }\n }\n\n private async _getAccountInfo(address?: string, chainNamespace?: string) {\n const brokerId = this.configStore.get(\"brokerId\");\n\n const addr = address || this.address;\n const chainType = chainNamespace || this.stateValue.chainNamespace;\n\n const res = await this._simpleFetch(\n `/v1/get_account?address=${addr}&broker_id=${brokerId}&chain_type=${chainType}`,\n );\n return res;\n }\n\n private async _getSettleNonce(accountId?: string) {\n const timestamp = getTimestamp().toString();\n const url = \"/v1/settle_nonce\";\n const message = [timestamp, \"GET\", url].join(\"\");\n\n const signer = this.signer;\n\n const { publicKey, signature } = await signer.signText(message);\n\n const res = await this._simpleFetch(\"/v1/settle_nonce\", {\n headers: {\n \"orderly-account-id\": accountId || this.stateValue.accountId!,\n \"orderly-key\": publicKey,\n \"orderly-timestamp\": timestamp,\n \"orderly-signature\": signature,\n },\n });\n\n if (res.success) {\n return res.data?.settle_nonce;\n } else {\n throw new Error(res.message);\n }\n }\n\n private async _simpleFetch(url: string, init: RequestInit = {}) {\n const requestUrl = `${this.configStore.get<string>(\"apiBaseUrl\")}${url}`;\n\n return fetch(requestUrl, init).then((res) => res.json());\n }\n\n private async _getVaultOperationNonce() {\n const res = await this._simpleFetch(`/v1/public/sv_nonce`);\n if (res.success) {\n return res.data?.nonce;\n } else {\n throw new Error(res.message);\n }\n }\n\n // getDomain(onChainDomain?: boolean): SignatureDomain {\n // if (!this.walletClient) {\n // throw new Error(\"walletClient is undefined\");\n // }\n // const chainId = this.walletClient.chainId;\n // // const {verifyContractAddress} = this.contract.getContractInfoByEnv();\n // return {\n // name: \"Orderly\",\n // version: \"1\",\n // chainId,\n // verifyingContract: onChainDomain\n // ? this.contractManger.getContractInfoByEnv().verifyContractAddress\n // : \"0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC\",\n // };\n // }\n\n getAdditionalInfo(): Record<string, any> | null {\n if (!this.stateValue.address) {\n return null;\n }\n return this.additionalInfoRepository.getAll(this.stateValue.address);\n }\n\n get on() {\n return this._ee.on.bind(this._ee);\n }\n\n get once() {\n return this._ee.once.bind(this._ee);\n }\n\n get off() {\n return this._ee.off.bind(this._ee);\n }\n\n /**\n * Generate DexRequest message for DEX operations\n * @param inputs DexRequest parameters\n * @returns Signed message and domain\n */\n async generateDexRequest(inputs: {\n payloadType: number;\n // nonce: string;\n // receiver: string;\n amount: string;\n vaultId: string;\n token: string;\n domain: SignatureDomain;\n // dexBrokerId: string;\n }) {\n if (!this.walletAdapter || !this.stateValue.address) {\n throw new Error(\"walletAdapter is undefined\");\n }\n const nonce = await this._getVaultOperationNonce();\n const receiver = this.stateValue.address;\n const dexBrokerId = this.configStore.get(\"brokerId\");\n\n const { message, signatured, domain } =\n await this.walletAdapter.generateDexRequestMessage({\n ...inputs,\n nonce,\n receiver,\n dexBrokerId,\n timestamp: getTimestamp(),\n domain: inputs.domain,\n });\n\n return {\n message,\n signatured,\n domain,\n };\n }\n\n /**\n * Signs a GET MessageFactor payload with the current timestamp.\n * @param url The URL for the GET request\n * @returns The signature\n */\n private async signGetMessageFactor(url: string) {\n const payload: MessageFactor = {\n method: \"GET\",\n url,\n };\n return this.signer.sign(payload, getTimestamp());\n }\n}\n","import { Repository } from \"./repository\";\n\nexport class AdditionalInfoRepository {\n constructor(private readonly repository: Repository) {}\n\n save(address: string, data: any) {\n this.repository.save(address, data);\n }\n\n getAll(address: string) {\n return this.repository.getAll(address);\n }\n\n get(address: string, key: string) {\n return this.repository.get(address, key);\n }\n\n clear(address: string) {\n this.repository.clear(address);\n }\n\n remove(address: string, key: string) {\n this.repository.remove(address, key);\n }\n}\n","import {\n ABSTRACT_CHAIN_ID_MAP,\n API,\n ApiError,\n ChainNamespace,\n MaxUint256,\n} from \"@kodiak-finance/orderly-types\";\nimport { Account } from \"./account\";\nimport { ConfigStore } from \"./configStore/configStore\";\nimport { getContractInfoByChainId, IContract } from \"./contract\";\nimport { MessageFactor } from \"./signer\";\nimport { getTimestamp, parseBrokerHash, parseTokenHash } from \"./utils\";\n\nexport class Assets {\n constructor(\n private readonly configStore: ConfigStore,\n private readonly contractManger: IContract,\n private readonly account: Account,\n ) {}\n\n /**\n * Convert non-USDC asset to USDC manually\n */\n async convert(inputs: {\n slippage: number;\n amount: number;\n converted_asset: string; // must NOT be USDC\n }) {\n if (!this.account.walletAdapter) {\n throw new Error(\"walletAdapter is undefined\");\n }\n if (!this.account.stateValue.address) {\n throw new Error(\"account address is required\");\n }\n\n const { slippage, amount, converted_asset } = inputs;\n\n if (!converted_asset || converted_asset.toUpperCase() === \"USDC\") {\n throw new Error(\"converted_asset cannot be USDC\");\n }\n\n const payload = {\n slippage,\n amount,\n converted_asset,\n };\n\n const url = \"/v1/asset/manual_convert\";\n\n const timestamp = getTimestamp().toString();\n const message = [timestamp, \"POST\", url, JSON.stringify(payload)].join(\"\");\n const signer = this.account.signer;\n const { publicKey, signature } = await signer.signText(message);\n\n const res = await this._simpleFetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"orderly-account-id\": this.account.stateValue.accountId!,\n \"orderly-key\": publicKey,\n \"orderly-timestamp\": timestamp,\n \"orderly-signature\": signature,\n },\n body: JSON.stringify(payload),\n });\n\n if (!res.success) {\n throw new ApiError(res.message, res.code);\n }\n\n return res;\n }\n\n async withdraw(inputs: {\n chainId: number;\n token: string;\n amount: string | number;\n allowCrossChainWithdraw: boolean;\n /** orderly withdraw decimals */\n decimals: number;\n }) {\n if (!this.account.walletAdapter) {\n throw new Error(\"walletAdapter is undefined\");\n }\n if (!this.account.stateValue.address) {\n throw new Error(\"account address is required\");\n }\n\n const { chainId, token, allowCrossChainWithdraw, decimals } = inputs;\n let { amount } = inputs;\n if (typeof amount === \"number\") {\n amount = amount.toString();\n }\n\n if (decimals === undefined || decimals === null) {\n throw new Error(\"decimals is required\");\n }\n\n const url = \"/v1/withdraw_request\";\n // get withdrawal nonce\n const nonce = await this.getWithdrawalNonce();\n const timestamp = getTimestamp();\n // const domain = this.account.getDomain(true);\n // const [message, toSignatureMessage] = this._generateWithdrawMessage({\n // chainId,\n // receiver: this.account.stateValue.address!,\n // token,\n // amount: this.account.walletClient.parseUnits(amount),\n // nonce,\n // domain,\n // });\n\n // const EIP_712signatured = await this.account.signTypedData(\n // toSignatureMessage\n // );\n const messageData = {\n receiver: this.account.stateValue.address,\n token,\n brokerId: this.configStore.get(\"brokerId\"),\n amount: this.account.walletAdapter.parseUnits(amount, decimals),\n nonce,\n timestamp,\n // domain,\n verifyContract:\n this.contractManger.getContractInfoByEnv().verifyContractAddress,\n };\n\n const agwGobalAddress = this.account.getAdditionalInfo()?.AGWAddress ?? \"\";\n\n if (ABSTRACT_CHAIN_ID_MAP.has(chainId) && agwGobalAddress) {\n messageData.receiver = agwGobalAddress;\n }\n\n const { message, signatured, domain } =\n await this.account.walletAdapter.generateWithdrawMessage(messageData);\n\n const data = {\n signature: signatured,\n message,\n userAddress: this.account.stateValue.address,\n verifyingContract: domain.verifyingContract,\n };\n\n const payload: MessageFactor = {\n method: \"POST\",\n url,\n data,\n };\n\n if (allowCrossChainWithdraw) {\n // @ts-ignore\n data.message = {\n ...data.message,\n // @ts-ignore\n allowCrossChainWithdraw: allowCrossChainWithdraw,\n };\n }\n\n const signature = await this.account.signer.sign(payload, getTimestamp());\n\n const res = await this._simpleFetch(url, {\n method: \"POST\",\n body: JSON.stringify(data),\n headers: {\n \"Content-Type\": \"application/json\",\n \"orderly-account-id\": this.account.stateValue.accountId!,\n\n ...signature,\n },\n });\n\n if (!res.success) {\n throw new ApiError(res.message, res.code);\n }\n\n return res;\n }\n\n private async getWithdrawalNonce(): Promise<number> {\n const timestamp = getTimestamp().toString();\n const url = \"/v1/withdraw_nonce\";\n const message = [timestamp, \"GET\", url].join(\"\");\n\n const signer = this.account.signer;\n\n const { publicKey, signature } = await signer.signText(message);\n\n const res = await this._simpleFetch(url, {\n headers: {\n \"orderly-account-id\": this.account.stateValue.accountId!,\n \"orderly-key\": publicKey,\n \"orderly-timestamp\": timestamp,\n \"orderly-signature\": signature,\n },\n });\n\n if (res.success) {\n return res.data?.withdraw_nonce;\n } else {\n throw new Error(res.message);\n }\n }\n\n async getNativeBalance(options?: {\n /** token decimals on chain, default is 18 */\n decimals?: number;\n }): Promise<string> {\n if (!this.account.walletAdapter) {\n return \"0\";\n }\n const result = await this.account.walletAdapter.getBalance();\n\n return this.account.walletAdapter?.formatUnits(result, options?.decimals!);\n }\n\n async getBalance(\n /** token address */\n address: string,\n options: {\n /** token decimals on chain, default is 18 */\n decimals?: number;\n },\n ): Promise<string> {\n if (!this.account.walletAdapter) {\n return \"0\";\n }\n const contractInfo = this.contractManger.getContractInfoByEnv();\n\n const contractAddress = getContractInfoByChainId(\n this.account.walletAdapter.chainId,\n contractInfo,\n );\n\n const tokenAddress = address || contractAddress.tokenAddress;\n\n let userAddress = this.account.stateValue.address;\n\n const agwGobalAddress = this.account.getAdditionalInfo()?.AGWAddress ?? \"\";\n\n if (\n ABSTRACT_CHAIN_ID_MAP.has(this.account.walletAdapter.chainId) &&\n agwGobalAddress\n ) {\n userAddress = agwGobalAddress;\n }\n\n const result = await this.account.walletAdapter?.call(\n tokenAddress,\n \"balanceOf\",\n [userAddress],\n {\n abi: contractInfo.usdcAbi,\n },\n );\n\n // return formatByUnits(result, options?.decimals);\n return this.account.walletAdapter?.formatUnits(result, options?.decimals!);\n }\n\n /**\n * @deprecated use getBalance instead, will be removed in the future\n */\n async getBalanceByAddress(\n /** token address */\n address: string,\n options?: {\n /** token decimals on chain, default is 18 */\n decimals?: number;\n },\n ): Promise<string> {\n if (!this.account.walletAdapter) {\n return \"0\";\n }\n const contractAddress = this.contractManger.getContractInfoByEnv();\n\n const result = await this.account.walletAdapter?.call(\n address,\n \"balanceOf\",\n [this.account.stateValue.address],\n {\n abi: contractAddress.erc20Abi,\n },\n );\n return this.account.walletAdapter?.formatUnits?.(\n result,\n options?.decimals!,\n );\n }\n\n async getAllowance(inputs: {\n /** token address */\n address: string;\n /** vault address */\n vaultAddress?: string;\n /** token decimals on chain, default is 18 */\n decimals?: number;\n }) {\n const { address, vaultAddress: inputVaultAddress, decimals } = inputs;\n\n if (!this.account.walletAdapter) {\n return \"0\";\n }\n\n let userAddress = this.account.stateValue.address;\n\n const contractInfo = this.contractManger.getContractInfoByEnv();\n\n const contractAddress = getContractInfoByChainId(\n this.account.walletAdapter.chainId,\n contractInfo,\n );\n const vaultAddress = inputVaultAddress || contractAddress.vaultAddress;\n const tokenAddress = address || contractAddress.tokenAddress;\n\n const agwGobalAddress = this.account.getAdditionalInfo()?.AGWAddress ?? \"\";\n if (\n ABSTRACT_CHAIN_ID_MAP.has(this.account.walletAdapter.chainId) &&\n agwGobalAddress\n ) {\n userAddress = agwGobalAddress;\n }\n\n console.log(\"get allowance\", {\n tokenAddress,\n vaultAddress,\n userAddress,\n });\n\n const result = await this.account.walletAdapter?.call(\n tokenAddress,\n \"allowance\",\n [userAddress, vaultAddress],\n {\n abi: contractInfo.usdcAbi,\n },\n );\n\n return this.account.walletAdapter?.formatUnits(result, decimals!);\n // return result;\n }\n\n async approve(inputs: {\n /** token address */\n address?: string;\n /** vault address */\n vaultAddress?: string;\n /** token amount */\n amount?: string;\n isSetMaxValue?: boolean;\n /** token decimals on chain, default is 18 */\n decimals: number;\n }) {\n const {\n address,\n amount,\n vaultAddress: inputVaultAddress,\n decimals,\n isSetMaxValue,\n } = inputs;\n\n if (!address) {\n throw new Error(\"address is required\");\n }\n\n if (!this.account.walletAdapter) {\n throw new Error(\"walletAdapter is undefined\");\n }\n\n if (decimals === undefined || decimals === null) {\n throw new Error(\"decimals is required\");\n }\n let parsedAmount = MaxUint256.toString();\n if (!isSetMaxValue) {\n parsedAmount =\n typeof amount !== \"undefined\" && amount !== \"\"\n ? this.account.walletAdapter.parseUnits(amount, decimals!)\n : MaxUint256.toString();\n }\n\n const contractInfo = this.contractManger.getContractInfoByEnv();\n\n const contractAddress = getContractInfoByChainId(\n this.account.walletAdapter.chainId,\n contractInfo,\n );\n\n const vaultAddress = inputVaultAddress || contractAddress.vaultAddress;\n const tokenAddress = address || contractAddress.tokenAddress;\n\n console.log(\"approve\", {\n vaultAddress,\n tokenAddress,\n parsedAmount,\n });\n\n const result = await this.account.walletAdapter?.call(\n tokenAddress,\n \"approve\",\n [vaultAddress, parsedAmount],\n {\n abi: contractInfo.usdcAbi,\n },\n );\n return result;\n }\n\n /**\n * @deprecated use approve instead, will be removed in the future\n */\n async approveByAddress(inputs: {\n /** token address */\n address: string;\n /** token amount */\n amount?: string;\n /** token decimals on chain, default is 18 */\n decimals: number;\n }) {\n const { address, amount, decimals } = inputs;\n\n if (!this.account.walletAdapter) {\n throw new Error(\"walletAdapter is undefined\");\n }\n\n if (decimals === undefined || decimals === null) {\n throw new Error(\"decimals is required\");\n }\n\n const contractInfo = this.contractManger.getContractInfoByEnv();\n const contractAddress = getContractInfoByChainId(\n this.account.walletAdapter.chainId,\n contractInfo,\n );\n const vaultAddress = contractAddress.vaultAddress;\n\n const parsedAmount =\n typeof amount !== \"undefined\" && amount !== \"\"\n ? this.account.walletAdapter.parseUnits(amount, decimals)\n : MaxUint256.toString();\n\n const result = await this.account.walletAdapter?.call(\n address,\n \"approve\",\n [vaultAddress, parsedAmount],\n {\n abi: contractInfo.erc20Abi,\n },\n );\n\n return result;\n }\n\n async getDepositFee(inputs: {\n amount: string;\n /** chain info */\n chain: API.NetworkInfos;\n /** token decimals on chain, default is 18 */\n decimals: number;\n token?: string;\n /** token address */\n address?: string;\n }) {\n const {\n amount,\n chain,\n decimals,\n token = \"USDC\",\n address: tokenAddress,\n } = inputs;\n\n if (!this.account.walletAdapter) {\n throw new Error(\"walletAdapter is undefined\");\n }\n\n if (decimals === undefined || decimals === null) {\n throw new Error(\"decimals is required\");\n }\n\n const brokerId = this.configStore.get<string>(\"brokerId\");\n\n if (!brokerId) throw new Error(\"[Assets]:brokerId is required\");\n\n const depositData: {\n accountId?: string;\n brokerHash: string;\n tokenHash: string;\n tokenAmount: string;\n tokenAddress?: string;\n } = {\n accountId: this.account.accountIdHashStr,\n brokerHash: parseBrokerHash(brokerId!),\n tokenHash: parseTokenHash(token),\n tokenAmount: this.account.walletAdapter?.parseUnits(amount, decimals!),\n };\n\n const userAddress = this.account.stateValue.address;\n\n const contractInfo = this.contractManger.getContractInfoByEnv();\n\n const contractAddress = getContractInfoByChainId(\n this.account.walletAdapter.chainId,\n contractInfo,\n );\n\n let vaultAddress = chain.vault_address;\n\n // TODO: get vault address from chain info\n if (this.account.walletAdapter.chainNamespace === ChainNamespace.solana) {\n if (!vaultAddress) {\n vaultAddress = contractInfo.solanaVaultAddress;\n }\n depositData[\"tokenAddress\"] =\n tokenAddress || contractInfo.solanaUSDCAddress;\n }\n\n if (!vaultAddress) {\n vaultAddress = contractAddress.vaultAddress;\n }\n\n console.log(\"get deposit fee\", {\n userAddress,\n vaultAddress,\n depositData,\n });\n\n return await this.account.walletAdapter.callOnChain(\n chain,\n vaultAddress,\n \"getDepositFee\",\n [userAddress, depositData],\n {\n abi: contractInfo.vaultAbi,\n },\n );\n }\n\n /** deposit native token */\n async depositNativeToken(inputs: {\n amount: string;\n fee: bigint;\n /** token decimals on chain, default is 18 */\n decimals: number;\n token?: string;\n }) {\n const { amount, fee, decimals, token } = inputs;\n\n const tokenAmount = this.account.walletAdapter?.parseUnits(\n amount,\n decimals,\n );\n\n // if native token, fee is amount + depositFee\n const value = BigInt(tokenAmount!) + fee;\n\n return this.deposit({\n amount,\n fee: value,\n decimals,\n token,\n });\n }\n\n async deposit(inputs: {\n amount: string;\n fee: bigint;\n /** token decimals on chain, default is 18 */\n decimals: number;\n token?: string;\n /** token address */\n address?: string;\n /** vault address */\n vaultAddress?: string;\n }) {\n const {\n amount,\n fee,\n decimals,\n token = \"USDC\",\n address: tokenAddress,\n vaultAddress: inputVaultAddress,\n } = inputs;\n\n if (!this.account.walletAdapter) {\n throw new Error(\"walletAdapter is undefined\");\n }\n\n if (decimals === undefined || decimals === null) {\n throw new Error(\"decimals is required\");\n }\n\n const brokerId = this.configStore.get<string>(\"brokerId\");\n\n if (!brokerId) throw new Error(\"[Assets]:brokerId is required\");\n\n const contractInfo = this.contractManger.getContractInfoByEnv();\n\n const contractAddress = getContractInfoByChainId(\n this.account.walletAdapter.chainId,\n contractInfo,\n );\n\n const depositData: {\n accountId?: string;\n brokerHash: string;\n tokenHash: string;\n tokenAmount: string;\n tokenAddress?: string;\n } = {\n accountId: this.account.accountIdHashStr,\n brokerHash: parseBrokerHash(brokerId!),\n tokenHash: parseTokenHash(token!),\n tokenAmount: this.account.walletAdapter?.parseUnits(amount, decimals),\n };\n\n const userAddress = this.account.stateValue.address;\n let vaultAddress = inputVaultAddress;\n\n // TODO: get vault address from input params\n if (this.account.walletAdapter.chainNamespace === ChainNamespace.solana) {\n if (!vaultAddress) {\n vaultAddress = contractInfo.solanaVaultAddress;\n }\n depositData[\"tokenAddress\"] =\n tokenAddress || contractInfo.solanaUSDCAddress;\n }\n\n if (!vaultAddress) {\n vaultAddress = contractAddress.vaultAddress;\n }\n\n const agwGobalAddress = this.account.getAdditionalInfo()?.AGWAddress ?? \"\";\n\n let contractMethod = \"deposit\";\n let fromAddress = userAddress;\n let contractData: any = [depositData];\n\n if (\n ABSTRACT_CHAIN_ID_MAP.has(this.account.walletAdapter.chainId) &&\n agwGobalAddress\n ) {\n console.log(\n \"agw address\",\n agwGobalAddress,\n this.account.walletAdapter.chainId,\n );\n contractMethod = \"depositTo\";\n fromAddress = agwGobalAddress;\n contractData = [userAddress, depositData];\n }\n console.log(\"xxx deposit\", {\n vaultAddress,\n fromAddress,\n contractMethod,\n contractData,\n fee,\n });\n\n const result = await this.account.walletAdapter?.sendTransaction(\n vaultAddress,\n contractMethod,\n {\n from: fromAddress!,\n to: vaultAddress,\n data: contractData,\n value: fee,\n },\n {\n abi: contractInfo.vaultAbi,\n },\n );\n return result;\n }\n\n async internalTransfer(inputs: {\n token: string;\n amount: string;\n receiver: string;\n /** orderly token decimals */\n decimals: number;\n }) {\n if (!this.account.walletAdapter) {\n throw new Error(\"walletAdapter is undefined\");\n }\n\n const { token, amount, receiver, decimals } = inputs;\n\n if (decimals === undefined || decimals === null) {\n throw new Error(\"decimals is required\");\n }\n\n const url = \"/v2/internal_transfer\";\n const nonce = await this.getTransferNonce();\n const messageData = {\n receiver,\n token,\n amount: this.account.walletAdapter.parseUnits(amount, decimals),\n nonce,\n verifyContract:\n this.contractManger.getContractInfoByEnv().verifyContractAddress,\n };\n\n const { message, signatured, domain } =\n await this.account.walletAdapter.generateInternalTransferMessage(\n messageData,\n );\n\n const data = {\n signature: signatured,\n message,\n userAddress: this.account.stateValue.address,\n verifyingContract: domain.verifyingContract,\n };\n\n const payload: MessageFactor = {\n method: \"POST\",\n url,\n data,\n };\n\n const signature = await this.account.signer.sign(payload, getTimestamp());\n\n const res = await this._simpleFetch(url, {\n method: \"POST\",\n body: JSON.stringify(data),\n headers: {\n \"Content-Type\": \"application/json\",\n \"orderly-account-id\": this.account.stateValue.accountId!,\n ...signature,\n },\n });\n\n if (!res.success) {\n throw new ApiError(res.message, res.code);\n }\n\n return res;\n }\n\n private async getTransferNonce(): Promise<number> {\n const timestamp = getTimestamp().toString();\n const url = \"/v1/transfer_nonce\";\n const message = [timestamp, \"GET\", url].join(\"\");\n\n const signer = this.account.signer;\n\n const { publicKey, signature } = await signer.signText(message);\n\n const res = await this._simpleFetch(url, {\n headers: {\n \"orderly-account-id\": this.account.stateValue.accountId!,\n \"orderly-key\": publicKey,\n \"orderly-timestamp\": timestamp,\n \"orderly-signature\": signature,\n },\n });\n\n if (res.success) {\n return res.data?.transfer_nonce;\n } else {\n throw new Error(res.message);\n }\n }\n\n private async _simpleFetch(url: string, init: RequestInit = {}) {\n const requestUrl = `${this.configStore.get<string>(\"apiBaseUrl\")}${url}`;\n\n return fetch(requestUrl, init).then((res) => res.json());\n }\n\n get usdcAddress() {\n return this.contractManger.getContractInfoByEnv().usdcAddress;\n }\n}\n","export interface Repository {\n save: (address: string, data: Record<string, any>) => void;\n getAll: (address: string) => Record<string, any>;\n get: (address: string, key: string) => any;\n clear: (address: string) => void;\n update: (address: string, key: string, data: any) => void;\n remove: (address: string, key: string) => void;\n}\n\nexport class LocalStorageRepository implements Repository {\n constructor(private readonly name: string) {}\n /**\n * Save data to local storage. If data with the same key exists, it will be merged.\n * @param data\n */\n save(address: string, data: Record<string, any>) {\n this.run(() => {\n let all = this.getAll(address);\n\n all = { [address]: { ...all, ...data } };\n\n localStorage.setItem(this.name, JSON.stringify(all));\n });\n }\n /**\n * get data from local storage\n * @param key\n * @returns\n */\n get(address: string, key: string) {\n const data = this.getAll(address);\n if (!data) {\n return null;\n }\n return data[key];\n }\n /**\n * get all data from local storage\n * @param address\n * @returns\n */\n getAll(address: string) {\n try {\n const data = localStorage.getItem(this.name);\n if (!data) {\n return null;\n }\n return JSON.parse(data)[address];\n } catch (error) {\n console.error(error);\n return null;\n }\n }\n clear(address: string) {\n this.run(() => {\n const all = this.getAll(address);\n if (!all) {\n return;\n }\n delete all[address];\n localStorage.setItem(this.name, JSON.stringify(all));\n });\n }\n update(address: string, key: string, data: any) {\n this.run(() => {\n const all = this.getAll(address);\n all[key] = data;\n localStorage.setItem(this.name, JSON.stringify(all));\n });\n }\n remove(address: string, key: string) {\n this.run(() => {\n const all = this.getAll(address);\n delete all[key];\n localStorage.setItem(this.name, JSON.stringify(all));\n });\n }\n\n private run(cb: () => void) {\n if (typeof window !== \"undefined\" && typeof localStorage !== \"undefined\") {\n cb();\n }\n }\n}\n","import { WalletAdapter } from \"./wallet/walletAdapter\";\nimport { ChainNamespace} from \"@kodiak-finance/orderly-types\";\nimport { Eip1193Provider } from \"ethers\";\nimport { IContract } from \"./contract\";\n\nclass WalletAdapterManager {\n private _adapter!: WalletAdapter;\n\n constructor(private readonly walletAdapters: WalletAdapter[]) {\n if (!this.walletAdapters.length) {\n throw new Error(\"No wallet adapters provided\");\n }\n }\n\n /**\n * return the current wallet adapter\n */\n get adapter(): WalletAdapter | undefined {\n // if (!this._adapter) {\n // throw new SDKError(\"No wallet adapter found\");\n // }\n return this._adapter;\n }\n\n get isEmpty(): boolean {\n return this.walletAdapters.length === 0;\n }\n\n /**\n * check if the current wallet adapter is exist\n */\n get isAdapterExist(): boolean {\n return !!this._adapter;\n }\n\n /**\n * set the current wallet adapter\n */\n switchWallet(\n chainNamespace: ChainNamespace,\n address: string,\n chainId: number,\n options: {\n provider?: Eip1193Provider;\n contractManager?: IContract;\n }\n ) {\n console.log('-- this.walletAdapters', this.walletAdapters, chainNamespace);\n const adapter = this.walletAdapters.find(\n (adapter) => adapter.chainNamespace === chainNamespace.toUpperCase()\n );\n\n if (!adapter) {\n throw new Error(\"Unsupported chain namespace\");\n }\n\n const config = {\n address,\n chain: { id: chainId },\n provider: options.provider,\n contractManager: options.contractManager,\n };\n\n console.log(\"------+++++---\", config);\n\n /**\n * lifecycle\n */\n if (this._adapter) {\n if (this._adapter === adapter) {\n this._adapter.update(config);\n return;\n } else {\n this._adapter.deactivate();\n }\n }\n this._adapter = adapter;\n this._adapter.active(config);\n }\n\n get chainId() {\n return this.adapter?.chainId;\n }\n}\n\nexport { WalletAdapterManager };\n","export type ConfigKey =\n | \"apiBaseUrl\"\n | \"klineDataUrl\"\n | \"privateWsUrl\"\n | \"publicWsUrl\"\n | \"operatorUrl\"\n | \"domain\"\n | \"brokerId\"\n | \"brokerName\"\n | \"networkId\"\n | \"env\"\n | \"chainNamespace\"\n | \"PROD_URL\"\n | \"orderly_markets\"\n | \"markets\";\n\nexport interface ConfigStore {\n get<T = string>(key: ConfigKey): T;\n getOr<T = string>(key: ConfigKey, defaultValue: T): T;\n set<T>(key: ConfigKey, value: T): void;\n clear(): void;\n}\n","import { ChainNamespace } from \"@kodiak-finance/orderly-types\";\nimport { NetworkId } from \"@kodiak-finance/orderly-types\";\nimport { ConfigKey, ConfigStore } from \"./configStore\";\n\ntype ChainNamespaceType = (typeof ChainNamespace)[keyof typeof ChainNamespace];\n\nexport type URLS = {\n apiBaseUrl: string;\n publicWsUrl: string;\n privateWsUrl: string;\n operatorUrl: Record<ChainNamespaceType, string>;\n};\n\nexport const API_URLS: Record<NetworkId, URLS> = {\n mainnet: {\n apiBaseUrl: \"https://api.orderly.org\",\n publicWsUrl: \"wss://ws-evm.orderly.org\",\n privateWsUrl: \"wss://ws-private-evm.orderly.org\",\n operatorUrl: {\n EVM: \"https://operator-evm.orderly.org\",\n SOL: \"https://operator-solana.orderly.org\",\n },\n },\n testnet: {\n apiBaseUrl: \"https://testnet-api.orderly.org\",\n publicWsUrl: \"wss://testnet-ws-evm.orderly.org\",\n privateWsUrl: \"wss://testnet-ws-private-evm.orderly.org\",\n operatorUrl: {\n EVM: \"https://testnet-operator-evm.orderly.org\",\n SOL: \"https://testnet-operator-sol.orderly.org\",\n },\n },\n};\n\nexport class DefaultConfigStore implements ConfigStore {\n protected map: Map<ConfigKey, any>;\n\n constructor(init: Partial<Record<ConfigKey, any>>) {\n const env = init.env || \"prod\";\n const networkId = (init.networkId || \"mainnet\") as NetworkId;\n const urls = API_URLS[networkId];\n const brokerId = init?.brokerId || \"orderly\";\n const brokerName = init?.brokerName || \"Orderly\";\n const chainNamespace = init?.chainNamespace || ChainNamespace.evm;\n\n this.map = new Map<ConfigKey, any>([\n [\"env\", env],\n [\"brokerId\", brokerId],\n [\"brokerName\", brokerName],\n [\"networkId\", networkId],\n [\"chainNamespace\", chainNamespace],\n [\"apiBaseUrl\", urls[\"apiBaseUrl\"]],\n [\"publicWsUrl\", urls[\"publicWsUrl\"]],\n [\"privateWsUrl\", urls[\"privateWsUrl\"]],\n [\"operatorUrl\", urls[\"operatorUrl\"]],\n ]);\n\n // this.solanaMap = new Map<ConfigKey, any>([]);\n }\n get<T>(key: ConfigKey): T {\n const value = this.map.get(key);\n if (typeof value !== \"object\" || value === null) {\n return value;\n }\n\n return value[this.get(\"chainNamespace\") as ChainNamespace] as T;\n }\n getOr<T>(key: ConfigKey, defaultValue: T): T {\n return this.map.get(key) ?? defaultValue;\n }\n set<T>(key: ConfigKey, value: T): void {\n this.map.set(key, value);\n }\n clear(): void {\n throw new Error(\"Method not implemented.\");\n }\n}\n","import * as ed from \"@noble/ed25519\";\nimport { encode as bs58encode, decode as bs58Decode } from \"bs58\";\nimport { ethers } from \"ethers\";\nimport type { BigNumberish } from \"ethers/src.ts/utils\";\nimport { API, SDKError, ChainNamespace } from \"@kodiak-finance/orderly-types\";\nimport { Account } from \"../account\";\nimport { IContract } from \"../contract\";\nimport { SimpleDI } from \"../di/simpleDI\";\nimport { getTimestamp, SignatureDomain } from \"../utils\";\nimport {\n Message,\n RegisterAccountInputs,\n WithdrawInputs,\n WalletAdapter,\n SettleInputs,\n AddOrderlyKeyInputs,\n DexRequestInputs,\n InternalTransferInputs,\n} from \"./walletAdapter\";\n\nabstract class BaseWalletAdapter<Config> implements WalletAdapter<Config> {\n // private readonly contractManager: ContractManager;\n\n abstract generateRegisterAccountMessage(\n inputs: RegisterAccountInputs,\n ): Promise<Message>;\n\n abstract generateWithdrawMessage(\n inputs: WithdrawInputs,\n ): Promise<Message & { domain: SignatureDomain }>;\n\n abstract generateInternalTransferMessage(\n inputs: InternalTransferInputs,\n ): Promise<Message & { domain: SignatureDomain }>;\n\n abstract generateSettleMessage(\n inputs: SettleInputs,\n ): Promise<Message & { domain: SignatureDomain }>;\n\n abstract generateAddOrderlyKeyMessage(\n inputs: AddOrderlyKeyInputs,\n ): Promise<Message>;\n\n abstract generateDexRequestMessage(\n inputs: DexRequestInputs,\n ): Promise<Message & { domain: SignatureDomain }>;\n\n abstract getBalance(): Promise<bigint>;\n\n abstract chainNamespace: ChainNamespace;\n\n async signMessageByOrderlyKey(payload: any) {\n // signature\n const account = SimpleDI.get<Account>(\"account\");\n const signer = account.signer;\n const signature = await signer.sign(payload, getTimestamp());\n signature[\"orderly-account-id\"] = account.accountId;\n return signature;\n }\n\n abstract call(\n address: string,\n method: string,\n params: any[],\n options?: {\n abi: any;\n },\n ): Promise<any>;\n\n abstract sendTransaction(\n contractAddress: string,\n method: string,\n payload: {\n from: string;\n to?: string;\n data: any[];\n value?: bigint;\n },\n options: {\n abi: any;\n },\n ): Promise<any>;\n\n abstract callOnChain(\n chain: API.NetworkInfos,\n address: string,\n method: string,\n params: any[],\n options: {\n abi: any;\n },\n ): Promise<any>;\n\n get address(): string {\n throw new SDKError(\"Method not implemented.\");\n }\n\n get chainId(): number {\n throw new SDKError(\"Method not implemented.\");\n }\n\n active(config: Config): void {\n throw new SDKError(\"Method not implemented.\");\n }\n\n abstract deactivate(): void;\n\n update(config: Config): void {\n throw new SDKError(\"Method not implemented.\");\n }\n\n generateSecretKey(): string {\n let privateKey, secretKey;\n do {\n privateKey = ed.utils.randomPrivateKey();\n secretKey = bs58encode(privateKey);\n } while (secretKey.length !== 44);\n\n return secretKey;\n }\n\n parseUnits(amount: string, decimals: number) {\n return ethers.parseUnits(amount, decimals).toString();\n }\n\n formatUnits(amount: BigNumberish, decimals: number) {\n return ethers.formatUnits(amount, decimals);\n }\n\n on(eventName: string, listener: (...args: any[]) => void): void {\n throw new SDKError(\"Method not implemented.\");\n }\n\n off(eventName: string, listener: (...args: any[]) => void): void {\n throw new SDKError(\"Method not implemented.\");\n }\n\n abstract pollTransactionReceiptWithBackoff(\n txHash: string,\n baseInterval?: number,\n maxInterval?: number,\n maxRetries?: number,\n ): Promise<any>;\n}\n\nexport { BaseWalletAdapter };\n","export {\n type IWalletAdapter as WalletAdapter,\n type getWalletAdapterFunc,\n type WalletAdapterOptions,\n} from \"./adapter\";\n// export { Web3WalletAdapter } from \"./web3Adapter\";\nexport { EtherAdapter } from \"./etherAdapter\";\n","import { BrowserProvider, ethers, toNumber } from \"ethers\";\nimport { DecodedError, ErrorDecoder } from \"ethers-decode-error\";\nimport { API } from \"@kodiak-finance/orderly-types\";\nimport { IWalletAdapter, WalletAdapterOptions } from \"./adapter\";\n\nconst errorDecoder = ErrorDecoder.create();\n\nexport interface EtherAdapterOptions {\n provider: any;\n wallet: {\n name?: string;\n };\n // getAddresses?: (address: string) => string;\n chain: { id: number };\n}\n\nexport class EtherAdapter implements IWalletAdapter {\n private provider?: BrowserProvider;\n private _chainId: number;\n private _address: string;\n constructor(options: WalletAdapterOptions) {\n // super();\n\n // this._chainId = parseInt(options.chain.id, 16);\n this._chainId = options.chain.id;\n this.provider = new BrowserProvider(options.provider, \"any\");\n this._address = options.address;\n }\n\n parseUnits(amount: string, decimals: number) {\n return ethers.parseUnits(amount, decimals).toString();\n }\n formatUnits(amount: string, decimals: number) {\n return ethers.formatUnits(amount, decimals);\n }\n getBalance(userAddress: string): Promise<any> {\n // return contract.balanceOf(userAddress);\n return this.provider!.getBalance(userAddress).then(\n (res) => {\n return res;\n },\n (error) => {},\n );\n }\n\n deposit(from: string, to: string, amount: string): Promise<any> {\n throw new Error(\"Method not implemented.\");\n }\n\n async call(\n address: string,\n method: string,\n params: any[],\n options: {\n abi: any;\n },\n ): Promise<any> {\n const singer = await this.provider?.getSigner();\n const contract = new ethers.Contract(address, options.abi, singer);\n\n return contract[method].apply(null, params).catch(async (error) => {\n const parsedEthersError = await parseError(error);\n throw parsedEthersError;\n });\n }\n\n async callOnChain(\n chain: API.NetworkInfos,\n address: string,\n method: string,\n params: any[],\n options: {\n abi: any;\n },\n ): Promise<any> {\n // const singer = await this.provider?.getSigner();\n // const contract = new ethers.Contract(address, options.abi, singer);\n\n const provider = new ethers.JsonRpcProvider(chain.public_rpc_url);\n\n const contract = new ethers.Contract(address, options.abi, provider);\n\n return contract[method].apply(null, params).catch(async (error) => {\n const parsedEthersError = await parseError(error);\n throw parsedEthersError;\n });\n }\n\n get chainId(): number {\n return this._chainId;\n }\n\n set chainId(chainId: number) {\n this._chainId = chainId;\n }\n\n get addresses(): string {\n return this._address;\n }\n\n async send(\n method: string,\n params: Array<any> | Record<string, any>,\n ): Promise<any> {\n return await this.provider?.send(method, params);\n }\n\n async sendTransaction(\n contractAddress: string,\n method: string,\n payload: {\n from: string;\n to?: string;\n data: any[];\n value?: bigint;\n },\n options: {\n abi: any;\n },\n ): Promise<ethers.TransactionResponse> {\n const singer = await this.provider?.getSigner();\n if (!singer) {\n throw new Error(\"singer is not exist\");\n }\n\n const contract = new ethers.Contract(\n contractAddress,\n options.abi,\n this.provider,\n );\n\n // contract.interface.getAbiCoder().encode(tx.data);\n const encodeFunctionData = contract.interface.encodeFunctionData(\n method,\n payload.data,\n );\n\n const tx: ethers.TransactionRequest = {\n from: payload.from,\n to: payload.to,\n data: encodeFunctionData,\n value: payload.value,\n };\n\n // const gas = await this.estimateGas(tx);\n\n // tx.gasLimit = BigInt(Math.ceil(gas * 1.2));\n\n try {\n const result = await singer.sendTransaction(tx);\n\n return result;\n } catch (error) {\n const parsedEthersError = await parseError(error);\n throw parsedEthersError;\n }\n }\n\n async getTransactionRecipect(txHash: string) {\n await this.provider!.getTransactionReceipt(txHash);\n }\n\n async pollTransactionReceiptWithBackoff(\n txHash: string,\n baseInterval = 1000,\n maxInterval = 6000,\n maxRetries = 30,\n ) {\n let interval = baseInterval;\n let retries = 0;\n\n while (retries < maxRetries) {\n try {\n const receipt = await this.provider!.getTransactionReceipt(txHash);\n if (receipt) {\n // completed, get receipt\n return receipt;\n }\n } catch (error) {\n // waiting\n }\n\n await new Promise((resolve) => setTimeout(resolve, interval));\n\n interval = Math.min(interval * 2, maxInterval);\n retries++;\n }\n\n throw new Error(\"Transaction did not complete after maximum retries.\");\n }\n\n private async estimateGas(tx: ethers.TransactionRequest): Promise<number> {\n const gas = await this.provider!.estimateGas(tx);\n\n return toNumber(gas);\n }\n\n async signTypedData(address: string, data: any) {\n return await this.provider?.send(\"eth_signTypedData_v4\", [address, data]);\n }\n\n async verify(\n data: { domain: any; message: any; types: any },\n signature: string,\n ) {\n const { domain, types, message } = data;\n\n const recovered = ethers.verifyTypedData(domain, types, message, signature);\n }\n\n on(eventName: any, listener: any): void {\n this.provider?.on(eventName, listener);\n }\n\n off(eventName: any, listener: any): void {\n this.provider?.off(eventName, listener);\n }\n\n getContract(address: string, abi: any): ethers.Contract {\n const contract = new ethers.Contract(address, abi, this.provider);\n return contract;\n }\n}\n\nasync function parseError(rawError: any): Promise<DecodedError> {\n const error: DecodedError = await errorDecoder.decode(rawError);\n return error;\n}\n"],"mappings":"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ACR,KAAQ,SACV,EACA,CACE,aAAgB,UAChB,KAAQ,YACR,KAAQ,SACV,EACA,CACE,aAAgB,UAChB,KAAQ,cACR,KAAQ,SACV,EACA,CACE,aAAgB,UAChB,KAAQ,MACR,KAAQ,SACV,EACA,CACE,aAAgB,UAChB,KAAQ,SACR,KAAQ,SACV,EACA,CACE,aAAgB,UAChB,KAAQ,WACR,KAAQ,SACV,EACA,CACE,aAAgB,SAChB,KAAQ,gBACR,KAAQ,QACV,CACF,EACA,aAAgB,kCAChB,KAAQ,OACR,KAAQ,OACV,CACF,EACA,KAAQ,WACR,QAAW,CAAC,EACZ,gBAAmB,aACnB,KAAQ,UACV,CACF,ECx7BA,IAAAC,GAAA,CACG,CACG,OAAS,CACN,CACG,aAAe,SACf,KAAO,QACP,KAAO,QACV,EACA,CACG,aAAe,SACf,KAAO,UACP,KAAO,QACV,EACA,CACG,aAAe,QACf,KAAO,YACP,KAAO,OACV,CACH,EACA,gBAAkB,aAClB,KAAO,aACV,EACA,CACG,UAAY,GACZ,OAAS,CACN,CACG,QAAU,GACV,aAAe,UACf,KAAO,QACP,KAAO,SACV,EACA,CACG,QAAU,GACV,aAAe,UACf,KAAO,UACP,KAAO,SACV,EACA,CACG,QAAU,GACV,aAAe,UACf,KAAO,QACP,KAAO,SACV,CACH,EACA,KAAO,WACP,KAAO,OACV,EACA,CACG,UAAY,GACZ,OAAS,CACN,CACG,QAAU,GACV,aAAe,UACf,KAAO,OACP,KAAO,SACV,EACA,CACG,QAAU,GACV,aAAe,UACf,KAAO,KACP,KAAO,SACV,EACA,CACG,QAAU,GACV,aAAe,UACf,KAAO,QACP,KAAO,SACV,CACH,EACA,KAAO,WACP,KAAO,OACV,EACA,CACG,OAAS,CACN,CACG,aAAe,UACf,KAAO,QACP,KAAO,SACV,EACA,CACG,aAAe,UACf,KAAO,UACP,KAAO,SACV,CACH,EACA,KAAO,YACP,QAAU,CACP,CACG,aAAe,UACf,KAAO,GACP,KAAO,SACV,CACH,EACA,gBAAkB,OAClB,KAAO,UACV,EACA,CACG,OAAS,CACN,CACG,aAAe,UACf,KAAO,UACP,KAAO,SACV,EACA,CACG,aAAe,UACf,KAAO,SACP,KAAO,SACV,CACH,EACA,KAAO,UACP,QAAU,CACP,CACG,aAAe,OACf,KAAO,GACP,KAAO,MACV,CACH,EACA,gBAAkB,aAClB,KAAO,UACV,EACA,CACG,OAAS,CACN,CACG,aAAe,UACf,KAAO,UACP,KAAO,SACV,CACH,EACA,KAAO,YACP,QAAU,CACP,CACG,aAAe,UACf,KAAO,GACP,KAAO,SACV,CACH,EACA,gBAAkB,OAClB,KAAO,UACV,EACA,CACG,OAAS,CAET,EACA,KAAO,WACP,QAAU,CACP,CACG,aAAe,QACf,KAAO,GACP,KAAO,OACV,CACH,EACA,gBAAkB,OAClB,KAAO,UACV,EACA,CACG,OAAS,CACN,CACG,aAAe,UACf,KAAO,UACP,KAAO,SACV,EACA,CACG,aAAe,UACf,KAAO,kBACP,KAAO,SACV,CACH,EACA,KAAO,oBACP,QAAU,CACP,CACG,aAAe,OACf,KAAO,GACP,KAAO,MACV,CACH,EACA,gBAAkB,aAClB,KAAO,UACV,EACA,CACG,OAAS,CACN,CACG,aAAe,UACf,KAAO,UACP,KAAO,SACV,EACA,CACG,aAAe,UACf,KAAO,aACP,KAAO,SACV,CACH,EACA,KAAO,oBACP,QAAU,CACP,CACG,aAAe,OACf,KAAO,GACP,KAAO,MACV,CACH,EACA,gBAAkB,aAClB,KAAO,UACV,EACA,CACG,OAAS,CACN,CACG,aAAe,UACf,KAAO,SACP,KAAO,SACV,CACH,EACA,KAAO,QACP,QAAU,CAEV,EACA,gBAAkB,aAClB,KAAO,UACV,EACA,CACG,OAAS,CACN,CACG,aAAe,UACf,KAAO,MACP,KAAO,SACV,EACA,CACG,aAAe,UACf,KAAO,UACP,KAAO,SACV,CACH,EACA,KAAO,OACP,QAAU,CAEV,EACA,gBAAkB,aAClB,KAAO,UACV,EACA,CACG,OAAS,CAET,EACA,KAAO,OACP,QAAU,CACP,CACG,aAAe,SACf,KAAO,GACP,KAAO,QACV,CACH,EACA,gBAAkB,OAClB,KAAO,UACV,EACA,CACG,OAAS,CACN,CACG,aAAe,OACf,KAAO,UACP,KAAO,MACV,CACH,EACA,KAAO,iBACP,QAAU,CAEV,EACA,gBAAkB,aAClB,KAAO,UACV,EACA,CACG,OAAS,CAET,EACA,KAAO,SACP,QAAU,CACP,CACG,aAAe,SACf,KAAO,GACP,KAAO,QACV,CACH,EACA,gBAAkB,OAClB,KAAO,UACV,EACA,CACG,OAAS,CAET,EACA,KAAO,cACP,QAAU,CACP,CACG,aAAe,UACf,KAAO,GACP,KAAO,SACV,CACH,EACA,gBAAkB,OAClB,KAAO,UACV,EACA,CACG,OAAS,CACN,CACG,aAAe,UACf,KAAO,YACP,KAAO,SACV,EACA,CACG,aAAe,UACf,KAAO,SACP,KAAO,SACV,CACH,EACA,KAAO,WACP,QAAU,CACP,CACG,aAAe,OACf,KAAO,GACP,KAAO,MACV,CACH,EACA,gBAAkB,aAClB,KAAO,UACV,EACA,CACG,OAAS,CACN,CACG,aAAe,UACf,KAAO,SACP,KAAO,SACV,EACA,CACG,aAAe,UACf,KAAO,YACP,KAAO,SACV,EACA,CACG,aAAe,UACf,KAAO,SACP,KAAO,SACV,CACH,EACA,KAAO,eACP,QAAU,CACP,CACG,aAAe,OACf,KAAO,GACP,KAAO,MACV,CACH,EACA,gBAAkB,aAClB,KAAO,UACV,CACH,EC9VA,IAAAC,GAAA,CACE,CACE,OAAU,CAAC,EACX,gBAAmB,aACnB,KAAQ,aACV,EACA,CACE,OAAU,CAAC,EACX,KAAQ,mBACR,KAAQ,OACV,EACA,CACE,OAAU,CAAC,EACX,KAAQ,cACR,KAAQ,OACV,EACA,CACE,OAAU,CACR,CACE,aAAgB,UAChB,KAAQ,UACR,KAAQ,SACV,EACA,CACE,aAAgB,UAChB,KAAQ,SACR,KAAQ,SACV,CACF,EACA,KAAQ,mBACR,KAAQ,OACV,EACA,CACE,OAAU,CAAC,EACX,KAAQ,mBACR,KAAQ,OACV,EACA,CACE,OAAU,CAAC,EACX,KAAQ,qBACR,KAAQ,OACV,EACA,CACE,OAAU,CAAC,EACX,KAAQ,+BACR,KAAQ,OACV,EACA,CACE,OAAU,C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","names":["require_base64_js","__commonJSMin","exports","init_shim","byteLength","toByteArray","fromByteArray","lookup","revLookup","Arr","code","i","len","getLens","b64","validLen","placeHoldersLen","lens","_byteLength","tmp","arr","curByte","tripletToBase64","num","encodeChunk","uint8","start","end","output","extraBytes","parts","maxChunkLength","len2","require_ieee754","__commonJSMin","exports","init_shim","buffer","offset","isLE","mLen","nBytes","e","m","eLen","eMax","eBias","nBits","i","d","s","value","c","rt","require_buffer","__commonJSMin","exports","init_shim","base64","ieee754","customInspectSymbol","Buffer","SlowBuffer","K_MAX_LENGTH","typedArraySupport","arr","proto","createBuffer","length","buf","arg","encodingOrOffset","allocUnsafe","from","value","fromString","fromArrayView","isInstance","fromArrayBuffer","valueOf","b","fromObject","assertSize","size","alloc","fill","encoding","checked","string","byteLength","actual","fromArrayLike","array","i","arrayView","copy","byteOffset","obj","len","numberIsNaN","a","x","y","list","buffer","pos","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","start","end","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","n","m","str","max","target","thisStart","thisEnd","thisCopy","targetCopy","bidirectionalIndexOf","val","dir","arrayIndexOf","indexSize","arrLength","valLength","read","foundIndex","found","j","hexWrite","offset","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","asciiToBytes","base64Write","ucs2Write","utf16leToBytes","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","MAX_ARGUMENTS_LENGTH","codePoints","ret","out","hexSliceLookupTable","bytes","newBuf","checkOffset","ext","noAssert","mul","checkInt","min","maxBytes","limit","sub","checkIEEE754","writeFloat","littleEndian","writeDouble","targetStart","code","INVALID_BASE64_RE","base64clean","units","leadSurrogate","byteArray","c","hi","lo","src","dst","type","alphabet","table","i16","process","browserModule","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","runClearTimeout","marker","queue","draining","currentQueue","queueIndex","cleanUpNextTick","drainQueue","timeout","len","args","i","Item","array","noop","name","dir","browser","_browser","emitWarning","binding","_binding","exit","pid","features","kill","dlopen","uptime","memoryUsage","uvCounters","platform","arch","execPath","execArgv","api","nextTick","title","env","environment","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","cwd","chdir","umask","import_buffer","import_process","_globalThis","_global","init_shim","__esmMin","Object","get","require_src","__commonJSMin","exports","module","init_shim","base","ALPHABET","BASE_MAP","j","i","x","xc","BASE","LEADER","FACTOR","iFACTOR","encode","source","zeroes","length","pbegin","pend","size","b58","carry","it1","it2","str","decodeUnsafe","psz","b256","charCode","it3","it4","vch","decode","string","buffer","require_bs58","__commonJSMin","exports","module","init_shim","basex","ALPHABET","init_shim","init_shim","init_shim","import_bs58","init_shim","ed25519_CURVE","P","N","Gx","Gy","_a","_d","h","L","L2","err","m","isBig","isStr","s","isBytes","a","abytes","l","u8n","len","u8fr","buf","padh","pad","bytesToHex","b","C","_ch","ch","hexToBytes","hex","hl","al","array","ai","hi","n1","n2","toU8","cr","subtle","concatBytes","arrs","r","sum","randomBytes","big","arange","min","max","msg","M","modN","invert","num","md","x","y","u","v","q","n","callHash","name","fn","etc","apoint","p","Point","B256","_Point","ex","ey","ez","et","__publicField","zip215","d","normed","lastByte","bytesToNumLE","y2","isValid","uvRatio","isXOdd","isLastByteOdd","X","Y","Z","T","X2","Y2","Z2","Z4","aX2","left","right","XY","ZT","other","X1","Y1","Z1","X1Z2","X2Z1","Y1Z2","Y2Z1","I","A","B","D","x1y1","E","G","F","H","X3","Y3","T3","Z3","T1","T2","safe","wNAF","f","z","iz","numTo32bLE","pow2","power","pow_2_252_3","b2","b4","b5","b10","b20","b40","b80","b160","b240","b250","RM1","v3","v7","pow","vx2","root1","root2","useRoot1","useRoot2","noRoot","modL_LE","hash","sha512a","sha512s","hash2extK","hashed","head","prefix","scalar","point","pointBytes","getExtendedPublicKeyAsync","priv","getExtendedPublicKey","getPublicKeyAsync","hashFinishA","res","sha512a","_sign","e","rBytes","msg","P","s","r","modL_LE","R","G","concatBytes","hashed","S","modN","abytes","numTo32bLE","L2","signAsync","privKey","m","toU8","getExtendedPublicKeyAsync","sha512a","hashFinishA","etc","messages","s","subtle","m","concatBytes","u8n","bytesToHex","hexToBytes","M","invert","randomBytes","utils","getExtendedPublicKeyAsync","getExtendedPublicKey","L","w","p","G","W","scalarBits","pwindows","pwindowSize","precompute","points","b","i","Gpows","ctneg","cnd","n","wNAF","comp","I","f","pow_2_w","maxNum","mask","big","shiftBy","wbits","off","offF","offP","isEven","isNeg","BaseOrderlyKeyPair","_BaseOrderlyKeyPair","privKey","secretKey","utils","bs58encode","bytes","bs58Decode","message","signAsync","pubKey","getPublicKeyAsync","BaseKeyStore","networkId","LocalStorageStore","address","orderlyKey","BaseOrderlyKeyPair","accountId","key","data","value","oldValue","name","MockKeyStore","secretKey","init_shim","utils_exports","__export","base64url","calculateStringHash","formatByUnits","getGlobalObject","getTimestamp","isHex","isHexString","parseAccountId","parseBrokerHash","parseTokenHash","parseUnits","init_shim","keccak256","AbiCoder","solidityPackedKeccak256","formatUnits","aStr","brokerId","userAddress","abicoder","tokenSymbol","input","amount","unit","value","_global","timeOffset","import_buffer","BaseSigner","keyStore","message","timestamp","getTimestamp","_timestamp","msgStr","signature","publicKey","text","orderlyKeyPair","u8","signHex","base64url","default","init_shim","DEFAUL_ORDERLY_KEY_SCOPE","definedTypes","getMockSigner","secretKey","mockKeyStore","MockKeyStore","BaseSigner","getDefaultSigner","localStorageStore","LocalStorageStore","getVerifyingContract","getDomain","chainId","onChainDomain","generateRegisterAccountMessage","inputs","registrationNonce","brokerId","timestamp","getTimestamp","primaryType","message","typeDefinition","definedTypes","toSignatureMessage","generateAddOrderlyKeyMessage","publicKey","expiration","scope","tag","subAccountId","DEFAUL_ORDERLY_KEY_SCOPE","generateSettleMessage","settlePnlNonce","domain","generateDexRequestMessage","payloadType","nonce","receiver","amount","vaultId","token","dexBrokerId","init_shim","BSC_TESTNET_CHAINID","ABSTRACT_CHAIN_ID_MAP","MONAD_TESTNET_CHAINID","STORY_TESTNET_CHAINID","init_shim","nativeUSDCAddress","stagingVaultAddressOnArbitrumTestnet","stagingVerifyAddressOnArbitrumTestnet","mainnetUSDCAddress","mainnetVaultAddress","mainnetVerifyAddress","solanaMainnetVaultAddress","solanaStagingVualtAddress","solanaQaVaultAddress","solanaUSDCAddress","solanaMainnetUSDCAddress","EVENT_NAMES","stagingStoryTestnetVaultAddress","stagingMonadTestnetVaultAddress","MonadTestnetUSDCAddress","qaMonadTestnetVaultAddress","qaArbitrumTestnetVaultAddress","AbstractMainnetUSDCAddress","AbstractTestnetUSDCAddress","AbstractDevVaultAddress","AbstractQaVaultAddress","stagingAbstractTestnetVaultAddress","abstractMainnetVaultAddress","bscTestnetDevVaultAddress","bscTestnetQaVaultAddress","bscTestnetStagingVaultAddress","bscTestnetUSDCAddress","bscMainnetVaultAddress","bscMainnetUSDCAddress","mainnetUSDCAbi_default","mainnetVaultAbi_default","stagingUSDCAbi_default","stagingVaultAbi_default","BaseContract","configStore","networkId","env","verifyContractAddress","stagingVerifyAddressOnArbitrumTestnet","mainnetUSDCAddress","mainnetUSDCAbi_default","mainnetVaultAddress","mainnetVaultAbi_default","mainnetVerifyAddress","solanaMainnetUSDCAddress","solanaMainnetVaultAddress","abstractMainnetVaultAddress","AbstractMainnetUSDCAddress","bscMainnetVaultAddress","bscMainnetUSDCAddress","solanaVaultAddress","solanaStagingVualtAddress","storyTestnetVaultAddress","stagingStoryTestnetVaultAddress","monadTestnetVaultAddress","stagingMonadTestnetVaultAddress","monadTestnetUSDCAddress","MonadTestnetUSDCAddress","abstractVaultAddress","stagingAbstractTestnetVaultAddress","abstractUSDCAddress","AbstractTestnetUSDCAddress","bscVaultAddress","bscTestnetStagingVaultAddress","bscUSDCAddress","bscTestnetUSDCAddress","vaultAddress","stagingVaultAddressOnArbitrumTestnet","solanaQaVaultAddress","qaMonadTestnetVaultAddress","AbstractQaVaultAddress","bscTestnetQaVaultAddress","qaArbitrumTestnetVaultAddress","AbstractDevVaultAddress","bscTestnetDevVaultAddress","nativeUSDCAddress","stagingUSDCAbi_default","solanaUSDCAddress","stagingVaultAbi_default","getContractInfoByChainId","chainId","contractInfo","tokenAddress","STORY_TESTNET_CHAINID","MONAD_TESTNET_CHAINID","ABSTRACT_CHAIN_ID_MAP","BSC_TESTNET_CHAINID","init_shim","init_shim","Container","providers","services","serviceClasses","serviceClass","service","name","target","propertyKey","property","key","container_default","_SimpleDI","getGlobalObject","container_default","serviceClasses","name","serviceClass","instance","SimpleDI","simpleDI_default","init_shim","PublicKey","AbiCoder","keccak256","EventEmitter","AccountStatusEnum","SDKError","ChainNamespace","DEFAUL_ORDERLY_KEY_SCOPE","EMPTY_LIST","init_shim","AdditionalInfoRepository","repository","address","data","key","init_shim","ABSTRACT_CHAIN_ID_MAP","ApiError","ChainNamespace","MaxUint256","Assets","configStore","contractManger","account","inputs","slippage","amount","converted_asset","payload","url","timestamp","getTimestamp","message","signer","publicKey","signature","res","ApiError","chainId","token","allowCrossChainWithdraw","decimals","nonce","messageData","agwGobalAddress","ABSTRACT_CHAIN_ID_MAP","signatured","domain","data","options","result","address","contractInfo","contractAddress","getContractInfoByChainId","tokenAddress","userAddress","inputVaultAddress","vaultAddress","isSetMaxValue","parsedAmount","MaxUint256","chain","brokerId","depositData","parseBrokerHash","parseTokenHash","ChainNamespace","fee","tokenAmount","value","contractMethod","fromAddress","contractData","receiver","init","requestUrl","init_shim","LocalStorageRepository","name","address","data","all","key","error","cb","init_shim","WalletAdapterManager","walletAdapters","chainNamespace","address","chainId","options","adapter","config","_Account","configStore","keyStore","walletAdapters","options","EventEmitter","AccountStatusEnum","BaseContract","Assets","WalletAdapterManager","AdditionalInfoRepository","LocalStorageRepository","address","wallet","SDKError","EVENT_NAMES","nextState","finallyState","state","brokerId","ChainNamespace","userAccount","PublicKey","decodedUserAccount","abicoder","AbiCoder","keccak256","parseBrokerHash","parseAccountId","accountInfo","orderlyKey","publicKey","orderlyKeyStatus","now","getTimestamp","expiration","validScope","chainNamespace","res","subAccounts","activeSubAccount","subAccount","nonce","timestamp","message","signatured","description","url","data","signature","subAccountId","accountId","subAccountBalances","account","holding","EMPTY_LIST","groupedData","item","keyPair","e","secretKey","BaseOrderlyKeyPair","DEFAUL_ORDERLY_KEY_SCOPE","orderly_key","key_status","subAccountState","domain","payload","chainId","isHex","BaseSigner","addr","chainType","signer","init","requestUrl","inputs","receiver","dexBrokerId","Account","init_shim","init_shim","ChainNamespace","API_URLS","DefaultConfigStore","init","env","networkId","urls","brokerId","brokerName","chainNamespace","key","value","defaultValue","init_shim","import_bs58","ethers","SDKError","BaseWalletAdapter","payload","account","SimpleDI","signature","getTimestamp","SDKError","config","privateKey","secretKey","utils","bs58encode","amount","decimals","ethers","eventName","listener","init_shim","init_shim","BrowserProvider","ethers","toNumber","ErrorDecoder","errorDecoder","EtherAdapter","options","amount","decimals","userAddress","res","error","from","to","address","method","params","singer","parseError","chain","provider","chainId","contractAddress","payload","encodeFunctionData","tx","txHash","baseInterval","maxInterval","maxRetries","interval","retries","receipt","resolve","gas","data","signature","domain","types","message","recovered","eventName","listener","abi","rawError"]}
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js","../../../node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js","../../../node_modules/.pnpm/buffer@5.7.1/node_modules/buffer/index.js","../../../node_modules/.pnpm/node-stdlib-browser@1.3.1/node_modules/node-stdlib-browser/node_modules/process/browser.js","../../../node_modules/.pnpm/node-stdlib-browser@1.3.1/node_modules/node-stdlib-browser/proxy/process.js","../../../node_modules/.pnpm/node-stdlib-browser@1.3.1/node_modules/node-stdlib-browser/helpers/esbuild/shim.js","../../../node_modules/.pnpm/base-x@4.0.1/node_modules/base-x/src/index.js","../../../node_modules/.pnpm/bs58@5.0.0/node_modules/bs58/index.js","../src/index.ts","../src/keyStore.ts","../src/keyPair.ts","../../../node_modules/.pnpm/@noble+ed25519@2.3.0/node_modules/@noble/ed25519/index.js","../src/signer.ts","../src/utils.ts","../src/helper.ts","../src/contract.ts","../src/constants.ts","../src/wallet/abis/mainnetUSDCAbi.json","../src/wallet/abis/mainnetVaultAbi.json","../src/wallet/abis/stagingUSDCAbi.json","../src/wallet/abis/stagingVaultAbi.json","../src/di/simpleDI.ts","../src/di/container.ts","../src/account.ts","../src/additionalInfoRepository.ts","../src/assets.ts","../src/repository.ts","../src/walletAdapterManager.ts","../src/configStore/configStore.ts","../src/configStore/defaultConfigStore.ts","../src/wallet/baseWalletAdapter.ts","../src/wallet/index.ts","../src/wallet/etherAdapter.ts"],"sourcesContent":["'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n var proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n var copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n Buffer.from(buf).copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return '<Buffer ' + str + '>'\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (var i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable = (function () {\n var alphabet = '0123456789abcdef'\n var table = new Array(256)\n for (var i = 0; i < 16; ++i) {\n var i16 = i * 16\n for (var j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","import {\n\tnextTick,\n\ttitle,\n\tenv as environment,\n\targv,\n\tversion,\n\tversions,\n\ton,\n\taddListener,\n\tonce,\n\toff,\n\tremoveListener,\n\tremoveAllListeners,\n\temit,\n\tprependListener,\n\tprependOnceListener,\n\tlisteners,\n\tcwd,\n\tchdir,\n\tumask,\n\t// @ts-ignore\n\tbrowser as _browser,\n\t// @ts-ignore\n\tbinding as _binding\n} from 'process/browser.js';\n\nfunction noop() {}\n\nconst browser = /** @type {boolean} */ (_browser);\nconst emitWarning = noop;\nconst binding = /** @type {Function} */ (_binding);\nconst exit = noop;\nconst pid = 1;\nconst features = {};\nconst kill = noop;\nconst dlopen = noop;\nconst uptime = noop;\nconst memoryUsage = noop;\nconst uvCounters = noop;\nconst platform = 'browser';\nconst arch = 'browser';\nconst execPath = 'browser';\nconst execArgv = /** @type {string[]} */ ([]);\n\nconst api = {\n\tnextTick,\n\ttitle,\n\tbrowser,\n\tenv: environment,\n\targv,\n\tversion,\n\tversions,\n\ton,\n\taddListener,\n\tonce,\n\toff,\n\tremoveListener,\n\tremoveAllListeners,\n\temit,\n\temitWarning,\n\tprependListener,\n\tprependOnceListener,\n\tlisteners,\n\tbinding,\n\tcwd,\n\tchdir,\n\tumask,\n\texit,\n\tpid,\n\tfeatures,\n\tkill,\n\tdlopen,\n\tuptime,\n\tmemoryUsage,\n\tuvCounters,\n\tplatform,\n\tarch,\n\texecPath,\n\texecArgv\n};\n\nexport default api;\n\nexport {\n\tnextTick,\n\ttitle,\n\tbrowser,\n\tenvironment as env,\n\targv,\n\tversion,\n\tversions,\n\ton,\n\taddListener,\n\tonce,\n\toff,\n\tremoveListener,\n\tremoveAllListeners,\n\temit,\n\temitWarning,\n\tprependListener,\n\tprependOnceListener,\n\tlisteners,\n\tbinding,\n\tcwd,\n\tchdir,\n\tumask,\n\texit,\n\tpid,\n\tfeatures,\n\tkill,\n\tdlopen,\n\tuptime,\n\tmemoryUsage,\n\tuvCounters,\n\tplatform,\n\tarch,\n\texecPath,\n\texecArgv\n};\n","var _globalThis = function (Object) {\n function get() {\n var _global = this || self;\n delete Object.prototype.__magic__;\n return _global;\n }\n if (typeof globalThis === \"object\") {\n return globalThis;\n }\n if (this) {\n return get();\n } else {\n Object.defineProperty(Object.prototype, \"__magic__\", {\n configurable: true,\n get: get\n });\n var _global = __magic__;\n return _global;\n }\n}(Object);\nimport { Buffer } from 'buffer';\nimport process from 'process';\nvar _global = _globalThis;\nexport { Buffer, process, _global as global };\n","'use strict'\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\nfunction base (ALPHABET) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256)\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i)\n var xc = x.charCodeAt(0)\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i\n }\n var BASE = ALPHABET.length\n var LEADER = ALPHABET.charAt(0)\n var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n function encode (source) {\n if (source instanceof Uint8Array) {\n } else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength)\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source)\n }\n if (!(source instanceof Uint8Array)) { throw new TypeError('Expected Uint8Array') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0\n var length = 0\n var pbegin = 0\n var pend = source.length\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++\n zeroes++\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n var b58 = new Uint8Array(size)\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin]\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0\n b58[it1] = (carry % BASE) >>> 0\n carry = (carry / BASE) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n pbegin++\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length\n while (it2 !== size && b58[it2] === 0) {\n it2++\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes)\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return new Uint8Array() }\n var psz = 0\n // Skip and count leading '1's.\n var zeroes = 0\n var length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size)\n // Process the characters.\n while (source[psz]) {\n // Find code of next character\n var charCode = source.charCodeAt(psz)\n // Base map can not be indexed using char code\n if (charCode > 255) { return }\n // Decode character\n var carry = BASE_MAP[charCode]\n // Invalid character\n if (carry === 255) { return }\n var i = 0\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0\n b256[it3] = (carry % 256) >>> 0\n carry = (carry / 256) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n psz++\n }\n // Skip leading zeroes in b256.\n var it4 = size - length\n while (it4 !== size && b256[it4] === 0) {\n it4++\n }\n var vch = new Uint8Array(zeroes + (size - it4))\n var j = zeroes\n while (it4 !== size) {\n vch[j++] = b256[it4++]\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string)\n if (buffer) { return buffer }\n throw new Error('Non-base' + BASE + ' character')\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nmodule.exports = base\n","const basex = require('base-x')\nconst ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n\nmodule.exports = basex(ALPHABET)\n","export {\n MockKeyStore,\n LocalStorageStore,\n BaseKeyStore,\n type OrderlyKeyStore,\n} from \"./keyStore\";\nexport {\n type Signer,\n type MessageFactor,\n type SignedMessagePayload,\n BaseSigner,\n} from \"./signer\";\n\nexport { default as EventEmitter } from \"eventemitter3\";\n\nexport { type OrderlyKeyPair, BaseOrderlyKeyPair } from \"./keyPair\";\n\nexport {\n getMockSigner,\n getDefaultSigner,\n generateAddOrderlyKeyMessage,\n generateRegisterAccountMessage,\n generateSettleMessage,\n generateDexRequestMessage,\n} from \"./helper\";\n\nexport {\n type IContract,\n BaseContract as BaseContractManager,\n} from \"./contract\";\n\nexport { EVENT_NAMES } from \"./constants\";\n\nexport { default as SimpleDI } from \"./di/simpleDI\";\n\nexport { Account, type AccountState } from \"./account\";\nexport * from \"./configStore/configStore\";\nexport type { SubAccount } from \"./subAccount\";\n\nexport {\n DefaultConfigStore,\n API_URLS,\n type URLS,\n} from \"./configStore/defaultConfigStore\";\nexport type {\n ChainType,\n WalletAdapter,\n Message,\n RegisterAccountInputs,\n WithdrawInputs,\n InternalTransferInputs,\n SettleInputs,\n AddOrderlyKeyInputs,\n DexRequestInputs,\n} from \"./wallet/walletAdapter\";\nexport { BaseWalletAdapter } from \"./wallet/baseWalletAdapter\";\nexport type { Ed25519Keypair } from \"./types\";\nexport type { SignatureDomain } from \"./utils\";\n\nexport * from \"./wallet\";\n\nexport * as utils from \"./utils\";\n","import { BaseOrderlyKeyPair, OrderlyKeyPair } from \"./keyPair\";\n\nexport interface OrderlyKeyStore {\n getOrderlyKey: (address?: string) => OrderlyKeyPair | null;\n getAccountId: (address: string) => string | undefined | null;\n setAccountId: (address: string, accountId: string) => void;\n getAddress: () => string | undefined | null;\n setAddress: (address: string) => void;\n removeAddress: () => void;\n generateKey: () => OrderlyKeyPair;\n cleanKey: (address: string, key: string) => void;\n cleanAllKey: (address: string) => void;\n setKey: (orderlyKey: string, secretKey: OrderlyKeyPair) => void;\n}\n\nexport abstract class BaseKeyStore implements OrderlyKeyStore {\n constructor(\n private readonly networkId: string = \"testnet\" // private readonly accountId: string\n ) {}\n abstract getOrderlyKey(address?: string): OrderlyKeyPair | null;\n abstract getAccountId(address: string): string | undefined | null;\n abstract setAccountId(address: string, accountId: string): void;\n abstract getAddress(): string | undefined | null;\n abstract setAddress(address: string): void;\n abstract removeAddress(): void;\n abstract generateKey(): OrderlyKeyPair;\n abstract setKey(orderlyKey: string, secretKey: OrderlyKeyPair): void;\n abstract cleanAllKey(address: string): void;\n abstract cleanKey(address: string, key: string): void;\n\n protected get keyPrefix() {\n return `orderly_${this.networkId}_`;\n }\n}\n\nexport class LocalStorageStore extends BaseKeyStore {\n getOrderlyKey(address?: string): OrderlyKeyPair | null {\n //TODO: get secretKey from localStorage, and return a OrderlyKeyPair\n //\n let orderlyKey;\n\n if (address) {\n orderlyKey = this.getItem(address, \"orderlyKey\");\n } else {\n //if address is undefined, get the default address\n const address = this.getAddress();\n if (!address) return null;\n orderlyKey = this.getItem(address, \"orderlyKey\");\n }\n\n if (!orderlyKey) {\n return null;\n }\n return new BaseOrderlyKeyPair(orderlyKey);\n }\n\n getAccountId(address: string): string | undefined | null {\n return this.getItem(address, \"accountId\");\n }\n\n setAccountId(address: string, accountId: string) {\n // localStorage.setItem(`${this.keyPrefix}accountId`, accountId);\n this.setItem(address, { accountId });\n }\n\n getAddress(): string | undefined | null {\n return localStorage.getItem(`${this.keyPrefix}address`);\n }\n\n setAddress(address: string) {\n localStorage.setItem(`${this.keyPrefix}address`, address);\n // this.setItem(address, { address });\n }\n removeAddress() {\n localStorage.removeItem(`${this.keyPrefix}address`);\n }\n\n generateKey() {\n return BaseOrderlyKeyPair.generateKey();\n }\n\n setKey(address: string, orderlyKey: OrderlyKeyPair) {\n // localStorage.setItem(`${this.keyPrefix}orderlyKey`, orderlyKey);\n // localStorage.setItem(`${this.keyPrefix}secretKey`, secretKey);\n this.setItem(address, { orderlyKey: orderlyKey.secretKey });\n }\n\n cleanAllKey(address: string): void {\n localStorage.removeItem(`${this.keyPrefix}${address}`);\n localStorage.removeItem(`${this.keyPrefix}address`);\n }\n cleanKey(address: string, key: string): void {\n const data = this.getItem(address);\n delete data[key];\n localStorage.setItem(`${this.keyPrefix}${address}`, JSON.stringify(data));\n }\n\n private setItem(address: string, value: Record<string, any>) {\n const key = `${this.keyPrefix}${address}`;\n let oldValue: any = localStorage.getItem(key);\n\n if (oldValue) {\n oldValue = JSON.parse(oldValue);\n } else {\n oldValue = {};\n }\n\n localStorage.setItem(\n key,\n JSON.stringify({\n ...oldValue,\n ...value,\n })\n );\n }\n\n private getItem(address: string, name?: string) {\n const key = `${this.keyPrefix}${address}`;\n let value: any = localStorage.getItem(key);\n\n if (value) {\n value = JSON.parse(value);\n } else {\n value = {};\n }\n\n if (typeof name === \"undefined\") {\n return value;\n }\n\n return value[name];\n }\n}\n\n// for readux manage state\nexport class MockKeyStore implements OrderlyKeyStore {\n constructor(private readonly secretKey: string) {}\n\n generateKey() {\n return new BaseOrderlyKeyPair(this.secretKey);\n }\n\n getOrderlyKey() {\n return new BaseOrderlyKeyPair(this.secretKey);\n }\n\n getAccountId() {\n return \"\";\n }\n\n setAccountId(accountId: string) {}\n\n getAddress() {\n return \"\";\n }\n\n setAddress(address: string) {}\n\n removeAddress() {}\n\n setKey(orderlyKey: string, secretKey: OrderlyKeyPair): void {}\n\n cleanAllKey(): void {}\n cleanKey(key: string): void {}\n}\n","import { encode as bs58encode, decode as bs58Decode } from \"bs58\";\nimport * as ed from \"@noble/ed25519\";\n\nexport interface OrderlyKeyPair {\n getPublicKey(): Promise<string>;\n secretKey: string;\n sign: (data: Uint8Array) => Promise<Uint8Array>;\n}\n\nexport class BaseOrderlyKeyPair implements OrderlyKeyPair {\n secretKey: string;\n private privateKey: string;\n\n static generateKey(): OrderlyKeyPair {\n let privKey, secretKey;\n do {\n privKey = ed.utils.randomPrivateKey();\n secretKey = bs58encode(privKey);\n } while (secretKey.length !== 44);\n\n // const secretKey = bs58encode(privKey);\n\n return new BaseOrderlyKeyPair(secretKey);\n }\n\n constructor(secretKey: string) {\n this.secretKey = secretKey;\n const bytes = bs58Decode(secretKey);\n this.privateKey = Buffer.from(bytes).toString(\"hex\");\n }\n\n async sign(message: Uint8Array): Promise<Uint8Array> {\n return await ed.signAsync(message, this.privateKey);\n }\n\n async getPublicKey(): Promise<string> {\n const pubKey = await ed.getPublicKeyAsync(this.privateKey);\n\n const publicKey = `ed25519:${bs58encode(pubKey)}`;\n return publicKey;\n }\n\n toString() {\n return this.privateKey;\n }\n}\n","/*! noble-ed25519 - MIT License (c) 2019 Paul Miller (paulmillr.com) */\n/**\n * 4KB JS implementation of ed25519 EdDSA signatures.\n * Compliant with RFC8032, FIPS 186-5 & ZIP215.\n * @module\n * @example\n * ```js\nimport * as ed from '@noble/ed25519';\n(async () => {\n const privKey = ed.utils.randomPrivateKey();\n const message = Uint8Array.from([0xab, 0xbc, 0xcd, 0xde]);\n const pubKey = await ed.getPublicKeyAsync(privKey); // Sync methods are also present\n const signature = await ed.signAsync(message, privKey);\n const isValid = await ed.verifyAsync(signature, message, pubKey);\n})();\n```\n */\n/**\n * Curve params. ed25519 is twisted edwards curve. Equation is −x² + y² = -a + dx²y².\n * * P = `2n**255n - 19n` // field over which calculations are done\n * * N = `2n**252n + 27742317777372353535851937790883648493n` // group order, amount of curve points\n * * h = 8 // cofactor\n * * a = `Fp.create(BigInt(-1))` // equation param\n * * d = -121665/121666 a.k.a. `Fp.neg(121665 * Fp.inv(121666))` // equation param\n * * Gx, Gy are coordinates of Generator / base point\n */\nconst ed25519_CURVE = {\n p: 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedn,\n n: 0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3edn,\n h: 8n,\n a: 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffecn,\n d: 0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3n,\n Gx: 0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51an,\n Gy: 0x6666666666666666666666666666666666666666666666666666666666666658n,\n};\nconst { p: P, n: N, Gx, Gy, a: _a, d: _d } = ed25519_CURVE;\nconst h = 8n; // cofactor\nconst L = 32; // field / group byte length\nconst L2 = 64;\n// Helpers and Precomputes sections are reused between libraries\n// ## Helpers\n// ----------\n// error helper, messes-up stack trace\nconst err = (m = '') => {\n throw new Error(m);\n};\nconst isBig = (n) => typeof n === 'bigint'; // is big integer\nconst isStr = (s) => typeof s === 'string'; // is string\nconst isBytes = (a) => a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n/** assert is Uint8Array (of specific length) */\nconst abytes = (a, l) => !isBytes(a) || (typeof l === 'number' && l > 0 && a.length !== l)\n ? err('Uint8Array expected')\n : a;\n/** create Uint8Array */\nconst u8n = (len) => new Uint8Array(len);\nconst u8fr = (buf) => Uint8Array.from(buf);\nconst padh = (n, pad) => n.toString(16).padStart(pad, '0');\nconst bytesToHex = (b) => Array.from(abytes(b))\n .map((e) => padh(e, 2))\n .join('');\nconst C = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 }; // ASCII characters\nconst _ch = (ch) => {\n if (ch >= C._0 && ch <= C._9)\n return ch - C._0; // '2' => 50-48\n if (ch >= C.A && ch <= C.F)\n return ch - (C.A - 10); // 'B' => 66-(65-10)\n if (ch >= C.a && ch <= C.f)\n return ch - (C.a - 10); // 'b' => 98-(97-10)\n return;\n};\nconst hexToBytes = (hex) => {\n const e = 'hex invalid';\n if (!isStr(hex))\n return err(e);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2)\n return err(e);\n const array = u8n(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n // treat each char as ASCII\n const n1 = _ch(hex.charCodeAt(hi)); // parse first char, multiply it by 16\n const n2 = _ch(hex.charCodeAt(hi + 1)); // parse second char\n if (n1 === undefined || n2 === undefined)\n return err(e);\n array[ai] = n1 * 16 + n2; // example: 'A9' => 10*16 + 9\n }\n return array;\n};\n/** normalize hex or ui8a to ui8a */\nconst toU8 = (a, len) => abytes(isStr(a) ? hexToBytes(a) : u8fr(abytes(a)), len);\nconst cr = () => globalThis?.crypto; // WebCrypto is available in all modern environments\nconst subtle = () => cr()?.subtle ?? err('crypto.subtle must be defined');\n// prettier-ignore\nconst concatBytes = (...arrs) => {\n const r = u8n(arrs.reduce((sum, a) => sum + abytes(a).length, 0)); // create u8a of summed length\n let pad = 0; // walk through each array,\n arrs.forEach(a => { r.set(a, pad); pad += a.length; }); // ensure they have proper type\n return r;\n};\n/** WebCrypto OS-level CSPRNG (random number generator). Will throw when not available. */\nconst randomBytes = (len = L) => {\n const c = cr();\n return c.getRandomValues(u8n(len));\n};\nconst big = BigInt;\nconst arange = (n, min, max, msg = 'bad number: out of range') => isBig(n) && min <= n && n < max ? n : err(msg);\n/** modular division */\nconst M = (a, b = P) => {\n const r = a % b;\n return r >= 0n ? r : b + r;\n};\nconst modN = (a) => M(a, N);\n/** Modular inversion using eucledian GCD (non-CT). No negative exponent for now. */\n// prettier-ignore\nconst invert = (num, md) => {\n if (num === 0n || md <= 0n)\n err('no inverse n=' + num + ' mod=' + md);\n let a = M(num, md), b = md, x = 0n, y = 1n, u = 1n, v = 0n;\n while (a !== 0n) {\n const q = b / a, r = b % a;\n const m = x - u * q, n = y - v * q;\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n return b === 1n ? M(x, md) : err('no inverse'); // b is gcd at this point\n};\nconst callHash = (name) => {\n // @ts-ignore\n const fn = etc[name];\n if (typeof fn !== 'function')\n err('hashes.' + name + ' not set');\n return fn;\n};\nconst apoint = (p) => (p instanceof Point ? p : err('Point expected'));\n// ## End of Helpers\n// -----------------\nconst B256 = 2n ** 256n;\n/** Point in XYZT extended coordinates. */\nclass Point {\n static BASE;\n static ZERO;\n ex;\n ey;\n ez;\n et;\n constructor(ex, ey, ez, et) {\n const max = B256;\n this.ex = arange(ex, 0n, max);\n this.ey = arange(ey, 0n, max);\n this.ez = arange(ez, 1n, max);\n this.et = arange(et, 0n, max);\n Object.freeze(this);\n }\n static fromAffine(p) {\n return new Point(p.x, p.y, 1n, M(p.x * p.y));\n }\n /** RFC8032 5.1.3: Uint8Array to Point. */\n static fromBytes(hex, zip215 = false) {\n const d = _d;\n // Copy array to not mess it up.\n const normed = u8fr(abytes(hex, L));\n // adjust first LE byte = last BE byte\n const lastByte = hex[31];\n normed[31] = lastByte & ~0x80;\n const y = bytesToNumLE(normed);\n // zip215=true: 0 <= y < 2^256\n // zip215=false, RFC8032: 0 <= y < 2^255-19\n const max = zip215 ? B256 : P;\n arange(y, 0n, max);\n const y2 = M(y * y); // y²\n const u = M(y2 - 1n); // u=y²-1\n const v = M(d * y2 + 1n); // v=dy²+1\n let { isValid, value: x } = uvRatio(u, v); // (uv³)(uv⁷)^(p-5)/8; square root\n if (!isValid)\n err('bad point: y not sqrt'); // not square root: bad point\n const isXOdd = (x & 1n) === 1n; // adjust sign of x coordinate\n const isLastByteOdd = (lastByte & 0x80) !== 0; // x_0, last bit\n if (!zip215 && x === 0n && isLastByteOdd)\n err('bad point: x==0, isLastByteOdd'); // x=0, x_0=1\n if (isLastByteOdd !== isXOdd)\n x = M(-x);\n return new Point(x, y, 1n, M(x * y)); // Z=1, T=xy\n }\n /** Checks if the point is valid and on-curve. */\n assertValidity() {\n const a = _a;\n const d = _d;\n const p = this;\n if (p.is0())\n throw new Error('bad point: ZERO'); // TODO: optimize, with vars below?\n // Equation in affine coordinates: ax² + y² = 1 + dx²y²\n // Equation in projective coordinates (X/Z, Y/Z, Z): (aX² + Y²)Z² = Z⁴ + dX²Y²\n const { ex: X, ey: Y, ez: Z, et: T } = p;\n const X2 = M(X * X); // X²\n const Y2 = M(Y * Y); // Y²\n const Z2 = M(Z * Z); // Z²\n const Z4 = M(Z2 * Z2); // Z⁴\n const aX2 = M(X2 * a); // aX²\n const left = M(Z2 * M(aX2 + Y2)); // (aX² + Y²)Z²\n const right = M(Z4 + M(d * M(X2 * Y2))); // Z⁴ + dX²Y²\n if (left !== right)\n throw new Error('bad point: equation left != right (1)');\n // In Extended coordinates we also have T, which is x*y=T/Z: check X*Y == Z*T\n const XY = M(X * Y);\n const ZT = M(Z * T);\n if (XY !== ZT)\n throw new Error('bad point: equation left != right (2)');\n return this;\n }\n /** Equality check: compare points P&Q. */\n equals(other) {\n const { ex: X1, ey: Y1, ez: Z1 } = this;\n const { ex: X2, ey: Y2, ez: Z2 } = apoint(other); // checks class equality\n const X1Z2 = M(X1 * Z2);\n const X2Z1 = M(X2 * Z1);\n const Y1Z2 = M(Y1 * Z2);\n const Y2Z1 = M(Y2 * Z1);\n return X1Z2 === X2Z1 && Y1Z2 === Y2Z1;\n }\n is0() {\n return this.equals(I);\n }\n /** Flip point over y coordinate. */\n negate() {\n return new Point(M(-this.ex), this.ey, this.ez, M(-this.et));\n }\n /** Point doubling. Complete formula. Cost: `4M + 4S + 1*a + 6add + 1*2`. */\n double() {\n const { ex: X1, ey: Y1, ez: Z1 } = this;\n const a = _a;\n // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#doubling-dbl-2008-hwcd\n const A = M(X1 * X1);\n const B = M(Y1 * Y1);\n const C = M(2n * M(Z1 * Z1));\n const D = M(a * A);\n const x1y1 = X1 + Y1;\n const E = M(M(x1y1 * x1y1) - A - B);\n const G = D + B;\n const F = G - C;\n const H = D - B;\n const X3 = M(E * F);\n const Y3 = M(G * H);\n const T3 = M(E * H);\n const Z3 = M(F * G);\n return new Point(X3, Y3, Z3, T3);\n }\n /** Point addition. Complete formula. Cost: `8M + 1*k + 8add + 1*2`. */\n add(other) {\n const { ex: X1, ey: Y1, ez: Z1, et: T1 } = this;\n const { ex: X2, ey: Y2, ez: Z2, et: T2 } = apoint(other); // doesn't check if other on-curve\n const a = _a;\n const d = _d;\n // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html#addition-add-2008-hwcd-3\n const A = M(X1 * X2);\n const B = M(Y1 * Y2);\n const C = M(T1 * d * T2);\n const D = M(Z1 * Z2);\n const E = M((X1 + Y1) * (X2 + Y2) - A - B);\n const F = M(D - C);\n const G = M(D + C);\n const H = M(B - a * A);\n const X3 = M(E * F);\n const Y3 = M(G * H);\n const T3 = M(E * H);\n const Z3 = M(F * G);\n return new Point(X3, Y3, Z3, T3);\n }\n /**\n * Point-by-scalar multiplication. Scalar must be in range 1 <= n < CURVE.n.\n * Uses {@link wNAF} for base point.\n * Uses fake point to mitigate side-channel leakage.\n * @param n scalar by which point is multiplied\n * @param safe safe mode guards against timing attacks; unsafe mode is faster\n */\n multiply(n, safe = true) {\n if (!safe && (n === 0n || this.is0()))\n return I;\n arange(n, 1n, N);\n if (n === 1n)\n return this;\n if (this.equals(G))\n return wNAF(n).p;\n // init result point & fake point\n let p = I;\n let f = G;\n for (let d = this; n > 0n; d = d.double(), n >>= 1n) {\n // if bit is present, add to point\n // if not present, add to fake, for timing safety\n if (n & 1n)\n p = p.add(d);\n else if (safe)\n f = f.add(d);\n }\n return p;\n }\n /** Convert point to 2d xy affine point. (X, Y, Z) ∋ (x=X/Z, y=Y/Z) */\n toAffine() {\n const { ex: x, ey: y, ez: z } = this;\n // fast-paths for ZERO point OR Z=1\n if (this.equals(I))\n return { x: 0n, y: 1n };\n const iz = invert(z, P);\n // (Z * Z^-1) must be 1, otherwise bad math\n if (M(z * iz) !== 1n)\n err('invalid inverse');\n // x = X*Z^-1; y = Y*Z^-1\n return { x: M(x * iz), y: M(y * iz) };\n }\n toBytes() {\n const { x, y } = this.assertValidity().toAffine();\n const b = numTo32bLE(y);\n // store sign in first LE byte\n b[31] |= x & 1n ? 0x80 : 0;\n return b;\n }\n toHex() {\n return bytesToHex(this.toBytes());\n } // encode to hex string\n clearCofactor() {\n return this.multiply(big(h), false);\n }\n isSmallOrder() {\n return this.clearCofactor().is0();\n }\n isTorsionFree() {\n // multiply by big number CURVE.n\n let p = this.multiply(N / 2n, false).double(); // ensures the point is not \"bad\".\n if (N % 2n)\n p = p.add(this); // P^(N+1) // P*N == (P*(N/2))*2+P\n return p.is0();\n }\n static fromHex(hex, zip215) {\n return Point.fromBytes(toU8(hex), zip215);\n }\n get x() {\n return this.toAffine().x;\n }\n get y() {\n return this.toAffine().y;\n }\n toRawBytes() {\n return this.toBytes();\n }\n}\n/** Generator / base point */\nconst G = new Point(Gx, Gy, 1n, M(Gx * Gy));\n/** Identity / zero point */\nconst I = new Point(0n, 1n, 1n, 0n);\n// Static aliases\nPoint.BASE = G;\nPoint.ZERO = I;\nconst numTo32bLE = (num) => hexToBytes(padh(arange(num, 0n, B256), L2)).reverse();\nconst bytesToNumLE = (b) => big('0x' + bytesToHex(u8fr(abytes(b)).reverse()));\nconst pow2 = (x, power) => {\n // pow2(x, 4) == x^(2^4)\n let r = x;\n while (power-- > 0n) {\n r *= r;\n r %= P;\n }\n return r;\n};\n// prettier-ignore\nconst pow_2_252_3 = (x) => {\n const x2 = (x * x) % P; // x^2, bits 1\n const b2 = (x2 * x) % P; // x^3, bits 11\n const b4 = (pow2(b2, 2n) * b2) % P; // x^(2^4-1), bits 1111\n const b5 = (pow2(b4, 1n) * x) % P; // x^(2^5-1), bits 11111\n const b10 = (pow2(b5, 5n) * b5) % P; // x^(2^10)\n const b20 = (pow2(b10, 10n) * b10) % P; // x^(2^20)\n const b40 = (pow2(b20, 20n) * b20) % P; // x^(2^40)\n const b80 = (pow2(b40, 40n) * b40) % P; // x^(2^80)\n const b160 = (pow2(b80, 80n) * b80) % P; // x^(2^160)\n const b240 = (pow2(b160, 80n) * b80) % P; // x^(2^240)\n const b250 = (pow2(b240, 10n) * b10) % P; // x^(2^250)\n const pow_p_5_8 = (pow2(b250, 2n) * x) % P; // < To pow to (p+3)/8, multiply it by x.\n return { pow_p_5_8, b2 };\n};\nconst RM1 = 0x2b8324804fc1df0b2b4d00993dfbd7a72f431806ad2fe478c4ee1b274a0ea0b0n; // √-1\n// for sqrt comp\n// prettier-ignore\nconst uvRatio = (u, v) => {\n const v3 = M(v * v * v); // v³\n const v7 = M(v3 * v3 * v); // v⁷\n const pow = pow_2_252_3(u * v7).pow_p_5_8; // (uv⁷)^(p-5)/8\n let x = M(u * v3 * pow); // (uv³)(uv⁷)^(p-5)/8\n const vx2 = M(v * x * x); // vx²\n const root1 = x; // First root candidate\n const root2 = M(x * RM1); // Second root candidate; RM1 is √-1\n const useRoot1 = vx2 === u; // If vx² = u (mod p), x is a square root\n const useRoot2 = vx2 === M(-u); // If vx² = -u, set x <-- x * 2^((p-1)/4)\n const noRoot = vx2 === M(-u * RM1); // There is no valid root, vx² = -u√-1\n if (useRoot1)\n x = root1;\n if (useRoot2 || noRoot)\n x = root2; // We return root2 anyway, for const-time\n if ((M(x) & 1n) === 1n)\n x = M(-x); // edIsNegative\n return { isValid: useRoot1 || useRoot2, value: x };\n};\n// N == L, just weird naming\nconst modL_LE = (hash) => modN(bytesToNumLE(hash)); // modulo L; but little-endian\nconst sha512a = (...m) => etc.sha512Async(...m); // Async SHA512\nconst sha512s = (...m) => callHash('sha512Sync')(...m);\n// RFC8032 5.1.5\nconst hash2extK = (hashed) => {\n // slice creates a copy, unlike subarray\n const head = hashed.slice(0, L);\n head[0] &= 248; // Clamp bits: 0b1111_1000\n head[31] &= 127; // 0b0111_1111\n head[31] |= 64; // 0b0100_0000\n const prefix = hashed.slice(L, L2); // private key \"prefix\"\n const scalar = modL_LE(head); // modular division over curve order\n const point = G.multiply(scalar); // public key point\n const pointBytes = point.toBytes(); // point serialized to Uint8Array\n return { head, prefix, scalar, point, pointBytes };\n};\n// RFC8032 5.1.5; getPublicKey async, sync. Hash priv key and extract point.\nconst getExtendedPublicKeyAsync = (priv) => sha512a(toU8(priv, L)).then(hash2extK);\nconst getExtendedPublicKey = (priv) => hash2extK(sha512s(toU8(priv, L)));\n/** Creates 32-byte ed25519 public key from 32-byte private key. Async. */\nconst getPublicKeyAsync = (priv) => getExtendedPublicKeyAsync(priv).then((p) => p.pointBytes);\n/** Creates 32-byte ed25519 public key from 32-byte private key. To use, set `etc.sha512Sync` first. */\nconst getPublicKey = (priv) => getExtendedPublicKey(priv).pointBytes;\nconst hashFinishA = (res) => sha512a(res.hashable).then(res.finish);\nconst hashFinishS = (res) => res.finish(sha512s(res.hashable));\nconst _sign = (e, rBytes, msg) => {\n // sign() shared code\n const { pointBytes: P, scalar: s } = e;\n const r = modL_LE(rBytes); // r was created outside, reduce it modulo L\n const R = G.multiply(r).toBytes(); // R = [r]B\n const hashable = concatBytes(R, P, msg); // dom2(F, C) || R || A || PH(M)\n const finish = (hashed) => {\n // k = SHA512(dom2(F, C) || R || A || PH(M))\n const S = modN(r + modL_LE(hashed) * s); // S = (r + k * s) mod L; 0 <= s < l\n return abytes(concatBytes(R, numTo32bLE(S)), L2); // 64-byte sig: 32b R.x + 32b LE(S)\n };\n return { hashable, finish };\n};\n/**\n * Signs message (NOT message hash) using private key. Async.\n * Follows RFC8032 5.1.6.\n */\nconst signAsync = async (msg, privKey) => {\n const m = toU8(msg);\n const e = await getExtendedPublicKeyAsync(privKey);\n const rBytes = await sha512a(e.prefix, m); // r = SHA512(dom2(F, C) || prefix || PH(M))\n return hashFinishA(_sign(e, rBytes, m)); // gen R, k, S, then 64-byte signature\n};\n/**\n * Signs message (NOT message hash) using private key. To use, set `hashes.sha512` first.\n * Follows RFC8032 5.1.6.\n */\nconst sign = (msg, privKey) => {\n const m = toU8(msg);\n const e = getExtendedPublicKey(privKey);\n const rBytes = sha512s(e.prefix, m); // r = SHA512(dom2(F, C) || prefix || PH(M))\n return hashFinishS(_sign(e, rBytes, m)); // gen R, k, S, then 64-byte signature\n};\nconst veriOpts = { zip215: true };\nconst _verify = (sig, msg, pub, opts = veriOpts) => {\n sig = toU8(sig, L2); // Signature hex str/Bytes, must be 64 bytes\n msg = toU8(msg); // Message hex str/Bytes\n pub = toU8(pub, L);\n const { zip215 } = opts; // switch between zip215 and rfc8032 verif\n let A;\n let R;\n let s;\n let SB;\n let hashable = Uint8Array.of();\n try {\n A = Point.fromHex(pub, zip215); // public key A decoded\n R = Point.fromHex(sig.slice(0, L), zip215); // 0 <= R < 2^256: ZIP215 R can be >= P\n s = bytesToNumLE(sig.slice(L, L2)); // Decode second half as an integer S\n SB = G.multiply(s, false); // in the range 0 <= s < L\n hashable = concatBytes(R.toBytes(), A.toBytes(), msg); // dom2(F, C) || R || A || PH(M)\n }\n catch (error) { }\n const finish = (hashed) => {\n // k = SHA512(dom2(F, C) || R || A || PH(M))\n if (SB == null)\n return false; // false if try-catch catched an error\n if (!zip215 && A.isSmallOrder())\n return false; // false for SBS: Strongly Binding Signature\n const k = modL_LE(hashed); // decode in little-endian, modulo L\n const RkA = R.add(A.multiply(k, false)); // [8]R + [8][k]A'\n return RkA.add(SB.negate()).clearCofactor().is0(); // [8][S]B = [8]R + [8][k]A'\n };\n return { hashable, finish };\n};\n/** Verifies signature on message and public key. Async. Follows RFC8032 5.1.7. */\nconst verifyAsync = async (s, m, p, opts = veriOpts) => hashFinishA(_verify(s, m, p, opts));\n/** Verifies signature on message and public key. To use, set `hashes.sha512` first. Follows RFC8032 5.1.7. */\nconst verify = (s, m, p, opts = veriOpts) => hashFinishS(_verify(s, m, p, opts));\n/** Math, hex, byte helpers. Not in `utils` because utils share API with noble-curves. */\nconst etc = {\n sha512Async: async (...messages) => {\n const s = subtle();\n const m = concatBytes(...messages);\n return u8n(await s.digest('SHA-512', m.buffer));\n },\n sha512Sync: undefined,\n bytesToHex: bytesToHex,\n hexToBytes: hexToBytes,\n concatBytes: concatBytes,\n mod: M,\n invert: invert,\n randomBytes: randomBytes,\n};\n/** ed25519-specific key utilities. */\nconst utils = {\n getExtendedPublicKeyAsync: getExtendedPublicKeyAsync,\n getExtendedPublicKey: getExtendedPublicKey,\n randomPrivateKey: () => randomBytes(L),\n precompute: (w = 8, p = G) => {\n p.multiply(3n);\n w;\n return p;\n }, // no-op\n};\n// ## Precomputes\n// --------------\nconst W = 8; // W is window size\nconst scalarBits = 256;\nconst pwindows = Math.ceil(scalarBits / W) + 1; // 33 for W=8\nconst pwindowSize = 2 ** (W - 1); // 128 for W=8\nconst precompute = () => {\n const points = [];\n let p = G;\n let b = p;\n for (let w = 0; w < pwindows; w++) {\n b = p;\n points.push(b);\n for (let i = 1; i < pwindowSize; i++) {\n b = b.add(p);\n points.push(b);\n } // i=1, bc we skip 0\n p = b.double();\n }\n return points;\n};\nlet Gpows = undefined; // precomputes for base point G\n// const-time negate\nconst ctneg = (cnd, p) => {\n const n = p.negate();\n return cnd ? n : p;\n};\n/**\n * Precomputes give 12x faster getPublicKey(), 10x sign(), 2x verify() by\n * caching multiples of G (base point). Cache is stored in 32MB of RAM.\n * Any time `G.multiply` is done, precomputes are used.\n * Not used for getSharedSecret, which instead multiplies random pubkey `P.multiply`.\n *\n * w-ary non-adjacent form (wNAF) precomputation method is 10% slower than windowed method,\n * but takes 2x less RAM. RAM reduction is possible by utilizing `.subtract`.\n *\n * !! Precomputes can be disabled by commenting-out call of the wNAF() inside Point#multiply().\n */\nconst wNAF = (n) => {\n const comp = Gpows || (Gpows = precompute());\n let p = I;\n let f = G; // f must be G, or could become I in the end\n const pow_2_w = 2 ** W; // 256 for W=8\n const maxNum = pow_2_w; // 256 for W=8\n const mask = big(pow_2_w - 1); // 255 for W=8 == mask 0b11111111\n const shiftBy = big(W); // 8 for W=8\n for (let w = 0; w < pwindows; w++) {\n let wbits = Number(n & mask); // extract W bits.\n n >>= shiftBy; // shift number by W bits.\n if (wbits > pwindowSize) {\n wbits -= maxNum;\n n += 1n;\n } // split if bits > max: +224 => 256-32\n const off = w * pwindowSize;\n const offF = off; // offsets, evaluate both\n const offP = off + Math.abs(wbits) - 1;\n const isEven = w % 2 !== 0; // conditions, evaluate both\n const isNeg = wbits < 0;\n if (wbits === 0) {\n // off == I: can't add it. Adding random offF instead.\n f = f.add(ctneg(isEven, comp[offF])); // bits are 0: add garbage to fake point\n }\n else {\n p = p.add(ctneg(isNeg, comp[offP])); // bits are 1: add to result point\n }\n }\n return { p, f }; // return both real and fake points for JIT\n};\n// !! Remove the export to easily use in REPL / browser console\nexport { ed25519_CURVE as CURVE, etc, Point as ExtendedPoint, getPublicKey, getPublicKeyAsync, Point, sign, signAsync, utils, verify, verifyAsync, };\n","import { OrderlyKeyStore } from \"./keyStore\";\nimport { base64url, getTimestamp } from \"./utils\";\n\nimport { Buffer } from \"buffer\";\n// window.Buffer = window.Buffer || Buffer;\n\nexport type MessageFactor = {\n url: string;\n\n method: \"GET\" | \"POST\" | \"PUT\" | \"DELETE\";\n\n data?: any;\n};\n\nexport type SignedMessagePayload = {\n \"orderly-key\": string;\n \"orderly-timestamp\": string;\n \"orderly-signature\": string;\n \"orderly-account-id\"?: string;\n};\n\n/**\n * Singer interface\n * @example\n * ```ts\n * const signer = new BaseSigner(keyStore);\n * const payload = await signer.sign({\n * url: \"https://api.orderly.io/get_account?address=0x1234567890&brokerId=orderly\",\n * method: \"GET\",\n * data: {\n * address: \"0x1234567890\",\n * brokerId: \"orderly\",\n * },\n * });\n * ```\n */\nexport interface Signer {\n sign: (\n data: MessageFactor,\n timestamp?: number\n ) => Promise<SignedMessagePayload>;\n signText: (text: string) => Promise<{ signature: string; publicKey: string }>;\n}\n\nexport class BaseSigner implements Signer {\n constructor(private readonly keyStore: OrderlyKeyStore) {}\n\n async sign(\n message: MessageFactor,\n timestamp = getTimestamp()\n ): Promise<SignedMessagePayload> {\n const _timestamp = timestamp.toString();\n\n let msgStr = [_timestamp, message.method.toUpperCase(), message.url].join(\n \"\"\n );\n\n if (message.data && Object.keys(message.data).length) {\n msgStr += JSON.stringify(message.data);\n }\n\n const { signature, publicKey } = await this.signText(msgStr);\n\n return {\n \"orderly-key\": publicKey,\n \"orderly-timestamp\": _timestamp,\n \"orderly-signature\": signature,\n };\n }\n\n async signText(\n text: string\n ): Promise<{ signature: string; publicKey: string }> {\n const orderlyKeyPair = this.keyStore.getOrderlyKey();\n\n if (!orderlyKeyPair) {\n throw new Error(\"orderlyKeyPair is not defined\");\n }\n\n const u8 = Buffer.from(text);\n\n const signature = await orderlyKeyPair.sign(u8 as unknown as Uint8Array);\n\n const signHex = Buffer.from(signature).toString(\"base64\");\n\n const b64 = base64url(signHex);\n\n return {\n signature: b64,\n publicKey: await orderlyKeyPair.getPublicKey(),\n };\n }\n}\n","import {\n keccak256,\n AbiCoder,\n solidityPackedKeccak256,\n parseUnits,\n formatUnits,\n Numeric,\n} from \"ethers\";\nimport type { BigNumberish } from \"ethers/src.ts/utils\";\n\nexport { parseUnits } from \"ethers\";\n\nexport type SignatureDomain = {\n name: string;\n version: string;\n chainId: number;\n verifyingContract: string;\n};\n\nexport const base64url = function (aStr: string): string {\n return aStr.replace(/\\+/g, \"-\").replace(/\\//g, \"_\");\n};\n\nexport function parseBrokerHash(brokerId: string) {\n return calculateStringHash(brokerId);\n}\n\nexport function parseAccountId(userAddress: string, brokerId: string) {\n const abicoder = AbiCoder.defaultAbiCoder();\n return keccak256(\n abicoder.encode(\n [\"address\", \"bytes32\"],\n [userAddress, parseBrokerHash(brokerId)]\n )\n );\n}\n\nexport function parseTokenHash(tokenSymbol: string) {\n return calculateStringHash(tokenSymbol);\n}\n\nexport function calculateStringHash(input: string) {\n return solidityPackedKeccak256([\"string\"], [input]);\n}\n\n// export function parseUnits(amount: string) {\n// return parseUnits(amount, 6).toString();\n// }\n\nexport function formatByUnits(\n amount: BigNumberish,\n unit: number | \"ether\" | \"gwei\" = \"ether\"\n) {\n return formatUnits(amount, unit);\n}\n\nexport function isHex(value: string): boolean {\n const hexRegex = /^[a-f0-9]+$/iu;\n return hexRegex.test(value);\n}\n\nexport function isHexString(value: string): boolean {\n return typeof value === \"string\" && value.startsWith(\"0x\") && isHex(value);\n}\n\nexport const getGlobalObject = () => {\n if (typeof globalThis !== \"undefined\") {\n return globalThis;\n }\n if (typeof self !== \"undefined\") {\n return self;\n }\n if (typeof window !== \"undefined\") {\n return window;\n }\n // @ts-ignore\n if (typeof global !== \"undefined\") {\n // @ts-ignore\n return global;\n }\n throw new Error(\"cannot find the global object\");\n};\n\n/// get timestamp\nexport const getTimestamp = (): number => {\n if (typeof window !== \"undefined\") {\n // @ts-ignore\n const timeOffset = getGlobalObject()?.__ORDERLY_timestamp_offset;\n if (typeof timeOffset === \"number\") {\n return Date.now() + (timeOffset || 0);\n }\n }\n return Date.now();\n};\n","import { DEFAUL_ORDERLY_KEY_SCOPE, definedTypes } from \"@kodiak-finance/orderly-types\";\nimport { LocalStorageStore, MockKeyStore } from \"./keyStore\";\nimport { BaseSigner } from \"./signer\";\nimport { getTimestamp, SignatureDomain } from \"./utils\";\n\nexport const getMockSigner = (secretKey?: string) => {\n const mockKeyStore = new MockKeyStore(\n secretKey || \"AFmQSju4FhDwG93cMdKogcnKx7SWmViDtDv5PVzfvRDF\",\n // \"c24fe227663f5a73493cad3f4049514f70623177272d57fffa8cb895fa1f92de\"\n );\n\n return new BaseSigner(mockKeyStore);\n};\n\nexport const getDefaultSigner = () => {\n if (typeof window === \"undefined\") {\n throw new Error(\"the default signer only supports browsers.\");\n }\n\n const localStorageStore = new LocalStorageStore(\"\");\n\n return new BaseSigner(localStorageStore);\n};\n\nexport function getVerifyingContract() {\n return \"0x8794E7260517B1766fc7b55cAfcd56e6bf08600e\";\n}\n\nexport function getDomain(chainId: number, onChainDomain?: boolean) {\n return {\n name: \"Orderly\",\n version: \"1\",\n chainId,\n verifyingContract: onChainDomain\n ? getVerifyingContract()\n : \"0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC\",\n };\n}\n\n/**\n * generate `registerAccount` data and to be signed message structure\n */\nexport function generateRegisterAccountMessage(inputs: {\n chainId: number;\n registrationNonce: number;\n brokerId: string;\n timestamp?: number;\n}) {\n const {\n chainId,\n registrationNonce,\n brokerId,\n timestamp = getTimestamp(),\n } = inputs;\n // const now = Date.now();\n const primaryType = \"Registration\";\n const message = {\n brokerId,\n chainId,\n timestamp,\n registrationNonce,\n };\n\n const typeDefinition = {\n EIP712Domain: definedTypes.EIP712Domain,\n [primaryType]: definedTypes[primaryType],\n };\n\n const toSignatureMessage = {\n domain: getDomain(chainId),\n message,\n primaryType,\n types: typeDefinition,\n };\n\n return [message, toSignatureMessage] as const;\n}\n\n/**\n * generate `addOrderlyKey` data and to be signed message structure\n */\nexport function generateAddOrderlyKeyMessage(inputs: {\n publicKey: string;\n chainId: number;\n brokerId: string;\n primaryType: keyof typeof definedTypes;\n expiration?: number;\n timestamp?: number;\n scope?: string;\n tag?: string;\n subAccountId?: string;\n}) {\n const {\n publicKey,\n chainId,\n primaryType,\n brokerId,\n expiration = 365,\n timestamp = getTimestamp(),\n scope,\n tag,\n subAccountId,\n } = inputs;\n // const now = Date.now();\n // message;\n const message = {\n brokerId,\n orderlyKey: publicKey,\n scope: scope || DEFAUL_ORDERLY_KEY_SCOPE,\n chainId,\n timestamp,\n expiration: timestamp + 1000 * 60 * 60 * 24 * expiration,\n ...(typeof tag !== \"undefined\" ? { tag } : {}),\n ...(typeof subAccountId !== \"undefined\" ? { subAccountId } : {}),\n };\n\n const typeDefinition = {\n EIP712Domain: definedTypes.EIP712Domain,\n [primaryType]: definedTypes[primaryType],\n };\n\n const toSignatureMessage = {\n domain: getDomain(chainId),\n message,\n primaryType,\n types: typeDefinition,\n };\n\n return [message, toSignatureMessage] as const;\n}\n\n/**\n * generate `settle` data and to be signed message structure\n */\nexport function generateSettleMessage(inputs: {\n chainId: number;\n brokerId: string;\n settlePnlNonce: string;\n domain: SignatureDomain;\n}) {\n const { chainId, settlePnlNonce, domain, brokerId } = inputs;\n const primaryType = \"SettlePnl\";\n const timestamp = getTimestamp();\n\n const typeDefinition = {\n EIP712Domain: definedTypes.EIP712Domain,\n [primaryType]: definedTypes[primaryType],\n };\n\n const message = {\n brokerId,\n chainId: chainId,\n timestamp: timestamp,\n settleNonce: settlePnlNonce,\n };\n\n const toSignatureMessage = {\n domain,\n message,\n primaryType,\n types: typeDefinition,\n };\n\n return [message, toSignatureMessage] as const;\n}\n\n/**\n * generate `dexRequest` data and to be signed message structure\n */\nexport function generateDexRequestMessage(inputs: {\n chainId: number;\n payloadType: number;\n nonce: string;\n receiver: string;\n amount: string;\n vaultId: string;\n token: string;\n dexBrokerId: string;\n domain: SignatureDomain;\n timestamp?: number;\n}) {\n const {\n chainId,\n payloadType,\n nonce,\n receiver,\n amount,\n vaultId,\n token,\n dexBrokerId,\n domain,\n timestamp = getTimestamp(),\n } = inputs;\n\n const primaryType = \"DexRequest\";\n\n const typeDefinition = {\n EIP712Domain: definedTypes.EIP712Domain,\n [primaryType]: definedTypes[primaryType],\n };\n\n const message = {\n payloadType,\n nonce,\n receiver,\n amount,\n vaultId,\n token,\n dexBrokerId,\n };\n\n const toSignatureMessage = {\n domain,\n message,\n primaryType,\n types: typeDefinition,\n };\n\n return [message, toSignatureMessage] as const;\n}\n","import {\n BSC_TESTNET_CHAINID,\n ABSTRACT_CHAIN_ID_MAP,\n MONAD_TESTNET_CHAINID,\n STORY_TESTNET_CHAINID,\n} from \"@kodiak-finance/orderly-types\";\nimport { ConfigStore } from \"./configStore/configStore\";\nimport {\n mainnetUSDCAddress,\n mainnetVaultAddress,\n mainnetVerifyAddress,\n nativeUSDCAddress,\n solanaDevVaultAddress,\n solanaMainnetUSDCAddress,\n solanaMainnetVaultAddress,\n solanaQaVaultAddress,\n solanaStagingVualtAddress,\n solanaUSDCAddress,\n stagingStoryTestnetVaultAddress,\n stagingUSDCAddressOnArbitrumTestnet,\n stagingVaultAddressOnArbitrumTestnet,\n stagingVerifyAddressOnArbitrumTestnet,\n stagingMonadTestnetVaultAddress,\n MonadTestnetUSDCAddress,\n qaMonadTestnetVaultAddress,\n stagingAbstractTestnetVaultAddress,\n AbstractTestnetUSDCAddress,\n abstractMainnetVaultAddress,\n AbstractQaVaultAddress,\n AbstractDevVaultAddress,\n AbstractMainnetUSDCAddress,\n bscMainnetVaultAddress,\n bscMainnetUSDCAddress,\n bscTestnetQaVaultAddress,\n bscTestnetUSDCAddress,\n bscTestnetDevVaultAddress,\n bscTestnetStagingVaultAddress,\n qaArbitrumTestnetVaultAddress,\n} from \"./constants\";\nimport mainnetUSDCAbi from \"./wallet/abis/mainnetUSDCAbi.json\";\nimport mainnetVaultAbi from \"./wallet/abis/mainnetVaultAbi.json\";\nimport stagingUSDCAbiOnArbitrumTestnet from \"./wallet/abis/stagingUSDCAbi.json\";\nimport stagingVaultAbiOnArbitrumTestnet from \"./wallet/abis/stagingVaultAbi.json\";\n\n/**\n * Orderly contracts information\n */\nexport type OrderlyContracts = {\n usdcAddress: string;\n usdcAbi: any;\n erc20Abi: any;\n vaultAddress: string;\n vaultAbi: any;\n verifyContractAddress: string;\n solanaUSDCAddress: string;\n solanaVaultAddress: string;\n // only for testnet, mainnet vault on evm chain is all same address\n storyTestnetVaultAddress?: string;\n monadTestnetVaultAddress?: string;\n monadTestnetUSDCAddress?: string;\n abstractVaultAddress?: string;\n abstractUSDCAddress?: string;\n bscVaultAddress?: string;\n bscUSDCAddress?: string;\n};\n\nexport interface IContract {\n getContractInfoByEnv(): OrderlyContracts;\n}\n\n/** @hidden */\nexport class BaseContract implements IContract {\n constructor(private readonly configStore: ConfigStore) {}\n\n getContractInfoByEnv() {\n const networkId = this.configStore.get(\"networkId\");\n const env = this.configStore.get(\"env\");\n let verifyContractAddress = stagingVerifyAddressOnArbitrumTestnet;\n\n if (networkId === \"mainnet\") {\n return {\n usdcAddress: mainnetUSDCAddress,\n usdcAbi: mainnetUSDCAbi,\n vaultAddress: mainnetVaultAddress,\n vaultAbi: mainnetVaultAbi,\n verifyContractAddress: mainnetVerifyAddress,\n erc20Abi: mainnetUSDCAbi,\n solanaUSDCAddress: solanaMainnetUSDCAddress,\n solanaVaultAddress: solanaMainnetVaultAddress,\n abstractVaultAddress: abstractMainnetVaultAddress,\n abstractUSDCAddress: AbstractMainnetUSDCAddress,\n bscVaultAddress: bscMainnetVaultAddress,\n bscUSDCAddress: bscMainnetUSDCAddress,\n };\n }\n\n let solanaVaultAddress = solanaStagingVualtAddress;\n let storyTestnetVaultAddress = stagingStoryTestnetVaultAddress;\n let monadTestnetVaultAddress = stagingMonadTestnetVaultAddress;\n const monadTestnetUSDCAddress = MonadTestnetUSDCAddress;\n let abstractVaultAddress = stagingAbstractTestnetVaultAddress;\n const abstractUSDCAddress = AbstractTestnetUSDCAddress;\n let bscVaultAddress = bscTestnetStagingVaultAddress;\n let bscUSDCAddress = bscTestnetUSDCAddress;\n let vaultAddress = stagingVaultAddressOnArbitrumTestnet;\n if (env === \"qa\") {\n solanaVaultAddress = solanaQaVaultAddress;\n verifyContractAddress = \"0x50F59504D3623Ad99302835da367676d1f7E3D44\";\n storyTestnetVaultAddress = \"0xFeA61647309cA4624EfF3c86EEEeb76a6F3eaFf7\";\n monadTestnetVaultAddress = qaMonadTestnetVaultAddress;\n abstractVaultAddress = AbstractQaVaultAddress;\n bscVaultAddress = bscTestnetQaVaultAddress;\n bscUSDCAddress = bscTestnetUSDCAddress;\n vaultAddress = qaArbitrumTestnetVaultAddress;\n } else if (env === \"dev\") {\n abstractVaultAddress = AbstractDevVaultAddress;\n bscVaultAddress = bscTestnetDevVaultAddress;\n bscUSDCAddress = bscTestnetUSDCAddress;\n verifyContractAddress = \"0x8794E7260517B1766fc7b55cAfcd56e6bf08600e\";\n }\n\n return {\n usdcAddress: nativeUSDCAddress,\n usdcAbi: stagingUSDCAbiOnArbitrumTestnet,\n vaultAddress: vaultAddress,\n solanaVaultAddress: solanaVaultAddress,\n solanaUSDCAddress: solanaUSDCAddress,\n vaultAbi: stagingVaultAbiOnArbitrumTestnet,\n verifyContractAddress: verifyContractAddress,\n erc20Abi: stagingUSDCAbiOnArbitrumTestnet,\n storyTestnetVaultAddress: storyTestnetVaultAddress,\n monadTestnetVaultAddress: monadTestnetVaultAddress,\n monadTestnetUSDCAddress: monadTestnetUSDCAddress,\n abstractUSDCAddress: abstractUSDCAddress,\n abstractVaultAddress: abstractVaultAddress,\n bscVaultAddress: bscVaultAddress,\n bscUSDCAddress: bscUSDCAddress,\n };\n }\n}\n\nexport function getContractInfoByChainId(\n chainId: number,\n contractInfo: OrderlyContracts,\n) {\n let vaultAddress = contractInfo.vaultAddress;\n let tokenAddress = contractInfo.usdcAddress;\n\n if (chainId === STORY_TESTNET_CHAINID) {\n vaultAddress = contractInfo.storyTestnetVaultAddress ?? \"\";\n }\n\n if (chainId === MONAD_TESTNET_CHAINID) {\n vaultAddress = contractInfo.monadTestnetVaultAddress ?? \"\";\n tokenAddress = contractInfo.monadTestnetUSDCAddress ?? \"\";\n }\n\n if (ABSTRACT_CHAIN_ID_MAP.has(chainId)) {\n vaultAddress = contractInfo.abstractVaultAddress ?? \"\";\n tokenAddress = contractInfo.abstractUSDCAddress ?? \"\";\n }\n\n if (chainId === BSC_TESTNET_CHAINID) {\n vaultAddress = contractInfo.bscVaultAddress ?? \"\";\n tokenAddress = contractInfo.bscUSDCAddress ?? \"\";\n }\n\n return {\n vaultAddress,\n tokenAddress,\n };\n}\n","export const nativeUSDCAddress = \"0xfd064A18f3BF249cf1f87FC203E90D8f650f2d63\";\n\nexport const stagingUSDCAddressOnArbitrumTestnet =\n \"0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d\";\n\nexport const stagingVaultAddressOnArbitrumTestnet =\n \"0x0EaC556c0C2321BA25b9DC01e4e3c95aD5CDCd2f\";\nexport const stagingVerifyAddressOnArbitrumTestnet =\n \"0x1826B75e2ef249173FC735149AE4B8e9ea10abff\";\n\nexport const mainnetUSDCAddress = \"0xaf88d065e77c8cC2239327C5EDb3A432268e5831\";\nexport const mainnetVaultAddress = \"0x816f722424B49Cf1275cc86DA9840Fbd5a6167e9\";\nexport const mainnetVerifyAddress =\n \"0x6F7a338F2aA472838dEFD3283eB360d4Dff5D203\";\n\nexport const solanaMainnetVaultAddress =\n \"ErBmAD61mGFKvrFNaTJuxoPwqrS8GgtwtqJTJVjFWx9Q\";\nexport const solanaStagingVualtAddress =\n \"9shwxWDUNhtwkHocsUAmrNAQfBH2DHh4njdAEdHZZkF2\";\nexport const solanaDevVaultAddress =\n \"EYJq9eU4GMRUriUJBgGoZ8YLQBXcWaciXuSsEXE7ieQS\";\nexport const solanaQaVaultAddress =\n \"5zBjLor7vEraAt4zp2H82sy9MSqFoDnNa1Lx6EYKTYRZ\";\nexport const solanaUSDCAddress = \"4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU\";\nexport const solanaMainnetUSDCAddress =\n \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\";\n\nexport const EVENT_NAMES = {\n statusChanged: \"change:status\",\n validateStart: \"validate:start\",\n validateEnd: \"validate:end\",\n switchAccount: \"switch:account\",\n subAccountCreated: \"account:sub:created\",\n subAccountUpdated: \"account:sub:updated\",\n};\nexport const stagingStoryTestnetVaultAddress =\n \"0x65B99E978d1eeE9CfEdfD463EC7A81317e5A5073\";\n// monad testnet constractconfig\nexport const stagingMonadTestnetVaultAddress =\n \"0x9442e24203e999db4aE87E35Dc0c8F3C610c29A0\";\nexport const MonadTestnetUSDCAddress =\n \"0x77F77926C6596c78f285D230Cd0dC8dC3540e3a6\";\nexport const qaMonadTestnetVaultAddress =\n \"0xdd6E018D747D70C705BA84B67B6eAD7748a57cDa\";\nexport const qaArbitrumTestnetVaultAddress =\n \"0xB15a3a4D451311e03e34d9331C695078Ad5Cf5F1\";\nexport const AbstractMainnetUSDCAddress =\n \"0x84A71ccD554Cc1b02749b35d22F684CC8ec987e1\";\nexport const AbstractTestnetUSDCAddress =\n \"0xa0BB43E2eA7fcE91F07e628d72fD6333e80F47D2\";\nexport const AbstractDevVaultAddress =\n \"0x44Df3723136b7372a61c404Dc1Bd503460833310\";\nexport const AbstractQaVaultAddress =\n \"0xf14Ff11F3bb1011ff42665Ec869c7827c43745Fd\";\nexport const stagingAbstractTestnetVaultAddress =\n \"0x2c65ea2eE7265df755d7258291202690c27C6d2d\";\nexport const abstractMainnetVaultAddress =\n \"0xE80F2396A266e898FBbD251b89CFE65B3e41fD18\";\nexport const bscTestnetDevVaultAddress =\n \"0x27631bCB066704A4576FaB2f36D24D9ffbf80FC1\";\nexport const bscTestnetQaVaultAddress =\n \"0xc93fA36a46bF544537dE3BF1Dec27A1074d71099\";\nexport const bscTestnetStagingVaultAddress =\n \"0xaf2036D5143219fa00dDd90e7A2dbF3E36dba050\";\nexport const bscTestnetUSDCAddress =\n \"0x31873b5804bABE258d6ea008f55e08DD00b7d51E\";\nexport const bscMainnetVaultAddress =\n \"0x816f722424B49Cf1275cc86DA9840Fbd5a6167e9\";\nexport const bscMainnetUSDCAddress =\n \"0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d\";\n","[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"authorizer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"nonce\",\"type\":\"bytes32\"}],\"name\":\"AuthorizationCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"authorizer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"nonce\",\"type\":\"bytes32\"}],\"name\":\"AuthorizationUsed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"Blacklisted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newBlacklister\",\"type\":\"address\"}],\"name\":\"BlacklisterChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"burner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newMasterMinter\",\"type\":\"address\"}],\"name\":\"MasterMinterChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minterAllowedAmount\",\"type\":\"uint256\"}],\"name\":\"MinterConfigured\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldMinter\",\"type\":\"address\"}],\"name\":\"MinterRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Pause\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"PauserChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newRescuer\",\"type\":\"address\"}],\"name\":\"RescuerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"UnBlacklisted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Unpause\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"CANCEL_AUTHORIZATION_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RECEIVE_WITH_AUTHORIZATION_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TRANSFER_WITH_AUTHORIZATION_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"authorizer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"nonce\",\"type\":\"bytes32\"}],\"name\":\"authorizationState\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"blacklist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blacklister\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"authorizer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"nonce\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"cancelAuthorization\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minterAllowedAmount\",\"type\":\"uint256\"}],\"name\":\"configureMinter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currency\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"decrement\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"increment\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tokenSymbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tokenCurrency\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"tokenDecimals\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"newMasterMinter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newPauser\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newBlacklister\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"newName\",\"type\":\"string\"}],\"name\":\"initializeV2\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"lostAndFound\",\"type\":\"address\"}],\"name\":\"initializeV2_1\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"isBlacklisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isMinter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"masterMinter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"}],\"name\":\"minterAllowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauser\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"validAfter\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"validBefore\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"nonce\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"receiveWithAuthorization\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"}],\"name\":\"removeMinter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"rescueERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rescuer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"validAfter\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"validBefore\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"nonce\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"transferWithAuthorization\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"unBlacklist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newBlacklister\",\"type\":\"address\"}],\"name\":\"updateBlacklister\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newMasterMinter\",\"type\":\"address\"}],\"name\":\"updateMasterMinter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newPauser\",\"type\":\"address\"}],\"name\":\"updatePauser\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newRescuer\",\"type\":\"address\"}],\"name\":\"updateRescuer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]","[\n {\n \"inputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [],\n \"name\": \"AccountIdInvalid\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"AddressZero\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"balance\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"amount\",\n \"type\": \"uint128\"\n }\n ],\n \"name\": \"BalanceNotEnough\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"BrokerNotAllowed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"EnumerableSetError\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"OnlyCrossChainManagerCanCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"TokenNotAllowed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ZeroDepositFee\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"accountId\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"userAddress\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint64\",\n \"name\": \"depositNonce\",\n \"type\": \"uint64\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint128\",\n \"name\": \"tokenAmount\",\n \"type\": \"uint128\"\n }\n ],\n \"name\": \"AccountDeposit\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"accountId\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"userAddress\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint64\",\n \"name\": \"depositNonce\",\n \"type\": \"uint64\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint128\",\n \"name\": \"tokenAmount\",\n \"type\": \"uint128\"\n }\n ],\n \"name\": \"AccountDepositTo\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"accountId\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint64\",\n \"name\": \"withdrawNonce\",\n \"type\": \"uint64\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"brokerHash\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint128\",\n \"name\": \"tokenAmount\",\n \"type\": \"uint128\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint128\",\n \"name\": \"fee\",\n \"type\": \"uint128\"\n }\n ],\n \"name\": \"AccountWithdraw\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"oldAddress\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"newAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ChangeCrossChainManager\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"_tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"_tokenAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ChangeTokenAddressAndAllow\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint8\",\n \"name\": \"version\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"previousOwner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnershipTransferred\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Paused\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"_brokerHash\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bool\",\n \"name\": \"_allowed\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"SetAllowedBroker\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"_tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bool\",\n \"name\": \"_allowed\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"SetAllowedToken\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Unpaused\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"allowedToken\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_tokenAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"changeTokenAddressAndAllow\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"crossChainManagerAddress\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"accountId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"brokerHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"tokenAmount\",\n \"type\": \"uint128\"\n }\n ],\n \"internalType\": \"struct VaultTypes.VaultDepositFE\",\n \"name\": \"data\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"deposit\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"accountId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"brokerHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"tokenAmount\",\n \"type\": \"uint128\"\n }\n ],\n \"internalType\": \"struct VaultTypes.VaultDepositFE\",\n \"name\": \"data\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"deposit\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"depositFeeEnabled\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"depositId\",\n \"outputs\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"\",\n \"type\": \"uint64\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"accountId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"brokerHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"tokenAmount\",\n \"type\": \"uint128\"\n }\n ],\n \"internalType\": \"struct VaultTypes.VaultDepositFE\",\n \"name\": \"data\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"depositTo\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"emergencyPause\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"emergencyUnpause\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"_enabled\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"enableDepositFee\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getAllAllowedBroker\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"\",\n \"type\": \"bytes32[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getAllAllowedToken\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"\",\n \"type\": \"bytes32[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_brokerHash\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"getAllowedBroker\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_tokenHash\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"getAllowedToken\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"accountId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"brokerHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"tokenAmount\",\n \"type\": \"uint128\"\n }\n ],\n \"internalType\": \"struct VaultTypes.VaultDepositFE\",\n \"name\": \"data\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"getDepositFee\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"messageTransmitterContract\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"owner\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"paused\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"dstDomain\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"rebalanceId\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"amount\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"burnChainId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"mintChainId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"dstVaultAddress\",\n \"type\": \"address\"\n }\n ],\n \"internalType\": \"struct RebalanceTypes.RebalanceBurnCCData\",\n \"name\": \"data\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"rebalanceBurn\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"rebalanceId\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"amount\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"burnChainId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"mintChainId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"messageBytes\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"messageSignature\",\n \"type\": \"bytes\"\n }\n ],\n \"internalType\": \"struct RebalanceTypes.RebalanceMintCCData\",\n \"name\": \"data\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"rebalanceMint\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"renounceOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_brokerHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"_allowed\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"setAllowedBroker\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"_allowed\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"setAllowedToken\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_crossChainManagerAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setCrossChainManager\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_rebalanceMessengerContract\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setRebalanceMessengerContract\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_tokenMessengerContract\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setTokenMessengerContract\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"tokenMessengerContract\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"transferOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"accountId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"brokerHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"tokenAmount\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"fee\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"withdrawNonce\",\n \"type\": \"uint64\"\n }\n ],\n \"internalType\": \"struct VaultTypes.VaultWithdraw\",\n \"name\": \"data\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"withdraw\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n]","[\n {\n \"inputs\":[\n {\n \"internalType\":\"string\",\n \"name\":\"name_\",\n \"type\":\"string\"\n },\n {\n \"internalType\":\"string\",\n \"name\":\"symbol_\",\n \"type\":\"string\"\n },\n {\n \"internalType\":\"uint8\",\n \"name\":\"decimals_\",\n \"type\":\"uint8\"\n }\n ],\n \"stateMutability\":\"nonpayable\",\n \"type\":\"constructor\"\n },\n {\n \"anonymous\":false,\n \"inputs\":[\n {\n \"indexed\":true,\n \"internalType\":\"address\",\n \"name\":\"owner\",\n \"type\":\"address\"\n },\n {\n \"indexed\":true,\n \"internalType\":\"address\",\n \"name\":\"spender\",\n \"type\":\"address\"\n },\n {\n \"indexed\":false,\n \"internalType\":\"uint256\",\n \"name\":\"value\",\n \"type\":\"uint256\"\n }\n ],\n \"name\":\"Approval\",\n \"type\":\"event\"\n },\n {\n \"anonymous\":false,\n \"inputs\":[\n {\n \"indexed\":true,\n \"internalType\":\"address\",\n \"name\":\"from\",\n \"type\":\"address\"\n },\n {\n \"indexed\":true,\n \"internalType\":\"address\",\n \"name\":\"to\",\n \"type\":\"address\"\n },\n {\n \"indexed\":false,\n \"internalType\":\"uint256\",\n \"name\":\"value\",\n \"type\":\"uint256\"\n }\n ],\n \"name\":\"Transfer\",\n \"type\":\"event\"\n },\n {\n \"inputs\":[\n {\n \"internalType\":\"address\",\n \"name\":\"owner\",\n \"type\":\"address\"\n },\n {\n \"internalType\":\"address\",\n \"name\":\"spender\",\n \"type\":\"address\"\n }\n ],\n \"name\":\"allowance\",\n \"outputs\":[\n {\n \"internalType\":\"uint256\",\n \"name\":\"\",\n \"type\":\"uint256\"\n }\n ],\n \"stateMutability\":\"view\",\n \"type\":\"function\"\n },\n {\n \"inputs\":[\n {\n \"internalType\":\"address\",\n \"name\":\"spender\",\n \"type\":\"address\"\n },\n {\n \"internalType\":\"uint256\",\n \"name\":\"amount\",\n \"type\":\"uint256\"\n }\n ],\n \"name\":\"approve\",\n \"outputs\":[\n {\n \"internalType\":\"bool\",\n \"name\":\"\",\n \"type\":\"bool\"\n }\n ],\n \"stateMutability\":\"nonpayable\",\n \"type\":\"function\"\n },\n {\n \"inputs\":[\n {\n \"internalType\":\"address\",\n \"name\":\"account\",\n \"type\":\"address\"\n }\n ],\n \"name\":\"balanceOf\",\n \"outputs\":[\n {\n \"internalType\":\"uint256\",\n \"name\":\"\",\n \"type\":\"uint256\"\n }\n ],\n \"stateMutability\":\"view\",\n \"type\":\"function\"\n },\n {\n \"inputs\":[\n \n ],\n \"name\":\"decimals\",\n \"outputs\":[\n {\n \"internalType\":\"uint8\",\n \"name\":\"\",\n \"type\":\"uint8\"\n }\n ],\n \"stateMutability\":\"view\",\n \"type\":\"function\"\n },\n {\n \"inputs\":[\n {\n \"internalType\":\"address\",\n \"name\":\"spender\",\n \"type\":\"address\"\n },\n {\n \"internalType\":\"uint256\",\n \"name\":\"subtractedValue\",\n \"type\":\"uint256\"\n }\n ],\n \"name\":\"decreaseAllowance\",\n \"outputs\":[\n {\n \"internalType\":\"bool\",\n \"name\":\"\",\n \"type\":\"bool\"\n }\n ],\n \"stateMutability\":\"nonpayable\",\n \"type\":\"function\"\n },\n {\n \"inputs\":[\n {\n \"internalType\":\"address\",\n \"name\":\"spender\",\n \"type\":\"address\"\n },\n {\n \"internalType\":\"uint256\",\n \"name\":\"addedValue\",\n \"type\":\"uint256\"\n }\n ],\n \"name\":\"increaseAllowance\",\n \"outputs\":[\n {\n \"internalType\":\"bool\",\n \"name\":\"\",\n \"type\":\"bool\"\n }\n ],\n \"stateMutability\":\"nonpayable\",\n \"type\":\"function\"\n },\n {\n \"inputs\":[\n {\n \"internalType\":\"uint256\",\n \"name\":\"amount\",\n \"type\":\"uint256\"\n }\n ],\n \"name\":\"issue\",\n \"outputs\":[\n \n ],\n \"stateMutability\":\"nonpayable\",\n \"type\":\"function\"\n },\n {\n \"inputs\":[\n {\n \"internalType\":\"address\",\n \"name\":\"_to\",\n \"type\":\"address\"\n },\n {\n \"internalType\":\"uint256\",\n \"name\":\"_amount\",\n \"type\":\"uint256\"\n }\n ],\n \"name\":\"mint\",\n \"outputs\":[\n \n ],\n \"stateMutability\":\"nonpayable\",\n \"type\":\"function\"\n },\n {\n \"inputs\":[\n \n ],\n \"name\":\"name\",\n \"outputs\":[\n {\n \"internalType\":\"string\",\n \"name\":\"\",\n \"type\":\"string\"\n }\n ],\n \"stateMutability\":\"view\",\n \"type\":\"function\"\n },\n {\n \"inputs\":[\n {\n \"internalType\":\"bool\",\n \"name\":\"_paused\",\n \"type\":\"bool\"\n }\n ],\n \"name\":\"pauseTransfers\",\n \"outputs\":[\n \n ],\n \"stateMutability\":\"nonpayable\",\n \"type\":\"function\"\n },\n {\n \"inputs\":[\n \n ],\n \"name\":\"symbol\",\n \"outputs\":[\n {\n \"internalType\":\"string\",\n \"name\":\"\",\n \"type\":\"string\"\n }\n ],\n \"stateMutability\":\"view\",\n \"type\":\"function\"\n },\n {\n \"inputs\":[\n \n ],\n \"name\":\"totalSupply\",\n \"outputs\":[\n {\n \"internalType\":\"uint256\",\n \"name\":\"\",\n \"type\":\"uint256\"\n }\n ],\n \"stateMutability\":\"view\",\n \"type\":\"function\"\n },\n {\n \"inputs\":[\n {\n \"internalType\":\"address\",\n \"name\":\"recipient\",\n \"type\":\"address\"\n },\n {\n \"internalType\":\"uint256\",\n \"name\":\"amount\",\n \"type\":\"uint256\"\n }\n ],\n \"name\":\"transfer\",\n \"outputs\":[\n {\n \"internalType\":\"bool\",\n \"name\":\"\",\n \"type\":\"bool\"\n }\n ],\n \"stateMutability\":\"nonpayable\",\n \"type\":\"function\"\n },\n {\n \"inputs\":[\n {\n \"internalType\":\"address\",\n \"name\":\"sender\",\n \"type\":\"address\"\n },\n {\n \"internalType\":\"address\",\n \"name\":\"recipient\",\n \"type\":\"address\"\n },\n {\n \"internalType\":\"uint256\",\n \"name\":\"amount\",\n \"type\":\"uint256\"\n }\n ],\n \"name\":\"transferFrom\",\n \"outputs\":[\n {\n \"internalType\":\"bool\",\n \"name\":\"\",\n \"type\":\"bool\"\n }\n ],\n \"stateMutability\":\"nonpayable\",\n \"type\":\"function\"\n }\n]\n","[\n {\n \"inputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [],\n \"name\": \"AccountIdInvalid\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"AddressZero\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"balance\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"amount\",\n \"type\": \"uint128\"\n }\n ],\n \"name\": \"BalanceNotEnough\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"BrokerNotAllowed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"EnumerableSetError\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"OnlyCrossChainManagerCanCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"TokenNotAllowed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ZeroDepositFee\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"accountId\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"userAddress\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint64\",\n \"name\": \"depositNonce\",\n \"type\": \"uint64\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint128\",\n \"name\": \"tokenAmount\",\n \"type\": \"uint128\"\n }\n ],\n \"name\": \"AccountDeposit\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"accountId\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"userAddress\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint64\",\n \"name\": \"depositNonce\",\n \"type\": \"uint64\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint128\",\n \"name\": \"tokenAmount\",\n \"type\": \"uint128\"\n }\n ],\n \"name\": \"AccountDepositTo\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"accountId\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint64\",\n \"name\": \"withdrawNonce\",\n \"type\": \"uint64\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"brokerHash\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint128\",\n \"name\": \"tokenAmount\",\n \"type\": \"uint128\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint128\",\n \"name\": \"fee\",\n \"type\": \"uint128\"\n }\n ],\n \"name\": \"AccountWithdraw\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"oldAddress\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"newAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ChangeCrossChainManager\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"_tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"_tokenAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ChangeTokenAddressAndAllow\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint8\",\n \"name\": \"version\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"previousOwner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnershipTransferred\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Paused\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"_brokerHash\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bool\",\n \"name\": \"_allowed\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"SetAllowedBroker\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"_tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bool\",\n \"name\": \"_allowed\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"SetAllowedToken\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Unpaused\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"allowedToken\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_tokenAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"changeTokenAddressAndAllow\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"crossChainManagerAddress\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"accountId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"brokerHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"tokenAmount\",\n \"type\": \"uint128\"\n }\n ],\n \"internalType\": \"struct VaultTypes.VaultDepositFE\",\n \"name\": \"data\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"deposit\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"depositFeeEnabled\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"depositId\",\n \"outputs\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"\",\n \"type\": \"uint64\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"accountId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"brokerHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"tokenAmount\",\n \"type\": \"uint128\"\n }\n ],\n \"internalType\": \"struct VaultTypes.VaultDepositFE\",\n \"name\": \"data\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"depositTo\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"emergencyPause\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"emergencyUnpause\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"_enabled\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"enableDepositFee\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getAllAllowedBroker\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"\",\n \"type\": \"bytes32[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getAllAllowedToken\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"\",\n \"type\": \"bytes32[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_brokerHash\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"getAllowedBroker\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_tokenHash\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"getAllowedToken\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"accountId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"brokerHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"tokenAmount\",\n \"type\": \"uint128\"\n }\n ],\n \"internalType\": \"struct VaultTypes.VaultDepositFE\",\n \"name\": \"data\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"getDepositFee\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"messageTransmitterContract\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"owner\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"paused\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"dstDomain\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"rebalanceId\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"amount\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"burnChainId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"mintChainId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"dstVaultAddress\",\n \"type\": \"address\"\n }\n ],\n \"internalType\": \"struct RebalanceTypes.RebalanceBurnCCData\",\n \"name\": \"data\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"rebalanceBurn\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"rebalanceId\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"amount\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"burnChainId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"mintChainId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"messageBytes\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"messageSignature\",\n \"type\": \"bytes\"\n }\n ],\n \"internalType\": \"struct RebalanceTypes.RebalanceMintCCData\",\n \"name\": \"data\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"rebalanceMint\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"renounceOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_brokerHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"_allowed\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"setAllowedBroker\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"_allowed\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"setAllowedToken\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_crossChainManagerAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setCrossChainManager\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_rebalanceMessengerContract\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setRebalanceMessengerContract\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_tokenMessengerContract\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setTokenMessengerContract\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"tokenMessengerContract\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"transferOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"accountId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"brokerHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"tokenHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"tokenAmount\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"fee\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"withdrawNonce\",\n \"type\": \"uint64\"\n }\n ],\n \"internalType\": \"struct VaultTypes.VaultWithdraw\",\n \"name\": \"data\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"withdraw\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n]","import { getGlobalObject } from \"../utils\";\nimport Container from \"./container\";\n\n//https://github.com/kl4n4/typescript-simple-di\nexport class SimpleDI {\n private static KEY = \"__ORDERLY_CONTAINER__\";\n private static container: Container =\n (getGlobalObject() as any)[SimpleDI.KEY] || null;\n\n private static getContainer(): Container {\n if (!SimpleDI.container) {\n (getGlobalObject() as any)[SimpleDI.KEY] = SimpleDI.container =\n new Container();\n }\n return SimpleDI.container;\n }\n\n static register(...serviceClasses: any[]): void {\n SimpleDI.getContainer().register(...serviceClasses);\n }\n\n static registerByName(name: string, serviceClass: any): void {\n SimpleDI.getContainer().registerByName(name, serviceClass);\n }\n\n // static addInjectProperty(target: any, propertyKey: string, serviceName: string = propertyKey): void {\n // SimpleDI.getContainer().addInjectProperty(target, propertyKey, serviceName);\n // }\n\n static get<T = any>(name: string): T {\n return SimpleDI.getContainer().get<T>(name);\n }\n\n static getOr<T = any>(name: string, instance: T): T {\n const s = SimpleDI.getContainer().get<T>(name);\n if (!s) {\n SimpleDI.registerByName(name, instance);\n }\n return instance;\n }\n\n // static getByType<T>(c: new (...args: any[]) => T): T {\n // return SimpleDI.getContainer().getByType(c);\n // }\n\n static getAll(): { [name: string]: any } {\n return SimpleDI.getContainer().getAll();\n }\n\n private constructor() {}\n}\n\nexport default SimpleDI;\n","export class Container {\n private injectProperties: {\n [key: string]: Array<{\n target: any;\n propertyKey: string;\n serviceName: string;\n }>;\n } = {};\n\n public constructor(\n private providers: any[] = [],\n private services: { [name: string]: any } = {},\n ) {}\n\n register(...serviceClasses: any[]): void {\n this.providers.push(...serviceClasses);\n serviceClasses.forEach((serviceClass) => {\n let service = serviceClass;\n if (service instanceof Function) {\n service = new serviceClass();\n }\n this.add(service);\n });\n }\n\n registerByName(name: string, serviceClass: any): void {\n let service = serviceClass;\n if (service instanceof Function) {\n service = new serviceClass();\n }\n this.addByName(name, service);\n }\n\n get<T = any>(name: string): T {\n return this.services[name];\n }\n\n // getByType<T>(c: new (...args: any[]) => T): T {\n // return this.get<T>(c.name.toLowerCase());\n // }\n\n getAll(): { [name: string]: any } {\n return Object.assign({}, this.services);\n }\n\n // addInjectProperty(\n // target: any,\n // propertyKey: string,\n // serviceName: string = propertyKey,\n // ) {\n // if (target) {\n // this.getInjectProperty(serviceName.toLowerCase()).push({\n // target,\n // propertyKey,\n // serviceName,\n // });\n // this.inject(\n // target,\n // propertyKey,\n // this.services[serviceName.toLowerCase()],\n // );\n // }\n // }\n\n private add(service: any): any {\n return this.addByName(service.constructor.name, service);\n }\n\n private addByName(name: string, service: any): any {\n this.services[name] = service;\n this.services[name.toLowerCase()] = service;\n this.injectIntoProperties(service, name);\n return this.get(name);\n }\n\n private inject(target: any, propertyKey: string, service: any) {\n if (target && service) {\n target[propertyKey] = service;\n }\n }\n\n private injectIntoProperties(\n service: any,\n name: string = service.constructor.name,\n ) {\n this.getInjectProperty(name.toLowerCase()).forEach((property) => {\n this.inject(property.target, property.propertyKey, service);\n });\n }\n\n private getInjectProperty(key: string) {\n if (!this.injectProperties[key]) {\n this.injectProperties[key] = [];\n }\n return this.injectProperties[key];\n }\n}\n\nexport default Container;\n","import { PublicKey } from \"@solana/web3.js\";\nimport { AbiCoder, keccak256 } from \"ethers\";\nimport EventEmitter from \"eventemitter3\";\nimport {\n AccountStatusEnum,\n SDKError,\n ChainNamespace,\n API,\n DEFAUL_ORDERLY_KEY_SCOPE,\n EMPTY_LIST,\n} from \"@kodiak-finance/orderly-types\";\nimport { AdditionalInfoRepository } from \"./additionalInfoRepository\";\nimport { Assets } from \"./assets\";\nimport { ConfigStore } from \"./configStore/configStore\";\nimport { EVENT_NAMES } from \"./constants\";\nimport { BaseContract, IContract } from \"./contract\";\nimport { BaseOrderlyKeyPair, OrderlyKeyPair } from \"./keyPair\";\nimport { OrderlyKeyStore } from \"./keyStore\";\nimport { LocalStorageRepository } from \"./repository\";\nimport { BaseSigner, MessageFactor, Signer } from \"./signer\";\nimport { SubAccount } from \"./subAccount\";\nimport {\n getTimestamp,\n isHex,\n parseAccountId,\n parseBrokerHash,\n SignatureDomain,\n} from \"./utils\";\nimport { WalletAdapter } from \"./wallet/walletAdapter\";\nimport { WalletAdapterManager } from \"./walletAdapterManager\";\n\nexport interface AccountState {\n status: AccountStatusEnum;\n\n // checking: boolean;\n\n /**\n * whether the account is validating\n */\n validating: boolean;\n /**\n * whether the account is revalidating\n */\n // revalidating?: boolean;\n\n /**\n * The current active account ID\n * Can be either a root account ID or sub-account ID\n * @since 2.3.0\n */\n accountId?: string;\n /**\n * root account id\n * @since 2.3.0\n */\n mainAccountId?: string;\n /**\n * sub account id\n * @since 2.3.0\n */\n subAccountId?: string | undefined;\n userId?: string;\n address?: string;\n chainNamespace?: ChainNamespace;\n /** new account */\n isNew?: boolean;\n\n connectWallet?: {\n name: string;\n chainId: number;\n };\n\n /**\n * sub accounts\n * @since 2.3.0\n */\n subAccounts?: SubAccount[];\n\n // balance: string;\n // leverage: number;\n}\n\n/**\n * Account\n * @example\n * ```ts\n * const account = new Account();\n * account.login(\"0x1234567890\");\n * ```\n */\nexport class Account {\n static instanceName = \"account\";\n static additionalInfoRepositoryName = \"orderly_walletAdditionalInfo\";\n static ACTIVE_SUB_ACCOUNT_ID_KEY = \"ACTIVE_SUB_ACCOUNT_ID\";\n // private walletClient?: WalletClient;\n private _singer?: Signer;\n\n private _ee = new EventEmitter();\n\n private walletAdapterManager: WalletAdapterManager;\n\n assetsManager: Assets;\n\n private additionalInfoRepository: AdditionalInfoRepository;\n\n private _state: AccountState = {\n status: AccountStatusEnum.NotConnected,\n // balance: \"\",\n // checking: false,\n validating: false, // if address exists, validating is available\n // leverage: Number.NaN,\n isNew: false,\n };\n\n private readonly contractManger;\n\n constructor(\n private readonly configStore: ConfigStore,\n readonly keyStore: OrderlyKeyStore,\n // private readonly getWalletAdapter: getWalletAdapterFunc, // private readonly walletAdapterClass: { new (options: any): WalletAdapter } // private walletClient?: WalletClient\n walletAdapters: WalletAdapter[],\n options?: Partial<{\n /**\n * smart contract configuration class\n * provide contract address and abi\n */\n contracts: IContract;\n }>,\n ) {\n // this._initState();\n\n if (options?.contracts) {\n this.contractManger = options.contracts;\n } else {\n this.contractManger = new BaseContract(configStore);\n }\n\n this.assetsManager = new Assets(configStore, this.contractManger, this);\n this.walletAdapterManager = new WalletAdapterManager(walletAdapters);\n\n this.additionalInfoRepository = new AdditionalInfoRepository(\n new LocalStorageRepository(Account.additionalInfoRepositoryName),\n );\n\n this._bindEvents();\n }\n\n logout() {\n // ...\n }\n\n async setAddress(\n address: string,\n wallet: {\n provider: any;\n chain: { id: string | number; namespace: ChainNamespace };\n wallet: {\n name: string;\n };\n [key: string]: any;\n },\n options?: {\n /**\n * @deprecated will be remove this in next minor version\n */\n validateOrderlyKeyScope?: (scope: string) => boolean;\n },\n ): Promise<AccountStatusEnum> {\n if (!address) throw new SDKError(\"Address is required\");\n if (!wallet) throw new SDKError(\"Wallet is required\");\n if (!wallet?.chain?.id) throw new SDKError(\"Chain id is required\");\n\n if (this.stateValue.address === address) {\n console.warn(\n \"address parameter is the same as the current address, if you want to change chain, please use `switchChain` method.\",\n );\n return this.stateValue.status;\n } else {\n /// emit switch account event\n if (this.stateValue.status > AccountStatusEnum.NotConnected) {\n this._ee.emit(EVENT_NAMES.switchAccount, address);\n }\n }\n\n wallet.chain.id = this.parseChainId(wallet?.chain?.id);\n\n this.keyStore.setAddress(address);\n\n this.saveAdditionalInfo(address, wallet);\n\n const nextState: AccountState = {\n ...this.stateValue,\n status: AccountStatusEnum.Connected,\n address,\n chainNamespace: wallet.chain.namespace,\n accountId: undefined, // if address change, accountId should be reset\n connectWallet: {\n // ...wallet?.wallet,\n name: wallet.wallet.name || \"unknown\",\n chainId: wallet.chain.id,\n },\n validating: true,\n // revalidating: this._state.validating,\n };\n\n this._ee.emit(EVENT_NAMES.statusChanged, nextState);\n\n // if (wallet) {\n // // this.walletClient = new this.walletAdapterClass(wallet);\n // this.walletClient = this.getWalletAdapter({\n // ...wallet,\n // address,\n // } as WalletAdapterOptions);\n // }\n\n this.walletAdapterManager.switchWallet(\n wallet.chain.namespace,\n address,\n wallet.chain.id,\n {\n provider: wallet.provider,\n contractManager: this.contractManger,\n },\n );\n\n /**\n * update chainNamespace\n */\n this.configStore.set(\"chainNamespace\", wallet.chain.namespace);\n\n this._ee.emit(EVENT_NAMES.validateStart);\n\n const finallyState = await this._checkAccount(address, options);\n\n this._ee.emit(EVENT_NAMES.validateEnd, finallyState);\n\n return finallyState;\n }\n private saveAdditionalInfo(\n address: string,\n wallet: {\n [key: string]: any;\n additionalInfo?: Record<string, any>;\n },\n ) {\n if (typeof wallet.additionalInfo !== \"undefined\") {\n if (typeof wallet.additionalInfo !== \"object\") {\n console.warn(\"`wallet.additionalInfo` is not an object\");\n } else {\n this.additionalInfoRepository.save(address, wallet.additionalInfo);\n }\n }\n }\n\n get stateValue(): AccountState {\n // return this._state$.getValue();\n return this._state;\n }\n\n get accountId(): string | undefined {\n const state = this.stateValue;\n return state.subAccountId || state.mainAccountId;\n }\n\n get mainAccountId(): string | undefined {\n const state = this.stateValue;\n return state.mainAccountId;\n }\n\n get subAccountId(): string | undefined {\n const state = this.stateValue;\n return state.subAccountId;\n }\n\n get isSubAccount(): boolean {\n const state = this.stateValue;\n return state.mainAccountId !== state.accountId;\n }\n\n get accountIdHashStr(): string | undefined {\n if (!this.address) {\n throw new Error(\"address is error\");\n }\n\n // if (!this.configStore.get(\"brokerId\")) {\n // throw new Error(\"brokerId is undefined\");\n // }\n const brokerId = this.configStore.get<string>(\"brokerId\");\n if (this.walletAdapter?.chainNamespace === ChainNamespace.solana) {\n const userAccount = new PublicKey(this.address);\n const decodedUserAccount = Buffer.from(userAccount.toBytes());\n const abicoder = AbiCoder.defaultAbiCoder();\n return keccak256(\n abicoder.encode(\n [\"bytes32\", \"bytes32\"],\n [decodedUserAccount, parseBrokerHash(brokerId)],\n ),\n );\n }\n return parseAccountId(this.address, brokerId);\n }\n\n get address(): string | undefined {\n return this.stateValue.address;\n }\n\n get chainId(): number | string | undefined {\n // return this.walletClient?.chainId;\n if (!this.walletAdapterManager.isAdapterExist) {\n return;\n }\n return this.walletAdapterManager.chainId;\n }\n get apiBaseUrl(): string | undefined {\n return this.configStore.get(\"apiBaseUrl\");\n }\n\n private updateState(state: AccountState) {\n this._state = state;\n }\n\n private _bindEvents() {\n this._ee.addListener(EVENT_NAMES.statusChanged, (state: AccountState) => {\n this._state = state;\n });\n }\n\n // Check account status\n private async _checkAccount(\n address: string,\n options?: {\n /**\n * @deprecated will be remove this in next minor version\n */\n validateOrderlyKeyScope?: (scope: string) => boolean;\n },\n ): Promise<AccountStatusEnum> {\n // if (!this.walletClient) return;\n //\n let nextState: AccountState;\n try {\n // check account exists\n const accountInfo = await this._checkAccountExist(address);\n //\n\n if (accountInfo && accountInfo.account_id) {\n this.keyStore.setAccountId(address, accountInfo.account_id);\n // this.keyStore.setAddress(address);\n\n nextState = {\n ...this.stateValue,\n status: AccountStatusEnum.SignedIn,\n accountId: accountInfo.account_id,\n mainAccountId: accountInfo.account_id,\n userId: accountInfo.user_id,\n };\n this._ee.emit(EVENT_NAMES.statusChanged, nextState);\n //\n } else {\n nextState = {\n ...this.stateValue,\n validating: false,\n status: AccountStatusEnum.NotSignedIn,\n };\n\n this._ee.emit(EVENT_NAMES.statusChanged, nextState);\n\n return AccountStatusEnum.NotSignedIn;\n }\n // check orderlyKey state\n // get orderlyKey from keyStore\n // const orderlyKey = this.keyStore.getOrderlyKey(address);\n const orderlyKey = this.keyStore.getOrderlyKey();\n\n // nextState = {\n // ...this.stateValue,\n // isNew: false,\n // validating: false,\n // status: AccountStatusEnum.DisabledTrading,\n // };\n\n if (!orderlyKey) {\n nextState = {\n ...this.stateValue,\n isNew: false,\n validating: false,\n status: AccountStatusEnum.DisabledTrading,\n };\n this._ee.emit(EVENT_NAMES.statusChanged, nextState);\n\n return AccountStatusEnum.DisabledTrading;\n }\n\n const publicKey = await orderlyKey.getPublicKey();\n\n const orderlyKeyStatus = await this._checkOrderlyKeyState(\n accountInfo.account_id,\n publicKey,\n );\n\n if (\n orderlyKeyStatus &&\n orderlyKeyStatus.orderly_key &&\n orderlyKeyStatus.key_status === \"ACTIVE\"\n ) {\n const now = getTimestamp();\n const expiration = orderlyKeyStatus.expiration;\n\n const validScope =\n typeof options?.validateOrderlyKeyScope === \"function\"\n ? options.validateOrderlyKeyScope(orderlyKeyStatus.scope)\n : true;\n\n if (now > expiration || !validScope) {\n // orderlyKey is expired, remove orderlyKey\n nextState = {\n ...this.stateValue,\n validating: false,\n status: AccountStatusEnum.DisabledTrading,\n };\n this._ee.emit(EVENT_NAMES.statusChanged, nextState);\n this.keyStore.cleanKey(address, \"orderlyKey\");\n return AccountStatusEnum.DisabledTrading;\n }\n\n /**\n * Fetch sub-accounts list when trading is enabled for this account\n */\n // const subAccounts = await this.getSubAccounts();\n\n // nextState = {\n // ...this.stateValue,\n // validating: false,\n // status: AccountStatusEnum.EnableTrading,\n // };\n\n // if (subAccounts.length) {\n // // load active sub-account from local storage\n // const activeSubAccount = this.additionalInfoRepository.get(\n // address,\n // Account.ACTIVE_SUB_ACCOUNT_ID_KEY\n // );\n\n // nextState.subAccounts = subAccounts.map(\n // (subAccount: {\n // sub_account_id: string;\n // description: string;\n // holding: API.Holding[];\n // }) => ({\n // id: subAccount.sub_account_id,\n // description: subAccount.description,\n // holding: subAccount.holding,\n // })\n // );\n\n // if (activeSubAccount) {\n // // check if the activeSubAccount is included in the subAccounts\n // if (\n // nextState.subAccounts?.find(\n // (subAccount) => subAccount.id === activeSubAccount\n // )\n // ) {\n // nextState.subAccountId = activeSubAccount;\n // nextState.accountId = activeSubAccount;\n // }\n // }\n // }\n\n nextState = await this._restoreSubAccount();\n\n this._ee.emit(EVENT_NAMES.statusChanged, nextState);\n\n return AccountStatusEnum.EnableTrading;\n }\n\n this._ee.emit(EVENT_NAMES.statusChanged, {\n ...this.stateValue,\n validating: false,\n // status: AccountStatusEnum.DisabledTrading,\n });\n\n this.keyStore.cleanKey(address, \"orderlyKey\");\n\n return AccountStatusEnum.NotConnected;\n } catch (err) {\n // return this.stateValue.status;\n this._ee.emit(EVENT_NAMES.statusChanged, {\n ...this.stateValue,\n validating: false,\n // status: AccountStatusEnum.DisabledTrading,\n });\n }\n\n return AccountStatusEnum.NotSignedIn;\n }\n\n private async _checkAccountExist(\n address: string,\n chainNamespace?: string,\n ): Promise<{ account_id: string; user_id: string } | null> {\n // const brokerId = this.configStore.get(\"brokerId\");\n const res = await this._getAccountInfo(address, chainNamespace);\n\n if (res.success) {\n return res.data;\n } else {\n // throw new Error(res.message);\n return null;\n }\n }\n\n private async _restoreSubAccount(): Promise<AccountState> {\n const subAccounts = await this.getSubAccounts();\n\n const nextState = {\n ...this.stateValue,\n validating: false,\n status: AccountStatusEnum.EnableTrading,\n subAccounts: [] as SubAccount[],\n subAccountId: undefined,\n };\n\n if (subAccounts.length) {\n // load active sub-account from local storage\n const activeSubAccount = this.additionalInfoRepository.get(\n this.stateValue.address!,\n Account.ACTIVE_SUB_ACCOUNT_ID_KEY,\n );\n\n nextState.subAccounts = subAccounts.map((subAccount) => ({\n id: subAccount.sub_account_id,\n description: subAccount.description,\n holding: subAccount.holding,\n }));\n\n if (activeSubAccount) {\n // check if the activeSubAccount is included in the subAccounts\n if (\n nextState.subAccounts?.find(\n (subAccount) => subAccount.id === activeSubAccount,\n )\n ) {\n nextState.subAccountId = activeSubAccount;\n nextState.accountId = activeSubAccount;\n }\n }\n }\n\n return nextState;\n }\n\n async restoreSubAccount(): Promise<AccountState> {\n const nextState = await this._restoreSubAccount();\n this._ee.emit(EVENT_NAMES.statusChanged, nextState);\n return nextState;\n }\n\n async createAccount(): Promise<any> {\n // if (!this.walletClient) {\n // return Promise.reject(\"walletClient is undefined\");\n // }\n\n const { nonce, timestamp } = await this._getRegisterationNonce();\n\n const address = this.stateValue.address;\n\n if (!address) {\n throw new Error(\"address is undefined\");\n }\n\n // const [message, toSignatureMessage] = generateRegisterAccountMessage({\n // registrationNonce: nonce,\n // chainId: this.walletClient.chainId,\n // brokerId: this.configStore.get(\"brokerId\"),\n // timestamp,\n // });\n\n // const signatured = await this.signTypedData(toSignatureMessage);\n\n const { message, signatured } =\n await this.walletAdapterManager.adapter!.generateRegisterAccountMessage({\n registrationNonce: nonce,\n // chainId: this.walletClient.chainId,\n brokerId: this.configStore.get(\"brokerId\"),\n timestamp,\n });\n\n // const signatured = await this.signTypedData(toSignatureMessage);\n\n const res = await this._simpleFetch(\"/v1/register_account\", {\n method: \"POST\",\n body: JSON.stringify({\n signature: signatured,\n message,\n userAddress: address,\n }),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n });\n\n if (res.success) {\n // this.keyStore.setKey(address, keyPair);\n this.keyStore.setAccountId(address, res.data.account_id);\n\n const nextState = {\n ...this.stateValue,\n status: AccountStatusEnum.DisabledTrading,\n accountId: res.data.account_id,\n mainAccountId: res.data.account_id,\n userId: res.data.user_id,\n isNew: true,\n };\n\n this._ee.emit(EVENT_NAMES.statusChanged, nextState);\n\n return res;\n } else {\n throw new Error(res.message);\n }\n }\n\n async createSubAccount(description: string = \"\"): Promise<any> {\n if (!this.stateValue.mainAccountId) {\n throw new Error(\"mainAccountId is undefined\");\n }\n\n const url = \"/v1/client/add_sub_account\";\n\n const data = {\n description,\n };\n\n const signature = await this.signData(url, data);\n\n const res = await this._simpleFetch(url, {\n method: \"POST\",\n body: JSON.stringify(data),\n headers: {\n // \"X-Account-Id\": this.stateValue.mainAccountId,\n \"orderly-account-id\": this.stateValue.mainAccountId,\n \"Content-Type\": \"application/json\",\n ...signature,\n },\n });\n\n if (res.success) {\n const subAccount = {\n id: res.data.sub_account_id,\n description,\n holding: [],\n };\n\n const nextState = { ...this._state };\n\n // if (!Array.isArray(nextState.subAccounts)) {\n // nextState.subAccounts = [];\n // }\n nextState.subAccounts = [...(nextState.subAccounts ?? []), subAccount];\n\n this._ee.emit(EVENT_NAMES.subAccountCreated, subAccount);\n this._ee.emit(EVENT_NAMES.statusChanged, nextState);\n\n return res.data;\n } else {\n throw new Error(res.message);\n }\n }\n\n async updateSubAccount({\n subAccountId,\n description = \"\",\n }: {\n subAccountId: string;\n description?: string;\n }) {\n if (!this.stateValue.mainAccountId) {\n throw new Error(\"mainAccountId is undefined\");\n }\n\n if (description?.trim() !== \"\") {\n // Validate description format: up to 50 characters, only allows English characters,\n // numbers, @, comma, space, underscore and dash\n const descriptionRegex = /^[a-zA-Z0-9@,\\s_\\-]{0,50}$/;\n if (description && !descriptionRegex.test(description)) {\n throw new Error(\n \"Description must be up to 50 characters and can only contain English characters, numbers, @, comma, space, underscore and dash.\",\n );\n }\n }\n\n // check the subAccountId is included in the subAccounts\n const subAccount = this.stateValue.subAccounts?.find(\n (subAccount) => subAccount.id === subAccountId,\n );\n if (!subAccount) {\n throw new Error(\n `Sub-account with ID ${subAccountId} not found. Please verify the sub-account ID and try again.`,\n );\n }\n\n const url = \"/v1/client/update_sub_account\";\n\n const data = {\n sub_account_id: subAccountId,\n description,\n };\n\n const signature = await this.signData(url, data);\n\n const res = await this._simpleFetch(url, {\n method: \"POST\",\n body: JSON.stringify(data),\n headers: {\n \"orderly-account-id\": this.stateValue.mainAccountId,\n \"Content-Type\": \"application/json\",\n ...signature,\n },\n });\n\n if (res.success) {\n const nextState = { ...this._state };\n nextState.subAccounts = nextState.subAccounts?.map((subAccount) => {\n if (subAccount.id === subAccountId) {\n return { ...subAccount, description: description ?? \"\" };\n }\n return subAccount;\n });\n\n this._ee.emit(EVENT_NAMES.subAccountUpdated, data);\n\n this._ee.emit(EVENT_NAMES.statusChanged, nextState);\n return res.data;\n } else {\n throw new Error(res.message);\n }\n }\n\n switchAccount(accountId: string) {\n const nextState = {\n ...this._state,\n accountId,\n };\n\n // if the accountId is the main account, set the subAccountId to undefined\n if (accountId === nextState.mainAccountId) {\n nextState.subAccountId = undefined;\n\n this.additionalInfoRepository.remove(\n this.stateValue.address!,\n Account.ACTIVE_SUB_ACCOUNT_ID_KEY,\n );\n } else {\n nextState.subAccountId = accountId;\n\n this.additionalInfoRepository.save(this.stateValue.address!, {\n [Account.ACTIVE_SUB_ACCOUNT_ID_KEY]: accountId,\n });\n }\n\n this._ee.emit(EVENT_NAMES.statusChanged, nextState);\n }\n\n async getSubAccounts(): Promise<\n ({\n sub_account_id: string;\n description: string;\n } & { holding: API.Holding[] })[]\n > {\n const url = \"/v1/client/sub_account\";\n\n //\n const signature = await this.signGetMessageFactor(url);\n\n const res = await this._simpleFetch(url, {\n headers: {\n \"orderly-account-id\": this.stateValue.mainAccountId!,\n ...signature,\n },\n });\n\n if (res.success) {\n // if the subAccounts is not empty, fetch the subAccount balance\n if (res.data.rows?.length > 0) {\n const subAccountBalances = await this.getSubAccountBalances();\n return res.data.rows.map((account: { sub_account_id: string }) => {\n const holding =\n subAccountBalances[account.sub_account_id] ?? EMPTY_LIST;\n return {\n ...account,\n holding,\n };\n });\n }\n return res.data.rows ?? EMPTY_LIST;\n } else {\n throw new Error(res.message);\n }\n }\n\n async getSubAccountBalances(): Promise<Record<string, API.Holding[]>> {\n const url = \"/v1/client/aggregate/holding\";\n\n const signature = await this.signGetMessageFactor(url);\n\n const res = await this._simpleFetch(url, {\n headers: {\n \"orderly-account-id\": this.stateValue.mainAccountId!,\n ...signature,\n },\n });\n\n if (res.success) {\n // Group the data by account_id and transform it into {account_id: array} format\n const groupedData: Record<string, API.Holding[]> = {};\n if (res.data.rows && Array.isArray(res.data.rows)) {\n res.data.rows.forEach((item: API.Holding & { account_id: string }) => {\n if (!groupedData[item.account_id]) {\n groupedData[item.account_id] = [];\n }\n groupedData[item.account_id].push(item);\n });\n\n // For debugging purposes\n // console.log(\"Grouped data by account_id:\", groupedData);\n }\n // return res.data.rows ?? [];\n return groupedData;\n } else {\n throw new Error(res.message);\n }\n }\n\n /**\n * refresh sub account balances\n * @since 2.3.0\n */\n async refreshSubAccountBalances() {\n const subAccountBalances = await this.getSubAccountBalances();\n const nextState = {\n ...this.stateValue,\n subAccounts: this.stateValue.subAccounts?.map((subAccount) => {\n const holding = subAccountBalances[subAccount.id] ?? EMPTY_LIST;\n return { ...subAccount, holding };\n }),\n };\n this._ee.emit(EVENT_NAMES.statusChanged, nextState);\n\n return subAccountBalances;\n }\n\n /**\n * @since 2.3.0\n * if you are using main account orderly key, you can create api key for sub account\n */\n async createSubAccountApiKey(\n /**\n * expiration days\n */\n expiration: number,\n options: {\n tag?: string;\n scope?: string;\n subAccountId: string;\n },\n ) {\n try {\n const { res, keyPair } = await this.generateApiKey(expiration, options);\n if (res.success) {\n const key = await keyPair.getPublicKey();\n return {\n key: key.replace(\"ed25519:\", \"\"),\n secretKey: keyPair.secretKey?.replace(\"ed25519:\", \"\"),\n };\n }\n } catch (e) {\n console.log(\"createApiKey error\", e);\n\n if (`${e}`.includes(\"user rejected action\")) {\n throw new Error(\"User rejected the request.\");\n }\n\n throw e;\n }\n throw new Error(\"create api key failed\");\n }\n\n async createApiKey(\n /**\n * expiration days\n */\n expiration: number,\n options?: {\n tag?: string;\n scope?: string;\n },\n ) {\n try {\n const { res, keyPair } = await this.generateApiKey(expiration, options);\n if (res.success) {\n const key = await keyPair.getPublicKey();\n return {\n key: key.replace(\"ed25519:\", \"\"),\n secretKey: keyPair.secretKey?.replace(\"ed25519:\", \"\"),\n };\n }\n } catch (e) {\n console.log(\"createApiKey error\", e);\n\n if (`${e}`.includes(\"user rejected action\")) {\n throw new Error(\"User rejected the request.\");\n }\n\n throw e;\n }\n throw new Error(\"create api key failed\");\n }\n\n async createOrderlyKey(\n expiration?: number,\n options?: {\n tag?: string;\n scope?: string;\n },\n ): Promise<any> {\n const { res, address, keyPair } = await this.generateApiKey(\n expiration,\n options,\n );\n\n if (res.success) {\n this.keyStore.setKey(address, keyPair);\n const nextState = {\n ...this.stateValue,\n status: AccountStatusEnum.EnableTrading,\n // accountId: res.data.account_id,\n // userId: res.data.user_id,\n };\n\n this._ee.emit(EVENT_NAMES.statusChanged, nextState);\n\n return res;\n } else {\n throw new Error(res.message);\n }\n }\n\n private async generateApiKey(\n expiration?: number,\n options?: {\n tag?: string;\n scope?: string;\n /**\n * @since 2.3.0\n * if you are main account, you can pass the subAccountId to create the api key for the sub account\n * */\n subAccountId?: string;\n },\n ) {\n if (this.stateValue.mainAccountId === undefined) {\n throw new Error(\"account id is undefined\");\n }\n\n // if (!this.walletAdapterManager) {\n // throw new Error(\"walletAdapterManager is undefined\");\n // }\n\n if (!this.walletAdapter) {\n throw new Error(\"walletAdapter is undefined\");\n }\n\n if (!this.walletAdapterManager.isAdapterExist) {\n throw new Error(\"wallet adapter is not exist\");\n }\n\n if (typeof expiration !== \"number\") {\n throw new Error(\"the 'expiration' must be valid number\");\n }\n\n // const primaryType = \"AddOrderlyKey\";\n // const keyPair = this.keyStore.generateKey();\n const secretKey = this.walletAdapter.generateSecretKey();\n\n const keyPair = new BaseOrderlyKeyPair(secretKey);\n const publicKey = await keyPair.getPublicKey();\n\n const address = this.stateValue.address;\n\n if (!address) {\n throw new Error(\"address is undefined\");\n }\n\n const { message, signatured } =\n await this.walletAdapter.generateAddOrderlyKeyMessage({\n // chainId: number;\n brokerId: this.configStore.get(\"brokerId\"),\n publicKey,\n expiration,\n timestamp: getTimestamp(),\n // domain: any;\n scope: options?.scope || DEFAUL_ORDERLY_KEY_SCOPE,\n tag: options?.tag,\n subAccountId: options?.subAccountId,\n });\n\n // console.log(\"generateAPiKey\", publicKey, address);\n\n const res = await this._simpleFetch(\"/v1/orderly_key\", {\n method: \"POST\",\n body: JSON.stringify({\n signature: signatured,\n message,\n userAddress: address,\n }),\n headers: {\n // TODO: remove this header\n \"X-Account-Id\": this.stateValue.mainAccountId,\n \"Content-Type\": \"application/json\",\n },\n });\n\n return { res, address, keyPair };\n }\n\n async importOrderlyKey(options: {\n secretKey: string;\n address: string;\n chainNamespace: ChainNamespace;\n }) {\n const { address, secretKey, chainNamespace } = options;\n if (!address || !secretKey || !chainNamespace) return;\n\n const accountInfo = await this._checkAccountExist(address, chainNamespace);\n const accountId = accountInfo?.account_id;\n\n if (!accountId) return;\n\n const orderlyKey = new BaseOrderlyKeyPair(secretKey);\n const res = await this.checkOrderlyKey(address, orderlyKey, accountId);\n if (res) {\n this.configStore.set(\"chainNamespace\", chainNamespace);\n }\n\n return res;\n }\n\n async checkOrderlyKey(\n address: string,\n orderlyKey: OrderlyKeyPair,\n accountId: string,\n ) {\n if (!address || !orderlyKey || !accountId) return;\n const publicKey = await orderlyKey.getPublicKey();\n\n const orderlyKeyStatus = await this._checkOrderlyKeyState(\n accountId,\n publicKey,\n );\n\n const { orderly_key, key_status, expiration } = orderlyKeyStatus || {};\n const now = getTimestamp();\n\n if (orderly_key && key_status === \"ACTIVE\" && expiration > now) {\n this.keyStore.setAddress(address);\n\n this.keyStore.setKey(address, orderlyKey);\n this.keyStore.setAccountId(address, accountId);\n\n const nextState = {\n ...this.stateValue,\n address,\n accountId,\n mainAccountId: accountId,\n // userId: accountInfo.user_id,\n status: AccountStatusEnum.EnableTradingWithoutConnected,\n };\n // should update state first, because get sub accounts need to use the main account id\n this.updateState(nextState);\n const subAccountState = await this._restoreSubAccount();\n this._ee.emit(EVENT_NAMES.statusChanged, {\n ...nextState,\n subAccounts: subAccountState.subAccounts,\n subAccountId: undefined,\n });\n\n return true;\n }\n }\n\n /**\n * @since 2.3.0\n * settle sub account pnl\n */\n async settleSubAccount(options?: {\n /**\n * if you are main account and want to settle the sub account, you need to pass the subAccountId\n * if you are sub account, not need to pass the subAccountId\n * */\n subAccountId?: string;\n }): Promise<any> {\n const subAccountId = options?.subAccountId || this.stateValue.accountId;\n const nonce = await this._getSettleNonce(subAccountId);\n const url = \"/v1/sub_account_settle_pnl\";\n\n const data = {\n settle_nonce: nonce,\n };\n\n const signature = await this.signData(url, data);\n\n const res = await this._simpleFetch(url, {\n method: \"POST\",\n body: JSON.stringify(data),\n headers: {\n \"Content-Type\": \"application/json\",\n \"orderly-account-id\": subAccountId!,\n ...signature,\n },\n });\n\n if (res.success) {\n return res;\n } else {\n throw res;\n }\n }\n\n /** set main account pnl */\n async settle(options?: {\n /**\n * if you are main account, you don't need to pass the accountId\n * if you are sub account and you want to settle the main account, you need to pass main account id\n * */\n accountId?: string;\n }): Promise<any> {\n if (!this.walletAdapter) {\n return Promise.reject(\"walletAdapter is undefined\");\n }\n\n const nonce = await this._getSettleNonce(options?.accountId);\n const address = this.stateValue.address;\n\n // const domain = this.getDomain(true);\n\n const url = \"/v1/settle_pnl\";\n\n const timestamp = getTimestamp();\n\n const { message, signatured, domain } =\n await this.walletAdapter.generateSettleMessage({\n settlePnlNonce: nonce,\n timestamp,\n // chainId: this.walletClient.chainId,\n brokerId: this.configStore.get(\"brokerId\"),\n // domain,\n verifyContract:\n this.contractManger.getContractInfoByEnv().verifyContractAddress,\n });\n\n const data = {\n signature: signatured,\n message,\n userAddress: address,\n verifyingContract: domain.verifyingContract,\n };\n\n const signature = await this.signData(url, data);\n\n const res = await this._simpleFetch(url, {\n method: \"POST\",\n body: JSON.stringify(data),\n headers: {\n \"Content-Type\": \"application/json\",\n \"orderly-account-id\": options?.accountId || this.stateValue.accountId!,\n ...signature,\n },\n });\n\n if (res.success) {\n return res;\n } else {\n throw res;\n }\n }\n\n private async signData(url: string, data: any) {\n const payload: MessageFactor = {\n method: \"POST\",\n url,\n data,\n };\n\n const signature = await this.signer.sign(payload, getTimestamp());\n // const signature = await this.signMessageFactor(payload);\n return signature;\n }\n\n async destroyOrderlyKey(): Promise<void> {\n if (!!this.stateValue.address) {\n // const key = await this.keyStore.getOrderlyKey()?.getPublicKey();\n this.keyStore.cleanKey(this.stateValue.address, \"orderlyKey\");\n // TODO: remove sub-account\n }\n\n const nextState = {\n ...this.stateValue,\n status: AccountStatusEnum.DisabledTrading,\n };\n this._ee.emit(EVENT_NAMES.statusChanged, nextState);\n }\n\n async disconnect(): Promise<void> {\n if (!!this.stateValue.address) {\n // this.keyStore.cleanAllKey(this.stateValue.address);\n this.keyStore.removeAddress();\n\n this.additionalInfoRepository.clear(this.stateValue.address);\n }\n\n const nextState = {\n ...this.stateValue,\n status: AccountStatusEnum.NotConnected,\n accountId: undefined,\n userId: undefined,\n address: undefined,\n };\n this._ee.emit(EVENT_NAMES.statusChanged, nextState);\n }\n\n switchChainId(chainId: number | string) {\n chainId = this.parseChainId(chainId);\n\n const nextState: AccountState = {\n ...this.stateValue,\n connectWallet: {\n // ...wallet?.wallet,\n ...this.stateValue.connectWallet!,\n chainId: chainId,\n },\n // revalidating: this._state.validating,\n };\n\n if (this.walletAdapter) {\n this.walletAdapter.chainId = chainId as number;\n }\n\n this._ee.emit(EVENT_NAMES.statusChanged, nextState);\n }\n\n private parseChainId(chainId: string | number): number {\n if (\n typeof chainId === \"string\" &&\n (isHex(chainId) || (chainId.startsWith(\"0x\") && isHex(chainId.slice(2))))\n ) {\n chainId = parseInt(chainId, 16);\n }\n return chainId as number;\n }\n\n private async _checkOrderlyKeyState(accountId: string, orderlyKey: string) {\n const res = await this._simpleFetch(\n `/v1/get_orderly_key?account_id=${accountId}&orderly_key=${orderlyKey}`,\n );\n\n if (res.success) {\n return res.data;\n } else {\n // throw new Error(res.message);\n return null;\n }\n }\n\n get signer(): Signer {\n if (!this._singer) {\n // this._singer = getMockSigner();\n this._singer = new BaseSigner(this.keyStore);\n }\n return this._singer;\n }\n\n get walletAdapter() {\n return this.walletAdapterManager.adapter;\n }\n\n private async _getRegisterationNonce() {\n const res = await this._simpleFetch(\"/v1/registration_nonce\", {\n headers: {\n \"orderly-account-id\": this.stateValue.accountId!,\n },\n });\n\n if (res.success) {\n return {\n nonce: res.data?.registration_nonce,\n timestamp: res.timestamp,\n };\n } else {\n throw new Error(res.message);\n }\n }\n\n private async _getTimestampFromServer() {\n const res = await this._getAccountInfo();\n\n if (res.success) {\n return res.timestamp;\n } else {\n throw new SDKError(\"get timestamp error\");\n }\n }\n\n private async _getAccountInfo(address?: string, chainNamespace?: string) {\n const brokerId = this.configStore.get(\"brokerId\");\n\n const addr = address || this.address;\n const chainType = chainNamespace || this.stateValue.chainNamespace;\n\n const res = await this._simpleFetch(\n `/v1/get_account?address=${addr}&broker_id=${brokerId}&chain_type=${chainType}`,\n );\n return res;\n }\n\n private async _getSettleNonce(accountId?: string) {\n const timestamp = getTimestamp().toString();\n const url = \"/v1/settle_nonce\";\n const message = [timestamp, \"GET\", url].join(\"\");\n\n const signer = this.signer;\n\n const { publicKey, signature } = await signer.signText(message);\n\n const res = await this._simpleFetch(\"/v1/settle_nonce\", {\n headers: {\n \"orderly-account-id\": accountId || this.stateValue.accountId!,\n \"orderly-key\": publicKey,\n \"orderly-timestamp\": timestamp,\n \"orderly-signature\": signature,\n },\n });\n\n if (res.success) {\n return res.data?.settle_nonce;\n } else {\n throw new Error(res.message);\n }\n }\n\n private async _simpleFetch(url: string, init: RequestInit = {}) {\n const requestUrl = `${this.configStore.get<string>(\"apiBaseUrl\")}${url}`;\n\n return fetch(requestUrl, init).then((res) => res.json());\n }\n\n private async _getVaultOperationNonce() {\n const res = await this._simpleFetch(`/v1/public/sv_nonce`);\n if (res.success) {\n return res.data?.nonce;\n } else {\n throw new Error(res.message);\n }\n }\n\n // getDomain(onChainDomain?: boolean): SignatureDomain {\n // if (!this.walletClient) {\n // throw new Error(\"walletClient is undefined\");\n // }\n // const chainId = this.walletClient.chainId;\n // // const {verifyContractAddress} = this.contract.getContractInfoByEnv();\n // return {\n // name: \"Orderly\",\n // version: \"1\",\n // chainId,\n // verifyingContract: onChainDomain\n // ? this.contractManger.getContractInfoByEnv().verifyContractAddress\n // : \"0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC\",\n // };\n // }\n\n getAdditionalInfo(): Record<string, any> | null {\n if (!this.stateValue.address) {\n return null;\n }\n return this.additionalInfoRepository.getAll(this.stateValue.address);\n }\n\n get on() {\n return this._ee.on.bind(this._ee);\n }\n\n get once() {\n return this._ee.once.bind(this._ee);\n }\n\n get off() {\n return this._ee.off.bind(this._ee);\n }\n\n /**\n * Generate DexRequest message for DEX operations\n * @param inputs DexRequest parameters\n * @returns Signed message and domain\n */\n async generateDexRequest(inputs: {\n payloadType: number;\n // nonce: string;\n // receiver: string;\n amount: string;\n vaultId: string;\n token: string;\n domain: SignatureDomain;\n // dexBrokerId: string;\n }) {\n if (!this.walletAdapter || !this.stateValue.address) {\n throw new Error(\"walletAdapter is undefined\");\n }\n const nonce = await this._getVaultOperationNonce();\n const receiver = this.stateValue.address;\n const dexBrokerId = this.configStore.get(\"brokerId\");\n\n const { message, signatured, domain } =\n await this.walletAdapter.generateDexRequestMessage({\n ...inputs,\n nonce,\n receiver,\n dexBrokerId,\n timestamp: getTimestamp(),\n domain: inputs.domain,\n });\n\n return {\n message,\n signatured,\n domain,\n };\n }\n\n /**\n * Signs a GET MessageFactor payload with the current timestamp.\n * @param url The URL for the GET request\n * @returns The signature\n */\n private async signGetMessageFactor(url: string) {\n const payload: MessageFactor = {\n method: \"GET\",\n url,\n };\n return this.signer.sign(payload, getTimestamp());\n }\n}\n","import { Repository } from \"./repository\";\n\nexport class AdditionalInfoRepository {\n constructor(private readonly repository: Repository) {}\n\n save(address: string, data: any) {\n this.repository.save(address, data);\n }\n\n getAll(address: string) {\n return this.repository.getAll(address);\n }\n\n get(address: string, key: string) {\n return this.repository.get(address, key);\n }\n\n clear(address: string) {\n this.repository.clear(address);\n }\n\n remove(address: string, key: string) {\n this.repository.remove(address, key);\n }\n}\n","import {\n ABSTRACT_CHAIN_ID_MAP,\n API,\n ApiError,\n ChainNamespace,\n MaxUint256,\n} from \"@kodiak-finance/orderly-types\";\nimport { Account } from \"./account\";\nimport { ConfigStore } from \"./configStore/configStore\";\nimport { getContractInfoByChainId, IContract } from \"./contract\";\nimport { MessageFactor } from \"./signer\";\nimport { getTimestamp, parseBrokerHash, parseTokenHash } from \"./utils\";\n\nexport class Assets {\n constructor(\n private readonly configStore: ConfigStore,\n private readonly contractManger: IContract,\n private readonly account: Account,\n ) {}\n\n /**\n * Convert non-USDC asset to USDC manually\n */\n async convert(inputs: {\n slippage: number;\n amount: number;\n converted_asset: string; // must NOT be USDC\n }) {\n if (!this.account.walletAdapter) {\n throw new Error(\"walletAdapter is undefined\");\n }\n if (!this.account.stateValue.address) {\n throw new Error(\"account address is required\");\n }\n\n const { slippage, amount, converted_asset } = inputs;\n\n if (!converted_asset || converted_asset.toUpperCase() === \"USDC\") {\n throw new Error(\"converted_asset cannot be USDC\");\n }\n\n const payload = {\n slippage,\n amount,\n converted_asset,\n };\n\n const url = \"/v1/asset/manual_convert\";\n\n const timestamp = getTimestamp().toString();\n const message = [timestamp, \"POST\", url, JSON.stringify(payload)].join(\"\");\n const signer = this.account.signer;\n const { publicKey, signature } = await signer.signText(message);\n\n const res = await this._simpleFetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"orderly-account-id\": this.account.stateValue.accountId!,\n \"orderly-key\": publicKey,\n \"orderly-timestamp\": timestamp,\n \"orderly-signature\": signature,\n },\n body: JSON.stringify(payload),\n });\n\n if (!res.success) {\n throw new ApiError(res.message, res.code);\n }\n\n return res;\n }\n\n async withdraw(inputs: {\n chainId: number;\n token: string;\n amount: string | number;\n allowCrossChainWithdraw: boolean;\n /** orderly withdraw decimals */\n decimals: number;\n }) {\n if (!this.account.walletAdapter) {\n throw new Error(\"walletAdapter is undefined\");\n }\n if (!this.account.stateValue.address) {\n throw new Error(\"account address is required\");\n }\n\n const { chainId, token, allowCrossChainWithdraw, decimals } = inputs;\n let { amount } = inputs;\n if (typeof amount === \"number\") {\n amount = amount.toString();\n }\n\n if (decimals === undefined || decimals === null) {\n throw new Error(\"decimals is required\");\n }\n\n const url = \"/v1/withdraw_request\";\n // get withdrawal nonce\n const nonce = await this.getWithdrawalNonce();\n const timestamp = getTimestamp();\n // const domain = this.account.getDomain(true);\n // const [message, toSignatureMessage] = this._generateWithdrawMessage({\n // chainId,\n // receiver: this.account.stateValue.address!,\n // token,\n // amount: this.account.walletClient.parseUnits(amount),\n // nonce,\n // domain,\n // });\n\n // const EIP_712signatured = await this.account.signTypedData(\n // toSignatureMessage\n // );\n const messageData = {\n receiver: this.account.stateValue.address,\n token,\n brokerId: this.configStore.get(\"brokerId\"),\n amount: this.account.walletAdapter.parseUnits(amount, decimals),\n nonce,\n timestamp,\n // domain,\n verifyContract:\n this.contractManger.getContractInfoByEnv().verifyContractAddress,\n };\n\n const agwGobalAddress = this.account.getAdditionalInfo()?.AGWAddress ?? \"\";\n\n if (ABSTRACT_CHAIN_ID_MAP.has(chainId) && agwGobalAddress) {\n messageData.receiver = agwGobalAddress;\n }\n\n const { message, signatured, domain } =\n await this.account.walletAdapter.generateWithdrawMessage(messageData);\n\n const data = {\n signature: signatured,\n message,\n userAddress: this.account.stateValue.address,\n verifyingContract: domain.verifyingContract,\n };\n\n const payload: MessageFactor = {\n method: \"POST\",\n url,\n data,\n };\n\n if (allowCrossChainWithdraw) {\n // @ts-ignore\n data.message = {\n ...data.message,\n // @ts-ignore\n allowCrossChainWithdraw: allowCrossChainWithdraw,\n };\n }\n\n const signature = await this.account.signer.sign(payload, getTimestamp());\n\n const res = await this._simpleFetch(url, {\n method: \"POST\",\n body: JSON.stringify(data),\n headers: {\n \"Content-Type\": \"application/json\",\n \"orderly-account-id\": this.account.stateValue.accountId!,\n\n ...signature,\n },\n });\n\n if (!res.success) {\n throw new ApiError(res.message, res.code);\n }\n\n return res;\n }\n\n private async getWithdrawalNonce(): Promise<number> {\n const timestamp = getTimestamp().toString();\n const url = \"/v1/withdraw_nonce\";\n const message = [timestamp, \"GET\", url].join(\"\");\n\n const signer = this.account.signer;\n\n const { publicKey, signature } = await signer.signText(message);\n\n const res = await this._simpleFetch(url, {\n headers: {\n \"orderly-account-id\": this.account.stateValue.accountId!,\n \"orderly-key\": publicKey,\n \"orderly-timestamp\": timestamp,\n \"orderly-signature\": signature,\n },\n });\n\n if (res.success) {\n return res.data?.withdraw_nonce;\n } else {\n throw new Error(res.message);\n }\n }\n\n async getNativeBalance(options?: {\n /** token decimals on chain, default is 18 */\n decimals?: number;\n }): Promise<string> {\n if (!this.account.walletAdapter) {\n return \"0\";\n }\n const result = await this.account.walletAdapter.getBalance();\n\n return this.account.walletAdapter?.formatUnits(result, options?.decimals!);\n }\n\n async getBalance(\n /** token address */\n address: string,\n options: {\n /** token decimals on chain, default is 18 */\n decimals?: number;\n },\n ): Promise<string> {\n if (!this.account.walletAdapter) {\n return \"0\";\n }\n const contractInfo = this.contractManger.getContractInfoByEnv();\n\n const contractAddress = getContractInfoByChainId(\n this.account.walletAdapter.chainId,\n contractInfo,\n );\n\n const tokenAddress = address || contractAddress.tokenAddress;\n\n let userAddress = this.account.stateValue.address;\n\n const agwGobalAddress = this.account.getAdditionalInfo()?.AGWAddress ?? \"\";\n\n if (\n ABSTRACT_CHAIN_ID_MAP.has(this.account.walletAdapter.chainId) &&\n agwGobalAddress\n ) {\n userAddress = agwGobalAddress;\n }\n\n const result = await this.account.walletAdapter?.call(\n tokenAddress,\n \"balanceOf\",\n [userAddress],\n {\n abi: contractInfo.usdcAbi,\n },\n );\n\n // return formatByUnits(result, options?.decimals);\n return this.account.walletAdapter?.formatUnits(result, options?.decimals!);\n }\n\n /**\n * @deprecated use getBalance instead, will be removed in the future\n */\n async getBalanceByAddress(\n /** token address */\n address: string,\n options?: {\n /** token decimals on chain, default is 18 */\n decimals?: number;\n },\n ): Promise<string> {\n if (!this.account.walletAdapter) {\n return \"0\";\n }\n const contractAddress = this.contractManger.getContractInfoByEnv();\n\n const result = await this.account.walletAdapter?.call(\n address,\n \"balanceOf\",\n [this.account.stateValue.address],\n {\n abi: contractAddress.erc20Abi,\n },\n );\n return this.account.walletAdapter?.formatUnits?.(\n result,\n options?.decimals!,\n );\n }\n\n async getAllowance(inputs: {\n /** token address */\n address: string;\n /** vault address */\n vaultAddress?: string;\n /** token decimals on chain, default is 18 */\n decimals?: number;\n }) {\n const { address, vaultAddress: inputVaultAddress, decimals } = inputs;\n\n if (!this.account.walletAdapter) {\n return \"0\";\n }\n\n let userAddress = this.account.stateValue.address;\n\n const contractInfo = this.contractManger.getContractInfoByEnv();\n\n const contractAddress = getContractInfoByChainId(\n this.account.walletAdapter.chainId,\n contractInfo,\n );\n const vaultAddress = inputVaultAddress || contractAddress.vaultAddress;\n const tokenAddress = address || contractAddress.tokenAddress;\n\n const agwGobalAddress = this.account.getAdditionalInfo()?.AGWAddress ?? \"\";\n if (\n ABSTRACT_CHAIN_ID_MAP.has(this.account.walletAdapter.chainId) &&\n agwGobalAddress\n ) {\n userAddress = agwGobalAddress;\n }\n\n console.info(\"get allowance\", {\n tokenAddress,\n vaultAddress,\n userAddress,\n });\n\n const result = await this.account.walletAdapter?.call(\n tokenAddress,\n \"allowance\",\n [userAddress, vaultAddress],\n {\n abi: contractInfo.usdcAbi,\n },\n );\n\n return this.account.walletAdapter?.formatUnits(result, decimals!);\n // return result;\n }\n\n async approve(inputs: {\n /** token address */\n address?: string;\n /** vault address */\n vaultAddress?: string;\n /** token amount */\n amount?: string;\n isSetMaxValue?: boolean;\n /** token decimals on chain, default is 18 */\n decimals: number;\n }) {\n const {\n address,\n amount,\n vaultAddress: inputVaultAddress,\n decimals,\n isSetMaxValue,\n } = inputs;\n\n if (!address) {\n throw new Error(\"address is required\");\n }\n\n if (!this.account.walletAdapter) {\n throw new Error(\"walletAdapter is undefined\");\n }\n\n if (decimals === undefined || decimals === null) {\n throw new Error(\"decimals is required\");\n }\n let parsedAmount = MaxUint256.toString();\n if (!isSetMaxValue) {\n parsedAmount =\n typeof amount !== \"undefined\" && amount !== \"\"\n ? this.account.walletAdapter.parseUnits(amount, decimals!)\n : MaxUint256.toString();\n }\n\n const contractInfo = this.contractManger.getContractInfoByEnv();\n\n const contractAddress = getContractInfoByChainId(\n this.account.walletAdapter.chainId,\n contractInfo,\n );\n\n const vaultAddress = inputVaultAddress || contractAddress.vaultAddress;\n const tokenAddress = address || contractAddress.tokenAddress;\n\n console.info(\"approve\", {\n vaultAddress,\n tokenAddress,\n parsedAmount,\n });\n\n const result = await this.account.walletAdapter?.call(\n tokenAddress,\n \"approve\",\n [vaultAddress, parsedAmount],\n {\n abi: contractInfo.usdcAbi,\n },\n );\n return result;\n }\n\n /**\n * @deprecated use approve instead, will be removed in the future\n */\n async approveByAddress(inputs: {\n /** token address */\n address: string;\n /** token amount */\n amount?: string;\n /** token decimals on chain, default is 18 */\n decimals: number;\n }) {\n const { address, amount, decimals } = inputs;\n\n if (!this.account.walletAdapter) {\n throw new Error(\"walletAdapter is undefined\");\n }\n\n if (decimals === undefined || decimals === null) {\n throw new Error(\"decimals is required\");\n }\n\n const contractInfo = this.contractManger.getContractInfoByEnv();\n const contractAddress = getContractInfoByChainId(\n this.account.walletAdapter.chainId,\n contractInfo,\n );\n const vaultAddress = contractAddress.vaultAddress;\n\n const parsedAmount =\n typeof amount !== \"undefined\" && amount !== \"\"\n ? this.account.walletAdapter.parseUnits(amount, decimals)\n : MaxUint256.toString();\n\n const result = await this.account.walletAdapter?.call(\n address,\n \"approve\",\n [vaultAddress, parsedAmount],\n {\n abi: contractInfo.erc20Abi,\n },\n );\n\n return result;\n }\n\n async getDepositFee(inputs: {\n amount: string;\n /** chain info */\n chain: API.NetworkInfos;\n /** token decimals on chain, default is 18 */\n decimals: number;\n token?: string;\n /** token address */\n address?: string;\n }) {\n const {\n amount,\n chain,\n decimals,\n token = \"USDC\",\n address: tokenAddress,\n } = inputs;\n\n if (!this.account.walletAdapter) {\n throw new Error(\"walletAdapter is undefined\");\n }\n\n if (decimals === undefined || decimals === null) {\n throw new Error(\"decimals is required\");\n }\n\n const brokerId = this.configStore.get<string>(\"brokerId\");\n\n if (!brokerId) throw new Error(\"[Assets]:brokerId is required\");\n\n const depositData: {\n accountId?: string;\n brokerHash: string;\n tokenHash: string;\n tokenAmount: string;\n tokenAddress?: string;\n } = {\n accountId: this.account.accountIdHashStr,\n brokerHash: parseBrokerHash(brokerId!),\n tokenHash: parseTokenHash(token),\n tokenAmount: this.account.walletAdapter?.parseUnits(amount, decimals!),\n };\n\n const userAddress = this.account.stateValue.address;\n\n const contractInfo = this.contractManger.getContractInfoByEnv();\n\n const contractAddress = getContractInfoByChainId(\n this.account.walletAdapter.chainId,\n contractInfo,\n );\n\n let vaultAddress = chain.vault_address;\n\n // TODO: get vault address from chain info\n if (this.account.walletAdapter.chainNamespace === ChainNamespace.solana) {\n if (!vaultAddress) {\n vaultAddress = contractInfo.solanaVaultAddress;\n }\n depositData[\"tokenAddress\"] =\n tokenAddress || contractInfo.solanaUSDCAddress;\n }\n\n if (!vaultAddress) {\n vaultAddress = contractAddress.vaultAddress;\n }\n\n console.info(\"get deposit fee\", {\n userAddress,\n vaultAddress,\n depositData,\n });\n\n return await this.account.walletAdapter.callOnChain(\n chain,\n vaultAddress,\n \"getDepositFee\",\n [userAddress, depositData],\n {\n abi: contractInfo.vaultAbi,\n },\n );\n }\n\n /** deposit native token */\n async depositNativeToken(inputs: {\n amount: string;\n fee: bigint;\n /** token decimals on chain, default is 18 */\n decimals: number;\n token?: string;\n }) {\n const { amount, fee, decimals, token } = inputs;\n\n const tokenAmount = this.account.walletAdapter?.parseUnits(\n amount,\n decimals,\n );\n\n // if native token, fee is amount + depositFee\n const value = BigInt(tokenAmount!) + fee;\n\n return this.deposit({\n amount,\n fee: value,\n decimals,\n token,\n });\n }\n\n async deposit(inputs: {\n amount: string;\n fee: bigint;\n /** token decimals on chain, default is 18 */\n decimals: number;\n token?: string;\n /** token address */\n address?: string;\n /** vault address */\n vaultAddress?: string;\n }) {\n const {\n amount,\n fee,\n decimals,\n token = \"USDC\",\n address: tokenAddress,\n vaultAddress: inputVaultAddress,\n } = inputs;\n\n if (!this.account.walletAdapter) {\n throw new Error(\"walletAdapter is undefined\");\n }\n\n if (decimals === undefined || decimals === null) {\n throw new Error(\"decimals is required\");\n }\n\n const brokerId = this.configStore.get<string>(\"brokerId\");\n\n if (!brokerId) throw new Error(\"[Assets]:brokerId is required\");\n\n const contractInfo = this.contractManger.getContractInfoByEnv();\n\n const contractAddress = getContractInfoByChainId(\n this.account.walletAdapter.chainId,\n contractInfo,\n );\n\n const depositData: {\n accountId?: string;\n brokerHash: string;\n tokenHash: string;\n tokenAmount: string;\n tokenAddress?: string;\n } = {\n accountId: this.account.accountIdHashStr,\n brokerHash: parseBrokerHash(brokerId!),\n tokenHash: parseTokenHash(token!),\n tokenAmount: this.account.walletAdapter?.parseUnits(amount, decimals),\n };\n\n const userAddress = this.account.stateValue.address;\n let vaultAddress = inputVaultAddress;\n\n // TODO: get vault address from input params\n if (this.account.walletAdapter.chainNamespace === ChainNamespace.solana) {\n if (!vaultAddress) {\n vaultAddress = contractInfo.solanaVaultAddress;\n }\n depositData[\"tokenAddress\"] =\n tokenAddress || contractInfo.solanaUSDCAddress;\n }\n\n if (!vaultAddress) {\n vaultAddress = contractAddress.vaultAddress;\n }\n\n const agwGobalAddress = this.account.getAdditionalInfo()?.AGWAddress ?? \"\";\n\n let contractMethod = \"deposit\";\n let fromAddress = userAddress;\n let contractData: any = [depositData];\n\n if (\n ABSTRACT_CHAIN_ID_MAP.has(this.account.walletAdapter.chainId) &&\n agwGobalAddress\n ) {\n console.info(\n \"agw address\",\n agwGobalAddress,\n this.account.walletAdapter.chainId,\n );\n contractMethod = \"depositTo\";\n fromAddress = agwGobalAddress;\n contractData = [userAddress, depositData];\n }\n console.info(\"xxx deposit\", {\n vaultAddress,\n fromAddress,\n contractMethod,\n contractData,\n fee,\n });\n\n const result = await this.account.walletAdapter?.sendTransaction(\n vaultAddress,\n contractMethod,\n {\n from: fromAddress!,\n to: vaultAddress,\n data: contractData,\n value: fee,\n },\n {\n abi: contractInfo.vaultAbi,\n },\n );\n return result;\n }\n\n async internalTransfer(inputs: {\n token: string;\n amount: string;\n receiver: string;\n /** orderly token decimals */\n decimals: number;\n }) {\n if (!this.account.walletAdapter) {\n throw new Error(\"walletAdapter is undefined\");\n }\n\n const { token, amount, receiver, decimals } = inputs;\n\n if (decimals === undefined || decimals === null) {\n throw new Error(\"decimals is required\");\n }\n\n const url = \"/v2/internal_transfer\";\n const nonce = await this.getTransferNonce();\n const messageData = {\n receiver,\n token,\n amount: this.account.walletAdapter.parseUnits(amount, decimals),\n nonce,\n verifyContract:\n this.contractManger.getContractInfoByEnv().verifyContractAddress,\n };\n\n const { message, signatured, domain } =\n await this.account.walletAdapter.generateInternalTransferMessage(\n messageData,\n );\n\n const data = {\n signature: signatured,\n message,\n userAddress: this.account.stateValue.address,\n verifyingContract: domain.verifyingContract,\n };\n\n const payload: MessageFactor = {\n method: \"POST\",\n url,\n data,\n };\n\n const signature = await this.account.signer.sign(payload, getTimestamp());\n\n const res = await this._simpleFetch(url, {\n method: \"POST\",\n body: JSON.stringify(data),\n headers: {\n \"Content-Type\": \"application/json\",\n \"orderly-account-id\": this.account.stateValue.accountId!,\n ...signature,\n },\n });\n\n if (!res.success) {\n throw new ApiError(res.message, res.code);\n }\n\n return res;\n }\n\n private async getTransferNonce(): Promise<number> {\n const timestamp = getTimestamp().toString();\n const url = \"/v1/transfer_nonce\";\n const message = [timestamp, \"GET\", url].join(\"\");\n\n const signer = this.account.signer;\n\n const { publicKey, signature } = await signer.signText(message);\n\n const res = await this._simpleFetch(url, {\n headers: {\n \"orderly-account-id\": this.account.stateValue.accountId!,\n \"orderly-key\": publicKey,\n \"orderly-timestamp\": timestamp,\n \"orderly-signature\": signature,\n },\n });\n\n if (res.success) {\n return res.data?.transfer_nonce;\n } else {\n throw new Error(res.message);\n }\n }\n\n private async _simpleFetch(url: string, init: RequestInit = {}) {\n const requestUrl = `${this.configStore.get<string>(\"apiBaseUrl\")}${url}`;\n\n return fetch(requestUrl, init).then((res) => res.json());\n }\n\n get usdcAddress() {\n return this.contractManger.getContractInfoByEnv().usdcAddress;\n }\n}\n","export interface Repository {\n save: (address: string, data: Record<string, any>) => void;\n getAll: (address: string) => Record<string, any>;\n get: (address: string, key: string) => any;\n clear: (address: string) => void;\n update: (address: string, key: string, data: any) => void;\n remove: (address: string, key: string) => void;\n}\n\nexport class LocalStorageRepository implements Repository {\n constructor(private readonly name: string) {}\n /**\n * Save data to local storage. If data with the same key exists, it will be merged.\n * @param data\n */\n save(address: string, data: Record<string, any>) {\n this.run(() => {\n let all = this.getAll(address);\n\n all = { [address]: { ...all, ...data } };\n\n localStorage.setItem(this.name, JSON.stringify(all));\n });\n }\n /**\n * get data from local storage\n * @param key\n * @returns\n */\n get(address: string, key: string) {\n const data = this.getAll(address);\n if (!data) {\n return null;\n }\n return data[key];\n }\n /**\n * get all data from local storage\n * @param address\n * @returns\n */\n getAll(address: string) {\n try {\n const data = localStorage.getItem(this.name);\n if (!data) {\n return null;\n }\n return JSON.parse(data)[address];\n } catch (error) {\n console.error(error);\n return null;\n }\n }\n clear(address: string) {\n this.run(() => {\n const all = this.getAll(address);\n if (!all) {\n return;\n }\n delete all[address];\n localStorage.setItem(this.name, JSON.stringify(all));\n });\n }\n update(address: string, key: string, data: any) {\n this.run(() => {\n const all = this.getAll(address);\n all[key] = data;\n localStorage.setItem(this.name, JSON.stringify(all));\n });\n }\n remove(address: string, key: string) {\n this.run(() => {\n const all = this.getAll(address);\n delete all[key];\n localStorage.setItem(this.name, JSON.stringify(all));\n });\n }\n\n private run(cb: () => void) {\n if (typeof window !== \"undefined\" && typeof localStorage !== \"undefined\") {\n cb();\n }\n }\n}\n","import { WalletAdapter } from \"./wallet/walletAdapter\";\nimport { ChainNamespace} from \"@kodiak-finance/orderly-types\";\nimport { Eip1193Provider } from \"ethers\";\nimport { IContract } from \"./contract\";\n\nclass WalletAdapterManager {\n private _adapter!: WalletAdapter;\n\n constructor(private readonly walletAdapters: WalletAdapter[]) {\n if (!this.walletAdapters.length) {\n throw new Error(\"No wallet adapters provided\");\n }\n }\n\n /**\n * return the current wallet adapter\n */\n get adapter(): WalletAdapter | undefined {\n // if (!this._adapter) {\n // throw new SDKError(\"No wallet adapter found\");\n // }\n return this._adapter;\n }\n\n get isEmpty(): boolean {\n return this.walletAdapters.length === 0;\n }\n\n /**\n * check if the current wallet adapter is exist\n */\n get isAdapterExist(): boolean {\n return !!this._adapter;\n }\n\n /**\n * set the current wallet adapter\n */\n switchWallet(\n chainNamespace: ChainNamespace,\n address: string,\n chainId: number,\n options: {\n provider?: Eip1193Provider;\n contractManager?: IContract;\n }\n ) {\n console.log('-- this.walletAdapters', this.walletAdapters, chainNamespace);\n const adapter = this.walletAdapters.find(\n (adapter) => adapter.chainNamespace === chainNamespace.toUpperCase()\n );\n\n if (!adapter) {\n throw new Error(\"Unsupported chain namespace\");\n }\n\n const config = {\n address,\n chain: { id: chainId },\n provider: options.provider,\n contractManager: options.contractManager,\n };\n\n console.log(\"------+++++---\", config);\n\n /**\n * lifecycle\n */\n if (this._adapter) {\n if (this._adapter === adapter) {\n this._adapter.update(config);\n return;\n } else {\n this._adapter.deactivate();\n }\n }\n this._adapter = adapter;\n this._adapter.active(config);\n }\n\n get chainId() {\n return this.adapter?.chainId;\n }\n}\n\nexport { WalletAdapterManager };\n","export type ConfigKey =\n | \"apiBaseUrl\"\n | \"klineDataUrl\"\n | \"privateWsUrl\"\n | \"publicWsUrl\"\n | \"operatorUrl\"\n | \"domain\"\n | \"brokerId\"\n | \"brokerName\"\n | \"networkId\"\n | \"env\"\n | \"chainNamespace\"\n | \"PROD_URL\"\n | \"orderly_markets\"\n | \"markets\";\n\nexport interface ConfigStore {\n get<T = string>(key: ConfigKey): T;\n getOr<T = string>(key: ConfigKey, defaultValue: T): T;\n set<T>(key: ConfigKey, value: T): void;\n clear(): void;\n}\n","import { ChainNamespace } from \"@kodiak-finance/orderly-types\";\nimport { NetworkId } from \"@kodiak-finance/orderly-types\";\nimport { ConfigKey, ConfigStore } from \"./configStore\";\n\ntype ChainNamespaceType = (typeof ChainNamespace)[keyof typeof ChainNamespace];\n\nexport type URLS = {\n apiBaseUrl: string;\n publicWsUrl: string;\n privateWsUrl: string;\n operatorUrl: Record<ChainNamespaceType, string>;\n};\n\nexport const API_URLS: Record<NetworkId, URLS> = {\n mainnet: {\n apiBaseUrl: \"https://api.orderly.org\",\n publicWsUrl: \"wss://ws-evm.orderly.org\",\n privateWsUrl: \"wss://ws-private-evm.orderly.org\",\n operatorUrl: {\n EVM: \"https://operator-evm.orderly.org\",\n SOL: \"https://operator-solana.orderly.org\",\n },\n },\n testnet: {\n apiBaseUrl: \"https://testnet-api.orderly.org\",\n publicWsUrl: \"wss://testnet-ws-evm.orderly.org\",\n privateWsUrl: \"wss://testnet-ws-private-evm.orderly.org\",\n operatorUrl: {\n EVM: \"https://testnet-operator-evm.orderly.org\",\n SOL: \"https://testnet-operator-sol.orderly.org\",\n },\n },\n};\n\nexport class DefaultConfigStore implements ConfigStore {\n protected map: Map<ConfigKey, any>;\n\n constructor(init: Partial<Record<ConfigKey, any>>) {\n const env = init.env || \"prod\";\n const networkId = (init.networkId || \"mainnet\") as NetworkId;\n const urls = API_URLS[networkId];\n const brokerId = init?.brokerId || \"orderly\";\n const brokerName = init?.brokerName || \"Orderly\";\n const chainNamespace = init?.chainNamespace || ChainNamespace.evm;\n\n this.map = new Map<ConfigKey, any>([\n [\"env\", env],\n [\"brokerId\", brokerId],\n [\"brokerName\", brokerName],\n [\"networkId\", networkId],\n [\"chainNamespace\", chainNamespace],\n [\"apiBaseUrl\", urls[\"apiBaseUrl\"]],\n [\"publicWsUrl\", urls[\"publicWsUrl\"]],\n [\"privateWsUrl\", urls[\"privateWsUrl\"]],\n [\"operatorUrl\", urls[\"operatorUrl\"]],\n ]);\n\n // this.solanaMap = new Map<ConfigKey, any>([]);\n }\n get<T>(key: ConfigKey): T {\n const value = this.map.get(key);\n if (typeof value !== \"object\" || value === null) {\n return value;\n }\n\n return value[this.get(\"chainNamespace\") as ChainNamespace] as T;\n }\n getOr<T>(key: ConfigKey, defaultValue: T): T {\n return this.map.get(key) ?? defaultValue;\n }\n set<T>(key: ConfigKey, value: T): void {\n this.map.set(key, value);\n }\n clear(): void {\n throw new Error(\"Method not implemented.\");\n }\n}\n","import * as ed from \"@noble/ed25519\";\nimport { encode as bs58encode, decode as bs58Decode } from \"bs58\";\nimport { ethers } from \"ethers\";\nimport type { BigNumberish } from \"ethers/src.ts/utils\";\nimport { API, SDKError, ChainNamespace } from \"@kodiak-finance/orderly-types\";\nimport { Account } from \"../account\";\nimport { IContract } from \"../contract\";\nimport { SimpleDI } from \"../di/simpleDI\";\nimport { getTimestamp, SignatureDomain } from \"../utils\";\nimport {\n Message,\n RegisterAccountInputs,\n WithdrawInputs,\n WalletAdapter,\n SettleInputs,\n AddOrderlyKeyInputs,\n DexRequestInputs,\n InternalTransferInputs,\n} from \"./walletAdapter\";\n\nabstract class BaseWalletAdapter<Config> implements WalletAdapter<Config> {\n // private readonly contractManager: ContractManager;\n\n abstract generateRegisterAccountMessage(\n inputs: RegisterAccountInputs,\n ): Promise<Message>;\n\n abstract generateWithdrawMessage(\n inputs: WithdrawInputs,\n ): Promise<Message & { domain: SignatureDomain }>;\n\n abstract generateInternalTransferMessage(\n inputs: InternalTransferInputs,\n ): Promise<Message & { domain: SignatureDomain }>;\n\n abstract generateSettleMessage(\n inputs: SettleInputs,\n ): Promise<Message & { domain: SignatureDomain }>;\n\n abstract generateAddOrderlyKeyMessage(\n inputs: AddOrderlyKeyInputs,\n ): Promise<Message>;\n\n abstract generateDexRequestMessage(\n inputs: DexRequestInputs,\n ): Promise<Message & { domain: SignatureDomain }>;\n\n abstract getBalance(): Promise<bigint>;\n\n abstract chainNamespace: ChainNamespace;\n\n async signMessageByOrderlyKey(payload: any) {\n // signature\n const account = SimpleDI.get<Account>(\"account\");\n const signer = account.signer;\n const signature = await signer.sign(payload, getTimestamp());\n signature[\"orderly-account-id\"] = account.accountId;\n return signature;\n }\n\n abstract call(\n address: string,\n method: string,\n params: any[],\n options?: {\n abi: any;\n },\n ): Promise<any>;\n\n abstract sendTransaction(\n contractAddress: string,\n method: string,\n payload: {\n from: string;\n to?: string;\n data: any[];\n value?: bigint;\n },\n options: {\n abi: any;\n },\n ): Promise<any>;\n\n abstract callOnChain(\n chain: API.NetworkInfos,\n address: string,\n method: string,\n params: any[],\n options: {\n abi: any;\n },\n ): Promise<any>;\n\n get address(): string {\n throw new SDKError(\"Method not implemented.\");\n }\n\n get chainId(): number {\n throw new SDKError(\"Method not implemented.\");\n }\n\n active(config: Config): void {\n throw new SDKError(\"Method not implemented.\");\n }\n\n abstract deactivate(): void;\n\n update(config: Config): void {\n throw new SDKError(\"Method not implemented.\");\n }\n\n generateSecretKey(): string {\n let privateKey, secretKey;\n do {\n privateKey = ed.utils.randomPrivateKey();\n secretKey = bs58encode(privateKey);\n } while (secretKey.length !== 44);\n\n return secretKey;\n }\n\n parseUnits(amount: string, decimals: number) {\n return ethers.parseUnits(amount, decimals).toString();\n }\n\n formatUnits(amount: BigNumberish, decimals: number) {\n return ethers.formatUnits(amount, decimals);\n }\n\n on(eventName: string, listener: (...args: any[]) => void): void {\n throw new SDKError(\"Method not implemented.\");\n }\n\n off(eventName: string, listener: (...args: any[]) => void): void {\n throw new SDKError(\"Method not implemented.\");\n }\n\n abstract pollTransactionReceiptWithBackoff(\n txHash: string,\n baseInterval?: number,\n maxInterval?: number,\n maxRetries?: number,\n ): Promise<any>;\n}\n\nexport { BaseWalletAdapter };\n","export {\n type IWalletAdapter as WalletAdapter,\n type getWalletAdapterFunc,\n type WalletAdapterOptions,\n} from \"./adapter\";\n// export { Web3WalletAdapter } from \"./web3Adapter\";\nexport { EtherAdapter } from \"./etherAdapter\";\n","import { BrowserProvider, ethers, toNumber } from \"ethers\";\nimport { DecodedError, ErrorDecoder } from \"ethers-decode-error\";\nimport { API } from \"@kodiak-finance/orderly-types\";\nimport { IWalletAdapter, WalletAdapterOptions } from \"./adapter\";\n\nconst errorDecoder = ErrorDecoder.create();\n\nexport interface EtherAdapterOptions {\n provider: any;\n wallet: {\n name?: string;\n };\n // getAddresses?: (address: string) => string;\n chain: { id: number };\n}\n\nexport class EtherAdapter implements IWalletAdapter {\n private provider?: BrowserProvider;\n private _chainId: number;\n private _address: string;\n constructor(options: WalletAdapterOptions) {\n // super();\n\n // this._chainId = parseInt(options.chain.id, 16);\n this._chainId = options.chain.id;\n this.provider = new BrowserProvider(options.provider, \"any\");\n this._address = options.address;\n }\n\n parseUnits(amount: string, decimals: number) {\n return ethers.parseUnits(amount, decimals).toString();\n }\n formatUnits(amount: string, decimals: number) {\n return ethers.formatUnits(amount, decimals);\n }\n getBalance(userAddress: string): Promise<any> {\n // return contract.balanceOf(userAddress);\n return this.provider!.getBalance(userAddress).then(\n (res) => {\n return res;\n },\n (error) => {},\n );\n }\n\n deposit(from: string, to: string, amount: string): Promise<any> {\n throw new Error(\"Method not implemented.\");\n }\n\n async call(\n address: string,\n method: string,\n params: any[],\n options: {\n abi: any;\n },\n ): Promise<any> {\n const singer = await this.provider?.getSigner();\n const contract = new ethers.Contract(address, options.abi, singer);\n\n return contract[method].apply(null, params).catch(async (error) => {\n const parsedEthersError = await parseError(error);\n throw parsedEthersError;\n });\n }\n\n async callOnChain(\n chain: API.NetworkInfos,\n address: string,\n method: string,\n params: any[],\n options: {\n abi: any;\n },\n ): Promise<any> {\n // const singer = await this.provider?.getSigner();\n // const contract = new ethers.Contract(address, options.abi, singer);\n\n const provider = new ethers.JsonRpcProvider(chain.public_rpc_url);\n\n const contract = new ethers.Contract(address, options.abi, provider);\n\n return contract[method].apply(null, params).catch(async (error) => {\n const parsedEthersError = await parseError(error);\n throw parsedEthersError;\n });\n }\n\n get chainId(): number {\n return this._chainId;\n }\n\n set chainId(chainId: number) {\n this._chainId = chainId;\n }\n\n get addresses(): string {\n return this._address;\n }\n\n async send(\n method: string,\n params: Array<any> | Record<string, any>,\n ): Promise<any> {\n return await this.provider?.send(method, params);\n }\n\n async sendTransaction(\n contractAddress: string,\n method: string,\n payload: {\n from: string;\n to?: string;\n data: any[];\n value?: bigint;\n },\n options: {\n abi: any;\n },\n ): Promise<ethers.TransactionResponse> {\n const singer = await this.provider?.getSigner();\n if (!singer) {\n throw new Error(\"singer is not exist\");\n }\n\n const contract = new ethers.Contract(\n contractAddress,\n options.abi,\n this.provider,\n );\n\n // contract.interface.getAbiCoder().encode(tx.data);\n const encodeFunctionData = contract.interface.encodeFunctionData(\n method,\n payload.data,\n );\n\n const tx: ethers.TransactionRequest = {\n from: payload.from,\n to: payload.to,\n data: encodeFunctionData,\n value: payload.value,\n };\n\n // const gas = await this.estimateGas(tx);\n\n // tx.gasLimit = BigInt(Math.ceil(gas * 1.2));\n\n try {\n const result = await singer.sendTransaction(tx);\n\n return result;\n } catch (error) {\n const parsedEthersError = await parseError(error);\n throw parsedEthersError;\n }\n }\n\n async getTransactionRecipect(txHash: string) {\n await this.provider!.getTransactionReceipt(txHash);\n }\n\n async pollTransactionReceiptWithBackoff(\n txHash: string,\n baseInterval = 1000,\n maxInterval = 6000,\n maxRetries = 30,\n ) {\n let interval = baseInterval;\n let retries = 0;\n\n while (retries < maxRetries) {\n try {\n const receipt = await this.provider!.getTransactionReceipt(txHash);\n if (receipt) {\n // completed, get receipt\n return receipt;\n }\n } catch (error) {\n // waiting\n }\n\n await new Promise((resolve) => setTimeout(resolve, interval));\n\n interval = Math.min(interval * 2, maxInterval);\n retries++;\n }\n\n throw new Error(\"Transaction did not complete after maximum retries.\");\n }\n\n private async estimateGas(tx: ethers.TransactionRequest): Promise<number> {\n const gas = await this.provider!.estimateGas(tx);\n\n return toNumber(gas);\n }\n\n async signTypedData(address: string, data: any) {\n return await this.provider?.send(\"eth_signTypedData_v4\", [address, data]);\n }\n\n async verify(\n data: { domain: any; message: any; types: any },\n signature: string,\n ) {\n const { domain, types, message } = data;\n\n const recovered = ethers.verifyTypedData(domain, types, message, signature);\n }\n\n on(eventName: any, listener: any): void {\n this.provider?.on(eventName, listener);\n }\n\n off(eventName: any, listener: any): void {\n this.provider?.off(eventName, listener);\n }\n\n getContract(address: string, abi: any): ethers.Contract {\n const contract = new ethers.Contract(address, abi, this.provider);\n return contract;\n }\n}\n\nasync function parseError(rawError: any): Promise<DecodedError> {\n const error: DecodedError = await errorDecoder.decode(rawError);\n return error;\n}\n"],"mappings":"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","names":["len","i","len2","Buffer","i","byteLength","process","browserModule","e","noop","browser","_browser","emitWarning","binding","_binding","exit","pid","features","kill","dlopen","uptime","memoryUsage","uvCounters","platform","arch","execPath","execArgv","api","nextTick","title","env","environment","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","cwd","chdir","umask","Object","_global","i","j","C","G","P","bs58encode","bs58Decode","address","parseUnits","import_buffer","default","AbiCoder","keccak256","ChainNamespace","DEFAUL_ORDERLY_KEY_SCOPE","ABSTRACT_CHAIN_ID_MAP","ABSTRACT_CHAIN_ID_MAP","adapter","ChainNamespace","AbiCoder","keccak256","err","subAccount","DEFAUL_ORDERLY_KEY_SCOPE","ChainNamespace","import_bs58","SDKError","SDKError","bs58encode","ethers"]}
|