diff --git a/README.md b/README.md
index 9e99cc7..cd22208 100644
--- a/README.md
+++ b/README.md
@@ -30,7 +30,7 @@ This SDK provides a simple interface for interacting with the Hedera Hashgraph u
No installation needed. Reference the script directly in your HTML:
```html
-
+
```
### For NPM projects (ESM)
diff --git a/current-version.txt b/current-version.txt
index 3b843f9..0890032 100644
--- a/current-version.txt
+++ b/current-version.txt
@@ -1 +1 @@
-0.0.8084872
\ No newline at end of file
+0.0.9196067
\ No newline at end of file
diff --git a/dist/es/hashinal-wc.es.js b/dist/es/hashinal-wc.es.js
index fd8af53..d6c80f7 100644
--- a/dist/es/hashinal-wc.es.js
+++ b/dist/es/hashinal-wc.es.js
@@ -1,5 +1,5 @@
import * as HashgraphSDK from "@hashgraph/sdk";
-import { LedgerId, AccountId, Client, AccountBalanceQuery, AccountInfoQuery, AccountRecordsQuery, SignerSignature, PublicKey, TransactionId, Transaction, TransactionResponse, TransactionRecord, AccountBalance, AccountInfo, TransactionReceiptQuery, TransactionReceipt, TransactionRecordQuery, Query, TopicMessageSubmitTransaction, TopicId, TransferTransaction, Hbar, ContractExecuteTransaction, ContractId, TopicCreateTransaction, PrivateKey, TokenCreateTransaction, TokenType, TokenSupplyType, TokenMintTransaction, TokenId, AccountCreateTransaction, TokenAssociateTransaction, TokenDissociateTransaction, AccountUpdateTransaction, AccountAllowanceApproveTransaction } from "@hashgraph/sdk";
+import { LedgerId, AccountId, Client, AccountBalanceQuery, AccountInfoQuery, AccountRecordsQuery, SignerSignature, PublicKey, TransactionId, Transaction, TransactionResponse, TransactionRecord, AccountBalance, AccountInfo, TransactionReceiptQuery, TransactionReceipt, TransactionRecordQuery, Query, TopicMessageSubmitTransaction, TopicId, TransferTransaction, Hbar, ContractExecuteTransaction, ContractId, PrivateKey, TopicUpdateTransaction, TopicCreateTransaction, CustomFixedFee, TokenCreateTransaction, TokenType, TokenSupplyType, TokenMintTransaction, TokenId, AccountCreateTransaction, TokenAssociateTransaction, TokenDissociateTransaction, AccountUpdateTransaction, AccountAllowanceApproveTransaction } from "@hashgraph/sdk";
import { proto } from "@hashgraph/proto";
import { Core, RELAYER_DEFAULT_PROTOCOL, TRANSPORT_TYPES, EVENT_CLIENT_SESSION_TRACES, EVENT_CLIENT_SESSION_ERRORS, EVENT_CLIENT_AUTHENTICATE_TRACES, EVENT_CLIENT_AUTHENTICATE_ERRORS, EVENT_CLIENT_PAIRING_ERRORS, EVENT_CLIENT_PAIRING_TRACES, RELAYER_EVENTS, VERIFY_SERVER, EXPIRER_EVENTS, PAIRING_EVENTS, Store } from "@walletconnect/core";
import { getAppMetadata, getInternalError, calcExpiry, createDelayedPromise, engineEvent, getSdkError, getDeepLink, handleDeeplinkRedirect, isSessionCompatible, hashKey, parseChainId, createEncodedRecap, getRecapFromResources, mergeEncodedRecaps, TYPE_2, BASE64URL, getLinkModeURL, validateSignedCacao, getNamespacedDidChainId, getDidAddress, getMethodsFromRecap, getChainsFromRecap, buildNamespacesFromAuth, formatMessage, BASE64, hashMessage, isExpired, MemoryStore, isValidParams, isUndefined, isValidRelays, isValidObject, isValidRequiredNamespaces, isValidNamespaces, isConformingNamespaces, isValidString, isValidErrorReason, isValidRelay, isValidController, isValidNamespacesChainId, isValidRequest, isValidNamespacesRequest, isValidRequestExpiry, isValidResponse, isValidEvent, isValidNamespacesEvent, getSearchParamFromURL, isTestRun, isReactNative, parseExpirerTarget, isValidId, TYPE_1 } from "@walletconnect/utils";
@@ -5960,18 +5960,132 @@ class HashinalsWalletConnectSDK {
network
};
}
- async createTopic(memo, adminKey, submitKey) {
+ async generatePrivateAndPublicKey() {
this.ensureInitialized();
+ const privateKey = await PrivateKey.generateED25519Async();
+ const publicKey = privateKey.publicKey;
+ return {
+ privateKey: privateKey.toString(),
+ publicKey: publicKey.toString()
+ };
+ }
+ async updateTopic(topicId, memo, adminKey) {
+ this.ensureInitialized();
+ if (!topicId) {
+ throw new Error("Topic ID is required");
+ }
+ if (!adminKey) {
+ throw new Error("Admin key is required for topic update");
+ }
+ const accountInfo = this.getAccountInfo();
+ if (!(accountInfo == null ? void 0 : accountInfo.accountId)) {
+ throw new Error("No connected account found");
+ }
+ const signer = this.dAppConnector.signers.find(
+ (signer_) => signer_.getAccountId().toString() === accountInfo.accountId
+ );
+ if (!signer) {
+ throw new Error("No signer found for the connected account");
+ }
+ if (signer.getLedgerId().toString() !== this.network.toString()) {
+ throw new Error("Network mismatch between signer and SDK configuration");
+ }
+ let transaction = new TopicUpdateTransaction().setTopicId(TopicId.fromString(topicId)).setTopicMemo(memo || "");
+ let adminPrivateKey = null;
+ try {
+ adminPrivateKey = PrivateKey.fromString(adminKey);
+ transaction.setAdminKey(adminPrivateKey.publicKey);
+ this.logger.debug("Admin key set with private key:", adminPrivateKey.publicKey.toString());
+ } catch (e) {
+ this.logger.error("Invalid admin key provided:", e);
+ throw new Error("Invalid admin key format: Admin key must be a valid private key for topic update");
+ }
+ transaction = await transaction.freezeWithSigner(signer);
+ this.logger.debug("Transaction frozen with signer:", signer.getAccountId().toString());
+ if (adminPrivateKey) {
+ transaction = await transaction.sign(adminPrivateKey);
+ this.logger.debug("Transaction signed with admin private key");
+ }
+ const { result, error } = await this.executeTransactionWithErrorHandling(transaction, true);
+ if (error) {
+ throw new Error(`Failed to update topic: ${error}`);
+ }
+ this.logger.debug("Topic updated successfully with ID:", result.topicId.toString());
+ return result.topicId.toString();
+ }
+ async createTopic(memo, adminKey, customFees) {
+ this.ensureInitialized();
+ const accountInfo = this.getAccountInfo();
+ if (!(accountInfo == null ? void 0 : accountInfo.accountId)) {
+ throw new Error("No connected account found");
+ }
+ const signer = this.dAppConnector.signers.find(
+ (signer_) => signer_.getAccountId().toString() === accountInfo.accountId
+ );
+ if (!signer) {
+ throw new Error("No signer found for the connected account");
+ }
+ if (signer.getLedgerId().toString() !== this.network.toString()) {
+ throw new Error("Network mismatch between signer and SDK configuration");
+ }
let transaction = new TopicCreateTransaction().setTopicMemo(memo || "");
+ const parseKey = (key, keyType) => {
+ try {
+ const privateKey = PrivateKey.fromString(key);
+ this.logger.debug(`Parsed ${keyType} key as private key:`, privateKey.toString());
+ return privateKey.publicKey;
+ } catch (privateError) {
+ this.logger.debug(`Failed to parse ${keyType} key as private key:`, privateError);
+ try {
+ const publicKey = PublicKey.fromString(key);
+ this.logger.debug(`Parsed ${keyType} key as public key:`, publicKey.toString());
+ return publicKey;
+ } catch (publicError) {
+ this.logger.error(`Invalid ${keyType} key format:`, publicError);
+ throw new Error(`Invalid ${keyType} key format: ${publicError.message}`);
+ }
+ }
+ };
+ let adminPrivateKey = null;
if (adminKey) {
- const adminWithPrivateKey = PrivateKey.fromString(adminKey);
- transaction.setAdminKey(adminWithPrivateKey.publicKey);
- transaction = await transaction.sign(adminWithPrivateKey);
+ try {
+ adminPrivateKey = PrivateKey.fromString(adminKey);
+ transaction.setAdminKey(adminPrivateKey.publicKey);
+ transaction.setFeeScheduleKey(adminPrivateKey.publicKey);
+ this.logger.debug("Admin key and feeScheduleKey set with private key:", adminPrivateKey.publicKey.toString());
+ } catch {
+ const adminPublicKey = parseKey(adminKey, "admin");
+ transaction.setAdminKey(adminPublicKey);
+ transaction.setFeeScheduleKey(adminPublicKey);
+ this.logger.debug("Admin key and feeScheduleKey set with public key:", adminPublicKey.toString());
+ }
}
- if (submitKey) {
- transaction.setSubmitKey(PrivateKey.fromString(submitKey).publicKey);
+ if (customFees && customFees.length > 0) {
+ const hederaCustomFees = customFees.map((fee) => {
+ if (!fee.denominatingTokenId || !fee.amount || !fee.collectorAccountId) {
+ throw new Error("Invalid custom fee: denominatingTokenId, amount, and collectorAccountId are required");
+ }
+ const feeAmount = parseFloat(fee.amount);
+ if (isNaN(feeAmount) || feeAmount <= 0) {
+ throw new Error("Invalid amount: must be a positive number");
+ }
+ const customFee = new CustomFixedFee().setAmount(feeAmount).setFeeCollectorAccountId(fee.collectorAccountId).setDenominatingTokenId(fee.denominatingTokenId);
+ return customFee;
+ });
+ transaction.setCustomFees(hederaCustomFees);
+ this.logger.debug("Custom fixed fees set:", hederaCustomFees);
}
- const receipt = await this.executeTransaction(transaction);
+ transaction = await transaction.freezeWithSigner(signer);
+ this.logger.debug("Transaction frozen with signer:", signer.getAccountId().toString());
+ if (adminPrivateKey) {
+ transaction = await transaction.sign(adminPrivateKey);
+ this.logger.debug("Transaction signed with admin private key");
+ }
+ const receipt = await this.executeTransaction(transaction, true);
+ if (!receipt.topicId) {
+ throw new Error("Failed to create topic: No topic ID in receipt");
+ }
+ this.logger.debug("Topic created successfully with ID:", receipt.topicId.toString());
return receipt.topicId.toString();
}
async createToken(name, symbol, initialSupply, decimals, treasuryAccountId, adminKey, supplyKey) {
@@ -5992,6 +6106,29 @@ class HashinalsWalletConnectSDK {
let transaction = await new TokenMintTransaction().setTokenId(tokenId).setMetadata([Buffer$1.from(metadata, "utf-8")]).sign(supplyKey);
return this.executeTransaction(transaction);
}
+ async getTopicInfo(topicId, network) {
+ this.ensureInitialized();
+ try {
+ if (!topicId) {
+ throw new Error("Topic ID is required");
+ }
+ const networkPrefix = network || this.getNetworkPrefix();
+ const baseUrl = `https://${networkPrefix}.mirrornode.hedera.com`;
+ const url = `${baseUrl}/api/v1/topics/${topicId}`;
+ const response = await fetchWithRetry()(url);
+ if (!response.ok) {
+ throw new Error(
+ `Failed to make request to mirror node for topic info: ${response.status}`
+ );
+ }
+ const data = await response.json();
+ this.logger.info("Topic info retrieved:", data);
+ return data;
+ } catch (error) {
+ this.logger.error("Error fetching topic info:", error);
+ throw new Error(`Failed to retrieve topic info: ${error.message}`);
+ }
+ }
async getMessages(topicId, lastTimestamp, disableTimestampFilter = false, network) {
var _a, _b;
const networkPrefix = network || this.getNetworkPrefix();
diff --git a/dist/es/hashinal-wc.es.js.map b/dist/es/hashinal-wc.es.js.map
index d351893..3d5f889 100644
--- a/dist/es/hashinal-wc.es.js.map
+++ b/dist/es/hashinal-wc.es.js.map
@@ -1 +1 @@
-{"version":3,"file":"hashinal-wc.es.js","sources":["../../node_modules/vite-plugin-node-polyfills/shims/buffer/dist/index.js","../../node_modules/@hashgraph/hedera-wallet-connect/dist/lib/shared/chainIds.js","../../node_modules/@hashgraph/hedera-wallet-connect/dist/lib/shared/events.js","../../node_modules/@hashgraph/hedera-wallet-connect/dist/lib/shared/methods.js","../../node_modules/@hashgraph/hedera-wallet-connect/dist/lib/shared/utils.js","../../node_modules/@hashgraph/hedera-wallet-connect/dist/lib/shared/extensionController.js","../../node_modules/quick-format-unescaped/index.js","../../node_modules/@walletconnect/logger/node_modules/pino/browser.js","../../node_modules/@walletconnect/logger/dist/index.es.js","../../node_modules/events/events.js","../../node_modules/@walletconnect/jsonrpc-utils/dist/esm/constants.js","../../node_modules/@walletconnect/jsonrpc-utils/dist/esm/error.js","../../node_modules/tslib/tslib.es6.js","../../node_modules/@walletconnect/environment/dist/cjs/crypto.js","../../node_modules/vite-plugin-node-polyfills/shims/process/dist/index.js","../../node_modules/@walletconnect/environment/dist/cjs/env.js","../../node_modules/@walletconnect/environment/dist/cjs/index.js","../../node_modules/@walletconnect/jsonrpc-utils/dist/esm/format.js","../../node_modules/@walletconnect/jsonrpc-utils/dist/esm/validators.js","../../node_modules/@walletconnect/time/dist/cjs/utils/delay.js","../../node_modules/@walletconnect/time/dist/cjs/constants/misc.js","../../node_modules/@walletconnect/time/dist/cjs/constants/time.js","../../node_modules/@walletconnect/time/dist/cjs/constants/index.js","../../node_modules/@walletconnect/time/dist/cjs/utils/convert.js","../../node_modules/@walletconnect/time/dist/cjs/utils/index.js","../../node_modules/@walletconnect/time/dist/cjs/watch.js","../../node_modules/@walletconnect/time/dist/cjs/types/watch.js","../../node_modules/@walletconnect/time/dist/cjs/types/index.js","../../node_modules/@walletconnect/time/dist/cjs/index.js","../../node_modules/vite-plugin-node-polyfills/shims/global/dist/index.js","../../node_modules/@walletconnect/sign-client/node_modules/@walletconnect/types/dist/index.es.js","../../node_modules/@walletconnect/sign-client/dist/index.es.js","../../node_modules/@hashgraph/hedera-wallet-connect/dist/lib/shared/logger.js","../../node_modules/@hashgraph/hedera-wallet-connect/dist/lib/dapp/SessionNotFoundError.js","../../node_modules/@hashgraph/hedera-wallet-connect/dist/lib/dapp/DAppSigner.js","../../node_modules/@hashgraph/hedera-wallet-connect/dist/lib/dapp/index.js","../../src/logger/logger.ts","../../src/utils/retry.ts","../../src/types.ts","../../src/index.ts"],"sourcesContent":["var buffer = {};\n\nvar base64Js = {};\n\nbase64Js.byteLength = byteLength;\nbase64Js.toByteArray = toByteArray;\nbase64Js.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\nvar ieee754 = {};\n\n/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\n\nieee754.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\nieee754.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/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n(function (exports) {\n\n\tconst base64 = base64Js;\n\tconst ieee754$1 = ieee754;\n\tconst customInspectSymbol =\n\t (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n\t ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n\t : null;\n\n\texports.Buffer = Buffer;\n\texports.SlowBuffer = SlowBuffer;\n\texports.INSPECT_MAX_BYTES = 50;\n\n\tconst K_MAX_LENGTH = 0x7fffffff;\n\texports.kMaxLength = K_MAX_LENGTH;\n\tconst { Uint8Array: GlobalUint8Array, ArrayBuffer: GlobalArrayBuffer, SharedArrayBuffer: GlobalSharedArrayBuffer } = globalThis;\n\n\t/**\n\t * If `Buffer.TYPED_ARRAY_SUPPORT`:\n\t * === true Use Uint8Array implementation (fastest)\n\t * === false Print warning and recommend using `buffer` v4.x which has an Object\n\t * implementation (most compatible, even IE6)\n\t *\n\t * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n\t * Opera 11.6+, iOS 4.2+.\n\t *\n\t * We report that the browser does not support typed arrays if the are not subclassable\n\t * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n\t * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n\t * for __proto__ and has a buggy typed array implementation.\n\t */\n\tBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport();\n\n\tif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n\t typeof console.error === 'function') {\n\t console.error(\n\t 'This browser lacks typed array (Uint8Array) support which is required by ' +\n\t '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n\t );\n\t}\n\n\tfunction typedArraySupport () {\n\t // Can typed array instances can be augmented?\n\t try {\n\t const arr = new GlobalUint8Array(1);\n\t const proto = { foo: function () { return 42 } };\n\t Object.setPrototypeOf(proto, GlobalUint8Array.prototype);\n\t Object.setPrototypeOf(arr, proto);\n\t return arr.foo() === 42\n\t } catch (e) {\n\t return false\n\t }\n\t}\n\n\tObject.defineProperty(Buffer.prototype, 'parent', {\n\t enumerable: true,\n\t get: function () {\n\t if (!Buffer.isBuffer(this)) return undefined\n\t return this.buffer\n\t }\n\t});\n\n\tObject.defineProperty(Buffer.prototype, 'offset', {\n\t enumerable: true,\n\t get: function () {\n\t if (!Buffer.isBuffer(this)) return undefined\n\t return this.byteOffset\n\t }\n\t});\n\n\tfunction createBuffer (length) {\n\t if (length > K_MAX_LENGTH) {\n\t throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n\t }\n\t // Return an augmented `Uint8Array` instance\n\t const buf = new GlobalUint8Array(length);\n\t Object.setPrototypeOf(buf, Buffer.prototype);\n\t return buf\n\t}\n\n\t/**\n\t * The Buffer constructor returns instances of `Uint8Array` that have their\n\t * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n\t * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n\t * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n\t * returns a single octet.\n\t *\n\t * The `Uint8Array` prototype remains unmodified.\n\t */\n\n\tfunction Buffer (arg, encodingOrOffset, length) {\n\t // Common case.\n\t if (typeof arg === 'number') {\n\t if (typeof encodingOrOffset === 'string') {\n\t throw new TypeError(\n\t 'The \"string\" argument must be of type string. Received type number'\n\t )\n\t }\n\t return allocUnsafe(arg)\n\t }\n\t return from(arg, encodingOrOffset, length)\n\t}\n\n\tBuffer.poolSize = 8192; // not used by this implementation\n\n\tfunction from (value, encodingOrOffset, length) {\n\t if (typeof value === 'string') {\n\t return fromString(value, encodingOrOffset)\n\t }\n\n\t if (GlobalArrayBuffer.isView(value)) {\n\t return fromArrayView(value)\n\t }\n\n\t if (value == null) {\n\t throw new TypeError(\n\t 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n\t 'or Array-like Object. Received type ' + (typeof value)\n\t )\n\t }\n\n\t if (isInstance(value, GlobalArrayBuffer) ||\n\t (value && isInstance(value.buffer, GlobalArrayBuffer))) {\n\t return fromArrayBuffer(value, encodingOrOffset, length)\n\t }\n\n\t if (typeof GlobalSharedArrayBuffer !== 'undefined' &&\n\t (isInstance(value, GlobalSharedArrayBuffer) ||\n\t (value && isInstance(value.buffer, GlobalSharedArrayBuffer)))) {\n\t return fromArrayBuffer(value, encodingOrOffset, length)\n\t }\n\n\t if (typeof value === 'number') {\n\t throw new TypeError(\n\t 'The \"value\" argument must not be of type number. Received type number'\n\t )\n\t }\n\n\t const valueOf = value.valueOf && value.valueOf();\n\t if (valueOf != null && valueOf !== value) {\n\t return Buffer.from(valueOf, encodingOrOffset, length)\n\t }\n\n\t const b = fromObject(value);\n\t if (b) return b\n\n\t if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n\t typeof value[Symbol.toPrimitive] === 'function') {\n\t return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n\t }\n\n\t throw new TypeError(\n\t 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n\t 'or Array-like Object. Received type ' + (typeof value)\n\t )\n\t}\n\n\t/**\n\t * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n\t * if value is a number.\n\t * Buffer.from(str[, encoding])\n\t * Buffer.from(array)\n\t * Buffer.from(buffer)\n\t * Buffer.from(arrayBuffer[, byteOffset[, length]])\n\t **/\n\tBuffer.from = function (value, encodingOrOffset, length) {\n\t return from(value, encodingOrOffset, length)\n\t};\n\n\t// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n\t// https://github.com/feross/buffer/pull/148\n\tObject.setPrototypeOf(Buffer.prototype, GlobalUint8Array.prototype);\n\tObject.setPrototypeOf(Buffer, GlobalUint8Array);\n\n\tfunction assertSize (size) {\n\t if (typeof size !== 'number') {\n\t throw new TypeError('\"size\" argument must be of type number')\n\t } else if (size < 0) {\n\t throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n\t }\n\t}\n\n\tfunction alloc (size, fill, encoding) {\n\t assertSize(size);\n\t if (size <= 0) {\n\t return createBuffer(size)\n\t }\n\t if (fill !== undefined) {\n\t // Only pay attention to encoding if it's a string. This\n\t // prevents accidentally sending in a number that would\n\t // be interpreted as a start offset.\n\t return typeof encoding === 'string'\n\t ? createBuffer(size).fill(fill, encoding)\n\t : createBuffer(size).fill(fill)\n\t }\n\t return createBuffer(size)\n\t}\n\n\t/**\n\t * Creates a new filled Buffer instance.\n\t * alloc(size[, fill[, encoding]])\n\t **/\n\tBuffer.alloc = function (size, fill, encoding) {\n\t return alloc(size, fill, encoding)\n\t};\n\n\tfunction allocUnsafe (size) {\n\t assertSize(size);\n\t return createBuffer(size < 0 ? 0 : checked(size) | 0)\n\t}\n\n\t/**\n\t * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n\t * */\n\tBuffer.allocUnsafe = function (size) {\n\t return allocUnsafe(size)\n\t};\n\t/**\n\t * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n\t */\n\tBuffer.allocUnsafeSlow = function (size) {\n\t return allocUnsafe(size)\n\t};\n\n\tfunction fromString (string, encoding) {\n\t if (typeof encoding !== 'string' || encoding === '') {\n\t encoding = 'utf8';\n\t }\n\n\t if (!Buffer.isEncoding(encoding)) {\n\t throw new TypeError('Unknown encoding: ' + encoding)\n\t }\n\n\t const length = byteLength(string, encoding) | 0;\n\t let buf = createBuffer(length);\n\n\t const actual = buf.write(string, encoding);\n\n\t if (actual !== length) {\n\t // Writing a hex string, for example, that contains invalid characters will\n\t // cause everything after the first invalid character to be ignored. (e.g.\n\t // 'abxxcd' will be treated as 'ab')\n\t buf = buf.slice(0, actual);\n\t }\n\n\t return buf\n\t}\n\n\tfunction fromArrayLike (array) {\n\t const length = array.length < 0 ? 0 : checked(array.length) | 0;\n\t const buf = createBuffer(length);\n\t for (let i = 0; i < length; i += 1) {\n\t buf[i] = array[i] & 255;\n\t }\n\t return buf\n\t}\n\n\tfunction fromArrayView (arrayView) {\n\t if (isInstance(arrayView, GlobalUint8Array)) {\n\t const copy = new GlobalUint8Array(arrayView);\n\t return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n\t }\n\t return fromArrayLike(arrayView)\n\t}\n\n\tfunction fromArrayBuffer (array, byteOffset, length) {\n\t if (byteOffset < 0 || array.byteLength < byteOffset) {\n\t throw new RangeError('\"offset\" is outside of buffer bounds')\n\t }\n\n\t if (array.byteLength < byteOffset + (length || 0)) {\n\t throw new RangeError('\"length\" is outside of buffer bounds')\n\t }\n\n\t let buf;\n\t if (byteOffset === undefined && length === undefined) {\n\t buf = new GlobalUint8Array(array);\n\t } else if (length === undefined) {\n\t buf = new GlobalUint8Array(array, byteOffset);\n\t } else {\n\t buf = new GlobalUint8Array(array, byteOffset, length);\n\t }\n\n\t // Return an augmented `Uint8Array` instance\n\t Object.setPrototypeOf(buf, Buffer.prototype);\n\n\t return buf\n\t}\n\n\tfunction fromObject (obj) {\n\t if (Buffer.isBuffer(obj)) {\n\t const len = checked(obj.length) | 0;\n\t const buf = createBuffer(len);\n\n\t if (buf.length === 0) {\n\t return buf\n\t }\n\n\t obj.copy(buf, 0, 0, len);\n\t return buf\n\t }\n\n\t if (obj.length !== undefined) {\n\t if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n\t return createBuffer(0)\n\t }\n\t return fromArrayLike(obj)\n\t }\n\n\t if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n\t return fromArrayLike(obj.data)\n\t }\n\t}\n\n\tfunction checked (length) {\n\t // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n\t // length is NaN (which is otherwise coerced to zero.)\n\t if (length >= K_MAX_LENGTH) {\n\t throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n\t 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n\t }\n\t return length | 0\n\t}\n\n\tfunction SlowBuffer (length) {\n\t if (+length != length) { // eslint-disable-line eqeqeq\n\t length = 0;\n\t }\n\t return Buffer.alloc(+length)\n\t}\n\n\tBuffer.isBuffer = function isBuffer (b) {\n\t return b != null && b._isBuffer === true &&\n\t b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n\t};\n\n\tBuffer.compare = function compare (a, b) {\n\t if (isInstance(a, GlobalUint8Array)) a = Buffer.from(a, a.offset, a.byteLength);\n\t if (isInstance(b, GlobalUint8Array)) b = Buffer.from(b, b.offset, b.byteLength);\n\t if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n\t throw new TypeError(\n\t 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n\t )\n\t }\n\n\t if (a === b) return 0\n\n\t let x = a.length;\n\t let y = b.length;\n\n\t for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n\t if (a[i] !== b[i]) {\n\t x = a[i];\n\t y = b[i];\n\t break\n\t }\n\t }\n\n\t if (x < y) return -1\n\t if (y < x) return 1\n\t return 0\n\t};\n\n\tBuffer.isEncoding = function isEncoding (encoding) {\n\t switch (String(encoding).toLowerCase()) {\n\t case 'hex':\n\t case 'utf8':\n\t case 'utf-8':\n\t case 'ascii':\n\t case 'latin1':\n\t case 'binary':\n\t case 'base64':\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return true\n\t default:\n\t return false\n\t }\n\t};\n\n\tBuffer.concat = function concat (list, length) {\n\t if (!Array.isArray(list)) {\n\t throw new TypeError('\"list\" argument must be an Array of Buffers')\n\t }\n\n\t if (list.length === 0) {\n\t return Buffer.alloc(0)\n\t }\n\n\t let i;\n\t if (length === undefined) {\n\t length = 0;\n\t for (i = 0; i < list.length; ++i) {\n\t length += list[i].length;\n\t }\n\t }\n\n\t const buffer = Buffer.allocUnsafe(length);\n\t let pos = 0;\n\t for (i = 0; i < list.length; ++i) {\n\t let buf = list[i];\n\t if (isInstance(buf, GlobalUint8Array)) {\n\t if (pos + buf.length > buffer.length) {\n\t if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf);\n\t buf.copy(buffer, pos);\n\t } else {\n\t GlobalUint8Array.prototype.set.call(\n\t buffer,\n\t buf,\n\t pos\n\t );\n\t }\n\t } else if (!Buffer.isBuffer(buf)) {\n\t throw new TypeError('\"list\" argument must be an Array of Buffers')\n\t } else {\n\t buf.copy(buffer, pos);\n\t }\n\t pos += buf.length;\n\t }\n\t return buffer\n\t};\n\n\tfunction byteLength (string, encoding) {\n\t if (Buffer.isBuffer(string)) {\n\t return string.length\n\t }\n\t if (GlobalArrayBuffer.isView(string) || isInstance(string, GlobalArrayBuffer)) {\n\t return string.byteLength\n\t }\n\t if (typeof string !== 'string') {\n\t throw new TypeError(\n\t 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n\t 'Received type ' + typeof string\n\t )\n\t }\n\n\t const len = string.length;\n\t const mustMatch = (arguments.length > 2 && arguments[2] === true);\n\t if (!mustMatch && len === 0) return 0\n\n\t // Use a for loop to avoid recursion\n\t let loweredCase = false;\n\t for (;;) {\n\t switch (encoding) {\n\t case 'ascii':\n\t case 'latin1':\n\t case 'binary':\n\t return len\n\t case 'utf8':\n\t case 'utf-8':\n\t return utf8ToBytes(string).length\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return len * 2\n\t case 'hex':\n\t return len >>> 1\n\t case 'base64':\n\t return base64ToBytes(string).length\n\t default:\n\t if (loweredCase) {\n\t return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n\t }\n\t encoding = ('' + encoding).toLowerCase();\n\t loweredCase = true;\n\t }\n\t }\n\t}\n\tBuffer.byteLength = byteLength;\n\n\tfunction slowToString (encoding, start, end) {\n\t let loweredCase = false;\n\n\t // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n\t // property of a typed array.\n\n\t // This behaves neither like String nor Uint8Array in that we set start/end\n\t // to their upper/lower bounds if the value passed is out of range.\n\t // undefined is handled specially as per ECMA-262 6th Edition,\n\t // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n\t if (start === undefined || start < 0) {\n\t start = 0;\n\t }\n\t // Return early if start > this.length. Done here to prevent potential uint32\n\t // coercion fail below.\n\t if (start > this.length) {\n\t return ''\n\t }\n\n\t if (end === undefined || end > this.length) {\n\t end = this.length;\n\t }\n\n\t if (end <= 0) {\n\t return ''\n\t }\n\n\t // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n\t end >>>= 0;\n\t start >>>= 0;\n\n\t if (end <= start) {\n\t return ''\n\t }\n\n\t if (!encoding) encoding = 'utf8';\n\n\t while (true) {\n\t switch (encoding) {\n\t case 'hex':\n\t return hexSlice(this, start, end)\n\n\t case 'utf8':\n\t case 'utf-8':\n\t return utf8Slice(this, start, end)\n\n\t case 'ascii':\n\t return asciiSlice(this, start, end)\n\n\t case 'latin1':\n\t case 'binary':\n\t return latin1Slice(this, start, end)\n\n\t case 'base64':\n\t return base64Slice(this, start, end)\n\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return utf16leSlice(this, start, end)\n\n\t default:\n\t if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n\t encoding = (encoding + '').toLowerCase();\n\t loweredCase = true;\n\t }\n\t }\n\t}\n\n\t// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n\t// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n\t// reliably in a browserify context because there could be multiple different\n\t// copies of the 'buffer' package in use. This method works even for Buffer\n\t// instances that were created from another copy of the `buffer` package.\n\t// See: https://github.com/feross/buffer/issues/154\n\tBuffer.prototype._isBuffer = true;\n\n\tfunction swap (b, n, m) {\n\t const i = b[n];\n\t b[n] = b[m];\n\t b[m] = i;\n\t}\n\n\tBuffer.prototype.swap16 = function swap16 () {\n\t const len = this.length;\n\t if (len % 2 !== 0) {\n\t throw new RangeError('Buffer size must be a multiple of 16-bits')\n\t }\n\t for (let i = 0; i < len; i += 2) {\n\t swap(this, i, i + 1);\n\t }\n\t return this\n\t};\n\n\tBuffer.prototype.swap32 = function swap32 () {\n\t const len = this.length;\n\t if (len % 4 !== 0) {\n\t throw new RangeError('Buffer size must be a multiple of 32-bits')\n\t }\n\t for (let i = 0; i < len; i += 4) {\n\t swap(this, i, i + 3);\n\t swap(this, i + 1, i + 2);\n\t }\n\t return this\n\t};\n\n\tBuffer.prototype.swap64 = function swap64 () {\n\t const len = this.length;\n\t if (len % 8 !== 0) {\n\t throw new RangeError('Buffer size must be a multiple of 64-bits')\n\t }\n\t for (let i = 0; i < len; i += 8) {\n\t swap(this, i, i + 7);\n\t swap(this, i + 1, i + 6);\n\t swap(this, i + 2, i + 5);\n\t swap(this, i + 3, i + 4);\n\t }\n\t return this\n\t};\n\n\tBuffer.prototype.toString = function toString () {\n\t const length = this.length;\n\t if (length === 0) return ''\n\t if (arguments.length === 0) return utf8Slice(this, 0, length)\n\t return slowToString.apply(this, arguments)\n\t};\n\n\tBuffer.prototype.toLocaleString = Buffer.prototype.toString;\n\n\tBuffer.prototype.equals = function equals (b) {\n\t if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n\t if (this === b) return true\n\t return Buffer.compare(this, b) === 0\n\t};\n\n\tBuffer.prototype.inspect = function inspect () {\n\t let str = '';\n\t const max = exports.INSPECT_MAX_BYTES;\n\t str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim();\n\t if (this.length > max) str += ' ... ';\n\t return ''\n\t};\n\tif (customInspectSymbol) {\n\t Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect;\n\t}\n\n\tBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n\t if (isInstance(target, GlobalUint8Array)) {\n\t target = Buffer.from(target, target.offset, target.byteLength);\n\t }\n\t if (!Buffer.isBuffer(target)) {\n\t throw new TypeError(\n\t 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n\t 'Received type ' + (typeof target)\n\t )\n\t }\n\n\t if (start === undefined) {\n\t start = 0;\n\t }\n\t if (end === undefined) {\n\t end = target ? target.length : 0;\n\t }\n\t if (thisStart === undefined) {\n\t thisStart = 0;\n\t }\n\t if (thisEnd === undefined) {\n\t thisEnd = this.length;\n\t }\n\n\t if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n\t throw new RangeError('out of range index')\n\t }\n\n\t if (thisStart >= thisEnd && start >= end) {\n\t return 0\n\t }\n\t if (thisStart >= thisEnd) {\n\t return -1\n\t }\n\t if (start >= end) {\n\t return 1\n\t }\n\n\t start >>>= 0;\n\t end >>>= 0;\n\t thisStart >>>= 0;\n\t thisEnd >>>= 0;\n\n\t if (this === target) return 0\n\n\t let x = thisEnd - thisStart;\n\t let y = end - start;\n\t const len = Math.min(x, y);\n\n\t const thisCopy = this.slice(thisStart, thisEnd);\n\t const targetCopy = target.slice(start, end);\n\n\t for (let i = 0; i < len; ++i) {\n\t if (thisCopy[i] !== targetCopy[i]) {\n\t x = thisCopy[i];\n\t y = targetCopy[i];\n\t break\n\t }\n\t }\n\n\t if (x < y) return -1\n\t if (y < x) return 1\n\t return 0\n\t};\n\n\t// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n\t// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n\t//\n\t// Arguments:\n\t// - buffer - a Buffer to search\n\t// - val - a string, Buffer, or number\n\t// - byteOffset - an index into `buffer`; will be clamped to an int32\n\t// - encoding - an optional encoding, relevant is val is a string\n\t// - dir - true for indexOf, false for lastIndexOf\n\tfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n\t // Empty buffer means no match\n\t if (buffer.length === 0) return -1\n\n\t // Normalize byteOffset\n\t if (typeof byteOffset === 'string') {\n\t encoding = byteOffset;\n\t byteOffset = 0;\n\t } else if (byteOffset > 0x7fffffff) {\n\t byteOffset = 0x7fffffff;\n\t } else if (byteOffset < -0x80000000) {\n\t byteOffset = -0x80000000;\n\t }\n\t byteOffset = +byteOffset; // Coerce to Number.\n\t if (numberIsNaN(byteOffset)) {\n\t // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n\t byteOffset = dir ? 0 : (buffer.length - 1);\n\t }\n\n\t // Normalize byteOffset: negative offsets start from the end of the buffer\n\t if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n\t if (byteOffset >= buffer.length) {\n\t if (dir) return -1\n\t else byteOffset = buffer.length - 1;\n\t } else if (byteOffset < 0) {\n\t if (dir) byteOffset = 0;\n\t else return -1\n\t }\n\n\t // Normalize val\n\t if (typeof val === 'string') {\n\t val = Buffer.from(val, encoding);\n\t }\n\n\t // Finally, search either indexOf (if dir is true) or lastIndexOf\n\t if (Buffer.isBuffer(val)) {\n\t // Special case: looking for empty string/buffer always fails\n\t if (val.length === 0) {\n\t return -1\n\t }\n\t return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n\t } else if (typeof val === 'number') {\n\t val = val & 0xFF; // Search for a byte value [0-255]\n\t if (typeof GlobalUint8Array.prototype.indexOf === 'function') {\n\t if (dir) {\n\t return GlobalUint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n\t } else {\n\t return GlobalUint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n\t }\n\t }\n\t return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n\t }\n\n\t throw new TypeError('val must be string, number or Buffer')\n\t}\n\n\tfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n\t let indexSize = 1;\n\t let arrLength = arr.length;\n\t let valLength = val.length;\n\n\t if (encoding !== undefined) {\n\t encoding = String(encoding).toLowerCase();\n\t if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n\t encoding === 'utf16le' || encoding === 'utf-16le') {\n\t if (arr.length < 2 || val.length < 2) {\n\t return -1\n\t }\n\t indexSize = 2;\n\t arrLength /= 2;\n\t valLength /= 2;\n\t byteOffset /= 2;\n\t }\n\t }\n\n\t function read (buf, i) {\n\t if (indexSize === 1) {\n\t return buf[i]\n\t } else {\n\t return buf.readUInt16BE(i * indexSize)\n\t }\n\t }\n\n\t let i;\n\t if (dir) {\n\t let foundIndex = -1;\n\t for (i = byteOffset; i < arrLength; i++) {\n\t if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n\t if (foundIndex === -1) foundIndex = i;\n\t if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n\t } else {\n\t if (foundIndex !== -1) i -= i - foundIndex;\n\t foundIndex = -1;\n\t }\n\t }\n\t } else {\n\t if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n\t for (i = byteOffset; i >= 0; i--) {\n\t let found = true;\n\t for (let j = 0; j < valLength; j++) {\n\t if (read(arr, i + j) !== read(val, j)) {\n\t found = false;\n\t break\n\t }\n\t }\n\t if (found) return i\n\t }\n\t }\n\n\t return -1\n\t}\n\n\tBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n\t return this.indexOf(val, byteOffset, encoding) !== -1\n\t};\n\n\tBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n\t return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n\t};\n\n\tBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n\t return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n\t};\n\n\tfunction hexWrite (buf, string, offset, length) {\n\t offset = Number(offset) || 0;\n\t const remaining = buf.length - offset;\n\t if (!length) {\n\t length = remaining;\n\t } else {\n\t length = Number(length);\n\t if (length > remaining) {\n\t length = remaining;\n\t }\n\t }\n\n\t const strLen = string.length;\n\n\t if (length > strLen / 2) {\n\t length = strLen / 2;\n\t }\n\t let i;\n\t for (i = 0; i < length; ++i) {\n\t const parsed = parseInt(string.substr(i * 2, 2), 16);\n\t if (numberIsNaN(parsed)) return i\n\t buf[offset + i] = parsed;\n\t }\n\t return i\n\t}\n\n\tfunction utf8Write (buf, string, offset, length) {\n\t return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n\t}\n\n\tfunction asciiWrite (buf, string, offset, length) {\n\t return blitBuffer(asciiToBytes(string), buf, offset, length)\n\t}\n\n\tfunction base64Write (buf, string, offset, length) {\n\t return blitBuffer(base64ToBytes(string), buf, offset, length)\n\t}\n\n\tfunction ucs2Write (buf, string, offset, length) {\n\t return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n\t}\n\n\tBuffer.prototype.write = function write (string, offset, length, encoding) {\n\t // Buffer#write(string)\n\t if (offset === undefined) {\n\t encoding = 'utf8';\n\t length = this.length;\n\t offset = 0;\n\t // Buffer#write(string, encoding)\n\t } else if (length === undefined && typeof offset === 'string') {\n\t encoding = offset;\n\t length = this.length;\n\t offset = 0;\n\t // Buffer#write(string, offset[, length][, encoding])\n\t } else if (isFinite(offset)) {\n\t offset = offset >>> 0;\n\t if (isFinite(length)) {\n\t length = length >>> 0;\n\t if (encoding === undefined) encoding = 'utf8';\n\t } else {\n\t encoding = length;\n\t length = undefined;\n\t }\n\t } else {\n\t throw new Error(\n\t 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n\t )\n\t }\n\n\t const remaining = this.length - offset;\n\t if (length === undefined || length > remaining) length = remaining;\n\n\t if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n\t throw new RangeError('Attempt to write outside buffer bounds')\n\t }\n\n\t if (!encoding) encoding = 'utf8';\n\n\t let loweredCase = false;\n\t for (;;) {\n\t switch (encoding) {\n\t case 'hex':\n\t return hexWrite(this, string, offset, length)\n\n\t case 'utf8':\n\t case 'utf-8':\n\t return utf8Write(this, string, offset, length)\n\n\t case 'ascii':\n\t case 'latin1':\n\t case 'binary':\n\t return asciiWrite(this, string, offset, length)\n\n\t case 'base64':\n\t // Warning: maxLength not taken into account in base64Write\n\t return base64Write(this, string, offset, length)\n\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return ucs2Write(this, string, offset, length)\n\n\t default:\n\t if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n\t encoding = ('' + encoding).toLowerCase();\n\t loweredCase = true;\n\t }\n\t }\n\t};\n\n\tBuffer.prototype.toJSON = function toJSON () {\n\t return {\n\t type: 'Buffer',\n\t data: Array.prototype.slice.call(this._arr || this, 0)\n\t }\n\t};\n\n\tfunction base64Slice (buf, start, end) {\n\t if (start === 0 && end === buf.length) {\n\t return base64.fromByteArray(buf)\n\t } else {\n\t return base64.fromByteArray(buf.slice(start, end))\n\t }\n\t}\n\n\tfunction utf8Slice (buf, start, end) {\n\t end = Math.min(buf.length, end);\n\t const res = [];\n\n\t let i = start;\n\t while (i < end) {\n\t const firstByte = buf[i];\n\t let codePoint = null;\n\t let bytesPerSequence = (firstByte > 0xEF)\n\t ? 4\n\t : (firstByte > 0xDF)\n\t ? 3\n\t : (firstByte > 0xBF)\n\t ? 2\n\t : 1;\n\n\t if (i + bytesPerSequence <= end) {\n\t let secondByte, thirdByte, fourthByte, tempCodePoint;\n\n\t switch (bytesPerSequence) {\n\t case 1:\n\t if (firstByte < 0x80) {\n\t codePoint = firstByte;\n\t }\n\t break\n\t case 2:\n\t secondByte = buf[i + 1];\n\t if ((secondByte & 0xC0) === 0x80) {\n\t tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F);\n\t if (tempCodePoint > 0x7F) {\n\t codePoint = tempCodePoint;\n\t }\n\t }\n\t break\n\t case 3:\n\t secondByte = buf[i + 1];\n\t thirdByte = buf[i + 2];\n\t if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n\t tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F);\n\t if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n\t codePoint = tempCodePoint;\n\t }\n\t }\n\t break\n\t case 4:\n\t secondByte = buf[i + 1];\n\t thirdByte = buf[i + 2];\n\t fourthByte = buf[i + 3];\n\t if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n\t tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F);\n\t if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n\t codePoint = tempCodePoint;\n\t }\n\t }\n\t }\n\t }\n\n\t if (codePoint === null) {\n\t // we did not generate a valid codePoint so insert a\n\t // replacement char (U+FFFD) and advance only 1 byte\n\t codePoint = 0xFFFD;\n\t bytesPerSequence = 1;\n\t } else if (codePoint > 0xFFFF) {\n\t // encode to utf16 (surrogate pair dance)\n\t codePoint -= 0x10000;\n\t res.push(codePoint >>> 10 & 0x3FF | 0xD800);\n\t codePoint = 0xDC00 | codePoint & 0x3FF;\n\t }\n\n\t res.push(codePoint);\n\t i += bytesPerSequence;\n\t }\n\n\t return decodeCodePointsArray(res)\n\t}\n\n\t// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n\t// the lowest limit is Chrome, with 0x10000 args.\n\t// We go 1 magnitude less, for safety\n\tconst MAX_ARGUMENTS_LENGTH = 0x1000;\n\n\tfunction decodeCodePointsArray (codePoints) {\n\t const len = codePoints.length;\n\t if (len <= MAX_ARGUMENTS_LENGTH) {\n\t return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n\t }\n\n\t // Decode in chunks to avoid \"call stack size exceeded\".\n\t let res = '';\n\t let i = 0;\n\t while (i < len) {\n\t res += String.fromCharCode.apply(\n\t String,\n\t codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n\t );\n\t }\n\t return res\n\t}\n\n\tfunction asciiSlice (buf, start, end) {\n\t let ret = '';\n\t end = Math.min(buf.length, end);\n\n\t for (let i = start; i < end; ++i) {\n\t ret += String.fromCharCode(buf[i] & 0x7F);\n\t }\n\t return ret\n\t}\n\n\tfunction latin1Slice (buf, start, end) {\n\t let ret = '';\n\t end = Math.min(buf.length, end);\n\n\t for (let i = start; i < end; ++i) {\n\t ret += String.fromCharCode(buf[i]);\n\t }\n\t return ret\n\t}\n\n\tfunction hexSlice (buf, start, end) {\n\t const len = buf.length;\n\n\t if (!start || start < 0) start = 0;\n\t if (!end || end < 0 || end > len) end = len;\n\n\t let out = '';\n\t for (let i = start; i < end; ++i) {\n\t out += hexSliceLookupTable[buf[i]];\n\t }\n\t return out\n\t}\n\n\tfunction utf16leSlice (buf, start, end) {\n\t const bytes = buf.slice(start, end);\n\t let res = '';\n\t // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n\t for (let i = 0; i < bytes.length - 1; i += 2) {\n\t res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256));\n\t }\n\t return res\n\t}\n\n\tBuffer.prototype.slice = function slice (start, end) {\n\t const len = this.length;\n\t start = ~~start;\n\t end = end === undefined ? len : ~~end;\n\n\t if (start < 0) {\n\t start += len;\n\t if (start < 0) start = 0;\n\t } else if (start > len) {\n\t start = len;\n\t }\n\n\t if (end < 0) {\n\t end += len;\n\t if (end < 0) end = 0;\n\t } else if (end > len) {\n\t end = len;\n\t }\n\n\t if (end < start) end = start;\n\n\t const newBuf = this.subarray(start, end);\n\t // Return an augmented `Uint8Array` instance\n\t Object.setPrototypeOf(newBuf, Buffer.prototype);\n\n\t return newBuf\n\t};\n\n\t/*\n\t * Need to make sure that buffer isn't trying to write out of bounds.\n\t */\n\tfunction checkOffset (offset, ext, length) {\n\t if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n\t if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n\t}\n\n\tBuffer.prototype.readUintLE =\n\tBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n\t offset = offset >>> 0;\n\t byteLength = byteLength >>> 0;\n\t if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n\t let val = this[offset];\n\t let mul = 1;\n\t let i = 0;\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t val += this[offset + i] * mul;\n\t }\n\n\t return val\n\t};\n\n\tBuffer.prototype.readUintBE =\n\tBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n\t offset = offset >>> 0;\n\t byteLength = byteLength >>> 0;\n\t if (!noAssert) {\n\t checkOffset(offset, byteLength, this.length);\n\t }\n\n\t let val = this[offset + --byteLength];\n\t let mul = 1;\n\t while (byteLength > 0 && (mul *= 0x100)) {\n\t val += this[offset + --byteLength] * mul;\n\t }\n\n\t return val\n\t};\n\n\tBuffer.prototype.readUint8 =\n\tBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 1, this.length);\n\t return this[offset]\n\t};\n\n\tBuffer.prototype.readUint16LE =\n\tBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 2, this.length);\n\t return this[offset] | (this[offset + 1] << 8)\n\t};\n\n\tBuffer.prototype.readUint16BE =\n\tBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 2, this.length);\n\t return (this[offset] << 8) | this[offset + 1]\n\t};\n\n\tBuffer.prototype.readUint32LE =\n\tBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t return ((this[offset]) |\n\t (this[offset + 1] << 8) |\n\t (this[offset + 2] << 16)) +\n\t (this[offset + 3] * 0x1000000)\n\t};\n\n\tBuffer.prototype.readUint32BE =\n\tBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t return (this[offset] * 0x1000000) +\n\t ((this[offset + 1] << 16) |\n\t (this[offset + 2] << 8) |\n\t this[offset + 3])\n\t};\n\n\tBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n\t offset = offset >>> 0;\n\t validateNumber(offset, 'offset');\n\t const first = this[offset];\n\t const last = this[offset + 7];\n\t if (first === undefined || last === undefined) {\n\t boundsError(offset, this.length - 8);\n\t }\n\n\t const lo = first +\n\t this[++offset] * 2 ** 8 +\n\t this[++offset] * 2 ** 16 +\n\t this[++offset] * 2 ** 24;\n\n\t const hi = this[++offset] +\n\t this[++offset] * 2 ** 8 +\n\t this[++offset] * 2 ** 16 +\n\t last * 2 ** 24;\n\n\t return BigInt(lo) + (BigInt(hi) << BigInt(32))\n\t});\n\n\tBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n\t offset = offset >>> 0;\n\t validateNumber(offset, 'offset');\n\t const first = this[offset];\n\t const last = this[offset + 7];\n\t if (first === undefined || last === undefined) {\n\t boundsError(offset, this.length - 8);\n\t }\n\n\t const hi = first * 2 ** 24 +\n\t this[++offset] * 2 ** 16 +\n\t this[++offset] * 2 ** 8 +\n\t this[++offset];\n\n\t const lo = this[++offset] * 2 ** 24 +\n\t this[++offset] * 2 ** 16 +\n\t this[++offset] * 2 ** 8 +\n\t last;\n\n\t return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n\t});\n\n\tBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n\t offset = offset >>> 0;\n\t byteLength = byteLength >>> 0;\n\t if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n\t let val = this[offset];\n\t let mul = 1;\n\t let i = 0;\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t val += this[offset + i] * mul;\n\t }\n\t mul *= 0x80;\n\n\t if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n\t return val\n\t};\n\n\tBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n\t offset = offset >>> 0;\n\t byteLength = byteLength >>> 0;\n\t if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n\t let i = byteLength;\n\t let mul = 1;\n\t let val = this[offset + --i];\n\t while (i > 0 && (mul *= 0x100)) {\n\t val += this[offset + --i] * mul;\n\t }\n\t mul *= 0x80;\n\n\t if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n\t return val\n\t};\n\n\tBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 1, this.length);\n\t if (!(this[offset] & 0x80)) return (this[offset])\n\t return ((0xff - this[offset] + 1) * -1)\n\t};\n\n\tBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 2, this.length);\n\t const val = this[offset] | (this[offset + 1] << 8);\n\t return (val & 0x8000) ? val | 0xFFFF0000 : val\n\t};\n\n\tBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 2, this.length);\n\t const val = this[offset + 1] | (this[offset] << 8);\n\t return (val & 0x8000) ? val | 0xFFFF0000 : val\n\t};\n\n\tBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t return (this[offset]) |\n\t (this[offset + 1] << 8) |\n\t (this[offset + 2] << 16) |\n\t (this[offset + 3] << 24)\n\t};\n\n\tBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t return (this[offset] << 24) |\n\t (this[offset + 1] << 16) |\n\t (this[offset + 2] << 8) |\n\t (this[offset + 3])\n\t};\n\n\tBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n\t offset = offset >>> 0;\n\t validateNumber(offset, 'offset');\n\t const first = this[offset];\n\t const last = this[offset + 7];\n\t if (first === undefined || last === undefined) {\n\t boundsError(offset, this.length - 8);\n\t }\n\n\t const val = this[offset + 4] +\n\t this[offset + 5] * 2 ** 8 +\n\t this[offset + 6] * 2 ** 16 +\n\t (last << 24); // Overflow\n\n\t return (BigInt(val) << BigInt(32)) +\n\t BigInt(first +\n\t this[++offset] * 2 ** 8 +\n\t this[++offset] * 2 ** 16 +\n\t this[++offset] * 2 ** 24)\n\t});\n\n\tBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n\t offset = offset >>> 0;\n\t validateNumber(offset, 'offset');\n\t const first = this[offset];\n\t const last = this[offset + 7];\n\t if (first === undefined || last === undefined) {\n\t boundsError(offset, this.length - 8);\n\t }\n\n\t const val = (first << 24) + // Overflow\n\t this[++offset] * 2 ** 16 +\n\t this[++offset] * 2 ** 8 +\n\t this[++offset];\n\n\t return (BigInt(val) << BigInt(32)) +\n\t BigInt(this[++offset] * 2 ** 24 +\n\t this[++offset] * 2 ** 16 +\n\t this[++offset] * 2 ** 8 +\n\t last)\n\t});\n\n\tBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 4, this.length);\n\t return ieee754$1.read(this, offset, true, 23, 4)\n\t};\n\n\tBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 4, this.length);\n\t return ieee754$1.read(this, offset, false, 23, 4)\n\t};\n\n\tBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 8, this.length);\n\t return ieee754$1.read(this, offset, true, 52, 8)\n\t};\n\n\tBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 8, this.length);\n\t return ieee754$1.read(this, offset, false, 52, 8)\n\t};\n\n\tfunction checkInt (buf, value, offset, ext, max, min) {\n\t if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n\t if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n\t if (offset + ext > buf.length) throw new RangeError('Index out of range')\n\t}\n\n\tBuffer.prototype.writeUintLE =\n\tBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t byteLength = byteLength >>> 0;\n\t if (!noAssert) {\n\t const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n\t checkInt(this, value, offset, byteLength, maxBytes, 0);\n\t }\n\n\t let mul = 1;\n\t let i = 0;\n\t this[offset] = value & 0xFF;\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t this[offset + i] = (value / mul) & 0xFF;\n\t }\n\n\t return offset + byteLength\n\t};\n\n\tBuffer.prototype.writeUintBE =\n\tBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t byteLength = byteLength >>> 0;\n\t if (!noAssert) {\n\t const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n\t checkInt(this, value, offset, byteLength, maxBytes, 0);\n\t }\n\n\t let i = byteLength - 1;\n\t let mul = 1;\n\t this[offset + i] = value & 0xFF;\n\t while (--i >= 0 && (mul *= 0x100)) {\n\t this[offset + i] = (value / mul) & 0xFF;\n\t }\n\n\t return offset + byteLength\n\t};\n\n\tBuffer.prototype.writeUint8 =\n\tBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);\n\t this[offset] = (value & 0xff);\n\t return offset + 1\n\t};\n\n\tBuffer.prototype.writeUint16LE =\n\tBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\t this[offset] = (value & 0xff);\n\t this[offset + 1] = (value >>> 8);\n\t return offset + 2\n\t};\n\n\tBuffer.prototype.writeUint16BE =\n\tBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\t this[offset] = (value >>> 8);\n\t this[offset + 1] = (value & 0xff);\n\t return offset + 2\n\t};\n\n\tBuffer.prototype.writeUint32LE =\n\tBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\t this[offset + 3] = (value >>> 24);\n\t this[offset + 2] = (value >>> 16);\n\t this[offset + 1] = (value >>> 8);\n\t this[offset] = (value & 0xff);\n\t return offset + 4\n\t};\n\n\tBuffer.prototype.writeUint32BE =\n\tBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\t this[offset] = (value >>> 24);\n\t this[offset + 1] = (value >>> 16);\n\t this[offset + 2] = (value >>> 8);\n\t this[offset + 3] = (value & 0xff);\n\t return offset + 4\n\t};\n\n\tfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n\t checkIntBI(value, min, max, buf, offset, 7);\n\n\t let lo = Number(value & BigInt(0xffffffff));\n\t buf[offset++] = lo;\n\t lo = lo >> 8;\n\t buf[offset++] = lo;\n\t lo = lo >> 8;\n\t buf[offset++] = lo;\n\t lo = lo >> 8;\n\t buf[offset++] = lo;\n\t let hi = Number(value >> BigInt(32) & BigInt(0xffffffff));\n\t buf[offset++] = hi;\n\t hi = hi >> 8;\n\t buf[offset++] = hi;\n\t hi = hi >> 8;\n\t buf[offset++] = hi;\n\t hi = hi >> 8;\n\t buf[offset++] = hi;\n\t return offset\n\t}\n\n\tfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n\t checkIntBI(value, min, max, buf, offset, 7);\n\n\t let lo = Number(value & BigInt(0xffffffff));\n\t buf[offset + 7] = lo;\n\t lo = lo >> 8;\n\t buf[offset + 6] = lo;\n\t lo = lo >> 8;\n\t buf[offset + 5] = lo;\n\t lo = lo >> 8;\n\t buf[offset + 4] = lo;\n\t let hi = Number(value >> BigInt(32) & BigInt(0xffffffff));\n\t buf[offset + 3] = hi;\n\t hi = hi >> 8;\n\t buf[offset + 2] = hi;\n\t hi = hi >> 8;\n\t buf[offset + 1] = hi;\n\t hi = hi >> 8;\n\t buf[offset] = hi;\n\t return offset + 8\n\t}\n\n\tBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n\t return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n\t});\n\n\tBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n\t return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n\t});\n\n\tBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) {\n\t const limit = Math.pow(2, (8 * byteLength) - 1);\n\n\t checkInt(this, value, offset, byteLength, limit - 1, -limit);\n\t }\n\n\t let i = 0;\n\t let mul = 1;\n\t let sub = 0;\n\t this[offset] = value & 0xFF;\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n\t sub = 1;\n\t }\n\t this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n\t }\n\n\t return offset + byteLength\n\t};\n\n\tBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) {\n\t const limit = Math.pow(2, (8 * byteLength) - 1);\n\n\t checkInt(this, value, offset, byteLength, limit - 1, -limit);\n\t }\n\n\t let i = byteLength - 1;\n\t let mul = 1;\n\t let sub = 0;\n\t this[offset + i] = value & 0xFF;\n\t while (--i >= 0 && (mul *= 0x100)) {\n\t if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n\t sub = 1;\n\t }\n\t this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n\t }\n\n\t return offset + byteLength\n\t};\n\n\tBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);\n\t if (value < 0) value = 0xff + value + 1;\n\t this[offset] = (value & 0xff);\n\t return offset + 1\n\t};\n\n\tBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n\t this[offset] = (value & 0xff);\n\t this[offset + 1] = (value >>> 8);\n\t return offset + 2\n\t};\n\n\tBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n\t this[offset] = (value >>> 8);\n\t this[offset + 1] = (value & 0xff);\n\t return offset + 2\n\t};\n\n\tBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n\t this[offset] = (value & 0xff);\n\t this[offset + 1] = (value >>> 8);\n\t this[offset + 2] = (value >>> 16);\n\t this[offset + 3] = (value >>> 24);\n\t return offset + 4\n\t};\n\n\tBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n\t if (value < 0) value = 0xffffffff + value + 1;\n\t this[offset] = (value >>> 24);\n\t this[offset + 1] = (value >>> 16);\n\t this[offset + 2] = (value >>> 8);\n\t this[offset + 3] = (value & 0xff);\n\t return offset + 4\n\t};\n\n\tBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n\t return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n\t});\n\n\tBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n\t return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n\t});\n\n\tfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n\t if (offset + ext > buf.length) throw new RangeError('Index out of range')\n\t if (offset < 0) throw new RangeError('Index out of range')\n\t}\n\n\tfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) {\n\t checkIEEE754(buf, value, offset, 4);\n\t }\n\t ieee754$1.write(buf, value, offset, littleEndian, 23, 4);\n\t return offset + 4\n\t}\n\n\tBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n\t return writeFloat(this, value, offset, true, noAssert)\n\t};\n\n\tBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n\t return writeFloat(this, value, offset, false, noAssert)\n\t};\n\n\tfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) {\n\t checkIEEE754(buf, value, offset, 8);\n\t }\n\t ieee754$1.write(buf, value, offset, littleEndian, 52, 8);\n\t return offset + 8\n\t}\n\n\tBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n\t return writeDouble(this, value, offset, true, noAssert)\n\t};\n\n\tBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n\t return writeDouble(this, value, offset, false, noAssert)\n\t};\n\n\t// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\n\tBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n\t if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n\t if (!start) start = 0;\n\t if (!end && end !== 0) end = this.length;\n\t if (targetStart >= target.length) targetStart = target.length;\n\t if (!targetStart) targetStart = 0;\n\t if (end > 0 && end < start) end = start;\n\n\t // Copy 0 bytes; we're done\n\t if (end === start) return 0\n\t if (target.length === 0 || this.length === 0) return 0\n\n\t // Fatal error conditions\n\t if (targetStart < 0) {\n\t throw new RangeError('targetStart out of bounds')\n\t }\n\t if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n\t if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n\t // Are we oob?\n\t if (end > this.length) end = this.length;\n\t if (target.length - targetStart < end - start) {\n\t end = target.length - targetStart + start;\n\t }\n\n\t const len = end - start;\n\n\t if (this === target && typeof GlobalUint8Array.prototype.copyWithin === 'function') {\n\t // Use built-in when available, missing from IE11\n\t this.copyWithin(targetStart, start, end);\n\t } else {\n\t GlobalUint8Array.prototype.set.call(\n\t target,\n\t this.subarray(start, end),\n\t targetStart\n\t );\n\t }\n\n\t return len\n\t};\n\n\t// Usage:\n\t// buffer.fill(number[, offset[, end]])\n\t// buffer.fill(buffer[, offset[, end]])\n\t// buffer.fill(string[, offset[, end]][, encoding])\n\tBuffer.prototype.fill = function fill (val, start, end, encoding) {\n\t // Handle string cases:\n\t if (typeof val === 'string') {\n\t if (typeof start === 'string') {\n\t encoding = start;\n\t start = 0;\n\t end = this.length;\n\t } else if (typeof end === 'string') {\n\t encoding = end;\n\t end = this.length;\n\t }\n\t if (encoding !== undefined && typeof encoding !== 'string') {\n\t throw new TypeError('encoding must be a string')\n\t }\n\t if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n\t throw new TypeError('Unknown encoding: ' + encoding)\n\t }\n\t if (val.length === 1) {\n\t const code = val.charCodeAt(0);\n\t if ((encoding === 'utf8' && code < 128) ||\n\t encoding === 'latin1') {\n\t // Fast path: If `val` fits into a single byte, use that numeric value.\n\t val = code;\n\t }\n\t }\n\t } else if (typeof val === 'number') {\n\t val = val & 255;\n\t } else if (typeof val === 'boolean') {\n\t val = Number(val);\n\t }\n\n\t // Invalid ranges are not set to a default, so can range check early.\n\t if (start < 0 || this.length < start || this.length < end) {\n\t throw new RangeError('Out of range index')\n\t }\n\n\t if (end <= start) {\n\t return this\n\t }\n\n\t start = start >>> 0;\n\t end = end === undefined ? this.length : end >>> 0;\n\n\t if (!val) val = 0;\n\n\t let i;\n\t if (typeof val === 'number') {\n\t for (i = start; i < end; ++i) {\n\t this[i] = val;\n\t }\n\t } else {\n\t const bytes = Buffer.isBuffer(val)\n\t ? val\n\t : Buffer.from(val, encoding);\n\t const len = bytes.length;\n\t if (len === 0) {\n\t throw new TypeError('The value \"' + val +\n\t '\" is invalid for argument \"value\"')\n\t }\n\t for (i = 0; i < end - start; ++i) {\n\t this[i + start] = bytes[i % len];\n\t }\n\t }\n\n\t return this\n\t};\n\n\t// CUSTOM ERRORS\n\t// =============\n\n\t// Simplified versions from Node, changed for Buffer-only usage\n\tconst errors = {};\n\tfunction E (sym, getMessage, Base) {\n\t errors[sym] = class NodeError extends Base {\n\t constructor () {\n\t super();\n\n\t Object.defineProperty(this, 'message', {\n\t value: getMessage.apply(this, arguments),\n\t writable: true,\n\t configurable: true\n\t });\n\n\t // Add the error code to the name to include it in the stack trace.\n\t this.name = `${this.name} [${sym}]`;\n\t // Access the stack to generate the error message including the error code\n\t // from the name.\n\t this.stack; // eslint-disable-line no-unused-expressions\n\t // Reset the name to the actual name.\n\t delete this.name;\n\t }\n\n\t get code () {\n\t return sym\n\t }\n\n\t set code (value) {\n\t Object.defineProperty(this, 'code', {\n\t configurable: true,\n\t enumerable: true,\n\t value,\n\t writable: true\n\t });\n\t }\n\n\t toString () {\n\t return `${this.name} [${sym}]: ${this.message}`\n\t }\n\t };\n\t}\n\n\tE('ERR_BUFFER_OUT_OF_BOUNDS',\n\t function (name) {\n\t if (name) {\n\t return `${name} is outside of buffer bounds`\n\t }\n\n\t return 'Attempt to access memory outside buffer bounds'\n\t }, RangeError);\n\tE('ERR_INVALID_ARG_TYPE',\n\t function (name, actual) {\n\t return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n\t }, TypeError);\n\tE('ERR_OUT_OF_RANGE',\n\t function (str, range, input) {\n\t let msg = `The value of \"${str}\" is out of range.`;\n\t let received = input;\n\t if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n\t received = addNumericalSeparator(String(input));\n\t } else if (typeof input === 'bigint') {\n\t received = String(input);\n\t if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n\t received = addNumericalSeparator(received);\n\t }\n\t received += 'n';\n\t }\n\t msg += ` It must be ${range}. Received ${received}`;\n\t return msg\n\t }, RangeError);\n\n\tfunction addNumericalSeparator (val) {\n\t let res = '';\n\t let i = val.length;\n\t const start = val[0] === '-' ? 1 : 0;\n\t for (; i >= start + 4; i -= 3) {\n\t res = `_${val.slice(i - 3, i)}${res}`;\n\t }\n\t return `${val.slice(0, i)}${res}`\n\t}\n\n\t// CHECK FUNCTIONS\n\t// ===============\n\n\tfunction checkBounds (buf, offset, byteLength) {\n\t validateNumber(offset, 'offset');\n\t if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n\t boundsError(offset, buf.length - (byteLength + 1));\n\t }\n\t}\n\n\tfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n\t if (value > max || value < min) {\n\t const n = typeof min === 'bigint' ? 'n' : '';\n\t let range;\n\t if (byteLength > 3) {\n\t if (min === 0 || min === BigInt(0)) {\n\t range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`;\n\t } else {\n\t range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n\t `${(byteLength + 1) * 8 - 1}${n}`;\n\t }\n\t } else {\n\t range = `>= ${min}${n} and <= ${max}${n}`;\n\t }\n\t throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n\t }\n\t checkBounds(buf, offset, byteLength);\n\t}\n\n\tfunction validateNumber (value, name) {\n\t if (typeof value !== 'number') {\n\t throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n\t }\n\t}\n\n\tfunction boundsError (value, length, type) {\n\t if (Math.floor(value) !== value) {\n\t validateNumber(value, type);\n\t throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n\t }\n\n\t if (length < 0) {\n\t throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n\t }\n\n\t throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n\t `>= ${type ? 1 : 0} and <= ${length}`,\n\t value)\n\t}\n\n\t// HELPER FUNCTIONS\n\t// ================\n\n\tconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g;\n\n\tfunction base64clean (str) {\n\t // Node takes equal signs as end of the Base64 encoding\n\t str = str.split('=')[0];\n\t // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n\t str = str.trim().replace(INVALID_BASE64_RE, '');\n\t // Node converts strings with length < 2 to ''\n\t if (str.length < 2) return ''\n\t // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n\t while (str.length % 4 !== 0) {\n\t str = str + '=';\n\t }\n\t return str\n\t}\n\n\tfunction utf8ToBytes (string, units) {\n\t units = units || Infinity;\n\t let codePoint;\n\t const length = string.length;\n\t let leadSurrogate = null;\n\t const bytes = [];\n\n\t for (let i = 0; i < length; ++i) {\n\t codePoint = string.charCodeAt(i);\n\n\t // is surrogate component\n\t if (codePoint > 0xD7FF && codePoint < 0xE000) {\n\t // last char was a lead\n\t if (!leadSurrogate) {\n\t // no lead yet\n\t if (codePoint > 0xDBFF) {\n\t // unexpected trail\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t continue\n\t } else if (i + 1 === length) {\n\t // unpaired lead\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t continue\n\t }\n\n\t // valid lead\n\t leadSurrogate = codePoint;\n\n\t continue\n\t }\n\n\t // 2 leads in a row\n\t if (codePoint < 0xDC00) {\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t leadSurrogate = codePoint;\n\t continue\n\t }\n\n\t // valid surrogate pair\n\t codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n\t } else if (leadSurrogate) {\n\t // valid bmp char, but last char was a lead\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t }\n\n\t leadSurrogate = null;\n\n\t // encode utf8\n\t if (codePoint < 0x80) {\n\t if ((units -= 1) < 0) break\n\t bytes.push(codePoint);\n\t } else if (codePoint < 0x800) {\n\t if ((units -= 2) < 0) break\n\t bytes.push(\n\t codePoint >> 0x6 | 0xC0,\n\t codePoint & 0x3F | 0x80\n\t );\n\t } else if (codePoint < 0x10000) {\n\t if ((units -= 3) < 0) break\n\t bytes.push(\n\t codePoint >> 0xC | 0xE0,\n\t codePoint >> 0x6 & 0x3F | 0x80,\n\t codePoint & 0x3F | 0x80\n\t );\n\t } else if (codePoint < 0x110000) {\n\t if ((units -= 4) < 0) break\n\t bytes.push(\n\t codePoint >> 0x12 | 0xF0,\n\t codePoint >> 0xC & 0x3F | 0x80,\n\t codePoint >> 0x6 & 0x3F | 0x80,\n\t codePoint & 0x3F | 0x80\n\t );\n\t } else {\n\t throw new Error('Invalid code point')\n\t }\n\t }\n\n\t return bytes\n\t}\n\n\tfunction asciiToBytes (str) {\n\t const byteArray = [];\n\t for (let i = 0; i < str.length; ++i) {\n\t // Node's code seems to be doing this and not & 0x7F..\n\t byteArray.push(str.charCodeAt(i) & 0xFF);\n\t }\n\t return byteArray\n\t}\n\n\tfunction utf16leToBytes (str, units) {\n\t let c, hi, lo;\n\t const byteArray = [];\n\t for (let i = 0; i < str.length; ++i) {\n\t if ((units -= 2) < 0) break\n\n\t c = str.charCodeAt(i);\n\t hi = c >> 8;\n\t lo = c % 256;\n\t byteArray.push(lo);\n\t byteArray.push(hi);\n\t }\n\n\t return byteArray\n\t}\n\n\tfunction base64ToBytes (str) {\n\t return base64.toByteArray(base64clean(str))\n\t}\n\n\tfunction blitBuffer (src, dst, offset, length) {\n\t let i;\n\t for (i = 0; i < length; ++i) {\n\t if ((i + offset >= dst.length) || (i >= src.length)) break\n\t dst[i + offset] = src[i];\n\t }\n\t return i\n\t}\n\n\t// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n\t// the `instanceof` check but they should be treated as of that type.\n\t// See: https://github.com/feross/buffer/issues/166\n\tfunction isInstance (obj, type) {\n\t return obj instanceof type ||\n\t (obj != null && obj.constructor != null && obj.constructor.name != null &&\n\t obj.constructor.name === type.name)\n\t}\n\tfunction numberIsNaN (obj) {\n\t // For IE11 support\n\t return obj !== obj // eslint-disable-line no-self-compare\n\t}\n\n\t// Create lookup table for `toString('hex')`\n\t// See: https://github.com/feross/buffer/issues/219\n\tconst hexSliceLookupTable = (function () {\n\t const alphabet = '0123456789abcdef';\n\t const table = new Array(256);\n\t for (let i = 0; i < 16; ++i) {\n\t const i16 = i * 16;\n\t for (let j = 0; j < 16; ++j) {\n\t table[i16 + j] = alphabet[i] + alphabet[j];\n\t }\n\t }\n\t return table\n\t})();\n\n\t// Return not function with Error if BigInt not supported\n\tfunction defineBigIntMethod (fn) {\n\t return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n\t}\n\n\tfunction BufferBigIntNotDefined () {\n\t throw new Error('BigInt not supported')\n\t} \n} (buffer));\n\nconst Buffer = buffer.Buffer;\n\nconst Blob = buffer.Blob;\nconst BlobOptions = buffer.BlobOptions;\nconst Buffer$1 = buffer.Buffer;\nconst File = buffer.File;\nconst FileOptions = buffer.FileOptions;\nconst INSPECT_MAX_BYTES = buffer.INSPECT_MAX_BYTES;\nconst SlowBuffer = buffer.SlowBuffer;\nconst TranscodeEncoding = buffer.TranscodeEncoding;\nconst atob = buffer.atob;\nconst btoa = buffer.btoa;\nconst constants = buffer.constants;\nconst isAscii = buffer.isAscii;\nconst isUtf8 = buffer.isUtf8;\nconst kMaxLength = buffer.kMaxLength;\nconst kStringMaxLength = buffer.kStringMaxLength;\nconst resolveObjectURL = buffer.resolveObjectURL;\nconst transcode = buffer.transcode;\nexport { Blob, BlobOptions, Buffer$1 as Buffer, File, FileOptions, INSPECT_MAX_BYTES, SlowBuffer, TranscodeEncoding, atob, btoa, constants, Buffer as default, isAscii, isUtf8, kMaxLength, kStringMaxLength, resolveObjectURL, transcode };\n//# sourceMappingURL=index.js.map\n","/*\n *\n * Hedera Wallet Connect\n *\n * Copyright (C) 2023 Hedera Hashgraph, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n/**\n * Enum representing different Hedera network chain IDs.\n *\n * @see {@link https://github.com/hashgraph/hedera-improvement-proposal/blob/main/HIP/hip-820.md#specification | HIP-820 Specification}\n */\nexport var HederaChainId;\n(function (HederaChainId) {\n HederaChainId[\"Mainnet\"] = \"hedera:mainnet\";\n HederaChainId[\"Testnet\"] = \"hedera:testnet\";\n HederaChainId[\"Previewnet\"] = \"hedera:previewnet\";\n HederaChainId[\"Devnet\"] = \"hedera:devnet\";\n})(HederaChainId || (HederaChainId = {}));\n","/*\n *\n * Hedera Wallet Connect\n *\n * Copyright (C) 2023 Hedera Hashgraph, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n/**\n * Represents different events related to a Hedera session.\n */\nexport var HederaSessionEvent;\n(function (HederaSessionEvent) {\n HederaSessionEvent[\"AccountsChanged\"] = \"accountsChanged\";\n HederaSessionEvent[\"ChainChanged\"] = \"chainChanged\";\n})(HederaSessionEvent || (HederaSessionEvent = {}));\n","/*\n *\n * Hedera Wallet Connect\n *\n * Copyright (C) 2023 Hedera Hashgraph, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n/**\n * Enum representing different JSON-RPC methods related to Hedera.\n * The methods are ordered alphabetically for ease of use and readability.\n */\nexport var HederaJsonRpcMethod;\n(function (HederaJsonRpcMethod) {\n HederaJsonRpcMethod[\"GetNodeAddresses\"] = \"hedera_getNodeAddresses\";\n HederaJsonRpcMethod[\"ExecuteTransaction\"] = \"hedera_executeTransaction\";\n HederaJsonRpcMethod[\"SignMessage\"] = \"hedera_signMessage\";\n HederaJsonRpcMethod[\"SignAndExecuteQuery\"] = \"hedera_signAndExecuteQuery\";\n HederaJsonRpcMethod[\"SignAndExecuteTransaction\"] = \"hedera_signAndExecuteTransaction\";\n HederaJsonRpcMethod[\"SignTransaction\"] = \"hedera_signTransaction\";\n})(HederaJsonRpcMethod || (HederaJsonRpcMethod = {}));\n","/*\n *\n * Hedera Wallet Connect\n *\n * Copyright (C) 2023 Hedera Hashgraph, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nimport { Buffer } from 'buffer';\nimport { AccountId, Transaction, LedgerId, Query, } from '@hashgraph/sdk';\nimport { proto } from '@hashgraph/proto';\n/**\n * Freezes a transaction if it is not already frozen. Transactions must\n * be frozen before they can be converted to bytes.\n *\n * @param transaction - Any instance of a class that extends `Transaction`\n */\nexport function freezeTransaction(transaction) {\n if (!transaction.isFrozen())\n transaction.freeze();\n}\n/**\n * Sets default consensus nodes that a transaction will be submitted to. Node Account ID(s)\n * must be set before a transaction can be frozen. If they have already been set, this\n * function will not modify the transaction.\n * @param transaction - any instance of a class that extends `Transaction`\n *\n * @see {@link https://docs.hedera.com/hedera/networks/testnet/testnet-nodes | Full list of Testnet-nodes}\n * @see {@link https://docs.hedera.com/hedera/networks/mainnet/mainnet-nodes | Full list of Mainnet-nodes}\n */\nexport function setDefaultNodeAccountIds(transaction) {\n const isNodeAccountIdNotSet = !transaction.nodeAccountIds || transaction.nodeAccountIds.length === 0;\n if (!transaction.isFrozen() && isNodeAccountIdNotSet)\n transaction.setNodeAccountIds([new AccountId(3), new AccountId(4), new AccountId(5)]);\n}\n/**\n * Converts `Transaction` to a Base64-string.\n *\n * First converts a transaction to bytes and then encodes it as a Base64-string. Will attempt\n * to set default Node Account ID and freeze the transaction before converting.\n * @param transaction - Any instance of a class that extends `Transaction`\n * @returns Base64 encoded representation of the input `Transaction` object\n */\nexport function transactionToBase64String(transaction) {\n setDefaultNodeAccountIds(transaction);\n freezeTransaction(transaction);\n const transactionBytes = transaction.toBytes();\n return Buffer.from(transactionBytes).toString('base64');\n}\n/**\n * Recreates a `Transaction` from a base64 encoded string.\n *\n * Decodes the string to a buffer,\n * then passes to `Transaction.fromBytes`. For greater flexibility, this function uses the base\n * `Transaction` class, but takes an optional type parameter if the type of transaction is known,\n * allowing stronger typeing.\n * @param transactionBytes - a base64 encoded string\n * @returns `Transaction`\n * @example\n * ```ts\n * const txn1 = base64StringToTransaction(bytesString)\n * const txn2 = base64StringToTransaction(bytesString)\n * // txn1 type: Transaction\n * // txn2 type: TransferTransaction\n * ```\n */\nexport function base64StringToTransaction(transactionBytes) {\n const decoded = Buffer.from(transactionBytes, 'base64');\n return Transaction.fromBytes(decoded);\n}\n/**\n * @param transaction - a base64 encoded string of proto.TransactionBody.encode().finish()\n * @returns `string`\n * */\nexport function transactionToTransactionBody(transaction, nodeAccountId) {\n // This is a private function, though provides the capabilities to construct a proto.TransactionBody\n //@ts-ignore\n return transaction._makeTransactionBody(nodeAccountId);\n}\nexport function transactionBodyToBase64String(transactionBody) {\n return Uint8ArrayToBase64String(proto.TransactionBody.encode(transactionBody).finish());\n}\n/**\n * @param transactionList - a proto.TransactionList object\n * @returns `string`\n * */\nexport function transactionListToBase64String(transactionList) {\n const encoded = proto.TransactionList.encode(transactionList).finish();\n return Uint8ArrayToBase64String(encoded);\n}\n/**\n * Extracts the first signature from a proto.SignatureMap object.\n * @param signatureMap - a proto.SignatureMap object\n * @returns `Uint8Array`\n * */\nexport const extractFirstSignature = (signatureMap) => {\n var _a;\n const firstPair = (_a = signatureMap === null || signatureMap === void 0 ? void 0 : signatureMap.sigPair) === null || _a === void 0 ? void 0 : _a[0];\n const firstSignature = (firstPair === null || firstPair === void 0 ? void 0 : firstPair.ed25519) || (firstPair === null || firstPair === void 0 ? void 0 : firstPair.ECDSASecp256k1) || (firstPair === null || firstPair === void 0 ? void 0 : firstPair.ECDSA_384);\n if (!firstSignature) {\n throw new Error('No signatures found in response');\n }\n return firstSignature;\n};\n/**\n * Decodes base64 encoded proto.TransactionBody bytes to a `proto.TransactionBody` object.\n *\n * @param transactionBody - a base64 encoded string of proto.TransactionBody.encode().finish()\n * @returns `Transaction`\n *\n * */\nexport function base64StringToTransactionBody(transactionBody) {\n const bytes = Buffer.from(transactionBody, 'base64');\n return proto.TransactionBody.decode(bytes);\n}\n/**\n * Converts a `proto.SignatureMap` to a base64 encoded string.\n *\n * First converts the `proto.SignatureMap` object to a JSON.\n * Then encodes the JSON to a base64 encoded string.\n * @param signatureMap - The `proto.SignatureMap` object to be converted\n * @returns Base64-encoded string representation of the input `proto.SignatureMap`\n */\nexport function signatureMapToBase64String(signatureMap) {\n const encoded = proto.SignatureMap.encode(signatureMap).finish();\n return Uint8ArrayToBase64String(encoded);\n}\n/**\n * Converts a Base64-encoded string to a `proto.SignatureMap`.\n * @param base64string - Base64-encoded string\n * @returns `proto.SignatureMap`\n */\nexport function base64StringToSignatureMap(base64string) {\n const encoded = Buffer.from(base64string, 'base64');\n return proto.SignatureMap.decode(encoded);\n}\n/**\n * Encodes the binary data represented by the `Uint8Array` to a Base64 string.\n * @param binary - The `Uint8Array` containing binary data to be converted\n * @returns Base64-encoded string representation of the input `Uint8Array`\n */\nexport function Uint8ArrayToBase64String(binary) {\n return Buffer.from(binary).toString('base64');\n}\n/**\n * Encodes the binary data represented by the `Uint8Array` to a UTF-8 string.\n * @param binary - The `Uint8Array` containing binary data to be converted\n * @returns UTF-8 string representation of the input `Uint8Array`\n */\nexport function Uint8ArrayToString(binary) {\n return Buffer.from(binary).toString('utf-8');\n}\n/**\n * Converts a Base64-encoded string to a `Uint8Array`.\n * @param base64string - Base64-encoded string to be converted\n * @returns A `Uint8Array` representing the decoded binary data\n */\nexport function base64StringToUint8Array(base64string) {\n const encoded = Buffer.from(base64string, 'base64');\n return new Uint8Array(encoded);\n}\n/**\n * Converts a `Query` object to a Base64-encoded string.\n * First utilizes the `toBytes` method of the `Query` instance to obtain its binary `Uint8Array` representation.\n * Then encodes the binary `Uint8Array` to a Base64 string representation.\n * @param query - A `Query` object to be converted\n * @returns Base64 encoded representation of the input `Query` object\n */\nexport function queryToBase64String(query) {\n const queryBytes = query.toBytes();\n return Buffer.from(queryBytes).toString('base64');\n}\n/**\n * Recreates a `Query` from a Base64-encoded string. First decodes the string to a buffer,\n * then passes to `Query.fromBytes`. For greater flexibility, this function uses the base\n * `Query` class, but takes an optional type parameter if the type of query is known,\n * allowing stronger typeing.\n * @param bytesString - Base64-encoded string\n * @returns `Query`\n * @example\n * ```ts\n * const query1 = base64StringToQuery(bytesString)\n * const query2 = base64StringToQuery(bytesString)\n * // query1 type: Query\n * // query2 type: AccountInfoQuery\n * ```\n */\nexport function base64StringToQuery(bytesString) {\n const decoded = Buffer.from(bytesString, 'base64');\n return Query.fromBytes(decoded);\n}\nexport function prefixMessageToSign(message) {\n return '\\x19Hedera Signed Message:\\n' + message.length + message;\n}\n/**\n * Incorporates additional data (salt) into the message to alter the output signature.\n * This alteration ensures that passing a transaction here for signing will yield an invalid signature,\n * as the additional data modifies the signature text.\n *\n * @param message - A plain text string\n * @returns An array of Uint8Array containing the prepared message for signing\n */\nexport function stringToSignerMessage(message) {\n return [Buffer.from(prefixMessageToSign(message))];\n}\n/**\n * This implementation expects a plain text string, which is prefixed and then signed by a wallet.\n * Because the spec calls for 1 message to be signed and 1 signer, this function expects a single\n * signature and used the first item in the sigPair array.\n *\n * @param message - A plain text string\n * @param base64SignatureMap - A base64 encoded proto.SignatureMap object\n * @param publicKey - A PublicKey object use to verify the signature\n * @returns boolean - whether or not the first signature in the sigPair is valid for the message and public key\n */\nexport function verifyMessageSignature(message, base64SignatureMap, publicKey) {\n const signatureMap = base64StringToSignatureMap(base64SignatureMap);\n const signature = signatureMap.sigPair[0].ed25519 || signatureMap.sigPair[0].ECDSASecp256k1;\n if (!signature)\n throw new Error('Signature not found in signature map');\n return publicKey.verify(Buffer.from(prefixMessageToSign(message)), signature);\n}\n/**\n * This implementation expects a plain text string, which is prefixed and then signed by a wallet.\n * Because the spec calls for 1 message to be signed and 1 signer, this function expects a single\n * signature and used the first item in the sigPair array.\n *\n * @param message - A plain text string\n * @param signerSignature - A SignerSignature object\n * @param publicKey - A PublicKey object use to verify the signature\n * @returns boolean - whether or not the first signature in the sigPair is valid for the message and public key\n */\nexport function verifySignerSignature(message, signerSignature, publicKey) {\n const signature = signerSignature.signature;\n if (!signature)\n throw new Error('Signature not found in signature map');\n return publicKey.verify(Buffer.from(prefixMessageToSign(message)), signature);\n}\n/**\n *\n * https://github.com/hashgraph/hedera-sdk-js/blob/c78512b1d43eedf1d8bf2926a5b7ed3368fc39d1/src/PublicKey.js#L258\n * a signature pair is a protobuf object with a signature and a public key, it is the responsibility of a dApp to ensure the public key matches the account id\n * @param signerSignatures - An array of `SignerSignature` objects\n * @returns `proto.SignatureMap` object\n */\nexport function signerSignaturesToSignatureMap(signerSignatures) {\n const signatureMap = proto.SignatureMap.create({\n sigPair: signerSignatures.map((s) => s.publicKey._toProtobufSignature(s.signature)),\n });\n return signatureMap;\n}\n/**\n * A mapping of `LedgerId` to EIP chain id and CAIP-2 network name.\n *\n * Structure: [`LedgerId`, `number` (EIP155 chain id), `string` (CAIP-2 chain id)][]\n *\n * @see {@link https://namespaces.chainagnostic.org/hedera/README | Hedera Namespaces}\n * @see {@link https://hips.hedera.com/hip/hip-30 | CAIP Identifiers for the Hedera Network (HIP-30)}\n */\nexport const LEDGER_ID_MAPPINGS = [\n [LedgerId.MAINNET, 295, 'hedera:mainnet'],\n [LedgerId.TESTNET, 296, 'hedera:testnet'],\n [LedgerId.PREVIEWNET, 297, 'hedera:previewnet'],\n [LedgerId.LOCAL_NODE, 298, 'hedera:devnet'],\n];\nconst DEFAULT_LEDGER_ID = LedgerId.LOCAL_NODE;\nconst DEFAULT_EIP = LEDGER_ID_MAPPINGS[3][1];\nconst DEFAULT_CAIP = LEDGER_ID_MAPPINGS[3][2];\n/**\n * Converts an EIP chain id to a LedgerId object.\n *\n * If no mapping is found, returns `LedgerId.LOCAL_NODE`.\n *\n * @param chainId - The EIP chain ID (number) to be converted\n * @returns A `LedgerId` corresponding to the provided chain ID\n * @example\n * ```ts\n * const localnodeLedgerId = EIPChainIdToLedgerId(298)\n * console.log(localnodeLedgerId) // LedgerId.LOCAL_NODE\n * const mainnetLedgerId = EIPChainIdToLedgerId(295)\n * console.log(mainnetLedgerId) // LedgerId.MAINNET\n * ```\n */\nexport function EIPChainIdToLedgerId(chainId) {\n for (let i = 0; i < LEDGER_ID_MAPPINGS.length; i++) {\n const [ledgerId, chainId_] = LEDGER_ID_MAPPINGS[i];\n if (chainId === chainId_) {\n return ledgerId;\n }\n }\n return DEFAULT_LEDGER_ID;\n}\n/**\n * Converts a LedgerId object to an EIP chain id.\n *\n * If no mapping is found, returns the EIP chain id for `LedgerId.LOCAL_NODE`.\n *\n * @param ledgerId - The `LedgerId` object to be converted\n * @returns A `number` representing the EIP chain id for the provided `LedgerId`\n * @example\n * ```ts\n * const previewnetChainId = ledgerIdToEIPChainId(LedgerId.PREVIEWNET)\n * console.log(previewnetChainId) // 297\n * const testnetChainId = ledgerIdToEIPChainId(LedgerId.TESTNET)\n * console.log(testnetChainId) // 296\n * ```\n */\nexport function ledgerIdToEIPChainId(ledgerId) {\n for (let i = 0; i < LEDGER_ID_MAPPINGS.length; i++) {\n const [ledgerId_, chainId] = LEDGER_ID_MAPPINGS[i];\n if (ledgerId === ledgerId_) {\n return chainId;\n }\n }\n return DEFAULT_EIP;\n}\n/**\n * Converts a network name to an EIP chain id.\n * If no mapping is found, returns the EIP chain id for `LedgerId.LOCAL_NODE`.\n *\n * @param networkName - The network name (string) to be converted\n * @returns A `number` representing the EIP chain id for the provided network name\n * @example\n * ```ts\n * const mainnetChainId = networkNameToEIPChainId('mainnet')\n * console.log(mainnetChainId) // 295\n * const testnetChainId = networkNameToEIPChainId('testnet')\n * console.log(mainnetChainId) // 296\n * ```\n */\nexport function networkNameToEIPChainId(networkName) {\n const ledgerId = LedgerId.fromString(networkName.toLowerCase());\n return ledgerIdToEIPChainId(ledgerId);\n}\n/**\n * Converts a CAIP chain id to a LedgerId object.\n *\n * If no mapping is found, returns `LedgerId.LOCAL_NODE`.\n *\n * @param chainId - The CAIP chain ID (string) to be converted\n * @returns A `LedgerId` corresponding to the provided CAIP chain ID\n * @example\n * ```ts\n * const previewnetLedgerId = CAIPChainIdToLedgerId(HederaChainId.Previewnet)\n * console.log(previewnetLedgerId) // LedgerId.PREVIEWNET\n * const testnetLedgerId = CAIPChainIdToLedgerId(HederaChainId.Testnet)\n * console.log(testnetLedgerId) // LedgerId.TESTNET\n * ```\n */\nexport function CAIPChainIdToLedgerId(chainId) {\n for (let i = 0; i < LEDGER_ID_MAPPINGS.length; i++) {\n const [ledgerId, _, chainId_] = LEDGER_ID_MAPPINGS[i];\n if (chainId === chainId_) {\n return ledgerId;\n }\n }\n return DEFAULT_LEDGER_ID;\n}\n/**\n * Converts a LedgerId object to a CAIP chain id.\n *\n * If no mapping is found, returns the CAIP chain id for `LedgerId.LOCAL_NODE`.\n *\n * @param ledgerId - The `LedgerId` object to be converted\n * @returns A `string` representing the CAIP chain id for the provided `LedgerId`\n * @example\n * ```ts\n * const mainnetChainId = ledgerIdToCAIPChainId(HederaChainId.Mainnet)\n * console.log(mainnetChainId) // LedgerId.PREVIEWNET\n * const testnetChainId = ledgerIdToCAIPChainId(HederaChainId.Testnet)\n * console.log(testnetChainId) // LedgerId.TESTNET\n * ```\n */\nexport function ledgerIdToCAIPChainId(ledgerId) {\n for (let i = 0; i < LEDGER_ID_MAPPINGS.length; i++) {\n const [ledgerId_, _, chainId] = LEDGER_ID_MAPPINGS[i];\n if (ledgerId.toString() === ledgerId_.toString()) {\n return chainId;\n }\n }\n return DEFAULT_CAIP;\n}\n/**\n * Converts a network name to a CAIP chain id.\n *\n * If no mapping is found, returns the CAIP chain id for `LedgerId.LOCAL_NODE`.\n *\n * @param networkName - The network name (string) to be converted\n * @returns A `string` representing the CAIP chain id for the provided network name\n * @example\n * ```ts\n * const previewnetChainId = networkNameToCAIPChainId('previewnet')\n * console.log(previewnetChainId) // HederaChainId.Previewnet\n * const devnetChainId = networkNameToCAIPChainId('devnet')\n * console.log(devnetChainId) // HederaChainId.Devnet\n * ```\n */\nexport function networkNameToCAIPChainId(networkName) {\n const ledgerId = LedgerId.fromString(networkName.toLowerCase());\n const chainId = ledgerIdToCAIPChainId(ledgerId);\n return chainId;\n}\n/**\n * Create a `ProposalTypes.RequiredNamespaces` object for a given ledgerId.\n *\n * @param ledgerId - The `LedgerId` for which the namespaces are created\n * @param methods - An array of strings representing methods\n * @param events - An array of strings representing events\n * @returns A `ProposalTypes.RequiredNamespaces` object\n */\nexport const networkNamespaces = (ledgerId, methods, events) => ({\n hedera: {\n chains: [ledgerIdToCAIPChainId(ledgerId)],\n methods,\n events,\n },\n});\n/**\n * Get the account and ledger from a `SessionTypes.Struct` object.\n *\n * @param session - The `SessionTypes.Struct` object containing namespaces\n * @returns `ProposalTypes.RequiredNamespaces` - an array of objects containing network (LedgerId) and account (AccountId)\n */\nexport const accountAndLedgerFromSession = (session) => {\n const hederaNamespace = session.namespaces.hedera;\n if (!hederaNamespace)\n throw new Error('No hedera namespace found');\n return hederaNamespace.accounts.map((account) => {\n const [chain, network, acc] = account.split(':');\n return {\n network: CAIPChainIdToLedgerId(chain + ':' + network),\n account: AccountId.fromString(acc),\n };\n });\n};\n","export var EVENTS;\n(function (EVENTS) {\n EVENTS[\"extensionQuery\"] = \"hedera-extension-query\";\n EVENTS[\"extensionConnect\"] = \"hedera-extension-connect-\";\n EVENTS[\"extensionOpen\"] = \"hedera-extension-open-\";\n EVENTS[\"extensionResponse\"] = \"hedera-extension-response\";\n EVENTS[\"iframeQuery\"] = \"hedera-iframe-query\";\n EVENTS[\"iframeQueryResponse\"] = \"hedera-iframe-response\";\n EVENTS[\"iframeConnect\"] = \"hedera-iframe-connect\";\n})(EVENTS || (EVENTS = {}));\nexport const findExtensions = (onFound) => {\n if (typeof window === 'undefined')\n return;\n window.addEventListener('message', (event) => {\n var _a, _b;\n if (((_a = event === null || event === void 0 ? void 0 : event.data) === null || _a === void 0 ? void 0 : _a.type) == EVENTS.extensionResponse && event.data.metadata) {\n onFound(event.data.metadata, false);\n }\n if (((_b = event === null || event === void 0 ? void 0 : event.data) === null || _b === void 0 ? void 0 : _b.type) == EVENTS.iframeQueryResponse && event.data.metadata) {\n onFound(event.data.metadata, true);\n }\n });\n setTimeout(() => {\n extensionQuery();\n }, 200);\n};\nexport const extensionQuery = () => {\n window.postMessage({ type: EVENTS.extensionQuery }, '*');\n if (window.parent) {\n window.parent.postMessage({ type: EVENTS.iframeQuery }, '*');\n }\n};\nexport const extensionConnect = (id, isIframe, pairingString) => {\n if (isIframe) {\n window.parent.postMessage({ type: EVENTS.iframeConnect, pairingString }, '*');\n return;\n }\n window.postMessage({ type: EVENTS.extensionConnect + id, pairingString }, '*');\n};\nexport const extensionOpen = (id) => {\n window.postMessage({ type: EVENTS.extensionOpen + id }, '*');\n};\n","'use strict'\nfunction tryStringify (o) {\n try { return JSON.stringify(o) } catch(e) { return '\"[Circular]\"' }\n}\n\nmodule.exports = format\n\nfunction format(f, args, opts) {\n var ss = (opts && opts.stringify) || tryStringify\n var offset = 1\n if (typeof f === 'object' && f !== null) {\n var len = args.length + offset\n if (len === 1) return f\n var objects = new Array(len)\n objects[0] = ss(f)\n for (var index = 1; index < len; index++) {\n objects[index] = ss(args[index])\n }\n return objects.join(' ')\n }\n if (typeof f !== 'string') {\n return f\n }\n var argLen = args.length\n if (argLen === 0) return f\n var str = ''\n var a = 1 - offset\n var lastPos = -1\n var flen = (f && f.length) || 0\n for (var i = 0; i < flen;) {\n if (f.charCodeAt(i) === 37 && i + 1 < flen) {\n lastPos = lastPos > -1 ? lastPos : 0\n switch (f.charCodeAt(i + 1)) {\n case 100: // 'd'\n case 102: // 'f'\n if (a >= argLen)\n break\n if (args[a] == null) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += Number(args[a])\n lastPos = i + 2\n i++\n break\n case 105: // 'i'\n if (a >= argLen)\n break\n if (args[a] == null) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += Math.floor(Number(args[a]))\n lastPos = i + 2\n i++\n break\n case 79: // 'O'\n case 111: // 'o'\n case 106: // 'j'\n if (a >= argLen)\n break\n if (args[a] === undefined) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n var type = typeof args[a]\n if (type === 'string') {\n str += '\\'' + args[a] + '\\''\n lastPos = i + 2\n i++\n break\n }\n if (type === 'function') {\n str += args[a].name || ''\n lastPos = i + 2\n i++\n break\n }\n str += ss(args[a])\n lastPos = i + 2\n i++\n break\n case 115: // 's'\n if (a >= argLen)\n break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += String(args[a])\n lastPos = i + 2\n i++\n break\n case 37: // '%'\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += '%'\n lastPos = i + 2\n i++\n a--\n break\n }\n ++a\n }\n ++i\n }\n if (lastPos === -1)\n return f\n else if (lastPos < flen) {\n str += f.slice(lastPos)\n }\n\n return str\n}\n","'use strict'\n\nconst format = require('quick-format-unescaped')\n\nmodule.exports = pino\n\nconst _console = pfGlobalThisOrFallback().console || {}\nconst stdSerializers = {\n mapHttpRequest: mock,\n mapHttpResponse: mock,\n wrapRequestSerializer: passthrough,\n wrapResponseSerializer: passthrough,\n wrapErrorSerializer: passthrough,\n req: mock,\n res: mock,\n err: asErrValue\n}\n\nfunction shouldSerialize (serialize, serializers) {\n if (Array.isArray(serialize)) {\n const hasToFilter = serialize.filter(function (k) {\n return k !== '!stdSerializers.err'\n })\n return hasToFilter\n } else if (serialize === true) {\n return Object.keys(serializers)\n }\n\n return false\n}\n\nfunction pino (opts) {\n opts = opts || {}\n opts.browser = opts.browser || {}\n\n const transmit = opts.browser.transmit\n if (transmit && typeof transmit.send !== 'function') { throw Error('pino: transmit option must have a send function') }\n\n const proto = opts.browser.write || _console\n if (opts.browser.write) opts.browser.asObject = true\n const serializers = opts.serializers || {}\n const serialize = shouldSerialize(opts.browser.serialize, serializers)\n let stdErrSerialize = opts.browser.serialize\n\n if (\n Array.isArray(opts.browser.serialize) &&\n opts.browser.serialize.indexOf('!stdSerializers.err') > -1\n ) stdErrSerialize = false\n\n const levels = ['error', 'fatal', 'warn', 'info', 'debug', 'trace']\n\n if (typeof proto === 'function') {\n proto.error = proto.fatal = proto.warn =\n proto.info = proto.debug = proto.trace = proto\n }\n if (opts.enabled === false) opts.level = 'silent'\n const level = opts.level || 'info'\n const logger = Object.create(proto)\n if (!logger.log) logger.log = noop\n\n Object.defineProperty(logger, 'levelVal', {\n get: getLevelVal\n })\n Object.defineProperty(logger, 'level', {\n get: getLevel,\n set: setLevel\n })\n\n const setOpts = {\n transmit,\n serialize,\n asObject: opts.browser.asObject,\n levels,\n timestamp: getTimeFunction(opts)\n }\n logger.levels = pino.levels\n logger.level = level\n\n logger.setMaxListeners = logger.getMaxListeners =\n logger.emit = logger.addListener = logger.on =\n logger.prependListener = logger.once =\n logger.prependOnceListener = logger.removeListener =\n logger.removeAllListeners = logger.listeners =\n logger.listenerCount = logger.eventNames =\n logger.write = logger.flush = noop\n logger.serializers = serializers\n logger._serialize = serialize\n logger._stdErrSerialize = stdErrSerialize\n logger.child = child\n\n if (transmit) logger._logEvent = createLogEventShape()\n\n function getLevelVal () {\n return this.level === 'silent'\n ? Infinity\n : this.levels.values[this.level]\n }\n\n function getLevel () {\n return this._level\n }\n function setLevel (level) {\n if (level !== 'silent' && !this.levels.values[level]) {\n throw Error('unknown level ' + level)\n }\n this._level = level\n\n set(setOpts, logger, 'error', 'log') // <-- must stay first\n set(setOpts, logger, 'fatal', 'error')\n set(setOpts, logger, 'warn', 'error')\n set(setOpts, logger, 'info', 'log')\n set(setOpts, logger, 'debug', 'log')\n set(setOpts, logger, 'trace', 'log')\n }\n\n function child (bindings, childOptions) {\n if (!bindings) {\n throw new Error('missing bindings for child Pino')\n }\n childOptions = childOptions || {}\n if (serialize && bindings.serializers) {\n childOptions.serializers = bindings.serializers\n }\n const childOptionsSerializers = childOptions.serializers\n if (serialize && childOptionsSerializers) {\n var childSerializers = Object.assign({}, serializers, childOptionsSerializers)\n var childSerialize = opts.browser.serialize === true\n ? Object.keys(childSerializers)\n : serialize\n delete bindings.serializers\n applySerializers([bindings], childSerialize, childSerializers, this._stdErrSerialize)\n }\n function Child (parent) {\n this._childLevel = (parent._childLevel | 0) + 1\n this.error = bind(parent, bindings, 'error')\n this.fatal = bind(parent, bindings, 'fatal')\n this.warn = bind(parent, bindings, 'warn')\n this.info = bind(parent, bindings, 'info')\n this.debug = bind(parent, bindings, 'debug')\n this.trace = bind(parent, bindings, 'trace')\n if (childSerializers) {\n this.serializers = childSerializers\n this._serialize = childSerialize\n }\n if (transmit) {\n this._logEvent = createLogEventShape(\n [].concat(parent._logEvent.bindings, bindings)\n )\n }\n }\n Child.prototype = this\n return new Child(this)\n }\n return logger\n}\n\npino.levels = {\n values: {\n fatal: 60,\n error: 50,\n warn: 40,\n info: 30,\n debug: 20,\n trace: 10\n },\n labels: {\n 10: 'trace',\n 20: 'debug',\n 30: 'info',\n 40: 'warn',\n 50: 'error',\n 60: 'fatal'\n }\n}\n\npino.stdSerializers = stdSerializers\npino.stdTimeFunctions = Object.assign({}, { nullTime, epochTime, unixTime, isoTime })\n\nfunction set (opts, logger, level, fallback) {\n const proto = Object.getPrototypeOf(logger)\n logger[level] = logger.levelVal > logger.levels.values[level]\n ? noop\n : (proto[level] ? proto[level] : (_console[level] || _console[fallback] || noop))\n\n wrap(opts, logger, level)\n}\n\nfunction wrap (opts, logger, level) {\n if (!opts.transmit && logger[level] === noop) return\n\n logger[level] = (function (write) {\n return function LOG () {\n const ts = opts.timestamp()\n const args = new Array(arguments.length)\n const proto = (Object.getPrototypeOf && Object.getPrototypeOf(this) === _console) ? _console : this\n for (var i = 0; i < args.length; i++) args[i] = arguments[i]\n\n if (opts.serialize && !opts.asObject) {\n applySerializers(args, this._serialize, this.serializers, this._stdErrSerialize)\n }\n if (opts.asObject) write.call(proto, asObject(this, level, args, ts))\n else write.apply(proto, args)\n\n if (opts.transmit) {\n const transmitLevel = opts.transmit.level || logger.level\n const transmitValue = pino.levels.values[transmitLevel]\n const methodValue = pino.levels.values[level]\n if (methodValue < transmitValue) return\n transmit(this, {\n ts,\n methodLevel: level,\n methodValue,\n transmitLevel,\n transmitValue: pino.levels.values[opts.transmit.level || logger.level],\n send: opts.transmit.send,\n val: logger.levelVal\n }, args)\n }\n }\n })(logger[level])\n}\n\nfunction asObject (logger, level, args, ts) {\n if (logger._serialize) applySerializers(args, logger._serialize, logger.serializers, logger._stdErrSerialize)\n const argsCloned = args.slice()\n let msg = argsCloned[0]\n const o = {}\n if (ts) {\n o.time = ts\n }\n o.level = pino.levels.values[level]\n let lvl = (logger._childLevel | 0) + 1\n if (lvl < 1) lvl = 1\n // deliberate, catching objects, arrays\n if (msg !== null && typeof msg === 'object') {\n while (lvl-- && typeof argsCloned[0] === 'object') {\n Object.assign(o, argsCloned.shift())\n }\n msg = argsCloned.length ? format(argsCloned.shift(), argsCloned) : undefined\n } else if (typeof msg === 'string') msg = format(argsCloned.shift(), argsCloned)\n if (msg !== undefined) o.msg = msg\n return o\n}\n\nfunction applySerializers (args, serialize, serializers, stdErrSerialize) {\n for (const i in args) {\n if (stdErrSerialize && args[i] instanceof Error) {\n args[i] = pino.stdSerializers.err(args[i])\n } else if (typeof args[i] === 'object' && !Array.isArray(args[i])) {\n for (const k in args[i]) {\n if (serialize && serialize.indexOf(k) > -1 && k in serializers) {\n args[i][k] = serializers[k](args[i][k])\n }\n }\n }\n }\n}\n\nfunction bind (parent, bindings, level) {\n return function () {\n const args = new Array(1 + arguments.length)\n args[0] = bindings\n for (var i = 1; i < args.length; i++) {\n args[i] = arguments[i - 1]\n }\n return parent[level].apply(this, args)\n }\n}\n\nfunction transmit (logger, opts, args) {\n const send = opts.send\n const ts = opts.ts\n const methodLevel = opts.methodLevel\n const methodValue = opts.methodValue\n const val = opts.val\n const bindings = logger._logEvent.bindings\n\n applySerializers(\n args,\n logger._serialize || Object.keys(logger.serializers),\n logger.serializers,\n logger._stdErrSerialize === undefined ? true : logger._stdErrSerialize\n )\n logger._logEvent.ts = ts\n logger._logEvent.messages = args.filter(function (arg) {\n // bindings can only be objects, so reference equality check via indexOf is fine\n return bindings.indexOf(arg) === -1\n })\n\n logger._logEvent.level.label = methodLevel\n logger._logEvent.level.value = methodValue\n\n send(methodLevel, logger._logEvent, val)\n\n logger._logEvent = createLogEventShape(bindings)\n}\n\nfunction createLogEventShape (bindings) {\n return {\n ts: 0,\n messages: [],\n bindings: bindings || [],\n level: { label: '', value: 0 }\n }\n}\n\nfunction asErrValue (err) {\n const obj = {\n type: err.constructor.name,\n msg: err.message,\n stack: err.stack\n }\n for (const key in err) {\n if (obj[key] === undefined) {\n obj[key] = err[key]\n }\n }\n return obj\n}\n\nfunction getTimeFunction (opts) {\n if (typeof opts.timestamp === 'function') {\n return opts.timestamp\n }\n if (opts.timestamp === false) {\n return nullTime\n }\n return epochTime\n}\n\nfunction mock () { return {} }\nfunction passthrough (a) { return a }\nfunction noop () {}\n\nfunction nullTime () { return false }\nfunction epochTime () { return Date.now() }\nfunction unixTime () { return Math.round(Date.now() / 1000.0) }\nfunction isoTime () { return new Date(Date.now()).toISOString() } // using Date.now() for testability\n\n/* eslint-disable */\n/* istanbul ignore next */\nfunction pfGlobalThisOrFallback () {\n function defd (o) { return typeof o !== 'undefined' && o }\n try {\n if (typeof globalThis !== 'undefined') return globalThis\n Object.defineProperty(Object.prototype, 'globalThis', {\n get: function () {\n delete Object.prototype.globalThis\n return (this.globalThis = this)\n },\n configurable: true\n })\n return globalThis\n } catch (e) {\n return defd(self) || defd(window) || defd(this) || {}\n }\n}\n/* eslint-enable */\n","import h,{levels as s}from\"pino\";import{default as U}from\"pino\";import{safeJsonStringify as u}from\"@walletconnect/safe-json\";const c={level:\"info\"},n=\"custom_context\",l=1e3*1024;class O{constructor(e){this.nodeValue=e,this.sizeInBytes=new TextEncoder().encode(this.nodeValue).length,this.next=null}get value(){return this.nodeValue}get size(){return this.sizeInBytes}}class d{constructor(e){this.head=null,this.tail=null,this.lengthInNodes=0,this.maxSizeInBytes=e,this.sizeInBytes=0}append(e){const t=new O(e);if(t.size>this.maxSizeInBytes)throw new Error(`[LinkedList] Value too big to insert into list: ${e} with size ${t.size}`);for(;this.size+t.size>this.maxSizeInBytes;)this.shift();this.head?(this.tail&&(this.tail.next=t),this.tail=t):(this.head=t,this.tail=t),this.lengthInNodes++,this.sizeInBytes+=t.size}shift(){if(!this.head)return;const e=this.head;this.head=this.head.next,this.head||(this.tail=null),this.lengthInNodes--,this.sizeInBytes-=e.size}toArray(){const e=[];let t=this.head;for(;t!==null;)e.push(t.value),t=t.next;return e}get length(){return this.lengthInNodes}get size(){return this.sizeInBytes}toOrderedArray(){return Array.from(this)}[Symbol.iterator](){let e=this.head;return{next:()=>{if(!e)return{done:!0,value:null};const t=e.value;return e=e.next,{done:!1,value:t}}}}}class L{constructor(e,t=l){this.level=e??\"error\",this.levelValue=s.values[this.level],this.MAX_LOG_SIZE_IN_BYTES=t,this.logs=new d(this.MAX_LOG_SIZE_IN_BYTES)}forwardToConsole(e,t){t===s.values.error?console.error(e):t===s.values.warn?console.warn(e):t===s.values.debug?console.debug(e):t===s.values.trace?console.trace(e):console.log(e)}appendToLogs(e){this.logs.append(u({timestamp:new Date().toISOString(),log:e}));const t=typeof e==\"string\"?JSON.parse(e).level:e.level;t>=this.levelValue&&this.forwardToConsole(e,t)}getLogs(){return this.logs}clearLogs(){this.logs=new d(this.MAX_LOG_SIZE_IN_BYTES)}getLogArray(){return Array.from(this.logs)}logsToBlob(e){const t=this.getLogArray();return t.push(u({extraMetadata:e})),new Blob(t,{type:\"application/json\"})}}class m{constructor(e,t=l){this.baseChunkLogger=new L(e,t)}write(e){this.baseChunkLogger.appendToLogs(e)}getLogs(){return this.baseChunkLogger.getLogs()}clearLogs(){this.baseChunkLogger.clearLogs()}getLogArray(){return this.baseChunkLogger.getLogArray()}logsToBlob(e){return this.baseChunkLogger.logsToBlob(e)}downloadLogsBlobInBrowser(e){const t=URL.createObjectURL(this.logsToBlob(e)),o=document.createElement(\"a\");o.href=t,o.download=`walletconnect-logs-${new Date().toISOString()}.txt`,document.body.appendChild(o),o.click(),document.body.removeChild(o),URL.revokeObjectURL(t)}}class B{constructor(e,t=l){this.baseChunkLogger=new L(e,t)}write(e){this.baseChunkLogger.appendToLogs(e)}getLogs(){return this.baseChunkLogger.getLogs()}clearLogs(){this.baseChunkLogger.clearLogs()}getLogArray(){return this.baseChunkLogger.getLogArray()}logsToBlob(e){return this.baseChunkLogger.logsToBlob(e)}}var x=Object.defineProperty,S=Object.defineProperties,_=Object.getOwnPropertyDescriptors,p=Object.getOwnPropertySymbols,T=Object.prototype.hasOwnProperty,z=Object.prototype.propertyIsEnumerable,f=(r,e,t)=>e in r?x(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,i=(r,e)=>{for(var t in e||(e={}))T.call(e,t)&&f(r,t,e[t]);if(p)for(var t of p(e))z.call(e,t)&&f(r,t,e[t]);return r},g=(r,e)=>S(r,_(e));function k(r){return g(i({},r),{level:r?.level||c.level})}function v(r,e=n){return r[e]||\"\"}function b(r,e,t=n){return r[t]=e,r}function y(r,e=n){let t=\"\";return typeof r.bindings>\"u\"?t=v(r,e):t=r.bindings().context||\"\",t}function w(r,e,t=n){const o=y(r,t);return o.trim()?`${o}/${e}`:e}function E(r,e,t=n){const o=w(r,e,t),a=r.child({context:o});return b(a,o,t)}function C(r){var e,t;const o=new m((e=r.opts)==null?void 0:e.level,r.maxSizeInBytes);return{logger:h(g(i({},r.opts),{level:\"trace\",browser:g(i({},(t=r.opts)==null?void 0:t.browser),{write:a=>o.write(a)})})),chunkLoggerController:o}}function I(r){var e;const t=new B((e=r.opts)==null?void 0:e.level,r.maxSizeInBytes);return{logger:h(g(i({},r.opts),{level:\"trace\"}),t),chunkLoggerController:t}}function A(r){return typeof r.loggerOverride<\"u\"&&typeof r.loggerOverride!=\"string\"?{logger:r.loggerOverride,chunkLoggerController:null}:typeof window<\"u\"?C(r):I(r)}export{l as MAX_LOG_SIZE_IN_BYTES_DEFAULT,n as PINO_CUSTOM_CONTEXT_KEY,c as PINO_LOGGER_DEFAULTS,w as formatChildLoggerContext,E as generateChildLogger,C as generateClientLogger,A as generatePlatformLogger,I as generateServerLogger,v as getBrowserLoggerContext,k as getDefaultLoggerOptions,y as getLoggerContext,U as pino,b as setBrowserLoggerContext};\n//# sourceMappingURL=index.es.js.map\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","export const PARSE_ERROR = \"PARSE_ERROR\";\nexport const INVALID_REQUEST = \"INVALID_REQUEST\";\nexport const METHOD_NOT_FOUND = \"METHOD_NOT_FOUND\";\nexport const INVALID_PARAMS = \"INVALID_PARAMS\";\nexport const INTERNAL_ERROR = \"INTERNAL_ERROR\";\nexport const SERVER_ERROR = \"SERVER_ERROR\";\nexport const RESERVED_ERROR_CODES = [-32700, -32600, -32601, -32602, -32603];\nexport const SERVER_ERROR_CODE_RANGE = [-32000, -32099];\nexport const STANDARD_ERROR_MAP = {\n [PARSE_ERROR]: { code: -32700, message: \"Parse error\" },\n [INVALID_REQUEST]: { code: -32600, message: \"Invalid Request\" },\n [METHOD_NOT_FOUND]: { code: -32601, message: \"Method not found\" },\n [INVALID_PARAMS]: { code: -32602, message: \"Invalid params\" },\n [INTERNAL_ERROR]: { code: -32603, message: \"Internal error\" },\n [SERVER_ERROR]: { code: -32000, message: \"Server error\" },\n};\nexport const DEFAULT_ERROR = SERVER_ERROR;\n//# sourceMappingURL=constants.js.map","import { SERVER_ERROR_CODE_RANGE, RESERVED_ERROR_CODES, STANDARD_ERROR_MAP, DEFAULT_ERROR, } from \"./constants\";\nexport function isServerErrorCode(code) {\n return code <= SERVER_ERROR_CODE_RANGE[0] && code >= SERVER_ERROR_CODE_RANGE[1];\n}\nexport function isReservedErrorCode(code) {\n return RESERVED_ERROR_CODES.includes(code);\n}\nexport function isValidErrorCode(code) {\n return typeof code === \"number\";\n}\nexport function getError(type) {\n if (!Object.keys(STANDARD_ERROR_MAP).includes(type)) {\n return STANDARD_ERROR_MAP[DEFAULT_ERROR];\n }\n return STANDARD_ERROR_MAP[type];\n}\nexport function getErrorByCode(code) {\n const match = Object.values(STANDARD_ERROR_MAP).find(e => e.code === code);\n if (!match) {\n return STANDARD_ERROR_MAP[DEFAULT_ERROR];\n }\n return match;\n}\nexport function validateJsonRpcError(response) {\n if (typeof response.error.code === \"undefined\") {\n return { valid: false, error: \"Missing code for JSON-RPC error\" };\n }\n if (typeof response.error.message === \"undefined\") {\n return { valid: false, error: \"Missing message for JSON-RPC error\" };\n }\n if (!isValidErrorCode(response.error.code)) {\n return {\n valid: false,\n error: `Invalid error code type for JSON-RPC: ${response.error.code}`,\n };\n }\n if (isReservedErrorCode(response.error.code)) {\n const error = getErrorByCode(response.error.code);\n if (error.message !== STANDARD_ERROR_MAP[DEFAULT_ERROR].message &&\n response.error.message === error.message) {\n return {\n valid: false,\n error: `Invalid error code message for JSON-RPC: ${response.error.code}`,\n };\n }\n }\n return { valid: true };\n}\nexport function parseConnectionError(e, url, type) {\n return e.message.includes(\"getaddrinfo ENOTFOUND\") || e.message.includes(\"connect ECONNREFUSED\")\n ? new Error(`Unavailable ${type} RPC url at ${url}`)\n : e;\n}\n//# sourceMappingURL=error.js.map","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isBrowserCryptoAvailable = exports.getSubtleCrypto = exports.getBrowerCrypto = void 0;\nfunction getBrowerCrypto() {\n return (global === null || global === void 0 ? void 0 : global.crypto) || (global === null || global === void 0 ? void 0 : global.msCrypto) || {};\n}\nexports.getBrowerCrypto = getBrowerCrypto;\nfunction getSubtleCrypto() {\n const browserCrypto = getBrowerCrypto();\n return browserCrypto.subtle || browserCrypto.webkitSubtle;\n}\nexports.getSubtleCrypto = getSubtleCrypto;\nfunction isBrowserCryptoAvailable() {\n return !!getBrowerCrypto() && !!getSubtleCrypto();\n}\nexports.isBrowserCryptoAvailable = isBrowserCryptoAvailable;\n//# sourceMappingURL=crypto.js.map","function getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nvar browser = {exports: {}};\n\n// shim for using process in browser\nvar process = browser.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\nvar browserExports = browser.exports;\nconst process$1 = /*@__PURE__*/getDefaultExportFromCjs(browserExports);\n\nexport { process$1 as default, process$1 as process };\n//# sourceMappingURL=index.js.map\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isBrowser = exports.isNode = exports.isReactNative = void 0;\nfunction isReactNative() {\n return (typeof document === \"undefined\" &&\n typeof navigator !== \"undefined\" &&\n navigator.product === \"ReactNative\");\n}\nexports.isReactNative = isReactNative;\nfunction isNode() {\n return (typeof process !== \"undefined\" &&\n typeof process.versions !== \"undefined\" &&\n typeof process.versions.node !== \"undefined\");\n}\nexports.isNode = isNode;\nfunction isBrowser() {\n return !isReactNative() && !isNode();\n}\nexports.isBrowser = isBrowser;\n//# sourceMappingURL=env.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./crypto\"), exports);\ntslib_1.__exportStar(require(\"./env\"), exports);\n//# sourceMappingURL=index.js.map","import { getError, getErrorByCode, isReservedErrorCode } from \"./error\";\nimport { INTERNAL_ERROR, SERVER_ERROR } from \"./constants\";\nexport function payloadId(entropy = 3) {\n const date = Date.now() * Math.pow(10, entropy);\n const extra = Math.floor(Math.random() * Math.pow(10, entropy));\n return date + extra;\n}\nexport function getBigIntRpcId(entropy = 6) {\n return BigInt(payloadId(entropy));\n}\nexport function formatJsonRpcRequest(method, params, id) {\n return {\n id: id || payloadId(),\n jsonrpc: \"2.0\",\n method,\n params,\n };\n}\nexport function formatJsonRpcResult(id, result) {\n return {\n id,\n jsonrpc: \"2.0\",\n result,\n };\n}\nexport function formatJsonRpcError(id, error, data) {\n return {\n id,\n jsonrpc: \"2.0\",\n error: formatErrorMessage(error, data),\n };\n}\nexport function formatErrorMessage(error, data) {\n if (typeof error === \"undefined\") {\n return getError(INTERNAL_ERROR);\n }\n if (typeof error === \"string\") {\n error = Object.assign(Object.assign({}, getError(SERVER_ERROR)), { message: error });\n }\n if (typeof data !== \"undefined\") {\n error.data = data;\n }\n if (isReservedErrorCode(error.code)) {\n error = getErrorByCode(error.code);\n }\n return error;\n}\n//# sourceMappingURL=format.js.map","export function isJsonRpcPayload(payload) {\n return (typeof payload === \"object\" &&\n \"id\" in payload &&\n \"jsonrpc\" in payload &&\n payload.jsonrpc === \"2.0\");\n}\nexport function isJsonRpcRequest(payload) {\n return isJsonRpcPayload(payload) && \"method\" in payload;\n}\nexport function isJsonRpcResponse(payload) {\n return isJsonRpcPayload(payload) && (isJsonRpcResult(payload) || isJsonRpcError(payload));\n}\nexport function isJsonRpcResult(payload) {\n return \"result\" in payload;\n}\nexport function isJsonRpcError(payload) {\n return \"error\" in payload;\n}\nexport function isJsonRpcValidationInvalid(validation) {\n return \"error\" in validation && validation.valid === false;\n}\n//# sourceMappingURL=validators.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.delay = void 0;\nfunction delay(timeout) {\n return new Promise(resolve => {\n setTimeout(() => {\n resolve(true);\n }, timeout);\n });\n}\nexports.delay = delay;\n//# sourceMappingURL=delay.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ONE_THOUSAND = exports.ONE_HUNDRED = void 0;\nexports.ONE_HUNDRED = 100;\nexports.ONE_THOUSAND = 1000;\n//# sourceMappingURL=misc.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ONE_YEAR = exports.FOUR_WEEKS = exports.THREE_WEEKS = exports.TWO_WEEKS = exports.ONE_WEEK = exports.THIRTY_DAYS = exports.SEVEN_DAYS = exports.FIVE_DAYS = exports.THREE_DAYS = exports.ONE_DAY = exports.TWENTY_FOUR_HOURS = exports.TWELVE_HOURS = exports.SIX_HOURS = exports.THREE_HOURS = exports.ONE_HOUR = exports.SIXTY_MINUTES = exports.THIRTY_MINUTES = exports.TEN_MINUTES = exports.FIVE_MINUTES = exports.ONE_MINUTE = exports.SIXTY_SECONDS = exports.THIRTY_SECONDS = exports.TEN_SECONDS = exports.FIVE_SECONDS = exports.ONE_SECOND = void 0;\nexports.ONE_SECOND = 1;\nexports.FIVE_SECONDS = 5;\nexports.TEN_SECONDS = 10;\nexports.THIRTY_SECONDS = 30;\nexports.SIXTY_SECONDS = 60;\nexports.ONE_MINUTE = exports.SIXTY_SECONDS;\nexports.FIVE_MINUTES = exports.ONE_MINUTE * 5;\nexports.TEN_MINUTES = exports.ONE_MINUTE * 10;\nexports.THIRTY_MINUTES = exports.ONE_MINUTE * 30;\nexports.SIXTY_MINUTES = exports.ONE_MINUTE * 60;\nexports.ONE_HOUR = exports.SIXTY_MINUTES;\nexports.THREE_HOURS = exports.ONE_HOUR * 3;\nexports.SIX_HOURS = exports.ONE_HOUR * 6;\nexports.TWELVE_HOURS = exports.ONE_HOUR * 12;\nexports.TWENTY_FOUR_HOURS = exports.ONE_HOUR * 24;\nexports.ONE_DAY = exports.TWENTY_FOUR_HOURS;\nexports.THREE_DAYS = exports.ONE_DAY * 3;\nexports.FIVE_DAYS = exports.ONE_DAY * 5;\nexports.SEVEN_DAYS = exports.ONE_DAY * 7;\nexports.THIRTY_DAYS = exports.ONE_DAY * 30;\nexports.ONE_WEEK = exports.SEVEN_DAYS;\nexports.TWO_WEEKS = exports.ONE_WEEK * 2;\nexports.THREE_WEEKS = exports.ONE_WEEK * 3;\nexports.FOUR_WEEKS = exports.ONE_WEEK * 4;\nexports.ONE_YEAR = exports.ONE_DAY * 365;\n//# sourceMappingURL=time.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./misc\"), exports);\ntslib_1.__exportStar(require(\"./time\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromMiliseconds = exports.toMiliseconds = void 0;\nconst constants_1 = require(\"../constants\");\nfunction toMiliseconds(seconds) {\n return seconds * constants_1.ONE_THOUSAND;\n}\nexports.toMiliseconds = toMiliseconds;\nfunction fromMiliseconds(miliseconds) {\n return Math.floor(miliseconds / constants_1.ONE_THOUSAND);\n}\nexports.fromMiliseconds = fromMiliseconds;\n//# sourceMappingURL=convert.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./delay\"), exports);\ntslib_1.__exportStar(require(\"./convert\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Watch = void 0;\nclass Watch {\n constructor() {\n this.timestamps = new Map();\n }\n start(label) {\n if (this.timestamps.has(label)) {\n throw new Error(`Watch already started for label: ${label}`);\n }\n this.timestamps.set(label, { started: Date.now() });\n }\n stop(label) {\n const timestamp = this.get(label);\n if (typeof timestamp.elapsed !== \"undefined\") {\n throw new Error(`Watch already stopped for label: ${label}`);\n }\n const elapsed = Date.now() - timestamp.started;\n this.timestamps.set(label, { started: timestamp.started, elapsed });\n }\n get(label) {\n const timestamp = this.timestamps.get(label);\n if (typeof timestamp === \"undefined\") {\n throw new Error(`No timestamp found for label: ${label}`);\n }\n return timestamp;\n }\n elapsed(label) {\n const timestamp = this.get(label);\n const elapsed = timestamp.elapsed || Date.now() - timestamp.started;\n return elapsed;\n }\n}\nexports.Watch = Watch;\nexports.default = Watch;\n//# sourceMappingURL=watch.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IWatch = void 0;\nclass IWatch {\n}\nexports.IWatch = IWatch;\n//# sourceMappingURL=watch.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./watch\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./utils\"), exports);\ntslib_1.__exportStar(require(\"./watch\"), exports);\ntslib_1.__exportStar(require(\"./types\"), exports);\ntslib_1.__exportStar(require(\"./constants\"), exports);\n//# sourceMappingURL=index.js.map","const global = globalThis || void 0 || self;\n\nexport { global as default, global };\n//# sourceMappingURL=index.js.map\n","import{IEvents as o}from\"@walletconnect/events\";import c,{EventEmitter as i}from\"events\";class n extends o{constructor(s){super(),this.opts=s,this.protocol=\"wc\",this.version=2}}class l{constructor(s,t,e){this.core=s,this.logger=t}}class h extends o{constructor(s,t){super(),this.core=s,this.logger=t,this.records=new Map}}class a{constructor(s,t){this.logger=s,this.core=t}}class g extends o{constructor(s,t){super(),this.relayer=s,this.logger=t}}class u extends o{constructor(s){super()}}class p{constructor(s,t,e,f){this.core=s,this.logger=t,this.name=e}}class I{constructor(){this.map=new Map}}class d extends o{constructor(s,t){super(),this.relayer=s,this.logger=t}}class E{constructor(s,t){this.core=s,this.logger=t}}class x extends o{constructor(s,t){super(),this.core=s,this.logger=t}}class m{constructor(s,t){this.logger=s,this.core=t}}class y{constructor(s,t,e){this.core=s,this.logger=t,this.store=e}}class v{constructor(s,t){this.projectId=s,this.logger=t}}class C{constructor(s,t,e){this.core=s,this.logger=t,this.telemetryEnabled=e}}class b extends c{constructor(){super()}}class S{constructor(s){this.opts=s,this.protocol=\"wc\",this.version=2}}class w extends i{constructor(){super()}}class M{constructor(s){this.client=s}}export{n as ICore,l as ICrypto,v as IEchoClient,M as IEngine,w as IEngineEvents,C as IEventClient,x as IExpirer,h as IJsonRpcHistory,E as IKeyChain,a as IMessageTracker,m as IPairing,g as IPublisher,u as IRelayer,S as ISignClient,b as ISignClientEvents,p as IStore,d as ISubscriber,I as ISubscriberTopicMap,y as IVerify};\n//# sourceMappingURL=index.es.js.map\n","import{RELAYER_DEFAULT_PROTOCOL as Et,TRANSPORT_TYPES as f,EVENT_CLIENT_SESSION_TRACES as C,EVENT_CLIENT_SESSION_ERRORS as F,EVENT_CLIENT_AUTHENTICATE_TRACES as Q,EVENT_CLIENT_AUTHENTICATE_ERRORS as se,EVENT_CLIENT_PAIRING_ERRORS as Rt,EVENT_CLIENT_PAIRING_TRACES as St,RELAYER_EVENTS as Ue,VERIFY_SERVER as It,EXPIRER_EVENTS as ft,PAIRING_EVENTS as Ge,Store as H,Core as vt}from\"@walletconnect/core\";import{pino as qt,getDefaultLoggerOptions as Tt,generateChildLogger as Nt,getLoggerContext as Pt}from\"@walletconnect/logger\";import{IEngine as Ot,ISignClient as At}from\"@walletconnect/types\";import{getInternalError as u,calcExpiry as A,createDelayedPromise as Y,engineEvent as g,getSdkError as P,getDeepLink as bt,handleDeeplinkRedirect as Ct,isSessionCompatible as Lt,hashKey as Te,parseChainId as Ne,createEncodedRecap as xt,getRecapFromResources as Pe,mergeEncodedRecaps as Dt,TYPE_2 as Vt,BASE64URL as ie,getLinkModeURL as he,validateSignedCacao as je,getNamespacedDidChainId as Fe,getDidAddress as Qe,getMethodsFromRecap as ze,getChainsFromRecap as He,buildNamespacesFromAuth as Ye,formatMessage as Mt,BASE64 as de,hashMessage as X,isExpired as J,MemoryStore as re,isValidParams as L,isUndefined as ne,isValidRelays as kt,isValidObject as Xe,isValidRequiredNamespaces as $t,isValidNamespaces as Oe,isConformingNamespaces as Je,isValidString as k,isValidErrorReason as Kt,isValidRelay as Ut,isValidController as Gt,isValidNamespacesChainId as Be,isValidRequest as jt,isValidNamespacesRequest as Ft,isValidRequestExpiry as Qt,isValidResponse as zt,isValidEvent as Ht,isValidNamespacesEvent as Yt,getSearchParamFromURL as We,isTestRun as Xt,isReactNative as Jt,parseExpirerTarget as Bt,isValidId as Wt,TYPE_1 as Ae,getAppMetadata as Zt}from\"@walletconnect/utils\";import es,{EventEmitter as ts}from\"events\";import{THIRTY_DAYS as ss,SEVEN_DAYS as Ze,FIVE_MINUTES as b,ONE_DAY as $,ONE_HOUR as et,ONE_SECOND as is,toMiliseconds as tt}from\"@walletconnect/time\";import{payloadId as B,getBigIntRpcId as ue,isJsonRpcResult as K,isJsonRpcError as U,formatJsonRpcRequest as ge,formatJsonRpcResult as rs,formatJsonRpcError as ns,isJsonRpcRequest as os,isJsonRpcResponse as as}from\"@walletconnect/jsonrpc-utils\";const be=\"wc\",Ce=2,Le=\"client\",ye=`${be}@${Ce}:${Le}:`,we={name:Le,logger:\"error\",controller:!1,relayUrl:\"wss://relay.walletconnect.org\"},cs={session_proposal:\"session_proposal\",session_update:\"session_update\",session_extend:\"session_extend\",session_ping:\"session_ping\",session_delete:\"session_delete\",session_expire:\"session_expire\",session_request:\"session_request\",session_request_sent:\"session_request_sent\",session_event:\"session_event\",proposal_expire:\"proposal_expire\",session_authenticate:\"session_authenticate\",session_request_expire:\"session_request_expire\"},ls={database:\":memory:\"},xe=\"WALLETCONNECT_DEEPLINK_CHOICE\",ps={created:\"history_created\",updated:\"history_updated\",deleted:\"history_deleted\",sync:\"history_sync\"},hs=\"history\",ds=\"0.3\",st=\"proposal\",us=ss,it=\"Proposal expired\",rt=\"session\",z=Ze,nt=\"engine\",v={wc_sessionPropose:{req:{ttl:b,prompt:!0,tag:1100},res:{ttl:b,prompt:!1,tag:1101},reject:{ttl:b,prompt:!1,tag:1120},autoReject:{ttl:b,prompt:!1,tag:1121}},wc_sessionSettle:{req:{ttl:b,prompt:!1,tag:1102},res:{ttl:b,prompt:!1,tag:1103}},wc_sessionUpdate:{req:{ttl:$,prompt:!1,tag:1104},res:{ttl:$,prompt:!1,tag:1105}},wc_sessionExtend:{req:{ttl:$,prompt:!1,tag:1106},res:{ttl:$,prompt:!1,tag:1107}},wc_sessionRequest:{req:{ttl:b,prompt:!0,tag:1108},res:{ttl:b,prompt:!1,tag:1109}},wc_sessionEvent:{req:{ttl:b,prompt:!0,tag:1110},res:{ttl:b,prompt:!1,tag:1111}},wc_sessionDelete:{req:{ttl:$,prompt:!1,tag:1112},res:{ttl:$,prompt:!1,tag:1113}},wc_sessionPing:{req:{ttl:$,prompt:!1,tag:1114},res:{ttl:$,prompt:!1,tag:1115}},wc_sessionAuthenticate:{req:{ttl:et,prompt:!0,tag:1116},res:{ttl:et,prompt:!1,tag:1117},reject:{ttl:b,prompt:!1,tag:1118},autoReject:{ttl:b,prompt:!1,tag:1119}}},me={min:b,max:Ze},x={idle:\"IDLE\",active:\"ACTIVE\"},ot=\"request\",at=[\"wc_sessionPropose\",\"wc_sessionRequest\",\"wc_authRequest\",\"wc_sessionAuthenticate\"],ct=\"wc\",gs=1.5,lt=\"auth\",pt=\"authKeys\",ht=\"pairingTopics\",dt=\"requests\",oe=`${ct}@${1.5}:${lt}:`,ae=`${oe}:PUB_KEY`;var ys=Object.defineProperty,ws=Object.defineProperties,ms=Object.getOwnPropertyDescriptors,ut=Object.getOwnPropertySymbols,_s=Object.prototype.hasOwnProperty,Es=Object.prototype.propertyIsEnumerable,gt=(q,o,e)=>o in q?ys(q,o,{enumerable:!0,configurable:!0,writable:!0,value:e}):q[o]=e,I=(q,o)=>{for(var e in o||(o={}))_s.call(o,e)&>(q,e,o[e]);if(ut)for(var e of ut(o))Es.call(o,e)&>(q,e,o[e]);return q},D=(q,o)=>ws(q,ms(o));class Rs extends Ot{constructor(o){super(o),this.name=nt,this.events=new es,this.initialized=!1,this.requestQueue={state:x.idle,queue:[]},this.sessionRequestQueue={state:x.idle,queue:[]},this.requestQueueDelay=is,this.expectedPairingMethodMap=new Map,this.recentlyDeletedMap=new Map,this.recentlyDeletedLimit=200,this.relayMessageCache=[],this.init=async()=>{this.initialized||(await this.cleanup(),this.registerRelayerEvents(),this.registerExpirerEvents(),this.registerPairingEvents(),await this.registerLinkModeListeners(),this.client.core.pairing.register({methods:Object.keys(v)}),this.initialized=!0,setTimeout(()=>{this.sessionRequestQueue.queue=this.getPendingSessionRequests(),this.processSessionRequestQueue()},tt(this.requestQueueDelay)))},this.connect=async e=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();const t=D(I({},e),{requiredNamespaces:e.requiredNamespaces||{},optionalNamespaces:e.optionalNamespaces||{}});await this.isValidConnect(t);const{pairingTopic:s,requiredNamespaces:i,optionalNamespaces:r,sessionProperties:n,relays:a}=t;let c=s,h,p=!1;try{c&&(p=this.client.core.pairing.pairings.get(c).active)}catch(E){throw this.client.logger.error(`connect() -> pairing.get(${c}) failed`),E}if(!c||!p){const{topic:E,uri:S}=await this.client.core.pairing.create();c=E,h=S}if(!c){const{message:E}=u(\"NO_MATCHING_KEY\",`connect() pairing topic: ${c}`);throw new Error(E)}const d=await this.client.core.crypto.generateKeyPair(),l=v.wc_sessionPropose.req.ttl||b,w=A(l),m=I({requiredNamespaces:i,optionalNamespaces:r,relays:a??[{protocol:Et}],proposer:{publicKey:d,metadata:this.client.metadata},expiryTimestamp:w,pairingTopic:c},n&&{sessionProperties:n}),{reject:y,resolve:_,done:R}=Y(l,it);this.events.once(g(\"session_connect\"),async({error:E,session:S})=>{if(E)y(E);else if(S){S.self.publicKey=d;const M=D(I({},S),{pairingTopic:m.pairingTopic,requiredNamespaces:m.requiredNamespaces,optionalNamespaces:m.optionalNamespaces,transportType:f.relay});await this.client.session.set(S.topic,M),await this.setExpiry(S.topic,S.expiry),c&&await this.client.core.pairing.updateMetadata({topic:c,metadata:S.peer.metadata}),this.cleanupDuplicatePairings(M),_(M)}});const V=await this.sendRequest({topic:c,method:\"wc_sessionPropose\",params:m,throwOnFailedPublish:!0});return await this.setProposal(V,I({id:V},m)),{uri:h,approval:R}},this.pair=async e=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{return await this.client.core.pairing.pair(e)}catch(t){throw this.client.logger.error(\"pair() failed\"),t}},this.approve=async e=>{var t,s,i;const r=this.client.core.eventClient.createEvent({properties:{topic:(t=e?.id)==null?void 0:t.toString(),trace:[C.session_approve_started]}});try{this.isInitialized(),await this.confirmOnlineStateOrThrow()}catch(N){throw r.setError(F.no_internet_connection),N}try{await this.isValidProposalId(e?.id)}catch(N){throw this.client.logger.error(`approve() -> proposal.get(${e?.id}) failed`),r.setError(F.proposal_not_found),N}try{await this.isValidApprove(e)}catch(N){throw this.client.logger.error(\"approve() -> isValidApprove() failed\"),r.setError(F.session_approve_namespace_validation_failure),N}const{id:n,relayProtocol:a,namespaces:c,sessionProperties:h,sessionConfig:p}=e,d=this.client.proposal.get(n);this.client.core.eventClient.deleteEvent({eventId:r.eventId});const{pairingTopic:l,proposer:w,requiredNamespaces:m,optionalNamespaces:y}=d;let _=(s=this.client.core.eventClient)==null?void 0:s.getEvent({topic:l});_||(_=(i=this.client.core.eventClient)==null?void 0:i.createEvent({type:C.session_approve_started,properties:{topic:l,trace:[C.session_approve_started,C.session_namespaces_validation_success]}}));const R=await this.client.core.crypto.generateKeyPair(),V=w.publicKey,E=await this.client.core.crypto.generateSharedKey(R,V),S=I(I({relay:{protocol:a??\"irn\"},namespaces:c,controller:{publicKey:R,metadata:this.client.metadata},expiry:A(z)},h&&{sessionProperties:h}),p&&{sessionConfig:p}),M=f.relay;_.addTrace(C.subscribing_session_topic);try{await this.client.core.relayer.subscribe(E,{transportType:M})}catch(N){throw _.setError(F.subscribe_session_topic_failure),N}_.addTrace(C.subscribe_session_topic_success);const W=D(I({},S),{topic:E,requiredNamespaces:m,optionalNamespaces:y,pairingTopic:l,acknowledged:!1,self:S.controller,peer:{publicKey:w.publicKey,metadata:w.metadata},controller:R,transportType:f.relay});await this.client.session.set(E,W),_.addTrace(C.store_session);try{_.addTrace(C.publishing_session_settle),await this.sendRequest({topic:E,method:\"wc_sessionSettle\",params:S,throwOnFailedPublish:!0}).catch(N=>{throw _?.setError(F.session_settle_publish_failure),N}),_.addTrace(C.session_settle_publish_success),_.addTrace(C.publishing_session_approve),await this.sendResult({id:n,topic:l,result:{relay:{protocol:a??\"irn\"},responderPublicKey:R},throwOnFailedPublish:!0}).catch(N=>{throw _?.setError(F.session_approve_publish_failure),N}),_.addTrace(C.session_approve_publish_success)}catch(N){throw this.client.logger.error(N),this.client.session.delete(E,P(\"USER_DISCONNECTED\")),await this.client.core.relayer.unsubscribe(E),N}return this.client.core.eventClient.deleteEvent({eventId:_.eventId}),await this.client.core.pairing.updateMetadata({topic:l,metadata:w.metadata}),await this.client.proposal.delete(n,P(\"USER_DISCONNECTED\")),await this.client.core.pairing.activate({topic:l}),await this.setExpiry(E,A(z)),{topic:E,acknowledged:()=>Promise.resolve(this.client.session.get(E))}},this.reject=async e=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidReject(e)}catch(r){throw this.client.logger.error(\"reject() -> isValidReject() failed\"),r}const{id:t,reason:s}=e;let i;try{i=this.client.proposal.get(t).pairingTopic}catch(r){throw this.client.logger.error(`reject() -> proposal.get(${t}) failed`),r}i&&(await this.sendError({id:t,topic:i,error:s,rpcOpts:v.wc_sessionPropose.reject}),await this.client.proposal.delete(t,P(\"USER_DISCONNECTED\")))},this.update=async e=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidUpdate(e)}catch(p){throw this.client.logger.error(\"update() -> isValidUpdate() failed\"),p}const{topic:t,namespaces:s}=e,{done:i,resolve:r,reject:n}=Y(),a=B(),c=ue().toString(),h=this.client.session.get(t).namespaces;return this.events.once(g(\"session_update\",a),({error:p})=>{p?n(p):r()}),await this.client.session.update(t,{namespaces:s}),await this.sendRequest({topic:t,method:\"wc_sessionUpdate\",params:{namespaces:s},throwOnFailedPublish:!0,clientRpcId:a,relayRpcId:c}).catch(p=>{this.client.logger.error(p),this.client.session.update(t,{namespaces:h}),n(p)}),{acknowledged:i}},this.extend=async e=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidExtend(e)}catch(a){throw this.client.logger.error(\"extend() -> isValidExtend() failed\"),a}const{topic:t}=e,s=B(),{done:i,resolve:r,reject:n}=Y();return this.events.once(g(\"session_extend\",s),({error:a})=>{a?n(a):r()}),await this.setExpiry(t,A(z)),this.sendRequest({topic:t,method:\"wc_sessionExtend\",params:{},clientRpcId:s,throwOnFailedPublish:!0}).catch(a=>{n(a)}),{acknowledged:i}},this.request=async e=>{this.isInitialized();try{await this.isValidRequest(e)}catch(w){throw this.client.logger.error(\"request() -> isValidRequest() failed\"),w}const{chainId:t,request:s,topic:i,expiry:r=v.wc_sessionRequest.req.ttl}=e,n=this.client.session.get(i);n?.transportType===f.relay&&await this.confirmOnlineStateOrThrow();const a=B(),c=ue().toString(),{done:h,resolve:p,reject:d}=Y(r,\"Request expired. Please try again.\");this.events.once(g(\"session_request\",a),({error:w,result:m})=>{w?d(w):p(m)});const l=this.getAppLinkIfEnabled(n.peer.metadata,n.transportType);return l?(await this.sendRequest({clientRpcId:a,relayRpcId:c,topic:i,method:\"wc_sessionRequest\",params:{request:D(I({},s),{expiryTimestamp:A(r)}),chainId:t},expiry:r,throwOnFailedPublish:!0,appLink:l}).catch(w=>d(w)),this.client.events.emit(\"session_request_sent\",{topic:i,request:s,chainId:t,id:a}),await h()):await Promise.all([new Promise(async w=>{await this.sendRequest({clientRpcId:a,relayRpcId:c,topic:i,method:\"wc_sessionRequest\",params:{request:D(I({},s),{expiryTimestamp:A(r)}),chainId:t},expiry:r,throwOnFailedPublish:!0}).catch(m=>d(m)),this.client.events.emit(\"session_request_sent\",{topic:i,request:s,chainId:t,id:a}),w()}),new Promise(async w=>{var m;if(!((m=n.sessionConfig)!=null&&m.disableDeepLink)){const y=await bt(this.client.core.storage,xe);await Ct({id:a,topic:i,wcDeepLink:y})}w()}),h()]).then(w=>w[2])},this.respond=async e=>{this.isInitialized(),await this.isValidRespond(e);const{topic:t,response:s}=e,{id:i}=s,r=this.client.session.get(t);r.transportType===f.relay&&await this.confirmOnlineStateOrThrow();const n=this.getAppLinkIfEnabled(r.peer.metadata,r.transportType);K(s)?await this.sendResult({id:i,topic:t,result:s.result,throwOnFailedPublish:!0,appLink:n}):U(s)&&await this.sendError({id:i,topic:t,error:s.error,appLink:n}),this.cleanupAfterResponse(e)},this.ping=async e=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidPing(e)}catch(s){throw this.client.logger.error(\"ping() -> isValidPing() failed\"),s}const{topic:t}=e;if(this.client.session.keys.includes(t)){const s=B(),i=ue().toString(),{done:r,resolve:n,reject:a}=Y();this.events.once(g(\"session_ping\",s),({error:c})=>{c?a(c):n()}),await Promise.all([this.sendRequest({topic:t,method:\"wc_sessionPing\",params:{},throwOnFailedPublish:!0,clientRpcId:s,relayRpcId:i}),r()])}else this.client.core.pairing.pairings.keys.includes(t)&&await this.client.core.pairing.ping({topic:t})},this.emit=async e=>{this.isInitialized(),await this.confirmOnlineStateOrThrow(),await this.isValidEmit(e);const{topic:t,event:s,chainId:i}=e,r=ue().toString();await this.sendRequest({topic:t,method:\"wc_sessionEvent\",params:{event:s,chainId:i},throwOnFailedPublish:!0,relayRpcId:r})},this.disconnect=async e=>{this.isInitialized(),await this.confirmOnlineStateOrThrow(),await this.isValidDisconnect(e);const{topic:t}=e;if(this.client.session.keys.includes(t))await this.sendRequest({topic:t,method:\"wc_sessionDelete\",params:P(\"USER_DISCONNECTED\"),throwOnFailedPublish:!0}),await this.deleteSession({topic:t,emitEvent:!1});else if(this.client.core.pairing.pairings.keys.includes(t))await this.client.core.pairing.disconnect({topic:t});else{const{message:s}=u(\"MISMATCHED_TOPIC\",`Session or pairing topic not found: ${t}`);throw new Error(s)}},this.find=e=>(this.isInitialized(),this.client.session.getAll().filter(t=>Lt(t,e))),this.getPendingSessionRequests=()=>this.client.pendingRequest.getAll(),this.authenticate=async(e,t)=>{var s;this.isInitialized(),this.isValidAuthenticate(e);const i=t&&this.client.core.linkModeSupportedApps.includes(t)&&((s=this.client.metadata.redirect)==null?void 0:s.linkMode),r=i?f.link_mode:f.relay;r===f.relay&&await this.confirmOnlineStateOrThrow();const{chains:n,statement:a=\"\",uri:c,domain:h,nonce:p,type:d,exp:l,nbf:w,methods:m=[],expiry:y}=e,_=[...e.resources||[]],{topic:R,uri:V}=await this.client.core.pairing.create({methods:[\"wc_sessionAuthenticate\"],transportType:r});this.client.logger.info({message:\"Generated new pairing\",pairing:{topic:R,uri:V}});const E=await this.client.core.crypto.generateKeyPair(),S=Te(E);if(await Promise.all([this.client.auth.authKeys.set(ae,{responseTopic:S,publicKey:E}),this.client.auth.pairingTopics.set(S,{topic:S,pairingTopic:R})]),await this.client.core.relayer.subscribe(S,{transportType:r}),this.client.logger.info(`sending request to new pairing topic: ${R}`),m.length>0){const{namespace:O}=Ne(n[0]);let T=xt(O,\"request\",m);Pe(_)&&(T=Dt(T,_.pop())),_.push(T)}const M=y&&y>v.wc_sessionAuthenticate.req.ttl?y:v.wc_sessionAuthenticate.req.ttl,W={authPayload:{type:d??\"caip122\",chains:n,statement:a,aud:c,domain:h,version:\"1\",nonce:p,iat:new Date().toISOString(),exp:l,nbf:w,resources:_},requester:{publicKey:E,metadata:this.client.metadata},expiryTimestamp:A(M)},N={eip155:{chains:n,methods:[...new Set([\"personal_sign\",...m])],events:[\"chainChanged\",\"accountsChanged\"]}},De={requiredNamespaces:{},optionalNamespaces:N,relays:[{protocol:\"irn\"}],pairingTopic:R,proposer:{publicKey:E,metadata:this.client.metadata},expiryTimestamp:A(v.wc_sessionPropose.req.ttl)},{done:wt,resolve:Ve,reject:Ee}=Y(M,\"Request expired\"),ce=async({error:O,session:T})=>{if(this.events.off(g(\"session_request\",G),Re),O)Ee(O);else if(T){T.self.publicKey=E,await this.client.session.set(T.topic,T),await this.setExpiry(T.topic,T.expiry),R&&await this.client.core.pairing.updateMetadata({topic:R,metadata:T.peer.metadata});const le=this.client.session.get(T.topic);await this.deleteProposal(Z),Ve({session:le})}},Re=async O=>{var T,le,Me;if(await this.deletePendingAuthRequest(G,{message:\"fulfilled\",code:0}),O.error){const te=P(\"WC_METHOD_UNSUPPORTED\",\"wc_sessionAuthenticate\");return O.error.code===te.code?void 0:(this.events.off(g(\"session_connect\"),ce),Ee(O.error.message))}await this.deleteProposal(Z),this.events.off(g(\"session_connect\"),ce);const{cacaos:ke,responder:j}=O.result,Ie=[],$e=[];for(const te of ke){await je({cacao:te,projectId:this.client.core.projectId})||(this.client.logger.error(te,\"Signature verification failed\"),Ee(P(\"SESSION_SETTLEMENT_FAILED\",\"Signature verification failed\")));const{p:fe}=te,ve=Pe(fe.resources),Ke=[Fe(fe.iss)],mt=Qe(fe.iss);if(ve){const qe=ze(ve),_t=He(ve);Ie.push(...qe),Ke.push(..._t)}for(const qe of Ke)$e.push(`${qe}:${mt}`)}const ee=await this.client.core.crypto.generateSharedKey(E,j.publicKey);let pe;Ie.length>0&&(pe={topic:ee,acknowledged:!0,self:{publicKey:E,metadata:this.client.metadata},peer:j,controller:j.publicKey,expiry:A(z),requiredNamespaces:{},optionalNamespaces:{},relay:{protocol:\"irn\"},pairingTopic:R,namespaces:Ye([...new Set(Ie)],[...new Set($e)]),transportType:r},await this.client.core.relayer.subscribe(ee,{transportType:r}),await this.client.session.set(ee,pe),R&&await this.client.core.pairing.updateMetadata({topic:R,metadata:j.metadata}),pe=this.client.session.get(ee)),(T=this.client.metadata.redirect)!=null&&T.linkMode&&(le=j.metadata.redirect)!=null&&le.linkMode&&(Me=j.metadata.redirect)!=null&&Me.universal&&t&&(this.client.core.addLinkModeSupportedApp(j.metadata.redirect.universal),this.client.session.update(ee,{transportType:f.link_mode})),Ve({auths:ke,session:pe})},G=B(),Z=B();this.events.once(g(\"session_connect\"),ce),this.events.once(g(\"session_request\",G),Re);let Se;try{if(i){const O=ge(\"wc_sessionAuthenticate\",W,G);this.client.core.history.set(R,O);const T=await this.client.core.crypto.encode(\"\",O,{type:Vt,encoding:ie});Se=he(t,R,T)}else await Promise.all([this.sendRequest({topic:R,method:\"wc_sessionAuthenticate\",params:W,expiry:e.expiry,throwOnFailedPublish:!0,clientRpcId:G}),this.sendRequest({topic:R,method:\"wc_sessionPropose\",params:De,expiry:v.wc_sessionPropose.req.ttl,throwOnFailedPublish:!0,clientRpcId:Z})])}catch(O){throw this.events.off(g(\"session_connect\"),ce),this.events.off(g(\"session_request\",G),Re),O}return await this.setProposal(Z,I({id:Z},De)),await this.setAuthRequest(G,{request:D(I({},W),{verifyContext:{}}),pairingTopic:R,transportType:r}),{uri:Se??V,response:wt}},this.approveSessionAuthenticate=async e=>{const{id:t,auths:s}=e,i=this.client.core.eventClient.createEvent({properties:{topic:t.toString(),trace:[Q.authenticated_session_approve_started]}});try{this.isInitialized()}catch(y){throw i.setError(se.no_internet_connection),y}const r=this.getPendingAuthRequest(t);if(!r)throw i.setError(se.authenticated_session_pending_request_not_found),new Error(`Could not find pending auth request with id ${t}`);const n=r.transportType||f.relay;n===f.relay&&await this.confirmOnlineStateOrThrow();const a=r.requester.publicKey,c=await this.client.core.crypto.generateKeyPair(),h=Te(a),p={type:Ae,receiverPublicKey:a,senderPublicKey:c},d=[],l=[];for(const y of s){if(!await je({cacao:y,projectId:this.client.core.projectId})){i.setError(se.invalid_cacao);const S=P(\"SESSION_SETTLEMENT_FAILED\",\"Signature verification failed\");throw await this.sendError({id:t,topic:h,error:S,encodeOpts:p}),new Error(S.message)}i.addTrace(Q.cacaos_verified);const{p:_}=y,R=Pe(_.resources),V=[Fe(_.iss)],E=Qe(_.iss);if(R){const S=ze(R),M=He(R);d.push(...S),V.push(...M)}for(const S of V)l.push(`${S}:${E}`)}const w=await this.client.core.crypto.generateSharedKey(c,a);i.addTrace(Q.create_authenticated_session_topic);let m;if(d?.length>0){m={topic:w,acknowledged:!0,self:{publicKey:c,metadata:this.client.metadata},peer:{publicKey:a,metadata:r.requester.metadata},controller:a,expiry:A(z),authentication:s,requiredNamespaces:{},optionalNamespaces:{},relay:{protocol:\"irn\"},pairingTopic:r.pairingTopic,namespaces:Ye([...new Set(d)],[...new Set(l)]),transportType:n},i.addTrace(Q.subscribing_authenticated_session_topic);try{await this.client.core.relayer.subscribe(w,{transportType:n})}catch(y){throw i.setError(se.subscribe_authenticated_session_topic_failure),y}i.addTrace(Q.subscribe_authenticated_session_topic_success),await this.client.session.set(w,m),i.addTrace(Q.store_authenticated_session),await this.client.core.pairing.updateMetadata({topic:r.pairingTopic,metadata:r.requester.metadata})}i.addTrace(Q.publishing_authenticated_session_approve);try{await this.sendResult({topic:h,id:t,result:{cacaos:s,responder:{publicKey:c,metadata:this.client.metadata}},encodeOpts:p,throwOnFailedPublish:!0,appLink:this.getAppLinkIfEnabled(r.requester.metadata,n)})}catch(y){throw i.setError(se.authenticated_session_approve_publish_failure),y}return await this.client.auth.requests.delete(t,{message:\"fulfilled\",code:0}),await this.client.core.pairing.activate({topic:r.pairingTopic}),this.client.core.eventClient.deleteEvent({eventId:i.eventId}),{session:m}},this.rejectSessionAuthenticate=async e=>{this.isInitialized();const{id:t,reason:s}=e,i=this.getPendingAuthRequest(t);if(!i)throw new Error(`Could not find pending auth request with id ${t}`);i.transportType===f.relay&&await this.confirmOnlineStateOrThrow();const r=i.requester.publicKey,n=await this.client.core.crypto.generateKeyPair(),a=Te(r),c={type:Ae,receiverPublicKey:r,senderPublicKey:n};await this.sendError({id:t,topic:a,error:s,encodeOpts:c,rpcOpts:v.wc_sessionAuthenticate.reject,appLink:this.getAppLinkIfEnabled(i.requester.metadata,i.transportType)}),await this.client.auth.requests.delete(t,{message:\"rejected\",code:0}),await this.client.proposal.delete(t,P(\"USER_DISCONNECTED\"))},this.formatAuthMessage=e=>{this.isInitialized();const{request:t,iss:s}=e;return Mt(t,s)},this.processRelayMessageCache=()=>{setTimeout(async()=>{if(this.relayMessageCache.length!==0)for(;this.relayMessageCache.length>0;)try{const e=this.relayMessageCache.shift();e&&await this.onRelayMessage(e)}catch(e){this.client.logger.error(e)}},50)},this.cleanupDuplicatePairings=async e=>{if(e.pairingTopic)try{const t=this.client.core.pairing.pairings.get(e.pairingTopic),s=this.client.core.pairing.pairings.getAll().filter(i=>{var r,n;return((r=i.peerMetadata)==null?void 0:r.url)&&((n=i.peerMetadata)==null?void 0:n.url)===e.peer.metadata.url&&i.topic&&i.topic!==t.topic});if(s.length===0)return;this.client.logger.info(`Cleaning up ${s.length} duplicate pairing(s)`),await Promise.all(s.map(i=>this.client.core.pairing.disconnect({topic:i.topic}))),this.client.logger.info(\"Duplicate pairings clean up finished\")}catch(t){this.client.logger.error(t)}},this.deleteSession=async e=>{var t;const{topic:s,expirerHasDeleted:i=!1,emitEvent:r=!0,id:n=0}=e,{self:a}=this.client.session.get(s);await this.client.core.relayer.unsubscribe(s),await this.client.session.delete(s,P(\"USER_DISCONNECTED\")),this.addToRecentlyDeleted(s,\"session\"),this.client.core.crypto.keychain.has(a.publicKey)&&await this.client.core.crypto.deleteKeyPair(a.publicKey),this.client.core.crypto.keychain.has(s)&&await this.client.core.crypto.deleteSymKey(s),i||this.client.core.expirer.del(s),this.client.core.storage.removeItem(xe).catch(c=>this.client.logger.warn(c)),this.getPendingSessionRequests().forEach(c=>{c.topic===s&&this.deletePendingSessionRequest(c.id,P(\"USER_DISCONNECTED\"))}),s===((t=this.sessionRequestQueue.queue[0])==null?void 0:t.topic)&&(this.sessionRequestQueue.state=x.idle),r&&this.client.events.emit(\"session_delete\",{id:n,topic:s})},this.deleteProposal=async(e,t)=>{if(t)try{const s=this.client.proposal.get(e),i=this.client.core.eventClient.getEvent({topic:s.pairingTopic});i?.setError(F.proposal_expired)}catch{}await Promise.all([this.client.proposal.delete(e,P(\"USER_DISCONNECTED\")),t?Promise.resolve():this.client.core.expirer.del(e)]),this.addToRecentlyDeleted(e,\"proposal\")},this.deletePendingSessionRequest=async(e,t,s=!1)=>{await Promise.all([this.client.pendingRequest.delete(e,t),s?Promise.resolve():this.client.core.expirer.del(e)]),this.addToRecentlyDeleted(e,\"request\"),this.sessionRequestQueue.queue=this.sessionRequestQueue.queue.filter(i=>i.id!==e),s&&(this.sessionRequestQueue.state=x.idle,this.client.events.emit(\"session_request_expire\",{id:e}))},this.deletePendingAuthRequest=async(e,t,s=!1)=>{await Promise.all([this.client.auth.requests.delete(e,t),s?Promise.resolve():this.client.core.expirer.del(e)])},this.setExpiry=async(e,t)=>{this.client.session.keys.includes(e)&&(this.client.core.expirer.set(e,t),await this.client.session.update(e,{expiry:t}))},this.setProposal=async(e,t)=>{this.client.core.expirer.set(e,A(v.wc_sessionPropose.req.ttl)),await this.client.proposal.set(e,t)},this.setAuthRequest=async(e,t)=>{const{request:s,pairingTopic:i,transportType:r=f.relay}=t;this.client.core.expirer.set(e,s.expiryTimestamp),await this.client.auth.requests.set(e,{authPayload:s.authPayload,requester:s.requester,expiryTimestamp:s.expiryTimestamp,id:e,pairingTopic:i,verifyContext:s.verifyContext,transportType:r})},this.setPendingSessionRequest=async e=>{const{id:t,topic:s,params:i,verifyContext:r}=e,n=i.request.expiryTimestamp||A(v.wc_sessionRequest.req.ttl);this.client.core.expirer.set(t,n),await this.client.pendingRequest.set(t,{id:t,topic:s,params:i,verifyContext:r})},this.sendRequest=async e=>{const{topic:t,method:s,params:i,expiry:r,relayRpcId:n,clientRpcId:a,throwOnFailedPublish:c,appLink:h}=e,p=ge(s,i,a);let d;const l=!!h;try{const y=l?ie:de;d=await this.client.core.crypto.encode(t,p,{encoding:y})}catch(y){throw await this.cleanup(),this.client.logger.error(`sendRequest() -> core.crypto.encode() for topic ${t} failed`),y}let w;if(at.includes(s)){const y=X(JSON.stringify(p)),_=X(d);w=await this.client.core.verify.register({id:_,decryptedId:y})}const m=v[s].req;if(m.attestation=w,r&&(m.ttl=r),n&&(m.id=n),this.client.core.history.set(t,p),l){const y=he(h,t,d);await global.Linking.openURL(y,this.client.name)}else{const y=v[s].req;r&&(y.ttl=r),n&&(y.id=n),c?(y.internal=D(I({},y.internal),{throwOnFailedPublish:!0}),await this.client.core.relayer.publish(t,d,y)):this.client.core.relayer.publish(t,d,y).catch(_=>this.client.logger.error(_))}return p.id},this.sendResult=async e=>{const{id:t,topic:s,result:i,throwOnFailedPublish:r,encodeOpts:n,appLink:a}=e,c=rs(t,i);let h;const p=a&&typeof(global==null?void 0:global.Linking)<\"u\";try{const l=p?ie:de;h=await this.client.core.crypto.encode(s,c,D(I({},n||{}),{encoding:l}))}catch(l){throw await this.cleanup(),this.client.logger.error(`sendResult() -> core.crypto.encode() for topic ${s} failed`),l}let d;try{d=await this.client.core.history.get(s,t)}catch(l){throw this.client.logger.error(`sendResult() -> history.get(${s}, ${t}) failed`),l}if(p){const l=he(a,s,h);await global.Linking.openURL(l,this.client.name)}else{const l=v[d.request.method].res;r?(l.internal=D(I({},l.internal),{throwOnFailedPublish:!0}),await this.client.core.relayer.publish(s,h,l)):this.client.core.relayer.publish(s,h,l).catch(w=>this.client.logger.error(w))}await this.client.core.history.resolve(c)},this.sendError=async e=>{const{id:t,topic:s,error:i,encodeOpts:r,rpcOpts:n,appLink:a}=e,c=ns(t,i);let h;const p=a&&typeof(global==null?void 0:global.Linking)<\"u\";try{const l=p?ie:de;h=await this.client.core.crypto.encode(s,c,D(I({},r||{}),{encoding:l}))}catch(l){throw await this.cleanup(),this.client.logger.error(`sendError() -> core.crypto.encode() for topic ${s} failed`),l}let d;try{d=await this.client.core.history.get(s,t)}catch(l){throw this.client.logger.error(`sendError() -> history.get(${s}, ${t}) failed`),l}if(p){const l=he(a,s,h);await global.Linking.openURL(l,this.client.name)}else{const l=n||v[d.request.method].res;this.client.core.relayer.publish(s,h,l)}await this.client.core.history.resolve(c)},this.cleanup=async()=>{const e=[],t=[];this.client.session.getAll().forEach(s=>{let i=!1;J(s.expiry)&&(i=!0),this.client.core.crypto.keychain.has(s.topic)||(i=!0),i&&e.push(s.topic)}),this.client.proposal.getAll().forEach(s=>{J(s.expiryTimestamp)&&t.push(s.id)}),await Promise.all([...e.map(s=>this.deleteSession({topic:s})),...t.map(s=>this.deleteProposal(s))])},this.onRelayEventRequest=async e=>{this.requestQueue.queue.push(e),await this.processRequestsQueue()},this.processRequestsQueue=async()=>{if(this.requestQueue.state===x.active){this.client.logger.info(\"Request queue already active, skipping...\");return}for(this.client.logger.info(`Request queue starting with ${this.requestQueue.queue.length} requests`);this.requestQueue.queue.length>0;){this.requestQueue.state=x.active;const e=this.requestQueue.queue.shift();if(e)try{await this.processRequest(e)}catch(t){this.client.logger.warn(t)}}this.requestQueue.state=x.idle},this.processRequest=async e=>{const{topic:t,payload:s,attestation:i,transportType:r,encryptedId:n}=e,a=s.method;if(!this.shouldIgnorePairingRequest({topic:t,requestMethod:a}))switch(a){case\"wc_sessionPropose\":return await this.onSessionProposeRequest({topic:t,payload:s,attestation:i,encryptedId:n});case\"wc_sessionSettle\":return await this.onSessionSettleRequest(t,s);case\"wc_sessionUpdate\":return await this.onSessionUpdateRequest(t,s);case\"wc_sessionExtend\":return await this.onSessionExtendRequest(t,s);case\"wc_sessionPing\":return await this.onSessionPingRequest(t,s);case\"wc_sessionDelete\":return await this.onSessionDeleteRequest(t,s);case\"wc_sessionRequest\":return await this.onSessionRequest({topic:t,payload:s,attestation:i,encryptedId:n,transportType:r});case\"wc_sessionEvent\":return await this.onSessionEventRequest(t,s);case\"wc_sessionAuthenticate\":return await this.onSessionAuthenticateRequest({topic:t,payload:s,attestation:i,encryptedId:n,transportType:r});default:return this.client.logger.info(`Unsupported request method ${a}`)}},this.onRelayEventResponse=async e=>{const{topic:t,payload:s,transportType:i}=e,r=(await this.client.core.history.get(t,s.id)).request.method;switch(r){case\"wc_sessionPropose\":return this.onSessionProposeResponse(t,s,i);case\"wc_sessionSettle\":return this.onSessionSettleResponse(t,s);case\"wc_sessionUpdate\":return this.onSessionUpdateResponse(t,s);case\"wc_sessionExtend\":return this.onSessionExtendResponse(t,s);case\"wc_sessionPing\":return this.onSessionPingResponse(t,s);case\"wc_sessionRequest\":return this.onSessionRequestResponse(t,s);case\"wc_sessionAuthenticate\":return this.onSessionAuthenticateResponse(t,s);default:return this.client.logger.info(`Unsupported response method ${r}`)}},this.onRelayEventUnknownPayload=e=>{const{topic:t}=e,{message:s}=u(\"MISSING_OR_INVALID\",`Decoded payload on topic ${t} is not identifiable as a JSON-RPC request or a response.`);throw new Error(s)},this.shouldIgnorePairingRequest=e=>{const{topic:t,requestMethod:s}=e,i=this.expectedPairingMethodMap.get(t);return!i||i.includes(s)?!1:!!(i.includes(\"wc_sessionAuthenticate\")&&this.client.events.listenerCount(\"session_authenticate\")>0)},this.onSessionProposeRequest=async e=>{const{topic:t,payload:s,attestation:i,encryptedId:r}=e,{params:n,id:a}=s;try{const c=this.client.core.eventClient.getEvent({topic:t});this.isValidConnect(I({},s.params));const h=n.expiryTimestamp||A(v.wc_sessionPropose.req.ttl),p=I({id:a,pairingTopic:t,expiryTimestamp:h},n);await this.setProposal(a,p);const d=await this.getVerifyContext({attestationId:i,hash:X(JSON.stringify(s)),encryptedId:r,metadata:p.proposer.metadata});this.client.events.listenerCount(\"session_proposal\")===0&&(console.warn(\"No listener for session_proposal event\"),c?.setError(Rt.proposal_listener_not_found)),c?.addTrace(St.emit_session_proposal),this.client.events.emit(\"session_proposal\",{id:a,params:p,verifyContext:d})}catch(c){await this.sendError({id:a,topic:t,error:c,rpcOpts:v.wc_sessionPropose.autoReject}),this.client.logger.error(c)}},this.onSessionProposeResponse=async(e,t,s)=>{const{id:i}=t;if(K(t)){const{result:r}=t;this.client.logger.trace({type:\"method\",method:\"onSessionProposeResponse\",result:r});const n=this.client.proposal.get(i);this.client.logger.trace({type:\"method\",method:\"onSessionProposeResponse\",proposal:n});const a=n.proposer.publicKey;this.client.logger.trace({type:\"method\",method:\"onSessionProposeResponse\",selfPublicKey:a});const c=r.responderPublicKey;this.client.logger.trace({type:\"method\",method:\"onSessionProposeResponse\",peerPublicKey:c});const h=await this.client.core.crypto.generateSharedKey(a,c);this.client.logger.trace({type:\"method\",method:\"onSessionProposeResponse\",sessionTopic:h});const p=await this.client.core.relayer.subscribe(h,{transportType:s});this.client.logger.trace({type:\"method\",method:\"onSessionProposeResponse\",subscriptionId:p}),await this.client.core.pairing.activate({topic:e})}else if(U(t)){await this.client.proposal.delete(i,P(\"USER_DISCONNECTED\"));const r=g(\"session_connect\");if(this.events.listenerCount(r)===0)throw new Error(`emitting ${r} without any listeners, 954`);this.events.emit(g(\"session_connect\"),{error:t.error})}},this.onSessionSettleRequest=async(e,t)=>{const{id:s,params:i}=t;try{this.isValidSessionSettleRequest(i);const{relay:r,controller:n,expiry:a,namespaces:c,sessionProperties:h,sessionConfig:p}=t.params,d=D(I(I({topic:e,relay:r,expiry:a,namespaces:c,acknowledged:!0,pairingTopic:\"\",requiredNamespaces:{},optionalNamespaces:{},controller:n.publicKey,self:{publicKey:\"\",metadata:this.client.metadata},peer:{publicKey:n.publicKey,metadata:n.metadata}},h&&{sessionProperties:h}),p&&{sessionConfig:p}),{transportType:f.relay}),l=g(\"session_connect\");if(this.events.listenerCount(l)===0)throw new Error(`emitting ${l} without any listeners 997`);this.events.emit(g(\"session_connect\"),{session:d}),await this.sendResult({id:t.id,topic:e,result:!0,throwOnFailedPublish:!0})}catch(r){await this.sendError({id:s,topic:e,error:r}),this.client.logger.error(r)}},this.onSessionSettleResponse=async(e,t)=>{const{id:s}=t;K(t)?(await this.client.session.update(e,{acknowledged:!0}),this.events.emit(g(\"session_approve\",s),{})):U(t)&&(await this.client.session.delete(e,P(\"USER_DISCONNECTED\")),this.events.emit(g(\"session_approve\",s),{error:t.error}))},this.onSessionUpdateRequest=async(e,t)=>{const{params:s,id:i}=t;try{const r=`${e}_session_update`,n=re.get(r);if(n&&this.isRequestOutOfSync(n,i)){this.client.logger.info(`Discarding out of sync request - ${i}`),this.sendError({id:i,topic:e,error:P(\"INVALID_UPDATE_REQUEST\")});return}this.isValidUpdate(I({topic:e},s));try{re.set(r,i),await this.client.session.update(e,{namespaces:s.namespaces}),await this.sendResult({id:i,topic:e,result:!0,throwOnFailedPublish:!0})}catch(a){throw re.delete(r),a}this.client.events.emit(\"session_update\",{id:i,topic:e,params:s})}catch(r){await this.sendError({id:i,topic:e,error:r}),this.client.logger.error(r)}},this.isRequestOutOfSync=(e,t)=>parseInt(t.toString().slice(0,-3))<=parseInt(e.toString().slice(0,-3)),this.onSessionUpdateResponse=(e,t)=>{const{id:s}=t,i=g(\"session_update\",s);if(this.events.listenerCount(i)===0)throw new Error(`emitting ${i} without any listeners`);K(t)?this.events.emit(g(\"session_update\",s),{}):U(t)&&this.events.emit(g(\"session_update\",s),{error:t.error})},this.onSessionExtendRequest=async(e,t)=>{const{id:s}=t;try{this.isValidExtend({topic:e}),await this.setExpiry(e,A(z)),await this.sendResult({id:s,topic:e,result:!0,throwOnFailedPublish:!0}),this.client.events.emit(\"session_extend\",{id:s,topic:e})}catch(i){await this.sendError({id:s,topic:e,error:i}),this.client.logger.error(i)}},this.onSessionExtendResponse=(e,t)=>{const{id:s}=t,i=g(\"session_extend\",s);if(this.events.listenerCount(i)===0)throw new Error(`emitting ${i} without any listeners`);K(t)?this.events.emit(g(\"session_extend\",s),{}):U(t)&&this.events.emit(g(\"session_extend\",s),{error:t.error})},this.onSessionPingRequest=async(e,t)=>{const{id:s}=t;try{this.isValidPing({topic:e}),await this.sendResult({id:s,topic:e,result:!0,throwOnFailedPublish:!0}),this.client.events.emit(\"session_ping\",{id:s,topic:e})}catch(i){await this.sendError({id:s,topic:e,error:i}),this.client.logger.error(i)}},this.onSessionPingResponse=(e,t)=>{const{id:s}=t,i=g(\"session_ping\",s);if(this.events.listenerCount(i)===0)throw new Error(`emitting ${i} without any listeners`);setTimeout(()=>{K(t)?this.events.emit(g(\"session_ping\",s),{}):U(t)&&this.events.emit(g(\"session_ping\",s),{error:t.error})},500)},this.onSessionDeleteRequest=async(e,t)=>{const{id:s}=t;try{this.isValidDisconnect({topic:e,reason:t.params}),Promise.all([new Promise(i=>{this.client.core.relayer.once(Ue.publish,async()=>{i(await this.deleteSession({topic:e,id:s}))})}),this.sendResult({id:s,topic:e,result:!0,throwOnFailedPublish:!0}),this.cleanupPendingSentRequestsForTopic({topic:e,error:P(\"USER_DISCONNECTED\")})]).catch(i=>this.client.logger.error(i))}catch(i){this.client.logger.error(i)}},this.onSessionRequest=async e=>{var t,s,i;const{topic:r,payload:n,attestation:a,encryptedId:c,transportType:h}=e,{id:p,params:d}=n;try{await this.isValidRequest(I({topic:r},d));const l=this.client.session.get(r),w=await this.getVerifyContext({attestationId:a,hash:X(JSON.stringify(ge(\"wc_sessionRequest\",d,p))),encryptedId:c,metadata:l.peer.metadata,transportType:h}),m={id:p,topic:r,params:d,verifyContext:w};await this.setPendingSessionRequest(m),h===f.link_mode&&(t=l.peer.metadata.redirect)!=null&&t.universal&&this.client.core.addLinkModeSupportedApp((s=l.peer.metadata.redirect)==null?void 0:s.universal),(i=this.client.signConfig)!=null&&i.disableRequestQueue?this.emitSessionRequest(m):(this.addSessionRequestToSessionRequestQueue(m),this.processSessionRequestQueue())}catch(l){await this.sendError({id:p,topic:r,error:l}),this.client.logger.error(l)}},this.onSessionRequestResponse=(e,t)=>{const{id:s}=t,i=g(\"session_request\",s);if(this.events.listenerCount(i)===0)throw new Error(`emitting ${i} without any listeners`);K(t)?this.events.emit(g(\"session_request\",s),{result:t.result}):U(t)&&this.events.emit(g(\"session_request\",s),{error:t.error})},this.onSessionEventRequest=async(e,t)=>{const{id:s,params:i}=t;try{const r=`${e}_session_event_${i.event.name}`,n=re.get(r);if(n&&this.isRequestOutOfSync(n,s)){this.client.logger.info(`Discarding out of sync request - ${s}`);return}this.isValidEmit(I({topic:e},i)),this.client.events.emit(\"session_event\",{id:s,topic:e,params:i}),re.set(r,s)}catch(r){await this.sendError({id:s,topic:e,error:r}),this.client.logger.error(r)}},this.onSessionAuthenticateResponse=(e,t)=>{const{id:s}=t;this.client.logger.trace({type:\"method\",method:\"onSessionAuthenticateResponse\",topic:e,payload:t}),K(t)?this.events.emit(g(\"session_request\",s),{result:t.result}):U(t)&&this.events.emit(g(\"session_request\",s),{error:t.error})},this.onSessionAuthenticateRequest=async e=>{var t;const{topic:s,payload:i,attestation:r,encryptedId:n,transportType:a}=e;try{const{requester:c,authPayload:h,expiryTimestamp:p}=i.params,d=await this.getVerifyContext({attestationId:r,hash:X(JSON.stringify(i)),encryptedId:n,metadata:c.metadata,transportType:a}),l={requester:c,pairingTopic:s,id:i.id,authPayload:h,verifyContext:d,expiryTimestamp:p};await this.setAuthRequest(i.id,{request:l,pairingTopic:s,transportType:a}),a===f.link_mode&&(t=c.metadata.redirect)!=null&&t.universal&&this.client.core.addLinkModeSupportedApp(c.metadata.redirect.universal),this.client.events.emit(\"session_authenticate\",{topic:s,params:i.params,id:i.id,verifyContext:d})}catch(c){this.client.logger.error(c);const h=i.params.requester.publicKey,p=await this.client.core.crypto.generateKeyPair(),d=this.getAppLinkIfEnabled(i.params.requester.metadata,a),l={type:Ae,receiverPublicKey:h,senderPublicKey:p};await this.sendError({id:i.id,topic:s,error:c,encodeOpts:l,rpcOpts:v.wc_sessionAuthenticate.autoReject,appLink:d})}},this.addSessionRequestToSessionRequestQueue=e=>{this.sessionRequestQueue.queue.push(e)},this.cleanupAfterResponse=e=>{this.deletePendingSessionRequest(e.response.id,{message:\"fulfilled\",code:0}),setTimeout(()=>{this.sessionRequestQueue.state=x.idle,this.processSessionRequestQueue()},tt(this.requestQueueDelay))},this.cleanupPendingSentRequestsForTopic=({topic:e,error:t})=>{const s=this.client.core.history.pending;s.length>0&&s.filter(i=>i.topic===e&&i.request.method===\"wc_sessionRequest\").forEach(i=>{const r=i.request.id,n=g(\"session_request\",r);if(this.events.listenerCount(n)===0)throw new Error(`emitting ${n} without any listeners`);this.events.emit(g(\"session_request\",i.request.id),{error:t})})},this.processSessionRequestQueue=()=>{if(this.sessionRequestQueue.state===x.active){this.client.logger.info(\"session request queue is already active.\");return}const e=this.sessionRequestQueue.queue[0];if(!e){this.client.logger.info(\"session request queue is empty.\");return}try{this.sessionRequestQueue.state=x.active,this.emitSessionRequest(e)}catch(t){this.client.logger.error(t)}},this.emitSessionRequest=e=>{this.client.events.emit(\"session_request\",e)},this.onPairingCreated=e=>{if(e.methods&&this.expectedPairingMethodMap.set(e.topic,e.methods),e.active)return;const t=this.client.proposal.getAll().find(s=>s.pairingTopic===e.topic);t&&this.onSessionProposeRequest({topic:e.topic,payload:ge(\"wc_sessionPropose\",{requiredNamespaces:t.requiredNamespaces,optionalNamespaces:t.optionalNamespaces,relays:t.relays,proposer:t.proposer,sessionProperties:t.sessionProperties},t.id)})},this.isValidConnect=async e=>{if(!L(e)){const{message:a}=u(\"MISSING_OR_INVALID\",`connect() params: ${JSON.stringify(e)}`);throw new Error(a)}const{pairingTopic:t,requiredNamespaces:s,optionalNamespaces:i,sessionProperties:r,relays:n}=e;if(ne(t)||await this.isValidPairingTopic(t),!kt(n,!0)){const{message:a}=u(\"MISSING_OR_INVALID\",`connect() relays: ${n}`);throw new Error(a)}!ne(s)&&Xe(s)!==0&&this.validateNamespaces(s,\"requiredNamespaces\"),!ne(i)&&Xe(i)!==0&&this.validateNamespaces(i,\"optionalNamespaces\"),ne(r)||this.validateSessionProps(r,\"sessionProperties\")},this.validateNamespaces=(e,t)=>{const s=$t(e,\"connect()\",t);if(s)throw new Error(s.message)},this.isValidApprove=async e=>{if(!L(e))throw new Error(u(\"MISSING_OR_INVALID\",`approve() params: ${e}`).message);const{id:t,namespaces:s,relayProtocol:i,sessionProperties:r}=e;this.checkRecentlyDeleted(t),await this.isValidProposalId(t);const n=this.client.proposal.get(t),a=Oe(s,\"approve()\");if(a)throw new Error(a.message);const c=Je(n.requiredNamespaces,s,\"approve()\");if(c)throw new Error(c.message);if(!k(i,!0)){const{message:h}=u(\"MISSING_OR_INVALID\",`approve() relayProtocol: ${i}`);throw new Error(h)}ne(r)||this.validateSessionProps(r,\"sessionProperties\")},this.isValidReject=async e=>{if(!L(e)){const{message:i}=u(\"MISSING_OR_INVALID\",`reject() params: ${e}`);throw new Error(i)}const{id:t,reason:s}=e;if(this.checkRecentlyDeleted(t),await this.isValidProposalId(t),!Kt(s)){const{message:i}=u(\"MISSING_OR_INVALID\",`reject() reason: ${JSON.stringify(s)}`);throw new Error(i)}},this.isValidSessionSettleRequest=e=>{if(!L(e)){const{message:c}=u(\"MISSING_OR_INVALID\",`onSessionSettleRequest() params: ${e}`);throw new Error(c)}const{relay:t,controller:s,namespaces:i,expiry:r}=e;if(!Ut(t)){const{message:c}=u(\"MISSING_OR_INVALID\",\"onSessionSettleRequest() relay protocol should be a string\");throw new Error(c)}const n=Gt(s,\"onSessionSettleRequest()\");if(n)throw new Error(n.message);const a=Oe(i,\"onSessionSettleRequest()\");if(a)throw new Error(a.message);if(J(r)){const{message:c}=u(\"EXPIRED\",\"onSessionSettleRequest()\");throw new Error(c)}},this.isValidUpdate=async e=>{if(!L(e)){const{message:a}=u(\"MISSING_OR_INVALID\",`update() params: ${e}`);throw new Error(a)}const{topic:t,namespaces:s}=e;this.checkRecentlyDeleted(t),await this.isValidSessionTopic(t);const i=this.client.session.get(t),r=Oe(s,\"update()\");if(r)throw new Error(r.message);const n=Je(i.requiredNamespaces,s,\"update()\");if(n)throw new Error(n.message)},this.isValidExtend=async e=>{if(!L(e)){const{message:s}=u(\"MISSING_OR_INVALID\",`extend() params: ${e}`);throw new Error(s)}const{topic:t}=e;this.checkRecentlyDeleted(t),await this.isValidSessionTopic(t)},this.isValidRequest=async e=>{if(!L(e)){const{message:a}=u(\"MISSING_OR_INVALID\",`request() params: ${e}`);throw new Error(a)}const{topic:t,request:s,chainId:i,expiry:r}=e;this.checkRecentlyDeleted(t),await this.isValidSessionTopic(t);const{namespaces:n}=this.client.session.get(t);if(!Be(n,i)){const{message:a}=u(\"MISSING_OR_INVALID\",`request() chainId: ${i}`);throw new Error(a)}if(!jt(s)){const{message:a}=u(\"MISSING_OR_INVALID\",`request() ${JSON.stringify(s)}`);throw new Error(a)}if(!Ft(n,i,s.method)){const{message:a}=u(\"MISSING_OR_INVALID\",`request() method: ${s.method}`);throw new Error(a)}if(r&&!Qt(r,me)){const{message:a}=u(\"MISSING_OR_INVALID\",`request() expiry: ${r}. Expiry must be a number (in seconds) between ${me.min} and ${me.max}`);throw new Error(a)}},this.isValidRespond=async e=>{var t;if(!L(e)){const{message:r}=u(\"MISSING_OR_INVALID\",`respond() params: ${e}`);throw new Error(r)}const{topic:s,response:i}=e;try{await this.isValidSessionTopic(s)}catch(r){throw(t=e?.response)!=null&&t.id&&this.cleanupAfterResponse(e),r}if(!zt(i)){const{message:r}=u(\"MISSING_OR_INVALID\",`respond() response: ${JSON.stringify(i)}`);throw new Error(r)}},this.isValidPing=async e=>{if(!L(e)){const{message:s}=u(\"MISSING_OR_INVALID\",`ping() params: ${e}`);throw new Error(s)}const{topic:t}=e;await this.isValidSessionOrPairingTopic(t)},this.isValidEmit=async e=>{if(!L(e)){const{message:n}=u(\"MISSING_OR_INVALID\",`emit() params: ${e}`);throw new Error(n)}const{topic:t,event:s,chainId:i}=e;await this.isValidSessionTopic(t);const{namespaces:r}=this.client.session.get(t);if(!Be(r,i)){const{message:n}=u(\"MISSING_OR_INVALID\",`emit() chainId: ${i}`);throw new Error(n)}if(!Ht(s)){const{message:n}=u(\"MISSING_OR_INVALID\",`emit() event: ${JSON.stringify(s)}`);throw new Error(n)}if(!Yt(r,i,s.name)){const{message:n}=u(\"MISSING_OR_INVALID\",`emit() event: ${JSON.stringify(s)}`);throw new Error(n)}},this.isValidDisconnect=async e=>{if(!L(e)){const{message:s}=u(\"MISSING_OR_INVALID\",`disconnect() params: ${e}`);throw new Error(s)}const{topic:t}=e;await this.isValidSessionOrPairingTopic(t)},this.isValidAuthenticate=e=>{const{chains:t,uri:s,domain:i,nonce:r}=e;if(!Array.isArray(t)||t.length===0)throw new Error(\"chains is required and must be a non-empty array\");if(!k(s,!1))throw new Error(\"uri is required parameter\");if(!k(i,!1))throw new Error(\"domain is required parameter\");if(!k(r,!1))throw new Error(\"nonce is required parameter\");if([...new Set(t.map(a=>Ne(a).namespace))].length>1)throw new Error(\"Multi-namespace requests are not supported. Please request single namespace only.\");const{namespace:n}=Ne(t[0]);if(n!==\"eip155\")throw new Error(\"Only eip155 namespace is supported for authenticated sessions. Please use .connect() for non-eip155 chains.\")},this.getVerifyContext=async e=>{const{attestationId:t,hash:s,encryptedId:i,metadata:r,transportType:n}=e,a={verified:{verifyUrl:r.verifyUrl||It,validation:\"UNKNOWN\",origin:r.url||\"\"}};try{if(n===f.link_mode){const h=this.getAppLinkIfEnabled(r,n);return a.verified.validation=h&&new URL(h).origin===new URL(r.url).origin?\"VALID\":\"INVALID\",a}const c=await this.client.core.verify.resolve({attestationId:t,hash:s,encryptedId:i,verifyUrl:r.verifyUrl});c&&(a.verified.origin=c.origin,a.verified.isScam=c.isScam,a.verified.validation=c.origin===new URL(r.url).origin?\"VALID\":\"INVALID\")}catch(c){this.client.logger.warn(c)}return this.client.logger.debug(`Verify context: ${JSON.stringify(a)}`),a},this.validateSessionProps=(e,t)=>{Object.values(e).forEach(s=>{if(!k(s,!1)){const{message:i}=u(\"MISSING_OR_INVALID\",`${t} must be in Record format. Received: ${JSON.stringify(s)}`);throw new Error(i)}})},this.getPendingAuthRequest=e=>{const t=this.client.auth.requests.get(e);return typeof t==\"object\"?t:void 0},this.addToRecentlyDeleted=(e,t)=>{if(this.recentlyDeletedMap.set(e,t),this.recentlyDeletedMap.size>=this.recentlyDeletedLimit){let s=0;const i=this.recentlyDeletedLimit/2;for(const r of this.recentlyDeletedMap.keys()){if(s++>=i)break;this.recentlyDeletedMap.delete(r)}}},this.checkRecentlyDeleted=e=>{const t=this.recentlyDeletedMap.get(e);if(t){const{message:s}=u(\"MISSING_OR_INVALID\",`Record was recently deleted - ${t}: ${e}`);throw new Error(s)}},this.isLinkModeEnabled=(e,t)=>{var s,i,r,n,a,c,h,p,d;return!e||t!==f.link_mode?!1:((i=(s=this.client.metadata)==null?void 0:s.redirect)==null?void 0:i.linkMode)===!0&&((n=(r=this.client.metadata)==null?void 0:r.redirect)==null?void 0:n.universal)!==void 0&&((c=(a=this.client.metadata)==null?void 0:a.redirect)==null?void 0:c.universal)!==\"\"&&((h=e?.redirect)==null?void 0:h.universal)!==void 0&&((p=e?.redirect)==null?void 0:p.universal)!==\"\"&&((d=e?.redirect)==null?void 0:d.linkMode)===!0&&this.client.core.linkModeSupportedApps.includes(e.redirect.universal)&&typeof(global==null?void 0:global.Linking)<\"u\"},this.getAppLinkIfEnabled=(e,t)=>{var s;return this.isLinkModeEnabled(e,t)?(s=e?.redirect)==null?void 0:s.universal:void 0},this.handleLinkModeMessage=({url:e})=>{if(!e||!e.includes(\"wc_ev\")||!e.includes(\"topic\"))return;const t=We(e,\"topic\")||\"\",s=decodeURIComponent(We(e,\"wc_ev\")||\"\"),i=this.client.session.keys.includes(t);i&&this.client.session.update(t,{transportType:f.link_mode}),this.client.core.dispatchEnvelope({topic:t,message:s,sessionExists:i})},this.registerLinkModeListeners=async()=>{var e;if(Xt()||Jt()&&(e=this.client.metadata.redirect)!=null&&e.linkMode){const t=global==null?void 0:global.Linking;if(typeof t<\"u\"){t.addEventListener(\"url\",this.handleLinkModeMessage,this.client.name);const s=await t.getInitialURL();s&&setTimeout(()=>{this.handleLinkModeMessage({url:s})},50)}}}}isInitialized(){if(!this.initialized){const{message:o}=u(\"NOT_INITIALIZED\",this.name);throw new Error(o)}}async confirmOnlineStateOrThrow(){await this.client.core.relayer.confirmOnlineStateOrThrow()}registerRelayerEvents(){this.client.core.relayer.on(Ue.message,o=>{!this.initialized||this.relayMessageCache.length>0?this.relayMessageCache.push(o):this.onRelayMessage(o)})}async onRelayMessage(o){const{topic:e,message:t,attestation:s,transportType:i}=o,{publicKey:r}=this.client.auth.authKeys.keys.includes(ae)?this.client.auth.authKeys.get(ae):{responseTopic:void 0,publicKey:void 0},n=await this.client.core.crypto.decode(e,t,{receiverPublicKey:r,encoding:i===f.link_mode?ie:de});try{os(n)?(this.client.core.history.set(e,n),this.onRelayEventRequest({topic:e,payload:n,attestation:s,transportType:i,encryptedId:X(t)})):as(n)?(await this.client.core.history.resolve(n),await this.onRelayEventResponse({topic:e,payload:n,transportType:i}),this.client.core.history.delete(e,n.id)):this.onRelayEventUnknownPayload({topic:e,payload:n,transportType:i})}catch(a){this.client.logger.error(a)}}registerExpirerEvents(){this.client.core.expirer.on(ft.expired,async o=>{const{topic:e,id:t}=Bt(o.target);if(t&&this.client.pendingRequest.keys.includes(t))return await this.deletePendingSessionRequest(t,u(\"EXPIRED\"),!0);if(t&&this.client.auth.requests.keys.includes(t))return await this.deletePendingAuthRequest(t,u(\"EXPIRED\"),!0);e?this.client.session.keys.includes(e)&&(await this.deleteSession({topic:e,expirerHasDeleted:!0}),this.client.events.emit(\"session_expire\",{topic:e})):t&&(await this.deleteProposal(t,!0),this.client.events.emit(\"proposal_expire\",{id:t}))})}registerPairingEvents(){this.client.core.pairing.events.on(Ge.create,o=>this.onPairingCreated(o)),this.client.core.pairing.events.on(Ge.delete,o=>{this.addToRecentlyDeleted(o.topic,\"pairing\")})}isValidPairingTopic(o){if(!k(o,!1)){const{message:e}=u(\"MISSING_OR_INVALID\",`pairing topic should be a string: ${o}`);throw new Error(e)}if(!this.client.core.pairing.pairings.keys.includes(o)){const{message:e}=u(\"NO_MATCHING_KEY\",`pairing topic doesn't exist: ${o}`);throw new Error(e)}if(J(this.client.core.pairing.pairings.get(o).expiry)){const{message:e}=u(\"EXPIRED\",`pairing topic: ${o}`);throw new Error(e)}}async isValidSessionTopic(o){if(!k(o,!1)){const{message:e}=u(\"MISSING_OR_INVALID\",`session topic should be a string: ${o}`);throw new Error(e)}if(this.checkRecentlyDeleted(o),!this.client.session.keys.includes(o)){const{message:e}=u(\"NO_MATCHING_KEY\",`session topic doesn't exist: ${o}`);throw new Error(e)}if(J(this.client.session.get(o).expiry)){await this.deleteSession({topic:o});const{message:e}=u(\"EXPIRED\",`session topic: ${o}`);throw new Error(e)}if(!this.client.core.crypto.keychain.has(o)){const{message:e}=u(\"MISSING_OR_INVALID\",`session topic does not exist in keychain: ${o}`);throw await this.deleteSession({topic:o}),new Error(e)}}async isValidSessionOrPairingTopic(o){if(this.checkRecentlyDeleted(o),this.client.session.keys.includes(o))await this.isValidSessionTopic(o);else if(this.client.core.pairing.pairings.keys.includes(o))this.isValidPairingTopic(o);else if(k(o,!1)){const{message:e}=u(\"NO_MATCHING_KEY\",`session or pairing topic doesn't exist: ${o}`);throw new Error(e)}else{const{message:e}=u(\"MISSING_OR_INVALID\",`session or pairing topic should be a string: ${o}`);throw new Error(e)}}async isValidProposalId(o){if(!Wt(o)){const{message:e}=u(\"MISSING_OR_INVALID\",`proposal id should be a number: ${o}`);throw new Error(e)}if(!this.client.proposal.keys.includes(o)){const{message:e}=u(\"NO_MATCHING_KEY\",`proposal id doesn't exist: ${o}`);throw new Error(e)}if(J(this.client.proposal.get(o).expiryTimestamp)){await this.deleteProposal(o);const{message:e}=u(\"EXPIRED\",`proposal id: ${o}`);throw new Error(e)}}}class Ss extends H{constructor(o,e){super(o,e,st,ye),this.core=o,this.logger=e}}class yt extends H{constructor(o,e){super(o,e,rt,ye),this.core=o,this.logger=e}}class Is extends H{constructor(o,e){super(o,e,ot,ye,t=>t.id),this.core=o,this.logger=e}}class fs extends H{constructor(o,e){super(o,e,pt,oe,()=>ae),this.core=o,this.logger=e}}class vs extends H{constructor(o,e){super(o,e,ht,oe),this.core=o,this.logger=e}}class qs extends H{constructor(o,e){super(o,e,dt,oe,t=>t.id),this.core=o,this.logger=e}}class Ts{constructor(o,e){this.core=o,this.logger=e,this.authKeys=new fs(this.core,this.logger),this.pairingTopics=new vs(this.core,this.logger),this.requests=new qs(this.core,this.logger)}async init(){await this.authKeys.init(),await this.pairingTopics.init(),await this.requests.init()}}class _e extends At{constructor(o){super(o),this.protocol=be,this.version=Ce,this.name=we.name,this.events=new ts,this.on=(t,s)=>this.events.on(t,s),this.once=(t,s)=>this.events.once(t,s),this.off=(t,s)=>this.events.off(t,s),this.removeListener=(t,s)=>this.events.removeListener(t,s),this.removeAllListeners=t=>this.events.removeAllListeners(t),this.connect=async t=>{try{return await this.engine.connect(t)}catch(s){throw this.logger.error(s.message),s}},this.pair=async t=>{try{return await this.engine.pair(t)}catch(s){throw this.logger.error(s.message),s}},this.approve=async t=>{try{return await this.engine.approve(t)}catch(s){throw this.logger.error(s.message),s}},this.reject=async t=>{try{return await this.engine.reject(t)}catch(s){throw this.logger.error(s.message),s}},this.update=async t=>{try{return await this.engine.update(t)}catch(s){throw this.logger.error(s.message),s}},this.extend=async t=>{try{return await this.engine.extend(t)}catch(s){throw this.logger.error(s.message),s}},this.request=async t=>{try{return await this.engine.request(t)}catch(s){throw this.logger.error(s.message),s}},this.respond=async t=>{try{return await this.engine.respond(t)}catch(s){throw this.logger.error(s.message),s}},this.ping=async t=>{try{return await this.engine.ping(t)}catch(s){throw this.logger.error(s.message),s}},this.emit=async t=>{try{return await this.engine.emit(t)}catch(s){throw this.logger.error(s.message),s}},this.disconnect=async t=>{try{return await this.engine.disconnect(t)}catch(s){throw this.logger.error(s.message),s}},this.find=t=>{try{return this.engine.find(t)}catch(s){throw this.logger.error(s.message),s}},this.getPendingSessionRequests=()=>{try{return this.engine.getPendingSessionRequests()}catch(t){throw this.logger.error(t.message),t}},this.authenticate=async(t,s)=>{try{return await this.engine.authenticate(t,s)}catch(i){throw this.logger.error(i.message),i}},this.formatAuthMessage=t=>{try{return this.engine.formatAuthMessage(t)}catch(s){throw this.logger.error(s.message),s}},this.approveSessionAuthenticate=async t=>{try{return await this.engine.approveSessionAuthenticate(t)}catch(s){throw this.logger.error(s.message),s}},this.rejectSessionAuthenticate=async t=>{try{return await this.engine.rejectSessionAuthenticate(t)}catch(s){throw this.logger.error(s.message),s}},this.name=o?.name||we.name,this.metadata=o?.metadata||Zt(),this.signConfig=o?.signConfig;const e=typeof o?.logger<\"u\"&&typeof o?.logger!=\"string\"?o.logger:qt(Tt({level:o?.logger||we.logger}));this.core=o?.core||new vt(o),this.logger=Nt(e,this.name),this.session=new yt(this.core,this.logger),this.proposal=new Ss(this.core,this.logger),this.pendingRequest=new Is(this.core,this.logger),this.engine=new Rs(this),this.auth=new Ts(this.core,this.logger)}static async init(o){const e=new _e(o);return await e.initialize(),e}get context(){return Pt(this.logger)}get pairing(){return this.core.pairing.pairings}async initialize(){this.logger.trace(\"Initialized\");try{await this.core.start(),await this.session.init(),await this.proposal.init(),await this.pendingRequest.init(),await this.auth.init(),await this.engine.init(),this.logger.info(\"SignClient Initialization Success\"),this.engine.processRelayMessageCache()}catch(o){throw this.logger.info(\"SignClient Initialization Failure\"),this.logger.error(o.message),o}}}const Ns=yt,Ps=_e;export{lt as AUTH_CONTEXT,pt as AUTH_KEYS_CONTEXT,ht as AUTH_PAIRING_TOPIC_CONTEXT,ct as AUTH_PROTOCOL,ae as AUTH_PUBLIC_KEY_NAME,dt as AUTH_REQUEST_CONTEXT,oe as AUTH_STORAGE_PREFIX,gs as AUTH_VERSION,nt as ENGINE_CONTEXT,x as ENGINE_QUEUE_STATES,v as ENGINE_RPC_OPTS,hs as HISTORY_CONTEXT,ps as HISTORY_EVENTS,ds as HISTORY_STORAGE_VERSION,at as METHODS_TO_VERIFY,st as PROPOSAL_CONTEXT,us as PROPOSAL_EXPIRY,it as PROPOSAL_EXPIRY_MESSAGE,ot as REQUEST_CONTEXT,rt as SESSION_CONTEXT,z as SESSION_EXPIRY,me as SESSION_REQUEST_EXPIRY_BOUNDARIES,Le as SIGN_CLIENT_CONTEXT,we as SIGN_CLIENT_DEFAULT,cs as SIGN_CLIENT_EVENTS,be as SIGN_CLIENT_PROTOCOL,ls as SIGN_CLIENT_STORAGE_OPTIONS,ye as SIGN_CLIENT_STORAGE_PREFIX,Ce as SIGN_CLIENT_VERSION,Ns as SessionStore,Ps as SignClient,xe as WALLETCONNECT_DEEPLINK_CHOICE,_e as default};\n//# sourceMappingURL=index.es.js.map\n","export class DefaultLogger {\n constructor(logLevel = 'info') {\n this.logLevel = 'info';\n this.logLevel = logLevel;\n }\n setLogLevel(level) {\n this.logLevel = level;\n }\n getLogLevel() {\n return this.logLevel;\n }\n error(message, ...args) {\n if (['error', 'warn', 'info', 'debug'].includes(this.logLevel)) {\n console.error(`[ERROR] ${message}`, ...args);\n }\n }\n warn(message, ...args) {\n if (['warn', 'info', 'debug'].includes(this.logLevel)) {\n console.warn(`[WARN] ${message}`, ...args);\n }\n }\n info(message, ...args) {\n if (['info', 'debug'].includes(this.logLevel)) {\n console.info(`[INFO] ${message}`, ...args);\n }\n }\n debug(message, ...args) {\n if (this.logLevel === 'debug') {\n console.debug(`[DEBUG] ${message}`, ...args);\n }\n }\n}\n","export class SessionNotFoundError extends Error {\n constructor(message) {\n super(message);\n this.name = 'SessionNotFoundError';\n }\n}\n","/*\n *\n * Hedera Wallet Connect\n *\n * Copyright (C) 2023 Hedera Hashgraph, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nimport { AccountBalance, AccountId, AccountInfo, LedgerId, SignerSignature, Transaction, TransactionRecord, Client, PublicKey, TransactionId, TransactionResponse, Query, AccountRecordsQuery, AccountInfoQuery, AccountBalanceQuery, TransactionReceiptQuery, TransactionReceipt, TransactionRecordQuery, } from '@hashgraph/sdk';\nimport { proto } from '@hashgraph/proto';\nimport { HederaJsonRpcMethod, base64StringToSignatureMap, base64StringToUint8Array, ledgerIdToCAIPChainId, queryToBase64String, transactionBodyToBase64String, transactionToBase64String, transactionToTransactionBody, extensionOpen, Uint8ArrayToBase64String, Uint8ArrayToString, } from '../shared';\nimport { DefaultLogger } from '../shared/logger';\nimport { SessionNotFoundError } from './SessionNotFoundError';\nconst clients = {};\nexport class DAppSigner {\n constructor(accountId, signClient, topic, ledgerId = LedgerId.MAINNET, extensionId, logLevel = 'debug') {\n this.accountId = accountId;\n this.signClient = signClient;\n this.topic = topic;\n this.ledgerId = ledgerId;\n this.extensionId = extensionId;\n this.logger = new DefaultLogger(logLevel);\n }\n /**\n * Sets the logging level for the DAppSigner\n * @param level - The logging level to set\n */\n setLogLevel(level) {\n if (this.logger instanceof DefaultLogger) {\n this.logger.setLogLevel(level);\n }\n }\n _getHederaClient() {\n const ledgerIdString = this.ledgerId.toString();\n if (!clients[ledgerIdString]) {\n clients[ledgerIdString] = Client.forName(ledgerIdString);\n }\n return clients[ledgerIdString];\n }\n get _signerAccountId() {\n return `${ledgerIdToCAIPChainId(this.ledgerId)}:${this.accountId.toString()}`;\n }\n _getRandomNodes(numberOfNodes) {\n const allNodes = Object.values(this._getHederaClient().network).map((o) => typeof o === 'string' ? AccountId.fromString(o) : o);\n // shuffle nodes\n for (let i = allNodes.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [allNodes[i], allNodes[j]] = [allNodes[j], allNodes[i]];\n }\n return allNodes.slice(0, numberOfNodes);\n }\n request(request) {\n var _a, _b;\n // Avoid a wallet call if the session is no longer valid\n if (!((_b = (_a = this === null || this === void 0 ? void 0 : this.signClient) === null || _a === void 0 ? void 0 : _a.session) === null || _b === void 0 ? void 0 : _b.get(this.topic))) {\n this.logger.error('Session no longer exists, signer will be removed. Please reconnect to the wallet.');\n // Notify DAppConnector to remove this signer\n this.signClient.emit({\n topic: this.topic,\n event: {\n name: 'session_delete',\n data: { topic: this.topic },\n },\n chainId: ledgerIdToCAIPChainId(this.ledgerId),\n });\n throw new SessionNotFoundError('Session no longer exists. Please reconnect to the wallet.');\n }\n if (this.extensionId)\n extensionOpen(this.extensionId);\n return this.signClient.request({\n topic: this.topic,\n request,\n chainId: ledgerIdToCAIPChainId(this.ledgerId),\n });\n }\n getAccountId() {\n return this.accountId;\n }\n getAccountKey() {\n throw new Error('Method not implemented.');\n }\n getLedgerId() {\n return this.ledgerId;\n }\n getNetwork() {\n return this._getHederaClient().network;\n }\n getMirrorNetwork() {\n return this._getHederaClient().mirrorNetwork;\n }\n getAccountBalance() {\n return this.call(new AccountBalanceQuery().setAccountId(this.accountId));\n }\n getAccountInfo() {\n return this.call(new AccountInfoQuery().setAccountId(this.accountId));\n }\n getAccountRecords() {\n return this.call(new AccountRecordsQuery().setAccountId(this.accountId));\n }\n getMetadata() {\n return this.signClient.metadata;\n }\n async sign(data, signOptions = {\n encoding: 'utf-8',\n }) {\n try {\n const messageToSign = signOptions.encoding === 'base64'\n ? Uint8ArrayToBase64String(data[0])\n : Uint8ArrayToString(data[0]);\n const { signatureMap } = await this.request({\n method: HederaJsonRpcMethod.SignMessage,\n params: {\n signerAccountId: this._signerAccountId,\n message: messageToSign,\n },\n });\n const sigmap = base64StringToSignatureMap(signatureMap);\n const signerSignature = new SignerSignature({\n accountId: this.getAccountId(),\n publicKey: PublicKey.fromBytes(sigmap.sigPair[0].pubKeyPrefix),\n signature: sigmap.sigPair[0].ed25519 ||\n sigmap.sigPair[0].ECDSASecp256k1,\n });\n this.logger.debug('Data signed successfully');\n return [signerSignature];\n }\n catch (error) {\n this.logger.error('Error signing data:', error);\n throw error;\n }\n }\n async checkTransaction(transaction) {\n throw new Error('Method not implemented.');\n }\n async populateTransaction(transaction) {\n return transaction\n .setNodeAccountIds(this._getRandomNodes(10)) // allow retrying on up to 10 nodes\n .setTransactionId(TransactionId.generate(this.getAccountId()));\n }\n /**\n * Prepares a transaction object for signing using a single node account id.\n * If the transaction object does not already have a node account id,\n * generate a random node account id using the Hedera SDK client\n *\n * @param transaction - Any instance of a class that extends `Transaction`\n * @returns transaction - `Transaction` object with signature\n */\n async signTransaction(transaction) {\n let nodeAccountId;\n if (!transaction.nodeAccountIds || transaction.nodeAccountIds.length === 0)\n nodeAccountId = this._getRandomNodes(1)[0];\n else\n nodeAccountId = transaction.nodeAccountIds[0];\n const transactionBody = transactionToTransactionBody(transaction, nodeAccountId);\n if (!transactionBody)\n throw new Error('Failed to serialize transaction body');\n const transactionBodyBase64 = transactionBodyToBase64String(transactionBody);\n const { signatureMap } = await this.request({\n method: HederaJsonRpcMethod.SignTransaction,\n params: {\n signerAccountId: this._signerAccountId,\n transactionBody: transactionBodyBase64,\n },\n });\n const sigMap = base64StringToSignatureMap(signatureMap);\n const bodyBytes = base64StringToUint8Array(transactionBodyBase64);\n const bytes = proto.Transaction.encode({ bodyBytes, sigMap }).finish();\n return Transaction.fromBytes(bytes);\n }\n async _tryExecuteTransactionRequest(request) {\n try {\n const requestToBytes = request.toBytes();\n this.logger.debug('Creating transaction from bytes', requestToBytes, request);\n const transaction = Transaction.fromBytes(requestToBytes);\n this.logger.debug('Executing transaction request', transaction);\n const result = await this.request({\n method: HederaJsonRpcMethod.SignAndExecuteTransaction,\n params: {\n signerAccountId: this._signerAccountId,\n transactionList: transactionToBase64String(transaction),\n },\n });\n this.logger.debug('Transaction request completed successfully');\n return { result: TransactionResponse.fromJSON(result) };\n }\n catch (error) {\n this.logger.error('Error executing transaction request:', error);\n return { error };\n }\n }\n async _parseQueryResponse(query, base64EncodedQueryResponse) {\n if (query instanceof AccountRecordsQuery) {\n const base64EncodedQueryResponseSplit = base64EncodedQueryResponse.split(',');\n const data = base64EncodedQueryResponseSplit.map((o) => base64StringToUint8Array(o));\n return data.map((o) => TransactionRecord.fromBytes(o));\n }\n const data = base64StringToUint8Array(base64EncodedQueryResponse);\n if (query instanceof AccountBalanceQuery) {\n return AccountBalance.fromBytes(data);\n }\n else if (query instanceof AccountInfoQuery) {\n return AccountInfo.fromBytes(data);\n }\n else if (query instanceof TransactionReceiptQuery) {\n return TransactionReceipt.fromBytes(data);\n }\n else if (query instanceof TransactionRecordQuery) {\n return TransactionRecord.fromBytes(data);\n }\n else {\n throw new Error('Unsupported query type');\n }\n }\n /**\n * Executes a free receipt query without signing a transaction.\n * Enables the DApp to fetch the receipt of a transaction without making a new request\n * to the wallet.\n * @param request - The query to execute\n * @returns The result of the query\n */\n async executeReceiptQueryFromRequest(request) {\n try {\n const isMainnet = this.ledgerId === LedgerId.MAINNET;\n const client = isMainnet ? Client.forMainnet() : Client.forTestnet();\n const receipt = TransactionReceiptQuery.fromBytes(request.toBytes());\n const result = await receipt.execute(client);\n return { result };\n }\n catch (error) {\n return { error };\n }\n }\n async _tryExecuteQueryRequest(request) {\n try {\n const isReceiptQuery = request instanceof TransactionReceiptQuery;\n if (isReceiptQuery) {\n this.logger.debug('Attempting to execute free receipt query', request);\n const result = await this.executeReceiptQueryFromRequest(request);\n if (!(result === null || result === void 0 ? void 0 : result.error)) {\n return { result: result.result };\n }\n this.logger.error('Error executing free receipt query. Sending to wallet.', result.error);\n }\n /**\n * Note, should we be converting these to specific query types?\n * Left alone to avoid changing the API for other requests.\n */\n const query = isReceiptQuery\n ? TransactionReceiptQuery.fromBytes(request.toBytes())\n : Query.fromBytes(request.toBytes());\n this.logger.debug('Executing query request', query, queryToBase64String(query), isReceiptQuery);\n const result = await this.request({\n method: HederaJsonRpcMethod.SignAndExecuteQuery,\n params: {\n signerAccountId: this._signerAccountId,\n query: queryToBase64String(query),\n },\n });\n this.logger.debug('Query request completed successfully', result);\n return { result: this._parseQueryResponse(query, result.response) };\n }\n catch (error) {\n this.logger.error('Error executing query request:', error);\n return { error };\n }\n }\n async call(request) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n const isReceiptQuery = request instanceof TransactionReceiptQuery;\n let txResult = undefined;\n // a receipt query is a free query and we should not execute a transaction.\n if (!isReceiptQuery) {\n txResult = await this._tryExecuteTransactionRequest(request);\n if (txResult.result) {\n return txResult.result;\n }\n }\n const queryResult = await this._tryExecuteQueryRequest(request);\n if (queryResult.result) {\n return queryResult.result;\n }\n // TODO: make this error more usable\n if (isReceiptQuery) {\n throw new Error('Error executing receipt query: \\n' +\n JSON.stringify({\n queryError: {\n name: (_a = queryResult.error) === null || _a === void 0 ? void 0 : _a.name,\n message: (_b = queryResult.error) === null || _b === void 0 ? void 0 : _b.message,\n stack: (_c = queryResult.error) === null || _c === void 0 ? void 0 : _c.stack,\n },\n }));\n }\n throw new Error('Error executing transaction or query: \\n' +\n JSON.stringify({\n txError: {\n name: (_d = txResult === null || txResult === void 0 ? void 0 : txResult.error) === null || _d === void 0 ? void 0 : _d.name,\n message: (_e = txResult === null || txResult === void 0 ? void 0 : txResult.error) === null || _e === void 0 ? void 0 : _e.message,\n stack: (_f = txResult === null || txResult === void 0 ? void 0 : txResult.error) === null || _f === void 0 ? void 0 : _f.stack,\n },\n queryError: {\n name: (_g = queryResult.error) === null || _g === void 0 ? void 0 : _g.name,\n message: (_h = queryResult.error) === null || _h === void 0 ? void 0 : _h.message,\n stack: (_j = queryResult.error) === null || _j === void 0 ? void 0 : _j.stack,\n },\n }, null, 2));\n }\n}\n","/*\n *\n * Hedera Wallet Connect\n *\n * Copyright (C) 2023 Hedera Hashgraph, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nimport { LedgerId, Transaction } from '@hashgraph/sdk';\nimport QRCodeModal from '@walletconnect/qrcode-modal';\nimport { WalletConnectModal } from '@walletconnect/modal';\nimport SignClient from '@walletconnect/sign-client';\nimport { getSdkError } from '@walletconnect/utils';\nimport { DefaultLogger } from '../shared/logger';\nimport { HederaJsonRpcMethod, accountAndLedgerFromSession, networkNamespaces, extensionConnect, findExtensions, } from '../shared';\nimport { DAppSigner } from './DAppSigner';\nexport * from './DAppSigner';\nexport { SessionNotFoundError } from './SessionNotFoundError';\nexport class DAppConnector {\n /**\n * Initializes the DAppConnector instance.\n * @param metadata - SignClientTypes.Metadata object for the DApp metadata.\n * @param network - LedgerId representing the network (default: LedgerId.TESTNET).\n * @param projectId - Project ID for the WalletConnect client.\n * @param methods - Array of supported methods for the DApp (optional).\n * @param events - Array of supported events for the DApp (optional).\n * @param chains - Array of supported chains for the DApp (optional).\n * @param logLevel - Logging level for the DAppConnector (optional).\n */\n constructor(metadata, network, projectId, methods, events, chains, logLevel = 'debug') {\n this.network = LedgerId.TESTNET;\n this.supportedMethods = [];\n this.supportedEvents = [];\n this.supportedChains = [];\n this.extensions = [];\n this.onSessionIframeCreated = null;\n this.signers = [];\n this.isInitializing = false;\n this.abortableConnect = async (callback) => {\n return new Promise(async (resolve, reject) => {\n const pairTimeoutMs = 480000;\n const timeout = setTimeout(() => {\n QRCodeModal.close();\n reject(new Error(`Connect timed out after ${pairTimeoutMs}(ms)`));\n }, pairTimeoutMs);\n try {\n return resolve(await callback());\n }\n catch (error) {\n reject(error);\n }\n finally {\n clearTimeout(timeout);\n }\n });\n };\n this.logger = new DefaultLogger(logLevel);\n this.dAppMetadata = metadata;\n this.network = network;\n this.projectId = projectId;\n this.supportedMethods = methods !== null && methods !== void 0 ? methods : Object.values(HederaJsonRpcMethod);\n this.supportedEvents = events !== null && events !== void 0 ? events : [];\n this.supportedChains = chains !== null && chains !== void 0 ? chains : [];\n this.extensions = [];\n this.walletConnectModal = new WalletConnectModal({\n projectId: projectId,\n chains: chains,\n });\n findExtensions((metadata, isIframe) => {\n this.extensions.push(Object.assign(Object.assign({}, metadata), { available: true, availableInIframe: isIframe }));\n });\n }\n /**\n * Sets the logging level for the DAppConnector\n * @param level - The logging level to set\n */\n setLogLevel(level) {\n if (this.logger instanceof DefaultLogger) {\n this.logger.setLogLevel(level);\n }\n }\n /**\n * Initializes the DAppConnector instance.\n * @param logger - `BaseLogger` for logging purposes (optional).\n */\n async init({ logger } = {}) {\n try {\n this.isInitializing = true;\n if (!this.projectId) {\n throw new Error('Project ID is not defined');\n }\n this.walletConnectClient = await SignClient.init({\n logger,\n relayUrl: 'wss://relay.walletconnect.com',\n projectId: this.projectId,\n metadata: this.dAppMetadata,\n });\n const existingSessions = this.walletConnectClient.session.getAll();\n if (existingSessions.length > 0)\n this.signers = existingSessions.flatMap((session) => this.createSigners(session));\n else\n this.checkIframeConnect();\n this.walletConnectClient.on('session_event', this.handleSessionEvent.bind(this));\n this.walletConnectClient.on('session_update', this.handleSessionUpdate.bind(this));\n this.walletConnectClient.on('session_delete', this.handleSessionDelete.bind(this));\n // Listen for custom session_delete events from DAppSigner\n this.walletConnectClient.core.events.on('session_delete', this.handleSessionDelete.bind(this));\n this.walletConnectClient.core.pairing.events.on('pairing_delete', this.handlePairingDelete.bind(this));\n }\n catch (e) {\n this.logger.error('Error initializing DAppConnector:', e);\n }\n finally {\n this.isInitializing = false;\n }\n }\n /**\n * Retrieves a DAppSigner for the specified Hedera Account ID.\n *\n * @param {AccountId} accountId - The Hedera Account ID to find the associated signer.\n * @returns {DAppSigner} - The signer object of type {@link DAppSigner} corresponding to the provided account ID.\n * @throws {Error} - If no signer is found for the provided account ID.\n */\n getSigner(accountId) {\n if (this.isInitializing) {\n throw new Error('DAppConnector is not initialized yet. Try again later.');\n }\n const signer = this.signers.find((signer) => signer.getAccountId().equals(accountId));\n if (!signer)\n throw new Error('Signer is not found for this accountId');\n return signer;\n }\n /**\n * Initiates the WalletConnect connection flow using a QR code.\n * @deprecated Use `openModal` instead.\n * @param pairingTopic - The pairing topic for the connection (optional).\n * @returns A Promise that resolves when the connection process is complete.\n */\n async connectQR(pairingTopic) {\n return this.abortableConnect(async () => {\n try {\n const { uri, approval } = await this.connectURI(pairingTopic);\n if (!uri)\n throw new Error('URI is not defined');\n QRCodeModal.open(uri, () => {\n throw new Error('User rejected pairing');\n });\n await this.onSessionConnected(await approval());\n }\n finally {\n QRCodeModal.close();\n }\n });\n }\n /**\n * Initiates the WalletConnect connection flow using a QR code.\n * @param pairingTopic - The pairing topic for the connection (optional).\n * @returns {Promise} - A Promise that resolves when the connection process is complete.\n */\n async openModal(pairingTopic) {\n try {\n const { uri, approval } = await this.connectURI(pairingTopic);\n this.walletConnectModal.openModal({ uri });\n const session = await approval();\n await this.onSessionConnected(session);\n return session;\n }\n finally {\n this.walletConnectModal.closeModal();\n }\n }\n /**\n * Initiates the WallecConnect connection flow using URI.\n * @param pairingTopic - The pairing topic for the connection (optional).\n * @param extensionId - The id for the extension used to connect (optional).\n * @returns A Promise that resolves when the connection process is complete.\n */\n async connect(launchCallback, pairingTopic, extensionId) {\n return this.abortableConnect(async () => {\n var _a;\n const { uri, approval } = await this.connectURI(pairingTopic);\n if (!uri)\n throw new Error('URI is not defined');\n launchCallback(uri);\n const session = await approval();\n if (extensionId) {\n const sessionProperties = Object.assign(Object.assign({}, session.sessionProperties), { extensionId });\n session.sessionProperties = sessionProperties;\n await ((_a = this.walletConnectClient) === null || _a === void 0 ? void 0 : _a.session.update(session.topic, {\n sessionProperties,\n }));\n }\n await this.onSessionConnected(session);\n return session;\n });\n }\n /**\n * Initiates the WallecConnect connection flow sending a message to the extension.\n * @param extensionId - The id for the extension used to connect.\n * @param pairingTopic - The pairing topic for the connection (optional).\n * @returns A Promise that resolves when the connection process is complete.\n */\n async connectExtension(extensionId, pairingTopic) {\n const extension = this.extensions.find((ext) => ext.id === extensionId);\n if (!extension || !extension.available)\n throw new Error('Extension is not available');\n return this.connect((uri) => {\n extensionConnect(extension.id, extension.availableInIframe, uri);\n }, pairingTopic, extension.availableInIframe ? undefined : extensionId);\n }\n /**\n * Validates the session by checking if the session exists and is valid.\n * Also ensures the signer exists for the session.\n * @param topic - The topic of the session to validate.\n * @returns {boolean} - True if the session exists and has a valid signer, false otherwise.\n */\n validateSession(topic) {\n try {\n if (!this.walletConnectClient) {\n return false;\n }\n const session = this.walletConnectClient.session.get(topic);\n const hasSigner = this.signers.some((signer) => signer.topic === topic);\n if (!session) {\n // If session doesn't exist but we have a signer for it, clean up\n if (hasSigner) {\n this.logger.warn(`Signer exists but no session found for topic: ${topic}`);\n this.handleSessionDelete({ topic });\n }\n return false;\n }\n if (!hasSigner) {\n this.logger.warn(`Session exists but no signer found for topic: ${topic}`);\n return false;\n }\n return true;\n }\n catch (e) {\n this.logger.error('Error validating session:', e);\n return false;\n }\n }\n /**\n * Validates the session and refreshes the signers by removing the invalid ones.\n */\n validateAndRefreshSigners() {\n this.signers = this.signers.filter((signer) => this.validateSession(signer.topic));\n }\n /**\n * Initiates the WallecConnect connection if the wallet in iframe mode is detected.\n */\n async checkIframeConnect() {\n const extension = this.extensions.find((ext) => ext.availableInIframe);\n if (extension) {\n const session = await this.connectExtension(extension.id);\n if (this.onSessionIframeCreated)\n this.onSessionIframeCreated(session);\n }\n }\n /**\n * Disconnects the current session associated with the specified topic.\n * @param topic - The topic of the session to disconnect.\n * @returns A Promise that resolves when the session is disconnected.\n */\n async disconnect(topic) {\n try {\n if (!this.walletConnectClient) {\n throw new Error('WalletConnect is not initialized');\n }\n await this.walletConnectClient.disconnect({\n topic: topic,\n reason: getSdkError('USER_DISCONNECTED'),\n });\n return true;\n }\n catch (e) {\n this.logger.error('Either the session was already disconnected or the topic is invalid', e);\n return false;\n }\n }\n /**\n * Disconnects all active sessions and pairings.\n *\n * Throws error when WalletConnect is not initialized or there are no active sessions/pairings.\n * @returns A Promise that resolves when all active sessions and pairings are disconnected.\n */\n async disconnectAll() {\n if (!this.walletConnectClient) {\n throw new Error('WalletConnect is not initialized');\n }\n const sessions = this.walletConnectClient.session.getAll();\n const pairings = this.walletConnectClient.core.pairing.getPairings();\n if (!(sessions === null || sessions === void 0 ? void 0 : sessions.length) && !(pairings === null || pairings === void 0 ? void 0 : pairings.length)) {\n throw new Error('There is no active session/pairing. Connect to the wallet at first.');\n }\n const disconnectionPromises = [];\n // disconnect sessions\n for (const session of this.walletConnectClient.session.getAll()) {\n this.logger.info(`Disconnecting from session: ${session}`);\n const promise = this.disconnect(session.topic);\n disconnectionPromises.push(promise);\n }\n // disconnect pairings\n //https://docs.walletconnect.com/api/core/pairing\n for (const pairing of pairings) {\n const promise = this.disconnect(pairing.topic);\n disconnectionPromises.push(promise);\n }\n await Promise.all(disconnectionPromises);\n this.signers = [];\n }\n createSigners(session) {\n const allNamespaceAccounts = accountAndLedgerFromSession(session);\n return allNamespaceAccounts.map(({ account, network }) => {\n var _a;\n return new DAppSigner(account, this.walletConnectClient, session.topic, network, (_a = session.sessionProperties) === null || _a === void 0 ? void 0 : _a.extensionId, this.logger instanceof DefaultLogger ? this.logger.getLogLevel() : 'debug');\n });\n }\n async onSessionConnected(session) {\n const newSigners = this.createSigners(session);\n // Filter out any existing signers with duplicate AccountIds\n for (const newSigner of newSigners) {\n // We check if any signers have the same account, extension + metadata name.\n const existingSigners = this.signers.filter((currentSigner) => {\n var _a, _b;\n const matchingAccountId = ((_a = currentSigner === null || currentSigner === void 0 ? void 0 : currentSigner.getAccountId()) === null || _a === void 0 ? void 0 : _a.toString()) === ((_b = newSigner === null || newSigner === void 0 ? void 0 : newSigner.getAccountId()) === null || _b === void 0 ? void 0 : _b.toString());\n const matchingExtensionId = newSigner.extensionId === currentSigner.extensionId;\n const newSignerMetadata = newSigner.getMetadata();\n const existingSignerMetadata = currentSigner.getMetadata();\n const metadataNameMatch = (newSignerMetadata === null || newSignerMetadata === void 0 ? void 0 : newSignerMetadata.name) === (existingSignerMetadata === null || existingSignerMetadata === void 0 ? void 0 : existingSignerMetadata.name);\n if (currentSigner.topic === newSigner.topic) {\n this.logger.error('The topic was already connected. This is a weird error. Please report it.', newSigner.getAccountId().toString());\n }\n return matchingAccountId && matchingExtensionId && metadataNameMatch;\n });\n // Any dupes get disconnected + removed from the signers array.\n for (const existingSigner of existingSigners) {\n this.logger.debug(`Disconnecting duplicate signer for account ${existingSigner.getAccountId().toString()}`);\n await this.disconnect(existingSigner.topic);\n this.signers = this.signers.filter((s) => s.topic !== existingSigner.topic);\n }\n }\n // Add new signers after all duplicates have been cleaned up\n this.signers.push(...newSigners);\n this.logger.debug(`Current signers after connection: ${this.signers\n .map((s) => `${s.getAccountId().toString()}:${s.topic}`)\n .join(', ')}`);\n }\n async connectURI(pairingTopic) {\n if (!this.walletConnectClient) {\n throw new Error('WalletConnect is not initialized');\n }\n return this.walletConnectClient.connect({\n pairingTopic,\n requiredNamespaces: networkNamespaces(this.network, this.supportedMethods, this.supportedEvents),\n });\n }\n async request({ method, params, }) {\n var _a, _b, _c;\n let signer;\n this.logger.debug(`Requesting method: ${method} with params: ${JSON.stringify(params)}`);\n if (params === null || params === void 0 ? void 0 : params.signerAccountId) {\n // Extract the actual account ID from the hedera:: format\n const actualAccountId = (_b = (_a = params === null || params === void 0 ? void 0 : params.signerAccountId) === null || _a === void 0 ? void 0 : _a.split(':')) === null || _b === void 0 ? void 0 : _b.pop();\n signer = this.signers.find((s) => { var _a; return ((_a = s === null || s === void 0 ? void 0 : s.getAccountId()) === null || _a === void 0 ? void 0 : _a.toString()) === actualAccountId; });\n this.logger.debug(`Found signer: ${(_c = signer === null || signer === void 0 ? void 0 : signer.getAccountId()) === null || _c === void 0 ? void 0 : _c.toString()}`);\n if (!signer) {\n throw new Error(`Signer not found for account ID: ${params === null || params === void 0 ? void 0 : params.signerAccountId}. Did you use the correct format? e.g hedera:: `);\n }\n }\n else {\n signer = this.signers[this.signers.length - 1];\n }\n if (!signer) {\n throw new Error('There is no active session. Connect to the wallet at first.');\n }\n this.logger.debug(`Using signer: ${signer.getAccountId().toString()}: ${signer.topic} - about to request.`);\n return await signer.request({\n method: method,\n params: params,\n });\n }\n /**\n * Retrieves the node addresses associated with the current Hedera network.\n *\n * When there is no active session or an error occurs during the request.\n * @returns Promise\\<{@link GetNodeAddressesResult}\\>\n */\n async getNodeAddresses() {\n return await this.request({\n method: HederaJsonRpcMethod.GetNodeAddresses,\n params: undefined,\n });\n }\n /**\n * Executes a transaction on the Hedera network.\n *\n * @param {ExecuteTransactionParams} params - The parameters of type {@link ExecuteTransactionParams | `ExecuteTransactionParams`} required for the transaction execution.\n * @param {string[]} params.signedTransaction - Array of Base64-encoded `Transaction`'s\n * @returns Promise\\<{@link ExecuteTransactionResult}\\>\n * @example\n * Use helper `transactionToBase64String` to encode `Transaction` to Base64 string\n * ```ts\n * const params = {\n * signedTransaction: [transactionToBase64String(transaction)]\n * }\n *\n * const result = await dAppConnector.executeTransaction(params)\n * ```\n */\n async executeTransaction(params) {\n return await this.request({\n method: HederaJsonRpcMethod.ExecuteTransaction,\n params,\n });\n }\n /**\n * Signs a provided `message` with provided `signerAccountId`.\n *\n * @param {SignMessageParams} params - The parameters of type {@link SignMessageParams | `SignMessageParams`} required for signing message.\n * @param {string} params.signerAccountId - a signer Hedera Account identifier in {@link https://hips.hedera.com/hip/hip-30 | HIP-30} (`:..`) form.\n * @param {string} params.message - a plain UTF-8 string\n * @returns Promise\\<{@link SignMessageResult}\\>\n * @example\n * ```ts\n * const params = {\n * signerAccountId: 'hedera:testnet:0.0.12345',\n * message: 'Hello World!'\n * }\n *\n * const result = await dAppConnector.signMessage(params)\n * ```\n */\n async signMessage(params) {\n return await this.request({\n method: HederaJsonRpcMethod.SignMessage,\n params,\n });\n }\n /**\n * Signs and send `Query` on the Hedera network.\n *\n * @param {SignAndExecuteQueryParams} params - The parameters of type {@link SignAndExecuteQueryParams | `SignAndExecuteQueryParams`} required for the Query execution.\n * @param {string} params.signerAccountId - a signer Hedera Account identifier in {@link https://hips.hedera.com/hip/hip-30 | HIP-30} (`:..`) form.\n * @param {string} params.query - `Query` object represented as Base64 string\n * @returns Promise\\<{@link SignAndExecuteQueryResult}\\>\n * @example\n * Use helper `queryToBase64String` to encode `Query` to Base64 string\n * ```ts\n * const params = {\n * signerAccountId: '0.0.12345',\n * query: queryToBase64String(query),\n * }\n *\n * const result = await dAppConnector.signAndExecuteQuery(params)\n * ```\n */\n async signAndExecuteQuery(params) {\n return await this.request({\n method: HederaJsonRpcMethod.SignAndExecuteQuery,\n params,\n });\n }\n /**\n * Signs and executes Transactions on the Hedera network.\n *\n * @param {SignAndExecuteTransactionParams} params - The parameters of type {@link SignAndExecuteTransactionParams | `SignAndExecuteTransactionParams`} required for `Transaction` signing and execution.\n * @param {string} params.signerAccountId - a signer Hedera Account identifier in {@link https://hips.hedera.com/hip/hip-30 | HIP-30} (`:..`) form.\n * @param {string[]} params.transaction - Array of Base64-encoded `Transaction`'s\n * @returns Promise\\<{@link SignAndExecuteTransactionResult}\\>\n * @example\n * Use helper `transactionToBase64String` to encode `Transaction` to Base64 string\n * ```ts\n * const params = {\n * signerAccountId: '0.0.12345'\n * transaction: [transactionToBase64String(transaction)]\n * }\n *\n * const result = await dAppConnector.signAndExecuteTransaction(params)\n * ```\n */\n async signAndExecuteTransaction(params) {\n return await this.request({\n method: HederaJsonRpcMethod.SignAndExecuteTransaction,\n params,\n });\n }\n /**\n * Signs and executes Transactions on the Hedera network.\n *\n * @param {SignTransactionParams} params - The parameters of type {@link SignTransactionParams | `SignTransactionParams`} required for `Transaction` signing.\n * @param {string} params.signerAccountId - a signer Hedera Account identifier in {@link https://hips.hedera.com/hip/hip-30 | HIP-30} (`:..`) form.\n * @param {Transaction | string} params.transactionBody - a built Transaction object, or a base64 string of a transaction body (deprecated).\n * @deprecated Using string for params.transactionBody is deprecated and will be removed in a future version. Please migrate to using Transaction objects directly.\n * @returns Promise\\<{@link SignTransactionResult}\\>\n * @example\n * ```ts\n *\n * const params = {\n * signerAccountId: '0.0.12345',\n * transactionBody\n * }\n *\n * const result = await dAppConnector.signTransaction(params)\n * ```\n */\n async signTransaction(params) {\n var _a, _b;\n if (typeof (params === null || params === void 0 ? void 0 : params.transactionBody) === 'string') {\n this.logger.warn('Transaction body is a string. This is not recommended, please migrate to passing a transaction object directly.');\n return await this.request({\n method: HederaJsonRpcMethod.SignTransaction,\n params,\n });\n }\n if ((params === null || params === void 0 ? void 0 : params.transactionBody) instanceof Transaction) {\n const signerAccountId = (_b = (_a = params === null || params === void 0 ? void 0 : params.signerAccountId) === null || _a === void 0 ? void 0 : _a.split(':')) === null || _b === void 0 ? void 0 : _b.pop();\n const accountSigner = this.signers.find((signer) => { var _a; return ((_a = signer === null || signer === void 0 ? void 0 : signer.getAccountId()) === null || _a === void 0 ? void 0 : _a.toString()) === signerAccountId; });\n if (!accountSigner) {\n throw new Error(`No signer found for account ${signerAccountId}`);\n }\n if (!(params === null || params === void 0 ? void 0 : params.transactionBody)) {\n throw new Error('No transaction provided');\n }\n return await accountSigner.signTransaction(params.transactionBody);\n }\n throw new Error('Transaction sent in incorrect format. Ensure transaction body is either a base64 transaction body or Transaction object.');\n }\n handleSessionEvent(args) {\n this.logger.debug('Session event received:', args);\n this.validateAndRefreshSigners();\n }\n handleSessionUpdate({ topic, params, }) {\n const { namespaces } = params;\n const _session = this.walletConnectClient.session.get(topic);\n const updatedSession = Object.assign(Object.assign({}, _session), { namespaces });\n this.logger.info('Session updated:', updatedSession);\n this.signers = this.signers.filter((signer) => signer.topic !== topic);\n this.signers.push(...this.createSigners(updatedSession));\n }\n handleSessionDelete(event) {\n this.logger.info('Session deleted:', event);\n let deletedSigner = false;\n this.signers = this.signers.filter((signer) => {\n if (signer.topic !== event.topic) {\n return true;\n }\n deletedSigner = true;\n return false;\n });\n // prevent emitting disconnected event if signers is untouched.\n if (deletedSigner) {\n try {\n this.disconnect(event.topic);\n }\n catch (e) {\n this.logger.error('Error disconnecting session:', e);\n }\n this.logger.info('Session deleted and signer removed');\n }\n }\n handlePairingDelete(event) {\n this.logger.info('Pairing deleted:', event);\n this.signers = this.signers.filter((signer) => signer.topic !== event.topic);\n try {\n this.disconnect(event.topic);\n }\n catch (e) {\n this.logger.error('Error disconnecting pairing:', e);\n }\n this.logger.info('Pairing deleted by wallet');\n }\n}\nexport default DAppConnector;\n","export interface ILogger {\n error(message: string, ...args: any[]): void;\n warn(message: string, ...args: any[]): void;\n info(message: string, ...args: any[]): void;\n debug(message: string, ...args: any[]): void;\n}\n\nexport class DefaultLogger implements ILogger {\n private logLevel: 'error' | 'warn' | 'info' | 'debug' = 'info';\n\n setLogLevel(level: 'error' | 'warn' | 'info' | 'debug'): void {\n this.logLevel = level;\n }\n\n error(message: string, ...args: any[]): void {\n if (['error', 'warn', 'info', 'debug'].includes(this.logLevel)) {\n console.error(`[ERROR] ${message}`, ...args);\n }\n }\n\n warn(message: string, ...args: any[]): void {\n if (['warn', 'info', 'debug'].includes(this.logLevel)) {\n console.warn(`[WARN] ${message}`, ...args);\n }\n }\n\n info(message: string, ...args: any[]): void {\n if (['info', 'debug'].includes(this.logLevel)) {\n console.info(`[INFO] ${message}`, ...args);\n }\n }\n\n debug(message: string, ...args: any[]): void {\n if (this.logLevel === 'debug') {\n console.debug(`[DEBUG] ${message}`, ...args);\n }\n }\n}\n","import retryFetch from 'fetch-retry';\n\nexport const fetchWithRetry = () =>\n retryFetch(fetch, {\n retries: 3,\n });\n","import { DAppConnector } from '@hashgraph/hedera-wallet-connect';\nimport * as hashgraph from '@hashgraph/sdk';\nimport {\n ContractFunctionParameters,\n TransactionReceipt,\n PrivateKey,\n Transaction,\n AccountId,\n ContractId,\n} from '@hashgraph/sdk';\nimport { SessionTypes, SignClientTypes } from '@walletconnect/types';\n\nexport interface HederaAccountResponse {\n account: string;\n alias: null;\n auto_renew_period: number;\n balance: Balance;\n created_timestamp: string;\n decline_reward: boolean;\n deleted: boolean;\n ethereum_nonce: number;\n evm_address: string;\n expiry_timestamp: string;\n key: Key;\n max_automatic_token_associations: number;\n memo: string;\n pending_reward: number;\n receiver_sig_required: boolean;\n staked_account_id: null;\n staked_node_id: number;\n stake_period_start: string;\n transactions: HBARTransaction[];\n links: Links;\n}\n\nexport interface Balance {\n balance: number;\n timestamp: string;\n tokens: Token[];\n}\n\nexport interface Token {\n token_id: string;\n balance: number;\n}\n\nexport interface Key {\n _type: string;\n key: string;\n}\n\nexport interface Links {\n next: string;\n}\n\nexport interface HBARTransaction {\n bytes: null;\n charged_tx_fee: number;\n consensus_timestamp: string;\n entity_id: null | string;\n max_fee: string;\n memo_base64: string;\n name: Name;\n nft_transfers: NftTransfer[];\n node: string;\n nonce: number;\n parent_consensus_timestamp: null;\n result: Result;\n scheduled: boolean;\n staking_reward_transfers: StakingRewardTransfer[];\n token_transfers: Transfer[];\n transaction_hash: string;\n transaction_id: string;\n transfers: Transfer[];\n valid_duration_seconds: string;\n valid_start_timestamp: string;\n}\n\nexport enum Name {\n Contractcall = 'CONTRACTCALL',\n Cryptotransfer = 'CRYPTOTRANSFER',\n}\n\nexport interface NftTransfer {\n is_approval: boolean;\n receiver_account_id: string;\n sender_account_id: string;\n serial_number: number;\n token_id: string;\n}\n\nexport enum Result {\n Success = 'SUCCESS',\n}\n\nexport interface StakingRewardTransfer {\n account: string;\n amount: number;\n}\n\nexport interface Transfer {\n token_id?: string;\n account: string;\n amount: number;\n is_approval: boolean;\n}\n\nexport interface Message {\n payer: string;\n created: Date;\n consensus_timestamp: string;\n sequence_number: number;\n [key: string]: any;\n}\n\nexport interface FetchMessagesResult {\n messages: Message[];\n error?: string;\n}\n\nexport interface Account {\n account: string;\n alias: null;\n auto_renew_period: number;\n balance: Balance;\n decline_reward: boolean;\n deleted: boolean;\n ethereum_nonce: null;\n evm_address: null;\n expiry_timestamp: string;\n key: Key;\n max_automatic_token_associations: number;\n memo: string;\n receiver_sig_required: null;\n staked_account_id: null;\n staked_node_id: null;\n stake_period_start: null;\n}\n\nexport interface Balance {\n balance: number;\n timestamp: string;\n tokens: Token[];\n}\n\nexport interface Token {\n token_id: string;\n balance: number;\n}\n\nexport interface Key {\n _type: string;\n key: string;\n}\n\nexport interface TokenBalance {\n tokenId: string;\n balance: string;\n decimals: number;\n created_timestamp: Date;\n formatted_balance: string;\n}\n\nexport interface HederaTXResponse {\n transactions: MirrorNodeTransaction[];\n}\n\nexport interface MirrorNodeTransaction {\n bytes: null;\n charged_tx_fee: number;\n consensus_timestamp: string;\n entity_id: string;\n max_fee: string;\n memo_base64: string;\n name: string;\n node: null | string;\n nonce: number;\n parent_consensus_timestamp: null | string;\n result: string;\n scheduled: boolean;\n transaction_hash: string;\n transaction_id: string;\n transfers: Transfer[];\n token_transfers: TokenTransfer[];\n valid_duration_seconds: null | string;\n valid_start_timestamp: string;\n nft_transfers?: NftTransfer[];\n}\n\nexport interface NftTransfer {\n is_approval: boolean;\n receiver_account_id: string;\n sender_account_id: string;\n serial_number: number;\n token_id: string;\n}\n\nexport interface TokenTransfer {\n token_id: string;\n account: string;\n amount: number;\n}\n\nexport interface HBarNFT {\n nfts: Nft[];\n links: Links;\n}\n\nexport interface Links {\n next: string;\n}\n\nexport interface Nft {\n account_id: string;\n created_timestamp: string;\n delegating_spender: null;\n deleted: boolean;\n metadata: string;\n modified_timestamp: string;\n serial_number: number;\n spender: null;\n token_id: string;\n token_uri?: string;\n owner_of?: string;\n}\n\nexport interface FormattedOwner {\n token_uri?: string;\n chain?: string;\n owner_of?: string;\n token_address?: string;\n token_id?: string;\n account_id?: string;\n serial_number?: number;\n [key: string]: any;\n}\n\nexport type HashinalsWalletConnectSDK = {\n run: () => void;\n init: (\n projectId: string,\n metadata: SignClientTypes.Metadata\n ) => Promise;\n connect: () => Promise;\n connectWallet(\n PROJECT_ID: string,\n APP_METADATA: SignClientTypes.Metadata\n ): Promise<{\n accountId: string;\n balance: string;\n session: SessionTypes.Struct;\n }>;\n disconnect: () => Promise;\n disconnectAll: () => Promise;\n disconnectWallet: () => Promise;\n loadConnectionInfo: () => string | null;\n saveConnectionInfo: (accountId: string) => void;\n executeTransaction: (\n tx: Transaction,\n disableSigner: boolean\n ) => Promise;\n executeTransationWithErrorHandling: (\n tx: Transaction,\n disableSigner: boolean\n ) => Promise<{ result?: TransactionReceipt; error?: string }>;\n result?: TransactionReceipt;\n error?: string;\n submitMessageToTopic: (\n topicId: string,\n message: string\n ) => Promise;\n transferHbar: (\n fromAccountId: string,\n toAccountId: string,\n amount: number\n ) => Promise;\n executeSmartContract: (\n contractId: string,\n functionName: string,\n parameters: ContractFunctionParameters,\n gas?: number\n ) => Promise;\n getAccountBalance: () => Promise;\n getAccountInfo: () => string;\n createTopic: (\n memo?: string,\n adminKey?: string,\n submitKey?: string\n ) => Promise;\n createToken: (\n name: string,\n symbol: string,\n initialSupply: number,\n decimals: number,\n treasuryAccountId: string,\n adminKey: string,\n supplyKey: string\n ) => Promise;\n mintNFT: (\n tokenId: string,\n metadata: string,\n supplyKey: PrivateKey\n ) => Promise;\n dAppConnector?: DAppConnector;\n getMessages: (\n topicId: string,\n lastTimestamp?: number,\n disableTimestampFilter?: boolean\n ) => Promise;\n initAccount: (\n PROJECT_ID: string,\n APP_METADATA: SignClientTypes.Metadata\n ) => Promise<{ accountId: string; balance: string } | null>;\n transferToken: (\n tokenId: string,\n fromAccountId: string,\n toAccountId: string,\n amount: number\n ) => Promise;\n createAccount: (initialBalance: number) => Promise;\n associateTokenToAccount: (\n accountId: string,\n tokenId: string\n ) => Promise;\n dissociateTokenFromAccount: (\n accountId: string,\n tokenId: string\n ) => Promise;\n updateAccount: (\n accountId: string,\n maxAutomaticTokenAssociations: number\n ) => Promise;\n approveAllowance: (\n spenderAccountId: string,\n tokenId: string,\n amount: number,\n ownerAccountId: string\n ) => Promise;\n getAccountTokens: (accountId: string) => Promise<{ tokens: TokenBalance[] }>;\n getTransaction: (transactionId: string) => Promise;\n getTransactionByTimestamp: (timestamp: string) => Promise;\n getAccountNFTs: (accountId: string, tokenId?: string) => Promise;\n validateNFTOwnership: (serialNumber: string, accountId: string, tokenId: string) => Promise;\n readSmartContract: (\n data: string,\n fromAccount: AccountId,\n contractId: ContractId,\n estimate?: boolean,\n value?: number\n ) => Promise;\n HashgraphSDK: typeof hashgraph;\n};\n","import { Buffer } from 'buffer';\nimport { SessionTypes, SignClientTypes } from '@walletconnect/types';\nimport {\n Transaction,\n TransferTransaction,\n TopicMessageSubmitTransaction,\n ContractExecuteTransaction,\n Hbar,\n TransactionId,\n AccountId,\n TopicId,\n ContractId,\n LedgerId,\n TokenCreateTransaction,\n TokenType,\n TokenSupplyType,\n TokenMintTransaction,\n TopicCreateTransaction,\n TransactionReceipt,\n ContractFunctionParameters,\n PrivateKey,\n AccountCreateTransaction,\n TokenAssociateTransaction,\n TokenDissociateTransaction,\n AccountUpdateTransaction,\n AccountAllowanceApproveTransaction,\n TokenId,\n} from '@hashgraph/sdk';\nimport * as HashgraphSDK from '@hashgraph/sdk';\nimport {\n HederaSessionEvent,\n HederaJsonRpcMethod,\n DAppConnector,\n HederaChainId,\n SignMessageResult,\n} from '@hashgraph/hedera-wallet-connect';\nimport {\n Message,\n FetchMessagesResult,\n TokenBalance,\n HederaAccountResponse,\n HederaTXResponse,\n HBarNFT,\n Nft,\n} from './types';\nimport { DefaultLogger, ILogger } from './logger/logger';\nimport { fetchWithRetry } from './utils/retry';\n\nclass HashinalsWalletConnectSDK {\n private static instance: HashinalsWalletConnectSDK;\n private static dAppConnectorInstance: DAppConnector;\n private logger: ILogger;\n private network: LedgerId;\n private extensionCheckInterval: NodeJS.Timeout | null = null;\n private hasCalledExtensionCallback: boolean = false;\n\n public get dAppConnector(): DAppConnector {\n return HashinalsWalletConnectSDK.dAppConnectorInstance;\n }\n\n constructor(logger?: ILogger, network?: LedgerId) {\n this.logger = logger || new DefaultLogger();\n this.network = network || LedgerId.MAINNET;\n }\n\n public static getInstance(\n logger?: ILogger,\n network?: LedgerId\n ): HashinalsWalletConnectSDK {\n let instance = HashinalsWalletConnectSDK?.instance;\n if (!instance) {\n HashinalsWalletConnectSDK.instance = new HashinalsWalletConnectSDK(\n logger,\n network\n );\n instance = HashinalsWalletConnectSDK.instance;\n }\n if (network) {\n instance.setNetwork(network);\n }\n return instance;\n }\n\n public setLogger(logger: ILogger): void {\n this.logger = logger;\n }\n\n public setNetwork(network: LedgerId): void {\n this.network = network;\n }\n\n public getNetwork(): LedgerId {\n return this.network;\n }\n\n public setLogLevel(level: 'error' | 'warn' | 'info' | 'debug'): void {\n if (this.logger instanceof DefaultLogger) {\n this.logger.setLogLevel(level);\n } else {\n this.logger.warn('setLogLevel is only available for the default logger');\n }\n }\n\n public async init(\n projectId: string,\n metadata: SignClientTypes.Metadata,\n network?: LedgerId,\n onSessionIframeCreated?: (session: SessionTypes.Struct) => void\n ): Promise {\n const chosenNetwork = network || this.network;\n const isMainnet = chosenNetwork.toString() === 'mainnet';\n\n if (HashinalsWalletConnectSDK.dAppConnectorInstance) {\n return HashinalsWalletConnectSDK.dAppConnectorInstance;\n }\n\n HashinalsWalletConnectSDK.dAppConnectorInstance = new DAppConnector(\n metadata,\n chosenNetwork,\n projectId,\n Object.values(HederaJsonRpcMethod),\n [HederaSessionEvent.ChainChanged, HederaSessionEvent.AccountsChanged],\n [isMainnet ? HederaChainId.Mainnet : HederaChainId.Testnet],\n 'debug'\n );\n\n await HashinalsWalletConnectSDK.dAppConnectorInstance.init({\n logger: 'error',\n });\n\n HashinalsWalletConnectSDK.dAppConnectorInstance.onSessionIframeCreated = (\n session\n ) => {\n this.logger.info('new session from from iframe', session);\n this.handleNewSession(session);\n if (onSessionIframeCreated) {\n onSessionIframeCreated(session);\n }\n };\n\n this.logger.info(\n `Hedera Wallet Connect SDK initialized on ${chosenNetwork}`\n );\n return HashinalsWalletConnectSDK.dAppConnectorInstance;\n }\n\n public async connect(): Promise {\n this.ensureInitialized();\n const session = await this.dAppConnector.openModal();\n this.handleNewSession(session);\n return session;\n }\n\n public async disconnect(): Promise {\n try {\n this.ensureInitialized();\n const accountInfo = this.getAccountInfo();\n const accountId = accountInfo?.accountId;\n const network = accountInfo?.network;\n const signer = this?.dAppConnector?.signers.find(\n (signer_) => signer_.getAccountId().toString() === accountId\n );\n await this.dAppConnector?.disconnect(signer?.topic);\n this.logger.info(`Disconnected from ${accountId} on ${network}`);\n return true;\n } catch (e) {\n this.logger.error('Failed to disconnect', e);\n return false;\n }\n }\n\n public async disconnectAll(): Promise {\n try {\n this.ensureInitialized();\n await this.dAppConnector?.disconnectAll();\n this.logger.info(`Disconnected from all wallets`);\n return true;\n } catch (e) {\n this.logger.error('Failed to disconnect', e);\n return false;\n }\n }\n\n public async executeTransaction(\n tx: Transaction,\n disableSigner: boolean = false\n ): Promise {\n this.ensureInitialized();\n const accountInfo = this.getAccountInfo();\n const accountId = accountInfo?.accountId;\n const signer = this.dAppConnector.signers.find(\n (signer_) => signer_.getAccountId().toString() === accountId\n );\n if (!disableSigner) {\n const signedTx = await tx.freezeWithSigner(signer);\n const executedTx = await signedTx.executeWithSigner(signer);\n return await executedTx.getReceiptWithSigner(signer);\n } else {\n const executedTx = await tx.executeWithSigner(signer);\n return await executedTx.getReceiptWithSigner(signer);\n }\n }\n\n public async executeTransactionWithErrorHandling(\n tx: Transaction,\n disableSigner: boolean\n ): Promise<{ result?: TransactionReceipt; error?: string }> {\n try {\n const result = await this.executeTransaction(tx, disableSigner);\n return {\n result,\n error: undefined,\n };\n } catch (e) {\n const error = e as Error;\n const message = error.message?.toLowerCase();\n this.logger.error('Failed to execute transaction', e);\n this.logger.error('Failure reason for transaction is', message);\n if (message.includes('insufficient payer balance')) {\n return {\n result: undefined,\n error: 'Insufficient balance to complete the transaction.',\n };\n } else if (message.includes('reject')) {\n return {\n result: undefined,\n error: 'You rejected the transaction',\n };\n } else if (message.includes('invalid signature')) {\n return {\n result: undefined,\n error: 'Invalid signature. Please check your account and try again.',\n };\n } else if (message.includes('transaction expired')) {\n return {\n result: undefined,\n error: 'Transaction expired. Please try again.',\n };\n } else if (message.includes('account not found')) {\n return {\n result: undefined,\n error:\n 'Account not found. Please check the account ID and try again.',\n };\n } else if (message.includes('unauthorized')) {\n return {\n result: undefined,\n error:\n 'Unauthorized. You may not have the necessary permissions for this action.',\n };\n } else if (message.includes('busy')) {\n return {\n result: undefined,\n error: 'The network is busy. Please try again later.',\n };\n } else if (message.includes('invalid transaction')) {\n return {\n result: undefined,\n error: 'Invalid transaction. Please check your inputs and try again.',\n };\n }\n }\n }\n\n public async submitMessageToTopic(\n topicId: string,\n message: string,\n submitKey?: PrivateKey\n ): Promise {\n this.ensureInitialized();\n\n let transaction = new TopicMessageSubmitTransaction()\n .setTopicId(TopicId.fromString(topicId))\n .setMessage(message);\n\n if (submitKey) {\n transaction = await transaction.sign(submitKey);\n }\n\n return this.executeTransaction(transaction);\n }\n\n public async transferHbar(\n fromAccountId: string,\n toAccountId: string,\n amount: number\n ): Promise {\n this.ensureInitialized();\n\n const transaction = new TransferTransaction()\n .setTransactionId(TransactionId.generate(fromAccountId))\n .addHbarTransfer(AccountId.fromString(fromAccountId), new Hbar(-amount))\n .addHbarTransfer(AccountId.fromString(toAccountId), new Hbar(amount));\n\n return this.executeTransaction(transaction);\n }\n\n async executeSmartContract(\n contractId: string,\n functionName: string,\n parameters: ContractFunctionParameters,\n gas: number = 100000\n ): Promise {\n this.ensureInitialized();\n\n const transaction = new ContractExecuteTransaction()\n .setContractId(ContractId.fromString(contractId))\n .setGas(gas)\n .setFunction(functionName, parameters);\n\n return this.executeTransaction(transaction);\n }\n\n private handleNewSession(session: SessionTypes.Struct) {\n const sessionAccount = session.namespaces?.hedera?.accounts?.[0];\n const sessionParts = sessionAccount?.split(':');\n const accountId = sessionParts.pop();\n const network = sessionParts.pop();\n this.logger.info('sessionAccount is', accountId, network);\n if (!accountId) {\n this.logger.error('No account id found in the session');\n return;\n } else {\n this.saveConnectionInfo(accountId, network);\n }\n }\n\n private getNetworkPrefix(): string {\n const accountInfo = this.getAccountInfo();\n const network = accountInfo?.network;\n\n if (!network) {\n this.logger.warn('Network is not set on SDK, defaulting.');\n\n const cachedNetwork = localStorage.getItem('connectedNetwork');\n\n if (cachedNetwork) {\n return cachedNetwork;\n }\n\n return 'mainnet-public';\n }\n\n if (network !== this.network) {\n this.logger.warn(\n 'Detected network mismatch, reverting to signer network',\n network\n );\n this.network = network;\n }\n\n return network.isMainnet() ? 'mainnet-public' : 'testnet';\n }\n\n public async requestAccount(account: string): Promise {\n try {\n const networkPrefix = this.getNetworkPrefix();\n\n const url = `https://${networkPrefix}.mirrornode.hedera.com/api/v1/accounts/${account}`;\n const response = await fetchWithRetry()(url);\n if (!response.ok) {\n throw new Error(\n `Failed to make request to mirror node for account: ${response.status}`\n );\n }\n return await response.json();\n } catch (e) {\n this.logger.error('Failed to fetch account', e);\n throw e;\n }\n }\n\n public async getAccountBalance(): Promise {\n this.ensureInitialized();\n const accountInfo = this.getAccountInfo();\n const account = accountInfo?.accountId;\n\n if (!account) {\n return null;\n }\n\n const accountResponse = await this.requestAccount(account);\n if (!accountResponse) {\n throw new Error(\n 'Failed to fetch account. Try again or check if the Account ID is valid.'\n );\n }\n const balance = accountResponse.balance.balance / 10 ** 8;\n return Number(balance).toLocaleString('en-US');\n }\n\n public getAccountInfo(): {\n accountId: string;\n network: LedgerId;\n } {\n const { accountId: cachedAccountId } = this.loadConnectionInfo();\n if (!cachedAccountId) {\n return null;\n }\n const signers = this?.dAppConnector?.signers;\n\n if (!signers?.length) {\n return null;\n }\n\n const cachedSigner = this.dAppConnector.signers.find(\n (signer_) => signer_.getAccountId().toString() === cachedAccountId\n );\n if (!cachedSigner) {\n return null;\n }\n const accountId = cachedSigner?.getAccountId()?.toString();\n if (!accountId) {\n return null;\n }\n const network = cachedSigner.getLedgerId();\n return {\n accountId,\n network,\n };\n }\n\n public async createTopic(\n memo?: string,\n adminKey?: string,\n submitKey?: string\n ): Promise {\n this.ensureInitialized();\n\n let transaction = new TopicCreateTransaction().setTopicMemo(memo || '');\n\n if (adminKey) {\n const adminWithPrivateKey = PrivateKey.fromString(adminKey);\n transaction.setAdminKey(adminWithPrivateKey.publicKey);\n transaction = await transaction.sign(adminWithPrivateKey);\n }\n\n if (submitKey) {\n transaction.setSubmitKey(PrivateKey.fromString(submitKey).publicKey);\n }\n\n const receipt = await this.executeTransaction(transaction);\n return receipt.topicId!.toString();\n }\n\n public async createToken(\n name: string,\n symbol: string,\n initialSupply: number,\n decimals: number,\n treasuryAccountId: string,\n adminKey: string,\n supplyKey: string\n ): Promise {\n this.ensureInitialized();\n\n let transaction = new TokenCreateTransaction()\n .setTokenName(name)\n .setTokenSymbol(symbol)\n .setDecimals(decimals)\n .setInitialSupply(initialSupply)\n .setTreasuryAccountId(AccountId.fromString(treasuryAccountId))\n .setTokenType(TokenType.NonFungibleUnique)\n .setSupplyType(TokenSupplyType.Finite);\n\n if (supplyKey) {\n transaction = transaction.setSupplyKey(PrivateKey.fromString(supplyKey));\n }\n\n if (adminKey) {\n transaction = transaction.setAdminKey(PrivateKey.fromString(adminKey));\n transaction = await transaction.sign(PrivateKey.fromString(adminKey));\n }\n\n const receipt = await this.executeTransaction(transaction);\n return receipt.tokenId!.toString();\n }\n\n public async mintNFT(\n tokenId: string,\n metadata: string,\n supplyKey: PrivateKey\n ): Promise {\n this.ensureInitialized();\n\n let transaction = await new TokenMintTransaction()\n .setTokenId(tokenId)\n .setMetadata([Buffer.from(metadata, 'utf-8')])\n .sign(supplyKey);\n\n return this.executeTransaction(transaction);\n }\n\n public async getMessages(\n topicId: string,\n lastTimestamp?: number,\n disableTimestampFilter: boolean = false,\n network?: string\n ): Promise {\n const networkPrefix = network || this.getNetworkPrefix();\n const baseUrl = `https://${networkPrefix}.mirrornode.hedera.com`;\n const timestampQuery =\n Number(lastTimestamp) > 0 && !disableTimestampFilter\n ? `×tamp=gt:${lastTimestamp}`\n : '';\n\n const url = `${baseUrl}/api/v1/topics/${topicId}/messages?limit=200${timestampQuery}`;\n\n try {\n const response = await fetchWithRetry()(url);\n if (!response.ok) {\n throw new Error(\n `Failed to make request to mirror node: ${response.status}`\n );\n }\n const data = await response.json();\n const messages = data?.messages || [];\n const nextLink = data?.links?.next;\n\n const collectedMessages: Message[] = messages.map((msg: any) => {\n const parsedMessage = JSON.parse(atob(msg.message));\n return {\n ...parsedMessage,\n payer: msg.payer_account_id,\n created: new Date(Number(msg.consensus_timestamp) * 1000),\n consensus_timestamp: msg.consensus_timestamp,\n sequence_number: msg.sequence_number,\n };\n });\n\n if (nextLink) {\n const nextResult = await this.getMessages(\n topicId,\n Number(\n collectedMessages[collectedMessages.length - 1]?.consensus_timestamp\n ),\n disableTimestampFilter\n );\n collectedMessages.push(...nextResult.messages);\n }\n\n return {\n messages: collectedMessages.sort(\n (a, b) => a.sequence_number - b.sequence_number\n ),\n error: '',\n };\n } catch (error) {\n this.logger.error('Error fetching topic data:', error);\n return {\n messages: [],\n error: (error as Error).toString(),\n };\n }\n }\n\n public async signMessage(message: string) {\n const dAppConnector = this.dAppConnector;\n if (!dAppConnector) {\n throw new Error('No active connection or signer');\n }\n\n const accountInfo = this.getAccountInfo();\n const accountId = accountInfo?.accountId;\n\n const params = {\n signerAccountId: `hedera:${this.network}:${accountId}`,\n message,\n };\n\n const result = (await dAppConnector.signMessage(\n params\n )) as SignMessageResult;\n\n // @ts-ignore\n return { userSignature: result.signatureMap };\n }\n\n private saveConnectionInfo(\n accountId: string | undefined,\n connectedNetwork?: string | undefined\n ): void {\n if (!accountId) {\n localStorage.removeItem('connectedAccountId');\n localStorage.removeItem('connectedNetwork');\n } else {\n const cleanNetwork = connectedNetwork?.replace(/['\"]+/g, '');\n localStorage.setItem('connectedNetwork', cleanNetwork);\n localStorage.setItem('connectedAccountId', accountId);\n }\n }\n\n public loadConnectionInfo(): {\n accountId: string | null;\n network: string | null;\n } {\n return {\n accountId: localStorage.getItem('connectedAccountId'),\n network: localStorage.getItem('connectedNetwork'),\n };\n }\n\n public async connectWallet(\n PROJECT_ID: string,\n APP_METADATA: SignClientTypes.Metadata,\n network?: LedgerId\n ): Promise<{\n accountId: string;\n balance: string;\n session: SessionTypes.Struct;\n }> {\n try {\n await this.init(PROJECT_ID, APP_METADATA, network);\n const session = await this.connect();\n\n const accountInfo = this.getAccountInfo();\n const accountId = accountInfo?.accountId;\n const balance = await this.getAccountBalance();\n const networkPrefix = this.getNetworkPrefix();\n\n this.saveConnectionInfo(accountId, networkPrefix);\n return {\n accountId,\n balance,\n session,\n };\n } catch (error) {\n this.logger.error('Failed to connect wallet:', error);\n throw error;\n }\n }\n\n public async disconnectWallet(\n clearStorage: boolean = true\n ): Promise {\n try {\n const success = await this.disconnect();\n\n if (success && clearStorage) {\n localStorage.clear();\n }\n\n this.saveConnectionInfo(undefined);\n return success;\n } catch (error) {\n this.logger.error('Failed to disconnect wallet:', error);\n return false;\n }\n }\n\n public async initAccount(\n PROJECT_ID: string,\n APP_METADATA: SignClientTypes.Metadata,\n networkOverride?: LedgerId,\n onSessionIframeCreated: (session: SessionTypes.Struct) => void = () => {}\n ): Promise<{ accountId: string; balance: string } | null> {\n const { accountId: savedAccountId, network: savedNetwork } =\n this.loadConnectionInfo();\n\n if (savedAccountId && savedNetwork) {\n try {\n const defaultNetwork =\n savedNetwork === 'mainnet' ? LedgerId.MAINNET : LedgerId.TESTNET;\n const network = networkOverride || defaultNetwork;\n await this.init(\n PROJECT_ID,\n APP_METADATA,\n network,\n onSessionIframeCreated\n );\n const balance = await this.getAccountBalance();\n return {\n accountId: savedAccountId,\n balance,\n };\n } catch (error) {\n this.logger.error('Failed to reconnect:', error);\n this.saveConnectionInfo(undefined, undefined);\n return null;\n }\n } else if (networkOverride) {\n try {\n this.logger.info(\n 'initializing normally through override.',\n networkOverride\n );\n await this.init(\n PROJECT_ID,\n APP_METADATA,\n networkOverride,\n onSessionIframeCreated\n );\n this.logger.info('initialized', networkOverride);\n await this.connectViaDappBrowser();\n this.logger.info('connected via dapp browser');\n } catch (error) {\n this.logger.error('Failed to fallback connect:', error);\n this.saveConnectionInfo(undefined, undefined);\n return null;\n }\n }\n\n return null;\n }\n\n public subscribeToExtensions(callback: (extension: any) => void) {\n // Clear any existing interval and reset flag\n if (this.extensionCheckInterval) {\n clearInterval(this.extensionCheckInterval);\n }\n this.hasCalledExtensionCallback = false;\n\n // Set up polling to check for extensions\n this.extensionCheckInterval = setInterval(() => {\n const extensions = this.dAppConnector?.extensions || [];\n const availableExtension = extensions.find(\n (ext) => ext.availableInIframe\n );\n\n if (availableExtension && !this.hasCalledExtensionCallback) {\n this.hasCalledExtensionCallback = true;\n callback(availableExtension);\n // Clear the interval once we find an available extension\n if (this.extensionCheckInterval) {\n clearInterval(this.extensionCheckInterval);\n this.extensionCheckInterval = null;\n }\n }\n }, 1000); // Check every second\n\n // Return cleanup function\n return () => {\n if (this.extensionCheckInterval) {\n clearInterval(this.extensionCheckInterval);\n this.extensionCheckInterval = null;\n }\n this.hasCalledExtensionCallback = false;\n };\n }\n\n public async connectViaDappBrowser() {\n const extensions = this.dAppConnector.extensions || [];\n const extension = extensions.find((ext) => {\n this.logger.info('Checking extension', ext);\n return ext.availableInIframe;\n });\n this.logger.info('extensions are', extensions, extension);\n\n if (extension) {\n await this.connectToExtension(extension);\n } else {\n // If no extension is immediately available, subscribe to changes\n this.subscribeToExtensions(async (newExtension) => {\n await this.connectToExtension(newExtension);\n });\n }\n }\n\n private async connectToExtension(extension: any) {\n this.logger.info('found extension, connecting to iframe.', extension);\n const session = await this.dAppConnector.connectExtension(extension.id);\n const onSessionIframeCreated = this.dAppConnector.onSessionIframeCreated;\n if (onSessionIframeCreated) {\n onSessionIframeCreated(session);\n }\n }\n\n private ensureInitialized(): void {\n if (!this.dAppConnector) {\n throw new Error('SDK not initialized. Call init() first.');\n }\n }\n\n static run(): void {\n try {\n if (typeof window !== 'undefined') {\n (window as any).HashinalsWalletConnectSDK =\n HashinalsWalletConnectSDK.getInstance();\n (window as any).HashgraphSDK = HashgraphSDK;\n }\n } catch (e) {\n console.error('[ERROR]: failed setting sdk on window');\n }\n }\n\n public async transferToken(\n tokenId: string,\n fromAccountId: string,\n toAccountId: string,\n amount: number\n ): Promise {\n this.ensureInitialized();\n\n const transaction = new TransferTransaction()\n .setTransactionId(TransactionId.generate(fromAccountId))\n .addTokenTransfer(\n TokenId.fromString(tokenId),\n AccountId.fromString(fromAccountId),\n -amount\n )\n .addTokenTransfer(\n TokenId.fromString(tokenId),\n AccountId.fromString(toAccountId),\n amount\n );\n\n return this.executeTransaction(transaction);\n }\n\n async createAccount(initialBalance: number): Promise {\n this.ensureInitialized();\n\n const transaction = new AccountCreateTransaction().setInitialBalance(\n new Hbar(initialBalance)\n );\n\n return this.executeTransaction(transaction);\n }\n\n public async associateTokenToAccount(\n accountId: string,\n tokenId: string\n ): Promise {\n this.ensureInitialized();\n\n const transaction = new TokenAssociateTransaction()\n .setAccountId(AccountId.fromString(accountId))\n .setTokenIds([TokenId.fromString(tokenId)]);\n\n return this.executeTransaction(transaction);\n }\n\n public async dissociateTokenFromAccount(\n accountId: string,\n tokenId: string\n ): Promise {\n this.ensureInitialized();\n\n const transaction = new TokenDissociateTransaction()\n .setAccountId(AccountId.fromString(accountId))\n .setTokenIds([TokenId.fromString(tokenId)]);\n\n return this.executeTransaction(transaction);\n }\n\n public async updateAccount(\n accountId: string,\n maxAutomaticTokenAssociations: number\n ): Promise {\n this.ensureInitialized();\n\n const transaction = new AccountUpdateTransaction()\n .setAccountId(AccountId.fromString(accountId))\n .setMaxAutomaticTokenAssociations(maxAutomaticTokenAssociations);\n\n return this.executeTransaction(transaction);\n }\n\n public async approveAllowance(\n spenderAccountId: string,\n tokenId: string,\n amount: number,\n ownerAccountId: string\n ): Promise {\n this.ensureInitialized();\n\n const transaction =\n new AccountAllowanceApproveTransaction().approveTokenAllowance(\n TokenId.fromString(tokenId),\n AccountId.fromString(ownerAccountId),\n AccountId.fromString(spenderAccountId),\n amount\n );\n\n return this.executeTransaction(transaction);\n }\n\n public async getAccountTokens(\n accountId: string\n ): Promise<{ tokens: TokenBalance[] }> {\n this.ensureInitialized();\n\n const networkPrefix = this.getNetworkPrefix();\n const baseUrl = `https://${networkPrefix}.mirrornode.hedera.com`;\n const url = `${baseUrl}/api/v1/accounts/${accountId}/tokens?limit=200`;\n\n try {\n const response = await fetchWithRetry()(url);\n if (!response.ok) {\n throw new Error(\n `Failed to make request to mirror node for account tokens: ${response.status}`\n );\n }\n const data = await response.json();\n\n const tokens: TokenBalance[] = [];\n\n for (const token of data.tokens) {\n if (token.token_id) {\n tokens.push({\n tokenId: token.token_id,\n balance: token.balance,\n decimals: token.decimals,\n formatted_balance: (\n token.balance /\n 10 ** token.decimals\n ).toLocaleString('en-US'),\n created_timestamp: new Date(Number(token.created_timestamp) * 1000),\n });\n }\n }\n let nextLink = data.links?.next;\n while (nextLink) {\n const nextUrl = `${baseUrl}${nextLink}`;\n const nextResponse = await fetchWithRetry()(nextUrl);\n if (!nextResponse.ok) {\n throw new Error(\n `Failed to make request to mirror node for account tokens: ${nextResponse.status}, page: ${nextUrl}`\n );\n }\n const nextData = await nextResponse.json();\n\n for (const token of nextData.tokens) {\n if (token.token_id) {\n tokens.push({\n tokenId: token.token_id,\n balance: token.balance,\n decimals: token.decimals,\n formatted_balance: (\n token.balance /\n 10 ** token.decimals\n ).toLocaleString('en-US'),\n created_timestamp: new Date(\n Number(token.created_timestamp) * 1000\n ),\n });\n }\n }\n\n nextLink = nextData.links?.next;\n }\n\n return { tokens };\n } catch (error) {\n this.logger.error('Error fetching account tokens:', error);\n throw error;\n }\n }\n\n public async getTransaction(\n transactionId: string\n ): Promise {\n try {\n const networkPrefix = this.getNetworkPrefix();\n const url = `https://${networkPrefix}.mirrornode.hedera.com/api/v1/transactions/${transactionId}`;\n\n this.logger.debug('Fetching transaction', url);\n const request = await fetchWithRetry()(url);\n\n if (!request.ok) {\n throw new Error(`Failed to fetch transaction: ${request.status}`);\n }\n\n return await request.json();\n } catch (e) {\n this.logger.error('Failed to get transaction', e);\n return null;\n }\n }\n\n public async getTransactionByTimestamp(\n timestamp: string\n ): Promise {\n try {\n const networkPrefix = this.getNetworkPrefix();\n const url = `https://${networkPrefix}.mirrornode.hedera.com/api/v1/transactions?timestamp=${timestamp}`;\n\n this.logger.debug('Fetching transaction by timestamp', url);\n const request = await fetchWithRetry()(url);\n\n if (!request.ok) {\n throw new Error(\n `Failed to fetch transaction by timestamp: ${request.status}`\n );\n }\n\n const response = (await request.json()) as HederaTXResponse;\n const transaction = response?.transactions?.[0];\n\n if (transaction) {\n return await this.getTransaction(transaction.transaction_id);\n }\n\n return null;\n } catch (e) {\n this.logger.error('Failed to get transaction by timestamp', e);\n return null;\n }\n }\n\n public async getAccountNFTs(\n accountId: string,\n tokenId?: string\n ): Promise {\n try {\n const networkPrefix = this.getNetworkPrefix();\n const tokenQuery = tokenId ? `&token.id=${tokenId}` : '';\n const url = `https://${networkPrefix}.mirrornode.hedera.com/api/v1/accounts/${accountId}/nfts?limit=200${tokenQuery}`;\n\n const request = await fetchWithRetry()(url);\n if (!request.ok) {\n throw new Error(`Failed to fetch NFTs for account: ${request.status}`);\n }\n\n const response = (await request.json()) as HBarNFT;\n let nextLink: string | null = response?.links?.next || null;\n let nfts = response.nfts;\n\n while (nextLink) {\n try {\n const nextRequest = await fetchWithRetry()(\n `https://${networkPrefix}.mirrornode.hedera.com${nextLink}`\n );\n\n if (!nextRequest.ok) {\n throw new Error(\n `Failed to fetch next page of NFTs: ${nextRequest.status}`\n );\n }\n\n const nextResponse = (await nextRequest.json()) as HBarNFT;\n nfts = [...nfts, ...(nextResponse?.nfts || [])];\n\n nextLink =\n nextResponse?.links?.next && nextLink !== nextResponse?.links?.next\n ? nextResponse.links.next\n : null;\n } catch (e) {\n this.logger.error('Failed to fetch next page of NFTs', e);\n break;\n }\n }\n\n return nfts.map((nft) => {\n try {\n nft.token_uri = Buffer.from(nft.metadata, 'base64').toString('ascii');\n } catch (e) {\n this.logger.error('Failed to decode NFT metadata', e);\n }\n return nft;\n });\n } catch (e) {\n this.logger.error('Failed to get account NFTs', e);\n return [];\n }\n }\n\n public async validateNFTOwnership(\n serialNumber: string,\n accountId: string,\n tokenId: string\n ): Promise {\n const userNFTs = await this.getAccountNFTs(accountId, tokenId);\n\n return (\n userNFTs.find(\n (nft) =>\n nft.token_id === tokenId &&\n nft.serial_number.toString() === serialNumber\n ) || null\n );\n }\n\n public async readSmartContract(\n data: string,\n fromAccount: AccountId,\n contractId: ContractId,\n estimate: boolean = true,\n value: number = 0\n ): Promise {\n try {\n const networkPrefix = this.getNetworkPrefix();\n const body: any = {\n block: 'latest',\n data: data,\n estimate: estimate,\n from: fromAccount.toSolidityAddress(),\n to: contractId.toSolidityAddress(),\n value,\n };\n\n if (!estimate) {\n body.gas = 300000;\n body.gasPrice = 100000000;\n }\n\n const url = `https://${networkPrefix}.mirrornode.hedera.com/api/v1/contracts/call`;\n\n const response = await fetchWithRetry()(url, {\n method: 'POST',\n body: JSON.stringify(body),\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n\n if (!response.ok) {\n throw new Error(`Failed to make contract call: ${response.status}`);\n }\n\n return await response.json();\n } catch (e) {\n this.logger.error('Failed to make contract call', e);\n return null;\n }\n }\n}\n\n// This variable is replaced at build time.\n// @ts-ignore\nif ('VITE_BUILD_FORMAT' === 'umd') {\n HashinalsWalletConnectSDK.run();\n}\n\nexport * from './types';\nexport * from './sign';\nexport { HashinalsWalletConnectSDK, HashgraphSDK };\n"],"names":["i","buffer","c","rt","Buffer","SlowBuffer","proto","b","byteLength","x","y","n","code","E","Blob","atob","constants","HederaChainId","HederaSessionEvent","HederaJsonRpcMethod","_","events","EVENTS","format","f","require$$0","browser","k","transmit","noop","level","S","z","v","ReflectApply","ReflectOwnKeys","NumberIsNaN","eventsModule","once","listeners","w","d","p","__assign","g","k2","global","e","isReactNative","process","require$$1","require$$2","delay_1","delay","watch","require$$3","require$$4","Ze","$","et","Ot","is","tt","u","A","Et","R","Y","M","C","F","P","B","ue","bt","Ct","K","U","Lt","Te","Ne","T","xt","Pe","Dt","je","Fe","Qe","ze","He","Ye","ge","Vt","ie","he","Q","se","Ae","Mt","de","X","rs","ns","J","Rt","St","re","Ue","L","ne","kt","Xe","$t","Oe","Je","Kt","Ut","Gt","Be","jt","Ft","Qt","zt","Ht","Yt","It","We","Xt","Jt","os","as","ft","Bt","Ge","Wt","H","At","ts","Zt","Tt","vt","Nt","Pt","DefaultLogger","data","result","_e","metadata","SignClient","signer","_a","Name","Result"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35]}
\ No newline at end of file
+{"version":3,"file":"hashinal-wc.es.js","sources":["../../node_modules/vite-plugin-node-polyfills/shims/buffer/dist/index.js","../../node_modules/@hashgraph/hedera-wallet-connect/dist/lib/shared/chainIds.js","../../node_modules/@hashgraph/hedera-wallet-connect/dist/lib/shared/events.js","../../node_modules/@hashgraph/hedera-wallet-connect/dist/lib/shared/methods.js","../../node_modules/@hashgraph/hedera-wallet-connect/dist/lib/shared/utils.js","../../node_modules/@hashgraph/hedera-wallet-connect/dist/lib/shared/extensionController.js","../../node_modules/quick-format-unescaped/index.js","../../node_modules/@walletconnect/logger/node_modules/pino/browser.js","../../node_modules/@walletconnect/logger/dist/index.es.js","../../node_modules/events/events.js","../../node_modules/@walletconnect/jsonrpc-utils/dist/esm/constants.js","../../node_modules/@walletconnect/jsonrpc-utils/dist/esm/error.js","../../node_modules/tslib/tslib.es6.js","../../node_modules/@walletconnect/environment/dist/cjs/crypto.js","../../node_modules/vite-plugin-node-polyfills/shims/process/dist/index.js","../../node_modules/@walletconnect/environment/dist/cjs/env.js","../../node_modules/@walletconnect/environment/dist/cjs/index.js","../../node_modules/@walletconnect/jsonrpc-utils/dist/esm/format.js","../../node_modules/@walletconnect/jsonrpc-utils/dist/esm/validators.js","../../node_modules/@walletconnect/time/dist/cjs/utils/delay.js","../../node_modules/@walletconnect/time/dist/cjs/constants/misc.js","../../node_modules/@walletconnect/time/dist/cjs/constants/time.js","../../node_modules/@walletconnect/time/dist/cjs/constants/index.js","../../node_modules/@walletconnect/time/dist/cjs/utils/convert.js","../../node_modules/@walletconnect/time/dist/cjs/utils/index.js","../../node_modules/@walletconnect/time/dist/cjs/watch.js","../../node_modules/@walletconnect/time/dist/cjs/types/watch.js","../../node_modules/@walletconnect/time/dist/cjs/types/index.js","../../node_modules/@walletconnect/time/dist/cjs/index.js","../../node_modules/vite-plugin-node-polyfills/shims/global/dist/index.js","../../node_modules/@walletconnect/sign-client/node_modules/@walletconnect/types/dist/index.es.js","../../node_modules/@walletconnect/sign-client/dist/index.es.js","../../node_modules/@hashgraph/hedera-wallet-connect/dist/lib/shared/logger.js","../../node_modules/@hashgraph/hedera-wallet-connect/dist/lib/dapp/SessionNotFoundError.js","../../node_modules/@hashgraph/hedera-wallet-connect/dist/lib/dapp/DAppSigner.js","../../node_modules/@hashgraph/hedera-wallet-connect/dist/lib/dapp/index.js","../../src/logger/logger.ts","../../src/utils/retry.ts","../../src/types.ts","../../src/index.ts"],"sourcesContent":["var buffer = {};\n\nvar base64Js = {};\n\nbase64Js.byteLength = byteLength;\nbase64Js.toByteArray = toByteArray;\nbase64Js.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\nvar ieee754 = {};\n\n/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\n\nieee754.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\nieee754.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/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n(function (exports) {\n\n\tconst base64 = base64Js;\n\tconst ieee754$1 = ieee754;\n\tconst customInspectSymbol =\n\t (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n\t ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n\t : null;\n\n\texports.Buffer = Buffer;\n\texports.SlowBuffer = SlowBuffer;\n\texports.INSPECT_MAX_BYTES = 50;\n\n\tconst K_MAX_LENGTH = 0x7fffffff;\n\texports.kMaxLength = K_MAX_LENGTH;\n\tconst { Uint8Array: GlobalUint8Array, ArrayBuffer: GlobalArrayBuffer, SharedArrayBuffer: GlobalSharedArrayBuffer } = globalThis;\n\n\t/**\n\t * If `Buffer.TYPED_ARRAY_SUPPORT`:\n\t * === true Use Uint8Array implementation (fastest)\n\t * === false Print warning and recommend using `buffer` v4.x which has an Object\n\t * implementation (most compatible, even IE6)\n\t *\n\t * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n\t * Opera 11.6+, iOS 4.2+.\n\t *\n\t * We report that the browser does not support typed arrays if the are not subclassable\n\t * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n\t * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n\t * for __proto__ and has a buggy typed array implementation.\n\t */\n\tBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport();\n\n\tif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n\t typeof console.error === 'function') {\n\t console.error(\n\t 'This browser lacks typed array (Uint8Array) support which is required by ' +\n\t '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n\t );\n\t}\n\n\tfunction typedArraySupport () {\n\t // Can typed array instances can be augmented?\n\t try {\n\t const arr = new GlobalUint8Array(1);\n\t const proto = { foo: function () { return 42 } };\n\t Object.setPrototypeOf(proto, GlobalUint8Array.prototype);\n\t Object.setPrototypeOf(arr, proto);\n\t return arr.foo() === 42\n\t } catch (e) {\n\t return false\n\t }\n\t}\n\n\tObject.defineProperty(Buffer.prototype, 'parent', {\n\t enumerable: true,\n\t get: function () {\n\t if (!Buffer.isBuffer(this)) return undefined\n\t return this.buffer\n\t }\n\t});\n\n\tObject.defineProperty(Buffer.prototype, 'offset', {\n\t enumerable: true,\n\t get: function () {\n\t if (!Buffer.isBuffer(this)) return undefined\n\t return this.byteOffset\n\t }\n\t});\n\n\tfunction createBuffer (length) {\n\t if (length > K_MAX_LENGTH) {\n\t throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n\t }\n\t // Return an augmented `Uint8Array` instance\n\t const buf = new GlobalUint8Array(length);\n\t Object.setPrototypeOf(buf, Buffer.prototype);\n\t return buf\n\t}\n\n\t/**\n\t * The Buffer constructor returns instances of `Uint8Array` that have their\n\t * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n\t * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n\t * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n\t * returns a single octet.\n\t *\n\t * The `Uint8Array` prototype remains unmodified.\n\t */\n\n\tfunction Buffer (arg, encodingOrOffset, length) {\n\t // Common case.\n\t if (typeof arg === 'number') {\n\t if (typeof encodingOrOffset === 'string') {\n\t throw new TypeError(\n\t 'The \"string\" argument must be of type string. Received type number'\n\t )\n\t }\n\t return allocUnsafe(arg)\n\t }\n\t return from(arg, encodingOrOffset, length)\n\t}\n\n\tBuffer.poolSize = 8192; // not used by this implementation\n\n\tfunction from (value, encodingOrOffset, length) {\n\t if (typeof value === 'string') {\n\t return fromString(value, encodingOrOffset)\n\t }\n\n\t if (GlobalArrayBuffer.isView(value)) {\n\t return fromArrayView(value)\n\t }\n\n\t if (value == null) {\n\t throw new TypeError(\n\t 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n\t 'or Array-like Object. Received type ' + (typeof value)\n\t )\n\t }\n\n\t if (isInstance(value, GlobalArrayBuffer) ||\n\t (value && isInstance(value.buffer, GlobalArrayBuffer))) {\n\t return fromArrayBuffer(value, encodingOrOffset, length)\n\t }\n\n\t if (typeof GlobalSharedArrayBuffer !== 'undefined' &&\n\t (isInstance(value, GlobalSharedArrayBuffer) ||\n\t (value && isInstance(value.buffer, GlobalSharedArrayBuffer)))) {\n\t return fromArrayBuffer(value, encodingOrOffset, length)\n\t }\n\n\t if (typeof value === 'number') {\n\t throw new TypeError(\n\t 'The \"value\" argument must not be of type number. Received type number'\n\t )\n\t }\n\n\t const valueOf = value.valueOf && value.valueOf();\n\t if (valueOf != null && valueOf !== value) {\n\t return Buffer.from(valueOf, encodingOrOffset, length)\n\t }\n\n\t const b = fromObject(value);\n\t if (b) return b\n\n\t if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n\t typeof value[Symbol.toPrimitive] === 'function') {\n\t return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n\t }\n\n\t throw new TypeError(\n\t 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n\t 'or Array-like Object. Received type ' + (typeof value)\n\t )\n\t}\n\n\t/**\n\t * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n\t * if value is a number.\n\t * Buffer.from(str[, encoding])\n\t * Buffer.from(array)\n\t * Buffer.from(buffer)\n\t * Buffer.from(arrayBuffer[, byteOffset[, length]])\n\t **/\n\tBuffer.from = function (value, encodingOrOffset, length) {\n\t return from(value, encodingOrOffset, length)\n\t};\n\n\t// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n\t// https://github.com/feross/buffer/pull/148\n\tObject.setPrototypeOf(Buffer.prototype, GlobalUint8Array.prototype);\n\tObject.setPrototypeOf(Buffer, GlobalUint8Array);\n\n\tfunction assertSize (size) {\n\t if (typeof size !== 'number') {\n\t throw new TypeError('\"size\" argument must be of type number')\n\t } else if (size < 0) {\n\t throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n\t }\n\t}\n\n\tfunction alloc (size, fill, encoding) {\n\t assertSize(size);\n\t if (size <= 0) {\n\t return createBuffer(size)\n\t }\n\t if (fill !== undefined) {\n\t // Only pay attention to encoding if it's a string. This\n\t // prevents accidentally sending in a number that would\n\t // be interpreted as a start offset.\n\t return typeof encoding === 'string'\n\t ? createBuffer(size).fill(fill, encoding)\n\t : createBuffer(size).fill(fill)\n\t }\n\t return createBuffer(size)\n\t}\n\n\t/**\n\t * Creates a new filled Buffer instance.\n\t * alloc(size[, fill[, encoding]])\n\t **/\n\tBuffer.alloc = function (size, fill, encoding) {\n\t return alloc(size, fill, encoding)\n\t};\n\n\tfunction allocUnsafe (size) {\n\t assertSize(size);\n\t return createBuffer(size < 0 ? 0 : checked(size) | 0)\n\t}\n\n\t/**\n\t * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n\t * */\n\tBuffer.allocUnsafe = function (size) {\n\t return allocUnsafe(size)\n\t};\n\t/**\n\t * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n\t */\n\tBuffer.allocUnsafeSlow = function (size) {\n\t return allocUnsafe(size)\n\t};\n\n\tfunction fromString (string, encoding) {\n\t if (typeof encoding !== 'string' || encoding === '') {\n\t encoding = 'utf8';\n\t }\n\n\t if (!Buffer.isEncoding(encoding)) {\n\t throw new TypeError('Unknown encoding: ' + encoding)\n\t }\n\n\t const length = byteLength(string, encoding) | 0;\n\t let buf = createBuffer(length);\n\n\t const actual = buf.write(string, encoding);\n\n\t if (actual !== length) {\n\t // Writing a hex string, for example, that contains invalid characters will\n\t // cause everything after the first invalid character to be ignored. (e.g.\n\t // 'abxxcd' will be treated as 'ab')\n\t buf = buf.slice(0, actual);\n\t }\n\n\t return buf\n\t}\n\n\tfunction fromArrayLike (array) {\n\t const length = array.length < 0 ? 0 : checked(array.length) | 0;\n\t const buf = createBuffer(length);\n\t for (let i = 0; i < length; i += 1) {\n\t buf[i] = array[i] & 255;\n\t }\n\t return buf\n\t}\n\n\tfunction fromArrayView (arrayView) {\n\t if (isInstance(arrayView, GlobalUint8Array)) {\n\t const copy = new GlobalUint8Array(arrayView);\n\t return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n\t }\n\t return fromArrayLike(arrayView)\n\t}\n\n\tfunction fromArrayBuffer (array, byteOffset, length) {\n\t if (byteOffset < 0 || array.byteLength < byteOffset) {\n\t throw new RangeError('\"offset\" is outside of buffer bounds')\n\t }\n\n\t if (array.byteLength < byteOffset + (length || 0)) {\n\t throw new RangeError('\"length\" is outside of buffer bounds')\n\t }\n\n\t let buf;\n\t if (byteOffset === undefined && length === undefined) {\n\t buf = new GlobalUint8Array(array);\n\t } else if (length === undefined) {\n\t buf = new GlobalUint8Array(array, byteOffset);\n\t } else {\n\t buf = new GlobalUint8Array(array, byteOffset, length);\n\t }\n\n\t // Return an augmented `Uint8Array` instance\n\t Object.setPrototypeOf(buf, Buffer.prototype);\n\n\t return buf\n\t}\n\n\tfunction fromObject (obj) {\n\t if (Buffer.isBuffer(obj)) {\n\t const len = checked(obj.length) | 0;\n\t const buf = createBuffer(len);\n\n\t if (buf.length === 0) {\n\t return buf\n\t }\n\n\t obj.copy(buf, 0, 0, len);\n\t return buf\n\t }\n\n\t if (obj.length !== undefined) {\n\t if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n\t return createBuffer(0)\n\t }\n\t return fromArrayLike(obj)\n\t }\n\n\t if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n\t return fromArrayLike(obj.data)\n\t }\n\t}\n\n\tfunction checked (length) {\n\t // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n\t // length is NaN (which is otherwise coerced to zero.)\n\t if (length >= K_MAX_LENGTH) {\n\t throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n\t 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n\t }\n\t return length | 0\n\t}\n\n\tfunction SlowBuffer (length) {\n\t if (+length != length) { // eslint-disable-line eqeqeq\n\t length = 0;\n\t }\n\t return Buffer.alloc(+length)\n\t}\n\n\tBuffer.isBuffer = function isBuffer (b) {\n\t return b != null && b._isBuffer === true &&\n\t b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n\t};\n\n\tBuffer.compare = function compare (a, b) {\n\t if (isInstance(a, GlobalUint8Array)) a = Buffer.from(a, a.offset, a.byteLength);\n\t if (isInstance(b, GlobalUint8Array)) b = Buffer.from(b, b.offset, b.byteLength);\n\t if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n\t throw new TypeError(\n\t 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n\t )\n\t }\n\n\t if (a === b) return 0\n\n\t let x = a.length;\n\t let y = b.length;\n\n\t for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n\t if (a[i] !== b[i]) {\n\t x = a[i];\n\t y = b[i];\n\t break\n\t }\n\t }\n\n\t if (x < y) return -1\n\t if (y < x) return 1\n\t return 0\n\t};\n\n\tBuffer.isEncoding = function isEncoding (encoding) {\n\t switch (String(encoding).toLowerCase()) {\n\t case 'hex':\n\t case 'utf8':\n\t case 'utf-8':\n\t case 'ascii':\n\t case 'latin1':\n\t case 'binary':\n\t case 'base64':\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return true\n\t default:\n\t return false\n\t }\n\t};\n\n\tBuffer.concat = function concat (list, length) {\n\t if (!Array.isArray(list)) {\n\t throw new TypeError('\"list\" argument must be an Array of Buffers')\n\t }\n\n\t if (list.length === 0) {\n\t return Buffer.alloc(0)\n\t }\n\n\t let i;\n\t if (length === undefined) {\n\t length = 0;\n\t for (i = 0; i < list.length; ++i) {\n\t length += list[i].length;\n\t }\n\t }\n\n\t const buffer = Buffer.allocUnsafe(length);\n\t let pos = 0;\n\t for (i = 0; i < list.length; ++i) {\n\t let buf = list[i];\n\t if (isInstance(buf, GlobalUint8Array)) {\n\t if (pos + buf.length > buffer.length) {\n\t if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf);\n\t buf.copy(buffer, pos);\n\t } else {\n\t GlobalUint8Array.prototype.set.call(\n\t buffer,\n\t buf,\n\t pos\n\t );\n\t }\n\t } else if (!Buffer.isBuffer(buf)) {\n\t throw new TypeError('\"list\" argument must be an Array of Buffers')\n\t } else {\n\t buf.copy(buffer, pos);\n\t }\n\t pos += buf.length;\n\t }\n\t return buffer\n\t};\n\n\tfunction byteLength (string, encoding) {\n\t if (Buffer.isBuffer(string)) {\n\t return string.length\n\t }\n\t if (GlobalArrayBuffer.isView(string) || isInstance(string, GlobalArrayBuffer)) {\n\t return string.byteLength\n\t }\n\t if (typeof string !== 'string') {\n\t throw new TypeError(\n\t 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n\t 'Received type ' + typeof string\n\t )\n\t }\n\n\t const len = string.length;\n\t const mustMatch = (arguments.length > 2 && arguments[2] === true);\n\t if (!mustMatch && len === 0) return 0\n\n\t // Use a for loop to avoid recursion\n\t let loweredCase = false;\n\t for (;;) {\n\t switch (encoding) {\n\t case 'ascii':\n\t case 'latin1':\n\t case 'binary':\n\t return len\n\t case 'utf8':\n\t case 'utf-8':\n\t return utf8ToBytes(string).length\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return len * 2\n\t case 'hex':\n\t return len >>> 1\n\t case 'base64':\n\t return base64ToBytes(string).length\n\t default:\n\t if (loweredCase) {\n\t return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n\t }\n\t encoding = ('' + encoding).toLowerCase();\n\t loweredCase = true;\n\t }\n\t }\n\t}\n\tBuffer.byteLength = byteLength;\n\n\tfunction slowToString (encoding, start, end) {\n\t let loweredCase = false;\n\n\t // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n\t // property of a typed array.\n\n\t // This behaves neither like String nor Uint8Array in that we set start/end\n\t // to their upper/lower bounds if the value passed is out of range.\n\t // undefined is handled specially as per ECMA-262 6th Edition,\n\t // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n\t if (start === undefined || start < 0) {\n\t start = 0;\n\t }\n\t // Return early if start > this.length. Done here to prevent potential uint32\n\t // coercion fail below.\n\t if (start > this.length) {\n\t return ''\n\t }\n\n\t if (end === undefined || end > this.length) {\n\t end = this.length;\n\t }\n\n\t if (end <= 0) {\n\t return ''\n\t }\n\n\t // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n\t end >>>= 0;\n\t start >>>= 0;\n\n\t if (end <= start) {\n\t return ''\n\t }\n\n\t if (!encoding) encoding = 'utf8';\n\n\t while (true) {\n\t switch (encoding) {\n\t case 'hex':\n\t return hexSlice(this, start, end)\n\n\t case 'utf8':\n\t case 'utf-8':\n\t return utf8Slice(this, start, end)\n\n\t case 'ascii':\n\t return asciiSlice(this, start, end)\n\n\t case 'latin1':\n\t case 'binary':\n\t return latin1Slice(this, start, end)\n\n\t case 'base64':\n\t return base64Slice(this, start, end)\n\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return utf16leSlice(this, start, end)\n\n\t default:\n\t if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n\t encoding = (encoding + '').toLowerCase();\n\t loweredCase = true;\n\t }\n\t }\n\t}\n\n\t// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n\t// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n\t// reliably in a browserify context because there could be multiple different\n\t// copies of the 'buffer' package in use. This method works even for Buffer\n\t// instances that were created from another copy of the `buffer` package.\n\t// See: https://github.com/feross/buffer/issues/154\n\tBuffer.prototype._isBuffer = true;\n\n\tfunction swap (b, n, m) {\n\t const i = b[n];\n\t b[n] = b[m];\n\t b[m] = i;\n\t}\n\n\tBuffer.prototype.swap16 = function swap16 () {\n\t const len = this.length;\n\t if (len % 2 !== 0) {\n\t throw new RangeError('Buffer size must be a multiple of 16-bits')\n\t }\n\t for (let i = 0; i < len; i += 2) {\n\t swap(this, i, i + 1);\n\t }\n\t return this\n\t};\n\n\tBuffer.prototype.swap32 = function swap32 () {\n\t const len = this.length;\n\t if (len % 4 !== 0) {\n\t throw new RangeError('Buffer size must be a multiple of 32-bits')\n\t }\n\t for (let i = 0; i < len; i += 4) {\n\t swap(this, i, i + 3);\n\t swap(this, i + 1, i + 2);\n\t }\n\t return this\n\t};\n\n\tBuffer.prototype.swap64 = function swap64 () {\n\t const len = this.length;\n\t if (len % 8 !== 0) {\n\t throw new RangeError('Buffer size must be a multiple of 64-bits')\n\t }\n\t for (let i = 0; i < len; i += 8) {\n\t swap(this, i, i + 7);\n\t swap(this, i + 1, i + 6);\n\t swap(this, i + 2, i + 5);\n\t swap(this, i + 3, i + 4);\n\t }\n\t return this\n\t};\n\n\tBuffer.prototype.toString = function toString () {\n\t const length = this.length;\n\t if (length === 0) return ''\n\t if (arguments.length === 0) return utf8Slice(this, 0, length)\n\t return slowToString.apply(this, arguments)\n\t};\n\n\tBuffer.prototype.toLocaleString = Buffer.prototype.toString;\n\n\tBuffer.prototype.equals = function equals (b) {\n\t if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n\t if (this === b) return true\n\t return Buffer.compare(this, b) === 0\n\t};\n\n\tBuffer.prototype.inspect = function inspect () {\n\t let str = '';\n\t const max = exports.INSPECT_MAX_BYTES;\n\t str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim();\n\t if (this.length > max) str += ' ... ';\n\t return ''\n\t};\n\tif (customInspectSymbol) {\n\t Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect;\n\t}\n\n\tBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n\t if (isInstance(target, GlobalUint8Array)) {\n\t target = Buffer.from(target, target.offset, target.byteLength);\n\t }\n\t if (!Buffer.isBuffer(target)) {\n\t throw new TypeError(\n\t 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n\t 'Received type ' + (typeof target)\n\t )\n\t }\n\n\t if (start === undefined) {\n\t start = 0;\n\t }\n\t if (end === undefined) {\n\t end = target ? target.length : 0;\n\t }\n\t if (thisStart === undefined) {\n\t thisStart = 0;\n\t }\n\t if (thisEnd === undefined) {\n\t thisEnd = this.length;\n\t }\n\n\t if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n\t throw new RangeError('out of range index')\n\t }\n\n\t if (thisStart >= thisEnd && start >= end) {\n\t return 0\n\t }\n\t if (thisStart >= thisEnd) {\n\t return -1\n\t }\n\t if (start >= end) {\n\t return 1\n\t }\n\n\t start >>>= 0;\n\t end >>>= 0;\n\t thisStart >>>= 0;\n\t thisEnd >>>= 0;\n\n\t if (this === target) return 0\n\n\t let x = thisEnd - thisStart;\n\t let y = end - start;\n\t const len = Math.min(x, y);\n\n\t const thisCopy = this.slice(thisStart, thisEnd);\n\t const targetCopy = target.slice(start, end);\n\n\t for (let i = 0; i < len; ++i) {\n\t if (thisCopy[i] !== targetCopy[i]) {\n\t x = thisCopy[i];\n\t y = targetCopy[i];\n\t break\n\t }\n\t }\n\n\t if (x < y) return -1\n\t if (y < x) return 1\n\t return 0\n\t};\n\n\t// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n\t// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n\t//\n\t// Arguments:\n\t// - buffer - a Buffer to search\n\t// - val - a string, Buffer, or number\n\t// - byteOffset - an index into `buffer`; will be clamped to an int32\n\t// - encoding - an optional encoding, relevant is val is a string\n\t// - dir - true for indexOf, false for lastIndexOf\n\tfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n\t // Empty buffer means no match\n\t if (buffer.length === 0) return -1\n\n\t // Normalize byteOffset\n\t if (typeof byteOffset === 'string') {\n\t encoding = byteOffset;\n\t byteOffset = 0;\n\t } else if (byteOffset > 0x7fffffff) {\n\t byteOffset = 0x7fffffff;\n\t } else if (byteOffset < -0x80000000) {\n\t byteOffset = -0x80000000;\n\t }\n\t byteOffset = +byteOffset; // Coerce to Number.\n\t if (numberIsNaN(byteOffset)) {\n\t // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n\t byteOffset = dir ? 0 : (buffer.length - 1);\n\t }\n\n\t // Normalize byteOffset: negative offsets start from the end of the buffer\n\t if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n\t if (byteOffset >= buffer.length) {\n\t if (dir) return -1\n\t else byteOffset = buffer.length - 1;\n\t } else if (byteOffset < 0) {\n\t if (dir) byteOffset = 0;\n\t else return -1\n\t }\n\n\t // Normalize val\n\t if (typeof val === 'string') {\n\t val = Buffer.from(val, encoding);\n\t }\n\n\t // Finally, search either indexOf (if dir is true) or lastIndexOf\n\t if (Buffer.isBuffer(val)) {\n\t // Special case: looking for empty string/buffer always fails\n\t if (val.length === 0) {\n\t return -1\n\t }\n\t return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n\t } else if (typeof val === 'number') {\n\t val = val & 0xFF; // Search for a byte value [0-255]\n\t if (typeof GlobalUint8Array.prototype.indexOf === 'function') {\n\t if (dir) {\n\t return GlobalUint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n\t } else {\n\t return GlobalUint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n\t }\n\t }\n\t return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n\t }\n\n\t throw new TypeError('val must be string, number or Buffer')\n\t}\n\n\tfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n\t let indexSize = 1;\n\t let arrLength = arr.length;\n\t let valLength = val.length;\n\n\t if (encoding !== undefined) {\n\t encoding = String(encoding).toLowerCase();\n\t if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n\t encoding === 'utf16le' || encoding === 'utf-16le') {\n\t if (arr.length < 2 || val.length < 2) {\n\t return -1\n\t }\n\t indexSize = 2;\n\t arrLength /= 2;\n\t valLength /= 2;\n\t byteOffset /= 2;\n\t }\n\t }\n\n\t function read (buf, i) {\n\t if (indexSize === 1) {\n\t return buf[i]\n\t } else {\n\t return buf.readUInt16BE(i * indexSize)\n\t }\n\t }\n\n\t let i;\n\t if (dir) {\n\t let foundIndex = -1;\n\t for (i = byteOffset; i < arrLength; i++) {\n\t if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n\t if (foundIndex === -1) foundIndex = i;\n\t if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n\t } else {\n\t if (foundIndex !== -1) i -= i - foundIndex;\n\t foundIndex = -1;\n\t }\n\t }\n\t } else {\n\t if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n\t for (i = byteOffset; i >= 0; i--) {\n\t let found = true;\n\t for (let j = 0; j < valLength; j++) {\n\t if (read(arr, i + j) !== read(val, j)) {\n\t found = false;\n\t break\n\t }\n\t }\n\t if (found) return i\n\t }\n\t }\n\n\t return -1\n\t}\n\n\tBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n\t return this.indexOf(val, byteOffset, encoding) !== -1\n\t};\n\n\tBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n\t return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n\t};\n\n\tBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n\t return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n\t};\n\n\tfunction hexWrite (buf, string, offset, length) {\n\t offset = Number(offset) || 0;\n\t const remaining = buf.length - offset;\n\t if (!length) {\n\t length = remaining;\n\t } else {\n\t length = Number(length);\n\t if (length > remaining) {\n\t length = remaining;\n\t }\n\t }\n\n\t const strLen = string.length;\n\n\t if (length > strLen / 2) {\n\t length = strLen / 2;\n\t }\n\t let i;\n\t for (i = 0; i < length; ++i) {\n\t const parsed = parseInt(string.substr(i * 2, 2), 16);\n\t if (numberIsNaN(parsed)) return i\n\t buf[offset + i] = parsed;\n\t }\n\t return i\n\t}\n\n\tfunction utf8Write (buf, string, offset, length) {\n\t return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n\t}\n\n\tfunction asciiWrite (buf, string, offset, length) {\n\t return blitBuffer(asciiToBytes(string), buf, offset, length)\n\t}\n\n\tfunction base64Write (buf, string, offset, length) {\n\t return blitBuffer(base64ToBytes(string), buf, offset, length)\n\t}\n\n\tfunction ucs2Write (buf, string, offset, length) {\n\t return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n\t}\n\n\tBuffer.prototype.write = function write (string, offset, length, encoding) {\n\t // Buffer#write(string)\n\t if (offset === undefined) {\n\t encoding = 'utf8';\n\t length = this.length;\n\t offset = 0;\n\t // Buffer#write(string, encoding)\n\t } else if (length === undefined && typeof offset === 'string') {\n\t encoding = offset;\n\t length = this.length;\n\t offset = 0;\n\t // Buffer#write(string, offset[, length][, encoding])\n\t } else if (isFinite(offset)) {\n\t offset = offset >>> 0;\n\t if (isFinite(length)) {\n\t length = length >>> 0;\n\t if (encoding === undefined) encoding = 'utf8';\n\t } else {\n\t encoding = length;\n\t length = undefined;\n\t }\n\t } else {\n\t throw new Error(\n\t 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n\t )\n\t }\n\n\t const remaining = this.length - offset;\n\t if (length === undefined || length > remaining) length = remaining;\n\n\t if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n\t throw new RangeError('Attempt to write outside buffer bounds')\n\t }\n\n\t if (!encoding) encoding = 'utf8';\n\n\t let loweredCase = false;\n\t for (;;) {\n\t switch (encoding) {\n\t case 'hex':\n\t return hexWrite(this, string, offset, length)\n\n\t case 'utf8':\n\t case 'utf-8':\n\t return utf8Write(this, string, offset, length)\n\n\t case 'ascii':\n\t case 'latin1':\n\t case 'binary':\n\t return asciiWrite(this, string, offset, length)\n\n\t case 'base64':\n\t // Warning: maxLength not taken into account in base64Write\n\t return base64Write(this, string, offset, length)\n\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return ucs2Write(this, string, offset, length)\n\n\t default:\n\t if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n\t encoding = ('' + encoding).toLowerCase();\n\t loweredCase = true;\n\t }\n\t }\n\t};\n\n\tBuffer.prototype.toJSON = function toJSON () {\n\t return {\n\t type: 'Buffer',\n\t data: Array.prototype.slice.call(this._arr || this, 0)\n\t }\n\t};\n\n\tfunction base64Slice (buf, start, end) {\n\t if (start === 0 && end === buf.length) {\n\t return base64.fromByteArray(buf)\n\t } else {\n\t return base64.fromByteArray(buf.slice(start, end))\n\t }\n\t}\n\n\tfunction utf8Slice (buf, start, end) {\n\t end = Math.min(buf.length, end);\n\t const res = [];\n\n\t let i = start;\n\t while (i < end) {\n\t const firstByte = buf[i];\n\t let codePoint = null;\n\t let bytesPerSequence = (firstByte > 0xEF)\n\t ? 4\n\t : (firstByte > 0xDF)\n\t ? 3\n\t : (firstByte > 0xBF)\n\t ? 2\n\t : 1;\n\n\t if (i + bytesPerSequence <= end) {\n\t let secondByte, thirdByte, fourthByte, tempCodePoint;\n\n\t switch (bytesPerSequence) {\n\t case 1:\n\t if (firstByte < 0x80) {\n\t codePoint = firstByte;\n\t }\n\t break\n\t case 2:\n\t secondByte = buf[i + 1];\n\t if ((secondByte & 0xC0) === 0x80) {\n\t tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F);\n\t if (tempCodePoint > 0x7F) {\n\t codePoint = tempCodePoint;\n\t }\n\t }\n\t break\n\t case 3:\n\t secondByte = buf[i + 1];\n\t thirdByte = buf[i + 2];\n\t if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n\t tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F);\n\t if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n\t codePoint = tempCodePoint;\n\t }\n\t }\n\t break\n\t case 4:\n\t secondByte = buf[i + 1];\n\t thirdByte = buf[i + 2];\n\t fourthByte = buf[i + 3];\n\t if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n\t tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F);\n\t if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n\t codePoint = tempCodePoint;\n\t }\n\t }\n\t }\n\t }\n\n\t if (codePoint === null) {\n\t // we did not generate a valid codePoint so insert a\n\t // replacement char (U+FFFD) and advance only 1 byte\n\t codePoint = 0xFFFD;\n\t bytesPerSequence = 1;\n\t } else if (codePoint > 0xFFFF) {\n\t // encode to utf16 (surrogate pair dance)\n\t codePoint -= 0x10000;\n\t res.push(codePoint >>> 10 & 0x3FF | 0xD800);\n\t codePoint = 0xDC00 | codePoint & 0x3FF;\n\t }\n\n\t res.push(codePoint);\n\t i += bytesPerSequence;\n\t }\n\n\t return decodeCodePointsArray(res)\n\t}\n\n\t// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n\t// the lowest limit is Chrome, with 0x10000 args.\n\t// We go 1 magnitude less, for safety\n\tconst MAX_ARGUMENTS_LENGTH = 0x1000;\n\n\tfunction decodeCodePointsArray (codePoints) {\n\t const len = codePoints.length;\n\t if (len <= MAX_ARGUMENTS_LENGTH) {\n\t return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n\t }\n\n\t // Decode in chunks to avoid \"call stack size exceeded\".\n\t let res = '';\n\t let i = 0;\n\t while (i < len) {\n\t res += String.fromCharCode.apply(\n\t String,\n\t codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n\t );\n\t }\n\t return res\n\t}\n\n\tfunction asciiSlice (buf, start, end) {\n\t let ret = '';\n\t end = Math.min(buf.length, end);\n\n\t for (let i = start; i < end; ++i) {\n\t ret += String.fromCharCode(buf[i] & 0x7F);\n\t }\n\t return ret\n\t}\n\n\tfunction latin1Slice (buf, start, end) {\n\t let ret = '';\n\t end = Math.min(buf.length, end);\n\n\t for (let i = start; i < end; ++i) {\n\t ret += String.fromCharCode(buf[i]);\n\t }\n\t return ret\n\t}\n\n\tfunction hexSlice (buf, start, end) {\n\t const len = buf.length;\n\n\t if (!start || start < 0) start = 0;\n\t if (!end || end < 0 || end > len) end = len;\n\n\t let out = '';\n\t for (let i = start; i < end; ++i) {\n\t out += hexSliceLookupTable[buf[i]];\n\t }\n\t return out\n\t}\n\n\tfunction utf16leSlice (buf, start, end) {\n\t const bytes = buf.slice(start, end);\n\t let res = '';\n\t // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n\t for (let i = 0; i < bytes.length - 1; i += 2) {\n\t res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256));\n\t }\n\t return res\n\t}\n\n\tBuffer.prototype.slice = function slice (start, end) {\n\t const len = this.length;\n\t start = ~~start;\n\t end = end === undefined ? len : ~~end;\n\n\t if (start < 0) {\n\t start += len;\n\t if (start < 0) start = 0;\n\t } else if (start > len) {\n\t start = len;\n\t }\n\n\t if (end < 0) {\n\t end += len;\n\t if (end < 0) end = 0;\n\t } else if (end > len) {\n\t end = len;\n\t }\n\n\t if (end < start) end = start;\n\n\t const newBuf = this.subarray(start, end);\n\t // Return an augmented `Uint8Array` instance\n\t Object.setPrototypeOf(newBuf, Buffer.prototype);\n\n\t return newBuf\n\t};\n\n\t/*\n\t * Need to make sure that buffer isn't trying to write out of bounds.\n\t */\n\tfunction checkOffset (offset, ext, length) {\n\t if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n\t if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n\t}\n\n\tBuffer.prototype.readUintLE =\n\tBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n\t offset = offset >>> 0;\n\t byteLength = byteLength >>> 0;\n\t if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n\t let val = this[offset];\n\t let mul = 1;\n\t let i = 0;\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t val += this[offset + i] * mul;\n\t }\n\n\t return val\n\t};\n\n\tBuffer.prototype.readUintBE =\n\tBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n\t offset = offset >>> 0;\n\t byteLength = byteLength >>> 0;\n\t if (!noAssert) {\n\t checkOffset(offset, byteLength, this.length);\n\t }\n\n\t let val = this[offset + --byteLength];\n\t let mul = 1;\n\t while (byteLength > 0 && (mul *= 0x100)) {\n\t val += this[offset + --byteLength] * mul;\n\t }\n\n\t return val\n\t};\n\n\tBuffer.prototype.readUint8 =\n\tBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 1, this.length);\n\t return this[offset]\n\t};\n\n\tBuffer.prototype.readUint16LE =\n\tBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 2, this.length);\n\t return this[offset] | (this[offset + 1] << 8)\n\t};\n\n\tBuffer.prototype.readUint16BE =\n\tBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 2, this.length);\n\t return (this[offset] << 8) | this[offset + 1]\n\t};\n\n\tBuffer.prototype.readUint32LE =\n\tBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t return ((this[offset]) |\n\t (this[offset + 1] << 8) |\n\t (this[offset + 2] << 16)) +\n\t (this[offset + 3] * 0x1000000)\n\t};\n\n\tBuffer.prototype.readUint32BE =\n\tBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t return (this[offset] * 0x1000000) +\n\t ((this[offset + 1] << 16) |\n\t (this[offset + 2] << 8) |\n\t this[offset + 3])\n\t};\n\n\tBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n\t offset = offset >>> 0;\n\t validateNumber(offset, 'offset');\n\t const first = this[offset];\n\t const last = this[offset + 7];\n\t if (first === undefined || last === undefined) {\n\t boundsError(offset, this.length - 8);\n\t }\n\n\t const lo = first +\n\t this[++offset] * 2 ** 8 +\n\t this[++offset] * 2 ** 16 +\n\t this[++offset] * 2 ** 24;\n\n\t const hi = this[++offset] +\n\t this[++offset] * 2 ** 8 +\n\t this[++offset] * 2 ** 16 +\n\t last * 2 ** 24;\n\n\t return BigInt(lo) + (BigInt(hi) << BigInt(32))\n\t});\n\n\tBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n\t offset = offset >>> 0;\n\t validateNumber(offset, 'offset');\n\t const first = this[offset];\n\t const last = this[offset + 7];\n\t if (first === undefined || last === undefined) {\n\t boundsError(offset, this.length - 8);\n\t }\n\n\t const hi = first * 2 ** 24 +\n\t this[++offset] * 2 ** 16 +\n\t this[++offset] * 2 ** 8 +\n\t this[++offset];\n\n\t const lo = this[++offset] * 2 ** 24 +\n\t this[++offset] * 2 ** 16 +\n\t this[++offset] * 2 ** 8 +\n\t last;\n\n\t return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n\t});\n\n\tBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n\t offset = offset >>> 0;\n\t byteLength = byteLength >>> 0;\n\t if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n\t let val = this[offset];\n\t let mul = 1;\n\t let i = 0;\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t val += this[offset + i] * mul;\n\t }\n\t mul *= 0x80;\n\n\t if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n\t return val\n\t};\n\n\tBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n\t offset = offset >>> 0;\n\t byteLength = byteLength >>> 0;\n\t if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n\t let i = byteLength;\n\t let mul = 1;\n\t let val = this[offset + --i];\n\t while (i > 0 && (mul *= 0x100)) {\n\t val += this[offset + --i] * mul;\n\t }\n\t mul *= 0x80;\n\n\t if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n\t return val\n\t};\n\n\tBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 1, this.length);\n\t if (!(this[offset] & 0x80)) return (this[offset])\n\t return ((0xff - this[offset] + 1) * -1)\n\t};\n\n\tBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 2, this.length);\n\t const val = this[offset] | (this[offset + 1] << 8);\n\t return (val & 0x8000) ? val | 0xFFFF0000 : val\n\t};\n\n\tBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 2, this.length);\n\t const val = this[offset + 1] | (this[offset] << 8);\n\t return (val & 0x8000) ? val | 0xFFFF0000 : val\n\t};\n\n\tBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t return (this[offset]) |\n\t (this[offset + 1] << 8) |\n\t (this[offset + 2] << 16) |\n\t (this[offset + 3] << 24)\n\t};\n\n\tBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t return (this[offset] << 24) |\n\t (this[offset + 1] << 16) |\n\t (this[offset + 2] << 8) |\n\t (this[offset + 3])\n\t};\n\n\tBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n\t offset = offset >>> 0;\n\t validateNumber(offset, 'offset');\n\t const first = this[offset];\n\t const last = this[offset + 7];\n\t if (first === undefined || last === undefined) {\n\t boundsError(offset, this.length - 8);\n\t }\n\n\t const val = this[offset + 4] +\n\t this[offset + 5] * 2 ** 8 +\n\t this[offset + 6] * 2 ** 16 +\n\t (last << 24); // Overflow\n\n\t return (BigInt(val) << BigInt(32)) +\n\t BigInt(first +\n\t this[++offset] * 2 ** 8 +\n\t this[++offset] * 2 ** 16 +\n\t this[++offset] * 2 ** 24)\n\t});\n\n\tBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n\t offset = offset >>> 0;\n\t validateNumber(offset, 'offset');\n\t const first = this[offset];\n\t const last = this[offset + 7];\n\t if (first === undefined || last === undefined) {\n\t boundsError(offset, this.length - 8);\n\t }\n\n\t const val = (first << 24) + // Overflow\n\t this[++offset] * 2 ** 16 +\n\t this[++offset] * 2 ** 8 +\n\t this[++offset];\n\n\t return (BigInt(val) << BigInt(32)) +\n\t BigInt(this[++offset] * 2 ** 24 +\n\t this[++offset] * 2 ** 16 +\n\t this[++offset] * 2 ** 8 +\n\t last)\n\t});\n\n\tBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 4, this.length);\n\t return ieee754$1.read(this, offset, true, 23, 4)\n\t};\n\n\tBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 4, this.length);\n\t return ieee754$1.read(this, offset, false, 23, 4)\n\t};\n\n\tBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 8, this.length);\n\t return ieee754$1.read(this, offset, true, 52, 8)\n\t};\n\n\tBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n\t offset = offset >>> 0;\n\t if (!noAssert) checkOffset(offset, 8, this.length);\n\t return ieee754$1.read(this, offset, false, 52, 8)\n\t};\n\n\tfunction checkInt (buf, value, offset, ext, max, min) {\n\t if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n\t if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n\t if (offset + ext > buf.length) throw new RangeError('Index out of range')\n\t}\n\n\tBuffer.prototype.writeUintLE =\n\tBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t byteLength = byteLength >>> 0;\n\t if (!noAssert) {\n\t const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n\t checkInt(this, value, offset, byteLength, maxBytes, 0);\n\t }\n\n\t let mul = 1;\n\t let i = 0;\n\t this[offset] = value & 0xFF;\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t this[offset + i] = (value / mul) & 0xFF;\n\t }\n\n\t return offset + byteLength\n\t};\n\n\tBuffer.prototype.writeUintBE =\n\tBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t byteLength = byteLength >>> 0;\n\t if (!noAssert) {\n\t const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n\t checkInt(this, value, offset, byteLength, maxBytes, 0);\n\t }\n\n\t let i = byteLength - 1;\n\t let mul = 1;\n\t this[offset + i] = value & 0xFF;\n\t while (--i >= 0 && (mul *= 0x100)) {\n\t this[offset + i] = (value / mul) & 0xFF;\n\t }\n\n\t return offset + byteLength\n\t};\n\n\tBuffer.prototype.writeUint8 =\n\tBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);\n\t this[offset] = (value & 0xff);\n\t return offset + 1\n\t};\n\n\tBuffer.prototype.writeUint16LE =\n\tBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\t this[offset] = (value & 0xff);\n\t this[offset + 1] = (value >>> 8);\n\t return offset + 2\n\t};\n\n\tBuffer.prototype.writeUint16BE =\n\tBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\t this[offset] = (value >>> 8);\n\t this[offset + 1] = (value & 0xff);\n\t return offset + 2\n\t};\n\n\tBuffer.prototype.writeUint32LE =\n\tBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\t this[offset + 3] = (value >>> 24);\n\t this[offset + 2] = (value >>> 16);\n\t this[offset + 1] = (value >>> 8);\n\t this[offset] = (value & 0xff);\n\t return offset + 4\n\t};\n\n\tBuffer.prototype.writeUint32BE =\n\tBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\t this[offset] = (value >>> 24);\n\t this[offset + 1] = (value >>> 16);\n\t this[offset + 2] = (value >>> 8);\n\t this[offset + 3] = (value & 0xff);\n\t return offset + 4\n\t};\n\n\tfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n\t checkIntBI(value, min, max, buf, offset, 7);\n\n\t let lo = Number(value & BigInt(0xffffffff));\n\t buf[offset++] = lo;\n\t lo = lo >> 8;\n\t buf[offset++] = lo;\n\t lo = lo >> 8;\n\t buf[offset++] = lo;\n\t lo = lo >> 8;\n\t buf[offset++] = lo;\n\t let hi = Number(value >> BigInt(32) & BigInt(0xffffffff));\n\t buf[offset++] = hi;\n\t hi = hi >> 8;\n\t buf[offset++] = hi;\n\t hi = hi >> 8;\n\t buf[offset++] = hi;\n\t hi = hi >> 8;\n\t buf[offset++] = hi;\n\t return offset\n\t}\n\n\tfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n\t checkIntBI(value, min, max, buf, offset, 7);\n\n\t let lo = Number(value & BigInt(0xffffffff));\n\t buf[offset + 7] = lo;\n\t lo = lo >> 8;\n\t buf[offset + 6] = lo;\n\t lo = lo >> 8;\n\t buf[offset + 5] = lo;\n\t lo = lo >> 8;\n\t buf[offset + 4] = lo;\n\t let hi = Number(value >> BigInt(32) & BigInt(0xffffffff));\n\t buf[offset + 3] = hi;\n\t hi = hi >> 8;\n\t buf[offset + 2] = hi;\n\t hi = hi >> 8;\n\t buf[offset + 1] = hi;\n\t hi = hi >> 8;\n\t buf[offset] = hi;\n\t return offset + 8\n\t}\n\n\tBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n\t return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n\t});\n\n\tBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n\t return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n\t});\n\n\tBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) {\n\t const limit = Math.pow(2, (8 * byteLength) - 1);\n\n\t checkInt(this, value, offset, byteLength, limit - 1, -limit);\n\t }\n\n\t let i = 0;\n\t let mul = 1;\n\t let sub = 0;\n\t this[offset] = value & 0xFF;\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n\t sub = 1;\n\t }\n\t this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n\t }\n\n\t return offset + byteLength\n\t};\n\n\tBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) {\n\t const limit = Math.pow(2, (8 * byteLength) - 1);\n\n\t checkInt(this, value, offset, byteLength, limit - 1, -limit);\n\t }\n\n\t let i = byteLength - 1;\n\t let mul = 1;\n\t let sub = 0;\n\t this[offset + i] = value & 0xFF;\n\t while (--i >= 0 && (mul *= 0x100)) {\n\t if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n\t sub = 1;\n\t }\n\t this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n\t }\n\n\t return offset + byteLength\n\t};\n\n\tBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);\n\t if (value < 0) value = 0xff + value + 1;\n\t this[offset] = (value & 0xff);\n\t return offset + 1\n\t};\n\n\tBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n\t this[offset] = (value & 0xff);\n\t this[offset + 1] = (value >>> 8);\n\t return offset + 2\n\t};\n\n\tBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n\t this[offset] = (value >>> 8);\n\t this[offset + 1] = (value & 0xff);\n\t return offset + 2\n\t};\n\n\tBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n\t this[offset] = (value & 0xff);\n\t this[offset + 1] = (value >>> 8);\n\t this[offset + 2] = (value >>> 16);\n\t this[offset + 3] = (value >>> 24);\n\t return offset + 4\n\t};\n\n\tBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n\t if (value < 0) value = 0xffffffff + value + 1;\n\t this[offset] = (value >>> 24);\n\t this[offset + 1] = (value >>> 16);\n\t this[offset + 2] = (value >>> 8);\n\t this[offset + 3] = (value & 0xff);\n\t return offset + 4\n\t};\n\n\tBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n\t return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n\t});\n\n\tBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n\t return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n\t});\n\n\tfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n\t if (offset + ext > buf.length) throw new RangeError('Index out of range')\n\t if (offset < 0) throw new RangeError('Index out of range')\n\t}\n\n\tfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) {\n\t checkIEEE754(buf, value, offset, 4);\n\t }\n\t ieee754$1.write(buf, value, offset, littleEndian, 23, 4);\n\t return offset + 4\n\t}\n\n\tBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n\t return writeFloat(this, value, offset, true, noAssert)\n\t};\n\n\tBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n\t return writeFloat(this, value, offset, false, noAssert)\n\t};\n\n\tfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n\t value = +value;\n\t offset = offset >>> 0;\n\t if (!noAssert) {\n\t checkIEEE754(buf, value, offset, 8);\n\t }\n\t ieee754$1.write(buf, value, offset, littleEndian, 52, 8);\n\t return offset + 8\n\t}\n\n\tBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n\t return writeDouble(this, value, offset, true, noAssert)\n\t};\n\n\tBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n\t return writeDouble(this, value, offset, false, noAssert)\n\t};\n\n\t// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\n\tBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n\t if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n\t if (!start) start = 0;\n\t if (!end && end !== 0) end = this.length;\n\t if (targetStart >= target.length) targetStart = target.length;\n\t if (!targetStart) targetStart = 0;\n\t if (end > 0 && end < start) end = start;\n\n\t // Copy 0 bytes; we're done\n\t if (end === start) return 0\n\t if (target.length === 0 || this.length === 0) return 0\n\n\t // Fatal error conditions\n\t if (targetStart < 0) {\n\t throw new RangeError('targetStart out of bounds')\n\t }\n\t if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n\t if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n\t // Are we oob?\n\t if (end > this.length) end = this.length;\n\t if (target.length - targetStart < end - start) {\n\t end = target.length - targetStart + start;\n\t }\n\n\t const len = end - start;\n\n\t if (this === target && typeof GlobalUint8Array.prototype.copyWithin === 'function') {\n\t // Use built-in when available, missing from IE11\n\t this.copyWithin(targetStart, start, end);\n\t } else {\n\t GlobalUint8Array.prototype.set.call(\n\t target,\n\t this.subarray(start, end),\n\t targetStart\n\t );\n\t }\n\n\t return len\n\t};\n\n\t// Usage:\n\t// buffer.fill(number[, offset[, end]])\n\t// buffer.fill(buffer[, offset[, end]])\n\t// buffer.fill(string[, offset[, end]][, encoding])\n\tBuffer.prototype.fill = function fill (val, start, end, encoding) {\n\t // Handle string cases:\n\t if (typeof val === 'string') {\n\t if (typeof start === 'string') {\n\t encoding = start;\n\t start = 0;\n\t end = this.length;\n\t } else if (typeof end === 'string') {\n\t encoding = end;\n\t end = this.length;\n\t }\n\t if (encoding !== undefined && typeof encoding !== 'string') {\n\t throw new TypeError('encoding must be a string')\n\t }\n\t if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n\t throw new TypeError('Unknown encoding: ' + encoding)\n\t }\n\t if (val.length === 1) {\n\t const code = val.charCodeAt(0);\n\t if ((encoding === 'utf8' && code < 128) ||\n\t encoding === 'latin1') {\n\t // Fast path: If `val` fits into a single byte, use that numeric value.\n\t val = code;\n\t }\n\t }\n\t } else if (typeof val === 'number') {\n\t val = val & 255;\n\t } else if (typeof val === 'boolean') {\n\t val = Number(val);\n\t }\n\n\t // Invalid ranges are not set to a default, so can range check early.\n\t if (start < 0 || this.length < start || this.length < end) {\n\t throw new RangeError('Out of range index')\n\t }\n\n\t if (end <= start) {\n\t return this\n\t }\n\n\t start = start >>> 0;\n\t end = end === undefined ? this.length : end >>> 0;\n\n\t if (!val) val = 0;\n\n\t let i;\n\t if (typeof val === 'number') {\n\t for (i = start; i < end; ++i) {\n\t this[i] = val;\n\t }\n\t } else {\n\t const bytes = Buffer.isBuffer(val)\n\t ? val\n\t : Buffer.from(val, encoding);\n\t const len = bytes.length;\n\t if (len === 0) {\n\t throw new TypeError('The value \"' + val +\n\t '\" is invalid for argument \"value\"')\n\t }\n\t for (i = 0; i < end - start; ++i) {\n\t this[i + start] = bytes[i % len];\n\t }\n\t }\n\n\t return this\n\t};\n\n\t// CUSTOM ERRORS\n\t// =============\n\n\t// Simplified versions from Node, changed for Buffer-only usage\n\tconst errors = {};\n\tfunction E (sym, getMessage, Base) {\n\t errors[sym] = class NodeError extends Base {\n\t constructor () {\n\t super();\n\n\t Object.defineProperty(this, 'message', {\n\t value: getMessage.apply(this, arguments),\n\t writable: true,\n\t configurable: true\n\t });\n\n\t // Add the error code to the name to include it in the stack trace.\n\t this.name = `${this.name} [${sym}]`;\n\t // Access the stack to generate the error message including the error code\n\t // from the name.\n\t this.stack; // eslint-disable-line no-unused-expressions\n\t // Reset the name to the actual name.\n\t delete this.name;\n\t }\n\n\t get code () {\n\t return sym\n\t }\n\n\t set code (value) {\n\t Object.defineProperty(this, 'code', {\n\t configurable: true,\n\t enumerable: true,\n\t value,\n\t writable: true\n\t });\n\t }\n\n\t toString () {\n\t return `${this.name} [${sym}]: ${this.message}`\n\t }\n\t };\n\t}\n\n\tE('ERR_BUFFER_OUT_OF_BOUNDS',\n\t function (name) {\n\t if (name) {\n\t return `${name} is outside of buffer bounds`\n\t }\n\n\t return 'Attempt to access memory outside buffer bounds'\n\t }, RangeError);\n\tE('ERR_INVALID_ARG_TYPE',\n\t function (name, actual) {\n\t return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n\t }, TypeError);\n\tE('ERR_OUT_OF_RANGE',\n\t function (str, range, input) {\n\t let msg = `The value of \"${str}\" is out of range.`;\n\t let received = input;\n\t if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n\t received = addNumericalSeparator(String(input));\n\t } else if (typeof input === 'bigint') {\n\t received = String(input);\n\t if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n\t received = addNumericalSeparator(received);\n\t }\n\t received += 'n';\n\t }\n\t msg += ` It must be ${range}. Received ${received}`;\n\t return msg\n\t }, RangeError);\n\n\tfunction addNumericalSeparator (val) {\n\t let res = '';\n\t let i = val.length;\n\t const start = val[0] === '-' ? 1 : 0;\n\t for (; i >= start + 4; i -= 3) {\n\t res = `_${val.slice(i - 3, i)}${res}`;\n\t }\n\t return `${val.slice(0, i)}${res}`\n\t}\n\n\t// CHECK FUNCTIONS\n\t// ===============\n\n\tfunction checkBounds (buf, offset, byteLength) {\n\t validateNumber(offset, 'offset');\n\t if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n\t boundsError(offset, buf.length - (byteLength + 1));\n\t }\n\t}\n\n\tfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n\t if (value > max || value < min) {\n\t const n = typeof min === 'bigint' ? 'n' : '';\n\t let range;\n\t if (byteLength > 3) {\n\t if (min === 0 || min === BigInt(0)) {\n\t range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`;\n\t } else {\n\t range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n\t `${(byteLength + 1) * 8 - 1}${n}`;\n\t }\n\t } else {\n\t range = `>= ${min}${n} and <= ${max}${n}`;\n\t }\n\t throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n\t }\n\t checkBounds(buf, offset, byteLength);\n\t}\n\n\tfunction validateNumber (value, name) {\n\t if (typeof value !== 'number') {\n\t throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n\t }\n\t}\n\n\tfunction boundsError (value, length, type) {\n\t if (Math.floor(value) !== value) {\n\t validateNumber(value, type);\n\t throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n\t }\n\n\t if (length < 0) {\n\t throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n\t }\n\n\t throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n\t `>= ${type ? 1 : 0} and <= ${length}`,\n\t value)\n\t}\n\n\t// HELPER FUNCTIONS\n\t// ================\n\n\tconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g;\n\n\tfunction base64clean (str) {\n\t // Node takes equal signs as end of the Base64 encoding\n\t str = str.split('=')[0];\n\t // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n\t str = str.trim().replace(INVALID_BASE64_RE, '');\n\t // Node converts strings with length < 2 to ''\n\t if (str.length < 2) return ''\n\t // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n\t while (str.length % 4 !== 0) {\n\t str = str + '=';\n\t }\n\t return str\n\t}\n\n\tfunction utf8ToBytes (string, units) {\n\t units = units || Infinity;\n\t let codePoint;\n\t const length = string.length;\n\t let leadSurrogate = null;\n\t const bytes = [];\n\n\t for (let i = 0; i < length; ++i) {\n\t codePoint = string.charCodeAt(i);\n\n\t // is surrogate component\n\t if (codePoint > 0xD7FF && codePoint < 0xE000) {\n\t // last char was a lead\n\t if (!leadSurrogate) {\n\t // no lead yet\n\t if (codePoint > 0xDBFF) {\n\t // unexpected trail\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t continue\n\t } else if (i + 1 === length) {\n\t // unpaired lead\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t continue\n\t }\n\n\t // valid lead\n\t leadSurrogate = codePoint;\n\n\t continue\n\t }\n\n\t // 2 leads in a row\n\t if (codePoint < 0xDC00) {\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t leadSurrogate = codePoint;\n\t continue\n\t }\n\n\t // valid surrogate pair\n\t codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n\t } else if (leadSurrogate) {\n\t // valid bmp char, but last char was a lead\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t }\n\n\t leadSurrogate = null;\n\n\t // encode utf8\n\t if (codePoint < 0x80) {\n\t if ((units -= 1) < 0) break\n\t bytes.push(codePoint);\n\t } else if (codePoint < 0x800) {\n\t if ((units -= 2) < 0) break\n\t bytes.push(\n\t codePoint >> 0x6 | 0xC0,\n\t codePoint & 0x3F | 0x80\n\t );\n\t } else if (codePoint < 0x10000) {\n\t if ((units -= 3) < 0) break\n\t bytes.push(\n\t codePoint >> 0xC | 0xE0,\n\t codePoint >> 0x6 & 0x3F | 0x80,\n\t codePoint & 0x3F | 0x80\n\t );\n\t } else if (codePoint < 0x110000) {\n\t if ((units -= 4) < 0) break\n\t bytes.push(\n\t codePoint >> 0x12 | 0xF0,\n\t codePoint >> 0xC & 0x3F | 0x80,\n\t codePoint >> 0x6 & 0x3F | 0x80,\n\t codePoint & 0x3F | 0x80\n\t );\n\t } else {\n\t throw new Error('Invalid code point')\n\t }\n\t }\n\n\t return bytes\n\t}\n\n\tfunction asciiToBytes (str) {\n\t const byteArray = [];\n\t for (let i = 0; i < str.length; ++i) {\n\t // Node's code seems to be doing this and not & 0x7F..\n\t byteArray.push(str.charCodeAt(i) & 0xFF);\n\t }\n\t return byteArray\n\t}\n\n\tfunction utf16leToBytes (str, units) {\n\t let c, hi, lo;\n\t const byteArray = [];\n\t for (let i = 0; i < str.length; ++i) {\n\t if ((units -= 2) < 0) break\n\n\t c = str.charCodeAt(i);\n\t hi = c >> 8;\n\t lo = c % 256;\n\t byteArray.push(lo);\n\t byteArray.push(hi);\n\t }\n\n\t return byteArray\n\t}\n\n\tfunction base64ToBytes (str) {\n\t return base64.toByteArray(base64clean(str))\n\t}\n\n\tfunction blitBuffer (src, dst, offset, length) {\n\t let i;\n\t for (i = 0; i < length; ++i) {\n\t if ((i + offset >= dst.length) || (i >= src.length)) break\n\t dst[i + offset] = src[i];\n\t }\n\t return i\n\t}\n\n\t// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n\t// the `instanceof` check but they should be treated as of that type.\n\t// See: https://github.com/feross/buffer/issues/166\n\tfunction isInstance (obj, type) {\n\t return obj instanceof type ||\n\t (obj != null && obj.constructor != null && obj.constructor.name != null &&\n\t obj.constructor.name === type.name)\n\t}\n\tfunction numberIsNaN (obj) {\n\t // For IE11 support\n\t return obj !== obj // eslint-disable-line no-self-compare\n\t}\n\n\t// Create lookup table for `toString('hex')`\n\t// See: https://github.com/feross/buffer/issues/219\n\tconst hexSliceLookupTable = (function () {\n\t const alphabet = '0123456789abcdef';\n\t const table = new Array(256);\n\t for (let i = 0; i < 16; ++i) {\n\t const i16 = i * 16;\n\t for (let j = 0; j < 16; ++j) {\n\t table[i16 + j] = alphabet[i] + alphabet[j];\n\t }\n\t }\n\t return table\n\t})();\n\n\t// Return not function with Error if BigInt not supported\n\tfunction defineBigIntMethod (fn) {\n\t return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n\t}\n\n\tfunction BufferBigIntNotDefined () {\n\t throw new Error('BigInt not supported')\n\t} \n} (buffer));\n\nconst Buffer = buffer.Buffer;\n\nconst Blob = buffer.Blob;\nconst BlobOptions = buffer.BlobOptions;\nconst Buffer$1 = buffer.Buffer;\nconst File = buffer.File;\nconst FileOptions = buffer.FileOptions;\nconst INSPECT_MAX_BYTES = buffer.INSPECT_MAX_BYTES;\nconst SlowBuffer = buffer.SlowBuffer;\nconst TranscodeEncoding = buffer.TranscodeEncoding;\nconst atob = buffer.atob;\nconst btoa = buffer.btoa;\nconst constants = buffer.constants;\nconst isAscii = buffer.isAscii;\nconst isUtf8 = buffer.isUtf8;\nconst kMaxLength = buffer.kMaxLength;\nconst kStringMaxLength = buffer.kStringMaxLength;\nconst resolveObjectURL = buffer.resolveObjectURL;\nconst transcode = buffer.transcode;\nexport { Blob, BlobOptions, Buffer$1 as Buffer, File, FileOptions, INSPECT_MAX_BYTES, SlowBuffer, TranscodeEncoding, atob, btoa, constants, Buffer as default, isAscii, isUtf8, kMaxLength, kStringMaxLength, resolveObjectURL, transcode };\n//# sourceMappingURL=index.js.map\n","/*\n *\n * Hedera Wallet Connect\n *\n * Copyright (C) 2023 Hedera Hashgraph, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n/**\n * Enum representing different Hedera network chain IDs.\n *\n * @see {@link https://github.com/hashgraph/hedera-improvement-proposal/blob/main/HIP/hip-820.md#specification | HIP-820 Specification}\n */\nexport var HederaChainId;\n(function (HederaChainId) {\n HederaChainId[\"Mainnet\"] = \"hedera:mainnet\";\n HederaChainId[\"Testnet\"] = \"hedera:testnet\";\n HederaChainId[\"Previewnet\"] = \"hedera:previewnet\";\n HederaChainId[\"Devnet\"] = \"hedera:devnet\";\n})(HederaChainId || (HederaChainId = {}));\n","/*\n *\n * Hedera Wallet Connect\n *\n * Copyright (C) 2023 Hedera Hashgraph, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n/**\n * Represents different events related to a Hedera session.\n */\nexport var HederaSessionEvent;\n(function (HederaSessionEvent) {\n HederaSessionEvent[\"AccountsChanged\"] = \"accountsChanged\";\n HederaSessionEvent[\"ChainChanged\"] = \"chainChanged\";\n})(HederaSessionEvent || (HederaSessionEvent = {}));\n","/*\n *\n * Hedera Wallet Connect\n *\n * Copyright (C) 2023 Hedera Hashgraph, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n/**\n * Enum representing different JSON-RPC methods related to Hedera.\n * The methods are ordered alphabetically for ease of use and readability.\n */\nexport var HederaJsonRpcMethod;\n(function (HederaJsonRpcMethod) {\n HederaJsonRpcMethod[\"GetNodeAddresses\"] = \"hedera_getNodeAddresses\";\n HederaJsonRpcMethod[\"ExecuteTransaction\"] = \"hedera_executeTransaction\";\n HederaJsonRpcMethod[\"SignMessage\"] = \"hedera_signMessage\";\n HederaJsonRpcMethod[\"SignAndExecuteQuery\"] = \"hedera_signAndExecuteQuery\";\n HederaJsonRpcMethod[\"SignAndExecuteTransaction\"] = \"hedera_signAndExecuteTransaction\";\n HederaJsonRpcMethod[\"SignTransaction\"] = \"hedera_signTransaction\";\n})(HederaJsonRpcMethod || (HederaJsonRpcMethod = {}));\n","/*\n *\n * Hedera Wallet Connect\n *\n * Copyright (C) 2023 Hedera Hashgraph, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nimport { Buffer } from 'buffer';\nimport { AccountId, Transaction, LedgerId, Query, } from '@hashgraph/sdk';\nimport { proto } from '@hashgraph/proto';\n/**\n * Freezes a transaction if it is not already frozen. Transactions must\n * be frozen before they can be converted to bytes.\n *\n * @param transaction - Any instance of a class that extends `Transaction`\n */\nexport function freezeTransaction(transaction) {\n if (!transaction.isFrozen())\n transaction.freeze();\n}\n/**\n * Sets default consensus nodes that a transaction will be submitted to. Node Account ID(s)\n * must be set before a transaction can be frozen. If they have already been set, this\n * function will not modify the transaction.\n * @param transaction - any instance of a class that extends `Transaction`\n *\n * @see {@link https://docs.hedera.com/hedera/networks/testnet/testnet-nodes | Full list of Testnet-nodes}\n * @see {@link https://docs.hedera.com/hedera/networks/mainnet/mainnet-nodes | Full list of Mainnet-nodes}\n */\nexport function setDefaultNodeAccountIds(transaction) {\n const isNodeAccountIdNotSet = !transaction.nodeAccountIds || transaction.nodeAccountIds.length === 0;\n if (!transaction.isFrozen() && isNodeAccountIdNotSet)\n transaction.setNodeAccountIds([new AccountId(3), new AccountId(4), new AccountId(5)]);\n}\n/**\n * Converts `Transaction` to a Base64-string.\n *\n * First converts a transaction to bytes and then encodes it as a Base64-string. Will attempt\n * to set default Node Account ID and freeze the transaction before converting.\n * @param transaction - Any instance of a class that extends `Transaction`\n * @returns Base64 encoded representation of the input `Transaction` object\n */\nexport function transactionToBase64String(transaction) {\n setDefaultNodeAccountIds(transaction);\n freezeTransaction(transaction);\n const transactionBytes = transaction.toBytes();\n return Buffer.from(transactionBytes).toString('base64');\n}\n/**\n * Recreates a `Transaction` from a base64 encoded string.\n *\n * Decodes the string to a buffer,\n * then passes to `Transaction.fromBytes`. For greater flexibility, this function uses the base\n * `Transaction` class, but takes an optional type parameter if the type of transaction is known,\n * allowing stronger typeing.\n * @param transactionBytes - a base64 encoded string\n * @returns `Transaction`\n * @example\n * ```ts\n * const txn1 = base64StringToTransaction(bytesString)\n * const txn2 = base64StringToTransaction(bytesString)\n * // txn1 type: Transaction\n * // txn2 type: TransferTransaction\n * ```\n */\nexport function base64StringToTransaction(transactionBytes) {\n const decoded = Buffer.from(transactionBytes, 'base64');\n return Transaction.fromBytes(decoded);\n}\n/**\n * @param transaction - a base64 encoded string of proto.TransactionBody.encode().finish()\n * @returns `string`\n * */\nexport function transactionToTransactionBody(transaction, nodeAccountId) {\n // This is a private function, though provides the capabilities to construct a proto.TransactionBody\n //@ts-ignore\n return transaction._makeTransactionBody(nodeAccountId);\n}\nexport function transactionBodyToBase64String(transactionBody) {\n return Uint8ArrayToBase64String(proto.TransactionBody.encode(transactionBody).finish());\n}\n/**\n * @param transactionList - a proto.TransactionList object\n * @returns `string`\n * */\nexport function transactionListToBase64String(transactionList) {\n const encoded = proto.TransactionList.encode(transactionList).finish();\n return Uint8ArrayToBase64String(encoded);\n}\n/**\n * Extracts the first signature from a proto.SignatureMap object.\n * @param signatureMap - a proto.SignatureMap object\n * @returns `Uint8Array`\n * */\nexport const extractFirstSignature = (signatureMap) => {\n var _a;\n const firstPair = (_a = signatureMap === null || signatureMap === void 0 ? void 0 : signatureMap.sigPair) === null || _a === void 0 ? void 0 : _a[0];\n const firstSignature = (firstPair === null || firstPair === void 0 ? void 0 : firstPair.ed25519) || (firstPair === null || firstPair === void 0 ? void 0 : firstPair.ECDSASecp256k1) || (firstPair === null || firstPair === void 0 ? void 0 : firstPair.ECDSA_384);\n if (!firstSignature) {\n throw new Error('No signatures found in response');\n }\n return firstSignature;\n};\n/**\n * Decodes base64 encoded proto.TransactionBody bytes to a `proto.TransactionBody` object.\n *\n * @param transactionBody - a base64 encoded string of proto.TransactionBody.encode().finish()\n * @returns `Transaction`\n *\n * */\nexport function base64StringToTransactionBody(transactionBody) {\n const bytes = Buffer.from(transactionBody, 'base64');\n return proto.TransactionBody.decode(bytes);\n}\n/**\n * Converts a `proto.SignatureMap` to a base64 encoded string.\n *\n * First converts the `proto.SignatureMap` object to a JSON.\n * Then encodes the JSON to a base64 encoded string.\n * @param signatureMap - The `proto.SignatureMap` object to be converted\n * @returns Base64-encoded string representation of the input `proto.SignatureMap`\n */\nexport function signatureMapToBase64String(signatureMap) {\n const encoded = proto.SignatureMap.encode(signatureMap).finish();\n return Uint8ArrayToBase64String(encoded);\n}\n/**\n * Converts a Base64-encoded string to a `proto.SignatureMap`.\n * @param base64string - Base64-encoded string\n * @returns `proto.SignatureMap`\n */\nexport function base64StringToSignatureMap(base64string) {\n const encoded = Buffer.from(base64string, 'base64');\n return proto.SignatureMap.decode(encoded);\n}\n/**\n * Encodes the binary data represented by the `Uint8Array` to a Base64 string.\n * @param binary - The `Uint8Array` containing binary data to be converted\n * @returns Base64-encoded string representation of the input `Uint8Array`\n */\nexport function Uint8ArrayToBase64String(binary) {\n return Buffer.from(binary).toString('base64');\n}\n/**\n * Encodes the binary data represented by the `Uint8Array` to a UTF-8 string.\n * @param binary - The `Uint8Array` containing binary data to be converted\n * @returns UTF-8 string representation of the input `Uint8Array`\n */\nexport function Uint8ArrayToString(binary) {\n return Buffer.from(binary).toString('utf-8');\n}\n/**\n * Converts a Base64-encoded string to a `Uint8Array`.\n * @param base64string - Base64-encoded string to be converted\n * @returns A `Uint8Array` representing the decoded binary data\n */\nexport function base64StringToUint8Array(base64string) {\n const encoded = Buffer.from(base64string, 'base64');\n return new Uint8Array(encoded);\n}\n/**\n * Converts a `Query` object to a Base64-encoded string.\n * First utilizes the `toBytes` method of the `Query` instance to obtain its binary `Uint8Array` representation.\n * Then encodes the binary `Uint8Array` to a Base64 string representation.\n * @param query - A `Query` object to be converted\n * @returns Base64 encoded representation of the input `Query` object\n */\nexport function queryToBase64String(query) {\n const queryBytes = query.toBytes();\n return Buffer.from(queryBytes).toString('base64');\n}\n/**\n * Recreates a `Query` from a Base64-encoded string. First decodes the string to a buffer,\n * then passes to `Query.fromBytes`. For greater flexibility, this function uses the base\n * `Query` class, but takes an optional type parameter if the type of query is known,\n * allowing stronger typeing.\n * @param bytesString - Base64-encoded string\n * @returns `Query`\n * @example\n * ```ts\n * const query1 = base64StringToQuery(bytesString)\n * const query2 = base64StringToQuery(bytesString)\n * // query1 type: Query\n * // query2 type: AccountInfoQuery\n * ```\n */\nexport function base64StringToQuery(bytesString) {\n const decoded = Buffer.from(bytesString, 'base64');\n return Query.fromBytes(decoded);\n}\nexport function prefixMessageToSign(message) {\n return '\\x19Hedera Signed Message:\\n' + message.length + message;\n}\n/**\n * Incorporates additional data (salt) into the message to alter the output signature.\n * This alteration ensures that passing a transaction here for signing will yield an invalid signature,\n * as the additional data modifies the signature text.\n *\n * @param message - A plain text string\n * @returns An array of Uint8Array containing the prepared message for signing\n */\nexport function stringToSignerMessage(message) {\n return [Buffer.from(prefixMessageToSign(message))];\n}\n/**\n * This implementation expects a plain text string, which is prefixed and then signed by a wallet.\n * Because the spec calls for 1 message to be signed and 1 signer, this function expects a single\n * signature and used the first item in the sigPair array.\n *\n * @param message - A plain text string\n * @param base64SignatureMap - A base64 encoded proto.SignatureMap object\n * @param publicKey - A PublicKey object use to verify the signature\n * @returns boolean - whether or not the first signature in the sigPair is valid for the message and public key\n */\nexport function verifyMessageSignature(message, base64SignatureMap, publicKey) {\n const signatureMap = base64StringToSignatureMap(base64SignatureMap);\n const signature = signatureMap.sigPair[0].ed25519 || signatureMap.sigPair[0].ECDSASecp256k1;\n if (!signature)\n throw new Error('Signature not found in signature map');\n return publicKey.verify(Buffer.from(prefixMessageToSign(message)), signature);\n}\n/**\n * This implementation expects a plain text string, which is prefixed and then signed by a wallet.\n * Because the spec calls for 1 message to be signed and 1 signer, this function expects a single\n * signature and used the first item in the sigPair array.\n *\n * @param message - A plain text string\n * @param signerSignature - A SignerSignature object\n * @param publicKey - A PublicKey object use to verify the signature\n * @returns boolean - whether or not the first signature in the sigPair is valid for the message and public key\n */\nexport function verifySignerSignature(message, signerSignature, publicKey) {\n const signature = signerSignature.signature;\n if (!signature)\n throw new Error('Signature not found in signature map');\n return publicKey.verify(Buffer.from(prefixMessageToSign(message)), signature);\n}\n/**\n *\n * https://github.com/hashgraph/hedera-sdk-js/blob/c78512b1d43eedf1d8bf2926a5b7ed3368fc39d1/src/PublicKey.js#L258\n * a signature pair is a protobuf object with a signature and a public key, it is the responsibility of a dApp to ensure the public key matches the account id\n * @param signerSignatures - An array of `SignerSignature` objects\n * @returns `proto.SignatureMap` object\n */\nexport function signerSignaturesToSignatureMap(signerSignatures) {\n const signatureMap = proto.SignatureMap.create({\n sigPair: signerSignatures.map((s) => s.publicKey._toProtobufSignature(s.signature)),\n });\n return signatureMap;\n}\n/**\n * A mapping of `LedgerId` to EIP chain id and CAIP-2 network name.\n *\n * Structure: [`LedgerId`, `number` (EIP155 chain id), `string` (CAIP-2 chain id)][]\n *\n * @see {@link https://namespaces.chainagnostic.org/hedera/README | Hedera Namespaces}\n * @see {@link https://hips.hedera.com/hip/hip-30 | CAIP Identifiers for the Hedera Network (HIP-30)}\n */\nexport const LEDGER_ID_MAPPINGS = [\n [LedgerId.MAINNET, 295, 'hedera:mainnet'],\n [LedgerId.TESTNET, 296, 'hedera:testnet'],\n [LedgerId.PREVIEWNET, 297, 'hedera:previewnet'],\n [LedgerId.LOCAL_NODE, 298, 'hedera:devnet'],\n];\nconst DEFAULT_LEDGER_ID = LedgerId.LOCAL_NODE;\nconst DEFAULT_EIP = LEDGER_ID_MAPPINGS[3][1];\nconst DEFAULT_CAIP = LEDGER_ID_MAPPINGS[3][2];\n/**\n * Converts an EIP chain id to a LedgerId object.\n *\n * If no mapping is found, returns `LedgerId.LOCAL_NODE`.\n *\n * @param chainId - The EIP chain ID (number) to be converted\n * @returns A `LedgerId` corresponding to the provided chain ID\n * @example\n * ```ts\n * const localnodeLedgerId = EIPChainIdToLedgerId(298)\n * console.log(localnodeLedgerId) // LedgerId.LOCAL_NODE\n * const mainnetLedgerId = EIPChainIdToLedgerId(295)\n * console.log(mainnetLedgerId) // LedgerId.MAINNET\n * ```\n */\nexport function EIPChainIdToLedgerId(chainId) {\n for (let i = 0; i < LEDGER_ID_MAPPINGS.length; i++) {\n const [ledgerId, chainId_] = LEDGER_ID_MAPPINGS[i];\n if (chainId === chainId_) {\n return ledgerId;\n }\n }\n return DEFAULT_LEDGER_ID;\n}\n/**\n * Converts a LedgerId object to an EIP chain id.\n *\n * If no mapping is found, returns the EIP chain id for `LedgerId.LOCAL_NODE`.\n *\n * @param ledgerId - The `LedgerId` object to be converted\n * @returns A `number` representing the EIP chain id for the provided `LedgerId`\n * @example\n * ```ts\n * const previewnetChainId = ledgerIdToEIPChainId(LedgerId.PREVIEWNET)\n * console.log(previewnetChainId) // 297\n * const testnetChainId = ledgerIdToEIPChainId(LedgerId.TESTNET)\n * console.log(testnetChainId) // 296\n * ```\n */\nexport function ledgerIdToEIPChainId(ledgerId) {\n for (let i = 0; i < LEDGER_ID_MAPPINGS.length; i++) {\n const [ledgerId_, chainId] = LEDGER_ID_MAPPINGS[i];\n if (ledgerId === ledgerId_) {\n return chainId;\n }\n }\n return DEFAULT_EIP;\n}\n/**\n * Converts a network name to an EIP chain id.\n * If no mapping is found, returns the EIP chain id for `LedgerId.LOCAL_NODE`.\n *\n * @param networkName - The network name (string) to be converted\n * @returns A `number` representing the EIP chain id for the provided network name\n * @example\n * ```ts\n * const mainnetChainId = networkNameToEIPChainId('mainnet')\n * console.log(mainnetChainId) // 295\n * const testnetChainId = networkNameToEIPChainId('testnet')\n * console.log(mainnetChainId) // 296\n * ```\n */\nexport function networkNameToEIPChainId(networkName) {\n const ledgerId = LedgerId.fromString(networkName.toLowerCase());\n return ledgerIdToEIPChainId(ledgerId);\n}\n/**\n * Converts a CAIP chain id to a LedgerId object.\n *\n * If no mapping is found, returns `LedgerId.LOCAL_NODE`.\n *\n * @param chainId - The CAIP chain ID (string) to be converted\n * @returns A `LedgerId` corresponding to the provided CAIP chain ID\n * @example\n * ```ts\n * const previewnetLedgerId = CAIPChainIdToLedgerId(HederaChainId.Previewnet)\n * console.log(previewnetLedgerId) // LedgerId.PREVIEWNET\n * const testnetLedgerId = CAIPChainIdToLedgerId(HederaChainId.Testnet)\n * console.log(testnetLedgerId) // LedgerId.TESTNET\n * ```\n */\nexport function CAIPChainIdToLedgerId(chainId) {\n for (let i = 0; i < LEDGER_ID_MAPPINGS.length; i++) {\n const [ledgerId, _, chainId_] = LEDGER_ID_MAPPINGS[i];\n if (chainId === chainId_) {\n return ledgerId;\n }\n }\n return DEFAULT_LEDGER_ID;\n}\n/**\n * Converts a LedgerId object to a CAIP chain id.\n *\n * If no mapping is found, returns the CAIP chain id for `LedgerId.LOCAL_NODE`.\n *\n * @param ledgerId - The `LedgerId` object to be converted\n * @returns A `string` representing the CAIP chain id for the provided `LedgerId`\n * @example\n * ```ts\n * const mainnetChainId = ledgerIdToCAIPChainId(HederaChainId.Mainnet)\n * console.log(mainnetChainId) // LedgerId.PREVIEWNET\n * const testnetChainId = ledgerIdToCAIPChainId(HederaChainId.Testnet)\n * console.log(testnetChainId) // LedgerId.TESTNET\n * ```\n */\nexport function ledgerIdToCAIPChainId(ledgerId) {\n for (let i = 0; i < LEDGER_ID_MAPPINGS.length; i++) {\n const [ledgerId_, _, chainId] = LEDGER_ID_MAPPINGS[i];\n if (ledgerId.toString() === ledgerId_.toString()) {\n return chainId;\n }\n }\n return DEFAULT_CAIP;\n}\n/**\n * Converts a network name to a CAIP chain id.\n *\n * If no mapping is found, returns the CAIP chain id for `LedgerId.LOCAL_NODE`.\n *\n * @param networkName - The network name (string) to be converted\n * @returns A `string` representing the CAIP chain id for the provided network name\n * @example\n * ```ts\n * const previewnetChainId = networkNameToCAIPChainId('previewnet')\n * console.log(previewnetChainId) // HederaChainId.Previewnet\n * const devnetChainId = networkNameToCAIPChainId('devnet')\n * console.log(devnetChainId) // HederaChainId.Devnet\n * ```\n */\nexport function networkNameToCAIPChainId(networkName) {\n const ledgerId = LedgerId.fromString(networkName.toLowerCase());\n const chainId = ledgerIdToCAIPChainId(ledgerId);\n return chainId;\n}\n/**\n * Create a `ProposalTypes.RequiredNamespaces` object for a given ledgerId.\n *\n * @param ledgerId - The `LedgerId` for which the namespaces are created\n * @param methods - An array of strings representing methods\n * @param events - An array of strings representing events\n * @returns A `ProposalTypes.RequiredNamespaces` object\n */\nexport const networkNamespaces = (ledgerId, methods, events) => ({\n hedera: {\n chains: [ledgerIdToCAIPChainId(ledgerId)],\n methods,\n events,\n },\n});\n/**\n * Get the account and ledger from a `SessionTypes.Struct` object.\n *\n * @param session - The `SessionTypes.Struct` object containing namespaces\n * @returns `ProposalTypes.RequiredNamespaces` - an array of objects containing network (LedgerId) and account (AccountId)\n */\nexport const accountAndLedgerFromSession = (session) => {\n const hederaNamespace = session.namespaces.hedera;\n if (!hederaNamespace)\n throw new Error('No hedera namespace found');\n return hederaNamespace.accounts.map((account) => {\n const [chain, network, acc] = account.split(':');\n return {\n network: CAIPChainIdToLedgerId(chain + ':' + network),\n account: AccountId.fromString(acc),\n };\n });\n};\n","export var EVENTS;\n(function (EVENTS) {\n EVENTS[\"extensionQuery\"] = \"hedera-extension-query\";\n EVENTS[\"extensionConnect\"] = \"hedera-extension-connect-\";\n EVENTS[\"extensionOpen\"] = \"hedera-extension-open-\";\n EVENTS[\"extensionResponse\"] = \"hedera-extension-response\";\n EVENTS[\"iframeQuery\"] = \"hedera-iframe-query\";\n EVENTS[\"iframeQueryResponse\"] = \"hedera-iframe-response\";\n EVENTS[\"iframeConnect\"] = \"hedera-iframe-connect\";\n})(EVENTS || (EVENTS = {}));\nexport const findExtensions = (onFound) => {\n if (typeof window === 'undefined')\n return;\n window.addEventListener('message', (event) => {\n var _a, _b;\n if (((_a = event === null || event === void 0 ? void 0 : event.data) === null || _a === void 0 ? void 0 : _a.type) == EVENTS.extensionResponse && event.data.metadata) {\n onFound(event.data.metadata, false);\n }\n if (((_b = event === null || event === void 0 ? void 0 : event.data) === null || _b === void 0 ? void 0 : _b.type) == EVENTS.iframeQueryResponse && event.data.metadata) {\n onFound(event.data.metadata, true);\n }\n });\n setTimeout(() => {\n extensionQuery();\n }, 200);\n};\nexport const extensionQuery = () => {\n window.postMessage({ type: EVENTS.extensionQuery }, '*');\n if (window.parent) {\n window.parent.postMessage({ type: EVENTS.iframeQuery }, '*');\n }\n};\nexport const extensionConnect = (id, isIframe, pairingString) => {\n if (isIframe) {\n window.parent.postMessage({ type: EVENTS.iframeConnect, pairingString }, '*');\n return;\n }\n window.postMessage({ type: EVENTS.extensionConnect + id, pairingString }, '*');\n};\nexport const extensionOpen = (id) => {\n window.postMessage({ type: EVENTS.extensionOpen + id }, '*');\n};\n","'use strict'\nfunction tryStringify (o) {\n try { return JSON.stringify(o) } catch(e) { return '\"[Circular]\"' }\n}\n\nmodule.exports = format\n\nfunction format(f, args, opts) {\n var ss = (opts && opts.stringify) || tryStringify\n var offset = 1\n if (typeof f === 'object' && f !== null) {\n var len = args.length + offset\n if (len === 1) return f\n var objects = new Array(len)\n objects[0] = ss(f)\n for (var index = 1; index < len; index++) {\n objects[index] = ss(args[index])\n }\n return objects.join(' ')\n }\n if (typeof f !== 'string') {\n return f\n }\n var argLen = args.length\n if (argLen === 0) return f\n var str = ''\n var a = 1 - offset\n var lastPos = -1\n var flen = (f && f.length) || 0\n for (var i = 0; i < flen;) {\n if (f.charCodeAt(i) === 37 && i + 1 < flen) {\n lastPos = lastPos > -1 ? lastPos : 0\n switch (f.charCodeAt(i + 1)) {\n case 100: // 'd'\n case 102: // 'f'\n if (a >= argLen)\n break\n if (args[a] == null) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += Number(args[a])\n lastPos = i + 2\n i++\n break\n case 105: // 'i'\n if (a >= argLen)\n break\n if (args[a] == null) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += Math.floor(Number(args[a]))\n lastPos = i + 2\n i++\n break\n case 79: // 'O'\n case 111: // 'o'\n case 106: // 'j'\n if (a >= argLen)\n break\n if (args[a] === undefined) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n var type = typeof args[a]\n if (type === 'string') {\n str += '\\'' + args[a] + '\\''\n lastPos = i + 2\n i++\n break\n }\n if (type === 'function') {\n str += args[a].name || ''\n lastPos = i + 2\n i++\n break\n }\n str += ss(args[a])\n lastPos = i + 2\n i++\n break\n case 115: // 's'\n if (a >= argLen)\n break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += String(args[a])\n lastPos = i + 2\n i++\n break\n case 37: // '%'\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += '%'\n lastPos = i + 2\n i++\n a--\n break\n }\n ++a\n }\n ++i\n }\n if (lastPos === -1)\n return f\n else if (lastPos < flen) {\n str += f.slice(lastPos)\n }\n\n return str\n}\n","'use strict'\n\nconst format = require('quick-format-unescaped')\n\nmodule.exports = pino\n\nconst _console = pfGlobalThisOrFallback().console || {}\nconst stdSerializers = {\n mapHttpRequest: mock,\n mapHttpResponse: mock,\n wrapRequestSerializer: passthrough,\n wrapResponseSerializer: passthrough,\n wrapErrorSerializer: passthrough,\n req: mock,\n res: mock,\n err: asErrValue\n}\n\nfunction shouldSerialize (serialize, serializers) {\n if (Array.isArray(serialize)) {\n const hasToFilter = serialize.filter(function (k) {\n return k !== '!stdSerializers.err'\n })\n return hasToFilter\n } else if (serialize === true) {\n return Object.keys(serializers)\n }\n\n return false\n}\n\nfunction pino (opts) {\n opts = opts || {}\n opts.browser = opts.browser || {}\n\n const transmit = opts.browser.transmit\n if (transmit && typeof transmit.send !== 'function') { throw Error('pino: transmit option must have a send function') }\n\n const proto = opts.browser.write || _console\n if (opts.browser.write) opts.browser.asObject = true\n const serializers = opts.serializers || {}\n const serialize = shouldSerialize(opts.browser.serialize, serializers)\n let stdErrSerialize = opts.browser.serialize\n\n if (\n Array.isArray(opts.browser.serialize) &&\n opts.browser.serialize.indexOf('!stdSerializers.err') > -1\n ) stdErrSerialize = false\n\n const levels = ['error', 'fatal', 'warn', 'info', 'debug', 'trace']\n\n if (typeof proto === 'function') {\n proto.error = proto.fatal = proto.warn =\n proto.info = proto.debug = proto.trace = proto\n }\n if (opts.enabled === false) opts.level = 'silent'\n const level = opts.level || 'info'\n const logger = Object.create(proto)\n if (!logger.log) logger.log = noop\n\n Object.defineProperty(logger, 'levelVal', {\n get: getLevelVal\n })\n Object.defineProperty(logger, 'level', {\n get: getLevel,\n set: setLevel\n })\n\n const setOpts = {\n transmit,\n serialize,\n asObject: opts.browser.asObject,\n levels,\n timestamp: getTimeFunction(opts)\n }\n logger.levels = pino.levels\n logger.level = level\n\n logger.setMaxListeners = logger.getMaxListeners =\n logger.emit = logger.addListener = logger.on =\n logger.prependListener = logger.once =\n logger.prependOnceListener = logger.removeListener =\n logger.removeAllListeners = logger.listeners =\n logger.listenerCount = logger.eventNames =\n logger.write = logger.flush = noop\n logger.serializers = serializers\n logger._serialize = serialize\n logger._stdErrSerialize = stdErrSerialize\n logger.child = child\n\n if (transmit) logger._logEvent = createLogEventShape()\n\n function getLevelVal () {\n return this.level === 'silent'\n ? Infinity\n : this.levels.values[this.level]\n }\n\n function getLevel () {\n return this._level\n }\n function setLevel (level) {\n if (level !== 'silent' && !this.levels.values[level]) {\n throw Error('unknown level ' + level)\n }\n this._level = level\n\n set(setOpts, logger, 'error', 'log') // <-- must stay first\n set(setOpts, logger, 'fatal', 'error')\n set(setOpts, logger, 'warn', 'error')\n set(setOpts, logger, 'info', 'log')\n set(setOpts, logger, 'debug', 'log')\n set(setOpts, logger, 'trace', 'log')\n }\n\n function child (bindings, childOptions) {\n if (!bindings) {\n throw new Error('missing bindings for child Pino')\n }\n childOptions = childOptions || {}\n if (serialize && bindings.serializers) {\n childOptions.serializers = bindings.serializers\n }\n const childOptionsSerializers = childOptions.serializers\n if (serialize && childOptionsSerializers) {\n var childSerializers = Object.assign({}, serializers, childOptionsSerializers)\n var childSerialize = opts.browser.serialize === true\n ? Object.keys(childSerializers)\n : serialize\n delete bindings.serializers\n applySerializers([bindings], childSerialize, childSerializers, this._stdErrSerialize)\n }\n function Child (parent) {\n this._childLevel = (parent._childLevel | 0) + 1\n this.error = bind(parent, bindings, 'error')\n this.fatal = bind(parent, bindings, 'fatal')\n this.warn = bind(parent, bindings, 'warn')\n this.info = bind(parent, bindings, 'info')\n this.debug = bind(parent, bindings, 'debug')\n this.trace = bind(parent, bindings, 'trace')\n if (childSerializers) {\n this.serializers = childSerializers\n this._serialize = childSerialize\n }\n if (transmit) {\n this._logEvent = createLogEventShape(\n [].concat(parent._logEvent.bindings, bindings)\n )\n }\n }\n Child.prototype = this\n return new Child(this)\n }\n return logger\n}\n\npino.levels = {\n values: {\n fatal: 60,\n error: 50,\n warn: 40,\n info: 30,\n debug: 20,\n trace: 10\n },\n labels: {\n 10: 'trace',\n 20: 'debug',\n 30: 'info',\n 40: 'warn',\n 50: 'error',\n 60: 'fatal'\n }\n}\n\npino.stdSerializers = stdSerializers\npino.stdTimeFunctions = Object.assign({}, { nullTime, epochTime, unixTime, isoTime })\n\nfunction set (opts, logger, level, fallback) {\n const proto = Object.getPrototypeOf(logger)\n logger[level] = logger.levelVal > logger.levels.values[level]\n ? noop\n : (proto[level] ? proto[level] : (_console[level] || _console[fallback] || noop))\n\n wrap(opts, logger, level)\n}\n\nfunction wrap (opts, logger, level) {\n if (!opts.transmit && logger[level] === noop) return\n\n logger[level] = (function (write) {\n return function LOG () {\n const ts = opts.timestamp()\n const args = new Array(arguments.length)\n const proto = (Object.getPrototypeOf && Object.getPrototypeOf(this) === _console) ? _console : this\n for (var i = 0; i < args.length; i++) args[i] = arguments[i]\n\n if (opts.serialize && !opts.asObject) {\n applySerializers(args, this._serialize, this.serializers, this._stdErrSerialize)\n }\n if (opts.asObject) write.call(proto, asObject(this, level, args, ts))\n else write.apply(proto, args)\n\n if (opts.transmit) {\n const transmitLevel = opts.transmit.level || logger.level\n const transmitValue = pino.levels.values[transmitLevel]\n const methodValue = pino.levels.values[level]\n if (methodValue < transmitValue) return\n transmit(this, {\n ts,\n methodLevel: level,\n methodValue,\n transmitLevel,\n transmitValue: pino.levels.values[opts.transmit.level || logger.level],\n send: opts.transmit.send,\n val: logger.levelVal\n }, args)\n }\n }\n })(logger[level])\n}\n\nfunction asObject (logger, level, args, ts) {\n if (logger._serialize) applySerializers(args, logger._serialize, logger.serializers, logger._stdErrSerialize)\n const argsCloned = args.slice()\n let msg = argsCloned[0]\n const o = {}\n if (ts) {\n o.time = ts\n }\n o.level = pino.levels.values[level]\n let lvl = (logger._childLevel | 0) + 1\n if (lvl < 1) lvl = 1\n // deliberate, catching objects, arrays\n if (msg !== null && typeof msg === 'object') {\n while (lvl-- && typeof argsCloned[0] === 'object') {\n Object.assign(o, argsCloned.shift())\n }\n msg = argsCloned.length ? format(argsCloned.shift(), argsCloned) : undefined\n } else if (typeof msg === 'string') msg = format(argsCloned.shift(), argsCloned)\n if (msg !== undefined) o.msg = msg\n return o\n}\n\nfunction applySerializers (args, serialize, serializers, stdErrSerialize) {\n for (const i in args) {\n if (stdErrSerialize && args[i] instanceof Error) {\n args[i] = pino.stdSerializers.err(args[i])\n } else if (typeof args[i] === 'object' && !Array.isArray(args[i])) {\n for (const k in args[i]) {\n if (serialize && serialize.indexOf(k) > -1 && k in serializers) {\n args[i][k] = serializers[k](args[i][k])\n }\n }\n }\n }\n}\n\nfunction bind (parent, bindings, level) {\n return function () {\n const args = new Array(1 + arguments.length)\n args[0] = bindings\n for (var i = 1; i < args.length; i++) {\n args[i] = arguments[i - 1]\n }\n return parent[level].apply(this, args)\n }\n}\n\nfunction transmit (logger, opts, args) {\n const send = opts.send\n const ts = opts.ts\n const methodLevel = opts.methodLevel\n const methodValue = opts.methodValue\n const val = opts.val\n const bindings = logger._logEvent.bindings\n\n applySerializers(\n args,\n logger._serialize || Object.keys(logger.serializers),\n logger.serializers,\n logger._stdErrSerialize === undefined ? true : logger._stdErrSerialize\n )\n logger._logEvent.ts = ts\n logger._logEvent.messages = args.filter(function (arg) {\n // bindings can only be objects, so reference equality check via indexOf is fine\n return bindings.indexOf(arg) === -1\n })\n\n logger._logEvent.level.label = methodLevel\n logger._logEvent.level.value = methodValue\n\n send(methodLevel, logger._logEvent, val)\n\n logger._logEvent = createLogEventShape(bindings)\n}\n\nfunction createLogEventShape (bindings) {\n return {\n ts: 0,\n messages: [],\n bindings: bindings || [],\n level: { label: '', value: 0 }\n }\n}\n\nfunction asErrValue (err) {\n const obj = {\n type: err.constructor.name,\n msg: err.message,\n stack: err.stack\n }\n for (const key in err) {\n if (obj[key] === undefined) {\n obj[key] = err[key]\n }\n }\n return obj\n}\n\nfunction getTimeFunction (opts) {\n if (typeof opts.timestamp === 'function') {\n return opts.timestamp\n }\n if (opts.timestamp === false) {\n return nullTime\n }\n return epochTime\n}\n\nfunction mock () { return {} }\nfunction passthrough (a) { return a }\nfunction noop () {}\n\nfunction nullTime () { return false }\nfunction epochTime () { return Date.now() }\nfunction unixTime () { return Math.round(Date.now() / 1000.0) }\nfunction isoTime () { return new Date(Date.now()).toISOString() } // using Date.now() for testability\n\n/* eslint-disable */\n/* istanbul ignore next */\nfunction pfGlobalThisOrFallback () {\n function defd (o) { return typeof o !== 'undefined' && o }\n try {\n if (typeof globalThis !== 'undefined') return globalThis\n Object.defineProperty(Object.prototype, 'globalThis', {\n get: function () {\n delete Object.prototype.globalThis\n return (this.globalThis = this)\n },\n configurable: true\n })\n return globalThis\n } catch (e) {\n return defd(self) || defd(window) || defd(this) || {}\n }\n}\n/* eslint-enable */\n","import h,{levels as s}from\"pino\";import{default as U}from\"pino\";import{safeJsonStringify as u}from\"@walletconnect/safe-json\";const c={level:\"info\"},n=\"custom_context\",l=1e3*1024;class O{constructor(e){this.nodeValue=e,this.sizeInBytes=new TextEncoder().encode(this.nodeValue).length,this.next=null}get value(){return this.nodeValue}get size(){return this.sizeInBytes}}class d{constructor(e){this.head=null,this.tail=null,this.lengthInNodes=0,this.maxSizeInBytes=e,this.sizeInBytes=0}append(e){const t=new O(e);if(t.size>this.maxSizeInBytes)throw new Error(`[LinkedList] Value too big to insert into list: ${e} with size ${t.size}`);for(;this.size+t.size>this.maxSizeInBytes;)this.shift();this.head?(this.tail&&(this.tail.next=t),this.tail=t):(this.head=t,this.tail=t),this.lengthInNodes++,this.sizeInBytes+=t.size}shift(){if(!this.head)return;const e=this.head;this.head=this.head.next,this.head||(this.tail=null),this.lengthInNodes--,this.sizeInBytes-=e.size}toArray(){const e=[];let t=this.head;for(;t!==null;)e.push(t.value),t=t.next;return e}get length(){return this.lengthInNodes}get size(){return this.sizeInBytes}toOrderedArray(){return Array.from(this)}[Symbol.iterator](){let e=this.head;return{next:()=>{if(!e)return{done:!0,value:null};const t=e.value;return e=e.next,{done:!1,value:t}}}}}class L{constructor(e,t=l){this.level=e??\"error\",this.levelValue=s.values[this.level],this.MAX_LOG_SIZE_IN_BYTES=t,this.logs=new d(this.MAX_LOG_SIZE_IN_BYTES)}forwardToConsole(e,t){t===s.values.error?console.error(e):t===s.values.warn?console.warn(e):t===s.values.debug?console.debug(e):t===s.values.trace?console.trace(e):console.log(e)}appendToLogs(e){this.logs.append(u({timestamp:new Date().toISOString(),log:e}));const t=typeof e==\"string\"?JSON.parse(e).level:e.level;t>=this.levelValue&&this.forwardToConsole(e,t)}getLogs(){return this.logs}clearLogs(){this.logs=new d(this.MAX_LOG_SIZE_IN_BYTES)}getLogArray(){return Array.from(this.logs)}logsToBlob(e){const t=this.getLogArray();return t.push(u({extraMetadata:e})),new Blob(t,{type:\"application/json\"})}}class m{constructor(e,t=l){this.baseChunkLogger=new L(e,t)}write(e){this.baseChunkLogger.appendToLogs(e)}getLogs(){return this.baseChunkLogger.getLogs()}clearLogs(){this.baseChunkLogger.clearLogs()}getLogArray(){return this.baseChunkLogger.getLogArray()}logsToBlob(e){return this.baseChunkLogger.logsToBlob(e)}downloadLogsBlobInBrowser(e){const t=URL.createObjectURL(this.logsToBlob(e)),o=document.createElement(\"a\");o.href=t,o.download=`walletconnect-logs-${new Date().toISOString()}.txt`,document.body.appendChild(o),o.click(),document.body.removeChild(o),URL.revokeObjectURL(t)}}class B{constructor(e,t=l){this.baseChunkLogger=new L(e,t)}write(e){this.baseChunkLogger.appendToLogs(e)}getLogs(){return this.baseChunkLogger.getLogs()}clearLogs(){this.baseChunkLogger.clearLogs()}getLogArray(){return this.baseChunkLogger.getLogArray()}logsToBlob(e){return this.baseChunkLogger.logsToBlob(e)}}var x=Object.defineProperty,S=Object.defineProperties,_=Object.getOwnPropertyDescriptors,p=Object.getOwnPropertySymbols,T=Object.prototype.hasOwnProperty,z=Object.prototype.propertyIsEnumerable,f=(r,e,t)=>e in r?x(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,i=(r,e)=>{for(var t in e||(e={}))T.call(e,t)&&f(r,t,e[t]);if(p)for(var t of p(e))z.call(e,t)&&f(r,t,e[t]);return r},g=(r,e)=>S(r,_(e));function k(r){return g(i({},r),{level:r?.level||c.level})}function v(r,e=n){return r[e]||\"\"}function b(r,e,t=n){return r[t]=e,r}function y(r,e=n){let t=\"\";return typeof r.bindings>\"u\"?t=v(r,e):t=r.bindings().context||\"\",t}function w(r,e,t=n){const o=y(r,t);return o.trim()?`${o}/${e}`:e}function E(r,e,t=n){const o=w(r,e,t),a=r.child({context:o});return b(a,o,t)}function C(r){var e,t;const o=new m((e=r.opts)==null?void 0:e.level,r.maxSizeInBytes);return{logger:h(g(i({},r.opts),{level:\"trace\",browser:g(i({},(t=r.opts)==null?void 0:t.browser),{write:a=>o.write(a)})})),chunkLoggerController:o}}function I(r){var e;const t=new B((e=r.opts)==null?void 0:e.level,r.maxSizeInBytes);return{logger:h(g(i({},r.opts),{level:\"trace\"}),t),chunkLoggerController:t}}function A(r){return typeof r.loggerOverride<\"u\"&&typeof r.loggerOverride!=\"string\"?{logger:r.loggerOverride,chunkLoggerController:null}:typeof window<\"u\"?C(r):I(r)}export{l as MAX_LOG_SIZE_IN_BYTES_DEFAULT,n as PINO_CUSTOM_CONTEXT_KEY,c as PINO_LOGGER_DEFAULTS,w as formatChildLoggerContext,E as generateChildLogger,C as generateClientLogger,A as generatePlatformLogger,I as generateServerLogger,v as getBrowserLoggerContext,k as getDefaultLoggerOptions,y as getLoggerContext,U as pino,b as setBrowserLoggerContext};\n//# sourceMappingURL=index.es.js.map\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","export const PARSE_ERROR = \"PARSE_ERROR\";\nexport const INVALID_REQUEST = \"INVALID_REQUEST\";\nexport const METHOD_NOT_FOUND = \"METHOD_NOT_FOUND\";\nexport const INVALID_PARAMS = \"INVALID_PARAMS\";\nexport const INTERNAL_ERROR = \"INTERNAL_ERROR\";\nexport const SERVER_ERROR = \"SERVER_ERROR\";\nexport const RESERVED_ERROR_CODES = [-32700, -32600, -32601, -32602, -32603];\nexport const SERVER_ERROR_CODE_RANGE = [-32000, -32099];\nexport const STANDARD_ERROR_MAP = {\n [PARSE_ERROR]: { code: -32700, message: \"Parse error\" },\n [INVALID_REQUEST]: { code: -32600, message: \"Invalid Request\" },\n [METHOD_NOT_FOUND]: { code: -32601, message: \"Method not found\" },\n [INVALID_PARAMS]: { code: -32602, message: \"Invalid params\" },\n [INTERNAL_ERROR]: { code: -32603, message: \"Internal error\" },\n [SERVER_ERROR]: { code: -32000, message: \"Server error\" },\n};\nexport const DEFAULT_ERROR = SERVER_ERROR;\n//# sourceMappingURL=constants.js.map","import { SERVER_ERROR_CODE_RANGE, RESERVED_ERROR_CODES, STANDARD_ERROR_MAP, DEFAULT_ERROR, } from \"./constants\";\nexport function isServerErrorCode(code) {\n return code <= SERVER_ERROR_CODE_RANGE[0] && code >= SERVER_ERROR_CODE_RANGE[1];\n}\nexport function isReservedErrorCode(code) {\n return RESERVED_ERROR_CODES.includes(code);\n}\nexport function isValidErrorCode(code) {\n return typeof code === \"number\";\n}\nexport function getError(type) {\n if (!Object.keys(STANDARD_ERROR_MAP).includes(type)) {\n return STANDARD_ERROR_MAP[DEFAULT_ERROR];\n }\n return STANDARD_ERROR_MAP[type];\n}\nexport function getErrorByCode(code) {\n const match = Object.values(STANDARD_ERROR_MAP).find(e => e.code === code);\n if (!match) {\n return STANDARD_ERROR_MAP[DEFAULT_ERROR];\n }\n return match;\n}\nexport function validateJsonRpcError(response) {\n if (typeof response.error.code === \"undefined\") {\n return { valid: false, error: \"Missing code for JSON-RPC error\" };\n }\n if (typeof response.error.message === \"undefined\") {\n return { valid: false, error: \"Missing message for JSON-RPC error\" };\n }\n if (!isValidErrorCode(response.error.code)) {\n return {\n valid: false,\n error: `Invalid error code type for JSON-RPC: ${response.error.code}`,\n };\n }\n if (isReservedErrorCode(response.error.code)) {\n const error = getErrorByCode(response.error.code);\n if (error.message !== STANDARD_ERROR_MAP[DEFAULT_ERROR].message &&\n response.error.message === error.message) {\n return {\n valid: false,\n error: `Invalid error code message for JSON-RPC: ${response.error.code}`,\n };\n }\n }\n return { valid: true };\n}\nexport function parseConnectionError(e, url, type) {\n return e.message.includes(\"getaddrinfo ENOTFOUND\") || e.message.includes(\"connect ECONNREFUSED\")\n ? new Error(`Unavailable ${type} RPC url at ${url}`)\n : e;\n}\n//# sourceMappingURL=error.js.map","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isBrowserCryptoAvailable = exports.getSubtleCrypto = exports.getBrowerCrypto = void 0;\nfunction getBrowerCrypto() {\n return (global === null || global === void 0 ? void 0 : global.crypto) || (global === null || global === void 0 ? void 0 : global.msCrypto) || {};\n}\nexports.getBrowerCrypto = getBrowerCrypto;\nfunction getSubtleCrypto() {\n const browserCrypto = getBrowerCrypto();\n return browserCrypto.subtle || browserCrypto.webkitSubtle;\n}\nexports.getSubtleCrypto = getSubtleCrypto;\nfunction isBrowserCryptoAvailable() {\n return !!getBrowerCrypto() && !!getSubtleCrypto();\n}\nexports.isBrowserCryptoAvailable = isBrowserCryptoAvailable;\n//# sourceMappingURL=crypto.js.map","function getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nvar browser = {exports: {}};\n\n// shim for using process in browser\nvar process = browser.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\nvar browserExports = browser.exports;\nconst process$1 = /*@__PURE__*/getDefaultExportFromCjs(browserExports);\n\nexport { process$1 as default, process$1 as process };\n//# sourceMappingURL=index.js.map\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isBrowser = exports.isNode = exports.isReactNative = void 0;\nfunction isReactNative() {\n return (typeof document === \"undefined\" &&\n typeof navigator !== \"undefined\" &&\n navigator.product === \"ReactNative\");\n}\nexports.isReactNative = isReactNative;\nfunction isNode() {\n return (typeof process !== \"undefined\" &&\n typeof process.versions !== \"undefined\" &&\n typeof process.versions.node !== \"undefined\");\n}\nexports.isNode = isNode;\nfunction isBrowser() {\n return !isReactNative() && !isNode();\n}\nexports.isBrowser = isBrowser;\n//# sourceMappingURL=env.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./crypto\"), exports);\ntslib_1.__exportStar(require(\"./env\"), exports);\n//# sourceMappingURL=index.js.map","import { getError, getErrorByCode, isReservedErrorCode } from \"./error\";\nimport { INTERNAL_ERROR, SERVER_ERROR } from \"./constants\";\nexport function payloadId(entropy = 3) {\n const date = Date.now() * Math.pow(10, entropy);\n const extra = Math.floor(Math.random() * Math.pow(10, entropy));\n return date + extra;\n}\nexport function getBigIntRpcId(entropy = 6) {\n return BigInt(payloadId(entropy));\n}\nexport function formatJsonRpcRequest(method, params, id) {\n return {\n id: id || payloadId(),\n jsonrpc: \"2.0\",\n method,\n params,\n };\n}\nexport function formatJsonRpcResult(id, result) {\n return {\n id,\n jsonrpc: \"2.0\",\n result,\n };\n}\nexport function formatJsonRpcError(id, error, data) {\n return {\n id,\n jsonrpc: \"2.0\",\n error: formatErrorMessage(error, data),\n };\n}\nexport function formatErrorMessage(error, data) {\n if (typeof error === \"undefined\") {\n return getError(INTERNAL_ERROR);\n }\n if (typeof error === \"string\") {\n error = Object.assign(Object.assign({}, getError(SERVER_ERROR)), { message: error });\n }\n if (typeof data !== \"undefined\") {\n error.data = data;\n }\n if (isReservedErrorCode(error.code)) {\n error = getErrorByCode(error.code);\n }\n return error;\n}\n//# sourceMappingURL=format.js.map","export function isJsonRpcPayload(payload) {\n return (typeof payload === \"object\" &&\n \"id\" in payload &&\n \"jsonrpc\" in payload &&\n payload.jsonrpc === \"2.0\");\n}\nexport function isJsonRpcRequest(payload) {\n return isJsonRpcPayload(payload) && \"method\" in payload;\n}\nexport function isJsonRpcResponse(payload) {\n return isJsonRpcPayload(payload) && (isJsonRpcResult(payload) || isJsonRpcError(payload));\n}\nexport function isJsonRpcResult(payload) {\n return \"result\" in payload;\n}\nexport function isJsonRpcError(payload) {\n return \"error\" in payload;\n}\nexport function isJsonRpcValidationInvalid(validation) {\n return \"error\" in validation && validation.valid === false;\n}\n//# sourceMappingURL=validators.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.delay = void 0;\nfunction delay(timeout) {\n return new Promise(resolve => {\n setTimeout(() => {\n resolve(true);\n }, timeout);\n });\n}\nexports.delay = delay;\n//# sourceMappingURL=delay.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ONE_THOUSAND = exports.ONE_HUNDRED = void 0;\nexports.ONE_HUNDRED = 100;\nexports.ONE_THOUSAND = 1000;\n//# sourceMappingURL=misc.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ONE_YEAR = exports.FOUR_WEEKS = exports.THREE_WEEKS = exports.TWO_WEEKS = exports.ONE_WEEK = exports.THIRTY_DAYS = exports.SEVEN_DAYS = exports.FIVE_DAYS = exports.THREE_DAYS = exports.ONE_DAY = exports.TWENTY_FOUR_HOURS = exports.TWELVE_HOURS = exports.SIX_HOURS = exports.THREE_HOURS = exports.ONE_HOUR = exports.SIXTY_MINUTES = exports.THIRTY_MINUTES = exports.TEN_MINUTES = exports.FIVE_MINUTES = exports.ONE_MINUTE = exports.SIXTY_SECONDS = exports.THIRTY_SECONDS = exports.TEN_SECONDS = exports.FIVE_SECONDS = exports.ONE_SECOND = void 0;\nexports.ONE_SECOND = 1;\nexports.FIVE_SECONDS = 5;\nexports.TEN_SECONDS = 10;\nexports.THIRTY_SECONDS = 30;\nexports.SIXTY_SECONDS = 60;\nexports.ONE_MINUTE = exports.SIXTY_SECONDS;\nexports.FIVE_MINUTES = exports.ONE_MINUTE * 5;\nexports.TEN_MINUTES = exports.ONE_MINUTE * 10;\nexports.THIRTY_MINUTES = exports.ONE_MINUTE * 30;\nexports.SIXTY_MINUTES = exports.ONE_MINUTE * 60;\nexports.ONE_HOUR = exports.SIXTY_MINUTES;\nexports.THREE_HOURS = exports.ONE_HOUR * 3;\nexports.SIX_HOURS = exports.ONE_HOUR * 6;\nexports.TWELVE_HOURS = exports.ONE_HOUR * 12;\nexports.TWENTY_FOUR_HOURS = exports.ONE_HOUR * 24;\nexports.ONE_DAY = exports.TWENTY_FOUR_HOURS;\nexports.THREE_DAYS = exports.ONE_DAY * 3;\nexports.FIVE_DAYS = exports.ONE_DAY * 5;\nexports.SEVEN_DAYS = exports.ONE_DAY * 7;\nexports.THIRTY_DAYS = exports.ONE_DAY * 30;\nexports.ONE_WEEK = exports.SEVEN_DAYS;\nexports.TWO_WEEKS = exports.ONE_WEEK * 2;\nexports.THREE_WEEKS = exports.ONE_WEEK * 3;\nexports.FOUR_WEEKS = exports.ONE_WEEK * 4;\nexports.ONE_YEAR = exports.ONE_DAY * 365;\n//# sourceMappingURL=time.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./misc\"), exports);\ntslib_1.__exportStar(require(\"./time\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromMiliseconds = exports.toMiliseconds = void 0;\nconst constants_1 = require(\"../constants\");\nfunction toMiliseconds(seconds) {\n return seconds * constants_1.ONE_THOUSAND;\n}\nexports.toMiliseconds = toMiliseconds;\nfunction fromMiliseconds(miliseconds) {\n return Math.floor(miliseconds / constants_1.ONE_THOUSAND);\n}\nexports.fromMiliseconds = fromMiliseconds;\n//# sourceMappingURL=convert.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./delay\"), exports);\ntslib_1.__exportStar(require(\"./convert\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Watch = void 0;\nclass Watch {\n constructor() {\n this.timestamps = new Map();\n }\n start(label) {\n if (this.timestamps.has(label)) {\n throw new Error(`Watch already started for label: ${label}`);\n }\n this.timestamps.set(label, { started: Date.now() });\n }\n stop(label) {\n const timestamp = this.get(label);\n if (typeof timestamp.elapsed !== \"undefined\") {\n throw new Error(`Watch already stopped for label: ${label}`);\n }\n const elapsed = Date.now() - timestamp.started;\n this.timestamps.set(label, { started: timestamp.started, elapsed });\n }\n get(label) {\n const timestamp = this.timestamps.get(label);\n if (typeof timestamp === \"undefined\") {\n throw new Error(`No timestamp found for label: ${label}`);\n }\n return timestamp;\n }\n elapsed(label) {\n const timestamp = this.get(label);\n const elapsed = timestamp.elapsed || Date.now() - timestamp.started;\n return elapsed;\n }\n}\nexports.Watch = Watch;\nexports.default = Watch;\n//# sourceMappingURL=watch.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IWatch = void 0;\nclass IWatch {\n}\nexports.IWatch = IWatch;\n//# sourceMappingURL=watch.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./watch\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./utils\"), exports);\ntslib_1.__exportStar(require(\"./watch\"), exports);\ntslib_1.__exportStar(require(\"./types\"), exports);\ntslib_1.__exportStar(require(\"./constants\"), exports);\n//# sourceMappingURL=index.js.map","const global = globalThis || void 0 || self;\n\nexport { global as default, global };\n//# sourceMappingURL=index.js.map\n","import{IEvents as o}from\"@walletconnect/events\";import c,{EventEmitter as i}from\"events\";class n extends o{constructor(s){super(),this.opts=s,this.protocol=\"wc\",this.version=2}}class l{constructor(s,t,e){this.core=s,this.logger=t}}class h extends o{constructor(s,t){super(),this.core=s,this.logger=t,this.records=new Map}}class a{constructor(s,t){this.logger=s,this.core=t}}class g extends o{constructor(s,t){super(),this.relayer=s,this.logger=t}}class u extends o{constructor(s){super()}}class p{constructor(s,t,e,f){this.core=s,this.logger=t,this.name=e}}class I{constructor(){this.map=new Map}}class d extends o{constructor(s,t){super(),this.relayer=s,this.logger=t}}class E{constructor(s,t){this.core=s,this.logger=t}}class x extends o{constructor(s,t){super(),this.core=s,this.logger=t}}class m{constructor(s,t){this.logger=s,this.core=t}}class y{constructor(s,t,e){this.core=s,this.logger=t,this.store=e}}class v{constructor(s,t){this.projectId=s,this.logger=t}}class C{constructor(s,t,e){this.core=s,this.logger=t,this.telemetryEnabled=e}}class b extends c{constructor(){super()}}class S{constructor(s){this.opts=s,this.protocol=\"wc\",this.version=2}}class w extends i{constructor(){super()}}class M{constructor(s){this.client=s}}export{n as ICore,l as ICrypto,v as IEchoClient,M as IEngine,w as IEngineEvents,C as IEventClient,x as IExpirer,h as IJsonRpcHistory,E as IKeyChain,a as IMessageTracker,m as IPairing,g as IPublisher,u as IRelayer,S as ISignClient,b as ISignClientEvents,p as IStore,d as ISubscriber,I as ISubscriberTopicMap,y as IVerify};\n//# sourceMappingURL=index.es.js.map\n","import{RELAYER_DEFAULT_PROTOCOL as Et,TRANSPORT_TYPES as f,EVENT_CLIENT_SESSION_TRACES as C,EVENT_CLIENT_SESSION_ERRORS as F,EVENT_CLIENT_AUTHENTICATE_TRACES as Q,EVENT_CLIENT_AUTHENTICATE_ERRORS as se,EVENT_CLIENT_PAIRING_ERRORS as Rt,EVENT_CLIENT_PAIRING_TRACES as St,RELAYER_EVENTS as Ue,VERIFY_SERVER as It,EXPIRER_EVENTS as ft,PAIRING_EVENTS as Ge,Store as H,Core as vt}from\"@walletconnect/core\";import{pino as qt,getDefaultLoggerOptions as Tt,generateChildLogger as Nt,getLoggerContext as Pt}from\"@walletconnect/logger\";import{IEngine as Ot,ISignClient as At}from\"@walletconnect/types\";import{getInternalError as u,calcExpiry as A,createDelayedPromise as Y,engineEvent as g,getSdkError as P,getDeepLink as bt,handleDeeplinkRedirect as Ct,isSessionCompatible as Lt,hashKey as Te,parseChainId as Ne,createEncodedRecap as xt,getRecapFromResources as Pe,mergeEncodedRecaps as Dt,TYPE_2 as Vt,BASE64URL as ie,getLinkModeURL as he,validateSignedCacao as je,getNamespacedDidChainId as Fe,getDidAddress as Qe,getMethodsFromRecap as ze,getChainsFromRecap as He,buildNamespacesFromAuth as Ye,formatMessage as Mt,BASE64 as de,hashMessage as X,isExpired as J,MemoryStore as re,isValidParams as L,isUndefined as ne,isValidRelays as kt,isValidObject as Xe,isValidRequiredNamespaces as $t,isValidNamespaces as Oe,isConformingNamespaces as Je,isValidString as k,isValidErrorReason as Kt,isValidRelay as Ut,isValidController as Gt,isValidNamespacesChainId as Be,isValidRequest as jt,isValidNamespacesRequest as Ft,isValidRequestExpiry as Qt,isValidResponse as zt,isValidEvent as Ht,isValidNamespacesEvent as Yt,getSearchParamFromURL as We,isTestRun as Xt,isReactNative as Jt,parseExpirerTarget as Bt,isValidId as Wt,TYPE_1 as Ae,getAppMetadata as Zt}from\"@walletconnect/utils\";import es,{EventEmitter as ts}from\"events\";import{THIRTY_DAYS as ss,SEVEN_DAYS as Ze,FIVE_MINUTES as b,ONE_DAY as $,ONE_HOUR as et,ONE_SECOND as is,toMiliseconds as tt}from\"@walletconnect/time\";import{payloadId as B,getBigIntRpcId as ue,isJsonRpcResult as K,isJsonRpcError as U,formatJsonRpcRequest as ge,formatJsonRpcResult as rs,formatJsonRpcError as ns,isJsonRpcRequest as os,isJsonRpcResponse as as}from\"@walletconnect/jsonrpc-utils\";const be=\"wc\",Ce=2,Le=\"client\",ye=`${be}@${Ce}:${Le}:`,we={name:Le,logger:\"error\",controller:!1,relayUrl:\"wss://relay.walletconnect.org\"},cs={session_proposal:\"session_proposal\",session_update:\"session_update\",session_extend:\"session_extend\",session_ping:\"session_ping\",session_delete:\"session_delete\",session_expire:\"session_expire\",session_request:\"session_request\",session_request_sent:\"session_request_sent\",session_event:\"session_event\",proposal_expire:\"proposal_expire\",session_authenticate:\"session_authenticate\",session_request_expire:\"session_request_expire\"},ls={database:\":memory:\"},xe=\"WALLETCONNECT_DEEPLINK_CHOICE\",ps={created:\"history_created\",updated:\"history_updated\",deleted:\"history_deleted\",sync:\"history_sync\"},hs=\"history\",ds=\"0.3\",st=\"proposal\",us=ss,it=\"Proposal expired\",rt=\"session\",z=Ze,nt=\"engine\",v={wc_sessionPropose:{req:{ttl:b,prompt:!0,tag:1100},res:{ttl:b,prompt:!1,tag:1101},reject:{ttl:b,prompt:!1,tag:1120},autoReject:{ttl:b,prompt:!1,tag:1121}},wc_sessionSettle:{req:{ttl:b,prompt:!1,tag:1102},res:{ttl:b,prompt:!1,tag:1103}},wc_sessionUpdate:{req:{ttl:$,prompt:!1,tag:1104},res:{ttl:$,prompt:!1,tag:1105}},wc_sessionExtend:{req:{ttl:$,prompt:!1,tag:1106},res:{ttl:$,prompt:!1,tag:1107}},wc_sessionRequest:{req:{ttl:b,prompt:!0,tag:1108},res:{ttl:b,prompt:!1,tag:1109}},wc_sessionEvent:{req:{ttl:b,prompt:!0,tag:1110},res:{ttl:b,prompt:!1,tag:1111}},wc_sessionDelete:{req:{ttl:$,prompt:!1,tag:1112},res:{ttl:$,prompt:!1,tag:1113}},wc_sessionPing:{req:{ttl:$,prompt:!1,tag:1114},res:{ttl:$,prompt:!1,tag:1115}},wc_sessionAuthenticate:{req:{ttl:et,prompt:!0,tag:1116},res:{ttl:et,prompt:!1,tag:1117},reject:{ttl:b,prompt:!1,tag:1118},autoReject:{ttl:b,prompt:!1,tag:1119}}},me={min:b,max:Ze},x={idle:\"IDLE\",active:\"ACTIVE\"},ot=\"request\",at=[\"wc_sessionPropose\",\"wc_sessionRequest\",\"wc_authRequest\",\"wc_sessionAuthenticate\"],ct=\"wc\",gs=1.5,lt=\"auth\",pt=\"authKeys\",ht=\"pairingTopics\",dt=\"requests\",oe=`${ct}@${1.5}:${lt}:`,ae=`${oe}:PUB_KEY`;var ys=Object.defineProperty,ws=Object.defineProperties,ms=Object.getOwnPropertyDescriptors,ut=Object.getOwnPropertySymbols,_s=Object.prototype.hasOwnProperty,Es=Object.prototype.propertyIsEnumerable,gt=(q,o,e)=>o in q?ys(q,o,{enumerable:!0,configurable:!0,writable:!0,value:e}):q[o]=e,I=(q,o)=>{for(var e in o||(o={}))_s.call(o,e)&>(q,e,o[e]);if(ut)for(var e of ut(o))Es.call(o,e)&>(q,e,o[e]);return q},D=(q,o)=>ws(q,ms(o));class Rs extends Ot{constructor(o){super(o),this.name=nt,this.events=new es,this.initialized=!1,this.requestQueue={state:x.idle,queue:[]},this.sessionRequestQueue={state:x.idle,queue:[]},this.requestQueueDelay=is,this.expectedPairingMethodMap=new Map,this.recentlyDeletedMap=new Map,this.recentlyDeletedLimit=200,this.relayMessageCache=[],this.init=async()=>{this.initialized||(await this.cleanup(),this.registerRelayerEvents(),this.registerExpirerEvents(),this.registerPairingEvents(),await this.registerLinkModeListeners(),this.client.core.pairing.register({methods:Object.keys(v)}),this.initialized=!0,setTimeout(()=>{this.sessionRequestQueue.queue=this.getPendingSessionRequests(),this.processSessionRequestQueue()},tt(this.requestQueueDelay)))},this.connect=async e=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();const t=D(I({},e),{requiredNamespaces:e.requiredNamespaces||{},optionalNamespaces:e.optionalNamespaces||{}});await this.isValidConnect(t);const{pairingTopic:s,requiredNamespaces:i,optionalNamespaces:r,sessionProperties:n,relays:a}=t;let c=s,h,p=!1;try{c&&(p=this.client.core.pairing.pairings.get(c).active)}catch(E){throw this.client.logger.error(`connect() -> pairing.get(${c}) failed`),E}if(!c||!p){const{topic:E,uri:S}=await this.client.core.pairing.create();c=E,h=S}if(!c){const{message:E}=u(\"NO_MATCHING_KEY\",`connect() pairing topic: ${c}`);throw new Error(E)}const d=await this.client.core.crypto.generateKeyPair(),l=v.wc_sessionPropose.req.ttl||b,w=A(l),m=I({requiredNamespaces:i,optionalNamespaces:r,relays:a??[{protocol:Et}],proposer:{publicKey:d,metadata:this.client.metadata},expiryTimestamp:w,pairingTopic:c},n&&{sessionProperties:n}),{reject:y,resolve:_,done:R}=Y(l,it);this.events.once(g(\"session_connect\"),async({error:E,session:S})=>{if(E)y(E);else if(S){S.self.publicKey=d;const M=D(I({},S),{pairingTopic:m.pairingTopic,requiredNamespaces:m.requiredNamespaces,optionalNamespaces:m.optionalNamespaces,transportType:f.relay});await this.client.session.set(S.topic,M),await this.setExpiry(S.topic,S.expiry),c&&await this.client.core.pairing.updateMetadata({topic:c,metadata:S.peer.metadata}),this.cleanupDuplicatePairings(M),_(M)}});const V=await this.sendRequest({topic:c,method:\"wc_sessionPropose\",params:m,throwOnFailedPublish:!0});return await this.setProposal(V,I({id:V},m)),{uri:h,approval:R}},this.pair=async e=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{return await this.client.core.pairing.pair(e)}catch(t){throw this.client.logger.error(\"pair() failed\"),t}},this.approve=async e=>{var t,s,i;const r=this.client.core.eventClient.createEvent({properties:{topic:(t=e?.id)==null?void 0:t.toString(),trace:[C.session_approve_started]}});try{this.isInitialized(),await this.confirmOnlineStateOrThrow()}catch(N){throw r.setError(F.no_internet_connection),N}try{await this.isValidProposalId(e?.id)}catch(N){throw this.client.logger.error(`approve() -> proposal.get(${e?.id}) failed`),r.setError(F.proposal_not_found),N}try{await this.isValidApprove(e)}catch(N){throw this.client.logger.error(\"approve() -> isValidApprove() failed\"),r.setError(F.session_approve_namespace_validation_failure),N}const{id:n,relayProtocol:a,namespaces:c,sessionProperties:h,sessionConfig:p}=e,d=this.client.proposal.get(n);this.client.core.eventClient.deleteEvent({eventId:r.eventId});const{pairingTopic:l,proposer:w,requiredNamespaces:m,optionalNamespaces:y}=d;let _=(s=this.client.core.eventClient)==null?void 0:s.getEvent({topic:l});_||(_=(i=this.client.core.eventClient)==null?void 0:i.createEvent({type:C.session_approve_started,properties:{topic:l,trace:[C.session_approve_started,C.session_namespaces_validation_success]}}));const R=await this.client.core.crypto.generateKeyPair(),V=w.publicKey,E=await this.client.core.crypto.generateSharedKey(R,V),S=I(I({relay:{protocol:a??\"irn\"},namespaces:c,controller:{publicKey:R,metadata:this.client.metadata},expiry:A(z)},h&&{sessionProperties:h}),p&&{sessionConfig:p}),M=f.relay;_.addTrace(C.subscribing_session_topic);try{await this.client.core.relayer.subscribe(E,{transportType:M})}catch(N){throw _.setError(F.subscribe_session_topic_failure),N}_.addTrace(C.subscribe_session_topic_success);const W=D(I({},S),{topic:E,requiredNamespaces:m,optionalNamespaces:y,pairingTopic:l,acknowledged:!1,self:S.controller,peer:{publicKey:w.publicKey,metadata:w.metadata},controller:R,transportType:f.relay});await this.client.session.set(E,W),_.addTrace(C.store_session);try{_.addTrace(C.publishing_session_settle),await this.sendRequest({topic:E,method:\"wc_sessionSettle\",params:S,throwOnFailedPublish:!0}).catch(N=>{throw _?.setError(F.session_settle_publish_failure),N}),_.addTrace(C.session_settle_publish_success),_.addTrace(C.publishing_session_approve),await this.sendResult({id:n,topic:l,result:{relay:{protocol:a??\"irn\"},responderPublicKey:R},throwOnFailedPublish:!0}).catch(N=>{throw _?.setError(F.session_approve_publish_failure),N}),_.addTrace(C.session_approve_publish_success)}catch(N){throw this.client.logger.error(N),this.client.session.delete(E,P(\"USER_DISCONNECTED\")),await this.client.core.relayer.unsubscribe(E),N}return this.client.core.eventClient.deleteEvent({eventId:_.eventId}),await this.client.core.pairing.updateMetadata({topic:l,metadata:w.metadata}),await this.client.proposal.delete(n,P(\"USER_DISCONNECTED\")),await this.client.core.pairing.activate({topic:l}),await this.setExpiry(E,A(z)),{topic:E,acknowledged:()=>Promise.resolve(this.client.session.get(E))}},this.reject=async e=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidReject(e)}catch(r){throw this.client.logger.error(\"reject() -> isValidReject() failed\"),r}const{id:t,reason:s}=e;let i;try{i=this.client.proposal.get(t).pairingTopic}catch(r){throw this.client.logger.error(`reject() -> proposal.get(${t}) failed`),r}i&&(await this.sendError({id:t,topic:i,error:s,rpcOpts:v.wc_sessionPropose.reject}),await this.client.proposal.delete(t,P(\"USER_DISCONNECTED\")))},this.update=async e=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidUpdate(e)}catch(p){throw this.client.logger.error(\"update() -> isValidUpdate() failed\"),p}const{topic:t,namespaces:s}=e,{done:i,resolve:r,reject:n}=Y(),a=B(),c=ue().toString(),h=this.client.session.get(t).namespaces;return this.events.once(g(\"session_update\",a),({error:p})=>{p?n(p):r()}),await this.client.session.update(t,{namespaces:s}),await this.sendRequest({topic:t,method:\"wc_sessionUpdate\",params:{namespaces:s},throwOnFailedPublish:!0,clientRpcId:a,relayRpcId:c}).catch(p=>{this.client.logger.error(p),this.client.session.update(t,{namespaces:h}),n(p)}),{acknowledged:i}},this.extend=async e=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidExtend(e)}catch(a){throw this.client.logger.error(\"extend() -> isValidExtend() failed\"),a}const{topic:t}=e,s=B(),{done:i,resolve:r,reject:n}=Y();return this.events.once(g(\"session_extend\",s),({error:a})=>{a?n(a):r()}),await this.setExpiry(t,A(z)),this.sendRequest({topic:t,method:\"wc_sessionExtend\",params:{},clientRpcId:s,throwOnFailedPublish:!0}).catch(a=>{n(a)}),{acknowledged:i}},this.request=async e=>{this.isInitialized();try{await this.isValidRequest(e)}catch(w){throw this.client.logger.error(\"request() -> isValidRequest() failed\"),w}const{chainId:t,request:s,topic:i,expiry:r=v.wc_sessionRequest.req.ttl}=e,n=this.client.session.get(i);n?.transportType===f.relay&&await this.confirmOnlineStateOrThrow();const a=B(),c=ue().toString(),{done:h,resolve:p,reject:d}=Y(r,\"Request expired. Please try again.\");this.events.once(g(\"session_request\",a),({error:w,result:m})=>{w?d(w):p(m)});const l=this.getAppLinkIfEnabled(n.peer.metadata,n.transportType);return l?(await this.sendRequest({clientRpcId:a,relayRpcId:c,topic:i,method:\"wc_sessionRequest\",params:{request:D(I({},s),{expiryTimestamp:A(r)}),chainId:t},expiry:r,throwOnFailedPublish:!0,appLink:l}).catch(w=>d(w)),this.client.events.emit(\"session_request_sent\",{topic:i,request:s,chainId:t,id:a}),await h()):await Promise.all([new Promise(async w=>{await this.sendRequest({clientRpcId:a,relayRpcId:c,topic:i,method:\"wc_sessionRequest\",params:{request:D(I({},s),{expiryTimestamp:A(r)}),chainId:t},expiry:r,throwOnFailedPublish:!0}).catch(m=>d(m)),this.client.events.emit(\"session_request_sent\",{topic:i,request:s,chainId:t,id:a}),w()}),new Promise(async w=>{var m;if(!((m=n.sessionConfig)!=null&&m.disableDeepLink)){const y=await bt(this.client.core.storage,xe);await Ct({id:a,topic:i,wcDeepLink:y})}w()}),h()]).then(w=>w[2])},this.respond=async e=>{this.isInitialized(),await this.isValidRespond(e);const{topic:t,response:s}=e,{id:i}=s,r=this.client.session.get(t);r.transportType===f.relay&&await this.confirmOnlineStateOrThrow();const n=this.getAppLinkIfEnabled(r.peer.metadata,r.transportType);K(s)?await this.sendResult({id:i,topic:t,result:s.result,throwOnFailedPublish:!0,appLink:n}):U(s)&&await this.sendError({id:i,topic:t,error:s.error,appLink:n}),this.cleanupAfterResponse(e)},this.ping=async e=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidPing(e)}catch(s){throw this.client.logger.error(\"ping() -> isValidPing() failed\"),s}const{topic:t}=e;if(this.client.session.keys.includes(t)){const s=B(),i=ue().toString(),{done:r,resolve:n,reject:a}=Y();this.events.once(g(\"session_ping\",s),({error:c})=>{c?a(c):n()}),await Promise.all([this.sendRequest({topic:t,method:\"wc_sessionPing\",params:{},throwOnFailedPublish:!0,clientRpcId:s,relayRpcId:i}),r()])}else this.client.core.pairing.pairings.keys.includes(t)&&await this.client.core.pairing.ping({topic:t})},this.emit=async e=>{this.isInitialized(),await this.confirmOnlineStateOrThrow(),await this.isValidEmit(e);const{topic:t,event:s,chainId:i}=e,r=ue().toString();await this.sendRequest({topic:t,method:\"wc_sessionEvent\",params:{event:s,chainId:i},throwOnFailedPublish:!0,relayRpcId:r})},this.disconnect=async e=>{this.isInitialized(),await this.confirmOnlineStateOrThrow(),await this.isValidDisconnect(e);const{topic:t}=e;if(this.client.session.keys.includes(t))await this.sendRequest({topic:t,method:\"wc_sessionDelete\",params:P(\"USER_DISCONNECTED\"),throwOnFailedPublish:!0}),await this.deleteSession({topic:t,emitEvent:!1});else if(this.client.core.pairing.pairings.keys.includes(t))await this.client.core.pairing.disconnect({topic:t});else{const{message:s}=u(\"MISMATCHED_TOPIC\",`Session or pairing topic not found: ${t}`);throw new Error(s)}},this.find=e=>(this.isInitialized(),this.client.session.getAll().filter(t=>Lt(t,e))),this.getPendingSessionRequests=()=>this.client.pendingRequest.getAll(),this.authenticate=async(e,t)=>{var s;this.isInitialized(),this.isValidAuthenticate(e);const i=t&&this.client.core.linkModeSupportedApps.includes(t)&&((s=this.client.metadata.redirect)==null?void 0:s.linkMode),r=i?f.link_mode:f.relay;r===f.relay&&await this.confirmOnlineStateOrThrow();const{chains:n,statement:a=\"\",uri:c,domain:h,nonce:p,type:d,exp:l,nbf:w,methods:m=[],expiry:y}=e,_=[...e.resources||[]],{topic:R,uri:V}=await this.client.core.pairing.create({methods:[\"wc_sessionAuthenticate\"],transportType:r});this.client.logger.info({message:\"Generated new pairing\",pairing:{topic:R,uri:V}});const E=await this.client.core.crypto.generateKeyPair(),S=Te(E);if(await Promise.all([this.client.auth.authKeys.set(ae,{responseTopic:S,publicKey:E}),this.client.auth.pairingTopics.set(S,{topic:S,pairingTopic:R})]),await this.client.core.relayer.subscribe(S,{transportType:r}),this.client.logger.info(`sending request to new pairing topic: ${R}`),m.length>0){const{namespace:O}=Ne(n[0]);let T=xt(O,\"request\",m);Pe(_)&&(T=Dt(T,_.pop())),_.push(T)}const M=y&&y>v.wc_sessionAuthenticate.req.ttl?y:v.wc_sessionAuthenticate.req.ttl,W={authPayload:{type:d??\"caip122\",chains:n,statement:a,aud:c,domain:h,version:\"1\",nonce:p,iat:new Date().toISOString(),exp:l,nbf:w,resources:_},requester:{publicKey:E,metadata:this.client.metadata},expiryTimestamp:A(M)},N={eip155:{chains:n,methods:[...new Set([\"personal_sign\",...m])],events:[\"chainChanged\",\"accountsChanged\"]}},De={requiredNamespaces:{},optionalNamespaces:N,relays:[{protocol:\"irn\"}],pairingTopic:R,proposer:{publicKey:E,metadata:this.client.metadata},expiryTimestamp:A(v.wc_sessionPropose.req.ttl)},{done:wt,resolve:Ve,reject:Ee}=Y(M,\"Request expired\"),ce=async({error:O,session:T})=>{if(this.events.off(g(\"session_request\",G),Re),O)Ee(O);else if(T){T.self.publicKey=E,await this.client.session.set(T.topic,T),await this.setExpiry(T.topic,T.expiry),R&&await this.client.core.pairing.updateMetadata({topic:R,metadata:T.peer.metadata});const le=this.client.session.get(T.topic);await this.deleteProposal(Z),Ve({session:le})}},Re=async O=>{var T,le,Me;if(await this.deletePendingAuthRequest(G,{message:\"fulfilled\",code:0}),O.error){const te=P(\"WC_METHOD_UNSUPPORTED\",\"wc_sessionAuthenticate\");return O.error.code===te.code?void 0:(this.events.off(g(\"session_connect\"),ce),Ee(O.error.message))}await this.deleteProposal(Z),this.events.off(g(\"session_connect\"),ce);const{cacaos:ke,responder:j}=O.result,Ie=[],$e=[];for(const te of ke){await je({cacao:te,projectId:this.client.core.projectId})||(this.client.logger.error(te,\"Signature verification failed\"),Ee(P(\"SESSION_SETTLEMENT_FAILED\",\"Signature verification failed\")));const{p:fe}=te,ve=Pe(fe.resources),Ke=[Fe(fe.iss)],mt=Qe(fe.iss);if(ve){const qe=ze(ve),_t=He(ve);Ie.push(...qe),Ke.push(..._t)}for(const qe of Ke)$e.push(`${qe}:${mt}`)}const ee=await this.client.core.crypto.generateSharedKey(E,j.publicKey);let pe;Ie.length>0&&(pe={topic:ee,acknowledged:!0,self:{publicKey:E,metadata:this.client.metadata},peer:j,controller:j.publicKey,expiry:A(z),requiredNamespaces:{},optionalNamespaces:{},relay:{protocol:\"irn\"},pairingTopic:R,namespaces:Ye([...new Set(Ie)],[...new Set($e)]),transportType:r},await this.client.core.relayer.subscribe(ee,{transportType:r}),await this.client.session.set(ee,pe),R&&await this.client.core.pairing.updateMetadata({topic:R,metadata:j.metadata}),pe=this.client.session.get(ee)),(T=this.client.metadata.redirect)!=null&&T.linkMode&&(le=j.metadata.redirect)!=null&&le.linkMode&&(Me=j.metadata.redirect)!=null&&Me.universal&&t&&(this.client.core.addLinkModeSupportedApp(j.metadata.redirect.universal),this.client.session.update(ee,{transportType:f.link_mode})),Ve({auths:ke,session:pe})},G=B(),Z=B();this.events.once(g(\"session_connect\"),ce),this.events.once(g(\"session_request\",G),Re);let Se;try{if(i){const O=ge(\"wc_sessionAuthenticate\",W,G);this.client.core.history.set(R,O);const T=await this.client.core.crypto.encode(\"\",O,{type:Vt,encoding:ie});Se=he(t,R,T)}else await Promise.all([this.sendRequest({topic:R,method:\"wc_sessionAuthenticate\",params:W,expiry:e.expiry,throwOnFailedPublish:!0,clientRpcId:G}),this.sendRequest({topic:R,method:\"wc_sessionPropose\",params:De,expiry:v.wc_sessionPropose.req.ttl,throwOnFailedPublish:!0,clientRpcId:Z})])}catch(O){throw this.events.off(g(\"session_connect\"),ce),this.events.off(g(\"session_request\",G),Re),O}return await this.setProposal(Z,I({id:Z},De)),await this.setAuthRequest(G,{request:D(I({},W),{verifyContext:{}}),pairingTopic:R,transportType:r}),{uri:Se??V,response:wt}},this.approveSessionAuthenticate=async e=>{const{id:t,auths:s}=e,i=this.client.core.eventClient.createEvent({properties:{topic:t.toString(),trace:[Q.authenticated_session_approve_started]}});try{this.isInitialized()}catch(y){throw i.setError(se.no_internet_connection),y}const r=this.getPendingAuthRequest(t);if(!r)throw i.setError(se.authenticated_session_pending_request_not_found),new Error(`Could not find pending auth request with id ${t}`);const n=r.transportType||f.relay;n===f.relay&&await this.confirmOnlineStateOrThrow();const a=r.requester.publicKey,c=await this.client.core.crypto.generateKeyPair(),h=Te(a),p={type:Ae,receiverPublicKey:a,senderPublicKey:c},d=[],l=[];for(const y of s){if(!await je({cacao:y,projectId:this.client.core.projectId})){i.setError(se.invalid_cacao);const S=P(\"SESSION_SETTLEMENT_FAILED\",\"Signature verification failed\");throw await this.sendError({id:t,topic:h,error:S,encodeOpts:p}),new Error(S.message)}i.addTrace(Q.cacaos_verified);const{p:_}=y,R=Pe(_.resources),V=[Fe(_.iss)],E=Qe(_.iss);if(R){const S=ze(R),M=He(R);d.push(...S),V.push(...M)}for(const S of V)l.push(`${S}:${E}`)}const w=await this.client.core.crypto.generateSharedKey(c,a);i.addTrace(Q.create_authenticated_session_topic);let m;if(d?.length>0){m={topic:w,acknowledged:!0,self:{publicKey:c,metadata:this.client.metadata},peer:{publicKey:a,metadata:r.requester.metadata},controller:a,expiry:A(z),authentication:s,requiredNamespaces:{},optionalNamespaces:{},relay:{protocol:\"irn\"},pairingTopic:r.pairingTopic,namespaces:Ye([...new Set(d)],[...new Set(l)]),transportType:n},i.addTrace(Q.subscribing_authenticated_session_topic);try{await this.client.core.relayer.subscribe(w,{transportType:n})}catch(y){throw i.setError(se.subscribe_authenticated_session_topic_failure),y}i.addTrace(Q.subscribe_authenticated_session_topic_success),await this.client.session.set(w,m),i.addTrace(Q.store_authenticated_session),await this.client.core.pairing.updateMetadata({topic:r.pairingTopic,metadata:r.requester.metadata})}i.addTrace(Q.publishing_authenticated_session_approve);try{await this.sendResult({topic:h,id:t,result:{cacaos:s,responder:{publicKey:c,metadata:this.client.metadata}},encodeOpts:p,throwOnFailedPublish:!0,appLink:this.getAppLinkIfEnabled(r.requester.metadata,n)})}catch(y){throw i.setError(se.authenticated_session_approve_publish_failure),y}return await this.client.auth.requests.delete(t,{message:\"fulfilled\",code:0}),await this.client.core.pairing.activate({topic:r.pairingTopic}),this.client.core.eventClient.deleteEvent({eventId:i.eventId}),{session:m}},this.rejectSessionAuthenticate=async e=>{this.isInitialized();const{id:t,reason:s}=e,i=this.getPendingAuthRequest(t);if(!i)throw new Error(`Could not find pending auth request with id ${t}`);i.transportType===f.relay&&await this.confirmOnlineStateOrThrow();const r=i.requester.publicKey,n=await this.client.core.crypto.generateKeyPair(),a=Te(r),c={type:Ae,receiverPublicKey:r,senderPublicKey:n};await this.sendError({id:t,topic:a,error:s,encodeOpts:c,rpcOpts:v.wc_sessionAuthenticate.reject,appLink:this.getAppLinkIfEnabled(i.requester.metadata,i.transportType)}),await this.client.auth.requests.delete(t,{message:\"rejected\",code:0}),await this.client.proposal.delete(t,P(\"USER_DISCONNECTED\"))},this.formatAuthMessage=e=>{this.isInitialized();const{request:t,iss:s}=e;return Mt(t,s)},this.processRelayMessageCache=()=>{setTimeout(async()=>{if(this.relayMessageCache.length!==0)for(;this.relayMessageCache.length>0;)try{const e=this.relayMessageCache.shift();e&&await this.onRelayMessage(e)}catch(e){this.client.logger.error(e)}},50)},this.cleanupDuplicatePairings=async e=>{if(e.pairingTopic)try{const t=this.client.core.pairing.pairings.get(e.pairingTopic),s=this.client.core.pairing.pairings.getAll().filter(i=>{var r,n;return((r=i.peerMetadata)==null?void 0:r.url)&&((n=i.peerMetadata)==null?void 0:n.url)===e.peer.metadata.url&&i.topic&&i.topic!==t.topic});if(s.length===0)return;this.client.logger.info(`Cleaning up ${s.length} duplicate pairing(s)`),await Promise.all(s.map(i=>this.client.core.pairing.disconnect({topic:i.topic}))),this.client.logger.info(\"Duplicate pairings clean up finished\")}catch(t){this.client.logger.error(t)}},this.deleteSession=async e=>{var t;const{topic:s,expirerHasDeleted:i=!1,emitEvent:r=!0,id:n=0}=e,{self:a}=this.client.session.get(s);await this.client.core.relayer.unsubscribe(s),await this.client.session.delete(s,P(\"USER_DISCONNECTED\")),this.addToRecentlyDeleted(s,\"session\"),this.client.core.crypto.keychain.has(a.publicKey)&&await this.client.core.crypto.deleteKeyPair(a.publicKey),this.client.core.crypto.keychain.has(s)&&await this.client.core.crypto.deleteSymKey(s),i||this.client.core.expirer.del(s),this.client.core.storage.removeItem(xe).catch(c=>this.client.logger.warn(c)),this.getPendingSessionRequests().forEach(c=>{c.topic===s&&this.deletePendingSessionRequest(c.id,P(\"USER_DISCONNECTED\"))}),s===((t=this.sessionRequestQueue.queue[0])==null?void 0:t.topic)&&(this.sessionRequestQueue.state=x.idle),r&&this.client.events.emit(\"session_delete\",{id:n,topic:s})},this.deleteProposal=async(e,t)=>{if(t)try{const s=this.client.proposal.get(e),i=this.client.core.eventClient.getEvent({topic:s.pairingTopic});i?.setError(F.proposal_expired)}catch{}await Promise.all([this.client.proposal.delete(e,P(\"USER_DISCONNECTED\")),t?Promise.resolve():this.client.core.expirer.del(e)]),this.addToRecentlyDeleted(e,\"proposal\")},this.deletePendingSessionRequest=async(e,t,s=!1)=>{await Promise.all([this.client.pendingRequest.delete(e,t),s?Promise.resolve():this.client.core.expirer.del(e)]),this.addToRecentlyDeleted(e,\"request\"),this.sessionRequestQueue.queue=this.sessionRequestQueue.queue.filter(i=>i.id!==e),s&&(this.sessionRequestQueue.state=x.idle,this.client.events.emit(\"session_request_expire\",{id:e}))},this.deletePendingAuthRequest=async(e,t,s=!1)=>{await Promise.all([this.client.auth.requests.delete(e,t),s?Promise.resolve():this.client.core.expirer.del(e)])},this.setExpiry=async(e,t)=>{this.client.session.keys.includes(e)&&(this.client.core.expirer.set(e,t),await this.client.session.update(e,{expiry:t}))},this.setProposal=async(e,t)=>{this.client.core.expirer.set(e,A(v.wc_sessionPropose.req.ttl)),await this.client.proposal.set(e,t)},this.setAuthRequest=async(e,t)=>{const{request:s,pairingTopic:i,transportType:r=f.relay}=t;this.client.core.expirer.set(e,s.expiryTimestamp),await this.client.auth.requests.set(e,{authPayload:s.authPayload,requester:s.requester,expiryTimestamp:s.expiryTimestamp,id:e,pairingTopic:i,verifyContext:s.verifyContext,transportType:r})},this.setPendingSessionRequest=async e=>{const{id:t,topic:s,params:i,verifyContext:r}=e,n=i.request.expiryTimestamp||A(v.wc_sessionRequest.req.ttl);this.client.core.expirer.set(t,n),await this.client.pendingRequest.set(t,{id:t,topic:s,params:i,verifyContext:r})},this.sendRequest=async e=>{const{topic:t,method:s,params:i,expiry:r,relayRpcId:n,clientRpcId:a,throwOnFailedPublish:c,appLink:h}=e,p=ge(s,i,a);let d;const l=!!h;try{const y=l?ie:de;d=await this.client.core.crypto.encode(t,p,{encoding:y})}catch(y){throw await this.cleanup(),this.client.logger.error(`sendRequest() -> core.crypto.encode() for topic ${t} failed`),y}let w;if(at.includes(s)){const y=X(JSON.stringify(p)),_=X(d);w=await this.client.core.verify.register({id:_,decryptedId:y})}const m=v[s].req;if(m.attestation=w,r&&(m.ttl=r),n&&(m.id=n),this.client.core.history.set(t,p),l){const y=he(h,t,d);await global.Linking.openURL(y,this.client.name)}else{const y=v[s].req;r&&(y.ttl=r),n&&(y.id=n),c?(y.internal=D(I({},y.internal),{throwOnFailedPublish:!0}),await this.client.core.relayer.publish(t,d,y)):this.client.core.relayer.publish(t,d,y).catch(_=>this.client.logger.error(_))}return p.id},this.sendResult=async e=>{const{id:t,topic:s,result:i,throwOnFailedPublish:r,encodeOpts:n,appLink:a}=e,c=rs(t,i);let h;const p=a&&typeof(global==null?void 0:global.Linking)<\"u\";try{const l=p?ie:de;h=await this.client.core.crypto.encode(s,c,D(I({},n||{}),{encoding:l}))}catch(l){throw await this.cleanup(),this.client.logger.error(`sendResult() -> core.crypto.encode() for topic ${s} failed`),l}let d;try{d=await this.client.core.history.get(s,t)}catch(l){throw this.client.logger.error(`sendResult() -> history.get(${s}, ${t}) failed`),l}if(p){const l=he(a,s,h);await global.Linking.openURL(l,this.client.name)}else{const l=v[d.request.method].res;r?(l.internal=D(I({},l.internal),{throwOnFailedPublish:!0}),await this.client.core.relayer.publish(s,h,l)):this.client.core.relayer.publish(s,h,l).catch(w=>this.client.logger.error(w))}await this.client.core.history.resolve(c)},this.sendError=async e=>{const{id:t,topic:s,error:i,encodeOpts:r,rpcOpts:n,appLink:a}=e,c=ns(t,i);let h;const p=a&&typeof(global==null?void 0:global.Linking)<\"u\";try{const l=p?ie:de;h=await this.client.core.crypto.encode(s,c,D(I({},r||{}),{encoding:l}))}catch(l){throw await this.cleanup(),this.client.logger.error(`sendError() -> core.crypto.encode() for topic ${s} failed`),l}let d;try{d=await this.client.core.history.get(s,t)}catch(l){throw this.client.logger.error(`sendError() -> history.get(${s}, ${t}) failed`),l}if(p){const l=he(a,s,h);await global.Linking.openURL(l,this.client.name)}else{const l=n||v[d.request.method].res;this.client.core.relayer.publish(s,h,l)}await this.client.core.history.resolve(c)},this.cleanup=async()=>{const e=[],t=[];this.client.session.getAll().forEach(s=>{let i=!1;J(s.expiry)&&(i=!0),this.client.core.crypto.keychain.has(s.topic)||(i=!0),i&&e.push(s.topic)}),this.client.proposal.getAll().forEach(s=>{J(s.expiryTimestamp)&&t.push(s.id)}),await Promise.all([...e.map(s=>this.deleteSession({topic:s})),...t.map(s=>this.deleteProposal(s))])},this.onRelayEventRequest=async e=>{this.requestQueue.queue.push(e),await this.processRequestsQueue()},this.processRequestsQueue=async()=>{if(this.requestQueue.state===x.active){this.client.logger.info(\"Request queue already active, skipping...\");return}for(this.client.logger.info(`Request queue starting with ${this.requestQueue.queue.length} requests`);this.requestQueue.queue.length>0;){this.requestQueue.state=x.active;const e=this.requestQueue.queue.shift();if(e)try{await this.processRequest(e)}catch(t){this.client.logger.warn(t)}}this.requestQueue.state=x.idle},this.processRequest=async e=>{const{topic:t,payload:s,attestation:i,transportType:r,encryptedId:n}=e,a=s.method;if(!this.shouldIgnorePairingRequest({topic:t,requestMethod:a}))switch(a){case\"wc_sessionPropose\":return await this.onSessionProposeRequest({topic:t,payload:s,attestation:i,encryptedId:n});case\"wc_sessionSettle\":return await this.onSessionSettleRequest(t,s);case\"wc_sessionUpdate\":return await this.onSessionUpdateRequest(t,s);case\"wc_sessionExtend\":return await this.onSessionExtendRequest(t,s);case\"wc_sessionPing\":return await this.onSessionPingRequest(t,s);case\"wc_sessionDelete\":return await this.onSessionDeleteRequest(t,s);case\"wc_sessionRequest\":return await this.onSessionRequest({topic:t,payload:s,attestation:i,encryptedId:n,transportType:r});case\"wc_sessionEvent\":return await this.onSessionEventRequest(t,s);case\"wc_sessionAuthenticate\":return await this.onSessionAuthenticateRequest({topic:t,payload:s,attestation:i,encryptedId:n,transportType:r});default:return this.client.logger.info(`Unsupported request method ${a}`)}},this.onRelayEventResponse=async e=>{const{topic:t,payload:s,transportType:i}=e,r=(await this.client.core.history.get(t,s.id)).request.method;switch(r){case\"wc_sessionPropose\":return this.onSessionProposeResponse(t,s,i);case\"wc_sessionSettle\":return this.onSessionSettleResponse(t,s);case\"wc_sessionUpdate\":return this.onSessionUpdateResponse(t,s);case\"wc_sessionExtend\":return this.onSessionExtendResponse(t,s);case\"wc_sessionPing\":return this.onSessionPingResponse(t,s);case\"wc_sessionRequest\":return this.onSessionRequestResponse(t,s);case\"wc_sessionAuthenticate\":return this.onSessionAuthenticateResponse(t,s);default:return this.client.logger.info(`Unsupported response method ${r}`)}},this.onRelayEventUnknownPayload=e=>{const{topic:t}=e,{message:s}=u(\"MISSING_OR_INVALID\",`Decoded payload on topic ${t} is not identifiable as a JSON-RPC request or a response.`);throw new Error(s)},this.shouldIgnorePairingRequest=e=>{const{topic:t,requestMethod:s}=e,i=this.expectedPairingMethodMap.get(t);return!i||i.includes(s)?!1:!!(i.includes(\"wc_sessionAuthenticate\")&&this.client.events.listenerCount(\"session_authenticate\")>0)},this.onSessionProposeRequest=async e=>{const{topic:t,payload:s,attestation:i,encryptedId:r}=e,{params:n,id:a}=s;try{const c=this.client.core.eventClient.getEvent({topic:t});this.isValidConnect(I({},s.params));const h=n.expiryTimestamp||A(v.wc_sessionPropose.req.ttl),p=I({id:a,pairingTopic:t,expiryTimestamp:h},n);await this.setProposal(a,p);const d=await this.getVerifyContext({attestationId:i,hash:X(JSON.stringify(s)),encryptedId:r,metadata:p.proposer.metadata});this.client.events.listenerCount(\"session_proposal\")===0&&(console.warn(\"No listener for session_proposal event\"),c?.setError(Rt.proposal_listener_not_found)),c?.addTrace(St.emit_session_proposal),this.client.events.emit(\"session_proposal\",{id:a,params:p,verifyContext:d})}catch(c){await this.sendError({id:a,topic:t,error:c,rpcOpts:v.wc_sessionPropose.autoReject}),this.client.logger.error(c)}},this.onSessionProposeResponse=async(e,t,s)=>{const{id:i}=t;if(K(t)){const{result:r}=t;this.client.logger.trace({type:\"method\",method:\"onSessionProposeResponse\",result:r});const n=this.client.proposal.get(i);this.client.logger.trace({type:\"method\",method:\"onSessionProposeResponse\",proposal:n});const a=n.proposer.publicKey;this.client.logger.trace({type:\"method\",method:\"onSessionProposeResponse\",selfPublicKey:a});const c=r.responderPublicKey;this.client.logger.trace({type:\"method\",method:\"onSessionProposeResponse\",peerPublicKey:c});const h=await this.client.core.crypto.generateSharedKey(a,c);this.client.logger.trace({type:\"method\",method:\"onSessionProposeResponse\",sessionTopic:h});const p=await this.client.core.relayer.subscribe(h,{transportType:s});this.client.logger.trace({type:\"method\",method:\"onSessionProposeResponse\",subscriptionId:p}),await this.client.core.pairing.activate({topic:e})}else if(U(t)){await this.client.proposal.delete(i,P(\"USER_DISCONNECTED\"));const r=g(\"session_connect\");if(this.events.listenerCount(r)===0)throw new Error(`emitting ${r} without any listeners, 954`);this.events.emit(g(\"session_connect\"),{error:t.error})}},this.onSessionSettleRequest=async(e,t)=>{const{id:s,params:i}=t;try{this.isValidSessionSettleRequest(i);const{relay:r,controller:n,expiry:a,namespaces:c,sessionProperties:h,sessionConfig:p}=t.params,d=D(I(I({topic:e,relay:r,expiry:a,namespaces:c,acknowledged:!0,pairingTopic:\"\",requiredNamespaces:{},optionalNamespaces:{},controller:n.publicKey,self:{publicKey:\"\",metadata:this.client.metadata},peer:{publicKey:n.publicKey,metadata:n.metadata}},h&&{sessionProperties:h}),p&&{sessionConfig:p}),{transportType:f.relay}),l=g(\"session_connect\");if(this.events.listenerCount(l)===0)throw new Error(`emitting ${l} without any listeners 997`);this.events.emit(g(\"session_connect\"),{session:d}),await this.sendResult({id:t.id,topic:e,result:!0,throwOnFailedPublish:!0})}catch(r){await this.sendError({id:s,topic:e,error:r}),this.client.logger.error(r)}},this.onSessionSettleResponse=async(e,t)=>{const{id:s}=t;K(t)?(await this.client.session.update(e,{acknowledged:!0}),this.events.emit(g(\"session_approve\",s),{})):U(t)&&(await this.client.session.delete(e,P(\"USER_DISCONNECTED\")),this.events.emit(g(\"session_approve\",s),{error:t.error}))},this.onSessionUpdateRequest=async(e,t)=>{const{params:s,id:i}=t;try{const r=`${e}_session_update`,n=re.get(r);if(n&&this.isRequestOutOfSync(n,i)){this.client.logger.info(`Discarding out of sync request - ${i}`),this.sendError({id:i,topic:e,error:P(\"INVALID_UPDATE_REQUEST\")});return}this.isValidUpdate(I({topic:e},s));try{re.set(r,i),await this.client.session.update(e,{namespaces:s.namespaces}),await this.sendResult({id:i,topic:e,result:!0,throwOnFailedPublish:!0})}catch(a){throw re.delete(r),a}this.client.events.emit(\"session_update\",{id:i,topic:e,params:s})}catch(r){await this.sendError({id:i,topic:e,error:r}),this.client.logger.error(r)}},this.isRequestOutOfSync=(e,t)=>parseInt(t.toString().slice(0,-3))<=parseInt(e.toString().slice(0,-3)),this.onSessionUpdateResponse=(e,t)=>{const{id:s}=t,i=g(\"session_update\",s);if(this.events.listenerCount(i)===0)throw new Error(`emitting ${i} without any listeners`);K(t)?this.events.emit(g(\"session_update\",s),{}):U(t)&&this.events.emit(g(\"session_update\",s),{error:t.error})},this.onSessionExtendRequest=async(e,t)=>{const{id:s}=t;try{this.isValidExtend({topic:e}),await this.setExpiry(e,A(z)),await this.sendResult({id:s,topic:e,result:!0,throwOnFailedPublish:!0}),this.client.events.emit(\"session_extend\",{id:s,topic:e})}catch(i){await this.sendError({id:s,topic:e,error:i}),this.client.logger.error(i)}},this.onSessionExtendResponse=(e,t)=>{const{id:s}=t,i=g(\"session_extend\",s);if(this.events.listenerCount(i)===0)throw new Error(`emitting ${i} without any listeners`);K(t)?this.events.emit(g(\"session_extend\",s),{}):U(t)&&this.events.emit(g(\"session_extend\",s),{error:t.error})},this.onSessionPingRequest=async(e,t)=>{const{id:s}=t;try{this.isValidPing({topic:e}),await this.sendResult({id:s,topic:e,result:!0,throwOnFailedPublish:!0}),this.client.events.emit(\"session_ping\",{id:s,topic:e})}catch(i){await this.sendError({id:s,topic:e,error:i}),this.client.logger.error(i)}},this.onSessionPingResponse=(e,t)=>{const{id:s}=t,i=g(\"session_ping\",s);if(this.events.listenerCount(i)===0)throw new Error(`emitting ${i} without any listeners`);setTimeout(()=>{K(t)?this.events.emit(g(\"session_ping\",s),{}):U(t)&&this.events.emit(g(\"session_ping\",s),{error:t.error})},500)},this.onSessionDeleteRequest=async(e,t)=>{const{id:s}=t;try{this.isValidDisconnect({topic:e,reason:t.params}),Promise.all([new Promise(i=>{this.client.core.relayer.once(Ue.publish,async()=>{i(await this.deleteSession({topic:e,id:s}))})}),this.sendResult({id:s,topic:e,result:!0,throwOnFailedPublish:!0}),this.cleanupPendingSentRequestsForTopic({topic:e,error:P(\"USER_DISCONNECTED\")})]).catch(i=>this.client.logger.error(i))}catch(i){this.client.logger.error(i)}},this.onSessionRequest=async e=>{var t,s,i;const{topic:r,payload:n,attestation:a,encryptedId:c,transportType:h}=e,{id:p,params:d}=n;try{await this.isValidRequest(I({topic:r},d));const l=this.client.session.get(r),w=await this.getVerifyContext({attestationId:a,hash:X(JSON.stringify(ge(\"wc_sessionRequest\",d,p))),encryptedId:c,metadata:l.peer.metadata,transportType:h}),m={id:p,topic:r,params:d,verifyContext:w};await this.setPendingSessionRequest(m),h===f.link_mode&&(t=l.peer.metadata.redirect)!=null&&t.universal&&this.client.core.addLinkModeSupportedApp((s=l.peer.metadata.redirect)==null?void 0:s.universal),(i=this.client.signConfig)!=null&&i.disableRequestQueue?this.emitSessionRequest(m):(this.addSessionRequestToSessionRequestQueue(m),this.processSessionRequestQueue())}catch(l){await this.sendError({id:p,topic:r,error:l}),this.client.logger.error(l)}},this.onSessionRequestResponse=(e,t)=>{const{id:s}=t,i=g(\"session_request\",s);if(this.events.listenerCount(i)===0)throw new Error(`emitting ${i} without any listeners`);K(t)?this.events.emit(g(\"session_request\",s),{result:t.result}):U(t)&&this.events.emit(g(\"session_request\",s),{error:t.error})},this.onSessionEventRequest=async(e,t)=>{const{id:s,params:i}=t;try{const r=`${e}_session_event_${i.event.name}`,n=re.get(r);if(n&&this.isRequestOutOfSync(n,s)){this.client.logger.info(`Discarding out of sync request - ${s}`);return}this.isValidEmit(I({topic:e},i)),this.client.events.emit(\"session_event\",{id:s,topic:e,params:i}),re.set(r,s)}catch(r){await this.sendError({id:s,topic:e,error:r}),this.client.logger.error(r)}},this.onSessionAuthenticateResponse=(e,t)=>{const{id:s}=t;this.client.logger.trace({type:\"method\",method:\"onSessionAuthenticateResponse\",topic:e,payload:t}),K(t)?this.events.emit(g(\"session_request\",s),{result:t.result}):U(t)&&this.events.emit(g(\"session_request\",s),{error:t.error})},this.onSessionAuthenticateRequest=async e=>{var t;const{topic:s,payload:i,attestation:r,encryptedId:n,transportType:a}=e;try{const{requester:c,authPayload:h,expiryTimestamp:p}=i.params,d=await this.getVerifyContext({attestationId:r,hash:X(JSON.stringify(i)),encryptedId:n,metadata:c.metadata,transportType:a}),l={requester:c,pairingTopic:s,id:i.id,authPayload:h,verifyContext:d,expiryTimestamp:p};await this.setAuthRequest(i.id,{request:l,pairingTopic:s,transportType:a}),a===f.link_mode&&(t=c.metadata.redirect)!=null&&t.universal&&this.client.core.addLinkModeSupportedApp(c.metadata.redirect.universal),this.client.events.emit(\"session_authenticate\",{topic:s,params:i.params,id:i.id,verifyContext:d})}catch(c){this.client.logger.error(c);const h=i.params.requester.publicKey,p=await this.client.core.crypto.generateKeyPair(),d=this.getAppLinkIfEnabled(i.params.requester.metadata,a),l={type:Ae,receiverPublicKey:h,senderPublicKey:p};await this.sendError({id:i.id,topic:s,error:c,encodeOpts:l,rpcOpts:v.wc_sessionAuthenticate.autoReject,appLink:d})}},this.addSessionRequestToSessionRequestQueue=e=>{this.sessionRequestQueue.queue.push(e)},this.cleanupAfterResponse=e=>{this.deletePendingSessionRequest(e.response.id,{message:\"fulfilled\",code:0}),setTimeout(()=>{this.sessionRequestQueue.state=x.idle,this.processSessionRequestQueue()},tt(this.requestQueueDelay))},this.cleanupPendingSentRequestsForTopic=({topic:e,error:t})=>{const s=this.client.core.history.pending;s.length>0&&s.filter(i=>i.topic===e&&i.request.method===\"wc_sessionRequest\").forEach(i=>{const r=i.request.id,n=g(\"session_request\",r);if(this.events.listenerCount(n)===0)throw new Error(`emitting ${n} without any listeners`);this.events.emit(g(\"session_request\",i.request.id),{error:t})})},this.processSessionRequestQueue=()=>{if(this.sessionRequestQueue.state===x.active){this.client.logger.info(\"session request queue is already active.\");return}const e=this.sessionRequestQueue.queue[0];if(!e){this.client.logger.info(\"session request queue is empty.\");return}try{this.sessionRequestQueue.state=x.active,this.emitSessionRequest(e)}catch(t){this.client.logger.error(t)}},this.emitSessionRequest=e=>{this.client.events.emit(\"session_request\",e)},this.onPairingCreated=e=>{if(e.methods&&this.expectedPairingMethodMap.set(e.topic,e.methods),e.active)return;const t=this.client.proposal.getAll().find(s=>s.pairingTopic===e.topic);t&&this.onSessionProposeRequest({topic:e.topic,payload:ge(\"wc_sessionPropose\",{requiredNamespaces:t.requiredNamespaces,optionalNamespaces:t.optionalNamespaces,relays:t.relays,proposer:t.proposer,sessionProperties:t.sessionProperties},t.id)})},this.isValidConnect=async e=>{if(!L(e)){const{message:a}=u(\"MISSING_OR_INVALID\",`connect() params: ${JSON.stringify(e)}`);throw new Error(a)}const{pairingTopic:t,requiredNamespaces:s,optionalNamespaces:i,sessionProperties:r,relays:n}=e;if(ne(t)||await this.isValidPairingTopic(t),!kt(n,!0)){const{message:a}=u(\"MISSING_OR_INVALID\",`connect() relays: ${n}`);throw new Error(a)}!ne(s)&&Xe(s)!==0&&this.validateNamespaces(s,\"requiredNamespaces\"),!ne(i)&&Xe(i)!==0&&this.validateNamespaces(i,\"optionalNamespaces\"),ne(r)||this.validateSessionProps(r,\"sessionProperties\")},this.validateNamespaces=(e,t)=>{const s=$t(e,\"connect()\",t);if(s)throw new Error(s.message)},this.isValidApprove=async e=>{if(!L(e))throw new Error(u(\"MISSING_OR_INVALID\",`approve() params: ${e}`).message);const{id:t,namespaces:s,relayProtocol:i,sessionProperties:r}=e;this.checkRecentlyDeleted(t),await this.isValidProposalId(t);const n=this.client.proposal.get(t),a=Oe(s,\"approve()\");if(a)throw new Error(a.message);const c=Je(n.requiredNamespaces,s,\"approve()\");if(c)throw new Error(c.message);if(!k(i,!0)){const{message:h}=u(\"MISSING_OR_INVALID\",`approve() relayProtocol: ${i}`);throw new Error(h)}ne(r)||this.validateSessionProps(r,\"sessionProperties\")},this.isValidReject=async e=>{if(!L(e)){const{message:i}=u(\"MISSING_OR_INVALID\",`reject() params: ${e}`);throw new Error(i)}const{id:t,reason:s}=e;if(this.checkRecentlyDeleted(t),await this.isValidProposalId(t),!Kt(s)){const{message:i}=u(\"MISSING_OR_INVALID\",`reject() reason: ${JSON.stringify(s)}`);throw new Error(i)}},this.isValidSessionSettleRequest=e=>{if(!L(e)){const{message:c}=u(\"MISSING_OR_INVALID\",`onSessionSettleRequest() params: ${e}`);throw new Error(c)}const{relay:t,controller:s,namespaces:i,expiry:r}=e;if(!Ut(t)){const{message:c}=u(\"MISSING_OR_INVALID\",\"onSessionSettleRequest() relay protocol should be a string\");throw new Error(c)}const n=Gt(s,\"onSessionSettleRequest()\");if(n)throw new Error(n.message);const a=Oe(i,\"onSessionSettleRequest()\");if(a)throw new Error(a.message);if(J(r)){const{message:c}=u(\"EXPIRED\",\"onSessionSettleRequest()\");throw new Error(c)}},this.isValidUpdate=async e=>{if(!L(e)){const{message:a}=u(\"MISSING_OR_INVALID\",`update() params: ${e}`);throw new Error(a)}const{topic:t,namespaces:s}=e;this.checkRecentlyDeleted(t),await this.isValidSessionTopic(t);const i=this.client.session.get(t),r=Oe(s,\"update()\");if(r)throw new Error(r.message);const n=Je(i.requiredNamespaces,s,\"update()\");if(n)throw new Error(n.message)},this.isValidExtend=async e=>{if(!L(e)){const{message:s}=u(\"MISSING_OR_INVALID\",`extend() params: ${e}`);throw new Error(s)}const{topic:t}=e;this.checkRecentlyDeleted(t),await this.isValidSessionTopic(t)},this.isValidRequest=async e=>{if(!L(e)){const{message:a}=u(\"MISSING_OR_INVALID\",`request() params: ${e}`);throw new Error(a)}const{topic:t,request:s,chainId:i,expiry:r}=e;this.checkRecentlyDeleted(t),await this.isValidSessionTopic(t);const{namespaces:n}=this.client.session.get(t);if(!Be(n,i)){const{message:a}=u(\"MISSING_OR_INVALID\",`request() chainId: ${i}`);throw new Error(a)}if(!jt(s)){const{message:a}=u(\"MISSING_OR_INVALID\",`request() ${JSON.stringify(s)}`);throw new Error(a)}if(!Ft(n,i,s.method)){const{message:a}=u(\"MISSING_OR_INVALID\",`request() method: ${s.method}`);throw new Error(a)}if(r&&!Qt(r,me)){const{message:a}=u(\"MISSING_OR_INVALID\",`request() expiry: ${r}. Expiry must be a number (in seconds) between ${me.min} and ${me.max}`);throw new Error(a)}},this.isValidRespond=async e=>{var t;if(!L(e)){const{message:r}=u(\"MISSING_OR_INVALID\",`respond() params: ${e}`);throw new Error(r)}const{topic:s,response:i}=e;try{await this.isValidSessionTopic(s)}catch(r){throw(t=e?.response)!=null&&t.id&&this.cleanupAfterResponse(e),r}if(!zt(i)){const{message:r}=u(\"MISSING_OR_INVALID\",`respond() response: ${JSON.stringify(i)}`);throw new Error(r)}},this.isValidPing=async e=>{if(!L(e)){const{message:s}=u(\"MISSING_OR_INVALID\",`ping() params: ${e}`);throw new Error(s)}const{topic:t}=e;await this.isValidSessionOrPairingTopic(t)},this.isValidEmit=async e=>{if(!L(e)){const{message:n}=u(\"MISSING_OR_INVALID\",`emit() params: ${e}`);throw new Error(n)}const{topic:t,event:s,chainId:i}=e;await this.isValidSessionTopic(t);const{namespaces:r}=this.client.session.get(t);if(!Be(r,i)){const{message:n}=u(\"MISSING_OR_INVALID\",`emit() chainId: ${i}`);throw new Error(n)}if(!Ht(s)){const{message:n}=u(\"MISSING_OR_INVALID\",`emit() event: ${JSON.stringify(s)}`);throw new Error(n)}if(!Yt(r,i,s.name)){const{message:n}=u(\"MISSING_OR_INVALID\",`emit() event: ${JSON.stringify(s)}`);throw new Error(n)}},this.isValidDisconnect=async e=>{if(!L(e)){const{message:s}=u(\"MISSING_OR_INVALID\",`disconnect() params: ${e}`);throw new Error(s)}const{topic:t}=e;await this.isValidSessionOrPairingTopic(t)},this.isValidAuthenticate=e=>{const{chains:t,uri:s,domain:i,nonce:r}=e;if(!Array.isArray(t)||t.length===0)throw new Error(\"chains is required and must be a non-empty array\");if(!k(s,!1))throw new Error(\"uri is required parameter\");if(!k(i,!1))throw new Error(\"domain is required parameter\");if(!k(r,!1))throw new Error(\"nonce is required parameter\");if([...new Set(t.map(a=>Ne(a).namespace))].length>1)throw new Error(\"Multi-namespace requests are not supported. Please request single namespace only.\");const{namespace:n}=Ne(t[0]);if(n!==\"eip155\")throw new Error(\"Only eip155 namespace is supported for authenticated sessions. Please use .connect() for non-eip155 chains.\")},this.getVerifyContext=async e=>{const{attestationId:t,hash:s,encryptedId:i,metadata:r,transportType:n}=e,a={verified:{verifyUrl:r.verifyUrl||It,validation:\"UNKNOWN\",origin:r.url||\"\"}};try{if(n===f.link_mode){const h=this.getAppLinkIfEnabled(r,n);return a.verified.validation=h&&new URL(h).origin===new URL(r.url).origin?\"VALID\":\"INVALID\",a}const c=await this.client.core.verify.resolve({attestationId:t,hash:s,encryptedId:i,verifyUrl:r.verifyUrl});c&&(a.verified.origin=c.origin,a.verified.isScam=c.isScam,a.verified.validation=c.origin===new URL(r.url).origin?\"VALID\":\"INVALID\")}catch(c){this.client.logger.warn(c)}return this.client.logger.debug(`Verify context: ${JSON.stringify(a)}`),a},this.validateSessionProps=(e,t)=>{Object.values(e).forEach(s=>{if(!k(s,!1)){const{message:i}=u(\"MISSING_OR_INVALID\",`${t} must be in Record format. Received: ${JSON.stringify(s)}`);throw new Error(i)}})},this.getPendingAuthRequest=e=>{const t=this.client.auth.requests.get(e);return typeof t==\"object\"?t:void 0},this.addToRecentlyDeleted=(e,t)=>{if(this.recentlyDeletedMap.set(e,t),this.recentlyDeletedMap.size>=this.recentlyDeletedLimit){let s=0;const i=this.recentlyDeletedLimit/2;for(const r of this.recentlyDeletedMap.keys()){if(s++>=i)break;this.recentlyDeletedMap.delete(r)}}},this.checkRecentlyDeleted=e=>{const t=this.recentlyDeletedMap.get(e);if(t){const{message:s}=u(\"MISSING_OR_INVALID\",`Record was recently deleted - ${t}: ${e}`);throw new Error(s)}},this.isLinkModeEnabled=(e,t)=>{var s,i,r,n,a,c,h,p,d;return!e||t!==f.link_mode?!1:((i=(s=this.client.metadata)==null?void 0:s.redirect)==null?void 0:i.linkMode)===!0&&((n=(r=this.client.metadata)==null?void 0:r.redirect)==null?void 0:n.universal)!==void 0&&((c=(a=this.client.metadata)==null?void 0:a.redirect)==null?void 0:c.universal)!==\"\"&&((h=e?.redirect)==null?void 0:h.universal)!==void 0&&((p=e?.redirect)==null?void 0:p.universal)!==\"\"&&((d=e?.redirect)==null?void 0:d.linkMode)===!0&&this.client.core.linkModeSupportedApps.includes(e.redirect.universal)&&typeof(global==null?void 0:global.Linking)<\"u\"},this.getAppLinkIfEnabled=(e,t)=>{var s;return this.isLinkModeEnabled(e,t)?(s=e?.redirect)==null?void 0:s.universal:void 0},this.handleLinkModeMessage=({url:e})=>{if(!e||!e.includes(\"wc_ev\")||!e.includes(\"topic\"))return;const t=We(e,\"topic\")||\"\",s=decodeURIComponent(We(e,\"wc_ev\")||\"\"),i=this.client.session.keys.includes(t);i&&this.client.session.update(t,{transportType:f.link_mode}),this.client.core.dispatchEnvelope({topic:t,message:s,sessionExists:i})},this.registerLinkModeListeners=async()=>{var e;if(Xt()||Jt()&&(e=this.client.metadata.redirect)!=null&&e.linkMode){const t=global==null?void 0:global.Linking;if(typeof t<\"u\"){t.addEventListener(\"url\",this.handleLinkModeMessage,this.client.name);const s=await t.getInitialURL();s&&setTimeout(()=>{this.handleLinkModeMessage({url:s})},50)}}}}isInitialized(){if(!this.initialized){const{message:o}=u(\"NOT_INITIALIZED\",this.name);throw new Error(o)}}async confirmOnlineStateOrThrow(){await this.client.core.relayer.confirmOnlineStateOrThrow()}registerRelayerEvents(){this.client.core.relayer.on(Ue.message,o=>{!this.initialized||this.relayMessageCache.length>0?this.relayMessageCache.push(o):this.onRelayMessage(o)})}async onRelayMessage(o){const{topic:e,message:t,attestation:s,transportType:i}=o,{publicKey:r}=this.client.auth.authKeys.keys.includes(ae)?this.client.auth.authKeys.get(ae):{responseTopic:void 0,publicKey:void 0},n=await this.client.core.crypto.decode(e,t,{receiverPublicKey:r,encoding:i===f.link_mode?ie:de});try{os(n)?(this.client.core.history.set(e,n),this.onRelayEventRequest({topic:e,payload:n,attestation:s,transportType:i,encryptedId:X(t)})):as(n)?(await this.client.core.history.resolve(n),await this.onRelayEventResponse({topic:e,payload:n,transportType:i}),this.client.core.history.delete(e,n.id)):this.onRelayEventUnknownPayload({topic:e,payload:n,transportType:i})}catch(a){this.client.logger.error(a)}}registerExpirerEvents(){this.client.core.expirer.on(ft.expired,async o=>{const{topic:e,id:t}=Bt(o.target);if(t&&this.client.pendingRequest.keys.includes(t))return await this.deletePendingSessionRequest(t,u(\"EXPIRED\"),!0);if(t&&this.client.auth.requests.keys.includes(t))return await this.deletePendingAuthRequest(t,u(\"EXPIRED\"),!0);e?this.client.session.keys.includes(e)&&(await this.deleteSession({topic:e,expirerHasDeleted:!0}),this.client.events.emit(\"session_expire\",{topic:e})):t&&(await this.deleteProposal(t,!0),this.client.events.emit(\"proposal_expire\",{id:t}))})}registerPairingEvents(){this.client.core.pairing.events.on(Ge.create,o=>this.onPairingCreated(o)),this.client.core.pairing.events.on(Ge.delete,o=>{this.addToRecentlyDeleted(o.topic,\"pairing\")})}isValidPairingTopic(o){if(!k(o,!1)){const{message:e}=u(\"MISSING_OR_INVALID\",`pairing topic should be a string: ${o}`);throw new Error(e)}if(!this.client.core.pairing.pairings.keys.includes(o)){const{message:e}=u(\"NO_MATCHING_KEY\",`pairing topic doesn't exist: ${o}`);throw new Error(e)}if(J(this.client.core.pairing.pairings.get(o).expiry)){const{message:e}=u(\"EXPIRED\",`pairing topic: ${o}`);throw new Error(e)}}async isValidSessionTopic(o){if(!k(o,!1)){const{message:e}=u(\"MISSING_OR_INVALID\",`session topic should be a string: ${o}`);throw new Error(e)}if(this.checkRecentlyDeleted(o),!this.client.session.keys.includes(o)){const{message:e}=u(\"NO_MATCHING_KEY\",`session topic doesn't exist: ${o}`);throw new Error(e)}if(J(this.client.session.get(o).expiry)){await this.deleteSession({topic:o});const{message:e}=u(\"EXPIRED\",`session topic: ${o}`);throw new Error(e)}if(!this.client.core.crypto.keychain.has(o)){const{message:e}=u(\"MISSING_OR_INVALID\",`session topic does not exist in keychain: ${o}`);throw await this.deleteSession({topic:o}),new Error(e)}}async isValidSessionOrPairingTopic(o){if(this.checkRecentlyDeleted(o),this.client.session.keys.includes(o))await this.isValidSessionTopic(o);else if(this.client.core.pairing.pairings.keys.includes(o))this.isValidPairingTopic(o);else if(k(o,!1)){const{message:e}=u(\"NO_MATCHING_KEY\",`session or pairing topic doesn't exist: ${o}`);throw new Error(e)}else{const{message:e}=u(\"MISSING_OR_INVALID\",`session or pairing topic should be a string: ${o}`);throw new Error(e)}}async isValidProposalId(o){if(!Wt(o)){const{message:e}=u(\"MISSING_OR_INVALID\",`proposal id should be a number: ${o}`);throw new Error(e)}if(!this.client.proposal.keys.includes(o)){const{message:e}=u(\"NO_MATCHING_KEY\",`proposal id doesn't exist: ${o}`);throw new Error(e)}if(J(this.client.proposal.get(o).expiryTimestamp)){await this.deleteProposal(o);const{message:e}=u(\"EXPIRED\",`proposal id: ${o}`);throw new Error(e)}}}class Ss extends H{constructor(o,e){super(o,e,st,ye),this.core=o,this.logger=e}}class yt extends H{constructor(o,e){super(o,e,rt,ye),this.core=o,this.logger=e}}class Is extends H{constructor(o,e){super(o,e,ot,ye,t=>t.id),this.core=o,this.logger=e}}class fs extends H{constructor(o,e){super(o,e,pt,oe,()=>ae),this.core=o,this.logger=e}}class vs extends H{constructor(o,e){super(o,e,ht,oe),this.core=o,this.logger=e}}class qs extends H{constructor(o,e){super(o,e,dt,oe,t=>t.id),this.core=o,this.logger=e}}class Ts{constructor(o,e){this.core=o,this.logger=e,this.authKeys=new fs(this.core,this.logger),this.pairingTopics=new vs(this.core,this.logger),this.requests=new qs(this.core,this.logger)}async init(){await this.authKeys.init(),await this.pairingTopics.init(),await this.requests.init()}}class _e extends At{constructor(o){super(o),this.protocol=be,this.version=Ce,this.name=we.name,this.events=new ts,this.on=(t,s)=>this.events.on(t,s),this.once=(t,s)=>this.events.once(t,s),this.off=(t,s)=>this.events.off(t,s),this.removeListener=(t,s)=>this.events.removeListener(t,s),this.removeAllListeners=t=>this.events.removeAllListeners(t),this.connect=async t=>{try{return await this.engine.connect(t)}catch(s){throw this.logger.error(s.message),s}},this.pair=async t=>{try{return await this.engine.pair(t)}catch(s){throw this.logger.error(s.message),s}},this.approve=async t=>{try{return await this.engine.approve(t)}catch(s){throw this.logger.error(s.message),s}},this.reject=async t=>{try{return await this.engine.reject(t)}catch(s){throw this.logger.error(s.message),s}},this.update=async t=>{try{return await this.engine.update(t)}catch(s){throw this.logger.error(s.message),s}},this.extend=async t=>{try{return await this.engine.extend(t)}catch(s){throw this.logger.error(s.message),s}},this.request=async t=>{try{return await this.engine.request(t)}catch(s){throw this.logger.error(s.message),s}},this.respond=async t=>{try{return await this.engine.respond(t)}catch(s){throw this.logger.error(s.message),s}},this.ping=async t=>{try{return await this.engine.ping(t)}catch(s){throw this.logger.error(s.message),s}},this.emit=async t=>{try{return await this.engine.emit(t)}catch(s){throw this.logger.error(s.message),s}},this.disconnect=async t=>{try{return await this.engine.disconnect(t)}catch(s){throw this.logger.error(s.message),s}},this.find=t=>{try{return this.engine.find(t)}catch(s){throw this.logger.error(s.message),s}},this.getPendingSessionRequests=()=>{try{return this.engine.getPendingSessionRequests()}catch(t){throw this.logger.error(t.message),t}},this.authenticate=async(t,s)=>{try{return await this.engine.authenticate(t,s)}catch(i){throw this.logger.error(i.message),i}},this.formatAuthMessage=t=>{try{return this.engine.formatAuthMessage(t)}catch(s){throw this.logger.error(s.message),s}},this.approveSessionAuthenticate=async t=>{try{return await this.engine.approveSessionAuthenticate(t)}catch(s){throw this.logger.error(s.message),s}},this.rejectSessionAuthenticate=async t=>{try{return await this.engine.rejectSessionAuthenticate(t)}catch(s){throw this.logger.error(s.message),s}},this.name=o?.name||we.name,this.metadata=o?.metadata||Zt(),this.signConfig=o?.signConfig;const e=typeof o?.logger<\"u\"&&typeof o?.logger!=\"string\"?o.logger:qt(Tt({level:o?.logger||we.logger}));this.core=o?.core||new vt(o),this.logger=Nt(e,this.name),this.session=new yt(this.core,this.logger),this.proposal=new Ss(this.core,this.logger),this.pendingRequest=new Is(this.core,this.logger),this.engine=new Rs(this),this.auth=new Ts(this.core,this.logger)}static async init(o){const e=new _e(o);return await e.initialize(),e}get context(){return Pt(this.logger)}get pairing(){return this.core.pairing.pairings}async initialize(){this.logger.trace(\"Initialized\");try{await this.core.start(),await this.session.init(),await this.proposal.init(),await this.pendingRequest.init(),await this.auth.init(),await this.engine.init(),this.logger.info(\"SignClient Initialization Success\"),this.engine.processRelayMessageCache()}catch(o){throw this.logger.info(\"SignClient Initialization Failure\"),this.logger.error(o.message),o}}}const Ns=yt,Ps=_e;export{lt as AUTH_CONTEXT,pt as AUTH_KEYS_CONTEXT,ht as AUTH_PAIRING_TOPIC_CONTEXT,ct as AUTH_PROTOCOL,ae as AUTH_PUBLIC_KEY_NAME,dt as AUTH_REQUEST_CONTEXT,oe as AUTH_STORAGE_PREFIX,gs as AUTH_VERSION,nt as ENGINE_CONTEXT,x as ENGINE_QUEUE_STATES,v as ENGINE_RPC_OPTS,hs as HISTORY_CONTEXT,ps as HISTORY_EVENTS,ds as HISTORY_STORAGE_VERSION,at as METHODS_TO_VERIFY,st as PROPOSAL_CONTEXT,us as PROPOSAL_EXPIRY,it as PROPOSAL_EXPIRY_MESSAGE,ot as REQUEST_CONTEXT,rt as SESSION_CONTEXT,z as SESSION_EXPIRY,me as SESSION_REQUEST_EXPIRY_BOUNDARIES,Le as SIGN_CLIENT_CONTEXT,we as SIGN_CLIENT_DEFAULT,cs as SIGN_CLIENT_EVENTS,be as SIGN_CLIENT_PROTOCOL,ls as SIGN_CLIENT_STORAGE_OPTIONS,ye as SIGN_CLIENT_STORAGE_PREFIX,Ce as SIGN_CLIENT_VERSION,Ns as SessionStore,Ps as SignClient,xe as WALLETCONNECT_DEEPLINK_CHOICE,_e as default};\n//# sourceMappingURL=index.es.js.map\n","export class DefaultLogger {\n constructor(logLevel = 'info') {\n this.logLevel = 'info';\n this.logLevel = logLevel;\n }\n setLogLevel(level) {\n this.logLevel = level;\n }\n getLogLevel() {\n return this.logLevel;\n }\n error(message, ...args) {\n if (['error', 'warn', 'info', 'debug'].includes(this.logLevel)) {\n console.error(`[ERROR] ${message}`, ...args);\n }\n }\n warn(message, ...args) {\n if (['warn', 'info', 'debug'].includes(this.logLevel)) {\n console.warn(`[WARN] ${message}`, ...args);\n }\n }\n info(message, ...args) {\n if (['info', 'debug'].includes(this.logLevel)) {\n console.info(`[INFO] ${message}`, ...args);\n }\n }\n debug(message, ...args) {\n if (this.logLevel === 'debug') {\n console.debug(`[DEBUG] ${message}`, ...args);\n }\n }\n}\n","export class SessionNotFoundError extends Error {\n constructor(message) {\n super(message);\n this.name = 'SessionNotFoundError';\n }\n}\n","/*\n *\n * Hedera Wallet Connect\n *\n * Copyright (C) 2023 Hedera Hashgraph, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nimport { AccountBalance, AccountId, AccountInfo, LedgerId, SignerSignature, Transaction, TransactionRecord, Client, PublicKey, TransactionId, TransactionResponse, Query, AccountRecordsQuery, AccountInfoQuery, AccountBalanceQuery, TransactionReceiptQuery, TransactionReceipt, TransactionRecordQuery, } from '@hashgraph/sdk';\nimport { proto } from '@hashgraph/proto';\nimport { HederaJsonRpcMethod, base64StringToSignatureMap, base64StringToUint8Array, ledgerIdToCAIPChainId, queryToBase64String, transactionBodyToBase64String, transactionToBase64String, transactionToTransactionBody, extensionOpen, Uint8ArrayToBase64String, Uint8ArrayToString, } from '../shared';\nimport { DefaultLogger } from '../shared/logger';\nimport { SessionNotFoundError } from './SessionNotFoundError';\nconst clients = {};\nexport class DAppSigner {\n constructor(accountId, signClient, topic, ledgerId = LedgerId.MAINNET, extensionId, logLevel = 'debug') {\n this.accountId = accountId;\n this.signClient = signClient;\n this.topic = topic;\n this.ledgerId = ledgerId;\n this.extensionId = extensionId;\n this.logger = new DefaultLogger(logLevel);\n }\n /**\n * Sets the logging level for the DAppSigner\n * @param level - The logging level to set\n */\n setLogLevel(level) {\n if (this.logger instanceof DefaultLogger) {\n this.logger.setLogLevel(level);\n }\n }\n _getHederaClient() {\n const ledgerIdString = this.ledgerId.toString();\n if (!clients[ledgerIdString]) {\n clients[ledgerIdString] = Client.forName(ledgerIdString);\n }\n return clients[ledgerIdString];\n }\n get _signerAccountId() {\n return `${ledgerIdToCAIPChainId(this.ledgerId)}:${this.accountId.toString()}`;\n }\n _getRandomNodes(numberOfNodes) {\n const allNodes = Object.values(this._getHederaClient().network).map((o) => typeof o === 'string' ? AccountId.fromString(o) : o);\n // shuffle nodes\n for (let i = allNodes.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [allNodes[i], allNodes[j]] = [allNodes[j], allNodes[i]];\n }\n return allNodes.slice(0, numberOfNodes);\n }\n request(request) {\n var _a, _b;\n // Avoid a wallet call if the session is no longer valid\n if (!((_b = (_a = this === null || this === void 0 ? void 0 : this.signClient) === null || _a === void 0 ? void 0 : _a.session) === null || _b === void 0 ? void 0 : _b.get(this.topic))) {\n this.logger.error('Session no longer exists, signer will be removed. Please reconnect to the wallet.');\n // Notify DAppConnector to remove this signer\n this.signClient.emit({\n topic: this.topic,\n event: {\n name: 'session_delete',\n data: { topic: this.topic },\n },\n chainId: ledgerIdToCAIPChainId(this.ledgerId),\n });\n throw new SessionNotFoundError('Session no longer exists. Please reconnect to the wallet.');\n }\n if (this.extensionId)\n extensionOpen(this.extensionId);\n return this.signClient.request({\n topic: this.topic,\n request,\n chainId: ledgerIdToCAIPChainId(this.ledgerId),\n });\n }\n getAccountId() {\n return this.accountId;\n }\n getAccountKey() {\n throw new Error('Method not implemented.');\n }\n getLedgerId() {\n return this.ledgerId;\n }\n getNetwork() {\n return this._getHederaClient().network;\n }\n getMirrorNetwork() {\n return this._getHederaClient().mirrorNetwork;\n }\n getAccountBalance() {\n return this.call(new AccountBalanceQuery().setAccountId(this.accountId));\n }\n getAccountInfo() {\n return this.call(new AccountInfoQuery().setAccountId(this.accountId));\n }\n getAccountRecords() {\n return this.call(new AccountRecordsQuery().setAccountId(this.accountId));\n }\n getMetadata() {\n return this.signClient.metadata;\n }\n async sign(data, signOptions = {\n encoding: 'utf-8',\n }) {\n try {\n const messageToSign = signOptions.encoding === 'base64'\n ? Uint8ArrayToBase64String(data[0])\n : Uint8ArrayToString(data[0]);\n const { signatureMap } = await this.request({\n method: HederaJsonRpcMethod.SignMessage,\n params: {\n signerAccountId: this._signerAccountId,\n message: messageToSign,\n },\n });\n const sigmap = base64StringToSignatureMap(signatureMap);\n const signerSignature = new SignerSignature({\n accountId: this.getAccountId(),\n publicKey: PublicKey.fromBytes(sigmap.sigPair[0].pubKeyPrefix),\n signature: sigmap.sigPair[0].ed25519 ||\n sigmap.sigPair[0].ECDSASecp256k1,\n });\n this.logger.debug('Data signed successfully');\n return [signerSignature];\n }\n catch (error) {\n this.logger.error('Error signing data:', error);\n throw error;\n }\n }\n async checkTransaction(transaction) {\n throw new Error('Method not implemented.');\n }\n async populateTransaction(transaction) {\n return transaction\n .setNodeAccountIds(this._getRandomNodes(10)) // allow retrying on up to 10 nodes\n .setTransactionId(TransactionId.generate(this.getAccountId()));\n }\n /**\n * Prepares a transaction object for signing using a single node account id.\n * If the transaction object does not already have a node account id,\n * generate a random node account id using the Hedera SDK client\n *\n * @param transaction - Any instance of a class that extends `Transaction`\n * @returns transaction - `Transaction` object with signature\n */\n async signTransaction(transaction) {\n let nodeAccountId;\n if (!transaction.nodeAccountIds || transaction.nodeAccountIds.length === 0)\n nodeAccountId = this._getRandomNodes(1)[0];\n else\n nodeAccountId = transaction.nodeAccountIds[0];\n const transactionBody = transactionToTransactionBody(transaction, nodeAccountId);\n if (!transactionBody)\n throw new Error('Failed to serialize transaction body');\n const transactionBodyBase64 = transactionBodyToBase64String(transactionBody);\n const { signatureMap } = await this.request({\n method: HederaJsonRpcMethod.SignTransaction,\n params: {\n signerAccountId: this._signerAccountId,\n transactionBody: transactionBodyBase64,\n },\n });\n const sigMap = base64StringToSignatureMap(signatureMap);\n const bodyBytes = base64StringToUint8Array(transactionBodyBase64);\n const bytes = proto.Transaction.encode({ bodyBytes, sigMap }).finish();\n return Transaction.fromBytes(bytes);\n }\n async _tryExecuteTransactionRequest(request) {\n try {\n const requestToBytes = request.toBytes();\n this.logger.debug('Creating transaction from bytes', requestToBytes, request);\n const transaction = Transaction.fromBytes(requestToBytes);\n this.logger.debug('Executing transaction request', transaction);\n const result = await this.request({\n method: HederaJsonRpcMethod.SignAndExecuteTransaction,\n params: {\n signerAccountId: this._signerAccountId,\n transactionList: transactionToBase64String(transaction),\n },\n });\n this.logger.debug('Transaction request completed successfully');\n return { result: TransactionResponse.fromJSON(result) };\n }\n catch (error) {\n this.logger.error('Error executing transaction request:', error);\n return { error };\n }\n }\n async _parseQueryResponse(query, base64EncodedQueryResponse) {\n if (query instanceof AccountRecordsQuery) {\n const base64EncodedQueryResponseSplit = base64EncodedQueryResponse.split(',');\n const data = base64EncodedQueryResponseSplit.map((o) => base64StringToUint8Array(o));\n return data.map((o) => TransactionRecord.fromBytes(o));\n }\n const data = base64StringToUint8Array(base64EncodedQueryResponse);\n if (query instanceof AccountBalanceQuery) {\n return AccountBalance.fromBytes(data);\n }\n else if (query instanceof AccountInfoQuery) {\n return AccountInfo.fromBytes(data);\n }\n else if (query instanceof TransactionReceiptQuery) {\n return TransactionReceipt.fromBytes(data);\n }\n else if (query instanceof TransactionRecordQuery) {\n return TransactionRecord.fromBytes(data);\n }\n else {\n throw new Error('Unsupported query type');\n }\n }\n /**\n * Executes a free receipt query without signing a transaction.\n * Enables the DApp to fetch the receipt of a transaction without making a new request\n * to the wallet.\n * @param request - The query to execute\n * @returns The result of the query\n */\n async executeReceiptQueryFromRequest(request) {\n try {\n const isMainnet = this.ledgerId === LedgerId.MAINNET;\n const client = isMainnet ? Client.forMainnet() : Client.forTestnet();\n const receipt = TransactionReceiptQuery.fromBytes(request.toBytes());\n const result = await receipt.execute(client);\n return { result };\n }\n catch (error) {\n return { error };\n }\n }\n async _tryExecuteQueryRequest(request) {\n try {\n const isReceiptQuery = request instanceof TransactionReceiptQuery;\n if (isReceiptQuery) {\n this.logger.debug('Attempting to execute free receipt query', request);\n const result = await this.executeReceiptQueryFromRequest(request);\n if (!(result === null || result === void 0 ? void 0 : result.error)) {\n return { result: result.result };\n }\n this.logger.error('Error executing free receipt query. Sending to wallet.', result.error);\n }\n /**\n * Note, should we be converting these to specific query types?\n * Left alone to avoid changing the API for other requests.\n */\n const query = isReceiptQuery\n ? TransactionReceiptQuery.fromBytes(request.toBytes())\n : Query.fromBytes(request.toBytes());\n this.logger.debug('Executing query request', query, queryToBase64String(query), isReceiptQuery);\n const result = await this.request({\n method: HederaJsonRpcMethod.SignAndExecuteQuery,\n params: {\n signerAccountId: this._signerAccountId,\n query: queryToBase64String(query),\n },\n });\n this.logger.debug('Query request completed successfully', result);\n return { result: this._parseQueryResponse(query, result.response) };\n }\n catch (error) {\n this.logger.error('Error executing query request:', error);\n return { error };\n }\n }\n async call(request) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n const isReceiptQuery = request instanceof TransactionReceiptQuery;\n let txResult = undefined;\n // a receipt query is a free query and we should not execute a transaction.\n if (!isReceiptQuery) {\n txResult = await this._tryExecuteTransactionRequest(request);\n if (txResult.result) {\n return txResult.result;\n }\n }\n const queryResult = await this._tryExecuteQueryRequest(request);\n if (queryResult.result) {\n return queryResult.result;\n }\n // TODO: make this error more usable\n if (isReceiptQuery) {\n throw new Error('Error executing receipt query: \\n' +\n JSON.stringify({\n queryError: {\n name: (_a = queryResult.error) === null || _a === void 0 ? void 0 : _a.name,\n message: (_b = queryResult.error) === null || _b === void 0 ? void 0 : _b.message,\n stack: (_c = queryResult.error) === null || _c === void 0 ? void 0 : _c.stack,\n },\n }));\n }\n throw new Error('Error executing transaction or query: \\n' +\n JSON.stringify({\n txError: {\n name: (_d = txResult === null || txResult === void 0 ? void 0 : txResult.error) === null || _d === void 0 ? void 0 : _d.name,\n message: (_e = txResult === null || txResult === void 0 ? void 0 : txResult.error) === null || _e === void 0 ? void 0 : _e.message,\n stack: (_f = txResult === null || txResult === void 0 ? void 0 : txResult.error) === null || _f === void 0 ? void 0 : _f.stack,\n },\n queryError: {\n name: (_g = queryResult.error) === null || _g === void 0 ? void 0 : _g.name,\n message: (_h = queryResult.error) === null || _h === void 0 ? void 0 : _h.message,\n stack: (_j = queryResult.error) === null || _j === void 0 ? void 0 : _j.stack,\n },\n }, null, 2));\n }\n}\n","/*\n *\n * Hedera Wallet Connect\n *\n * Copyright (C) 2023 Hedera Hashgraph, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nimport { LedgerId, Transaction } from '@hashgraph/sdk';\nimport QRCodeModal from '@walletconnect/qrcode-modal';\nimport { WalletConnectModal } from '@walletconnect/modal';\nimport SignClient from '@walletconnect/sign-client';\nimport { getSdkError } from '@walletconnect/utils';\nimport { DefaultLogger } from '../shared/logger';\nimport { HederaJsonRpcMethod, accountAndLedgerFromSession, networkNamespaces, extensionConnect, findExtensions, } from '../shared';\nimport { DAppSigner } from './DAppSigner';\nexport * from './DAppSigner';\nexport { SessionNotFoundError } from './SessionNotFoundError';\nexport class DAppConnector {\n /**\n * Initializes the DAppConnector instance.\n * @param metadata - SignClientTypes.Metadata object for the DApp metadata.\n * @param network - LedgerId representing the network (default: LedgerId.TESTNET).\n * @param projectId - Project ID for the WalletConnect client.\n * @param methods - Array of supported methods for the DApp (optional).\n * @param events - Array of supported events for the DApp (optional).\n * @param chains - Array of supported chains for the DApp (optional).\n * @param logLevel - Logging level for the DAppConnector (optional).\n */\n constructor(metadata, network, projectId, methods, events, chains, logLevel = 'debug') {\n this.network = LedgerId.TESTNET;\n this.supportedMethods = [];\n this.supportedEvents = [];\n this.supportedChains = [];\n this.extensions = [];\n this.onSessionIframeCreated = null;\n this.signers = [];\n this.isInitializing = false;\n this.abortableConnect = async (callback) => {\n return new Promise(async (resolve, reject) => {\n const pairTimeoutMs = 480000;\n const timeout = setTimeout(() => {\n QRCodeModal.close();\n reject(new Error(`Connect timed out after ${pairTimeoutMs}(ms)`));\n }, pairTimeoutMs);\n try {\n return resolve(await callback());\n }\n catch (error) {\n reject(error);\n }\n finally {\n clearTimeout(timeout);\n }\n });\n };\n this.logger = new DefaultLogger(logLevel);\n this.dAppMetadata = metadata;\n this.network = network;\n this.projectId = projectId;\n this.supportedMethods = methods !== null && methods !== void 0 ? methods : Object.values(HederaJsonRpcMethod);\n this.supportedEvents = events !== null && events !== void 0 ? events : [];\n this.supportedChains = chains !== null && chains !== void 0 ? chains : [];\n this.extensions = [];\n this.walletConnectModal = new WalletConnectModal({\n projectId: projectId,\n chains: chains,\n });\n findExtensions((metadata, isIframe) => {\n this.extensions.push(Object.assign(Object.assign({}, metadata), { available: true, availableInIframe: isIframe }));\n });\n }\n /**\n * Sets the logging level for the DAppConnector\n * @param level - The logging level to set\n */\n setLogLevel(level) {\n if (this.logger instanceof DefaultLogger) {\n this.logger.setLogLevel(level);\n }\n }\n /**\n * Initializes the DAppConnector instance.\n * @param logger - `BaseLogger` for logging purposes (optional).\n */\n async init({ logger } = {}) {\n try {\n this.isInitializing = true;\n if (!this.projectId) {\n throw new Error('Project ID is not defined');\n }\n this.walletConnectClient = await SignClient.init({\n logger,\n relayUrl: 'wss://relay.walletconnect.com',\n projectId: this.projectId,\n metadata: this.dAppMetadata,\n });\n const existingSessions = this.walletConnectClient.session.getAll();\n if (existingSessions.length > 0)\n this.signers = existingSessions.flatMap((session) => this.createSigners(session));\n else\n this.checkIframeConnect();\n this.walletConnectClient.on('session_event', this.handleSessionEvent.bind(this));\n this.walletConnectClient.on('session_update', this.handleSessionUpdate.bind(this));\n this.walletConnectClient.on('session_delete', this.handleSessionDelete.bind(this));\n // Listen for custom session_delete events from DAppSigner\n this.walletConnectClient.core.events.on('session_delete', this.handleSessionDelete.bind(this));\n this.walletConnectClient.core.pairing.events.on('pairing_delete', this.handlePairingDelete.bind(this));\n }\n catch (e) {\n this.logger.error('Error initializing DAppConnector:', e);\n }\n finally {\n this.isInitializing = false;\n }\n }\n /**\n * Retrieves a DAppSigner for the specified Hedera Account ID.\n *\n * @param {AccountId} accountId - The Hedera Account ID to find the associated signer.\n * @returns {DAppSigner} - The signer object of type {@link DAppSigner} corresponding to the provided account ID.\n * @throws {Error} - If no signer is found for the provided account ID.\n */\n getSigner(accountId) {\n if (this.isInitializing) {\n throw new Error('DAppConnector is not initialized yet. Try again later.');\n }\n const signer = this.signers.find((signer) => signer.getAccountId().equals(accountId));\n if (!signer)\n throw new Error('Signer is not found for this accountId');\n return signer;\n }\n /**\n * Initiates the WalletConnect connection flow using a QR code.\n * @deprecated Use `openModal` instead.\n * @param pairingTopic - The pairing topic for the connection (optional).\n * @returns A Promise that resolves when the connection process is complete.\n */\n async connectQR(pairingTopic) {\n return this.abortableConnect(async () => {\n try {\n const { uri, approval } = await this.connectURI(pairingTopic);\n if (!uri)\n throw new Error('URI is not defined');\n QRCodeModal.open(uri, () => {\n throw new Error('User rejected pairing');\n });\n await this.onSessionConnected(await approval());\n }\n finally {\n QRCodeModal.close();\n }\n });\n }\n /**\n * Initiates the WalletConnect connection flow using a QR code.\n * @param pairingTopic - The pairing topic for the connection (optional).\n * @returns {Promise} - A Promise that resolves when the connection process is complete.\n */\n async openModal(pairingTopic) {\n try {\n const { uri, approval } = await this.connectURI(pairingTopic);\n this.walletConnectModal.openModal({ uri });\n const session = await approval();\n await this.onSessionConnected(session);\n return session;\n }\n finally {\n this.walletConnectModal.closeModal();\n }\n }\n /**\n * Initiates the WallecConnect connection flow using URI.\n * @param pairingTopic - The pairing topic for the connection (optional).\n * @param extensionId - The id for the extension used to connect (optional).\n * @returns A Promise that resolves when the connection process is complete.\n */\n async connect(launchCallback, pairingTopic, extensionId) {\n return this.abortableConnect(async () => {\n var _a;\n const { uri, approval } = await this.connectURI(pairingTopic);\n if (!uri)\n throw new Error('URI is not defined');\n launchCallback(uri);\n const session = await approval();\n if (extensionId) {\n const sessionProperties = Object.assign(Object.assign({}, session.sessionProperties), { extensionId });\n session.sessionProperties = sessionProperties;\n await ((_a = this.walletConnectClient) === null || _a === void 0 ? void 0 : _a.session.update(session.topic, {\n sessionProperties,\n }));\n }\n await this.onSessionConnected(session);\n return session;\n });\n }\n /**\n * Initiates the WallecConnect connection flow sending a message to the extension.\n * @param extensionId - The id for the extension used to connect.\n * @param pairingTopic - The pairing topic for the connection (optional).\n * @returns A Promise that resolves when the connection process is complete.\n */\n async connectExtension(extensionId, pairingTopic) {\n const extension = this.extensions.find((ext) => ext.id === extensionId);\n if (!extension || !extension.available)\n throw new Error('Extension is not available');\n return this.connect((uri) => {\n extensionConnect(extension.id, extension.availableInIframe, uri);\n }, pairingTopic, extension.availableInIframe ? undefined : extensionId);\n }\n /**\n * Validates the session by checking if the session exists and is valid.\n * Also ensures the signer exists for the session.\n * @param topic - The topic of the session to validate.\n * @returns {boolean} - True if the session exists and has a valid signer, false otherwise.\n */\n validateSession(topic) {\n try {\n if (!this.walletConnectClient) {\n return false;\n }\n const session = this.walletConnectClient.session.get(topic);\n const hasSigner = this.signers.some((signer) => signer.topic === topic);\n if (!session) {\n // If session doesn't exist but we have a signer for it, clean up\n if (hasSigner) {\n this.logger.warn(`Signer exists but no session found for topic: ${topic}`);\n this.handleSessionDelete({ topic });\n }\n return false;\n }\n if (!hasSigner) {\n this.logger.warn(`Session exists but no signer found for topic: ${topic}`);\n return false;\n }\n return true;\n }\n catch (e) {\n this.logger.error('Error validating session:', e);\n return false;\n }\n }\n /**\n * Validates the session and refreshes the signers by removing the invalid ones.\n */\n validateAndRefreshSigners() {\n this.signers = this.signers.filter((signer) => this.validateSession(signer.topic));\n }\n /**\n * Initiates the WallecConnect connection if the wallet in iframe mode is detected.\n */\n async checkIframeConnect() {\n const extension = this.extensions.find((ext) => ext.availableInIframe);\n if (extension) {\n const session = await this.connectExtension(extension.id);\n if (this.onSessionIframeCreated)\n this.onSessionIframeCreated(session);\n }\n }\n /**\n * Disconnects the current session associated with the specified topic.\n * @param topic - The topic of the session to disconnect.\n * @returns A Promise that resolves when the session is disconnected.\n */\n async disconnect(topic) {\n try {\n if (!this.walletConnectClient) {\n throw new Error('WalletConnect is not initialized');\n }\n await this.walletConnectClient.disconnect({\n topic: topic,\n reason: getSdkError('USER_DISCONNECTED'),\n });\n return true;\n }\n catch (e) {\n this.logger.error('Either the session was already disconnected or the topic is invalid', e);\n return false;\n }\n }\n /**\n * Disconnects all active sessions and pairings.\n *\n * Throws error when WalletConnect is not initialized or there are no active sessions/pairings.\n * @returns A Promise that resolves when all active sessions and pairings are disconnected.\n */\n async disconnectAll() {\n if (!this.walletConnectClient) {\n throw new Error('WalletConnect is not initialized');\n }\n const sessions = this.walletConnectClient.session.getAll();\n const pairings = this.walletConnectClient.core.pairing.getPairings();\n if (!(sessions === null || sessions === void 0 ? void 0 : sessions.length) && !(pairings === null || pairings === void 0 ? void 0 : pairings.length)) {\n throw new Error('There is no active session/pairing. Connect to the wallet at first.');\n }\n const disconnectionPromises = [];\n // disconnect sessions\n for (const session of this.walletConnectClient.session.getAll()) {\n this.logger.info(`Disconnecting from session: ${session}`);\n const promise = this.disconnect(session.topic);\n disconnectionPromises.push(promise);\n }\n // disconnect pairings\n //https://docs.walletconnect.com/api/core/pairing\n for (const pairing of pairings) {\n const promise = this.disconnect(pairing.topic);\n disconnectionPromises.push(promise);\n }\n await Promise.all(disconnectionPromises);\n this.signers = [];\n }\n createSigners(session) {\n const allNamespaceAccounts = accountAndLedgerFromSession(session);\n return allNamespaceAccounts.map(({ account, network }) => {\n var _a;\n return new DAppSigner(account, this.walletConnectClient, session.topic, network, (_a = session.sessionProperties) === null || _a === void 0 ? void 0 : _a.extensionId, this.logger instanceof DefaultLogger ? this.logger.getLogLevel() : 'debug');\n });\n }\n async onSessionConnected(session) {\n const newSigners = this.createSigners(session);\n // Filter out any existing signers with duplicate AccountIds\n for (const newSigner of newSigners) {\n // We check if any signers have the same account, extension + metadata name.\n const existingSigners = this.signers.filter((currentSigner) => {\n var _a, _b;\n const matchingAccountId = ((_a = currentSigner === null || currentSigner === void 0 ? void 0 : currentSigner.getAccountId()) === null || _a === void 0 ? void 0 : _a.toString()) === ((_b = newSigner === null || newSigner === void 0 ? void 0 : newSigner.getAccountId()) === null || _b === void 0 ? void 0 : _b.toString());\n const matchingExtensionId = newSigner.extensionId === currentSigner.extensionId;\n const newSignerMetadata = newSigner.getMetadata();\n const existingSignerMetadata = currentSigner.getMetadata();\n const metadataNameMatch = (newSignerMetadata === null || newSignerMetadata === void 0 ? void 0 : newSignerMetadata.name) === (existingSignerMetadata === null || existingSignerMetadata === void 0 ? void 0 : existingSignerMetadata.name);\n if (currentSigner.topic === newSigner.topic) {\n this.logger.error('The topic was already connected. This is a weird error. Please report it.', newSigner.getAccountId().toString());\n }\n return matchingAccountId && matchingExtensionId && metadataNameMatch;\n });\n // Any dupes get disconnected + removed from the signers array.\n for (const existingSigner of existingSigners) {\n this.logger.debug(`Disconnecting duplicate signer for account ${existingSigner.getAccountId().toString()}`);\n await this.disconnect(existingSigner.topic);\n this.signers = this.signers.filter((s) => s.topic !== existingSigner.topic);\n }\n }\n // Add new signers after all duplicates have been cleaned up\n this.signers.push(...newSigners);\n this.logger.debug(`Current signers after connection: ${this.signers\n .map((s) => `${s.getAccountId().toString()}:${s.topic}`)\n .join(', ')}`);\n }\n async connectURI(pairingTopic) {\n if (!this.walletConnectClient) {\n throw new Error('WalletConnect is not initialized');\n }\n return this.walletConnectClient.connect({\n pairingTopic,\n requiredNamespaces: networkNamespaces(this.network, this.supportedMethods, this.supportedEvents),\n });\n }\n async request({ method, params, }) {\n var _a, _b, _c;\n let signer;\n this.logger.debug(`Requesting method: ${method} with params: ${JSON.stringify(params)}`);\n if (params === null || params === void 0 ? void 0 : params.signerAccountId) {\n // Extract the actual account ID from the hedera:: format\n const actualAccountId = (_b = (_a = params === null || params === void 0 ? void 0 : params.signerAccountId) === null || _a === void 0 ? void 0 : _a.split(':')) === null || _b === void 0 ? void 0 : _b.pop();\n signer = this.signers.find((s) => { var _a; return ((_a = s === null || s === void 0 ? void 0 : s.getAccountId()) === null || _a === void 0 ? void 0 : _a.toString()) === actualAccountId; });\n this.logger.debug(`Found signer: ${(_c = signer === null || signer === void 0 ? void 0 : signer.getAccountId()) === null || _c === void 0 ? void 0 : _c.toString()}`);\n if (!signer) {\n throw new Error(`Signer not found for account ID: ${params === null || params === void 0 ? void 0 : params.signerAccountId}. Did you use the correct format? e.g hedera:: `);\n }\n }\n else {\n signer = this.signers[this.signers.length - 1];\n }\n if (!signer) {\n throw new Error('There is no active session. Connect to the wallet at first.');\n }\n this.logger.debug(`Using signer: ${signer.getAccountId().toString()}: ${signer.topic} - about to request.`);\n return await signer.request({\n method: method,\n params: params,\n });\n }\n /**\n * Retrieves the node addresses associated with the current Hedera network.\n *\n * When there is no active session or an error occurs during the request.\n * @returns Promise\\<{@link GetNodeAddressesResult}\\>\n */\n async getNodeAddresses() {\n return await this.request({\n method: HederaJsonRpcMethod.GetNodeAddresses,\n params: undefined,\n });\n }\n /**\n * Executes a transaction on the Hedera network.\n *\n * @param {ExecuteTransactionParams} params - The parameters of type {@link ExecuteTransactionParams | `ExecuteTransactionParams`} required for the transaction execution.\n * @param {string[]} params.signedTransaction - Array of Base64-encoded `Transaction`'s\n * @returns Promise\\<{@link ExecuteTransactionResult}\\>\n * @example\n * Use helper `transactionToBase64String` to encode `Transaction` to Base64 string\n * ```ts\n * const params = {\n * signedTransaction: [transactionToBase64String(transaction)]\n * }\n *\n * const result = await dAppConnector.executeTransaction(params)\n * ```\n */\n async executeTransaction(params) {\n return await this.request({\n method: HederaJsonRpcMethod.ExecuteTransaction,\n params,\n });\n }\n /**\n * Signs a provided `message` with provided `signerAccountId`.\n *\n * @param {SignMessageParams} params - The parameters of type {@link SignMessageParams | `SignMessageParams`} required for signing message.\n * @param {string} params.signerAccountId - a signer Hedera Account identifier in {@link https://hips.hedera.com/hip/hip-30 | HIP-30} (`:..`) form.\n * @param {string} params.message - a plain UTF-8 string\n * @returns Promise\\<{@link SignMessageResult}\\>\n * @example\n * ```ts\n * const params = {\n * signerAccountId: 'hedera:testnet:0.0.12345',\n * message: 'Hello World!'\n * }\n *\n * const result = await dAppConnector.signMessage(params)\n * ```\n */\n async signMessage(params) {\n return await this.request({\n method: HederaJsonRpcMethod.SignMessage,\n params,\n });\n }\n /**\n * Signs and send `Query` on the Hedera network.\n *\n * @param {SignAndExecuteQueryParams} params - The parameters of type {@link SignAndExecuteQueryParams | `SignAndExecuteQueryParams`} required for the Query execution.\n * @param {string} params.signerAccountId - a signer Hedera Account identifier in {@link https://hips.hedera.com/hip/hip-30 | HIP-30} (`:..`) form.\n * @param {string} params.query - `Query` object represented as Base64 string\n * @returns Promise\\<{@link SignAndExecuteQueryResult}\\>\n * @example\n * Use helper `queryToBase64String` to encode `Query` to Base64 string\n * ```ts\n * const params = {\n * signerAccountId: '0.0.12345',\n * query: queryToBase64String(query),\n * }\n *\n * const result = await dAppConnector.signAndExecuteQuery(params)\n * ```\n */\n async signAndExecuteQuery(params) {\n return await this.request({\n method: HederaJsonRpcMethod.SignAndExecuteQuery,\n params,\n });\n }\n /**\n * Signs and executes Transactions on the Hedera network.\n *\n * @param {SignAndExecuteTransactionParams} params - The parameters of type {@link SignAndExecuteTransactionParams | `SignAndExecuteTransactionParams`} required for `Transaction` signing and execution.\n * @param {string} params.signerAccountId - a signer Hedera Account identifier in {@link https://hips.hedera.com/hip/hip-30 | HIP-30} (`:..`) form.\n * @param {string[]} params.transaction - Array of Base64-encoded `Transaction`'s\n * @returns Promise\\<{@link SignAndExecuteTransactionResult}\\>\n * @example\n * Use helper `transactionToBase64String` to encode `Transaction` to Base64 string\n * ```ts\n * const params = {\n * signerAccountId: '0.0.12345'\n * transaction: [transactionToBase64String(transaction)]\n * }\n *\n * const result = await dAppConnector.signAndExecuteTransaction(params)\n * ```\n */\n async signAndExecuteTransaction(params) {\n return await this.request({\n method: HederaJsonRpcMethod.SignAndExecuteTransaction,\n params,\n });\n }\n /**\n * Signs and executes Transactions on the Hedera network.\n *\n * @param {SignTransactionParams} params - The parameters of type {@link SignTransactionParams | `SignTransactionParams`} required for `Transaction` signing.\n * @param {string} params.signerAccountId - a signer Hedera Account identifier in {@link https://hips.hedera.com/hip/hip-30 | HIP-30} (`:..`) form.\n * @param {Transaction | string} params.transactionBody - a built Transaction object, or a base64 string of a transaction body (deprecated).\n * @deprecated Using string for params.transactionBody is deprecated and will be removed in a future version. Please migrate to using Transaction objects directly.\n * @returns Promise\\<{@link SignTransactionResult}\\>\n * @example\n * ```ts\n *\n * const params = {\n * signerAccountId: '0.0.12345',\n * transactionBody\n * }\n *\n * const result = await dAppConnector.signTransaction(params)\n * ```\n */\n async signTransaction(params) {\n var _a, _b;\n if (typeof (params === null || params === void 0 ? void 0 : params.transactionBody) === 'string') {\n this.logger.warn('Transaction body is a string. This is not recommended, please migrate to passing a transaction object directly.');\n return await this.request({\n method: HederaJsonRpcMethod.SignTransaction,\n params,\n });\n }\n if ((params === null || params === void 0 ? void 0 : params.transactionBody) instanceof Transaction) {\n const signerAccountId = (_b = (_a = params === null || params === void 0 ? void 0 : params.signerAccountId) === null || _a === void 0 ? void 0 : _a.split(':')) === null || _b === void 0 ? void 0 : _b.pop();\n const accountSigner = this.signers.find((signer) => { var _a; return ((_a = signer === null || signer === void 0 ? void 0 : signer.getAccountId()) === null || _a === void 0 ? void 0 : _a.toString()) === signerAccountId; });\n if (!accountSigner) {\n throw new Error(`No signer found for account ${signerAccountId}`);\n }\n if (!(params === null || params === void 0 ? void 0 : params.transactionBody)) {\n throw new Error('No transaction provided');\n }\n return await accountSigner.signTransaction(params.transactionBody);\n }\n throw new Error('Transaction sent in incorrect format. Ensure transaction body is either a base64 transaction body or Transaction object.');\n }\n handleSessionEvent(args) {\n this.logger.debug('Session event received:', args);\n this.validateAndRefreshSigners();\n }\n handleSessionUpdate({ topic, params, }) {\n const { namespaces } = params;\n const _session = this.walletConnectClient.session.get(topic);\n const updatedSession = Object.assign(Object.assign({}, _session), { namespaces });\n this.logger.info('Session updated:', updatedSession);\n this.signers = this.signers.filter((signer) => signer.topic !== topic);\n this.signers.push(...this.createSigners(updatedSession));\n }\n handleSessionDelete(event) {\n this.logger.info('Session deleted:', event);\n let deletedSigner = false;\n this.signers = this.signers.filter((signer) => {\n if (signer.topic !== event.topic) {\n return true;\n }\n deletedSigner = true;\n return false;\n });\n // prevent emitting disconnected event if signers is untouched.\n if (deletedSigner) {\n try {\n this.disconnect(event.topic);\n }\n catch (e) {\n this.logger.error('Error disconnecting session:', e);\n }\n this.logger.info('Session deleted and signer removed');\n }\n }\n handlePairingDelete(event) {\n this.logger.info('Pairing deleted:', event);\n this.signers = this.signers.filter((signer) => signer.topic !== event.topic);\n try {\n this.disconnect(event.topic);\n }\n catch (e) {\n this.logger.error('Error disconnecting pairing:', e);\n }\n this.logger.info('Pairing deleted by wallet');\n }\n}\nexport default DAppConnector;\n","export interface ILogger {\n error(message: string, ...args: any[]): void;\n warn(message: string, ...args: any[]): void;\n info(message: string, ...args: any[]): void;\n debug(message: string, ...args: any[]): void;\n}\n\nexport class DefaultLogger implements ILogger {\n private logLevel: 'error' | 'warn' | 'info' | 'debug' = 'info';\n\n setLogLevel(level: 'error' | 'warn' | 'info' | 'debug'): void {\n this.logLevel = level;\n }\n\n error(message: string, ...args: any[]): void {\n if (['error', 'warn', 'info', 'debug'].includes(this.logLevel)) {\n console.error(`[ERROR] ${message}`, ...args);\n }\n }\n\n warn(message: string, ...args: any[]): void {\n if (['warn', 'info', 'debug'].includes(this.logLevel)) {\n console.warn(`[WARN] ${message}`, ...args);\n }\n }\n\n info(message: string, ...args: any[]): void {\n if (['info', 'debug'].includes(this.logLevel)) {\n console.info(`[INFO] ${message}`, ...args);\n }\n }\n\n debug(message: string, ...args: any[]): void {\n if (this.logLevel === 'debug') {\n console.debug(`[DEBUG] ${message}`, ...args);\n }\n }\n}\n","import retryFetch from 'fetch-retry';\n\nexport const fetchWithRetry = () =>\n retryFetch(fetch, {\n retries: 3,\n });\n","import { DAppConnector } from '@hashgraph/hedera-wallet-connect';\nimport * as hashgraph from '@hashgraph/sdk';\nimport {\n ContractFunctionParameters,\n TransactionReceipt,\n PrivateKey,\n Transaction,\n AccountId,\n ContractId,\n} from '@hashgraph/sdk';\nimport { SessionTypes, SignClientTypes } from '@walletconnect/types';\n\nexport interface HederaAccountResponse {\n account: string;\n alias: null;\n auto_renew_period: number;\n balance: Balance;\n created_timestamp: string;\n decline_reward: boolean;\n deleted: boolean;\n ethereum_nonce: number;\n evm_address: string;\n expiry_timestamp: string;\n key: Key;\n max_automatic_token_associations: number;\n memo: string;\n pending_reward: number;\n receiver_sig_required: boolean;\n staked_account_id: null;\n staked_node_id: number;\n stake_period_start: string;\n transactions: HBARTransaction[];\n links: Links;\n}\n\nexport interface Balance {\n balance: number;\n timestamp: string;\n tokens: Token[];\n}\n\nexport interface Token {\n token_id: string;\n balance: number;\n}\n\nexport interface Key {\n _type: string;\n key: string;\n}\n\nexport interface Links {\n next: string;\n}\n\nexport interface HBARTransaction {\n bytes: null;\n charged_tx_fee: number;\n consensus_timestamp: string;\n entity_id: null | string;\n max_fee: string;\n memo_base64: string;\n name: Name;\n nft_transfers: NftTransfer[];\n node: string;\n nonce: number;\n parent_consensus_timestamp: null;\n result: Result;\n scheduled: boolean;\n staking_reward_transfers: StakingRewardTransfer[];\n token_transfers: Transfer[];\n transaction_hash: string;\n transaction_id: string;\n transfers: Transfer[];\n valid_duration_seconds: string;\n valid_start_timestamp: string;\n}\n\nexport enum Name {\n Contractcall = 'CONTRACTCALL',\n Cryptotransfer = 'CRYPTOTRANSFER',\n}\n\nexport interface NftTransfer {\n is_approval: boolean;\n receiver_account_id: string;\n sender_account_id: string;\n serial_number: number;\n token_id: string;\n}\n\nexport enum Result {\n Success = 'SUCCESS',\n}\n\nexport interface StakingRewardTransfer {\n account: string;\n amount: number;\n}\n\nexport interface Transfer {\n token_id?: string;\n account: string;\n amount: number;\n is_approval: boolean;\n}\n\nexport interface Message {\n payer: string;\n created: Date;\n consensus_timestamp: string;\n sequence_number: number;\n [key: string]: any;\n}\n\nexport interface FetchMessagesResult {\n messages: Message[];\n error?: string;\n}\n\nexport interface Account {\n account: string;\n alias: null;\n auto_renew_period: number;\n balance: Balance;\n decline_reward: boolean;\n deleted: boolean;\n ethereum_nonce: null;\n evm_address: null;\n expiry_timestamp: string;\n key: Key;\n max_automatic_token_associations: number;\n memo: string;\n receiver_sig_required: null;\n staked_account_id: null;\n staked_node_id: null;\n stake_period_start: null;\n}\n\nexport interface Balance {\n balance: number;\n timestamp: string;\n tokens: Token[];\n}\n\nexport interface Token {\n token_id: string;\n balance: number;\n}\n\nexport interface Key {\n _type: string;\n key: string;\n}\n\nexport interface TokenBalance {\n tokenId: string;\n balance: string;\n decimals: number;\n created_timestamp: Date;\n formatted_balance: string;\n}\n\nexport interface HederaTXResponse {\n transactions: MirrorNodeTransaction[];\n}\n\nexport interface MirrorNodeTransaction {\n bytes: null;\n charged_tx_fee: number;\n consensus_timestamp: string;\n entity_id: string;\n max_fee: string;\n memo_base64: string;\n name: string;\n node: null | string;\n nonce: number;\n parent_consensus_timestamp: null | string;\n result: string;\n scheduled: boolean;\n transaction_hash: string;\n transaction_id: string;\n transfers: Transfer[];\n token_transfers: TokenTransfer[];\n valid_duration_seconds: null | string;\n valid_start_timestamp: string;\n nft_transfers?: NftTransfer[];\n}\n\nexport interface NftTransfer {\n is_approval: boolean;\n receiver_account_id: string;\n sender_account_id: string;\n serial_number: number;\n token_id: string;\n}\n\nexport interface TokenTransfer {\n token_id: string;\n account: string;\n amount: number;\n}\n\nexport interface HBarNFT {\n nfts: Nft[];\n links: Links;\n}\n\nexport interface Links {\n next: string;\n}\n\nexport interface Nft {\n account_id: string;\n created_timestamp: string;\n delegating_spender: null;\n deleted: boolean;\n metadata: string;\n modified_timestamp: string;\n serial_number: number;\n spender: null;\n token_id: string;\n token_uri?: string;\n owner_of?: string;\n}\n\nexport interface FormattedOwner {\n token_uri?: string;\n chain?: string;\n owner_of?: string;\n token_address?: string;\n token_id?: string;\n account_id?: string;\n serial_number?: number;\n [key: string]: any;\n}\n\nexport type HashinalsWalletConnectSDK = {\n run: () => void;\n init: (\n projectId: string,\n metadata: SignClientTypes.Metadata\n ) => Promise;\n connect: () => Promise;\n connectWallet(\n PROJECT_ID: string,\n APP_METADATA: SignClientTypes.Metadata\n ): Promise<{\n accountId: string;\n balance: string;\n session: SessionTypes.Struct;\n }>;\n disconnect: () => Promise;\n disconnectAll: () => Promise;\n disconnectWallet: () => Promise;\n loadConnectionInfo: () => string | null;\n saveConnectionInfo: (accountId: string) => void;\n executeTransaction: (\n tx: Transaction,\n disableSigner: boolean\n ) => Promise;\n executeTransationWithErrorHandling: (\n tx: Transaction,\n disableSigner: boolean\n ) => Promise<{ result?: TransactionReceipt; error?: string }>;\n result?: TransactionReceipt;\n error?: string;\n submitMessageToTopic: (\n topicId: string,\n message: string\n ) => Promise;\n transferHbar: (\n fromAccountId: string,\n toAccountId: string,\n amount: number\n ) => Promise;\n executeSmartContract: (\n contractId: string,\n functionName: string,\n parameters: ContractFunctionParameters,\n gas?: number\n ) => Promise;\n getAccountBalance: () => Promise;\n getAccountInfo: () => string;\n createTopic: (\n memo?: string,\n adminKey?: string,\n customFees?: { denominatingTokenId: string, amount: string, collectorAccountId: string }[] // Updated type\n ) => Promise;\n generatePrivateAndPublicKey: () => Promise<{\n privateKey: string;\n publicKey: string;\n }>;\n getTopicInfo: (topicId: string) => Promise;\n updateTopic: (topicId: string, memo: string, adminKey: string) => Promise;\n createToken: (\n name: string,\n symbol: string,\n initialSupply: number,\n decimals: number,\n treasuryAccountId: string,\n adminKey: string,\n supplyKey: string\n ) => Promise;\n mintNFT: (\n tokenId: string,\n metadata: string,\n supplyKey: PrivateKey\n ) => Promise;\n dAppConnector?: DAppConnector;\n getMessages: (\n topicId: string,\n lastTimestamp?: number,\n disableTimestampFilter?: boolean\n ) => Promise;\n initAccount: (\n PROJECT_ID: string,\n APP_METADATA: SignClientTypes.Metadata\n ) => Promise<{ accountId: string; balance: string } | null>;\n transferToken: (\n tokenId: string,\n fromAccountId: string,\n toAccountId: string,\n amount: number\n ) => Promise;\n createAccount: (initialBalance: number) => Promise;\n associateTokenToAccount: (\n accountId: string,\n tokenId: string\n ) => Promise;\n dissociateTokenFromAccount: (\n accountId: string,\n tokenId: string\n ) => Promise;\n updateAccount: (\n accountId: string,\n maxAutomaticTokenAssociations: number\n ) => Promise;\n approveAllowance: (\n spenderAccountId: string,\n tokenId: string,\n amount: number,\n ownerAccountId: string\n ) => Promise;\n getAccountTokens: (accountId: string) => Promise<{ tokens: TokenBalance[] }>;\n getTransaction: (transactionId: string) => Promise;\n getTransactionByTimestamp: (timestamp: string) => Promise;\n getAccountNFTs: (accountId: string, tokenId?: string) => Promise;\n validateNFTOwnership: (serialNumber: string, accountId: string, tokenId: string) => Promise;\n readSmartContract: (\n data: string,\n fromAccount: AccountId,\n contractId: ContractId,\n estimate?: boolean,\n value?: number\n ) => Promise;\n HashgraphSDK: typeof hashgraph;\n};\n","import { Buffer } from 'buffer';\nimport { SessionTypes, SignClientTypes } from '@walletconnect/types';\nimport {\n Transaction,\n TransferTransaction,\n TopicMessageSubmitTransaction,\n ContractExecuteTransaction,\n Hbar,\n TransactionId,\n AccountId,\n TopicId,\n ContractId,\n LedgerId,\n TokenCreateTransaction,\n TokenType,\n TokenSupplyType,\n TokenMintTransaction,\n TopicCreateTransaction,\n TransactionReceipt,\n ContractFunctionParameters,\n PrivateKey,\n AccountCreateTransaction,\n TokenAssociateTransaction,\n TokenDissociateTransaction,\n AccountUpdateTransaction,\n AccountAllowanceApproveTransaction,\n TokenId,\n TopicUpdateTransaction,\n PublicKey,\n TopicInfoQuery,\n CustomFixedFee\n} from '@hashgraph/sdk';\nimport * as HashgraphSDK from '@hashgraph/sdk';\nimport {\n HederaSessionEvent,\n HederaJsonRpcMethod,\n DAppConnector,\n HederaChainId,\n SignMessageResult,\n} from '@hashgraph/hedera-wallet-connect';\nimport {\n Message,\n FetchMessagesResult,\n TokenBalance,\n HederaAccountResponse,\n HederaTXResponse,\n HBarNFT,\n Nft,\n} from './types';\nimport { DefaultLogger, ILogger } from './logger/logger';\nimport { fetchWithRetry } from './utils/retry';\n\nclass HashinalsWalletConnectSDK {\n private static instance: HashinalsWalletConnectSDK;\n private static dAppConnectorInstance: DAppConnector;\n private logger: ILogger;\n private network: LedgerId;\n private extensionCheckInterval: NodeJS.Timeout | null = null;\n private hasCalledExtensionCallback: boolean = false;\n\n public get dAppConnector(): DAppConnector {\n return HashinalsWalletConnectSDK.dAppConnectorInstance;\n }\n\n constructor(logger?: ILogger, network?: LedgerId) {\n this.logger = logger || new DefaultLogger();\n this.network = network || LedgerId.MAINNET;\n }\n\n public static getInstance(\n logger?: ILogger,\n network?: LedgerId\n ): HashinalsWalletConnectSDK {\n let instance = HashinalsWalletConnectSDK?.instance;\n if (!instance) {\n HashinalsWalletConnectSDK.instance = new HashinalsWalletConnectSDK(\n logger,\n network\n );\n instance = HashinalsWalletConnectSDK.instance;\n }\n if (network) {\n instance.setNetwork(network);\n }\n return instance;\n }\n\n public setLogger(logger: ILogger): void {\n this.logger = logger;\n }\n\n public setNetwork(network: LedgerId): void {\n this.network = network;\n }\n\n public getNetwork(): LedgerId {\n return this.network;\n }\n\n public setLogLevel(level: 'error' | 'warn' | 'info' | 'debug'): void {\n if (this.logger instanceof DefaultLogger) {\n this.logger.setLogLevel(level);\n } else {\n this.logger.warn('setLogLevel is only available for the default logger');\n }\n }\n\n public async init(\n projectId: string,\n metadata: SignClientTypes.Metadata,\n network?: LedgerId,\n onSessionIframeCreated?: (session: SessionTypes.Struct) => void\n ): Promise {\n const chosenNetwork = network || this.network;\n const isMainnet = chosenNetwork.toString() === 'mainnet';\n\n if (HashinalsWalletConnectSDK.dAppConnectorInstance) {\n return HashinalsWalletConnectSDK.dAppConnectorInstance;\n }\n\n HashinalsWalletConnectSDK.dAppConnectorInstance = new DAppConnector(\n metadata,\n chosenNetwork,\n projectId,\n Object.values(HederaJsonRpcMethod),\n [HederaSessionEvent.ChainChanged, HederaSessionEvent.AccountsChanged],\n [isMainnet ? HederaChainId.Mainnet : HederaChainId.Testnet],\n 'debug'\n );\n\n await HashinalsWalletConnectSDK.dAppConnectorInstance.init({\n logger: 'error',\n });\n\n HashinalsWalletConnectSDK.dAppConnectorInstance.onSessionIframeCreated = (\n session\n ) => {\n this.logger.info('new session from from iframe', session);\n this.handleNewSession(session);\n if (onSessionIframeCreated) {\n onSessionIframeCreated(session);\n }\n };\n\n this.logger.info(\n `Hedera Wallet Connect SDK initialized on ${chosenNetwork}`\n );\n return HashinalsWalletConnectSDK.dAppConnectorInstance;\n }\n\n public async connect(): Promise {\n this.ensureInitialized();\n const session = await this.dAppConnector.openModal();\n this.handleNewSession(session);\n return session;\n }\n\n public async disconnect(): Promise {\n try {\n this.ensureInitialized();\n const accountInfo = this.getAccountInfo();\n const accountId = accountInfo?.accountId;\n const network = accountInfo?.network;\n const signer = this?.dAppConnector?.signers.find(\n (signer_) => signer_.getAccountId().toString() === accountId\n );\n await this.dAppConnector?.disconnect(signer?.topic);\n this.logger.info(`Disconnected from ${accountId} on ${network}`);\n return true;\n } catch (e) {\n this.logger.error('Failed to disconnect', e);\n return false;\n }\n }\n\n public async disconnectAll(): Promise {\n try {\n this.ensureInitialized();\n await this.dAppConnector?.disconnectAll();\n this.logger.info(`Disconnected from all wallets`);\n return true;\n } catch (e) {\n this.logger.error('Failed to disconnect', e);\n return false;\n }\n }\n\n public async executeTransaction(\n tx: Transaction,\n disableSigner: boolean = false\n ): Promise {\n this.ensureInitialized();\n const accountInfo = this.getAccountInfo();\n const accountId = accountInfo?.accountId;\n const signer = this.dAppConnector.signers.find(\n (signer_) => signer_.getAccountId().toString() === accountId\n );\n if (!disableSigner) {\n const signedTx = await tx.freezeWithSigner(signer);\n const executedTx = await signedTx.executeWithSigner(signer);\n return await executedTx.getReceiptWithSigner(signer);\n } else {\n const executedTx = await tx.executeWithSigner(signer);\n return await executedTx.getReceiptWithSigner(signer);\n }\n }\n\n public async executeTransactionWithErrorHandling(\n tx: Transaction,\n disableSigner: boolean\n ): Promise<{ result?: TransactionReceipt; error?: string }> {\n try {\n const result = await this.executeTransaction(tx, disableSigner);\n return {\n result,\n error: undefined,\n };\n } catch (e) {\n const error = e as Error;\n const message = error.message?.toLowerCase();\n this.logger.error('Failed to execute transaction', e);\n this.logger.error('Failure reason for transaction is', message);\n if (message.includes('insufficient payer balance')) {\n return {\n result: undefined,\n error: 'Insufficient balance to complete the transaction.',\n };\n } else if (message.includes('reject')) {\n return {\n result: undefined,\n error: 'You rejected the transaction',\n };\n } else if (message.includes('invalid signature')) {\n return {\n result: undefined,\n error: 'Invalid signature. Please check your account and try again.',\n };\n } else if (message.includes('transaction expired')) {\n return {\n result: undefined,\n error: 'Transaction expired. Please try again.',\n };\n } else if (message.includes('account not found')) {\n return {\n result: undefined,\n error:\n 'Account not found. Please check the account ID and try again.',\n };\n } else if (message.includes('unauthorized')) {\n return {\n result: undefined,\n error:\n 'Unauthorized. You may not have the necessary permissions for this action.',\n };\n } else if (message.includes('busy')) {\n return {\n result: undefined,\n error: 'The network is busy. Please try again later.',\n };\n } else if (message.includes('invalid transaction')) {\n return {\n result: undefined,\n error: 'Invalid transaction. Please check your inputs and try again.',\n };\n }\n }\n }\n\n public async submitMessageToTopic(\n topicId: string,\n message: string,\n submitKey?: PrivateKey\n ): Promise {\n this.ensureInitialized();\n\n let transaction = new TopicMessageSubmitTransaction()\n .setTopicId(TopicId.fromString(topicId))\n .setMessage(message);\n\n if (submitKey) {\n transaction = await transaction.sign(submitKey);\n }\n\n return this.executeTransaction(transaction);\n }\n\n public async transferHbar(\n fromAccountId: string,\n toAccountId: string,\n amount: number\n ): Promise {\n this.ensureInitialized();\n\n const transaction = new TransferTransaction()\n .setTransactionId(TransactionId.generate(fromAccountId))\n .addHbarTransfer(AccountId.fromString(fromAccountId), new Hbar(-amount))\n .addHbarTransfer(AccountId.fromString(toAccountId), new Hbar(amount));\n\n return this.executeTransaction(transaction);\n }\n\n async executeSmartContract(\n contractId: string,\n functionName: string,\n parameters: ContractFunctionParameters,\n gas: number = 100000\n ): Promise {\n this.ensureInitialized();\n\n const transaction = new ContractExecuteTransaction()\n .setContractId(ContractId.fromString(contractId))\n .setGas(gas)\n .setFunction(functionName, parameters);\n\n return this.executeTransaction(transaction);\n }\n\n private handleNewSession(session: SessionTypes.Struct) {\n const sessionAccount = session.namespaces?.hedera?.accounts?.[0];\n const sessionParts = sessionAccount?.split(':');\n const accountId = sessionParts.pop();\n const network = sessionParts.pop();\n this.logger.info('sessionAccount is', accountId, network);\n if (!accountId) {\n this.logger.error('No account id found in the session');\n return;\n } else {\n this.saveConnectionInfo(accountId, network);\n }\n }\n\n private getNetworkPrefix(): string {\n const accountInfo = this.getAccountInfo();\n const network = accountInfo?.network;\n\n if (!network) {\n this.logger.warn('Network is not set on SDK, defaulting.');\n\n const cachedNetwork = localStorage.getItem('connectedNetwork');\n\n if (cachedNetwork) {\n return cachedNetwork;\n }\n\n return 'mainnet-public';\n }\n\n if (network !== this.network) {\n this.logger.warn(\n 'Detected network mismatch, reverting to signer network',\n network\n );\n this.network = network;\n }\n\n return network.isMainnet() ? 'mainnet-public' : 'testnet';\n }\n\n public async requestAccount(account: string): Promise {\n try {\n const networkPrefix = this.getNetworkPrefix();\n\n const url = `https://${networkPrefix}.mirrornode.hedera.com/api/v1/accounts/${account}`;\n const response = await fetchWithRetry()(url);\n if (!response.ok) {\n throw new Error(\n `Failed to make request to mirror node for account: ${response.status}`\n );\n }\n return await response.json();\n } catch (e) {\n this.logger.error('Failed to fetch account', e);\n throw e;\n }\n }\n\n public async getAccountBalance(): Promise {\n this.ensureInitialized();\n const accountInfo = this.getAccountInfo();\n const account = accountInfo?.accountId;\n\n if (!account) {\n return null;\n }\n\n const accountResponse = await this.requestAccount(account);\n if (!accountResponse) {\n throw new Error(\n 'Failed to fetch account. Try again or check if the Account ID is valid.'\n );\n }\n const balance = accountResponse.balance.balance / 10 ** 8;\n return Number(balance).toLocaleString('en-US');\n }\n\n public getAccountInfo(): {\n accountId: string;\n network: LedgerId;\n } {\n const { accountId: cachedAccountId } = this.loadConnectionInfo();\n if (!cachedAccountId) {\n return null;\n }\n const signers = this?.dAppConnector?.signers;\n\n if (!signers?.length) {\n return null;\n }\n\n const cachedSigner = this.dAppConnector.signers.find(\n (signer_) => signer_.getAccountId().toString() === cachedAccountId\n );\n if (!cachedSigner) {\n return null;\n }\n const accountId = cachedSigner?.getAccountId()?.toString();\n if (!accountId) {\n return null;\n }\n const network = cachedSigner.getLedgerId();\n return {\n accountId,\n network,\n };\n }\n\n \n public async generatePrivateAndPublicKey(): Promise<{\n privateKey: string;\n publicKey: string;\n }> {\n this.ensureInitialized();\n const privateKey = await PrivateKey.generateED25519Async();\n const publicKey = privateKey.publicKey;\n return {\n privateKey: privateKey.toString(),\n publicKey: publicKey.toString()\n };\n }\n\n public async updateTopic(topicId: string, memo: string, adminKey: string): Promise {\n this.ensureInitialized();\n \n // Validate inputs\n if (!topicId) {\n throw new Error('Topic ID is required');\n }\n if (!adminKey) {\n throw new Error('Admin key is required for topic update');\n }\n \n // Get account info and signer\n const accountInfo = this.getAccountInfo();\n if (!accountInfo?.accountId) {\n throw new Error('No connected account found');\n }\n \n const signer = this.dAppConnector.signers.find(\n (signer_) => signer_.getAccountId().toString() === accountInfo.accountId\n );\n if (!signer) {\n throw new Error('No signer found for the connected account');\n }\n \n // Validate network\n if (signer.getLedgerId().toString() !== this.network.toString()) {\n throw new Error('Network mismatch between signer and SDK configuration');\n }\n \n // Create and configure the transaction\n let transaction = new TopicUpdateTransaction()\n .setTopicId(TopicId.fromString(topicId))\n .setTopicMemo(memo || '');\n \n // Helper function to parse a key as either private or public key (for future-proofing)\n const parseKey = (key: string, keyType: 'admin'): PublicKey => {\n try {\n const privateKey = PrivateKey.fromString(key);\n this.logger.debug(`Parsed ${keyType} key as private key:`, privateKey.toString());\n return privateKey.publicKey;\n } catch (privateError) {\n this.logger.debug(`Failed to parse ${keyType} key as private key:`, privateError);\n try {\n const publicKey = PublicKey.fromString(key);\n this.logger.debug(`Parsed ${keyType} key as public key:`, publicKey.toString());\n return publicKey;\n } catch (publicError) {\n this.logger.error(`Invalid ${keyType} key format:`, publicError);\n throw new Error(`Invalid ${keyType} key format: ${publicError.message}`);\n }\n }\n };\n \n // Handle admin key (set the key but don’t sign yet)\n let adminPrivateKey: PrivateKey | null = null;\n try {\n adminPrivateKey = PrivateKey.fromString(adminKey);\n transaction.setAdminKey(adminPrivateKey.publicKey);\n this.logger.debug('Admin key set with private key:', adminPrivateKey.publicKey.toString());\n } catch (e) {\n this.logger.error('Invalid admin key provided:', e);\n throw new Error('Invalid admin key format: Admin key must be a valid private key for topic update');\n }\n \n // Freeze the transaction before signing\n transaction = await transaction.freezeWithSigner(signer);\n this.logger.debug('Transaction frozen with signer:', signer.getAccountId().toString());\n \n // Sign with admin private key (after freezing)\n if (adminPrivateKey) {\n transaction = await transaction.sign(adminPrivateKey);\n this.logger.debug('Transaction signed with admin private key');\n }\n \n // Execute the transaction, disabling internal signer freeze to avoid double-freezing\n const { result, error } = await this.executeTransactionWithErrorHandling(transaction, true);\n if (error) {\n throw new Error(`Failed to update topic: ${error}`);\n }\n \n this.logger.debug('Topic updated successfully with ID:', result.topicId!.toString());\n return result.topicId!.toString();\n }\n\n public async createTopic(\n memo?: string,\n adminKey?: string,\n customFees?: { denominatingTokenId: string, amount: string, collectorAccountId: string }[] // Updated type\n): Promise {\n this.ensureInitialized();\n\n // Get account info and signer\n const accountInfo = this.getAccountInfo();\n if (!accountInfo?.accountId) {\n throw new Error('No connected account found');\n }\n\n const signer = this.dAppConnector.signers.find(\n (signer_) => signer_.getAccountId().toString() === accountInfo.accountId\n );\n if (!signer) {\n throw new Error('No signer found for the connected account');\n }\n\n // Validate network\n if (signer.getLedgerId().toString() !== this.network.toString()) {\n throw new Error('Network mismatch between signer and SDK configuration');\n }\n\n // Create and configure the transaction\n let transaction = new TopicCreateTransaction().setTopicMemo(memo || '');\n\n // Helper function to parse a key as either private or public key\n const parseKey = (key: string, keyType: 'admin' | 'submit'): PublicKey => {\n try {\n const privateKey = PrivateKey.fromString(key);\n this.logger.debug(`Parsed ${keyType} key as private key:`, privateKey.toString());\n return privateKey.publicKey;\n } catch (privateError) {\n this.logger.debug(`Failed to parse ${keyType} key as private key:`, privateError);\n try {\n const publicKey = PublicKey.fromString(key);\n this.logger.debug(`Parsed ${keyType} key as public key:`, publicKey.toString());\n return publicKey;\n } catch (publicError) {\n this.logger.error(`Invalid ${keyType} key format:`, publicError);\n throw new Error(`Invalid ${keyType} key format: ${publicError.message}`);\n }\n }\n };\n\n // Handle admin key (set the key but don’t sign yet)\n let adminPrivateKey: PrivateKey | null = null;\n// After setting the admin key\nif (adminKey) {\n try {\n adminPrivateKey = PrivateKey.fromString(adminKey);\n transaction.setAdminKey(adminPrivateKey.publicKey);\n transaction.setFeeScheduleKey(adminPrivateKey.publicKey); // Set feeScheduleKey to same as adminKey\n this.logger.debug('Admin key and feeScheduleKey set with private key:', adminPrivateKey.publicKey.toString());\n } catch {\n const adminPublicKey = parseKey(adminKey, 'admin');\n transaction.setAdminKey(adminPublicKey);\n transaction.setFeeScheduleKey(adminPublicKey); // Set feeScheduleKey to same as adminKey\n this.logger.debug('Admin key and feeScheduleKey set with public key:', adminPublicKey.toString());\n }\n}\n\n // Handle custom fees if provided\n if (customFees && customFees.length > 0) {\n const hederaCustomFees = customFees.map(fee => {\n // Validate fee structure\n if (!fee.denominatingTokenId || !fee.amount || !fee.collectorAccountId) {\n throw new Error('Invalid custom fee: denominatingTokenId, amount, and collectorAccountId are required');\n }\n // Parse amount as a number\n const feeAmount = parseFloat(fee.amount);\n if (isNaN(feeAmount) || feeAmount <= 0) {\n throw new Error('Invalid amount: must be a positive number');\n }\n // Create a CustomFixedFee\n const customFee = new CustomFixedFee()\n .setAmount(feeAmount)\n .setFeeCollectorAccountId(fee.collectorAccountId)\n .setDenominatingTokenId(fee.denominatingTokenId);\n return customFee;\n });\n transaction.setCustomFees(hederaCustomFees);\n this.logger.debug('Custom fixed fees set:', hederaCustomFees);\n }\n\n // Freeze the transaction before signing\n transaction = await transaction.freezeWithSigner(signer);\n this.logger.debug('Transaction frozen with signer:', signer.getAccountId().toString());\n\n // Sign with admin private key if provided (after freezing)\n if (adminPrivateKey) {\n transaction = await transaction.sign(adminPrivateKey);\n this.logger.debug('Transaction signed with admin private key');\n }\n\n // Execute the transaction, disabling internal signer freeze to avoid double-freezing\n const receipt = await this.executeTransaction(transaction, true);\n if (!receipt.topicId) {\n throw new Error('Failed to create topic: No topic ID in receipt');\n }\n\n this.logger.debug('Topic created successfully with ID:', receipt.topicId.toString());\n return receipt.topicId.toString();\n}\n\n public async createToken(\n name: string,\n symbol: string,\n initialSupply: number,\n decimals: number,\n treasuryAccountId: string,\n adminKey: string,\n supplyKey: string\n ): Promise {\n this.ensureInitialized();\n\n let transaction = new TokenCreateTransaction()\n .setTokenName(name)\n .setTokenSymbol(symbol)\n .setDecimals(decimals)\n .setInitialSupply(initialSupply)\n .setTreasuryAccountId(AccountId.fromString(treasuryAccountId))\n .setTokenType(TokenType.NonFungibleUnique)\n .setSupplyType(TokenSupplyType.Finite);\n\n if (supplyKey) {\n transaction = transaction.setSupplyKey(PrivateKey.fromString(supplyKey));\n }\n\n if (adminKey) {\n transaction = transaction.setAdminKey(PrivateKey.fromString(adminKey));\n transaction = await transaction.sign(PrivateKey.fromString(adminKey));\n }\n\n const receipt = await this.executeTransaction(transaction);\n return receipt.tokenId!.toString();\n }\n\n public async mintNFT(\n tokenId: string,\n metadata: string,\n supplyKey: PrivateKey\n ): Promise {\n this.ensureInitialized();\n\n let transaction = await new TokenMintTransaction()\n .setTokenId(tokenId)\n .setMetadata([Buffer.from(metadata, 'utf-8')])\n .sign(supplyKey);\n\n return this.executeTransaction(transaction);\n }\n\n public async getTopicInfo(topicId: string, network?: string): Promise {\n this.ensureInitialized();\n \n try {\n // Validate input\n if (!topicId) {\n throw new Error('Topic ID is required');\n }\n \n // Determine the network prefix\n const networkPrefix = network || this.getNetworkPrefix();\n const baseUrl = `https://${networkPrefix}.mirrornode.hedera.com`;\n \n // Construct the URL for the topic info endpoint\n const url = `${baseUrl}/api/v1/topics/${topicId}`;\n \n // Fetch the topic info\n const response = await fetchWithRetry()(url);\n if (!response.ok) {\n throw new Error(\n `Failed to make request to mirror node for topic info: ${response.status}`\n );\n }\n \n const data = await response.json();\n \n // Log the retrieved topic info\n this.logger.info('Topic info retrieved:', data);\n \n return data;\n } catch (error) {\n this.logger.error('Error fetching topic info:', error);\n throw new Error(`Failed to retrieve topic info: ${error.message}`);\n }\n }\n\n public async getMessages(\n topicId: string,\n lastTimestamp?: number,\n disableTimestampFilter: boolean = false,\n network?: string\n ): Promise {\n const networkPrefix = network || this.getNetworkPrefix();\n const baseUrl = `https://${networkPrefix}.mirrornode.hedera.com`;\n const timestampQuery =\n Number(lastTimestamp) > 0 && !disableTimestampFilter\n ? `×tamp=gt:${lastTimestamp}`\n : '';\n\n const url = `${baseUrl}/api/v1/topics/${topicId}/messages?limit=200${timestampQuery}`;\n\n try {\n const response = await fetchWithRetry()(url);\n if (!response.ok) {\n throw new Error(\n `Failed to make request to mirror node: ${response.status}`\n );\n }\n const data = await response.json();\n const messages = data?.messages || [];\n const nextLink = data?.links?.next;\n\n const collectedMessages: Message[] = messages.map((msg: any) => {\n const parsedMessage = JSON.parse(atob(msg.message));\n return {\n ...parsedMessage,\n payer: msg.payer_account_id,\n created: new Date(Number(msg.consensus_timestamp) * 1000),\n consensus_timestamp: msg.consensus_timestamp,\n sequence_number: msg.sequence_number,\n };\n });\n\n if (nextLink) {\n const nextResult = await this.getMessages(\n topicId,\n Number(\n collectedMessages[collectedMessages.length - 1]?.consensus_timestamp\n ),\n disableTimestampFilter\n );\n collectedMessages.push(...nextResult.messages);\n }\n\n return {\n messages: collectedMessages.sort(\n (a, b) => a.sequence_number - b.sequence_number\n ),\n error: '',\n };\n } catch (error) {\n this.logger.error('Error fetching topic data:', error);\n return {\n messages: [],\n error: (error as Error).toString(),\n };\n }\n }\n\n public async signMessage(message: string) {\n const dAppConnector = this.dAppConnector;\n if (!dAppConnector) {\n throw new Error('No active connection or signer');\n }\n\n const accountInfo = this.getAccountInfo();\n const accountId = accountInfo?.accountId;\n\n const params = {\n signerAccountId: `hedera:${this.network}:${accountId}`,\n message,\n };\n\n const result = (await dAppConnector.signMessage(\n params\n )) as SignMessageResult;\n\n // @ts-ignore\n return { userSignature: result.signatureMap };\n }\n\n private saveConnectionInfo(\n accountId: string | undefined,\n connectedNetwork?: string | undefined\n ): void {\n if (!accountId) {\n localStorage.removeItem('connectedAccountId');\n localStorage.removeItem('connectedNetwork');\n } else {\n const cleanNetwork = connectedNetwork?.replace(/['\"]+/g, '');\n localStorage.setItem('connectedNetwork', cleanNetwork);\n localStorage.setItem('connectedAccountId', accountId);\n }\n }\n\n public loadConnectionInfo(): {\n accountId: string | null;\n network: string | null;\n } {\n return {\n accountId: localStorage.getItem('connectedAccountId'),\n network: localStorage.getItem('connectedNetwork'),\n };\n }\n\n public async connectWallet(\n PROJECT_ID: string,\n APP_METADATA: SignClientTypes.Metadata,\n network?: LedgerId\n ): Promise<{\n accountId: string;\n balance: string;\n session: SessionTypes.Struct;\n }> {\n try {\n await this.init(PROJECT_ID, APP_METADATA, network);\n const session = await this.connect();\n\n const accountInfo = this.getAccountInfo();\n const accountId = accountInfo?.accountId;\n const balance = await this.getAccountBalance();\n const networkPrefix = this.getNetworkPrefix();\n\n this.saveConnectionInfo(accountId, networkPrefix);\n return {\n accountId,\n balance,\n session,\n };\n } catch (error) {\n this.logger.error('Failed to connect wallet:', error);\n throw error;\n }\n }\n\n public async disconnectWallet(\n clearStorage: boolean = true\n ): Promise {\n try {\n const success = await this.disconnect();\n\n if (success && clearStorage) {\n localStorage.clear();\n }\n\n this.saveConnectionInfo(undefined);\n return success;\n } catch (error) {\n this.logger.error('Failed to disconnect wallet:', error);\n return false;\n }\n }\n\n public async initAccount(\n PROJECT_ID: string,\n APP_METADATA: SignClientTypes.Metadata,\n networkOverride?: LedgerId,\n onSessionIframeCreated: (session: SessionTypes.Struct) => void = () => {}\n ): Promise<{ accountId: string; balance: string } | null> {\n const { accountId: savedAccountId, network: savedNetwork } =\n this.loadConnectionInfo();\n\n if (savedAccountId && savedNetwork) {\n try {\n const defaultNetwork =\n savedNetwork === 'mainnet' ? LedgerId.MAINNET : LedgerId.TESTNET;\n const network = networkOverride || defaultNetwork;\n await this.init(\n PROJECT_ID,\n APP_METADATA,\n network,\n onSessionIframeCreated\n );\n const balance = await this.getAccountBalance();\n return {\n accountId: savedAccountId,\n balance,\n };\n } catch (error) {\n this.logger.error('Failed to reconnect:', error);\n this.saveConnectionInfo(undefined, undefined);\n return null;\n }\n } else if (networkOverride) {\n try {\n this.logger.info(\n 'initializing normally through override.',\n networkOverride\n );\n await this.init(\n PROJECT_ID,\n APP_METADATA,\n networkOverride,\n onSessionIframeCreated\n );\n this.logger.info('initialized', networkOverride);\n await this.connectViaDappBrowser();\n this.logger.info('connected via dapp browser');\n } catch (error) {\n this.logger.error('Failed to fallback connect:', error);\n this.saveConnectionInfo(undefined, undefined);\n return null;\n }\n }\n\n return null;\n }\n\n public subscribeToExtensions(callback: (extension: any) => void) {\n // Clear any existing interval and reset flag\n if (this.extensionCheckInterval) {\n clearInterval(this.extensionCheckInterval);\n }\n this.hasCalledExtensionCallback = false;\n\n // Set up polling to check for extensions\n this.extensionCheckInterval = setInterval(() => {\n const extensions = this.dAppConnector?.extensions || [];\n const availableExtension = extensions.find(\n (ext) => ext.availableInIframe\n );\n\n if (availableExtension && !this.hasCalledExtensionCallback) {\n this.hasCalledExtensionCallback = true;\n callback(availableExtension);\n // Clear the interval once we find an available extension\n if (this.extensionCheckInterval) {\n clearInterval(this.extensionCheckInterval);\n this.extensionCheckInterval = null;\n }\n }\n }, 1000); // Check every second\n\n // Return cleanup function\n return () => {\n if (this.extensionCheckInterval) {\n clearInterval(this.extensionCheckInterval);\n this.extensionCheckInterval = null;\n }\n this.hasCalledExtensionCallback = false;\n };\n }\n\n public async connectViaDappBrowser() {\n const extensions = this.dAppConnector.extensions || [];\n const extension = extensions.find((ext) => {\n this.logger.info('Checking extension', ext);\n return ext.availableInIframe;\n });\n this.logger.info('extensions are', extensions, extension);\n\n if (extension) {\n await this.connectToExtension(extension);\n } else {\n // If no extension is immediately available, subscribe to changes\n this.subscribeToExtensions(async (newExtension) => {\n await this.connectToExtension(newExtension);\n });\n }\n }\n\n private async connectToExtension(extension: any) {\n this.logger.info('found extension, connecting to iframe.', extension);\n const session = await this.dAppConnector.connectExtension(extension.id);\n const onSessionIframeCreated = this.dAppConnector.onSessionIframeCreated;\n if (onSessionIframeCreated) {\n onSessionIframeCreated(session);\n }\n }\n\n private ensureInitialized(): void {\n if (!this.dAppConnector) {\n throw new Error('SDK not initialized. Call init() first.');\n }\n }\n\n static run(): void {\n try {\n if (typeof window !== 'undefined') {\n (window as any).HashinalsWalletConnectSDK =\n HashinalsWalletConnectSDK.getInstance();\n (window as any).HashgraphSDK = HashgraphSDK;\n }\n } catch (e) {\n console.error('[ERROR]: failed setting sdk on window');\n }\n }\n\n public async transferToken(\n tokenId: string,\n fromAccountId: string,\n toAccountId: string,\n amount: number\n ): Promise {\n this.ensureInitialized();\n\n const transaction = new TransferTransaction()\n .setTransactionId(TransactionId.generate(fromAccountId))\n .addTokenTransfer(\n TokenId.fromString(tokenId),\n AccountId.fromString(fromAccountId),\n -amount\n )\n .addTokenTransfer(\n TokenId.fromString(tokenId),\n AccountId.fromString(toAccountId),\n amount\n );\n\n return this.executeTransaction(transaction);\n }\n\n async createAccount(initialBalance: number): Promise {\n this.ensureInitialized();\n\n const transaction = new AccountCreateTransaction().setInitialBalance(\n new Hbar(initialBalance)\n );\n\n return this.executeTransaction(transaction);\n }\n\n public async associateTokenToAccount(\n accountId: string,\n tokenId: string\n ): Promise {\n this.ensureInitialized();\n\n const transaction = new TokenAssociateTransaction()\n .setAccountId(AccountId.fromString(accountId))\n .setTokenIds([TokenId.fromString(tokenId)]);\n\n return this.executeTransaction(transaction);\n }\n\n public async dissociateTokenFromAccount(\n accountId: string,\n tokenId: string\n ): Promise {\n this.ensureInitialized();\n\n const transaction = new TokenDissociateTransaction()\n .setAccountId(AccountId.fromString(accountId))\n .setTokenIds([TokenId.fromString(tokenId)]);\n\n return this.executeTransaction(transaction);\n }\n\n public async updateAccount(\n accountId: string,\n maxAutomaticTokenAssociations: number\n ): Promise {\n this.ensureInitialized();\n\n const transaction = new AccountUpdateTransaction()\n .setAccountId(AccountId.fromString(accountId))\n .setMaxAutomaticTokenAssociations(maxAutomaticTokenAssociations);\n\n return this.executeTransaction(transaction);\n }\n\n public async approveAllowance(\n spenderAccountId: string,\n tokenId: string,\n amount: number,\n ownerAccountId: string\n ): Promise {\n this.ensureInitialized();\n\n const transaction =\n new AccountAllowanceApproveTransaction().approveTokenAllowance(\n TokenId.fromString(tokenId),\n AccountId.fromString(ownerAccountId),\n AccountId.fromString(spenderAccountId),\n amount\n );\n\n return this.executeTransaction(transaction);\n }\n\n public async getAccountTokens(\n accountId: string\n ): Promise<{ tokens: TokenBalance[] }> {\n this.ensureInitialized();\n\n const networkPrefix = this.getNetworkPrefix();\n const baseUrl = `https://${networkPrefix}.mirrornode.hedera.com`;\n const url = `${baseUrl}/api/v1/accounts/${accountId}/tokens?limit=200`;\n\n try {\n const response = await fetchWithRetry()(url);\n if (!response.ok) {\n throw new Error(\n `Failed to make request to mirror node for account tokens: ${response.status}`\n );\n }\n const data = await response.json();\n\n const tokens: TokenBalance[] = [];\n\n for (const token of data.tokens) {\n if (token.token_id) {\n tokens.push({\n tokenId: token.token_id,\n balance: token.balance,\n decimals: token.decimals,\n formatted_balance: (\n token.balance /\n 10 ** token.decimals\n ).toLocaleString('en-US'),\n created_timestamp: new Date(Number(token.created_timestamp) * 1000),\n });\n }\n }\n let nextLink = data.links?.next;\n while (nextLink) {\n const nextUrl = `${baseUrl}${nextLink}`;\n const nextResponse = await fetchWithRetry()(nextUrl);\n if (!nextResponse.ok) {\n throw new Error(\n `Failed to make request to mirror node for account tokens: ${nextResponse.status}, page: ${nextUrl}`\n );\n }\n const nextData = await nextResponse.json();\n\n for (const token of nextData.tokens) {\n if (token.token_id) {\n tokens.push({\n tokenId: token.token_id,\n balance: token.balance,\n decimals: token.decimals,\n formatted_balance: (\n token.balance /\n 10 ** token.decimals\n ).toLocaleString('en-US'),\n created_timestamp: new Date(\n Number(token.created_timestamp) * 1000\n ),\n });\n }\n }\n\n nextLink = nextData.links?.next;\n }\n\n return { tokens };\n } catch (error) {\n this.logger.error('Error fetching account tokens:', error);\n throw error;\n }\n }\n\n public async getTransaction(\n transactionId: string\n ): Promise {\n try {\n const networkPrefix = this.getNetworkPrefix();\n const url = `https://${networkPrefix}.mirrornode.hedera.com/api/v1/transactions/${transactionId}`;\n\n this.logger.debug('Fetching transaction', url);\n const request = await fetchWithRetry()(url);\n\n if (!request.ok) {\n throw new Error(`Failed to fetch transaction: ${request.status}`);\n }\n\n return await request.json();\n } catch (e) {\n this.logger.error('Failed to get transaction', e);\n return null;\n }\n }\n\n public async getTransactionByTimestamp(\n timestamp: string\n ): Promise {\n try {\n const networkPrefix = this.getNetworkPrefix();\n const url = `https://${networkPrefix}.mirrornode.hedera.com/api/v1/transactions?timestamp=${timestamp}`;\n\n this.logger.debug('Fetching transaction by timestamp', url);\n const request = await fetchWithRetry()(url);\n\n if (!request.ok) {\n throw new Error(\n `Failed to fetch transaction by timestamp: ${request.status}`\n );\n }\n\n const response = (await request.json()) as HederaTXResponse;\n const transaction = response?.transactions?.[0];\n\n if (transaction) {\n return await this.getTransaction(transaction.transaction_id);\n }\n\n return null;\n } catch (e) {\n this.logger.error('Failed to get transaction by timestamp', e);\n return null;\n }\n }\n\n public async getAccountNFTs(\n accountId: string,\n tokenId?: string\n ): Promise {\n try {\n const networkPrefix = this.getNetworkPrefix();\n const tokenQuery = tokenId ? `&token.id=${tokenId}` : '';\n const url = `https://${networkPrefix}.mirrornode.hedera.com/api/v1/accounts/${accountId}/nfts?limit=200${tokenQuery}`;\n\n const request = await fetchWithRetry()(url);\n if (!request.ok) {\n throw new Error(`Failed to fetch NFTs for account: ${request.status}`);\n }\n\n const response = (await request.json()) as HBarNFT;\n let nextLink: string | null = response?.links?.next || null;\n let nfts = response.nfts;\n\n while (nextLink) {\n try {\n const nextRequest = await fetchWithRetry()(\n `https://${networkPrefix}.mirrornode.hedera.com${nextLink}`\n );\n\n if (!nextRequest.ok) {\n throw new Error(\n `Failed to fetch next page of NFTs: ${nextRequest.status}`\n );\n }\n\n const nextResponse = (await nextRequest.json()) as HBarNFT;\n nfts = [...nfts, ...(nextResponse?.nfts || [])];\n\n nextLink =\n nextResponse?.links?.next && nextLink !== nextResponse?.links?.next\n ? nextResponse.links.next\n : null;\n } catch (e) {\n this.logger.error('Failed to fetch next page of NFTs', e);\n break;\n }\n }\n\n return nfts.map((nft) => {\n try {\n nft.token_uri = Buffer.from(nft.metadata, 'base64').toString('ascii');\n } catch (e) {\n this.logger.error('Failed to decode NFT metadata', e);\n }\n return nft;\n });\n } catch (e) {\n this.logger.error('Failed to get account NFTs', e);\n return [];\n }\n }\n\n public async validateNFTOwnership(\n serialNumber: string,\n accountId: string,\n tokenId: string\n ): Promise {\n const userNFTs = await this.getAccountNFTs(accountId, tokenId);\n\n return (\n userNFTs.find(\n (nft) =>\n nft.token_id === tokenId &&\n nft.serial_number.toString() === serialNumber\n ) || null\n );\n }\n\n public async readSmartContract(\n data: string,\n fromAccount: AccountId,\n contractId: ContractId,\n estimate: boolean = true,\n value: number = 0\n ): Promise {\n try {\n const networkPrefix = this.getNetworkPrefix();\n const body: any = {\n block: 'latest',\n data: data,\n estimate: estimate,\n from: fromAccount.toSolidityAddress(),\n to: contractId.toSolidityAddress(),\n value,\n };\n\n if (!estimate) {\n body.gas = 300000;\n body.gasPrice = 100000000;\n }\n\n const url = `https://${networkPrefix}.mirrornode.hedera.com/api/v1/contracts/call`;\n\n const response = await fetchWithRetry()(url, {\n method: 'POST',\n body: JSON.stringify(body),\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n\n if (!response.ok) {\n throw new Error(`Failed to make contract call: ${response.status}`);\n }\n\n return await response.json();\n } catch (e) {\n this.logger.error('Failed to make contract call', e);\n return null;\n }\n }\n}\n\n// This variable is replaced at build time.\n// @ts-ignore\nif ('VITE_BUILD_FORMAT' === 'umd') {\n HashinalsWalletConnectSDK.run();\n}\n\nexport * from './types';\nexport * from './sign';\nexport { HashinalsWalletConnectSDK, HashgraphSDK };\n"],"names":["i","buffer","c","rt","Buffer","SlowBuffer","proto","b","byteLength","x","y","n","code","E","Blob","atob","constants","HederaChainId","HederaSessionEvent","HederaJsonRpcMethod","_","events","EVENTS","format","f","require$$0","browser","k","transmit","noop","level","S","z","v","ReflectApply","ReflectOwnKeys","NumberIsNaN","eventsModule","once","listeners","w","d","p","__assign","g","k2","global","e","isReactNative","process","require$$1","require$$2","delay_1","delay","watch","require$$3","require$$4","Ze","$","et","Ot","is","tt","u","A","Et","R","Y","M","C","F","P","B","ue","bt","Ct","K","U","Lt","Te","Ne","T","xt","Pe","Dt","je","Fe","Qe","ze","He","Ye","ge","Vt","ie","he","Q","se","Ae","Mt","de","X","rs","ns","J","Rt","St","re","Ue","L","ne","kt","Xe","$t","Oe","Je","Kt","Ut","Gt","Be","jt","Ft","Qt","zt","Ht","Yt","It","We","Xt","Jt","os","as","ft","Bt","Ge","Wt","H","At","ts","Zt","Tt","vt","Nt","Pt","DefaultLogger","data","result","_e","metadata","SignClient","signer","_a","Name","Result"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35]}
\ No newline at end of file
diff --git a/dist/es/index.d.ts b/dist/es/index.d.ts
index 3d3ff70..13814c5 100644
--- a/dist/es/index.d.ts
+++ b/dist/es/index.d.ts
@@ -38,9 +38,19 @@ declare class HashinalsWalletConnectSDK {
accountId: string;
network: LedgerId;
};
- createTopic(memo?: string, adminKey?: string, submitKey?: string): Promise;
+ generatePrivateAndPublicKey(): Promise<{
+ privateKey: string;
+ publicKey: string;
+ }>;
+ updateTopic(topicId: string, memo: string, adminKey: string): Promise;
+ createTopic(memo?: string, adminKey?: string, customFees?: {
+ denominatingTokenId: string;
+ amount: string;
+ collectorAccountId: string;
+ }[]): Promise;
createToken(name: string, symbol: string, initialSupply: number, decimals: number, treasuryAccountId: string, adminKey: string, supplyKey: string): Promise;
mintNFT(tokenId: string, metadata: string, supplyKey: PrivateKey): Promise;
+ getTopicInfo(topicId: string, network?: string): Promise;
getMessages(topicId: string, lastTimestamp?: number, disableTimestampFilter?: boolean, network?: string): Promise;
signMessage(message: string): Promise<{
userSignature: any;
diff --git a/dist/es/types.d.ts b/dist/es/types.d.ts
index 9aa3c91..4df02d9 100644
--- a/dist/es/types.d.ts
+++ b/dist/es/types.d.ts
@@ -227,7 +227,17 @@ export type HashinalsWalletConnectSDK = {
executeSmartContract: (contractId: string, functionName: string, parameters: ContractFunctionParameters, gas?: number) => Promise;
getAccountBalance: () => Promise;
getAccountInfo: () => string;
- createTopic: (memo?: string, adminKey?: string, submitKey?: string) => Promise;
+ createTopic: (memo?: string, adminKey?: string, customFees?: {
+ denominatingTokenId: string;
+ amount: string;
+ collectorAccountId: string;
+ }[]) => Promise;
+ generatePrivateAndPublicKey: () => Promise<{
+ privateKey: string;
+ publicKey: string;
+ }>;
+ getTopicInfo: (topicId: string) => Promise;
+ updateTopic: (topicId: string, memo: string, adminKey: string) => Promise;
createToken: (name: string, symbol: string, initialSupply: number, decimals: number, treasuryAccountId: string, adminKey: string, supplyKey: string) => Promise;
mintNFT: (tokenId: string, metadata: string, supplyKey: PrivateKey) => Promise;
dAppConnector?: DAppConnector;
diff --git a/dist/index.d.ts b/dist/index.d.ts
deleted file mode 100644
index 40b3a12..0000000
--- a/dist/index.d.ts
+++ /dev/null
@@ -1,85 +0,0 @@
-import { SessionTypes, SignClientTypes } from '@walletconnect/types';
-import { Transaction, AccountId, ContractId, LedgerId, TransactionReceipt, ContractFunctionParameters, PrivateKey } from '@hashgraph/sdk';
-import * as HashgraphSDK from '@hashgraph/sdk';
-import { DAppConnector } from '@hashgraph/hedera-wallet-connect';
-import { FetchMessagesResult, TokenBalance, HederaAccountResponse, HederaTXResponse, Nft } from './types';
-import { ILogger } from './logger/logger';
-declare class HashinalsWalletConnectSDK {
- private static instance;
- private static dAppConnectorInstance;
- private logger;
- private network;
- private extensionCheckInterval;
- private hasCalledExtensionCallback;
- get dAppConnector(): DAppConnector;
- constructor(logger?: ILogger, network?: LedgerId);
- static getInstance(logger?: ILogger, network?: LedgerId): HashinalsWalletConnectSDK;
- setLogger(logger: ILogger): void;
- setNetwork(network: LedgerId): void;
- getNetwork(): LedgerId;
- setLogLevel(level: 'error' | 'warn' | 'info' | 'debug'): void;
- init(projectId: string, metadata: SignClientTypes.Metadata, network?: LedgerId, onSessionIframeCreated?: (session: SessionTypes.Struct) => void): Promise;
- connect(): Promise;
- disconnect(): Promise;
- disconnectAll(): Promise;
- executeTransaction(tx: Transaction, disableSigner?: boolean): Promise;
- executeTransactionWithErrorHandling(tx: Transaction, disableSigner: boolean): Promise<{
- result?: TransactionReceipt;
- error?: string;
- }>;
- submitMessageToTopic(topicId: string, message: string, submitKey?: PrivateKey): Promise;
- transferHbar(fromAccountId: string, toAccountId: string, amount: number): Promise;
- executeSmartContract(contractId: string, functionName: string, parameters: ContractFunctionParameters, gas?: number): Promise;
- private handleNewSession;
- private getNetworkPrefix;
- requestAccount(account: string): Promise;
- getAccountBalance(): Promise;
- getAccountInfo(): {
- accountId: string;
- network: LedgerId;
- };
- createTopic(memo?: string, adminKey?: string, submitKey?: string): Promise;
- createToken(name: string, symbol: string, initialSupply: number, decimals: number, treasuryAccountId: string, adminKey: string, supplyKey: string): Promise;
- mintNFT(tokenId: string, metadata: string, supplyKey: PrivateKey): Promise;
- getMessages(topicId: string, lastTimestamp?: number, disableTimestampFilter?: boolean, network?: string): Promise;
- signMessage(message: string): Promise<{
- userSignature: any;
- }>;
- private saveConnectionInfo;
- loadConnectionInfo(): {
- accountId: string | null;
- network: string | null;
- };
- connectWallet(PROJECT_ID: string, APP_METADATA: SignClientTypes.Metadata, network?: LedgerId): Promise<{
- accountId: string;
- balance: string;
- session: SessionTypes.Struct;
- }>;
- disconnectWallet(clearStorage?: boolean): Promise;
- initAccount(PROJECT_ID: string, APP_METADATA: SignClientTypes.Metadata, networkOverride?: LedgerId, onSessionIframeCreated?: (session: SessionTypes.Struct) => void): Promise<{
- accountId: string;
- balance: string;
- } | null>;
- subscribeToExtensions(callback: (extension: any) => void): () => void;
- connectViaDappBrowser(): Promise;
- private connectToExtension;
- private ensureInitialized;
- static run(): void;
- transferToken(tokenId: string, fromAccountId: string, toAccountId: string, amount: number): Promise;
- createAccount(initialBalance: number): Promise;
- associateTokenToAccount(accountId: string, tokenId: string): Promise;
- dissociateTokenFromAccount(accountId: string, tokenId: string): Promise;
- updateAccount(accountId: string, maxAutomaticTokenAssociations: number): Promise;
- approveAllowance(spenderAccountId: string, tokenId: string, amount: number, ownerAccountId: string): Promise;
- getAccountTokens(accountId: string): Promise<{
- tokens: TokenBalance[];
- }>;
- getTransaction(transactionId: string): Promise;
- getTransactionByTimestamp(timestamp: string): Promise;
- getAccountNFTs(accountId: string, tokenId?: string): Promise;
- validateNFTOwnership(serialNumber: string, accountId: string, tokenId: string): Promise;
- readSmartContract(data: string, fromAccount: AccountId, contractId: ContractId, estimate?: boolean, value?: number): Promise;
-}
-export * from './types';
-export * from './sign';
-export { HashinalsWalletConnectSDK, HashgraphSDK };
diff --git a/dist/logger/logger.d.ts b/dist/logger/logger.d.ts
deleted file mode 100644
index 389219a..0000000
--- a/dist/logger/logger.d.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-export interface ILogger {
- error(message: string, ...args: any[]): void;
- warn(message: string, ...args: any[]): void;
- info(message: string, ...args: any[]): void;
- debug(message: string, ...args: any[]): void;
-}
-export declare class DefaultLogger implements ILogger {
- private logLevel;
- setLogLevel(level: 'error' | 'warn' | 'info' | 'debug'): void;
- error(message: string, ...args: any[]): void;
- warn(message: string, ...args: any[]): void;
- info(message: string, ...args: any[]): void;
- debug(message: string, ...args: any[]): void;
-}
diff --git a/dist/sign/index.d.ts b/dist/sign/index.d.ts
deleted file mode 100644
index c3435e4..0000000
--- a/dist/sign/index.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { base64StringToSignatureMap, prefixMessageToSign, verifyMessageSignature, } from '@hashgraph/hedera-wallet-connect';
diff --git a/dist/types.d.ts b/dist/types.d.ts
deleted file mode 100644
index 88804d4..0000000
--- a/dist/types.d.ts
+++ /dev/null
@@ -1,254 +0,0 @@
-import { DAppConnector } from '@hashgraph/hedera-wallet-connect';
-import * as hashgraph from '@hashgraph/sdk';
-import { ContractFunctionParameters, TransactionReceipt, PrivateKey, Transaction, AccountId, ContractId } from '@hashgraph/sdk';
-import { SessionTypes, SignClientTypes } from '@walletconnect/types';
-export interface HederaAccountResponse {
- account: string;
- alias: null;
- auto_renew_period: number;
- balance: Balance;
- created_timestamp: string;
- decline_reward: boolean;
- deleted: boolean;
- ethereum_nonce: number;
- evm_address: string;
- expiry_timestamp: string;
- key: Key;
- max_automatic_token_associations: number;
- memo: string;
- pending_reward: number;
- receiver_sig_required: boolean;
- staked_account_id: null;
- staked_node_id: number;
- stake_period_start: string;
- transactions: HBARTransaction[];
- links: Links;
-}
-export interface Balance {
- balance: number;
- timestamp: string;
- tokens: Token[];
-}
-export interface Token {
- token_id: string;
- balance: number;
-}
-export interface Key {
- _type: string;
- key: string;
-}
-export interface Links {
- next: string;
-}
-export interface HBARTransaction {
- bytes: null;
- charged_tx_fee: number;
- consensus_timestamp: string;
- entity_id: null | string;
- max_fee: string;
- memo_base64: string;
- name: Name;
- nft_transfers: NftTransfer[];
- node: string;
- nonce: number;
- parent_consensus_timestamp: null;
- result: Result;
- scheduled: boolean;
- staking_reward_transfers: StakingRewardTransfer[];
- token_transfers: Transfer[];
- transaction_hash: string;
- transaction_id: string;
- transfers: Transfer[];
- valid_duration_seconds: string;
- valid_start_timestamp: string;
-}
-export declare enum Name {
- Contractcall = "CONTRACTCALL",
- Cryptotransfer = "CRYPTOTRANSFER"
-}
-export interface NftTransfer {
- is_approval: boolean;
- receiver_account_id: string;
- sender_account_id: string;
- serial_number: number;
- token_id: string;
-}
-export declare enum Result {
- Success = "SUCCESS"
-}
-export interface StakingRewardTransfer {
- account: string;
- amount: number;
-}
-export interface Transfer {
- token_id?: string;
- account: string;
- amount: number;
- is_approval: boolean;
-}
-export interface Message {
- payer: string;
- created: Date;
- consensus_timestamp: string;
- sequence_number: number;
- [key: string]: any;
-}
-export interface FetchMessagesResult {
- messages: Message[];
- error?: string;
-}
-export interface Account {
- account: string;
- alias: null;
- auto_renew_period: number;
- balance: Balance;
- decline_reward: boolean;
- deleted: boolean;
- ethereum_nonce: null;
- evm_address: null;
- expiry_timestamp: string;
- key: Key;
- max_automatic_token_associations: number;
- memo: string;
- receiver_sig_required: null;
- staked_account_id: null;
- staked_node_id: null;
- stake_period_start: null;
-}
-export interface Balance {
- balance: number;
- timestamp: string;
- tokens: Token[];
-}
-export interface Token {
- token_id: string;
- balance: number;
-}
-export interface Key {
- _type: string;
- key: string;
-}
-export interface TokenBalance {
- tokenId: string;
- balance: string;
- decimals: number;
- created_timestamp: Date;
- formatted_balance: string;
-}
-export interface HederaTXResponse {
- transactions: MirrorNodeTransaction[];
-}
-export interface MirrorNodeTransaction {
- bytes: null;
- charged_tx_fee: number;
- consensus_timestamp: string;
- entity_id: string;
- max_fee: string;
- memo_base64: string;
- name: string;
- node: null | string;
- nonce: number;
- parent_consensus_timestamp: null | string;
- result: string;
- scheduled: boolean;
- transaction_hash: string;
- transaction_id: string;
- transfers: Transfer[];
- token_transfers: TokenTransfer[];
- valid_duration_seconds: null | string;
- valid_start_timestamp: string;
- nft_transfers?: NftTransfer[];
-}
-export interface NftTransfer {
- is_approval: boolean;
- receiver_account_id: string;
- sender_account_id: string;
- serial_number: number;
- token_id: string;
-}
-export interface TokenTransfer {
- token_id: string;
- account: string;
- amount: number;
-}
-export interface HBarNFT {
- nfts: Nft[];
- links: Links;
-}
-export interface Links {
- next: string;
-}
-export interface Nft {
- account_id: string;
- created_timestamp: string;
- delegating_spender: null;
- deleted: boolean;
- metadata: string;
- modified_timestamp: string;
- serial_number: number;
- spender: null;
- token_id: string;
- token_uri?: string;
- owner_of?: string;
-}
-export interface FormattedOwner {
- token_uri?: string;
- chain?: string;
- owner_of?: string;
- token_address?: string;
- token_id?: string;
- account_id?: string;
- serial_number?: number;
- [key: string]: any;
-}
-export type HashinalsWalletConnectSDK = {
- run: () => void;
- init: (projectId: string, metadata: SignClientTypes.Metadata) => Promise;
- connect: () => Promise;
- connectWallet(PROJECT_ID: string, APP_METADATA: SignClientTypes.Metadata): Promise<{
- accountId: string;
- balance: string;
- session: SessionTypes.Struct;
- }>;
- disconnect: () => Promise;
- disconnectAll: () => Promise;
- disconnectWallet: () => Promise;
- loadConnectionInfo: () => string | null;
- saveConnectionInfo: (accountId: string) => void;
- executeTransaction: (tx: Transaction, disableSigner: boolean) => Promise;
- executeTransationWithErrorHandling: (tx: Transaction, disableSigner: boolean) => Promise<{
- result?: TransactionReceipt;
- error?: string;
- }>;
- result?: TransactionReceipt;
- error?: string;
- submitMessageToTopic: (topicId: string, message: string) => Promise;
- transferHbar: (fromAccountId: string, toAccountId: string, amount: number) => Promise;
- executeSmartContract: (contractId: string, functionName: string, parameters: ContractFunctionParameters, gas?: number) => Promise;
- getAccountBalance: () => Promise;
- getAccountInfo: () => string;
- createTopic: (memo?: string, adminKey?: string, submitKey?: string) => Promise;
- createToken: (name: string, symbol: string, initialSupply: number, decimals: number, treasuryAccountId: string, adminKey: string, supplyKey: string) => Promise;
- mintNFT: (tokenId: string, metadata: string, supplyKey: PrivateKey) => Promise;
- dAppConnector?: DAppConnector;
- getMessages: (topicId: string, lastTimestamp?: number, disableTimestampFilter?: boolean) => Promise;
- initAccount: (PROJECT_ID: string, APP_METADATA: SignClientTypes.Metadata) => Promise<{
- accountId: string;
- balance: string;
- } | null>;
- transferToken: (tokenId: string, fromAccountId: string, toAccountId: string, amount: number) => Promise;
- createAccount: (initialBalance: number) => Promise;
- associateTokenToAccount: (accountId: string, tokenId: string) => Promise;
- dissociateTokenFromAccount: (accountId: string, tokenId: string) => Promise;
- updateAccount: (accountId: string, maxAutomaticTokenAssociations: number) => Promise;
- approveAllowance: (spenderAccountId: string, tokenId: string, amount: number, ownerAccountId: string) => Promise;
- getAccountTokens: (accountId: string) => Promise<{
- tokens: TokenBalance[];
- }>;
- getTransaction: (transactionId: string) => Promise;
- getTransactionByTimestamp: (timestamp: string) => Promise;
- getAccountNFTs: (accountId: string, tokenId?: string) => Promise;
- validateNFTOwnership: (serialNumber: string, accountId: string, tokenId: string) => Promise;
- readSmartContract: (data: string, fromAccount: AccountId, contractId: ContractId, estimate?: boolean, value?: number) => Promise;
- HashgraphSDK: typeof hashgraph;
-};
diff --git a/dist/umd/hashinal-wc.umd.js b/dist/umd/hashinal-wc.umd.js
index ecf3a88..3729a11 100644
--- a/dist/umd/hashinal-wc.umd.js
+++ b/dist/umd/hashinal-wc.umd.js
@@ -1,13 +1,13 @@
-!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).HashinalsWalletConnectSDK={})}(this,(function(exports){"use strict";var __defProp2=Object.defineProperty,__defNormalProp2=(e,t,r)=>t in e?__defProp2(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,__publicField=(e,t,r)=>__defNormalProp2(e,"symbol"!=typeof t?t+"":t,r);function _mergeNamespaces(e,t){for(var r=0;rn[t]})}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}var buffer$1={},base64Js={};base64Js.byteLength=byteLength$1,base64Js.toByteArray=toByteArray,base64Js.fromByteArray=fromByteArray;for(var lookup=[],revLookup=[],Arr="undefined"!=typeof Uint8Array?Uint8Array:Array,code="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i$9=0,len=code.length;i$90)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return-1===r&&(r=t),[r,r===t?0:4-r%4]}function byteLength$1(e){var t=getLens(e),r=t[0],n=t[1];return 3*(r+n)/4-n}function _byteLength(e,t,r){return 3*(t+r)/4-r}function toByteArray(e){var t,r,n=getLens(e),o=n[0],i=n[1],a=new Arr(_byteLength(e,o,i)),s=0,c=i>0?o-4:o;for(r=0;r>16&255,a[s++]=t>>8&255,a[s++]=255&t;return 2===i&&(t=revLookup[e.charCodeAt(r)]<<2|revLookup[e.charCodeAt(r+1)]>>4,a[s++]=255&t),1===i&&(t=revLookup[e.charCodeAt(r)]<<10|revLookup[e.charCodeAt(r+1)]<<4|revLookup[e.charCodeAt(r+2)]>>2,a[s++]=t>>8&255,a[s++]=255&t),a}function tripletToBase64(e){return lookup[e>>18&63]+lookup[e>>12&63]+lookup[e>>6&63]+lookup[63&e]}function encodeChunk(e,t,r){for(var n,o=[],i=t;is?s:a+i));return 1===n?(t=e[r-1],o.push(lookup[t>>2]+lookup[t<<4&63]+"==")):2===n&&(t=(e[r-2]<<8)+e[r-1],o.push(lookup[t>>10]+lookup[t>>4&63]+lookup[t<<2&63]+"=")),o.join("")}revLookup["-".charCodeAt(0)]=62,revLookup["_".charCodeAt(0)]=63;var ieee754={
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).HashinalsWalletConnectSDK={})}(this,(function(exports){"use strict";var __defProp2=Object.defineProperty,__defNormalProp2=(e,t,r)=>t in e?__defProp2(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,__publicField=(e,t,r)=>__defNormalProp2(e,"symbol"!=typeof t?t+"":t,r);function _mergeNamespaces(e,t){for(var r=0;rn[t]})}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}var buffer$1={},base64Js={};base64Js.byteLength=byteLength$1,base64Js.toByteArray=toByteArray,base64Js.fromByteArray=fromByteArray;for(var lookup=[],revLookup=[],Arr="undefined"!=typeof Uint8Array?Uint8Array:Array,code="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i$n=0,len=code.length;i$n0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return-1===r&&(r=t),[r,r===t?0:4-r%4]}function byteLength$1(e){var t=getLens(e),r=t[0],n=t[1];return 3*(r+n)/4-n}function _byteLength(e,t,r){return 3*(t+r)/4-r}function toByteArray(e){var t,r,n=getLens(e),o=n[0],i=n[1],s=new Arr(_byteLength(e,o,i)),a=0,c=i>0?o-4:o;for(r=0;r>16&255,s[a++]=t>>8&255,s[a++]=255&t;return 2===i&&(t=revLookup[e.charCodeAt(r)]<<2|revLookup[e.charCodeAt(r+1)]>>4,s[a++]=255&t),1===i&&(t=revLookup[e.charCodeAt(r)]<<10|revLookup[e.charCodeAt(r+1)]<<4|revLookup[e.charCodeAt(r+2)]>>2,s[a++]=t>>8&255,s[a++]=255&t),s}function tripletToBase64(e){return lookup[e>>18&63]+lookup[e>>12&63]+lookup[e>>6&63]+lookup[63&e]}function encodeChunk(e,t,r){for(var n,o=[],i=t;ia?a:s+i));return 1===n?(t=e[r-1],o.push(lookup[t>>2]+lookup[t<<4&63]+"==")):2===n&&(t=(e[r-2]<<8)+e[r-1],o.push(lookup[t>>10]+lookup[t>>4&63]+lookup[t<<2&63]+"=")),o.join("")}revLookup["-".charCodeAt(0)]=62,revLookup["_".charCodeAt(0)]=63;var ieee754={
/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */
-read:function(e,t,r,n,o){var i,a,s=8*o-n-1,c=(1<>1,l=-7,d=r?o-1:0,f=r?-1:1,h=e[t+d];for(d+=f,i=h&(1<<-l)-1,h>>=-l,l+=s;l>0;i=256*i+e[t+d],d+=f,l-=8);for(a=i&(1<<-l)-1,i>>=-l,l+=n;l>0;a=256*a+e[t+d],d+=f,l-=8);if(0===i)i=1-u;else{if(i===c)return a?NaN:1/0*(h?-1:1);a+=Math.pow(2,n),i-=u}return(h?-1:1)*a*Math.pow(2,i-n)},write:function(e,t,r,n,o,i){var a,s,c,u=8*i-o-1,l=(1<>1,f=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,h=n?0:i-1,p=n?1:-1,y=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,a=l):(a=Math.floor(Math.log(t)/Math.LN2),t*(c=Math.pow(2,-a))<1&&(a--,c*=2),(t+=a+d>=1?f/c:f*Math.pow(2,1-d))*c>=2&&(a++,c/=2),a+d>=l?(s=0,a=l):a+d>=1?(s=(t*c-1)*Math.pow(2,o),a+=d):(s=t*Math.pow(2,d-1)*Math.pow(2,o),a=0));o>=8;e[r+h]=255&s,h+=p,s/=256,o-=8);for(a=a<0;e[r+h]=255&a,h+=p,a/=256,u-=8);e[r+h-p]|=128*y}};
+read:function(e,t,r,n,o){var i,s,a=8*o-n-1,c=(1<>1,l=-7,d=r?o-1:0,h=r?-1:1,f=e[t+d];for(d+=h,i=f&(1<<-l)-1,f>>=-l,l+=a;l>0;i=256*i+e[t+d],d+=h,l-=8);for(s=i&(1<<-l)-1,i>>=-l,l+=n;l>0;s=256*s+e[t+d],d+=h,l-=8);if(0===i)i=1-u;else{if(i===c)return s?NaN:1/0*(f?-1:1);s+=Math.pow(2,n),i-=u}return(f?-1:1)*s*Math.pow(2,i-n)},write:function(e,t,r,n,o,i){var s,a,c,u=8*i-o-1,l=(1<>1,h=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,f=n?0:i-1,p=n?1:-1,m=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,s=l):(s=Math.floor(Math.log(t)/Math.LN2),t*(c=Math.pow(2,-s))<1&&(s--,c*=2),(t+=s+d>=1?h/c:h*Math.pow(2,1-d))*c>=2&&(s++,c/=2),s+d>=l?(a=0,s=l):s+d>=1?(a=(t*c-1)*Math.pow(2,o),s+=d):(a=t*Math.pow(2,d-1)*Math.pow(2,o),s=0));o>=8;e[r+f]=255&a,f+=p,a/=256,o-=8);for(s=s<0;e[r+f]=255&s,f+=p,s/=256,u-=8);e[r+f-p]|=128*m}};
/*!
* The buffer module from node.js, for the browser.
*
* @author Feross Aboukhadijeh
* @license MIT
*/
-!function(e){const t=base64Js,r=ieee754,n="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=u,e.SlowBuffer=function(e){+e!=e&&(e=0);return u.alloc(+e)},e.INSPECT_MAX_BYTES=50;const o=2147483647;e.kMaxLength=o;const{Uint8Array:i,ArrayBuffer:a,SharedArrayBuffer:s}=globalThis;function c(e){if(e>o)throw new RangeError('The value "'+e+'" is invalid for option "size"');const t=new i(e);return Object.setPrototypeOf(t,u.prototype),t}function u(e,t,r){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return f(e)}return l(e,t,r)}function l(e,t,r){if("string"==typeof e)return function(e,t){"string"==typeof t&&""!==t||(t="utf8");if(!u.isEncoding(t))throw new TypeError("Unknown encoding: "+t);const r=0|m(e,t);let n=c(r);const o=n.write(e,t);o!==r&&(n=n.slice(0,o));return n}(e,t);if(a.isView(e))return function(e){if(Y(e,i)){const t=new i(e);return p(t.buffer,t.byteOffset,t.byteLength)}return h(e)}(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(Y(e,a)||e&&Y(e.buffer,a))return p(e,t,r);if(void 0!==s&&(Y(e,s)||e&&Y(e.buffer,s)))return p(e,t,r);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');const n=e.valueOf&&e.valueOf();if(null!=n&&n!==e)return u.from(n,t,r);const o=function(e){if(u.isBuffer(e)){const t=0|y(e.length),r=c(t);return 0===r.length||e.copy(r,0,0,t),r}if(void 0!==e.length)return"number"!=typeof e.length||X(e.length)?c(0):h(e);if("Buffer"===e.type&&Array.isArray(e.data))return h(e.data)}(e);if(o)return o;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return u.from(e[Symbol.toPrimitive]("string"),t,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function d(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function f(e){return d(e),c(e<0?0:0|y(e))}function h(e){const t=e.length<0?0:0|y(e.length),r=c(t);for(let n=0;n=o)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o.toString(16)+" bytes");return 0|e}function m(e,t){if(u.isBuffer(e))return e.length;if(a.isView(e)||Y(e,a))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);const r=e.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;let o=!1;for(;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return V(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return W(e).length;default:if(o)return n?-1:V(e).length;t=(""+t).toLowerCase(),o=!0}}function g(e,t,r){let n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return O(this,t,r);case"utf8":case"utf-8":return A(this,t,r);case"ascii":return C(this,t,r);case"latin1":case"binary":return R(this,t,r);case"base64":return S(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return N(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function b(e,t,r){const n=e[t];e[t]=e[r],e[r]=n}function v(e,t,r,n,o){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),X(r=+r)&&(r=o?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(o)return-1;r=e.length-1}else if(r<0){if(!o)return-1;r=0}if("string"==typeof t&&(t=u.from(t,n)),u.isBuffer(t))return 0===t.length?-1:w(e,t,r,n,o);if("number"==typeof t)return t&=255,"function"==typeof i.prototype.indexOf?o?i.prototype.indexOf.call(e,t,r):i.prototype.lastIndexOf.call(e,t,r):w(e,[t],r,n,o);throw new TypeError("val must be string, number or Buffer")}function w(e,t,r,n,o){let i,a=1,s=e.length,c=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;a=2,s/=2,c/=2,r/=2}function u(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(o){let n=-1;for(i=r;is&&(r=s-c),i=r;i>=0;i--){let r=!0;for(let n=0;no&&(n=o):n=o;const i=t.length;let a;for(n>i/2&&(n=i/2),a=0;a>8,o=r%256,i.push(o),i.push(n);return i}(t,e.length-r),e,r,n)}function S(e,r,n){return 0===r&&n===e.length?t.fromByteArray(e):t.fromByteArray(e.slice(r,n))}function A(e,t,r){r=Math.min(e.length,r);const n=[];let o=t;for(;o239?4:t>223?3:t>191?2:1;if(o+a<=r){let r,n,s,c;switch(a){case 1:t<128&&(i=t);break;case 2:r=e[o+1],128==(192&r)&&(c=(31&t)<<6|63&r,c>127&&(i=c));break;case 3:r=e[o+1],n=e[o+2],128==(192&r)&&128==(192&n)&&(c=(15&t)<<12|(63&r)<<6|63&n,c>2047&&(c<55296||c>57343)&&(i=c));break;case 4:r=e[o+1],n=e[o+2],s=e[o+3],128==(192&r)&&128==(192&n)&&128==(192&s)&&(c=(15&t)<<18|(63&r)<<12|(63&n)<<6|63&s,c>65535&&c<1114112&&(i=c))}}null===i?(i=65533,a=1):i>65535&&(i-=65536,n.push(i>>>10&1023|55296),i=56320|1023&i),n.push(i),o+=a}return function(e){const t=e.length;if(t<=E)return String.fromCharCode.apply(String,e);let r="",n=0;for(;n