{"version":3,"file":"index.cjs","sources":["../src/constants/core.ts","../src/constants/crypto.ts","../src/constants/keychain.ts","../src/constants/messages.ts","../src/constants/publisher.ts","../src/constants/relayer.ts","../src/constants/store.ts","../src/constants/subscriber.ts","../src/constants/pairing.ts","../src/constants/history.ts","../src/constants/expirer.ts","../src/constants/verify.ts","../src/constants/echo.ts","../src/constants/events.ts","../../../node_modules/multiformats/esm/vendor/base-x.js","../../../node_modules/multiformats/esm/src/bytes.js","../../../node_modules/multiformats/esm/src/bases/base.js","../../../node_modules/multiformats/esm/src/bases/identity.js","../../../node_modules/multiformats/esm/src/bases/base2.js","../../../node_modules/multiformats/esm/src/bases/base8.js","../../../node_modules/multiformats/esm/src/bases/base10.js","../../../node_modules/multiformats/esm/src/bases/base16.js","../../../node_modules/multiformats/esm/src/bases/base32.js","../../../node_modules/multiformats/esm/src/bases/base36.js","../../../node_modules/multiformats/esm/src/bases/base58.js","../../../node_modules/multiformats/esm/src/bases/base64.js","../../../node_modules/multiformats/esm/src/bases/base256emoji.js","../../../node_modules/multiformats/esm/vendor/varint.js","../../../node_modules/multiformats/esm/src/varint.js","../../../node_modules/multiformats/esm/src/hashes/digest.js","../../../node_modules/multiformats/esm/src/hashes/hasher.js","../../../node_modules/multiformats/esm/src/hashes/sha2-browser.js","../../../node_modules/multiformats/esm/src/hashes/identity.js","../../../node_modules/multiformats/esm/src/codecs/json.js","../../../node_modules/multiformats/esm/src/basics.js","../../../node_modules/uint8arrays/esm/src/util/as-uint8array.js","../../../node_modules/uint8arrays/esm/src/alloc.js","../../../node_modules/uint8arrays/esm/src/util/bases.js","../../../node_modules/uint8arrays/esm/src/from-string.js","../src/controllers/keychain.ts","../src/controllers/crypto.ts","../src/controllers/messages.ts","../src/controllers/publisher.ts","../src/controllers/topicmap.ts","../src/controllers/subscriber.ts","../src/controllers/relayer.ts","../../../node_modules/es-toolkit/dist/compat/util/eq.mjs","../../../node_modules/es-toolkit/dist/compat/_internal/getSymbols.mjs","../../../node_modules/es-toolkit/dist/compat/_internal/getTag.mjs","../../../node_modules/es-toolkit/dist/compat/_internal/tags.mjs","../../../node_modules/es-toolkit/dist/function/noop.mjs","../../../node_modules/es-toolkit/dist/predicate/isPlainObject.mjs","../../../node_modules/es-toolkit/dist/predicate/isEqualWith.mjs","../../../node_modules/es-toolkit/dist/predicate/isEqual.mjs","../src/controllers/store.ts","../src/controllers/pairing.ts","../src/controllers/history.ts","../src/controllers/expirer.ts","../src/controllers/verify.ts","../src/controllers/echo.ts","../src/controllers/events.ts","../src/core.ts","../src/index.ts"],"sourcesContent":["export const CORE_PROTOCOL = \"wc\";\nexport const CORE_VERSION = 2;\nexport const CORE_CONTEXT = \"core\";\n\nexport const CORE_STORAGE_PREFIX = `${CORE_PROTOCOL}@${CORE_VERSION}:${CORE_CONTEXT}:`;\n\nexport const CORE_DEFAULT = {\n  name: CORE_CONTEXT,\n  logger: \"error\",\n};\n\nexport const CORE_STORAGE_OPTIONS = {\n  database: \":memory:\",\n};\n","import { ONE_DAY } from \"@walletconnect/time\";\n\nexport const CRYPTO_CONTEXT = \"crypto\";\n\nexport const CRYPTO_CLIENT_SEED = \"client_ed25519_seed\";\n\nexport const CRYPTO_JWT_TTL = ONE_DAY;\n","export const KEYCHAIN_CONTEXT = \"keychain\";\n\nexport const KEYCHAIN_STORAGE_VERSION = \"0.3\";\n","export const MESSAGES_CONTEXT = \"messages\";\n\nexport const MESSAGES_STORAGE_VERSION = \"0.3\";\n","import { SIX_HOURS } from \"@walletconnect/time\";\n\nexport const PUBLISHER_DEFAULT_TTL = SIX_HOURS;\n\nexport const PUBLISHER_CONTEXT = \"publisher\";\n","export const RELAYER_DEFAULT_PROTOCOL = \"irn\";\n\nexport const RELAYER_DEFAULT_LOGGER = \"error\";\n\nexport const RELAYER_DEFAULT_RELAY_URL = \"wss://relay.walletconnect.org\";\n\nexport const RELAYER_CONTEXT = \"relayer\";\n\nexport const RELAYER_EVENTS = {\n  message: \"relayer_message\",\n  message_ack: \"relayer_message_ack\",\n  connect: \"relayer_connect\",\n  disconnect: \"relayer_disconnect\",\n  error: \"relayer_error\",\n  connection_stalled: \"relayer_connection_stalled\",\n  transport_closed: \"relayer_transport_closed\",\n  publish: \"relayer_publish\",\n};\n\nexport const RELAYER_SUBSCRIBER_SUFFIX = \"_subscription\";\n\nexport const RELAYER_PROVIDER_EVENTS = {\n  payload: \"payload\",\n  connect: \"connect\",\n  disconnect: \"disconnect\",\n  error: \"error\",\n};\n\nexport const RELAYER_RECONNECT_TIMEOUT = 0.1;\n\nexport const RELAYER_STORAGE_OPTIONS = {\n  database: \":memory:\",\n};\n\n// Updated automatically via `new-version` npm script.\n\nexport const RELAYER_SDK_VERSION = \"2.22.2\";\n\n// delay to wait before closing the transport connection after init if not active\nexport const RELAYER_TRANSPORT_CUTOFF = 10_000;\n\nexport const TRANSPORT_TYPES = {\n  link_mode: \"link_mode\",\n  relay: \"relay\",\n} as const;\n\nexport const MESSAGE_DIRECTION = {\n  inbound: \"inbound\",\n  outbound: \"outbound\",\n} as const;\n","export const STORE_STORAGE_VERSION = \"0.3\";\n\nexport const WALLETCONNECT_CLIENT_ID = \"WALLETCONNECT_CLIENT_ID\";\nexport const WALLETCONNECT_LINK_MODE_APPS = \"WALLETCONNECT_LINK_MODE_APPS\";\n","import { THIRTY_DAYS, FIVE_SECONDS } from \"@walletconnect/time\";\n\nexport const SUBSCRIBER_EVENTS = {\n  created: \"subscription_created\",\n  deleted: \"subscription_deleted\",\n  expired: \"subscription_expired\",\n  disabled: \"subscription_disabled\",\n  sync: \"subscription_sync\",\n  resubscribed: \"subscription_resubscribed\",\n};\n\nexport const SUBSCRIBER_DEFAULT_TTL = THIRTY_DAYS;\n\nexport const SUBSCRIBER_CONTEXT = \"subscription\";\n\nexport const SUBSCRIBER_STORAGE_VERSION = \"0.3\";\n\nexport const PENDING_SUB_RESOLUTION_TIMEOUT = FIVE_SECONDS * 1000;\n","import { THIRTY_DAYS, ONE_DAY, THIRTY_SECONDS } from \"@walletconnect/time\";\nimport { RelayerTypes, PairingJsonRpcTypes } from \"@walletconnect/types\";\n\nexport const PAIRING_CONTEXT = \"pairing\";\n\nexport const PAIRING_STORAGE_VERSION = \"0.3\";\n\nexport const PAIRING_DEFAULT_TTL = THIRTY_DAYS;\n\nexport const PAIRING_RPC_OPTS: Record<\n  PairingJsonRpcTypes.WcMethod | \"unregistered_method\",\n  {\n    req: RelayerTypes.PublishOptions;\n    res: RelayerTypes.PublishOptions;\n  }\n> = {\n  wc_pairingDelete: {\n    req: {\n      ttl: ONE_DAY,\n      prompt: false,\n      tag: 1000,\n    },\n    res: {\n      ttl: ONE_DAY,\n      prompt: false,\n      tag: 1001,\n    },\n  },\n  wc_pairingPing: {\n    req: {\n      ttl: THIRTY_SECONDS,\n      prompt: false,\n      tag: 1002,\n    },\n    res: {\n      ttl: THIRTY_SECONDS,\n      prompt: false,\n      tag: 1003,\n    },\n  },\n  unregistered_method: {\n    req: {\n      ttl: ONE_DAY,\n      prompt: false,\n      tag: 0,\n    },\n    res: {\n      ttl: ONE_DAY,\n      prompt: false,\n      tag: 0,\n    },\n  },\n};\n\nexport const PAIRING_EVENTS = {\n  create: \"pairing_create\",\n  expire: \"pairing_expire\",\n  delete: \"pairing_delete\",\n  ping: \"pairing_ping\",\n};\n","export const HISTORY_EVENTS = {\n  created: \"history_created\",\n  updated: \"history_updated\",\n  deleted: \"history_deleted\",\n  sync: \"history_sync\",\n};\n\nexport const HISTORY_CONTEXT = \"history\";\n\nexport const HISTORY_STORAGE_VERSION = \"0.3\";\n","import { ONE_DAY } from \"@walletconnect/time\";\n\nexport const EXPIRER_CONTEXT = \"expirer\";\n\nexport const EXPIRER_EVENTS = {\n  created: \"expirer_created\",\n  deleted: \"expirer_deleted\",\n  expired: \"expirer_expired\",\n  sync: \"expirer_sync\",\n};\n\nexport const EXPIRER_STORAGE_VERSION = \"0.3\";\n\nexport const EXPIRER_DEFAULT_TTL = ONE_DAY;\n","export const VERIFY_CONTEXT = \"verify-api\";\n\nconst VERIFY_SERVER_COM = \"https://verify.walletconnect.com\";\nconst VERIFY_SERVER_ORG = \"https://verify.walletconnect.org\";\nexport const VERIFY_SERVER = VERIFY_SERVER_ORG;\nexport const VERIFY_SERVER_V3 = `${VERIFY_SERVER}/v3`;\n\nexport const TRUSTED_VERIFY_URLS = [VERIFY_SERVER_COM, VERIFY_SERVER_ORG];\n","export const ECHO_CONTEXT = \"echo\";\n\nexport const ECHO_URL = \"https://echo.walletconnect.com\";\n","export const EVENT_CLIENT_CONTEXT = \"event-client\";\n\nexport const EVENT_CLIENT_PAIRING_TRACES = {\n  pairing_started: \"pairing_started\",\n  pairing_uri_validation_success: \"pairing_uri_validation_success\",\n  pairing_uri_not_expired: \"pairing_uri_not_expired\",\n  store_new_pairing: \"store_new_pairing\",\n  subscribing_pairing_topic: \"subscribing_pairing_topic\",\n  subscribe_pairing_topic_success: \"subscribe_pairing_topic_success\",\n  existing_pairing: \"existing_pairing\",\n  pairing_not_expired: \"pairing_not_expired\",\n  emit_inactive_pairing: \"emit_inactive_pairing\",\n  emit_session_proposal: \"emit_session_proposal\",\n  subscribing_to_pairing_topic: \"subscribing_to_pairing_topic\",\n};\n\nexport const EVENT_CLIENT_PAIRING_ERRORS = {\n  no_wss_connection: \"no_wss_connection\",\n  no_internet_connection: \"no_internet_connection\",\n  malformed_pairing_uri: \"malformed_pairing_uri\",\n  active_pairing_already_exists: \"active_pairing_already_exists\",\n  subscribe_pairing_topic_failure: \"subscribe_pairing_topic_failure\",\n  pairing_expired: \"pairing_expired\",\n  proposal_expired: \"proposal_expired\",\n  proposal_listener_not_found: \"proposal_listener_not_found\",\n};\n\nexport const EVENT_CLIENT_SESSION_TRACES = {\n  session_approve_started: \"session_approve_started\",\n  proposal_not_expired: \"proposal_not_expired\",\n  session_namespaces_validation_success: \"session_namespaces_validation_success\",\n  create_session_topic: \"create_session_topic\",\n  subscribing_session_topic: \"subscribing_session_topic\",\n  subscribe_session_topic_success: \"subscribe_session_topic_success\",\n  publishing_session_approve: \"publishing_session_approve\",\n  session_approve_publish_success: \"session_approve_publish_success\",\n  store_session: \"store_session\",\n  publishing_session_settle: \"publishing_session_settle\",\n  session_settle_publish_success: \"session_settle_publish_success\",\n  session_request_response_started: \"session_request_response_started\",\n  session_request_response_validation_success: \"session_request_response_validation_success\",\n  session_request_response_publish_started: \"session_request_response_publish_started\",\n};\n\nexport const EVENT_CLIENT_SESSION_ERRORS = {\n  no_internet_connection: \"no_internet_connection\",\n  no_wss_connection: \"no_wss_connection\",\n  proposal_expired: \"proposal_expired\",\n  subscribe_session_topic_failure: \"subscribe_session_topic_failure\",\n  session_approve_publish_failure: \"session_approve_publish_failure\",\n  session_settle_publish_failure: \"session_settle_publish_failure\",\n  session_approve_namespace_validation_failure: \"session_approve_namespace_validation_failure\",\n  proposal_not_found: \"proposal_not_found\",\n  session_request_response_validation_failure: \"session_request_response_validation_failure\",\n  session_request_response_publish_failure: \"session_request_response_publish_failure\",\n};\n\nexport const EVENT_CLIENT_AUTHENTICATE_TRACES = {\n  authenticated_session_approve_started: \"authenticated_session_approve_started\",\n  authenticated_session_not_expired: \"authenticated_session_not_expired\",\n  chains_caip2_compliant: \"chains_caip2_compliant\",\n  chains_evm_compliant: \"chains_evm_compliant\",\n  create_authenticated_session_topic: \"create_authenticated_session_topic\",\n  cacaos_verified: \"cacaos_verified\",\n  store_authenticated_session: \"store_authenticated_session\",\n  subscribing_authenticated_session_topic: \"subscribing_authenticated_session_topic\",\n  subscribe_authenticated_session_topic_success: \"subscribe_authenticated_session_topic_success\",\n  publishing_authenticated_session_approve: \"publishing_authenticated_session_approve\",\n  authenticated_session_approve_publish_success: \"authenticated_session_approve_publish_success\",\n};\n\nexport const EVENT_CLIENT_AUTHENTICATE_ERRORS = {\n  no_internet_connection: \"no_internet_connection\",\n  no_wss_connection: \"no_wss_connection\",\n  missing_session_authenticate_request: \"missing_session_authenticate_request\",\n  session_authenticate_request_expired: \"session_authenticate_request_expired\",\n  chains_caip2_compliant_failure: \"chains_caip2_compliant_failure\",\n  chains_evm_compliant_failure: \"chains_evm_compliant_failure\",\n  invalid_cacao: \"invalid_cacao\",\n  subscribe_authenticated_session_topic_failure: \"subscribe_authenticated_session_topic_failure\",\n  authenticated_session_approve_publish_failure: \"authenticated_session_approve_publish_failure\",\n  authenticated_session_pending_request_not_found:\n    \"authenticated_session_pending_request_not_found\",\n};\n\nexport const EVENTS_STORAGE_VERSION = 0.1;\n\nexport const EVENTS_STORAGE_CONTEXT = \"event-client\";\n\nexport const EVENTS_STORAGE_CLEANUP_INTERVAL = 86400;\n\nexport const EVENTS_CLIENT_API_URL = \"https://pulse.walletconnect.org/batch\";\n","function base(ALPHABET, name) {\n  if (ALPHABET.length >= 255) {\n    throw new TypeError('Alphabet too long');\n  }\n  var BASE_MAP = new Uint8Array(256);\n  for (var j = 0; j < BASE_MAP.length; j++) {\n    BASE_MAP[j] = 255;\n  }\n  for (var i = 0; i < ALPHABET.length; i++) {\n    var x = ALPHABET.charAt(i);\n    var xc = x.charCodeAt(0);\n    if (BASE_MAP[xc] !== 255) {\n      throw new TypeError(x + ' is ambiguous');\n    }\n    BASE_MAP[xc] = i;\n  }\n  var BASE = ALPHABET.length;\n  var LEADER = ALPHABET.charAt(0);\n  var FACTOR = Math.log(BASE) / Math.log(256);\n  var iFACTOR = Math.log(256) / Math.log(BASE);\n  function encode(source) {\n    if (source instanceof Uint8Array);\n    else if (ArrayBuffer.isView(source)) {\n      source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n    } else if (Array.isArray(source)) {\n      source = Uint8Array.from(source);\n    }\n    if (!(source instanceof Uint8Array)) {\n      throw new TypeError('Expected Uint8Array');\n    }\n    if (source.length === 0) {\n      return '';\n    }\n    var zeroes = 0;\n    var length = 0;\n    var pbegin = 0;\n    var pend = source.length;\n    while (pbegin !== pend && source[pbegin] === 0) {\n      pbegin++;\n      zeroes++;\n    }\n    var size = (pend - pbegin) * iFACTOR + 1 >>> 0;\n    var b58 = new Uint8Array(size);\n    while (pbegin !== pend) {\n      var carry = source[pbegin];\n      var i = 0;\n      for (var it1 = size - 1; (carry !== 0 || i < length) && it1 !== -1; it1--, i++) {\n        carry += 256 * b58[it1] >>> 0;\n        b58[it1] = carry % BASE >>> 0;\n        carry = carry / BASE >>> 0;\n      }\n      if (carry !== 0) {\n        throw new Error('Non-zero carry');\n      }\n      length = i;\n      pbegin++;\n    }\n    var it2 = size - length;\n    while (it2 !== size && b58[it2] === 0) {\n      it2++;\n    }\n    var str = LEADER.repeat(zeroes);\n    for (; it2 < size; ++it2) {\n      str += ALPHABET.charAt(b58[it2]);\n    }\n    return str;\n  }\n  function decodeUnsafe(source) {\n    if (typeof source !== 'string') {\n      throw new TypeError('Expected String');\n    }\n    if (source.length === 0) {\n      return new Uint8Array();\n    }\n    var psz = 0;\n    if (source[psz] === ' ') {\n      return;\n    }\n    var zeroes = 0;\n    var length = 0;\n    while (source[psz] === LEADER) {\n      zeroes++;\n      psz++;\n    }\n    var size = (source.length - psz) * FACTOR + 1 >>> 0;\n    var b256 = new Uint8Array(size);\n    while (source[psz]) {\n      var carry = BASE_MAP[source.charCodeAt(psz)];\n      if (carry === 255) {\n        return;\n      }\n      var i = 0;\n      for (var it3 = size - 1; (carry !== 0 || i < length) && it3 !== -1; it3--, i++) {\n        carry += BASE * b256[it3] >>> 0;\n        b256[it3] = carry % 256 >>> 0;\n        carry = carry / 256 >>> 0;\n      }\n      if (carry !== 0) {\n        throw new Error('Non-zero carry');\n      }\n      length = i;\n      psz++;\n    }\n    if (source[psz] === ' ') {\n      return;\n    }\n    var it4 = size - length;\n    while (it4 !== size && b256[it4] === 0) {\n      it4++;\n    }\n    var vch = new Uint8Array(zeroes + (size - it4));\n    var j = zeroes;\n    while (it4 !== size) {\n      vch[j++] = b256[it4++];\n    }\n    return vch;\n  }\n  function decode(string) {\n    var buffer = decodeUnsafe(string);\n    if (buffer) {\n      return buffer;\n    }\n    throw new Error(`Non-${ name } character`);\n  }\n  return {\n    encode: encode,\n    decodeUnsafe: decodeUnsafe,\n    decode: decode\n  };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;","const empty = new Uint8Array(0);\nconst toHex = d => d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\nconst fromHex = hex => {\n  const hexes = hex.match(/../g);\n  return hexes ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n};\nconst equals = (aa, bb) => {\n  if (aa === bb)\n    return true;\n  if (aa.byteLength !== bb.byteLength) {\n    return false;\n  }\n  for (let ii = 0; ii < aa.byteLength; ii++) {\n    if (aa[ii] !== bb[ii]) {\n      return false;\n    }\n  }\n  return true;\n};\nconst coerce = o => {\n  if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n    return o;\n  if (o instanceof ArrayBuffer)\n    return new Uint8Array(o);\n  if (ArrayBuffer.isView(o)) {\n    return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n  }\n  throw new Error('Unknown type, must be binary type');\n};\nconst isBinary = o => o instanceof ArrayBuffer || ArrayBuffer.isView(o);\nconst fromString = str => new TextEncoder().encode(str);\nconst toString = b => new TextDecoder().decode(b);\nexport {\n  equals,\n  coerce,\n  isBinary,\n  fromHex,\n  toHex,\n  fromString,\n  toString,\n  empty\n};","import basex from '../../vendor/base-x.js';\nimport { coerce } from '../bytes.js';\nclass Encoder {\n  constructor(name, prefix, baseEncode) {\n    this.name = name;\n    this.prefix = prefix;\n    this.baseEncode = baseEncode;\n  }\n  encode(bytes) {\n    if (bytes instanceof Uint8Array) {\n      return `${ this.prefix }${ this.baseEncode(bytes) }`;\n    } else {\n      throw Error('Unknown type, must be binary type');\n    }\n  }\n}\nclass Decoder {\n  constructor(name, prefix, baseDecode) {\n    this.name = name;\n    this.prefix = prefix;\n    if (prefix.codePointAt(0) === undefined) {\n      throw new Error('Invalid prefix character');\n    }\n    this.prefixCodePoint = prefix.codePointAt(0);\n    this.baseDecode = baseDecode;\n  }\n  decode(text) {\n    if (typeof text === 'string') {\n      if (text.codePointAt(0) !== this.prefixCodePoint) {\n        throw Error(`Unable to decode multibase string ${ JSON.stringify(text) }, ${ this.name } decoder only supports inputs prefixed with ${ this.prefix }`);\n      }\n      return this.baseDecode(text.slice(this.prefix.length));\n    } else {\n      throw Error('Can only multibase decode strings');\n    }\n  }\n  or(decoder) {\n    return or(this, decoder);\n  }\n}\nclass ComposedDecoder {\n  constructor(decoders) {\n    this.decoders = decoders;\n  }\n  or(decoder) {\n    return or(this, decoder);\n  }\n  decode(input) {\n    const prefix = input[0];\n    const decoder = this.decoders[prefix];\n    if (decoder) {\n      return decoder.decode(input);\n    } else {\n      throw RangeError(`Unable to decode multibase string ${ JSON.stringify(input) }, only inputs prefixed with ${ Object.keys(this.decoders) } are supported`);\n    }\n  }\n}\nexport const or = (left, right) => new ComposedDecoder({\n  ...left.decoders || { [left.prefix]: left },\n  ...right.decoders || { [right.prefix]: right }\n});\nexport class Codec {\n  constructor(name, prefix, baseEncode, baseDecode) {\n    this.name = name;\n    this.prefix = prefix;\n    this.baseEncode = baseEncode;\n    this.baseDecode = baseDecode;\n    this.encoder = new Encoder(name, prefix, baseEncode);\n    this.decoder = new Decoder(name, prefix, baseDecode);\n  }\n  encode(input) {\n    return this.encoder.encode(input);\n  }\n  decode(input) {\n    return this.decoder.decode(input);\n  }\n}\nexport const from = ({name, prefix, encode, decode}) => new Codec(name, prefix, encode, decode);\nexport const baseX = ({prefix, name, alphabet}) => {\n  const {encode, decode} = basex(alphabet, name);\n  return from({\n    prefix,\n    name,\n    encode,\n    decode: text => coerce(decode(text))\n  });\n};\nconst decode = (string, alphabet, bitsPerChar, name) => {\n  const codes = {};\n  for (let i = 0; i < alphabet.length; ++i) {\n    codes[alphabet[i]] = i;\n  }\n  let end = string.length;\n  while (string[end - 1] === '=') {\n    --end;\n  }\n  const out = new Uint8Array(end * bitsPerChar / 8 | 0);\n  let bits = 0;\n  let buffer = 0;\n  let written = 0;\n  for (let i = 0; i < end; ++i) {\n    const value = codes[string[i]];\n    if (value === undefined) {\n      throw new SyntaxError(`Non-${ name } character`);\n    }\n    buffer = buffer << bitsPerChar | value;\n    bits += bitsPerChar;\n    if (bits >= 8) {\n      bits -= 8;\n      out[written++] = 255 & buffer >> bits;\n    }\n  }\n  if (bits >= bitsPerChar || 255 & buffer << 8 - bits) {\n    throw new SyntaxError('Unexpected end of data');\n  }\n  return out;\n};\nconst encode = (data, alphabet, bitsPerChar) => {\n  const pad = alphabet[alphabet.length - 1] === '=';\n  const mask = (1 << bitsPerChar) - 1;\n  let out = '';\n  let bits = 0;\n  let buffer = 0;\n  for (let i = 0; i < data.length; ++i) {\n    buffer = buffer << 8 | data[i];\n    bits += 8;\n    while (bits > bitsPerChar) {\n      bits -= bitsPerChar;\n      out += alphabet[mask & buffer >> bits];\n    }\n  }\n  if (bits) {\n    out += alphabet[mask & buffer << bitsPerChar - bits];\n  }\n  if (pad) {\n    while (out.length * bitsPerChar & 7) {\n      out += '=';\n    }\n  }\n  return out;\n};\nexport const rfc4648 = ({name, prefix, bitsPerChar, alphabet}) => {\n  return from({\n    prefix,\n    name,\n    encode(input) {\n      return encode(input, alphabet, bitsPerChar);\n    },\n    decode(input) {\n      return decode(input, alphabet, bitsPerChar, name);\n    }\n  });\n};","import { from } from './base.js';\nimport {\n  fromString,\n  toString\n} from '../bytes.js';\nexport const identity = from({\n  prefix: '\\0',\n  name: 'identity',\n  encode: buf => toString(buf),\n  decode: str => fromString(str)\n});","import { rfc4648 } from './base.js';\nexport const base2 = rfc4648({\n  prefix: '0',\n  name: 'base2',\n  alphabet: '01',\n  bitsPerChar: 1\n});","import { rfc4648 } from './base.js';\nexport const base8 = rfc4648({\n  prefix: '7',\n  name: 'base8',\n  alphabet: '01234567',\n  bitsPerChar: 3\n});","import { baseX } from './base.js';\nexport const base10 = baseX({\n  prefix: '9',\n  name: 'base10',\n  alphabet: '0123456789'\n});","import { rfc4648 } from './base.js';\nexport const base16 = rfc4648({\n  prefix: 'f',\n  name: 'base16',\n  alphabet: '0123456789abcdef',\n  bitsPerChar: 4\n});\nexport const base16upper = rfc4648({\n  prefix: 'F',\n  name: 'base16upper',\n  alphabet: '0123456789ABCDEF',\n  bitsPerChar: 4\n});","import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n  prefix: 'b',\n  name: 'base32',\n  alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n  bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n  prefix: 'B',\n  name: 'base32upper',\n  alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n  bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n  prefix: 'c',\n  name: 'base32pad',\n  alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n  bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n  prefix: 'C',\n  name: 'base32padupper',\n  alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n  bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n  prefix: 'v',\n  name: 'base32hex',\n  alphabet: '0123456789abcdefghijklmnopqrstuv',\n  bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n  prefix: 'V',\n  name: 'base32hexupper',\n  alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n  bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n  prefix: 't',\n  name: 'base32hexpad',\n  alphabet: '0123456789abcdefghijklmnopqrstuv=',\n  bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n  prefix: 'T',\n  name: 'base32hexpadupper',\n  alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n  bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n  prefix: 'h',\n  name: 'base32z',\n  alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n  bitsPerChar: 5\n});","import { baseX } from './base.js';\nexport const base36 = baseX({\n  prefix: 'k',\n  name: 'base36',\n  alphabet: '0123456789abcdefghijklmnopqrstuvwxyz'\n});\nexport const base36upper = baseX({\n  prefix: 'K',\n  name: 'base36upper',\n  alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'\n});","import { baseX } from './base.js';\nexport const base58btc = baseX({\n  name: 'base58btc',\n  prefix: 'z',\n  alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n  name: 'base58flickr',\n  prefix: 'Z',\n  alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});","import { rfc4648 } from './base.js';\nexport const base64 = rfc4648({\n  prefix: 'm',\n  name: 'base64',\n  alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n  bitsPerChar: 6\n});\nexport const base64pad = rfc4648({\n  prefix: 'M',\n  name: 'base64pad',\n  alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n  bitsPerChar: 6\n});\nexport const base64url = rfc4648({\n  prefix: 'u',\n  name: 'base64url',\n  alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n  bitsPerChar: 6\n});\nexport const base64urlpad = rfc4648({\n  prefix: 'U',\n  name: 'base64urlpad',\n  alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',\n  bitsPerChar: 6\n});","import { from } from './base.js';\nconst alphabet = Array.from('\\uD83D\\uDE80\\uD83E\\uDE90\\u2604\\uD83D\\uDEF0\\uD83C\\uDF0C\\uD83C\\uDF11\\uD83C\\uDF12\\uD83C\\uDF13\\uD83C\\uDF14\\uD83C\\uDF15\\uD83C\\uDF16\\uD83C\\uDF17\\uD83C\\uDF18\\uD83C\\uDF0D\\uD83C\\uDF0F\\uD83C\\uDF0E\\uD83D\\uDC09\\u2600\\uD83D\\uDCBB\\uD83D\\uDDA5\\uD83D\\uDCBE\\uD83D\\uDCBF\\uD83D\\uDE02\\u2764\\uD83D\\uDE0D\\uD83E\\uDD23\\uD83D\\uDE0A\\uD83D\\uDE4F\\uD83D\\uDC95\\uD83D\\uDE2D\\uD83D\\uDE18\\uD83D\\uDC4D\\uD83D\\uDE05\\uD83D\\uDC4F\\uD83D\\uDE01\\uD83D\\uDD25\\uD83E\\uDD70\\uD83D\\uDC94\\uD83D\\uDC96\\uD83D\\uDC99\\uD83D\\uDE22\\uD83E\\uDD14\\uD83D\\uDE06\\uD83D\\uDE44\\uD83D\\uDCAA\\uD83D\\uDE09\\u263A\\uD83D\\uDC4C\\uD83E\\uDD17\\uD83D\\uDC9C\\uD83D\\uDE14\\uD83D\\uDE0E\\uD83D\\uDE07\\uD83C\\uDF39\\uD83E\\uDD26\\uD83C\\uDF89\\uD83D\\uDC9E\\u270C\\u2728\\uD83E\\uDD37\\uD83D\\uDE31\\uD83D\\uDE0C\\uD83C\\uDF38\\uD83D\\uDE4C\\uD83D\\uDE0B\\uD83D\\uDC97\\uD83D\\uDC9A\\uD83D\\uDE0F\\uD83D\\uDC9B\\uD83D\\uDE42\\uD83D\\uDC93\\uD83E\\uDD29\\uD83D\\uDE04\\uD83D\\uDE00\\uD83D\\uDDA4\\uD83D\\uDE03\\uD83D\\uDCAF\\uD83D\\uDE48\\uD83D\\uDC47\\uD83C\\uDFB6\\uD83D\\uDE12\\uD83E\\uDD2D\\u2763\\uD83D\\uDE1C\\uD83D\\uDC8B\\uD83D\\uDC40\\uD83D\\uDE2A\\uD83D\\uDE11\\uD83D\\uDCA5\\uD83D\\uDE4B\\uD83D\\uDE1E\\uD83D\\uDE29\\uD83D\\uDE21\\uD83E\\uDD2A\\uD83D\\uDC4A\\uD83E\\uDD73\\uD83D\\uDE25\\uD83E\\uDD24\\uD83D\\uDC49\\uD83D\\uDC83\\uD83D\\uDE33\\u270B\\uD83D\\uDE1A\\uD83D\\uDE1D\\uD83D\\uDE34\\uD83C\\uDF1F\\uD83D\\uDE2C\\uD83D\\uDE43\\uD83C\\uDF40\\uD83C\\uDF37\\uD83D\\uDE3B\\uD83D\\uDE13\\u2B50\\u2705\\uD83E\\uDD7A\\uD83C\\uDF08\\uD83D\\uDE08\\uD83E\\uDD18\\uD83D\\uDCA6\\u2714\\uD83D\\uDE23\\uD83C\\uDFC3\\uD83D\\uDC90\\u2639\\uD83C\\uDF8A\\uD83D\\uDC98\\uD83D\\uDE20\\u261D\\uD83D\\uDE15\\uD83C\\uDF3A\\uD83C\\uDF82\\uD83C\\uDF3B\\uD83D\\uDE10\\uD83D\\uDD95\\uD83D\\uDC9D\\uD83D\\uDE4A\\uD83D\\uDE39\\uD83D\\uDDE3\\uD83D\\uDCAB\\uD83D\\uDC80\\uD83D\\uDC51\\uD83C\\uDFB5\\uD83E\\uDD1E\\uD83D\\uDE1B\\uD83D\\uDD34\\uD83D\\uDE24\\uD83C\\uDF3C\\uD83D\\uDE2B\\u26BD\\uD83E\\uDD19\\u2615\\uD83C\\uDFC6\\uD83E\\uDD2B\\uD83D\\uDC48\\uD83D\\uDE2E\\uD83D\\uDE46\\uD83C\\uDF7B\\uD83C\\uDF43\\uD83D\\uDC36\\uD83D\\uDC81\\uD83D\\uDE32\\uD83C\\uDF3F\\uD83E\\uDDE1\\uD83C\\uDF81\\u26A1\\uD83C\\uDF1E\\uD83C\\uDF88\\u274C\\u270A\\uD83D\\uDC4B\\uD83D\\uDE30\\uD83E\\uDD28\\uD83D\\uDE36\\uD83E\\uDD1D\\uD83D\\uDEB6\\uD83D\\uDCB0\\uD83C\\uDF53\\uD83D\\uDCA2\\uD83E\\uDD1F\\uD83D\\uDE41\\uD83D\\uDEA8\\uD83D\\uDCA8\\uD83E\\uDD2C\\u2708\\uD83C\\uDF80\\uD83C\\uDF7A\\uD83E\\uDD13\\uD83D\\uDE19\\uD83D\\uDC9F\\uD83C\\uDF31\\uD83D\\uDE16\\uD83D\\uDC76\\uD83E\\uDD74\\u25B6\\u27A1\\u2753\\uD83D\\uDC8E\\uD83D\\uDCB8\\u2B07\\uD83D\\uDE28\\uD83C\\uDF1A\\uD83E\\uDD8B\\uD83D\\uDE37\\uD83D\\uDD7A\\u26A0\\uD83D\\uDE45\\uD83D\\uDE1F\\uD83D\\uDE35\\uD83D\\uDC4E\\uD83E\\uDD32\\uD83E\\uDD20\\uD83E\\uDD27\\uD83D\\uDCCC\\uD83D\\uDD35\\uD83D\\uDC85\\uD83E\\uDDD0\\uD83D\\uDC3E\\uD83C\\uDF52\\uD83D\\uDE17\\uD83E\\uDD11\\uD83C\\uDF0A\\uD83E\\uDD2F\\uD83D\\uDC37\\u260E\\uD83D\\uDCA7\\uD83D\\uDE2F\\uD83D\\uDC86\\uD83D\\uDC46\\uD83C\\uDFA4\\uD83D\\uDE47\\uD83C\\uDF51\\u2744\\uD83C\\uDF34\\uD83D\\uDCA3\\uD83D\\uDC38\\uD83D\\uDC8C\\uD83D\\uDCCD\\uD83E\\uDD40\\uD83E\\uDD22\\uD83D\\uDC45\\uD83D\\uDCA1\\uD83D\\uDCA9\\uD83D\\uDC50\\uD83D\\uDCF8\\uD83D\\uDC7B\\uD83E\\uDD10\\uD83E\\uDD2E\\uD83C\\uDFBC\\uD83E\\uDD75\\uD83D\\uDEA9\\uD83C\\uDF4E\\uD83C\\uDF4A\\uD83D\\uDC7C\\uD83D\\uDC8D\\uD83D\\uDCE3\\uD83E\\uDD42');\nconst alphabetBytesToChars = alphabet.reduce((p, c, i) => {\n  p[i] = c;\n  return p;\n}, []);\nconst alphabetCharsToBytes = alphabet.reduce((p, c, i) => {\n  p[c.codePointAt(0)] = i;\n  return p;\n}, []);\nfunction encode(data) {\n  return data.reduce((p, c) => {\n    p += alphabetBytesToChars[c];\n    return p;\n  }, '');\n}\nfunction decode(str) {\n  const byts = [];\n  for (const char of str) {\n    const byt = alphabetCharsToBytes[char.codePointAt(0)];\n    if (byt === undefined) {\n      throw new Error(`Non-base256emoji character: ${ char }`);\n    }\n    byts.push(byt);\n  }\n  return new Uint8Array(byts);\n}\nexport const base256emoji = from({\n  prefix: '\\uD83D\\uDE80',\n  name: 'base256emoji',\n  encode,\n  decode\n});","var encode_1 = encode;\nvar MSB = 128, REST = 127, MSBALL = ~REST, INT = Math.pow(2, 31);\nfunction encode(num, out, offset) {\n  out = out || [];\n  offset = offset || 0;\n  var oldOffset = offset;\n  while (num >= INT) {\n    out[offset++] = num & 255 | MSB;\n    num /= 128;\n  }\n  while (num & MSBALL) {\n    out[offset++] = num & 255 | MSB;\n    num >>>= 7;\n  }\n  out[offset] = num | 0;\n  encode.bytes = offset - oldOffset + 1;\n  return out;\n}\nvar decode = read;\nvar MSB$1 = 128, REST$1 = 127;\nfunction read(buf, offset) {\n  var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n  do {\n    if (counter >= l) {\n      read.bytes = 0;\n      throw new RangeError('Could not decode varint');\n    }\n    b = buf[counter++];\n    res += shift < 28 ? (b & REST$1) << shift : (b & REST$1) * Math.pow(2, shift);\n    shift += 7;\n  } while (b >= MSB$1);\n  read.bytes = counter - offset;\n  return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (value) {\n  return value < N1 ? 1 : value < N2 ? 2 : value < N3 ? 3 : value < N4 ? 4 : value < N5 ? 5 : value < N6 ? 6 : value < N7 ? 7 : value < N8 ? 8 : value < N9 ? 9 : 10;\n};\nvar varint = {\n  encode: encode_1,\n  decode: decode,\n  encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;","import varint from '../vendor/varint.js';\nexport const decode = (data, offset = 0) => {\n  const code = varint.decode(data, offset);\n  return [\n    code,\n    varint.decode.bytes\n  ];\n};\nexport const encodeTo = (int, target, offset = 0) => {\n  varint.encode(int, target, offset);\n  return target;\n};\nexport const encodingLength = int => {\n  return varint.encodingLength(int);\n};","import {\n  coerce,\n  equals as equalBytes\n} from '../bytes.js';\nimport * as varint from '../varint.js';\nexport const create = (code, digest) => {\n  const size = digest.byteLength;\n  const sizeOffset = varint.encodingLength(code);\n  const digestOffset = sizeOffset + varint.encodingLength(size);\n  const bytes = new Uint8Array(digestOffset + size);\n  varint.encodeTo(code, bytes, 0);\n  varint.encodeTo(size, bytes, sizeOffset);\n  bytes.set(digest, digestOffset);\n  return new Digest(code, size, digest, bytes);\n};\nexport const decode = multihash => {\n  const bytes = coerce(multihash);\n  const [code, sizeOffset] = varint.decode(bytes);\n  const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n  const digest = bytes.subarray(sizeOffset + digestOffset);\n  if (digest.byteLength !== size) {\n    throw new Error('Incorrect length');\n  }\n  return new Digest(code, size, digest, bytes);\n};\nexport const equals = (a, b) => {\n  if (a === b) {\n    return true;\n  } else {\n    return a.code === b.code && a.size === b.size && equalBytes(a.bytes, b.bytes);\n  }\n};\nexport class Digest {\n  constructor(code, size, digest, bytes) {\n    this.code = code;\n    this.size = size;\n    this.digest = digest;\n    this.bytes = bytes;\n  }\n}","import * as Digest from './digest.js';\nexport const from = ({name, code, encode}) => new Hasher(name, code, encode);\nexport class Hasher {\n  constructor(name, code, encode) {\n    this.name = name;\n    this.code = code;\n    this.encode = encode;\n  }\n  digest(input) {\n    if (input instanceof Uint8Array) {\n      const result = this.encode(input);\n      return result instanceof Uint8Array ? Digest.create(this.code, result) : result.then(digest => Digest.create(this.code, digest));\n    } else {\n      throw Error('Unknown type, must be binary type');\n    }\n  }\n}","import { from } from './hasher.js';\nconst sha = name => async data => new Uint8Array(await crypto.subtle.digest(name, data));\nexport const sha256 = from({\n  name: 'sha2-256',\n  code: 18,\n  encode: sha('SHA-256')\n});\nexport const sha512 = from({\n  name: 'sha2-512',\n  code: 19,\n  encode: sha('SHA-512')\n});","import { coerce } from '../bytes.js';\nimport * as Digest from './digest.js';\nconst code = 0;\nconst name = 'identity';\nconst encode = coerce;\nconst digest = input => Digest.create(code, encode(input));\nexport const identity = {\n  code,\n  name,\n  encode,\n  digest\n};","const textEncoder = new TextEncoder();\nconst textDecoder = new TextDecoder();\nexport const name = 'json';\nexport const code = 512;\nexport const encode = node => textEncoder.encode(JSON.stringify(node));\nexport const decode = data => JSON.parse(textDecoder.decode(data));","import * as identityBase from './bases/identity.js';\nimport * as base2 from './bases/base2.js';\nimport * as base8 from './bases/base8.js';\nimport * as base10 from './bases/base10.js';\nimport * as base16 from './bases/base16.js';\nimport * as base32 from './bases/base32.js';\nimport * as base36 from './bases/base36.js';\nimport * as base58 from './bases/base58.js';\nimport * as base64 from './bases/base64.js';\nimport * as base256emoji from './bases/base256emoji.js';\nimport * as sha2 from './hashes/sha2.js';\nimport * as identity from './hashes/identity.js';\nimport * as raw from './codecs/raw.js';\nimport * as json from './codecs/json.js';\nimport {\n  CID,\n  hasher,\n  digest,\n  varint,\n  bytes\n} from './index.js';\nconst bases = {\n  ...identityBase,\n  ...base2,\n  ...base8,\n  ...base10,\n  ...base16,\n  ...base32,\n  ...base36,\n  ...base58,\n  ...base64,\n  ...base256emoji\n};\nconst hashes = {\n  ...sha2,\n  ...identity\n};\nconst codecs = {\n  raw,\n  json\n};\nexport {\n  CID,\n  hasher,\n  digest,\n  varint,\n  bytes,\n  hashes,\n  bases,\n  codecs\n};","export function asUint8Array(buf) {\n  if (globalThis.Buffer != null) {\n    return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n  }\n  return buf;\n}","import { asUint8Array } from './util/as-uint8array.js';\nexport function alloc(size = 0) {\n  if (globalThis.Buffer != null && globalThis.Buffer.alloc != null) {\n    return asUint8Array(globalThis.Buffer.alloc(size));\n  }\n  return new Uint8Array(size);\n}\nexport function allocUnsafe(size = 0) {\n  if (globalThis.Buffer != null && globalThis.Buffer.allocUnsafe != null) {\n    return asUint8Array(globalThis.Buffer.allocUnsafe(size));\n  }\n  return new Uint8Array(size);\n}","import { bases } from 'multiformats/basics';\nimport { allocUnsafe } from '../alloc.js';\nfunction createCodec(name, prefix, encode, decode) {\n  return {\n    name,\n    prefix,\n    encoder: {\n      name,\n      prefix,\n      encode\n    },\n    decoder: { decode }\n  };\n}\nconst string = createCodec('utf8', 'u', buf => {\n  const decoder = new TextDecoder('utf8');\n  return 'u' + decoder.decode(buf);\n}, str => {\n  const encoder = new TextEncoder();\n  return encoder.encode(str.substring(1));\n});\nconst ascii = createCodec('ascii', 'a', buf => {\n  let string = 'a';\n  for (let i = 0; i < buf.length; i++) {\n    string += String.fromCharCode(buf[i]);\n  }\n  return string;\n}, str => {\n  str = str.substring(1);\n  const buf = allocUnsafe(str.length);\n  for (let i = 0; i < str.length; i++) {\n    buf[i] = str.charCodeAt(i);\n  }\n  return buf;\n});\nconst BASES = {\n  utf8: string,\n  'utf-8': string,\n  hex: bases.base16,\n  latin1: ascii,\n  ascii: ascii,\n  binary: ascii,\n  ...bases\n};\nexport default BASES;","import bases from './util/bases.js';\nimport { asUint8Array } from './util/as-uint8array.js';\nexport function fromString(string, encoding = 'utf8') {\n  const base = bases[encoding];\n  if (!base) {\n    throw new Error(`Unsupported encoding \"${ encoding }\"`);\n  }\n  if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n    return asUint8Array(globalThis.Buffer.from(string, 'utf-8'));\n  }\n  return base.decoder.decode(`${ base.prefix }${ string }`);\n}","import { generateChildLogger, getLoggerContext, Logger } from \"@walletconnect/logger\";\nimport { ICore, IKeyChain } from \"@walletconnect/types\";\nimport { getInternalError, mapToObj, objToMap } from \"@walletconnect/utils\";\n\nimport { CORE_STORAGE_PREFIX, KEYCHAIN_CONTEXT, KEYCHAIN_STORAGE_VERSION } from \"../constants\";\n\nexport class KeyChain implements IKeyChain {\n  public keychain = new Map<string, string>();\n  public name = KEYCHAIN_CONTEXT;\n  public version = KEYCHAIN_STORAGE_VERSION;\n\n  private initialized = false;\n  private storagePrefix = CORE_STORAGE_PREFIX;\n\n  constructor(\n    public core: ICore,\n    public logger: Logger,\n  ) {\n    this.core = core;\n    this.logger = generateChildLogger(logger, this.name);\n  }\n\n  public init: IKeyChain[\"init\"] = async () => {\n    if (!this.initialized) {\n      const keychain = await this.getKeyChain();\n      if (typeof keychain !== \"undefined\") {\n        this.keychain = keychain;\n      }\n      this.initialized = true;\n    }\n  };\n\n  get context() {\n    return getLoggerContext(this.logger);\n  }\n\n  get storageKey() {\n    return this.storagePrefix + this.version + this.core.customStoragePrefix + \"//\" + this.name;\n  }\n\n  public has: IKeyChain[\"has\"] = (tag) => {\n    this.isInitialized();\n    return this.keychain.has(tag);\n  };\n\n  public set: IKeyChain[\"set\"] = async (tag, key) => {\n    this.isInitialized();\n    this.keychain.set(tag, key);\n    await this.persist();\n  };\n\n  public get: IKeyChain[\"get\"] = (tag) => {\n    this.isInitialized();\n    const key = this.keychain.get(tag);\n    if (typeof key === \"undefined\") {\n      const { message } = getInternalError(\"NO_MATCHING_KEY\", `${this.name}: ${tag}`);\n      throw new Error(message);\n    }\n    return key;\n  };\n\n  public del: IKeyChain[\"del\"] = async (tag) => {\n    this.isInitialized();\n    this.keychain.delete(tag);\n    await this.persist();\n  };\n\n  // ---------- Private ----------------------------------------------- //\n\n  private async setKeyChain(keychain: Map<string, string>) {\n    await this.core.storage.setItem<Record<string, string>>(this.storageKey, mapToObj(keychain));\n  }\n\n  private async getKeyChain() {\n    const keychain = await this.core.storage.getItem<Record<string, string>>(this.storageKey);\n    return typeof keychain !== \"undefined\" ? objToMap(keychain) : undefined;\n  }\n\n  private async persist() {\n    await this.setKeyChain(this.keychain);\n  }\n\n  private isInitialized() {\n    if (!this.initialized) {\n      const { message } = getInternalError(\"NOT_INITIALIZED\", this.name);\n      throw new Error(message);\n    }\n  }\n}\n","import { generateChildLogger, getLoggerContext, Logger } from \"@walletconnect/logger\";\nimport { safeJsonParse, safeJsonStringify } from \"@walletconnect/safe-json\";\nimport { ICore, ICrypto, IKeyChain } from \"@walletconnect/types\";\nimport * as relayAuth from \"@walletconnect/relay-auth\";\nimport { fromString } from \"uint8arrays/from-string\";\nimport {\n  decrypt,\n  deriveSymKey,\n  encrypt,\n  generateKeyPair as generateKeyPairUtil,\n  hashKey,\n  getInternalError,\n  generateRandomBytes32,\n  validateEncoding,\n  validateDecoding,\n  isTypeOneEnvelope,\n  isTypeTwoEnvelope,\n  encodeTypeTwoEnvelope,\n  decodeTypeTwoEnvelope,\n  deserialize,\n  decodeTypeByte,\n  BASE16,\n  BASE64,\n} from \"@walletconnect/utils\";\nimport { toString } from \"uint8arrays\";\n\nimport { CRYPTO_CONTEXT, CRYPTO_CLIENT_SEED, CRYPTO_JWT_TTL } from \"../constants\";\nimport { KeyChain } from \"./keychain\";\n\nexport class Crypto implements ICrypto {\n  public name = CRYPTO_CONTEXT;\n  public keychain: ICrypto[\"keychain\"];\n  public readonly randomSessionIdentifier = generateRandomBytes32();\n\n  private initialized = false;\n  private clientId: string | undefined;\n  constructor(\n    public core: ICore,\n    public logger: Logger,\n    keychain?: IKeyChain,\n  ) {\n    this.core = core;\n    this.logger = generateChildLogger(logger, this.name);\n    this.keychain = keychain || new KeyChain(this.core, this.logger);\n  }\n\n  public init: ICrypto[\"init\"] = async () => {\n    if (!this.initialized) {\n      await this.keychain.init();\n      this.initialized = true;\n    }\n  };\n\n  get context() {\n    return getLoggerContext(this.logger);\n  }\n\n  public hasKeys: ICrypto[\"hasKeys\"] = (tag) => {\n    this.isInitialized();\n    return this.keychain.has(tag);\n  };\n\n  public getClientId: ICrypto[\"getClientId\"] = async () => {\n    this.isInitialized();\n    if (this.clientId) {\n      return this.clientId;\n    }\n    const seed = await this.getClientSeed();\n    const keyPair = relayAuth.generateKeyPair(seed);\n    const clientId = relayAuth.encodeIss(keyPair.publicKey);\n    this.clientId = clientId;\n    return clientId;\n  };\n\n  public generateKeyPair: ICrypto[\"generateKeyPair\"] = () => {\n    this.isInitialized();\n    const keyPair = generateKeyPairUtil();\n    return this.setPrivateKey(keyPair.publicKey, keyPair.privateKey);\n  };\n\n  public signJWT: ICrypto[\"signJWT\"] = async (aud) => {\n    this.isInitialized();\n    const seed = await this.getClientSeed();\n    const keyPair = relayAuth.generateKeyPair(seed);\n    const sub = this.randomSessionIdentifier;\n    const ttl = CRYPTO_JWT_TTL;\n    const jwt = await relayAuth.signJWT(sub, aud, ttl, keyPair);\n    return jwt;\n  };\n\n  public generateSharedKey: ICrypto[\"generateSharedKey\"] = (\n    selfPublicKey,\n    peerPublicKey,\n    overrideTopic,\n  ) => {\n    this.isInitialized();\n    const selfPrivateKey = this.getPrivateKey(selfPublicKey);\n    const symKey = deriveSymKey(selfPrivateKey, peerPublicKey);\n    return this.setSymKey(symKey, overrideTopic);\n  };\n\n  public setSymKey: ICrypto[\"setSymKey\"] = async (symKey, overrideTopic) => {\n    this.isInitialized();\n    const topic = overrideTopic || hashKey(symKey);\n    await this.keychain.set(topic, symKey);\n    return topic;\n  };\n\n  public deleteKeyPair: ICrypto[\"deleteKeyPair\"] = async (publicKey: string) => {\n    this.isInitialized();\n    await this.keychain.del(publicKey);\n  };\n\n  public deleteSymKey: ICrypto[\"deleteSymKey\"] = async (topic: string) => {\n    this.isInitialized();\n    await this.keychain.del(topic);\n  };\n\n  public encode: ICrypto[\"encode\"] = async (topic, payload, opts) => {\n    this.isInitialized();\n    const params = validateEncoding(opts);\n    const message = safeJsonStringify(payload);\n\n    if (isTypeTwoEnvelope(params)) {\n      return encodeTypeTwoEnvelope(message, opts?.encoding);\n    }\n\n    if (isTypeOneEnvelope(params)) {\n      const selfPublicKey = params.senderPublicKey;\n      const peerPublicKey = params.receiverPublicKey;\n      topic = await this.generateSharedKey(selfPublicKey, peerPublicKey);\n    }\n    const symKey = this.getSymKey(topic);\n    const { type, senderPublicKey } = params;\n    const result = encrypt({ type, symKey, message, senderPublicKey, encoding: opts?.encoding });\n    return result;\n  };\n\n  public decode: ICrypto[\"decode\"] = async (topic, encoded, opts) => {\n    this.isInitialized();\n    const params = validateDecoding(encoded, opts);\n    if (isTypeTwoEnvelope(params)) {\n      const message = decodeTypeTwoEnvelope(encoded, opts?.encoding);\n      return safeJsonParse(message);\n    }\n    if (isTypeOneEnvelope(params)) {\n      const selfPublicKey = params.receiverPublicKey;\n      const peerPublicKey = params.senderPublicKey;\n      topic = await this.generateSharedKey(selfPublicKey, peerPublicKey);\n    }\n    try {\n      const symKey = this.getSymKey(topic);\n      const message = decrypt({ symKey, encoded, encoding: opts?.encoding });\n      const payload = safeJsonParse(message);\n      return payload;\n    } catch (error) {\n      this.logger.error(\n        `Failed to decode message from topic: '${topic}', clientId: '${await this.getClientId()}'`,\n      );\n      this.logger.error(error);\n    }\n  };\n\n  public getPayloadType: ICrypto[\"getPayloadType\"] = (encoded, encoding = BASE64) => {\n    const deserialized = deserialize({ encoded, encoding });\n    return decodeTypeByte(deserialized.type);\n  };\n\n  public getPayloadSenderPublicKey: ICrypto[\"getPayloadSenderPublicKey\"] = (\n    encoded,\n    encoding = BASE64,\n  ) => {\n    const deserialized = deserialize({ encoded, encoding });\n    return deserialized.senderPublicKey\n      ? toString(deserialized.senderPublicKey, BASE16)\n      : undefined;\n  };\n\n  // ---------- Private ----------------------------------------------- //\n\n  private async setPrivateKey(publicKey: string, privateKey: string): Promise<string> {\n    await this.keychain.set(publicKey, privateKey);\n    return publicKey;\n  }\n\n  private getPrivateKey(publicKey: string) {\n    const privateKey = this.keychain.get(publicKey);\n    return privateKey;\n  }\n\n  private async getClientSeed(): Promise<Uint8Array> {\n    let seed = \"\";\n    try {\n      seed = this.keychain.get(CRYPTO_CLIENT_SEED);\n    } catch {\n      seed = generateRandomBytes32();\n      await this.keychain.set(CRYPTO_CLIENT_SEED, seed);\n    }\n    return fromString(seed, \"base16\");\n  }\n\n  private getSymKey(topic: string) {\n    const symKey = this.keychain.get(topic);\n    return symKey;\n  }\n\n  private isInitialized() {\n    if (!this.initialized) {\n      const { message } = getInternalError(\"NOT_INITIALIZED\", this.name);\n      throw new Error(message);\n    }\n  }\n}\n","import { generateChildLogger, getLoggerContext, Logger } from \"@walletconnect/logger\";\nimport { ICore, IMessageTracker, MessageRecord } from \"@walletconnect/types\";\nimport { hashMessage, mapToObj, objToMap, getInternalError } from \"@walletconnect/utils\";\nimport {\n  CORE_STORAGE_PREFIX,\n  MESSAGE_DIRECTION,\n  MESSAGES_CONTEXT,\n  MESSAGES_STORAGE_VERSION,\n} from \"../constants\";\n\nexport class MessageTracker extends IMessageTracker {\n  public messages = new Map<string, MessageRecord>();\n  /**\n   * stores messages that have not been acknowledged by the implementing client\n   * this is used to prevent losing messages in race conditions such as\n   * when a message is received by the relayer before the implementing client is ready to receive it\n   */\n  public messagesWithoutClientAck = new Map<string, MessageRecord>();\n  public name = MESSAGES_CONTEXT;\n  public version = MESSAGES_STORAGE_VERSION;\n\n  private initialized = false;\n  private storagePrefix = CORE_STORAGE_PREFIX;\n\n  constructor(\n    public logger: Logger,\n    public core: ICore,\n  ) {\n    super(logger, core);\n    this.logger = generateChildLogger(logger, this.name);\n    this.core = core;\n  }\n\n  public init: IMessageTracker[\"init\"] = async () => {\n    if (!this.initialized) {\n      this.logger.trace(`Initialized`);\n      try {\n        const messages = await this.getRelayerMessages();\n        if (typeof messages !== \"undefined\") {\n          this.messages = messages;\n        }\n        const messagesWithoutClientAck = await this.getRelayerMessagesWithoutClientAck();\n        if (typeof messagesWithoutClientAck !== \"undefined\") {\n          this.messagesWithoutClientAck = messagesWithoutClientAck;\n        }\n        this.logger.debug(`Successfully Restored records for ${this.name}`);\n        this.logger.trace({ type: \"method\", method: \"restore\", size: this.messages.size });\n      } catch (e) {\n        this.logger.debug(`Failed to Restore records for ${this.name}`);\n        this.logger.error(e as any);\n      } finally {\n        this.initialized = true;\n      }\n    }\n  };\n\n  get context(): string {\n    return getLoggerContext(this.logger);\n  }\n\n  get storageKey() {\n    return this.storagePrefix + this.version + this.core.customStoragePrefix + \"//\" + this.name;\n  }\n\n  get storageKeyWithoutClientAck() {\n    return (\n      this.storagePrefix +\n      this.version +\n      this.core.customStoragePrefix +\n      \"//\" +\n      this.name +\n      \"_withoutClientAck\"\n    );\n  }\n\n  public set: IMessageTracker[\"set\"] = async (topic, message, direction) => {\n    this.isInitialized();\n    const hash = hashMessage(message);\n    let messages = this.messages.get(topic);\n    if (typeof messages === \"undefined\") {\n      messages = {};\n    }\n    if (typeof messages[hash] !== \"undefined\") {\n      return hash;\n    }\n    messages[hash] = message;\n    this.messages.set(topic, messages);\n    // Only store messages without client ack for inbound messages\n    if (direction === MESSAGE_DIRECTION.inbound) {\n      const messagesWithoutClientAck = this.messagesWithoutClientAck.get(topic) || {};\n      this.messagesWithoutClientAck.set(topic, {\n        ...messagesWithoutClientAck,\n        [hash]: message,\n      });\n    }\n\n    await this.persist();\n    return hash;\n  };\n\n  public get: IMessageTracker[\"get\"] = (topic) => {\n    this.isInitialized();\n    let messages = this.messages.get(topic);\n    if (typeof messages === \"undefined\") {\n      messages = {};\n    }\n    return messages;\n  };\n\n  public getWithoutAck: IMessageTracker[\"getWithoutAck\"] = (topics) => {\n    this.isInitialized();\n    const messages: Record<string, string[]> = {};\n    for (const topic of topics) {\n      const messagesWithoutClientAck = this.messagesWithoutClientAck.get(topic) || {};\n      messages[topic] = Object.values(messagesWithoutClientAck);\n    }\n    return messages;\n  };\n\n  public has: IMessageTracker[\"has\"] = (topic, message) => {\n    this.isInitialized();\n    const messages = this.get(topic);\n    const hash = hashMessage(message);\n    return typeof messages[hash] !== \"undefined\";\n  };\n\n  public ack: IMessageTracker[\"ack\"] = async (topic, message) => {\n    this.isInitialized();\n    const messages = this.messagesWithoutClientAck.get(topic);\n    if (typeof messages === \"undefined\") {\n      return;\n    }\n\n    const hash = hashMessage(message);\n\n    delete messages[hash];\n    if (Object.keys(messages).length === 0) {\n      this.messagesWithoutClientAck.delete(topic);\n    } else {\n      this.messagesWithoutClientAck.set(topic, messages);\n    }\n    await this.persist();\n  };\n\n  public del: IMessageTracker[\"del\"] = async (topic) => {\n    this.isInitialized();\n    this.messages.delete(topic);\n    this.messagesWithoutClientAck.delete(topic);\n    await this.persist();\n  };\n\n  // ---------- Private ----------------------------------------------- //\n\n  private async setRelayerMessages(messages: Map<string, MessageRecord>): Promise<void> {\n    await this.core.storage.setItem<Record<string, MessageRecord>>(\n      this.storageKey,\n      mapToObj(messages),\n    );\n  }\n\n  private async setRelayerMessagesWithoutClientAck(\n    messages: Map<string, MessageRecord>,\n  ): Promise<void> {\n    await this.core.storage.setItem<Record<string, MessageRecord>>(\n      this.storageKeyWithoutClientAck,\n      mapToObj(messages),\n    );\n  }\n\n  private async getRelayerMessages(): Promise<Map<string, MessageRecord> | undefined> {\n    const messages = await this.core.storage.getItem<Record<string, MessageRecord>>(\n      this.storageKey,\n    );\n    return typeof messages !== \"undefined\" ? objToMap(messages) : undefined;\n  }\n\n  private async getRelayerMessagesWithoutClientAck(): Promise<\n    Map<string, MessageRecord> | undefined\n  > {\n    const messages = await this.core.storage.getItem<Record<string, MessageRecord>>(\n      this.storageKeyWithoutClientAck,\n    );\n    return typeof messages !== \"undefined\" ? objToMap(messages) : undefined;\n  }\n\n  private async persist() {\n    await this.setRelayerMessages(this.messages);\n    await this.setRelayerMessagesWithoutClientAck(this.messagesWithoutClientAck);\n  }\n\n  private isInitialized() {\n    if (!this.initialized) {\n      const { message } = getInternalError(\"NOT_INITIALIZED\", this.name);\n      throw new Error(message);\n    }\n  }\n}\n","import { HEARTBEAT_EVENTS } from \"@walletconnect/heartbeat\";\nimport { JsonRpcPayload, RequestArguments } from \"@walletconnect/jsonrpc-types\";\nimport { generateChildLogger, getLoggerContext, Logger } from \"@walletconnect/logger\";\nimport { RelayJsonRpc } from \"@walletconnect/relay-api\";\nimport { IPublisher, IRelayer, RelayerTypes } from \"@walletconnect/types\";\nimport {\n  getRelayProtocolApi,\n  getRelayProtocolName,\n  isUndefined,\n  createExpiringPromise,\n} from \"@walletconnect/utils\";\nimport { EventEmitter } from \"events\";\n\nimport { PUBLISHER_CONTEXT, PUBLISHER_DEFAULT_TTL, RELAYER_EVENTS } from \"../constants\";\nimport { getBigIntRpcId } from \"@walletconnect/jsonrpc-utils\";\nimport { FIVE_MINUTES, ONE_MINUTE, ONE_SECOND, toMiliseconds } from \"@walletconnect/time\";\n\ntype IPublishType = {\n  attestation?: string;\n  attempt: number;\n  request: RequestArguments;\n  opts?: RelayerTypes.PublishOptions;\n};\n\nexport class Publisher extends IPublisher {\n  public events = new EventEmitter();\n  public name = PUBLISHER_CONTEXT;\n  public queue = new Map<string, IPublishType>();\n\n  private publishTimeout = toMiliseconds(ONE_MINUTE);\n  private initialPublishTimeout = toMiliseconds(ONE_SECOND * 15);\n  private needsTransportRestart = false;\n\n  constructor(\n    public relayer: IRelayer,\n    public logger: Logger,\n  ) {\n    super(relayer, logger);\n    this.relayer = relayer;\n    this.logger = generateChildLogger(logger, this.name);\n    this.registerEventListeners();\n  }\n\n  get context() {\n    return getLoggerContext(this.logger);\n  }\n\n  public publish: IPublisher[\"publish\"] = async (topic, message, opts) => {\n    this.logger.debug(`Publishing Payload`);\n    this.logger.trace({ type: \"method\", method: \"publish\", params: { topic, message, opts } });\n\n    const ttl = opts?.ttl || PUBLISHER_DEFAULT_TTL;\n    const prompt = opts?.prompt || false;\n    const tag = opts?.tag || 0;\n    const id = opts?.id || (getBigIntRpcId().toString() as any);\n\n    const api = getRelayProtocolApi(getRelayProtocolName().protocol);\n\n    const request: RequestArguments<RelayJsonRpc.PublishParams> = {\n      id,\n      method: opts?.publishMethod || api.publish,\n      params: {\n        topic,\n        message,\n        ttl,\n        prompt,\n        tag,\n        attestation: opts?.attestation,\n        ...opts?.tvf,\n      },\n    };\n\n    const failedPublishMessage = `Failed to publish payload, please try again. id:${id} tag:${tag}`;\n    try {\n      if (isUndefined(request.params?.prompt)) delete request.params?.prompt;\n      if (isUndefined(request.params?.tag)) delete request.params?.tag;\n\n      /**\n       * attempt to publish the payload for <initialPublishTimeout> seconds,\n       * if the publish fails, add the payload to the queue and it will be retried on every pulse\n       * until it is successfully published or <publishTimeout> seconds have passed\n       */\n      const publishPromise = new Promise<void>(async (resolve) => {\n        const onPublish = ({ id }: { id: string }) => {\n          if (request.id?.toString() === id.toString()) {\n            this.removeRequestFromQueue(id);\n            this.relayer.events.removeListener(RELAYER_EVENTS.publish, onPublish);\n            resolve();\n          }\n        };\n        this.relayer.events.on(RELAYER_EVENTS.publish, onPublish);\n        const initialPublish = createExpiringPromise(\n          new Promise((resolve, reject) => {\n            this.rpcPublish(request, opts)\n              .then(resolve)\n              .catch((e) => {\n                this.logger.warn(e, e?.message);\n                reject(e);\n              });\n          }),\n          this.initialPublishTimeout,\n          `Failed initial publish, retrying.... id:${id} tag:${tag}`,\n        );\n        try {\n          await initialPublish;\n          this.events.removeListener(RELAYER_EVENTS.publish, onPublish);\n        } catch (e) {\n          this.queue.set(id, { request, opts, attempt: 1 });\n          this.logger.warn(e, (e as Error)?.message);\n        }\n      });\n      this.logger.trace({\n        type: \"method\",\n        method: \"publish\",\n        params: { id, topic, message, opts },\n      });\n\n      await createExpiringPromise(publishPromise, this.publishTimeout, failedPublishMessage);\n    } catch (e) {\n      this.logger.debug(`Failed to Publish Payload`);\n      this.logger.error(e as any);\n      if (opts?.internal?.throwOnFailedPublish) {\n        throw e;\n      }\n    } finally {\n      this.queue.delete(id);\n    }\n  };\n\n  public publishCustom: IPublisher[\"publishCustom\"] = async (params) => {\n    this.logger.debug(`Publishing custom payload`);\n    this.logger.trace({ type: \"method\", method: \"publishCustom\", params });\n\n    const { payload, opts = {} } = params;\n    const { attestation, tvf, publishMethod, prompt, tag, ttl = FIVE_MINUTES } = opts;\n\n    const id = opts.id || (getBigIntRpcId().toString() as any);\n    const api = getRelayProtocolApi(getRelayProtocolName().protocol);\n    const method = publishMethod || api.publish;\n    const request: RequestArguments<RelayJsonRpc.PublishParams> = {\n      id,\n      method,\n      params: {\n        ...payload,\n        ttl,\n        prompt,\n        tag,\n        attestation,\n        ...tvf,\n      },\n    };\n    const failedPublishMessage = `Failed to publish custom payload, please try again. id:${id} tag:${tag}`;\n    try {\n      if (isUndefined(request.params?.prompt)) delete request.params?.prompt;\n      if (isUndefined(request.params?.tag)) delete request.params?.tag;\n\n      /**\n       * attempt to publish the payload for <initialPublishTimeout> seconds,\n       * if the publish fails, add the payload to the queue and it will be retried on every pulse\n       * until it is successfully published or <publishTimeout> seconds have passed\n       */\n      const publishPromise = new Promise<void>(async (resolve) => {\n        const onPublish = ({ id }: { id: string }) => {\n          if (request.id?.toString() === id.toString()) {\n            this.removeRequestFromQueue(id);\n            this.relayer.events.removeListener(RELAYER_EVENTS.publish, onPublish);\n            resolve();\n          }\n        };\n        this.relayer.events.on(RELAYER_EVENTS.publish, onPublish);\n        const initialPublish = createExpiringPromise(\n          new Promise((resolve, reject) => {\n            this.rpcPublish(request, opts)\n              .then(resolve)\n              .catch((e) => {\n                this.logger.warn(e, e?.message);\n                reject(e);\n              });\n          }),\n          this.initialPublishTimeout,\n          `Failed initial custom payload publish, retrying.... method:${method} id:${id} tag:${tag}`,\n        );\n        try {\n          await initialPublish;\n          this.events.removeListener(RELAYER_EVENTS.publish, onPublish);\n        } catch (e) {\n          this.queue.set(id, { request, opts, attempt: 1 });\n          this.logger.warn(e, (e as Error)?.message);\n        }\n      });\n      this.logger.trace({\n        type: \"method\",\n        method: \"publish\",\n        params: { id, payload, opts },\n      });\n\n      await createExpiringPromise(publishPromise, this.publishTimeout, failedPublishMessage);\n    } catch (e) {\n      this.logger.debug(`Failed to Publish Payload`);\n      this.logger.error(e as any);\n      if (opts?.internal?.throwOnFailedPublish) {\n        throw e;\n      }\n    } finally {\n      this.queue.delete(id);\n    }\n  };\n\n  public on: IPublisher[\"on\"] = (event, listener) => {\n    this.events.on(event, listener);\n  };\n\n  public once: IPublisher[\"once\"] = (event, listener) => {\n    this.events.once(event, listener);\n  };\n\n  public off: IPublisher[\"off\"] = (event, listener) => {\n    this.events.off(event, listener);\n  };\n\n  public removeListener: IPublisher[\"removeListener\"] = (event, listener) => {\n    this.events.removeListener(event, listener);\n  };\n\n  // ---------- Private ----------------------------------------------- //\n\n  private async rpcPublish(request: RequestArguments, opts?: RelayerTypes.PublishOptions) {\n    this.logger.debug(`Outgoing Relay Payload`);\n    this.logger.trace({ type: \"message\", direction: \"outgoing\", request });\n    const result = await this.relayer.request(request);\n\n    this.relayer.events.emit(RELAYER_EVENTS.publish, { ...request, ...opts });\n    this.logger.debug(`Successfully Published Payload`);\n    return result;\n  }\n\n  private removeRequestFromQueue(id: string) {\n    this.queue.delete(id);\n  }\n\n  private checkQueue() {\n    this.queue.forEach(async (params, id) => {\n      const attempt = params.attempt + 1;\n      this.queue.set(id, { ...params, attempt });\n      this.logger.warn(\n        {},\n        `Publisher: queue->publishing: ${params.request.id}, tag: ${params.request.params?.tag}, attempt: ${attempt}`,\n      );\n      await this.rpcPublish(params.request, params.opts);\n      this.logger.warn({}, `Publisher: queue->published: ${params.request.id}`);\n    });\n  }\n\n  private registerEventListeners() {\n    this.relayer.core.heartbeat.on(HEARTBEAT_EVENTS.pulse, () => {\n      // restart the transport if needed\n      // queue will be processed on the next pulse\n      if (this.needsTransportRestart) {\n        this.needsTransportRestart = false;\n        this.relayer.events.emit(RELAYER_EVENTS.connection_stalled);\n        return;\n      }\n      this.checkQueue();\n    });\n    this.relayer.on(RELAYER_EVENTS.message_ack, (event: JsonRpcPayload) => {\n      this.removeRequestFromQueue(event.id.toString());\n    });\n  }\n}\n","import { ISubscriberTopicMap } from \"@walletconnect/types\";\n\nexport class SubscriberTopicMap implements ISubscriberTopicMap {\n  public map = new Map<string, string[]>();\n\n  get topics(): string[] {\n    return Array.from(this.map.keys());\n  }\n\n  public set: ISubscriberTopicMap[\"set\"] = (topic, id) => {\n    const ids = this.get(topic);\n    if (this.exists(topic, id)) return;\n    this.map.set(topic, [...ids, id]);\n  };\n\n  public get: ISubscriberTopicMap[\"get\"] = (topic) => {\n    const ids = this.map.get(topic);\n    return ids || [];\n  };\n\n  public exists: ISubscriberTopicMap[\"exists\"] = (topic, id) => {\n    const ids = this.get(topic);\n    return ids.includes(id);\n  };\n\n  public delete: ISubscriberTopicMap[\"delete\"] = (topic, id) => {\n    if (typeof id === \"undefined\") {\n      this.map.delete(topic);\n      return;\n    }\n    if (!this.map.has(topic)) return;\n    const ids = this.get(topic);\n    if (!this.exists(topic, id)) return;\n    const remaining = ids.filter((x) => x !== id);\n    if (!remaining.length) {\n      this.map.delete(topic);\n      return;\n    }\n    this.map.set(topic, remaining);\n  };\n\n  public clear: ISubscriberTopicMap[\"clear\"] = () => {\n    this.map.clear();\n  };\n}\n","import { EventEmitter } from \"events\";\nimport { HEARTBEAT_EVENTS } from \"@walletconnect/heartbeat\";\nimport { ErrorResponse, RequestArguments } from \"@walletconnect/jsonrpc-types\";\nimport { generateChildLogger, getLoggerContext, Logger } from \"@walletconnect/logger\";\nimport { RelayJsonRpc } from \"@walletconnect/relay-api\";\nimport { ONE_SECOND, ONE_MINUTE, toMiliseconds } from \"@walletconnect/time\";\nimport {\n  IRelayer,\n  ISubscriber,\n  RelayerTypes,\n  SubscriberEvents,\n  SubscriberTypes,\n} from \"@walletconnect/types\";\nimport {\n  getSdkError,\n  getInternalError,\n  getRelayProtocolApi,\n  getRelayProtocolName,\n  createExpiringPromise,\n  hashMessage,\n  sleep,\n} from \"@walletconnect/utils\";\nimport {\n  CORE_STORAGE_PREFIX,\n  SUBSCRIBER_CONTEXT,\n  SUBSCRIBER_EVENTS,\n  SUBSCRIBER_STORAGE_VERSION,\n  RELAYER_EVENTS,\n  TRANSPORT_TYPES,\n} from \"../constants\";\nimport { SubscriberTopicMap } from \"./topicmap\";\n\nexport class Subscriber extends ISubscriber {\n  public subscriptions = new Map<string, SubscriberTypes.Active>();\n\n  public topicMap = new SubscriberTopicMap();\n  public events = new EventEmitter();\n  public name = SUBSCRIBER_CONTEXT;\n  public version = SUBSCRIBER_STORAGE_VERSION;\n  public pending = new Map<string, SubscriberTypes.Params>();\n\n  private cached: SubscriberTypes.Active[] = [];\n  private initialized = false;\n  private storagePrefix = CORE_STORAGE_PREFIX;\n  private subscribeTimeout = toMiliseconds(ONE_MINUTE);\n  private initialSubscribeTimeout = toMiliseconds(ONE_SECOND * 15);\n  private clientId: string;\n  private batchSubscribeTopicsLimit = 500;\n\n  constructor(\n    public relayer: IRelayer,\n    public logger: Logger,\n  ) {\n    super(relayer, logger);\n    this.relayer = relayer;\n    this.logger = generateChildLogger(logger, this.name);\n    this.clientId = \"\"; // assigned when calling this.getClientId()\n  }\n\n  public init: ISubscriber[\"init\"] = async () => {\n    if (!this.initialized) {\n      this.logger.trace(`Initialized`);\n      this.registerEventListeners();\n      await this.restore();\n    }\n    this.initialized = true;\n  };\n\n  get context() {\n    return getLoggerContext(this.logger);\n  }\n\n  get storageKey() {\n    return (\n      this.storagePrefix + this.version + this.relayer.core.customStoragePrefix + \"//\" + this.name\n    );\n  }\n\n  get length() {\n    return this.subscriptions.size;\n  }\n\n  get ids() {\n    return Array.from(this.subscriptions.keys());\n  }\n\n  get values() {\n    return Array.from(this.subscriptions.values());\n  }\n\n  get topics() {\n    return this.topicMap.topics;\n  }\n\n  get hasAnyTopics() {\n    return (\n      this.topicMap.topics.length > 0 ||\n      this.pending.size > 0 ||\n      this.cached.length > 0 ||\n      this.subscriptions.size > 0\n    );\n  }\n\n  public subscribe: ISubscriber[\"subscribe\"] = async (topic, opts) => {\n    this.isInitialized();\n    this.logger.debug(`Subscribing Topic`);\n    this.logger.trace({ type: \"method\", method: \"subscribe\", params: { topic, opts } });\n    try {\n      const relay = getRelayProtocolName(opts);\n      const params = { topic, relay, transportType: opts?.transportType };\n      if (!opts?.internal?.skipSubscribe) {\n        this.pending.set(topic, params);\n      }\n      const id = await this.rpcSubscribe(topic, relay, opts);\n      if (typeof id === \"string\") {\n        this.onSubscribe(id, params);\n        this.logger.debug(`Successfully Subscribed Topic`);\n        this.logger.trace({ type: \"method\", method: \"subscribe\", params: { topic, opts } });\n      }\n      return id;\n    } catch (e) {\n      this.logger.debug(`Failed to Subscribe Topic`);\n      this.logger.error(e as any);\n      throw e;\n    }\n  };\n\n  public unsubscribe: ISubscriber[\"unsubscribe\"] = async (topic, opts) => {\n    this.isInitialized();\n    if (typeof opts?.id !== \"undefined\") {\n      await this.unsubscribeById(topic, opts.id, opts);\n    } else {\n      await this.unsubscribeByTopic(topic, opts);\n    }\n  };\n\n  /**\n   * returns `true` only if the topic is actively subscribed to i.e. not pending or cached\n   */\n  public isSubscribed: ISubscriber[\"isSubscribed\"] = (topic: string) => {\n    return new Promise((resolve) => {\n      resolve(this.topicMap.topics.includes(topic));\n    });\n  };\n\n  /**\n   * returns `true` if the topic is known to the subscriber i.e. it is actively subscribed, pending, cached or in the topic map\n   */\n  public isKnownTopic: ISubscriber[\"isKnownTopic\"] = (topic: string) => {\n    return new Promise((resolve) => {\n      resolve(\n        this.topicMap.topics.includes(topic) ||\n          this.pending.has(topic) ||\n          this.cached.some((s) => s.topic === topic),\n      );\n    });\n  };\n\n  public on: ISubscriber[\"on\"] = (event, listener) => {\n    this.events.on(event, listener);\n  };\n\n  public once: ISubscriber[\"once\"] = (event, listener) => {\n    this.events.once(event, listener);\n  };\n\n  public off: ISubscriber[\"off\"] = (event, listener) => {\n    this.events.off(event, listener);\n  };\n\n  public removeListener: ISubscriber[\"removeListener\"] = (event, listener) => {\n    this.events.removeListener(event, listener);\n  };\n\n  public start: ISubscriber[\"start\"] = async () => {\n    await this.onConnect();\n  };\n\n  public stop: ISubscriber[\"stop\"] = async () => {\n    await this.onDisconnect();\n  };\n\n  // ---------- Private ----------------------------------------------- //\n\n  private hasSubscription(id: string, topic: string) {\n    let result = false;\n    try {\n      const subscription = this.getSubscription(id);\n      result = subscription.topic === topic;\n    } catch (e) {\n      // ignore error\n    }\n    return result;\n  }\n\n  private reset() {\n    this.cached = [];\n    this.initialized = true;\n  }\n\n  private onDisable() {\n    // only write to this.cached if there are active subscriptions\n    // as this.cached can be overridden if onDisable is called multiple times\n    if (this.values.length > 0) {\n      this.cached = this.values;\n    }\n    this.subscriptions.clear();\n    this.topicMap.clear();\n  }\n\n  private async unsubscribeByTopic(topic: string, opts?: RelayerTypes.UnsubscribeOptions) {\n    const ids = this.topicMap.get(topic);\n    await Promise.all(ids.map(async (id) => await this.unsubscribeById(topic, id, opts)));\n  }\n\n  private async unsubscribeById(topic: string, id: string, opts?: RelayerTypes.UnsubscribeOptions) {\n    this.logger.debug(`Unsubscribing Topic`);\n    this.logger.trace({ type: \"method\", method: \"unsubscribe\", params: { topic, id, opts } });\n    try {\n      const relay = getRelayProtocolName(opts);\n      await this.restartToComplete({ topic, id, relay });\n      await this.rpcUnsubscribe(topic, id, relay);\n      const reason = getSdkError(\"USER_DISCONNECTED\", `${this.name}, ${topic}`);\n      await this.onUnsubscribe(topic, id, reason);\n      this.logger.debug(`Successfully Unsubscribed Topic`);\n      this.logger.trace({ type: \"method\", method: \"unsubscribe\", params: { topic, id, opts } });\n    } catch (e) {\n      this.logger.debug(`Failed to Unsubscribe Topic`);\n      this.logger.error(e as any);\n      throw e;\n    }\n  }\n\n  private async rpcSubscribe(\n    topic: string,\n    relay: RelayerTypes.ProtocolOptions,\n    opts?: RelayerTypes.SubscribeOptions,\n  ) {\n    const subId = await this.getSubscriptionId(topic);\n    if (opts?.internal?.skipSubscribe) {\n      return subId;\n    }\n    if (!opts || opts?.transportType === TRANSPORT_TYPES.relay) {\n      await this.restartToComplete({ topic, id: topic, relay });\n    }\n    const api = getRelayProtocolApi(relay.protocol);\n    const request: RequestArguments<RelayJsonRpc.SubscribeParams> = {\n      method: api.subscribe,\n      params: {\n        topic,\n      },\n    };\n    this.logger.debug(`Outgoing Relay Payload`);\n    this.logger.trace({ type: \"payload\", direction: \"outgoing\", request });\n    const shouldThrow = opts?.internal?.throwOnFailedPublish;\n    try {\n      // in link mode, allow the app to update its network state (i.e. active airplane mode) with small delay before attempting to subscribe\n      if (opts?.transportType === TRANSPORT_TYPES.link_mode) {\n        setTimeout(() => {\n          if (this.relayer.connected || this.relayer.connecting) {\n            this.relayer.request(request).catch((e) => this.logger.warn(e));\n          }\n        }, toMiliseconds(ONE_SECOND));\n        return subId;\n      }\n      const subscribePromise = new Promise(async (resolve) => {\n        const onSubscribe = (subscription: SubscriberEvents.Created) => {\n          if (subscription.topic === topic) {\n            this.events.removeListener(SUBSCRIBER_EVENTS.created, onSubscribe);\n            resolve(subscription.id);\n          }\n        };\n        this.events.on(SUBSCRIBER_EVENTS.created, onSubscribe);\n        try {\n          const result = await createExpiringPromise(\n            new Promise((resolve, reject) => {\n              this.relayer\n                .request(request)\n                .catch((e) => {\n                  this.logger.warn(e, e?.message);\n                  reject(e);\n                })\n                .then(resolve);\n            }),\n            this.initialSubscribeTimeout,\n            `Subscribing to ${topic} failed, please try again`,\n          );\n          this.events.removeListener(SUBSCRIBER_EVENTS.created, onSubscribe);\n          resolve(result);\n        } catch (err) {}\n      });\n\n      const subscribe = createExpiringPromise(\n        subscribePromise,\n        this.subscribeTimeout,\n        `Subscribing to ${topic} failed, please try again`,\n      );\n\n      const result = await subscribe;\n      if (!result && shouldThrow) {\n        throw new Error(`Subscribing to ${topic} failed, please try again`);\n      }\n      // return null to indicate that the subscription failed\n      return result ? subId : null;\n    } catch (err) {\n      this.logger.debug(`Outgoing Relay Subscribe Payload stalled`);\n      this.relayer.events.emit(RELAYER_EVENTS.connection_stalled);\n      if (shouldThrow) {\n        throw err;\n      }\n    }\n    return null;\n  }\n\n  private async rpcBatchSubscribe(subscriptions: SubscriberTypes.Params[]) {\n    if (!subscriptions.length) return;\n    const relay = subscriptions[0].relay;\n    const api = getRelayProtocolApi(relay!.protocol);\n    const request: RequestArguments<RelayJsonRpc.BatchSubscribeParams> = {\n      method: api.batchSubscribe,\n      params: {\n        topics: subscriptions.map((s) => s.topic),\n      },\n    };\n    this.logger.debug(`Outgoing Relay Payload`);\n    this.logger.trace({ type: \"payload\", direction: \"outgoing\", request });\n    try {\n      const subscribe = await createExpiringPromise(\n        new Promise((resolve) => {\n          this.relayer\n            .request(request)\n            .catch((e) => this.logger.warn(e))\n            .then(resolve);\n        }),\n        this.subscribeTimeout,\n        \"rpcBatchSubscribe failed, please try again\",\n      );\n      await subscribe;\n    } catch (err) {\n      this.relayer.events.emit(RELAYER_EVENTS.connection_stalled);\n    }\n  }\n\n  private async rpcBatchFetchMessages(subscriptions: SubscriberTypes.Params[]) {\n    if (!subscriptions.length) return;\n    const relay = subscriptions[0].relay;\n    const api = getRelayProtocolApi(relay!.protocol);\n    const request: RequestArguments<RelayJsonRpc.BatchFetchMessagesParams> = {\n      method: api.batchFetchMessages,\n      params: {\n        topics: subscriptions.map((s) => s.topic),\n      },\n    };\n    this.logger.debug(`Outgoing Relay Payload`);\n    this.logger.trace({ type: \"payload\", direction: \"outgoing\", request });\n    let result;\n    try {\n      const fetchMessagesPromise = await createExpiringPromise(\n        new Promise((resolve, reject) => {\n          this.relayer\n            .request(request)\n            .catch((e) => {\n              this.logger.warn(e);\n              reject(e);\n            })\n            .then(resolve);\n        }),\n        this.subscribeTimeout,\n        \"rpcBatchFetchMessages failed, please try again\",\n      );\n      result = (await fetchMessagesPromise) as {\n        messages: RelayerTypes.MessageEvent[];\n      };\n    } catch (err) {\n      this.relayer.events.emit(RELAYER_EVENTS.connection_stalled);\n    }\n    return result;\n  }\n\n  private rpcUnsubscribe(topic: string, id: string, relay: RelayerTypes.ProtocolOptions) {\n    const api = getRelayProtocolApi(relay.protocol);\n    const request: RequestArguments<RelayJsonRpc.UnsubscribeParams> = {\n      method: api.unsubscribe,\n      params: {\n        topic,\n        id,\n      },\n    };\n    this.logger.debug(`Outgoing Relay Payload`);\n    this.logger.trace({ type: \"payload\", direction: \"outgoing\", request });\n    return this.relayer.request(request);\n  }\n\n  private onSubscribe(id: string, params: SubscriberTypes.Params) {\n    this.setSubscription(id, { ...params, id });\n    this.pending.delete(params.topic);\n  }\n\n  private onBatchSubscribe(subscriptions: SubscriberTypes.Active[]) {\n    if (!subscriptions.length) return;\n    subscriptions.forEach((subscription) => {\n      this.setSubscription(subscription.id, { ...subscription });\n      this.pending.delete(subscription.topic);\n    });\n  }\n\n  private async onUnsubscribe(topic: string, id: string, reason: ErrorResponse) {\n    this.events.removeAllListeners(id);\n    if (this.hasSubscription(id, topic)) {\n      this.deleteSubscription(id, reason);\n    }\n    await this.relayer.messages.del(topic);\n  }\n\n  private async setRelayerSubscriptions(subscriptions: SubscriberTypes.Active[]) {\n    await this.relayer.core.storage.setItem<SubscriberTypes.Active[]>(\n      this.storageKey,\n      subscriptions,\n    );\n  }\n\n  private async getRelayerSubscriptions() {\n    const subscriptions = await this.relayer.core.storage.getItem<SubscriberTypes.Active[]>(\n      this.storageKey,\n    );\n    return subscriptions;\n  }\n\n  private setSubscription(id: string, subscription: SubscriberTypes.Active) {\n    this.logger.debug(`Setting subscription`);\n    this.logger.trace({ type: \"method\", method: \"setSubscription\", id, subscription });\n    this.addSubscription(id, subscription);\n  }\n\n  private addSubscription(id: string, subscription: SubscriberTypes.Active) {\n    this.subscriptions.set(id, { ...subscription });\n    this.topicMap.set(subscription.topic, id);\n    this.events.emit(SUBSCRIBER_EVENTS.created, subscription);\n  }\n\n  private getSubscription(id: string) {\n    this.logger.debug(`Getting subscription`);\n    this.logger.trace({ type: \"method\", method: \"getSubscription\", id });\n    const subscription = this.subscriptions.get(id);\n    if (!subscription) {\n      const { message } = getInternalError(\"NO_MATCHING_KEY\", `${this.name}: ${id}`);\n      throw new Error(message);\n    }\n    return subscription;\n  }\n\n  private deleteSubscription(id: string, reason: ErrorResponse) {\n    this.logger.debug(`Deleting subscription`);\n    this.logger.trace({ type: \"method\", method: \"deleteSubscription\", id, reason });\n    const subscription = this.getSubscription(id);\n    this.subscriptions.delete(id);\n    this.topicMap.delete(subscription.topic, id);\n    this.events.emit(SUBSCRIBER_EVENTS.deleted, {\n      ...subscription,\n      reason,\n    } as SubscriberEvents.Deleted);\n  }\n\n  private restart = async () => {\n    await this.restore();\n    await this.onRestart();\n  };\n\n  private async persist() {\n    await this.setRelayerSubscriptions(this.values);\n    this.events.emit(SUBSCRIBER_EVENTS.sync);\n  }\n\n  private async onRestart() {\n    if (this.cached.length) {\n      const subs = [...this.cached];\n      const numOfBatches = Math.ceil(this.cached.length / this.batchSubscribeTopicsLimit);\n      for (let i = 0; i < numOfBatches; i++) {\n        const batch = subs.splice(0, this.batchSubscribeTopicsLimit);\n        await this.batchSubscribe(batch);\n      }\n    }\n    this.events.emit(SUBSCRIBER_EVENTS.resubscribed);\n  }\n\n  private async restore() {\n    try {\n      const persisted = await this.getRelayerSubscriptions();\n      if (typeof persisted === \"undefined\") return;\n      if (!persisted.length) return;\n      if (\n        this.subscriptions.size &&\n        // throw only if the persisted topics differ\n        !persisted.every((s) => s.topic === this.subscriptions.get(s.id)?.topic)\n      ) {\n        const { message } = getInternalError(\"RESTORE_WILL_OVERRIDE\", this.name);\n        this.logger.error(message);\n        this.logger.error(`${this.name}: ${JSON.stringify(this.values)}`);\n        throw new Error(message);\n      }\n      this.cached = persisted;\n      this.logger.debug(`Successfully Restored subscriptions for ${this.name}`);\n      this.logger.trace({ type: \"method\", method: \"restore\", subscriptions: this.values });\n    } catch (e) {\n      this.logger.debug(`Failed to Restore subscriptions for ${this.name}`);\n      this.logger.error(e as any);\n    }\n  }\n\n  private async batchSubscribe(subscriptions: SubscriberTypes.Params[]) {\n    if (!subscriptions.length) return;\n\n    await this.rpcBatchSubscribe(subscriptions);\n    this.onBatchSubscribe(\n      await Promise.all(\n        subscriptions.map(async (s) => {\n          return { ...s, id: await this.getSubscriptionId(s.topic) };\n        }),\n      ),\n    );\n  }\n\n  // @ts-ignore\n  private async batchFetchMessages(subscriptions: SubscriberTypes.Params[]) {\n    if (!subscriptions.length) return;\n    this.logger.trace(`Fetching batch messages for ${subscriptions.length} subscriptions`);\n    const response = await this.rpcBatchFetchMessages(subscriptions);\n    if (response && response.messages) {\n      await sleep(toMiliseconds(ONE_SECOND));\n      await this.relayer.handleBatchMessageEvents(response.messages);\n    }\n  }\n\n  private async onConnect() {\n    await this.restart();\n    this.reset();\n  }\n\n  private onDisconnect() {\n    this.onDisable();\n  }\n\n  private checkPending = async () => {\n    if (this.pending.size === 0 && (!this.initialized || !this.relayer.connected)) {\n      return;\n    }\n    const pendingSubscriptions: SubscriberTypes.Params[] = [];\n    this.pending.forEach((params) => {\n      pendingSubscriptions.push(params);\n    });\n\n    await this.batchSubscribe(pendingSubscriptions);\n  };\n\n  private registerEventListeners = () => {\n    this.relayer.core.heartbeat.on(HEARTBEAT_EVENTS.pulse, async () => {\n      await this.checkPending();\n    });\n    this.events.on(SUBSCRIBER_EVENTS.created, async (createdEvent: SubscriberEvents.Created) => {\n      const eventName = SUBSCRIBER_EVENTS.created;\n      this.logger.info(`Emitting ${eventName}`);\n      this.logger.debug({ type: \"event\", event: eventName, data: createdEvent });\n      await this.persist();\n    });\n    this.events.on(SUBSCRIBER_EVENTS.deleted, async (deletedEvent: SubscriberEvents.Deleted) => {\n      const eventName = SUBSCRIBER_EVENTS.deleted;\n      this.logger.info(`Emitting ${eventName}`);\n      this.logger.debug({ type: \"event\", event: eventName, data: deletedEvent });\n      await this.persist();\n    });\n  };\n\n  private isInitialized() {\n    if (!this.initialized) {\n      const { message } = getInternalError(\"NOT_INITIALIZED\", this.name);\n      throw new Error(message);\n    }\n  }\n\n  private async restartToComplete(subscription: SubscriberTypes.Active) {\n    if (!this.relayer.connected && !this.relayer.connecting) {\n      this.cached.push(subscription);\n      await this.relayer.transportOpen();\n    }\n  }\n\n  private async getClientId() {\n    if (!this.clientId) {\n      this.clientId = await this.relayer.core.crypto.getClientId();\n    }\n    return this.clientId;\n  }\n\n  private async getSubscriptionId(topic: string) {\n    return hashMessage(topic + (await this.getClientId()));\n  }\n}\n","import { EventEmitter } from \"events\";\nimport { JsonRpcProvider } from \"@walletconnect/jsonrpc-provider\";\nimport {\n  formatJsonRpcResult,\n  getBigIntRpcId,\n  IJsonRpcProvider,\n  isJsonRpcRequest,\n  isJsonRpcResponse,\n  JsonRpcPayload,\n  JsonRpcRequest,\n  RequestArguments,\n} from \"@walletconnect/jsonrpc-utils\";\nimport WsConnection from \"@walletconnect/jsonrpc-ws-connection\";\nimport { RelayJsonRpc } from \"@walletconnect/relay-api\";\nimport {\n  FIVE_MINUTES,\n  ONE_SECOND,\n  FIVE_SECONDS,\n  THIRTY_SECONDS,\n  toMiliseconds,\n} from \"@walletconnect/time\";\nimport {\n  ICore,\n  IMessageTracker,\n  IPublisher,\n  IRelayer,\n  ISubscriber,\n  RelayerOptions,\n  RelayerTypes,\n  SubscriberTypes,\n} from \"@walletconnect/types\";\nimport {\n  createExpiringPromise,\n  formatRelayRpcUrl,\n  isOnline,\n  subscribeToNetworkChange,\n  getAppId,\n  isAndroid,\n  isIos,\n  getInternalError,\n  isNode,\n  calcExpiry,\n  isAppVisible,\n  createLogger,\n} from \"@walletconnect/utils\";\n\nimport { HEARTBEAT_EVENTS } from \"@walletconnect/heartbeat\";\n\nimport {\n  RELAYER_SDK_VERSION,\n  RELAYER_CONTEXT,\n  RELAYER_DEFAULT_LOGGER,\n  RELAYER_EVENTS,\n  RELAYER_PROVIDER_EVENTS,\n  RELAYER_SUBSCRIBER_SUFFIX,\n  RELAYER_DEFAULT_RELAY_URL,\n  SUBSCRIBER_EVENTS,\n  RELAYER_RECONNECT_TIMEOUT,\n  TRANSPORT_TYPES,\n  MESSAGE_DIRECTION,\n} from \"../constants\";\nimport { MessageTracker } from \"./messages\";\nimport { Publisher } from \"./publisher\";\nimport { Subscriber } from \"./subscriber\";\nimport { getLoggerContext, Logger } from \"@walletconnect/logger\";\n\nexport class Relayer extends IRelayer {\n  public protocol = \"wc\";\n  public version = 2;\n\n  public core: ICore;\n  public logger: Logger;\n  public events = new EventEmitter();\n  public provider: IJsonRpcProvider;\n  public messages: IMessageTracker;\n  public subscriber: ISubscriber;\n  public publisher: IPublisher;\n  public name = RELAYER_CONTEXT;\n  public transportExplicitlyClosed = false;\n\n  private initialized = false;\n  private connectionAttemptInProgress = false;\n\n  private relayUrl: string;\n  private projectId: string | undefined;\n  private packageName: string | undefined;\n  private bundleId: string | undefined;\n  private hasExperiencedNetworkDisruption = false;\n  private pingTimeout: NodeJS.Timeout | undefined;\n  /**\n   * the relay pings the client 30 seconds after the last message was received\n   * meaning if we don't receive a message in 30 seconds, the connection can be considered dead\n   */\n  private heartBeatTimeout = toMiliseconds(THIRTY_SECONDS + FIVE_SECONDS);\n  private reconnectTimeout: NodeJS.Timeout | undefined;\n  private connectPromise: Promise<void> | undefined;\n  private reconnectInProgress = false;\n  private requestsInFlight: string[] = [];\n  private connectTimeout = toMiliseconds(ONE_SECOND * 15);\n  constructor(opts: RelayerOptions) {\n    super(opts);\n    this.core = opts.core;\n    this.logger = createLogger({\n      logger: opts.logger ?? RELAYER_DEFAULT_LOGGER,\n      name: this.name,\n    });\n    this.messages = new MessageTracker(this.logger, opts.core);\n    this.subscriber = new Subscriber(this, this.logger);\n    this.publisher = new Publisher(this, this.logger);\n\n    this.projectId = opts?.projectId;\n    this.relayUrl = opts?.relayUrl || RELAYER_DEFAULT_RELAY_URL;\n\n    if (isAndroid()) {\n      this.packageName = getAppId();\n    } else if (isIos()) {\n      this.bundleId = getAppId();\n    }\n\n    // re-assigned during init()\n    this.provider = {} as IJsonRpcProvider;\n  }\n\n  public async init() {\n    this.logger.trace(`Initialized`);\n    this.registerEventListeners();\n    await Promise.all([this.messages.init(), this.subscriber.init()]);\n    this.initialized = true;\n    // don't block init with transportOpen\n    this.transportOpen().catch((e) => this.logger.warn(e, (e as Error)?.message));\n  }\n\n  get context() {\n    return getLoggerContext(this.logger);\n  }\n\n  get connected() {\n    // @ts-expect-error\n    return this.provider?.connection?.socket?.readyState === 1 || false;\n  }\n\n  get connecting() {\n    return (\n      // @ts-expect-error\n      this.provider?.connection?.socket?.readyState === 0 ||\n      this.connectPromise !== undefined ||\n      false\n    );\n  }\n\n  public async publish(topic: string, message: string, opts?: RelayerTypes.PublishOptions) {\n    this.isInitialized();\n    await this.publisher.publish(topic, message, opts);\n    await this.recordMessageEvent(\n      {\n        topic,\n        message,\n        // We don't have `publishedAt` from the relay server on outgoing, so use current time to satisfy type.\n        publishedAt: Date.now(),\n        transportType: TRANSPORT_TYPES.relay,\n      },\n      MESSAGE_DIRECTION.outbound,\n    );\n  }\n\n  public async publishCustom(params: { payload: any; opts?: RelayerTypes.PublishOptions }) {\n    this.isInitialized();\n    await this.publisher.publishCustom(params);\n  }\n\n  public async subscribe(topic: string, opts?: RelayerTypes.SubscribeOptions) {\n    this.isInitialized();\n    if (!opts?.transportType || opts?.transportType === \"relay\") {\n      await this.toEstablishConnection();\n    }\n    // throw unless explicitly set to false\n    const shouldThrowOnFailure =\n      typeof opts?.internal?.throwOnFailedPublish === \"undefined\"\n        ? true\n        : opts?.internal?.throwOnFailedPublish;\n\n    let id = this.subscriber.topicMap.get(topic)?.[0] || \"\";\n    let resolvePromise: () => void;\n    const onSubCreated = (subscription: SubscriberTypes.Active) => {\n      if (subscription.topic === topic) {\n        this.subscriber.off(SUBSCRIBER_EVENTS.created, onSubCreated);\n        resolvePromise();\n      }\n    };\n\n    await Promise.all([\n      new Promise<void>((resolve) => {\n        resolvePromise = resolve;\n        this.subscriber.on(SUBSCRIBER_EVENTS.created, onSubCreated);\n      }),\n      new Promise<void>(async (resolve, reject) => {\n        const result = await this.subscriber\n          .subscribe(topic, {\n            internal: {\n              throwOnFailedPublish: shouldThrowOnFailure,\n            },\n            ...opts,\n          })\n          .catch((error) => {\n            if (shouldThrowOnFailure) {\n              reject(error);\n            }\n          });\n        id = result || id;\n        resolve();\n      }),\n    ]);\n    return id;\n  }\n\n  public request = async (request: RequestArguments<RelayJsonRpc.SubscribeParams>) => {\n    this.logger.debug(`Publishing Request Payload`);\n    const id = request.id || (getBigIntRpcId().toString() as any);\n    await this.toEstablishConnection();\n    try {\n      this.logger.trace(\n        {\n          id,\n          method: request.method,\n          topic: request.params?.topic,\n        },\n        \"relayer.request - publishing...\",\n      );\n      const tag = `${id}:${(request.params as any)?.tag || \"\"}`;\n      this.requestsInFlight.push(tag);\n      const result = await this.provider.request(request);\n      this.requestsInFlight = this.requestsInFlight.filter((i) => i !== tag);\n      return result;\n    } catch (e) {\n      this.logger.debug(`Failed to Publish Request: ${id}`);\n      throw e;\n    }\n  };\n\n  public async unsubscribe(topic: string, opts?: RelayerTypes.UnsubscribeOptions) {\n    this.isInitialized();\n    await this.subscriber.unsubscribe(topic, opts);\n  }\n\n  public on(event: string, listener: any) {\n    this.events.on(event, listener);\n  }\n\n  public once(event: string, listener: any) {\n    this.events.once(event, listener);\n  }\n\n  public off(event: string, listener: any) {\n    this.events.off(event, listener);\n  }\n\n  public removeListener(event: string, listener: any) {\n    this.events.removeListener(event, listener);\n  }\n\n  public async transportDisconnect() {\n    if (this.provider.disconnect && (this.hasExperiencedNetworkDisruption || this.connected)) {\n      await createExpiringPromise(this.provider.disconnect(), 2000, \"provider.disconnect()\").catch(\n        () => this.onProviderDisconnect(),\n      );\n    } else {\n      this.onProviderDisconnect();\n    }\n  }\n\n  public async transportClose() {\n    this.transportExplicitlyClosed = true;\n    await this.transportDisconnect();\n  }\n\n  async transportOpen(relayUrl?: string) {\n    if (!this.subscriber.hasAnyTopics) {\n      this.logger.info(\n        \"Starting WS connection skipped because the client has no topics to work with.\",\n      );\n      return;\n    }\n\n    if (this.connectPromise) {\n      this.logger.debug({}, `Waiting for existing connection attempt to resolve...`);\n      await this.connectPromise;\n      this.logger.debug({}, `Existing connection attempt resolved`);\n    } else {\n      this.connectPromise = new Promise(async (resolve, reject) => {\n        await this.connect(relayUrl)\n          .then(resolve)\n          .catch(reject)\n          .finally(() => {\n            this.connectPromise = undefined;\n          });\n      });\n      await this.connectPromise;\n    }\n    if (!this.connected) {\n      throw new Error(`Couldn't establish socket connection to the relay server: ${this.relayUrl}`);\n    }\n  }\n\n  public async restartTransport(relayUrl?: string) {\n    this.logger.debug({}, \"Restarting transport...\");\n    if (this.connectionAttemptInProgress) return;\n    this.relayUrl = relayUrl || this.relayUrl;\n    await this.confirmOnlineStateOrThrow();\n    await this.transportClose();\n    await this.transportOpen();\n  }\n\n  public async confirmOnlineStateOrThrow() {\n    if (await isOnline()) return;\n    throw new Error(\"No internet connection detected. Please restart your network and try again.\");\n  }\n\n  public async handleBatchMessageEvents(messages: RelayerTypes.MessageEvent[]) {\n    if (messages?.length === 0) {\n      this.logger.trace(\"Batch message events is empty. Ignoring...\");\n      return;\n    }\n    const sortedMessages = messages.sort((a, b) => a.publishedAt - b.publishedAt);\n    this.logger.debug(`Batch of ${sortedMessages.length} message events sorted`);\n    for (const message of sortedMessages) {\n      try {\n        await this.onMessageEvent(message);\n      } catch (e) {\n        this.logger.warn(e, \"Error while processing batch message event: \" + (e as Error)?.message);\n      }\n    }\n    this.logger.trace(`Batch of ${sortedMessages.length} message events processed`);\n  }\n\n  public async onLinkMessageEvent(\n    messageEvent: RelayerTypes.MessageEvent,\n    opts: { sessionExists: boolean },\n  ) {\n    const { topic } = messageEvent;\n\n    if (!opts.sessionExists) {\n      const expiry = calcExpiry(FIVE_MINUTES);\n      const pairing = { topic, expiry, relay: { protocol: \"irn\" }, active: false };\n      await this.core.pairing.pairings.set(topic, pairing);\n    }\n\n    this.events.emit(RELAYER_EVENTS.message, messageEvent);\n    await this.recordMessageEvent(messageEvent, MESSAGE_DIRECTION.inbound);\n  }\n\n  // ---------- Private ----------------------------------------------- //\n\n  private async connect(relayUrl?: string) {\n    await this.confirmOnlineStateOrThrow();\n    if (relayUrl && relayUrl !== this.relayUrl) {\n      this.relayUrl = relayUrl;\n      await this.transportDisconnect();\n    }\n\n    this.connectionAttemptInProgress = true;\n    this.transportExplicitlyClosed = false;\n    let attempt = 1;\n    while (attempt < 6) {\n      try {\n        if (this.transportExplicitlyClosed) {\n          break;\n        }\n        this.logger.debug({}, `Connecting to ${this.relayUrl}, attempt: ${attempt}...`);\n        // Always create new socket instance when trying to connect because if the socket was dropped due to `socket hang up` exception\n        // It wont be able to reconnect\n        await this.createProvider();\n\n        await new Promise<void>(async (resolve, reject) => {\n          const onDisconnect = () => {\n            reject(new Error(`Connection interrupted while trying to connect`));\n          };\n          this.provider.once(RELAYER_PROVIDER_EVENTS.disconnect, onDisconnect);\n\n          await createExpiringPromise(\n            new Promise((resolve, reject) => {\n              this.provider.connect().then(resolve).catch(reject);\n            }),\n            this.connectTimeout,\n            `Socket stalled when trying to connect to ${this.relayUrl}`,\n          )\n            .catch((e) => {\n              reject(e);\n            })\n            .finally(() => {\n              this.provider.off(RELAYER_PROVIDER_EVENTS.disconnect, onDisconnect);\n              clearTimeout(this.reconnectTimeout);\n            });\n          await new Promise(async (_resolve, _reject) => {\n            const onDisconnect = () => {\n              reject(new Error(`Connection interrupted while trying to subscribe`));\n            };\n            this.provider.once(RELAYER_PROVIDER_EVENTS.disconnect, onDisconnect);\n            await this.subscriber\n              .start()\n              .then(_resolve)\n              .catch(_reject)\n              .finally(() => {\n                this.provider.off(RELAYER_PROVIDER_EVENTS.disconnect, onDisconnect);\n              });\n          });\n          this.hasExperiencedNetworkDisruption = false;\n          resolve();\n        });\n      } catch (e) {\n        await this.subscriber.stop();\n        const error = e as Error;\n        this.logger.warn({}, error.message);\n        this.hasExperiencedNetworkDisruption = true;\n      } finally {\n        this.connectionAttemptInProgress = false;\n      }\n\n      if (this.connected) {\n        this.logger.debug({}, `Connected to ${this.relayUrl} successfully on attempt: ${attempt}`);\n        break;\n      }\n\n      await new Promise((resolve) => setTimeout(resolve, toMiliseconds(attempt * 1)));\n      attempt++;\n    }\n  }\n\n  /*\n   * In Node, we must detect when the connection is stalled and terminate it.\n   * The logic is, if we don't receive ping from the relay within a certain time, we terminate the connection.\n   * The timer is refreshed on every message received from the relay.\n   *\n   * In the browser, ping/pong events are not exposed, so the above behaviour is handled by `subscribeToNetworkChange` and `isOnline` functions.\n   */\n  private startPingTimeout() {\n    if (!isNode()) return;\n    try {\n      //@ts-expect-error - Types are divergent between the node and browser WS API\n      if (this.provider?.connection?.socket) {\n        //@ts-expect-error\n        this.provider?.connection?.socket?.on(\"ping\", () => {\n          this.resetPingTimeout();\n        });\n      }\n      this.resetPingTimeout();\n    } catch (e) {\n      this.logger.warn(e, (e as Error)?.message);\n    }\n  }\n\n  private resetPingTimeout = () => {\n    if (!isNode()) return;\n    clearTimeout(this.pingTimeout);\n    this.pingTimeout = setTimeout(() => {\n      try {\n        this.logger.debug({}, \"pingTimeout: Connection stalled, terminating...\");\n        //@ts-expect-error\n        this.provider?.connection?.socket?.terminate?.();\n      } catch (e) {\n        this.logger.warn(e, (e as Error)?.message);\n      }\n    }, this.heartBeatTimeout);\n  };\n\n  private async createProvider() {\n    if (this.provider.connection) {\n      this.unregisterProviderListeners();\n    }\n    const auth = await this.core.crypto.signJWT(this.relayUrl);\n\n    this.provider = new JsonRpcProvider(\n      new WsConnection(\n        formatRelayRpcUrl({\n          sdkVersion: RELAYER_SDK_VERSION,\n          protocol: this.protocol,\n          version: this.version,\n          relayUrl: this.relayUrl,\n          projectId: this.projectId,\n          auth,\n          useOnCloseEvent: true,\n          bundleId: this.bundleId,\n          packageName: this.packageName,\n        }),\n      ),\n    );\n    this.registerProviderListeners();\n  }\n\n  private async recordMessageEvent(\n    messageEvent: RelayerTypes.MessageEvent,\n    direction?: RelayerTypes.MessageDirection,\n  ) {\n    const { topic, message } = messageEvent;\n    await this.messages.set(topic, message, direction);\n  }\n\n  private async shouldIgnoreMessageEvent(\n    messageEvent: RelayerTypes.MessageEvent,\n  ): Promise<boolean> {\n    const { topic, message } = messageEvent;\n\n    // Ignore if incoming `message` is clearly invalid.\n    if (!message || message.length === 0) {\n      this.logger.warn(`Ignoring invalid/empty message: ${message}`);\n      return true;\n    }\n\n    // Ignore if `topic` is not known to the subscriber.\n    if (!(await this.subscriber.isKnownTopic(topic))) {\n      this.logger.warn(`Ignoring message for unknown topic ${topic}`);\n      return true;\n    }\n\n    // Ignore if `message` is a duplicate.\n    const exists = this.messages.has(topic, message);\n    if (exists) {\n      this.logger.warn(`Ignoring duplicate message: ${message}`);\n    }\n    return exists;\n  }\n\n  private async onProviderPayload(payload: JsonRpcPayload) {\n    this.logger.debug(`Incoming Relay Payload`);\n    this.logger.trace({ type: \"payload\", direction: \"incoming\", payload });\n    if (isJsonRpcRequest(payload)) {\n      if (!payload.method.endsWith(RELAYER_SUBSCRIBER_SUFFIX)) return;\n      const event = (payload as JsonRpcRequest<RelayJsonRpc.SubscriptionParams>).params;\n      const { topic, message, publishedAt, attestation } = event.data;\n      const messageEvent: RelayerTypes.MessageEvent = {\n        topic,\n        message,\n        publishedAt,\n        transportType: TRANSPORT_TYPES.relay,\n        attestation,\n      };\n      this.logger.debug(`Emitting Relayer Payload`);\n      this.logger.trace({ type: \"event\", event: event.id, ...messageEvent });\n      this.events.emit(event.id, messageEvent);\n      await this.acknowledgePayload(payload);\n      await this.onMessageEvent(messageEvent);\n    } else if (isJsonRpcResponse(payload)) {\n      this.events.emit(RELAYER_EVENTS.message_ack, payload);\n    }\n  }\n\n  private async onMessageEvent(messageEvent: RelayerTypes.MessageEvent) {\n    if (await this.shouldIgnoreMessageEvent(messageEvent)) {\n      return;\n    }\n    await this.recordMessageEvent(messageEvent, MESSAGE_DIRECTION.inbound);\n    this.events.emit(RELAYER_EVENTS.message, messageEvent);\n  }\n\n  private async acknowledgePayload(payload: JsonRpcPayload) {\n    const response = formatJsonRpcResult(payload.id, true);\n    await this.provider.connection.send(response);\n  }\n\n  // ---------- Events Handlers ----------------------------------------------- //\n  private onPayloadHandler = (payload: JsonRpcPayload) => {\n    this.onProviderPayload(payload);\n    this.resetPingTimeout();\n  };\n\n  private onConnectHandler = () => {\n    this.logger.warn({}, \"Relayer connected 🛜\");\n    this.startPingTimeout();\n    this.events.emit(RELAYER_EVENTS.connect);\n  };\n\n  private onDisconnectHandler = () => {\n    this.logger.warn({}, `Relayer disconnected 🛑`);\n    this.requestsInFlight = [];\n    this.onProviderDisconnect();\n  };\n\n  private onProviderErrorHandler = (error: Error) => {\n    this.logger.fatal(`Fatal socket error: ${error.message}`);\n    this.events.emit(RELAYER_EVENTS.error, error);\n    // close the transport when a fatal error is received as there's no way to recover from it\n    // usual cases are missing/invalid projectId, expired jwt token, invalid origin etc\n    this.logger.fatal(\"Fatal socket error received, closing transport\");\n    this.transportClose();\n  };\n\n  private registerProviderListeners = () => {\n    this.provider.on(RELAYER_PROVIDER_EVENTS.payload, this.onPayloadHandler);\n    this.provider.on(RELAYER_PROVIDER_EVENTS.connect, this.onConnectHandler);\n    this.provider.on(RELAYER_PROVIDER_EVENTS.disconnect, this.onDisconnectHandler);\n    this.provider.on(RELAYER_PROVIDER_EVENTS.error, this.onProviderErrorHandler);\n  };\n\n  private unregisterProviderListeners() {\n    this.provider.off(RELAYER_PROVIDER_EVENTS.payload, this.onPayloadHandler);\n    this.provider.off(RELAYER_PROVIDER_EVENTS.connect, this.onConnectHandler);\n    this.provider.off(RELAYER_PROVIDER_EVENTS.disconnect, this.onDisconnectHandler);\n    this.provider.off(RELAYER_PROVIDER_EVENTS.error, this.onProviderErrorHandler);\n    clearTimeout(this.pingTimeout);\n  }\n\n  private async registerEventListeners() {\n    let lastConnectedState = await isOnline();\n    subscribeToNetworkChange(async (connected: boolean) => {\n      // sometimes the network change event is triggered multiple times so avoid reacting to the samFe value\n      if (lastConnectedState === connected) return;\n\n      lastConnectedState = connected;\n      if (!connected) {\n        // when the device network is restarted, the socket might stay in false `connected` state\n        this.hasExperiencedNetworkDisruption = true;\n        await this.transportDisconnect();\n        this.transportExplicitlyClosed = false;\n      } else {\n        await this.transportOpen().catch((error) =>\n          this.logger.error(error, (error as Error)?.message),\n        );\n      }\n    });\n\n    this.core.heartbeat.on(HEARTBEAT_EVENTS.pulse, async () => {\n      if (this.transportExplicitlyClosed) return;\n      if (!this.connected && isAppVisible()) {\n        try {\n          await this.confirmOnlineStateOrThrow();\n          await this.transportOpen();\n        } catch (error) {\n          this.logger.warn(error, (error as Error)?.message);\n        }\n      }\n    });\n  }\n\n  private async onProviderDisconnect() {\n    clearTimeout(this.pingTimeout);\n    this.events.emit(RELAYER_EVENTS.disconnect);\n    this.connectionAttemptInProgress = false;\n    if (this.reconnectInProgress) return;\n\n    this.reconnectInProgress = true;\n    await this.subscriber.stop();\n\n    if (!this.subscriber.hasAnyTopics) return;\n    if (this.transportExplicitlyClosed) return;\n\n    this.reconnectTimeout = setTimeout(async () => {\n      await this.transportOpen().catch((error) =>\n        this.logger.error(error, (error as Error)?.message),\n      );\n      this.reconnectTimeout = undefined;\n      this.reconnectInProgress = false;\n    }, toMiliseconds(RELAYER_RECONNECT_TIMEOUT));\n  }\n\n  private isInitialized() {\n    if (!this.initialized) {\n      const { message } = getInternalError(\"NOT_INITIALIZED\", this.name);\n      throw new Error(message);\n    }\n  }\n\n  private async toEstablishConnection() {\n    await this.confirmOnlineStateOrThrow();\n    if (this.connected) return;\n    if (this.connectPromise) {\n      await this.connectPromise;\n      return;\n    }\n    await this.connect();\n  }\n}\n","function eq(value, other) {\n    return value === other || (Number.isNaN(value) && Number.isNaN(other));\n}\n\nexport { eq };\n","function getSymbols(object) {\n    return Object.getOwnPropertySymbols(object).filter(symbol => Object.prototype.propertyIsEnumerable.call(object, symbol));\n}\n\nexport { getSymbols };\n","function getTag(value) {\n    if (value == null) {\n        return value === undefined ? '[object Undefined]' : '[object Null]';\n    }\n    return Object.prototype.toString.call(value);\n}\n\nexport { getTag };\n","const regexpTag = '[object RegExp]';\nconst stringTag = '[object String]';\nconst numberTag = '[object Number]';\nconst booleanTag = '[object Boolean]';\nconst argumentsTag = '[object Arguments]';\nconst symbolTag = '[object Symbol]';\nconst dateTag = '[object Date]';\nconst mapTag = '[object Map]';\nconst setTag = '[object Set]';\nconst arrayTag = '[object Array]';\nconst functionTag = '[object Function]';\nconst arrayBufferTag = '[object ArrayBuffer]';\nconst objectTag = '[object Object]';\nconst errorTag = '[object Error]';\nconst dataViewTag = '[object DataView]';\nconst uint8ArrayTag = '[object Uint8Array]';\nconst uint8ClampedArrayTag = '[object Uint8ClampedArray]';\nconst uint16ArrayTag = '[object Uint16Array]';\nconst uint32ArrayTag = '[object Uint32Array]';\nconst bigUint64ArrayTag = '[object BigUint64Array]';\nconst int8ArrayTag = '[object Int8Array]';\nconst int16ArrayTag = '[object Int16Array]';\nconst int32ArrayTag = '[object Int32Array]';\nconst bigInt64ArrayTag = '[object BigInt64Array]';\nconst float32ArrayTag = '[object Float32Array]';\nconst float64ArrayTag = '[object Float64Array]';\n\nexport { argumentsTag, arrayBufferTag, arrayTag, bigInt64ArrayTag, bigUint64ArrayTag, booleanTag, dataViewTag, dateTag, errorTag, float32ArrayTag, float64ArrayTag, functionTag, int16ArrayTag, int32ArrayTag, int8ArrayTag, mapTag, numberTag, objectTag, regexpTag, setTag, stringTag, symbolTag, uint16ArrayTag, uint32ArrayTag, uint8ArrayTag, uint8ClampedArrayTag };\n","function noop() { }\n\nexport { noop };\n","function isPlainObject(value) {\n    if (!value || typeof value !== 'object') {\n        return false;\n    }\n    const proto = Object.getPrototypeOf(value);\n    const hasObjectPrototype = proto === null ||\n        proto === Object.prototype ||\n        Object.getPrototypeOf(proto) === null;\n    if (!hasObjectPrototype) {\n        return false;\n    }\n    return Object.prototype.toString.call(value) === '[object Object]';\n}\n\nexport { isPlainObject };\n","import { isPlainObject } from './isPlainObject.mjs';\nimport { getSymbols } from '../compat/_internal/getSymbols.mjs';\nimport { getTag } from '../compat/_internal/getTag.mjs';\nimport { functionTag, regexpTag, symbolTag, dateTag, booleanTag, numberTag, stringTag, objectTag, errorTag, dataViewTag, arrayBufferTag, float64ArrayTag, float32ArrayTag, bigInt64ArrayTag, int32ArrayTag, int16ArrayTag, int8ArrayTag, bigUint64ArrayTag, uint32ArrayTag, uint16ArrayTag, uint8ClampedArrayTag, uint8ArrayTag, arrayTag, setTag, mapTag, argumentsTag } from '../compat/_internal/tags.mjs';\nimport { eq } from '../compat/util/eq.mjs';\n\nfunction isEqualWith(a, b, areValuesEqual) {\n    return isEqualWithImpl(a, b, undefined, undefined, undefined, undefined, areValuesEqual);\n}\nfunction isEqualWithImpl(a, b, property, aParent, bParent, stack, areValuesEqual) {\n    const result = areValuesEqual(a, b, property, aParent, bParent, stack);\n    if (result !== undefined) {\n        return result;\n    }\n    if (typeof a === typeof b) {\n        switch (typeof a) {\n            case 'bigint':\n            case 'string':\n            case 'boolean':\n            case 'symbol':\n            case 'undefined': {\n                return a === b;\n            }\n            case 'number': {\n                return a === b || Object.is(a, b);\n            }\n            case 'function': {\n                return a === b;\n            }\n            case 'object': {\n                return areObjectsEqual(a, b, stack, areValuesEqual);\n            }\n        }\n    }\n    return areObjectsEqual(a, b, stack, areValuesEqual);\n}\nfunction areObjectsEqual(a, b, stack, areValuesEqual) {\n    if (Object.is(a, b)) {\n        return true;\n    }\n    let aTag = getTag(a);\n    let bTag = getTag(b);\n    if (aTag === argumentsTag) {\n        aTag = objectTag;\n    }\n    if (bTag === argumentsTag) {\n        bTag = objectTag;\n    }\n    if (aTag !== bTag) {\n        return false;\n    }\n    switch (aTag) {\n        case stringTag:\n            return a.toString() === b.toString();\n        case numberTag: {\n            const x = a.valueOf();\n            const y = b.valueOf();\n            return eq(x, y);\n        }\n        case booleanTag:\n        case dateTag:\n        case symbolTag:\n            return Object.is(a.valueOf(), b.valueOf());\n        case regexpTag: {\n            return a.source === b.source && a.flags === b.flags;\n        }\n        case functionTag: {\n            return a === b;\n        }\n    }\n    stack = stack ?? new Map();\n    const aStack = stack.get(a);\n    const bStack = stack.get(b);\n    if (aStack != null && bStack != null) {\n        return aStack === b;\n    }\n    stack.set(a, b);\n    stack.set(b, a);\n    try {\n        switch (aTag) {\n            case mapTag: {\n                if (a.size !== b.size) {\n                    return false;\n                }\n                for (const [key, value] of a.entries()) {\n                    if (!b.has(key) || !isEqualWithImpl(value, b.get(key), key, a, b, stack, areValuesEqual)) {\n                        return false;\n                    }\n                }\n                return true;\n            }\n            case setTag: {\n                if (a.size !== b.size) {\n                    return false;\n                }\n                const aValues = Array.from(a.values());\n                const bValues = Array.from(b.values());\n                for (let i = 0; i < aValues.length; i++) {\n                    const aValue = aValues[i];\n                    const index = bValues.findIndex(bValue => {\n                        return isEqualWithImpl(aValue, bValue, undefined, a, b, stack, areValuesEqual);\n                    });\n                    if (index === -1) {\n                        return false;\n                    }\n                    bValues.splice(index, 1);\n                }\n                return true;\n            }\n            case arrayTag:\n            case uint8ArrayTag:\n            case uint8ClampedArrayTag:\n            case uint16ArrayTag:\n            case uint32ArrayTag:\n            case bigUint64ArrayTag:\n            case int8ArrayTag:\n            case int16ArrayTag:\n            case int32ArrayTag:\n            case bigInt64ArrayTag:\n            case float32ArrayTag:\n            case float64ArrayTag: {\n                if (typeof Buffer !== 'undefined' && Buffer.isBuffer(a) !== Buffer.isBuffer(b)) {\n                    return false;\n                }\n                if (a.length !== b.length) {\n                    return false;\n                }\n                for (let i = 0; i < a.length; i++) {\n                    if (!isEqualWithImpl(a[i], b[i], i, a, b, stack, areValuesEqual)) {\n                        return false;\n                    }\n                }\n                return true;\n            }\n            case arrayBufferTag: {\n                if (a.byteLength !== b.byteLength) {\n                    return false;\n                }\n                return areObjectsEqual(new Uint8Array(a), new Uint8Array(b), stack, areValuesEqual);\n            }\n            case dataViewTag: {\n                if (a.byteLength !== b.byteLength || a.byteOffset !== b.byteOffset) {\n                    return false;\n                }\n                return areObjectsEqual(new Uint8Array(a), new Uint8Array(b), stack, areValuesEqual);\n            }\n            case errorTag: {\n                return a.name === b.name && a.message === b.message;\n            }\n            case objectTag: {\n                const areEqualInstances = areObjectsEqual(a.constructor, b.constructor, stack, areValuesEqual) ||\n                    (isPlainObject(a) && isPlainObject(b));\n                if (!areEqualInstances) {\n                    return false;\n                }\n                const aKeys = [...Object.keys(a), ...getSymbols(a)];\n                const bKeys = [...Object.keys(b), ...getSymbols(b)];\n                if (aKeys.length !== bKeys.length) {\n                    return false;\n                }\n                for (let i = 0; i < aKeys.length; i++) {\n                    const propKey = aKeys[i];\n                    const aProp = a[propKey];\n                    if (!Object.hasOwn(b, propKey)) {\n                        return false;\n                    }\n                    const bProp = b[propKey];\n                    if (!isEqualWithImpl(aProp, bProp, propKey, a, b, stack, areValuesEqual)) {\n                        return false;\n                    }\n                }\n                return true;\n            }\n            default: {\n                return false;\n            }\n        }\n    }\n    finally {\n        stack.delete(a);\n        stack.delete(b);\n    }\n}\n\nexport { isEqualWith };\n","import { isEqualWith } from './isEqualWith.mjs';\nimport { noop } from '../function/noop.mjs';\n\nfunction isEqual(a, b) {\n    return isEqualWith(a, b, noop);\n}\n\nexport { isEqual };\n","import { generateChildLogger, getLoggerContext, Logger } from \"@walletconnect/logger\";\nimport { ICore, IStore } from \"@walletconnect/types\";\nimport {\n  getInternalError,\n  isProposalStruct,\n  isSessionStruct,\n  isUndefined,\n} from \"@walletconnect/utils\";\nimport { CORE_STORAGE_PREFIX, STORE_STORAGE_VERSION } from \"../constants\";\nimport { isEqual } from \"es-toolkit/compat\";\n\nexport class Store<Key, Data extends Record<string, any>> extends IStore<Key, Data> {\n  public map = new Map<Key, Data>();\n  public version = STORE_STORAGE_VERSION;\n\n  private cached: Data[] = [];\n  private initialized = false;\n\n  /**\n   * Regenerates the value key to retrieve it from cache\n   */\n  private getKey: ((data: Data) => Key) | undefined;\n\n  private storagePrefix = CORE_STORAGE_PREFIX;\n\n  // stores recently deleted key to return different rejection message when key is not found\n  private recentlyDeleted: Key[] = [];\n  private recentlyDeletedLimit = 200;\n\n  /**\n   * @param {ICore} core Core\n   * @param {Logger} logger Logger\n   * @param {string} name Store's name\n   * @param {Store<Key, Data>[\"getKey\"]} getKey Regenerates the value key to retrieve it from cache\n   * @param {string} storagePrefix Prefixes value keys\n   */\n  constructor(\n    public core: ICore,\n    public logger: Logger,\n    public name: string,\n    storagePrefix: string = CORE_STORAGE_PREFIX,\n    getKey: Store<Key, Data>[\"getKey\"] = undefined,\n  ) {\n    super(core, logger, name, storagePrefix);\n    this.logger = generateChildLogger(logger, this.name);\n    this.storagePrefix = storagePrefix;\n    this.getKey = getKey;\n  }\n\n  public init: IStore<Key, Data>[\"init\"] = async () => {\n    if (!this.initialized) {\n      this.logger.trace(`Initialized`);\n\n      await this.restore();\n\n      this.cached.forEach((value) => {\n        if (this.getKey && value !== null && !isUndefined(value)) {\n          this.map.set(this.getKey(value), value);\n        } else if (isProposalStruct(value)) {\n          // TODO(pedro) revert type casting as any\n          this.map.set(value.id as any, value);\n        } else if (isSessionStruct(value)) {\n          // TODO(pedro) revert type casting as any\n          this.map.set(value.topic as any, value);\n        }\n      });\n\n      this.cached = [];\n      this.initialized = true;\n    }\n  };\n\n  get context() {\n    return getLoggerContext(this.logger);\n  }\n\n  get storageKey() {\n    return this.storagePrefix + this.version + this.core.customStoragePrefix + \"//\" + this.name;\n  }\n\n  get length() {\n    return this.map.size;\n  }\n\n  get keys() {\n    return Array.from(this.map.keys());\n  }\n\n  get values() {\n    return Array.from(this.map.values());\n  }\n\n  public set: IStore<Key, Data>[\"set\"] = async (key, value) => {\n    this.isInitialized();\n    if (this.map.has(key)) {\n      await this.update(key, value);\n    } else {\n      this.logger.debug(`Setting value`);\n      this.logger.trace({ type: \"method\", method: \"set\", key, value });\n      this.map.set(key, value);\n      await this.persist();\n    }\n  };\n\n  public get: IStore<Key, Data>[\"get\"] = (key) => {\n    this.isInitialized();\n    this.logger.debug(`Getting value`);\n    this.logger.trace({ type: \"method\", method: \"get\", key });\n    const value = this.getData(key);\n    return value;\n  };\n\n  public getAll: IStore<Key, Data>[\"getAll\"] = (filter) => {\n    this.isInitialized();\n    if (!filter) return this.values;\n\n    return this.values.filter((value) =>\n      Object.keys(filter).every((key) => isEqual(value[key], filter[key])),\n    );\n  };\n\n  public update: IStore<Key, Data>[\"update\"] = async (key, update) => {\n    this.isInitialized();\n    this.logger.debug(`Updating value`);\n    this.logger.trace({ type: \"method\", method: \"update\", key, update });\n    const value = { ...this.getData(key), ...update };\n    this.map.set(key, value);\n    await this.persist();\n  };\n\n  public delete: IStore<Key, Data>[\"delete\"] = async (key, reason) => {\n    this.isInitialized();\n    if (!this.map.has(key)) return;\n    this.logger.debug(`Deleting value`);\n    this.logger.trace({ type: \"method\", method: \"delete\", key, reason });\n    this.map.delete(key);\n    this.addToRecentlyDeleted(key);\n    await this.persist();\n  };\n\n  // ---------- Private ----------------------------------------------- //\n\n  private addToRecentlyDeleted(key: Key) {\n    this.recentlyDeleted.push(key);\n    // limit the size of the recentlyDeleted array, truncate the 100 oldest entries.\n    if (this.recentlyDeleted.length >= this.recentlyDeletedLimit) {\n      this.recentlyDeleted.splice(0, this.recentlyDeletedLimit / 2);\n    }\n  }\n\n  private async setDataStore(value: Data[]) {\n    await this.core.storage.setItem<Data[]>(this.storageKey, value);\n  }\n\n  private async getDataStore() {\n    const value = await this.core.storage.getItem<Data[]>(this.storageKey);\n    return value;\n  }\n\n  private getData(key: Key) {\n    const value = this.map.get(key);\n    if (!value) {\n      if (this.recentlyDeleted.includes(key)) {\n        const { message } = getInternalError(\n          \"MISSING_OR_INVALID\",\n          `Record was recently deleted - ${this.name}: ${key}`,\n        );\n        this.logger.error(message);\n        throw new Error(message);\n      }\n\n      const { message } = getInternalError(\"NO_MATCHING_KEY\", `${this.name}: ${key}`);\n      this.logger.error(message);\n      throw new Error(message);\n    }\n    return value;\n  }\n\n  private async persist() {\n    await this.setDataStore(this.values);\n  }\n\n  private async restore() {\n    try {\n      const persisted = await this.getDataStore();\n      if (typeof persisted === \"undefined\") return;\n      if (!persisted.length) return;\n      if (this.map.size) {\n        const { message } = getInternalError(\"RESTORE_WILL_OVERRIDE\", this.name);\n        this.logger.error(message);\n        throw new Error(message);\n      }\n      this.cached = persisted;\n      this.logger.debug(`Successfully Restored value for ${this.name}`);\n      this.logger.trace({ type: \"method\", method: \"restore\", value: this.values });\n    } catch (e) {\n      this.logger.debug(`Failed to Restore value for ${this.name}`);\n      this.logger.error(e as any);\n    }\n  }\n\n  private isInitialized() {\n    if (!this.initialized) {\n      const { message } = getInternalError(\"NOT_INITIALIZED\", this.name);\n      throw new Error(message);\n    }\n  }\n}\n","import { generateChildLogger, getLoggerContext, Logger } from \"@walletconnect/logger\";\nimport {\n  ICore,\n  PairingTypes,\n  IPairing,\n  IPairingPrivate,\n  IStore,\n  RelayerTypes,\n  PairingJsonRpcTypes,\n  ExpirerTypes,\n  EventClientTypes,\n} from \"@walletconnect/types\";\nimport {\n  getInternalError,\n  parseUri,\n  calcExpiry,\n  generateRandomBytes32,\n  formatUri,\n  getSdkError,\n  engineEvent,\n  createDelayedPromise,\n  isValidParams,\n  isValidUrl,\n  isValidString,\n  isExpired,\n  parseExpirerTarget,\n  TYPE_1,\n} from \"@walletconnect/utils\";\nimport {\n  formatJsonRpcRequest,\n  formatJsonRpcResult,\n  formatJsonRpcError,\n  isJsonRpcRequest,\n  isJsonRpcResponse,\n  isJsonRpcResult,\n  isJsonRpcError,\n} from \"@walletconnect/jsonrpc-utils\";\nimport { FIVE_MINUTES, toMiliseconds } from \"@walletconnect/time\";\nimport EventEmitter from \"events\";\nimport {\n  PAIRING_CONTEXT,\n  PAIRING_STORAGE_VERSION,\n  CORE_STORAGE_PREFIX,\n  RELAYER_DEFAULT_PROTOCOL,\n  PAIRING_RPC_OPTS,\n  RELAYER_EVENTS,\n  EXPIRER_EVENTS,\n  PAIRING_EVENTS,\n  EVENT_CLIENT_PAIRING_TRACES,\n  EVENT_CLIENT_PAIRING_ERRORS,\n  TRANSPORT_TYPES,\n} from \"../constants\";\nimport { Store } from \"../controllers/store\";\n\nexport class Pairing implements IPairing {\n  public name = PAIRING_CONTEXT;\n  public version = PAIRING_STORAGE_VERSION;\n\n  public events = new EventEmitter();\n  public pairings: IStore<string, PairingTypes.Struct>;\n\n  private initialized = false;\n  private storagePrefix = CORE_STORAGE_PREFIX;\n  private ignoredPayloadTypes = [TYPE_1];\n  private registeredMethods: string[] = [];\n\n  constructor(\n    public core: ICore,\n    public logger: Logger,\n  ) {\n    this.core = core;\n    this.logger = generateChildLogger(logger, this.name);\n    this.pairings = new Store(this.core, this.logger, this.name, this.storagePrefix);\n  }\n\n  public init: IPairing[\"init\"] = async () => {\n    if (!this.initialized) {\n      await this.pairings.init();\n      await this.cleanup();\n      this.registerRelayerEvents();\n      this.registerExpirerEvents();\n      this.initialized = true;\n      this.logger.trace(`Initialized`);\n    }\n  };\n\n  get context() {\n    return getLoggerContext(this.logger);\n  }\n\n  public register: IPairing[\"register\"] = ({ methods }) => {\n    this.isInitialized();\n    this.registeredMethods = [...new Set([...this.registeredMethods, ...methods])];\n  };\n\n  public create: IPairing[\"create\"] = async (params) => {\n    this.isInitialized();\n    const symKey = generateRandomBytes32();\n    const topic = await this.core.crypto.setSymKey(symKey);\n    const expiry = calcExpiry(FIVE_MINUTES);\n    const relay = { protocol: RELAYER_DEFAULT_PROTOCOL };\n    const pairing = { topic, expiry, relay, active: false, methods: params?.methods };\n    const uri = formatUri({\n      protocol: this.core.protocol,\n      version: this.core.version,\n      topic,\n      symKey,\n      relay,\n      expiryTimestamp: expiry,\n      methods: params?.methods,\n    });\n    this.events.emit(PAIRING_EVENTS.create, pairing);\n    this.core.expirer.set(topic, expiry);\n    await this.pairings.set(topic, pairing);\n    await this.core.relayer.subscribe(topic, {\n      transportType: params?.transportType,\n      internal: params?.internal,\n    });\n\n    return { topic, uri };\n  };\n\n  public pair: IPairing[\"pair\"] = async (params) => {\n    this.isInitialized();\n\n    const event = this.core.eventClient.createEvent({\n      properties: {\n        topic: params?.uri,\n        trace: [EVENT_CLIENT_PAIRING_TRACES.pairing_started],\n      },\n    });\n\n    this.isValidPair(params, event);\n\n    const { topic, symKey, relay, expiryTimestamp, methods } = parseUri(params.uri);\n\n    event.props.properties.topic = topic;\n    event.addTrace(EVENT_CLIENT_PAIRING_TRACES.pairing_uri_validation_success);\n    event.addTrace(EVENT_CLIENT_PAIRING_TRACES.pairing_uri_not_expired);\n\n    let existingPairing;\n    if (this.pairings.keys.includes(topic)) {\n      existingPairing = this.pairings.get(topic);\n      event.addTrace(EVENT_CLIENT_PAIRING_TRACES.existing_pairing);\n      if (existingPairing.active) {\n        event.setError(EVENT_CLIENT_PAIRING_ERRORS.active_pairing_already_exists);\n        throw new Error(\n          `Pairing already exists: ${topic}. Please try again with a new connection URI.`,\n        );\n      } else {\n        event.addTrace(EVENT_CLIENT_PAIRING_TRACES.pairing_not_expired);\n      }\n    }\n\n    const expiry = expiryTimestamp || calcExpiry(FIVE_MINUTES);\n    const pairing = { topic, relay, expiry, active: false, methods };\n    this.core.expirer.set(topic, expiry);\n    await this.pairings.set(topic, pairing);\n\n    event.addTrace(EVENT_CLIENT_PAIRING_TRACES.store_new_pairing);\n\n    if (params.activatePairing) {\n      await this.activate({ topic });\n    }\n\n    this.events.emit(PAIRING_EVENTS.create, pairing);\n\n    event.addTrace(EVENT_CLIENT_PAIRING_TRACES.emit_inactive_pairing);\n\n    // avoid overwriting keychain pairing already exists\n    if (!this.core.crypto.keychain.has(topic)) {\n      await this.core.crypto.setSymKey(symKey, topic);\n    }\n    event.addTrace(EVENT_CLIENT_PAIRING_TRACES.subscribing_pairing_topic);\n\n    try {\n      await this.core.relayer.confirmOnlineStateOrThrow();\n    } catch (error) {\n      event.setError(EVENT_CLIENT_PAIRING_ERRORS.no_internet_connection);\n    }\n\n    try {\n      await this.core.relayer.subscribe(topic, { relay });\n    } catch (error) {\n      event.setError(EVENT_CLIENT_PAIRING_ERRORS.subscribe_pairing_topic_failure);\n      throw error;\n    }\n\n    event.addTrace(EVENT_CLIENT_PAIRING_TRACES.subscribe_pairing_topic_success);\n\n    return pairing;\n  };\n\n  public activate: IPairing[\"activate\"] = async ({ topic }) => {\n    this.isInitialized();\n    const expiry = calcExpiry(FIVE_MINUTES);\n    this.core.expirer.set(topic, expiry);\n    await this.pairings.update(topic, { active: true, expiry });\n  };\n\n  /**\n   * @deprecated Ping will be removed in the next major release.\n   */\n  public ping: IPairing[\"ping\"] = async (params) => {\n    this.isInitialized();\n    await this.isValidPing(params);\n    this.logger.warn(\"ping() is deprecated and will be removed in the next major release.\");\n    const { topic } = params;\n    if (this.pairings.keys.includes(topic)) {\n      const id = await this.sendRequest(topic, \"wc_pairingPing\", {});\n      const { done, resolve, reject } = createDelayedPromise<void>();\n      this.events.once(engineEvent(\"pairing_ping\", id), ({ error }) => {\n        if (error) reject(error);\n        else resolve();\n      });\n      await done();\n    }\n  };\n\n  public updateExpiry: IPairing[\"updateExpiry\"] = async ({ topic, expiry }) => {\n    this.isInitialized();\n    await this.pairings.update(topic, { expiry });\n  };\n\n  public updateMetadata: IPairing[\"updateMetadata\"] = async ({ topic, metadata }) => {\n    this.isInitialized();\n    await this.pairings.update(topic, { peerMetadata: metadata });\n  };\n\n  public getPairings: IPairing[\"getPairings\"] = () => {\n    this.isInitialized();\n    return this.pairings.values;\n  };\n\n  public disconnect: IPairing[\"disconnect\"] = async (params) => {\n    this.isInitialized();\n    await this.isValidDisconnect(params);\n    const { topic } = params;\n    if (this.pairings.keys.includes(topic)) {\n      await this.sendRequest(topic, \"wc_pairingDelete\", getSdkError(\"USER_DISCONNECTED\"));\n      await this.deletePairing(topic);\n    }\n  };\n\n  public formatUriFromPairing: IPairing[\"formatUriFromPairing\"] = (pairing) => {\n    this.isInitialized();\n    const { topic, relay, expiry, methods } = pairing;\n    const symKey = this.core.crypto.keychain.get(topic);\n    return formatUri({\n      protocol: this.core.protocol,\n      version: this.core.version,\n      topic,\n      symKey,\n      relay,\n      expiryTimestamp: expiry,\n      methods,\n    });\n  };\n\n  // ---------- Private Helpers ----------------------------------------------- //\n\n  private sendRequest: IPairingPrivate[\"sendRequest\"] = async (topic, method, params) => {\n    const payload = formatJsonRpcRequest(method, params);\n    const message = await this.core.crypto.encode(topic, payload);\n    const opts = PAIRING_RPC_OPTS[method].req;\n    this.core.history.set(topic, payload);\n    this.core.relayer.publish(topic, message, opts);\n    return payload.id;\n  };\n\n  private sendResult: IPairingPrivate[\"sendResult\"] = async (id, topic, result) => {\n    const payload = formatJsonRpcResult(id, result);\n    const message = await this.core.crypto.encode(topic, payload);\n    const record = await this.core.history.get(topic, id);\n    const method = record.request.method as PairingJsonRpcTypes.WcMethod;\n    const opts = PAIRING_RPC_OPTS[method].res;\n    await this.core.relayer.publish(topic, message, opts);\n    await this.core.history.resolve(payload);\n  };\n\n  private sendError: IPairingPrivate[\"sendError\"] = async (id, topic, error) => {\n    const payload = formatJsonRpcError(id, error);\n    const message = await this.core.crypto.encode(topic, payload);\n    const record = await this.core.history.get(topic, id);\n    const method = record.request.method as PairingJsonRpcTypes.WcMethod;\n\n    const opts = PAIRING_RPC_OPTS[method]\n      ? PAIRING_RPC_OPTS[method].res\n      : PAIRING_RPC_OPTS.unregistered_method.res;\n\n    await this.core.relayer.publish(topic, message, opts);\n    await this.core.history.resolve(payload);\n  };\n\n  private deletePairing: IPairingPrivate[\"deletePairing\"] = async (topic, expirerHasDeleted) => {\n    // Await the unsubscribe first to avoid deleting the symKey too early below.\n    await this.core.relayer.unsubscribe(topic);\n    await Promise.all([\n      this.pairings.delete(topic, getSdkError(\"USER_DISCONNECTED\")),\n      this.core.crypto.deleteSymKey(topic),\n      expirerHasDeleted ? Promise.resolve() : this.core.expirer.del(topic),\n    ]);\n  };\n\n  private isInitialized() {\n    if (!this.initialized) {\n      const { message } = getInternalError(\"NOT_INITIALIZED\", this.name);\n      throw new Error(message);\n    }\n  }\n\n  private cleanup = async () => {\n    const expiredPairings = this.pairings.getAll().filter((pairing) => isExpired(pairing.expiry));\n    await Promise.all(expiredPairings.map((pairing) => this.deletePairing(pairing.topic)));\n  };\n\n  // ---------- Relay Events Router ----------------------------------- //\n\n  private registerRelayerEvents() {\n    this.core.relayer.on(RELAYER_EVENTS.message, async (event: RelayerTypes.MessageEvent) => {\n      const { topic, message, transportType } = event;\n\n      // Do not handle if the topic is not related to known pairing topics.\n      if (!this.pairings.keys.includes(topic)) return;\n\n      // Do not handle link-mode messages\n      if (transportType === TRANSPORT_TYPES.link_mode) return;\n\n      // messages of certain types should be ignored as they are handled by their respective SDKs\n      if (this.ignoredPayloadTypes.includes(this.core.crypto.getPayloadType(message))) return;\n\n      try {\n        const payload = await this.core.crypto.decode(topic, message);\n\n        if (isJsonRpcRequest(payload)) {\n          this.core.history.set(topic, payload);\n          await this.onRelayEventRequest({ topic, payload });\n        } else if (isJsonRpcResponse(payload)) {\n          await this.core.history.resolve(payload);\n          await this.onRelayEventResponse({ topic, payload });\n          this.core.history.delete(topic, payload.id);\n        }\n        await this.core.relayer.messages.ack(topic, message);\n      } catch (error) {\n        this.logger.error(error);\n      }\n    });\n  }\n\n  private onRelayEventRequest: IPairingPrivate[\"onRelayEventRequest\"] = async (event) => {\n    const { topic, payload } = event;\n    const reqMethod = payload.method as PairingJsonRpcTypes.WcMethod;\n\n    switch (reqMethod) {\n      case \"wc_pairingPing\":\n        return await this.onPairingPingRequest(topic, payload);\n      case \"wc_pairingDelete\":\n        return await this.onPairingDeleteRequest(topic, payload);\n      default:\n        return await this.onUnknownRpcMethodRequest(topic, payload);\n    }\n  };\n\n  private onRelayEventResponse: IPairingPrivate[\"onRelayEventResponse\"] = async (event) => {\n    const { topic, payload } = event;\n    const record = await this.core.history.get(topic, payload.id);\n    const resMethod = record.request.method as PairingJsonRpcTypes.WcMethod;\n\n    switch (resMethod) {\n      case \"wc_pairingPing\":\n        return this.onPairingPingResponse(topic, payload);\n      default:\n        return this.onUnknownRpcMethodResponse(resMethod);\n    }\n  };\n\n  private onPairingPingRequest: IPairingPrivate[\"onPairingPingRequest\"] = async (\n    topic,\n    payload,\n  ) => {\n    const { id } = payload;\n    try {\n      this.isValidPing({ topic });\n      await this.sendResult<\"wc_pairingPing\">(id, topic, true);\n      this.events.emit(PAIRING_EVENTS.ping, { id, topic });\n    } catch (err: any) {\n      await this.sendError(id, topic, err);\n      this.logger.error(err);\n    }\n  };\n\n  private onPairingPingResponse: IPairingPrivate[\"onPairingPingResponse\"] = (_topic, payload) => {\n    const { id } = payload;\n    // put at the end of the stack to avoid a race condition\n    // where pairing_ping listener is not yet initialized\n    setTimeout(() => {\n      if (isJsonRpcResult(payload)) {\n        this.events.emit(engineEvent(\"pairing_ping\", id), {});\n      } else if (isJsonRpcError(payload)) {\n        this.events.emit(engineEvent(\"pairing_ping\", id), { error: payload.error });\n      }\n    }, 500);\n  };\n\n  private onPairingDeleteRequest: IPairingPrivate[\"onPairingDeleteRequest\"] = async (\n    topic,\n    payload,\n  ) => {\n    const { id } = payload;\n    try {\n      this.isValidDisconnect({ topic });\n      await this.deletePairing(topic);\n      this.events.emit(PAIRING_EVENTS.delete, { id, topic });\n    } catch (err: any) {\n      await this.sendError(id, topic, err);\n      this.logger.error(err);\n    }\n  };\n\n  private onUnknownRpcMethodRequest: IPairingPrivate[\"onUnknownRpcMethodRequest\"] = async (\n    topic,\n    payload,\n  ) => {\n    const { id, method } = payload;\n\n    try {\n      // Ignore if the implementing client has registered this method as known.\n      if (this.registeredMethods.includes(method)) return;\n      const error = getSdkError(\"WC_METHOD_UNSUPPORTED\", method);\n      await this.sendError(id, topic, error);\n      this.logger.error(error);\n    } catch (err: any) {\n      await this.sendError(id, topic, err);\n      this.logger.error(err);\n    }\n  };\n\n  private onUnknownRpcMethodResponse: IPairingPrivate[\"onUnknownRpcMethodResponse\"] = (method) => {\n    // Ignore if the implementing client has registered this method as known.\n    if (this.registeredMethods.includes(method)) return;\n    this.logger.error(getSdkError(\"WC_METHOD_UNSUPPORTED\", method));\n  };\n\n  // ---------- Expirer Events ---------------------------------------- //\n\n  private registerExpirerEvents() {\n    this.core.expirer.on(EXPIRER_EVENTS.expired, async (event: ExpirerTypes.Expiration) => {\n      const { topic } = parseExpirerTarget(event.target);\n      if (!topic) return;\n      if (!this.pairings.keys.includes(topic)) return;\n      await this.deletePairing(topic, true);\n      this.events.emit(PAIRING_EVENTS.expire, { topic });\n    });\n  }\n\n  // ---------- Validation Helpers ----------------------------------- //\n\n  private isValidPair = (params: { uri: string }, event: EventClientTypes.Event) => {\n    if (!isValidParams(params)) {\n      const { message } = getInternalError(\"MISSING_OR_INVALID\", `pair() params: ${params}`);\n      event.setError(EVENT_CLIENT_PAIRING_ERRORS.malformed_pairing_uri);\n      throw new Error(message);\n    }\n    if (!isValidUrl(params.uri)) {\n      const { message } = getInternalError(\"MISSING_OR_INVALID\", `pair() uri: ${params.uri}`);\n      event.setError(EVENT_CLIENT_PAIRING_ERRORS.malformed_pairing_uri);\n      throw new Error(message);\n    }\n    const uri = parseUri(params?.uri);\n    if (!uri?.relay?.protocol) {\n      const { message } = getInternalError(\"MISSING_OR_INVALID\", `pair() uri#relay-protocol`);\n      event.setError(EVENT_CLIENT_PAIRING_ERRORS.malformed_pairing_uri);\n      throw new Error(message);\n    }\n    if (!uri?.symKey) {\n      const { message } = getInternalError(\"MISSING_OR_INVALID\", `pair() uri#symKey`);\n      event.setError(EVENT_CLIENT_PAIRING_ERRORS.malformed_pairing_uri);\n      throw new Error(message);\n    }\n    if (uri?.expiryTimestamp) {\n      const expiration = toMiliseconds(uri?.expiryTimestamp);\n      if (expiration < Date.now()) {\n        event.setError(EVENT_CLIENT_PAIRING_ERRORS.pairing_expired);\n        const { message } = getInternalError(\n          \"EXPIRED\",\n          `pair() URI has expired. Please try again with a new connection URI.`,\n        );\n        throw new Error(message);\n      }\n    }\n  };\n\n  private isValidPing = async (params: { topic: string }) => {\n    if (!isValidParams(params)) {\n      const { message } = getInternalError(\"MISSING_OR_INVALID\", `ping() params: ${params}`);\n      throw new Error(message);\n    }\n    const { topic } = params;\n    await this.isValidPairingTopic(topic);\n  };\n\n  private isValidDisconnect = async (params: { topic: string }) => {\n    if (!isValidParams(params)) {\n      const { message } = getInternalError(\"MISSING_OR_INVALID\", `disconnect() params: ${params}`);\n      throw new Error(message);\n    }\n    const { topic } = params;\n    await this.isValidPairingTopic(topic);\n  };\n\n  private isValidPairingTopic = async (topic: any) => {\n    if (!isValidString(topic, false)) {\n      const { message } = getInternalError(\n        \"MISSING_OR_INVALID\",\n        `pairing topic should be a string: ${topic}`,\n      );\n      throw new Error(message);\n    }\n    if (!this.pairings.keys.includes(topic)) {\n      const { message } = getInternalError(\n        \"NO_MATCHING_KEY\",\n        `pairing topic doesn't exist: ${topic}`,\n      );\n      throw new Error(message);\n    }\n    if (isExpired(this.pairings.get(topic).expiry)) {\n      await this.deletePairing(topic);\n      const { message } = getInternalError(\"EXPIRED\", `pairing topic: ${topic}`);\n      throw new Error(message);\n    }\n  };\n}\n","import { formatJsonRpcRequest, isJsonRpcError } from \"@walletconnect/jsonrpc-utils\";\nimport { generateChildLogger, getLoggerContext, Logger } from \"@walletconnect/logger\";\nimport { IJsonRpcHistory, JsonRpcRecord, RequestEvent, ICore } from \"@walletconnect/types\";\nimport { calcExpiry, getInternalError } from \"@walletconnect/utils\";\nimport { EventEmitter } from \"events\";\nimport { THIRTY_DAYS, toMiliseconds } from \"@walletconnect/time\";\nimport { HEARTBEAT_EVENTS } from \"@walletconnect/heartbeat\";\nimport {\n  CORE_STORAGE_PREFIX,\n  HISTORY_CONTEXT,\n  HISTORY_EVENTS,\n  HISTORY_STORAGE_VERSION,\n} from \"../constants\";\n\nexport class JsonRpcHistory extends IJsonRpcHistory {\n  public records = new Map<number, JsonRpcRecord>();\n  public events = new EventEmitter();\n  public name = HISTORY_CONTEXT;\n  public version = HISTORY_STORAGE_VERSION;\n\n  private cached: JsonRpcRecord[] = [];\n  private initialized = false;\n  private storagePrefix = CORE_STORAGE_PREFIX;\n\n  constructor(\n    public core: ICore,\n    public logger: Logger,\n  ) {\n    super(core, logger);\n    this.logger = generateChildLogger(logger, this.name);\n  }\n\n  public init: IJsonRpcHistory[\"init\"] = async () => {\n    if (!this.initialized) {\n      this.logger.trace(`Initialized`);\n      await this.restore();\n      this.cached.forEach((record) => this.records.set(record.id, record));\n      this.cached = [];\n      this.registerEventListeners();\n      this.initialized = true;\n    }\n  };\n\n  get context(): string {\n    return getLoggerContext(this.logger);\n  }\n\n  get storageKey() {\n    return this.storagePrefix + this.version + this.core.customStoragePrefix + \"//\" + this.name;\n  }\n\n  get size(): number {\n    return this.records.size;\n  }\n\n  get keys(): number[] {\n    return Array.from(this.records.keys());\n  }\n\n  get values() {\n    return Array.from(this.records.values());\n  }\n\n  get pending(): RequestEvent[] {\n    const requests: RequestEvent[] = [];\n    this.values.forEach((record) => {\n      if (typeof record.response !== \"undefined\") return;\n      const requestEvent: RequestEvent = {\n        topic: record.topic,\n        request: formatJsonRpcRequest(record.request.method, record.request.params, record.id),\n        chainId: record.chainId,\n      };\n      return requests.push(requestEvent);\n    });\n    return requests;\n  }\n\n  public set: IJsonRpcHistory[\"set\"] = (topic, request, chainId) => {\n    this.isInitialized();\n    this.logger.debug(`Setting JSON-RPC request history record`);\n    this.logger.trace({ type: \"method\", method: \"set\", topic, request, chainId });\n    if (this.records.has(request.id)) return;\n    const record: JsonRpcRecord = {\n      id: request.id,\n      topic,\n      request: { method: request.method, params: request.params || null },\n      chainId,\n      expiry: calcExpiry(THIRTY_DAYS),\n    };\n    this.records.set(record.id, record);\n    this.persist();\n    this.events.emit(HISTORY_EVENTS.created, record);\n  };\n\n  public resolve: IJsonRpcHistory[\"resolve\"] = async (response) => {\n    this.isInitialized();\n    this.logger.debug(`Updating JSON-RPC response history record`);\n    this.logger.trace({ type: \"method\", method: \"update\", response });\n    if (!this.records.has(response.id)) return;\n    const record = await this.getRecord(response.id);\n    if (typeof record.response !== \"undefined\") return;\n    record.response = isJsonRpcError(response)\n      ? { error: response.error }\n      : { result: response.result };\n    this.records.set(record.id, record);\n    this.persist();\n    this.events.emit(HISTORY_EVENTS.updated, record);\n  };\n\n  public get: IJsonRpcHistory[\"get\"] = async (topic, id) => {\n    this.isInitialized();\n    this.logger.debug(`Getting record`);\n    this.logger.trace({ type: \"method\", method: \"get\", topic, id });\n    const record = await this.getRecord(id);\n    return record;\n  };\n\n  public delete: IJsonRpcHistory[\"delete\"] = (topic, id) => {\n    this.isInitialized();\n    this.logger.debug(`Deleting record`);\n    this.logger.trace({ type: \"method\", method: \"delete\", id });\n    this.values.forEach((record: JsonRpcRecord) => {\n      if (record.topic === topic) {\n        if (typeof id !== \"undefined\" && record.id !== id) return;\n        this.records.delete(record.id);\n        this.events.emit(HISTORY_EVENTS.deleted, record);\n      }\n    });\n    this.persist();\n  };\n\n  public exists: IJsonRpcHistory[\"exists\"] = async (topic, id) => {\n    this.isInitialized();\n    if (!this.records.has(id)) return false;\n    const record = await this.getRecord(id);\n    return record.topic === topic;\n  };\n\n  public on: IJsonRpcHistory[\"on\"] = (event, listener) => {\n    this.events.on(event, listener);\n  };\n\n  public once: IJsonRpcHistory[\"once\"] = (event, listener) => {\n    this.events.once(event, listener);\n  };\n\n  public off: IJsonRpcHistory[\"off\"] = (event, listener) => {\n    this.events.off(event, listener);\n  };\n\n  public removeListener: IJsonRpcHistory[\"removeListener\"] = (event, listener) => {\n    this.events.removeListener(event, listener);\n  };\n\n  // ---------- Private ----------------------------------------------- //\n\n  private async setJsonRpcRecords(records: JsonRpcRecord[]): Promise<void> {\n    await this.core.storage.setItem<JsonRpcRecord[]>(this.storageKey, records);\n  }\n\n  private async getJsonRpcRecords(): Promise<JsonRpcRecord[] | undefined> {\n    const records = await this.core.storage.getItem<JsonRpcRecord[]>(this.storageKey);\n    return records;\n  }\n\n  private getRecord(id: number) {\n    this.isInitialized();\n    const record = this.records.get(id);\n    if (!record) {\n      const { message } = getInternalError(\"NO_MATCHING_KEY\", `${this.name}: ${id}`);\n      throw new Error(message);\n    }\n    return record;\n  }\n\n  private async persist() {\n    await this.setJsonRpcRecords(this.values);\n    this.events.emit(HISTORY_EVENTS.sync);\n  }\n\n  private async restore() {\n    try {\n      const persisted = await this.getJsonRpcRecords();\n      if (typeof persisted === \"undefined\") return;\n      if (!persisted.length) return;\n      if (this.records.size) {\n        const { message } = getInternalError(\"RESTORE_WILL_OVERRIDE\", this.name);\n        this.logger.error(message);\n        throw new Error(message);\n      }\n      this.cached = persisted;\n      this.logger.debug(`Successfully Restored records for ${this.name}`);\n      this.logger.trace({ type: \"method\", method: \"restore\", records: this.values });\n    } catch (e) {\n      this.logger.debug(`Failed to Restore records for ${this.name}`);\n      this.logger.error(e as any);\n    }\n  }\n\n  private registerEventListeners(): void {\n    this.events.on(HISTORY_EVENTS.created, (record: JsonRpcRecord) => {\n      const eventName = HISTORY_EVENTS.created;\n      this.logger.info(`Emitting ${eventName}`);\n      this.logger.debug({ type: \"event\", event: eventName, record });\n    });\n    this.events.on(HISTORY_EVENTS.updated, (record: JsonRpcRecord) => {\n      const eventName = HISTORY_EVENTS.updated;\n      this.logger.info(`Emitting ${eventName}`);\n      this.logger.debug({ type: \"event\", event: eventName, record });\n    });\n\n    this.events.on(HISTORY_EVENTS.deleted, (record: JsonRpcRecord) => {\n      const eventName = HISTORY_EVENTS.deleted;\n      this.logger.info(`Emitting ${eventName}`);\n      this.logger.debug({ type: \"event\", event: eventName, record });\n    });\n\n    this.core.heartbeat.on(HEARTBEAT_EVENTS.pulse, () => {\n      this.cleanup();\n    });\n  }\n\n  private cleanup() {\n    try {\n      this.isInitialized();\n      let deleted = false;\n      this.records.forEach((record: JsonRpcRecord) => {\n        const msToExpiry = toMiliseconds(record.expiry || 0) - Date.now();\n        if (msToExpiry <= 0) {\n          this.logger.info(`Deleting expired history log: ${record.id}`);\n          this.records.delete(record.id);\n          this.events.emit(HISTORY_EVENTS.deleted, record, false);\n          deleted = true;\n        }\n      });\n      if (deleted) {\n        this.persist();\n      }\n    } catch (e) {\n      this.logger.warn(e);\n    }\n  }\n\n  private isInitialized() {\n    if (!this.initialized) {\n      const { message } = getInternalError(\"NOT_INITIALIZED\", this.name);\n      throw new Error(message);\n    }\n  }\n}\n","import { HEARTBEAT_EVENTS } from \"@walletconnect/heartbeat\";\nimport { generateChildLogger, getLoggerContext, Logger } from \"@walletconnect/logger\";\nimport { toMiliseconds } from \"@walletconnect/time\";\nimport { ExpirerTypes, ICore, IExpirer } from \"@walletconnect/types\";\nimport { getInternalError, formatIdTarget, formatTopicTarget } from \"@walletconnect/utils\";\nimport { EventEmitter } from \"events\";\nimport {\n  CORE_STORAGE_PREFIX,\n  EXPIRER_CONTEXT,\n  EXPIRER_EVENTS,\n  EXPIRER_STORAGE_VERSION,\n} from \"../constants\";\n\nexport class Expirer extends IExpirer {\n  public expirations = new Map<string, ExpirerTypes.Expiration>();\n  public events = new EventEmitter();\n  public name = EXPIRER_CONTEXT;\n  public version = EXPIRER_STORAGE_VERSION;\n\n  private cached: ExpirerTypes.Expiration[] = [];\n  private initialized = false;\n\n  private storagePrefix = CORE_STORAGE_PREFIX;\n\n  constructor(\n    public core: ICore,\n    public logger: Logger,\n  ) {\n    super(core, logger);\n    this.logger = generateChildLogger(logger, this.name);\n  }\n\n  public init: IExpirer[\"init\"] = async () => {\n    if (!this.initialized) {\n      this.logger.trace(`Initialized`);\n      await this.restore();\n      this.cached.forEach((expiration) => this.expirations.set(expiration.target, expiration));\n      this.cached = [];\n      this.registerEventListeners();\n      this.initialized = true;\n    }\n  };\n\n  get context(): string {\n    return getLoggerContext(this.logger);\n  }\n\n  get storageKey() {\n    return this.storagePrefix + this.version + this.core.customStoragePrefix + \"//\" + this.name;\n  }\n\n  get length(): number {\n    return this.expirations.size;\n  }\n\n  get keys(): string[] {\n    return Array.from(this.expirations.keys());\n  }\n\n  get values(): ExpirerTypes.Expiration[] {\n    return Array.from(this.expirations.values());\n  }\n\n  public has: IExpirer[\"has\"] = (key) => {\n    try {\n      const target = this.formatTarget(key);\n      const expiration = this.getExpiration(target);\n      return typeof expiration !== \"undefined\";\n    } catch (e) {\n      // ignore\n      return false;\n    }\n  };\n\n  public set: IExpirer[\"set\"] = (key, expiry) => {\n    this.isInitialized();\n    const target = this.formatTarget(key);\n    const expiration = { target, expiry };\n    this.expirations.set(target, expiration);\n    this.checkExpiry(target, expiration);\n    this.events.emit(EXPIRER_EVENTS.created, {\n      target,\n      expiration,\n    } as ExpirerTypes.Created);\n  };\n\n  public get: IExpirer[\"get\"] = (key) => {\n    this.isInitialized();\n    const target = this.formatTarget(key);\n    return this.getExpiration(target);\n  };\n\n  public del: IExpirer[\"del\"] = (key) => {\n    this.isInitialized();\n    const exists = this.has(key);\n    if (exists) {\n      const target = this.formatTarget(key);\n      const expiration = this.getExpiration(target);\n      this.expirations.delete(target);\n      this.events.emit(EXPIRER_EVENTS.deleted, {\n        target,\n        expiration,\n      } as ExpirerTypes.Deleted);\n    }\n  };\n\n  public on: IExpirer[\"on\"] = (event, listener) => {\n    this.events.on(event, listener);\n  };\n\n  public once: IExpirer[\"once\"] = (event, listener) => {\n    this.events.once(event, listener);\n  };\n\n  public off: IExpirer[\"off\"] = (event, listener) => {\n    this.events.off(event, listener);\n  };\n\n  public removeListener: IExpirer[\"removeListener\"] = (event, listener) => {\n    this.events.removeListener(event, listener);\n  };\n\n  // ---------- Private ----------------------------------------------- //\n\n  private formatTarget(key: string | number) {\n    if (typeof key === \"string\") {\n      return formatTopicTarget(key);\n    } else if (typeof key === \"number\") {\n      return formatIdTarget(key);\n    }\n    const { message } = getInternalError(\"UNKNOWN_TYPE\", `Target type: ${typeof key}`);\n    throw new Error(message);\n  }\n\n  private async setExpirations(expirations: ExpirerTypes.Expiration[]): Promise<void> {\n    await this.core.storage.setItem<ExpirerTypes.Expiration[]>(this.storageKey, expirations);\n  }\n\n  private async getExpirations(): Promise<ExpirerTypes.Expiration[] | undefined> {\n    const expirations = await this.core.storage.getItem<ExpirerTypes.Expiration[]>(this.storageKey);\n    return expirations;\n  }\n\n  private async persist() {\n    await this.setExpirations(this.values);\n    this.events.emit(EXPIRER_EVENTS.sync);\n  }\n\n  private async restore() {\n    try {\n      const persisted = await this.getExpirations();\n      if (typeof persisted === \"undefined\") return;\n      if (!persisted.length) return;\n      if (this.expirations.size) {\n        const { message } = getInternalError(\"RESTORE_WILL_OVERRIDE\", this.name);\n        this.logger.error(message);\n        throw new Error(message);\n      }\n      this.cached = persisted;\n      this.logger.debug(`Successfully Restored expirations for ${this.name}`);\n      this.logger.trace({ type: \"method\", method: \"restore\", expirations: this.values });\n    } catch (e) {\n      this.logger.debug(`Failed to Restore expirations for ${this.name}`);\n      this.logger.error(e as any);\n    }\n  }\n\n  private getExpiration(target: string): ExpirerTypes.Expiration {\n    const expiration = this.expirations.get(target);\n    if (!expiration) {\n      const { message } = getInternalError(\"NO_MATCHING_KEY\", `${this.name}: ${target}`);\n      this.logger.warn(message);\n      throw new Error(message);\n    }\n    return expiration;\n  }\n\n  private checkExpiry(target: string, expiration: ExpirerTypes.Expiration): void {\n    const { expiry } = expiration;\n    const msToTimeout = toMiliseconds(expiry) - Date.now();\n    if (msToTimeout <= 0) this.expire(target, expiration);\n  }\n\n  private expire(target: string, expiration: ExpirerTypes.Expiration): void {\n    this.expirations.delete(target);\n    this.events.emit(EXPIRER_EVENTS.expired, {\n      target,\n      expiration,\n    } as ExpirerTypes.Expired);\n  }\n\n  private checkExpirations(): void {\n    // avoid auto expiring if the relayer is not connected\n    if (!this.core.relayer.connected) return;\n    this.expirations.forEach((expiration, target) => this.checkExpiry(target, expiration));\n  }\n\n  private registerEventListeners(): void {\n    this.core.heartbeat.on(HEARTBEAT_EVENTS.pulse, () => this.checkExpirations());\n    this.events.on(EXPIRER_EVENTS.created, (createdEvent: ExpirerTypes.Created) => {\n      const eventName = EXPIRER_EVENTS.created;\n      this.logger.info(`Emitting ${eventName}`);\n      this.logger.debug({ type: \"event\", event: eventName, data: createdEvent });\n      this.persist();\n    });\n    this.events.on(EXPIRER_EVENTS.expired, (expiredEvent: ExpirerTypes.Expired) => {\n      const eventName = EXPIRER_EVENTS.expired;\n      this.logger.info(`Emitting ${eventName}`);\n      this.logger.debug({ type: \"event\", event: eventName, data: expiredEvent });\n      this.persist();\n    });\n    this.events.on(EXPIRER_EVENTS.deleted, (deletedEvent: ExpirerTypes.Deleted) => {\n      const eventName = EXPIRER_EVENTS.deleted;\n      this.logger.info(`Emitting ${eventName}`);\n      this.logger.debug({ type: \"event\", event: eventName, data: deletedEvent });\n      this.persist();\n    });\n  }\n\n  private isInitialized() {\n    if (!this.initialized) {\n      const { message } = getInternalError(\"NOT_INITIALIZED\", this.name);\n      throw new Error(message);\n    }\n  }\n}\n","import { generateChildLogger, getLoggerContext, Logger } from \"@walletconnect/logger\";\nimport { ICore, IVerify } from \"@walletconnect/types\";\nimport { isBrowser, isTestRun, P256KeyDataType, verifyP256Jwt } from \"@walletconnect/utils\";\nimport { FIVE_SECONDS, ONE_SECOND, toMiliseconds } from \"@walletconnect/time\";\nimport { getDocument } from \"@walletconnect/window-getters\";\nimport { decodeJWT } from \"@walletconnect/relay-auth\";\n\nimport {\n  CORE_STORAGE_PREFIX,\n  CORE_VERSION,\n  TRUSTED_VERIFY_URLS,\n  VERIFY_CONTEXT,\n  VERIFY_SERVER,\n  VERIFY_SERVER_V3,\n} from \"../constants\";\nimport { IKeyValueStorage } from \"@walletconnect/keyvaluestorage\";\n\ntype Jwk = {\n  publicKey: P256KeyDataType;\n  expiresAt: number;\n};\ntype JwkPayload = {\n  exp: number;\n  id: string;\n  origin: string;\n  isScam: boolean;\n  isVerified: boolean;\n};\nexport class Verify extends IVerify {\n  public name = VERIFY_CONTEXT;\n  private abortController: AbortController;\n  private isDevEnv;\n  private verifyUrlV3 = VERIFY_SERVER_V3;\n  private storagePrefix = CORE_STORAGE_PREFIX;\n  private version = CORE_VERSION;\n  private publicKey?: Jwk;\n  private fetchPromise?: Promise<Jwk>;\n\n  constructor(\n    public core: ICore,\n    public logger: Logger,\n    public store: IKeyValueStorage,\n  ) {\n    super(core, logger, store);\n    this.logger = generateChildLogger(logger, this.name);\n    this.abortController = new AbortController();\n    this.isDevEnv = isTestRun();\n    this.init();\n  }\n\n  get storeKey(): string {\n    return (\n      this.storagePrefix + this.version + this.core.customStoragePrefix + \"//\" + `verify:public:key`\n    );\n  }\n\n  public init = async () => {\n    if (this.isDevEnv) return;\n    this.publicKey = await this.store.getItem(this.storeKey);\n    if (this.publicKey && toMiliseconds(this.publicKey?.expiresAt) < Date.now()) {\n      this.logger.debug(\"verify v2 public key expired\");\n      await this.removePublicKey();\n    }\n  };\n\n  public register: IVerify[\"register\"] = async (params) => {\n    if (!isBrowser() || this.isDevEnv) return;\n    const origin = window.location.origin;\n    const { id, decryptedId } = params;\n    const src = `${this.verifyUrlV3}/attestation?projectId=${this.core.projectId}&origin=${origin}&id=${id}&decryptedId=${decryptedId}`;\n    try {\n      const document = getDocument() as Document;\n      const abortTimeout = this.startAbortTimer(ONE_SECOND * 5);\n      const attestationJwt = await new Promise((resolve, reject) => {\n        const abortListener = () => {\n          window.removeEventListener(\"message\", listener);\n          document.body.removeChild(iframe);\n          reject(\"attestation aborted\");\n        };\n        this.abortController.signal.addEventListener(\"abort\", abortListener);\n        const iframe = document.createElement(\"iframe\");\n        iframe.src = src;\n        iframe.style.display = \"none\";\n        iframe.addEventListener(\"error\", abortListener, { signal: this.abortController.signal });\n        const listener = (event: MessageEvent) => {\n          if (!event.data) return;\n          if (typeof event.data !== \"string\") return;\n          try {\n            const data = JSON.parse(event.data);\n            if (data.type === \"verify_attestation\") {\n              const decoded = decodeJWT(data.attestation) as unknown as { payload: JwkPayload };\n              if (decoded.payload.id !== id) return;\n\n              clearInterval(abortTimeout);\n              document.body.removeChild(iframe);\n              this.abortController.signal.removeEventListener(\"abort\", abortListener);\n              window.removeEventListener(\"message\", listener);\n              resolve(data.attestation === null ? \"\" : data.attestation);\n            }\n          } catch (e) {\n            this.logger.warn(e);\n          }\n        };\n        document.body.appendChild(iframe);\n        window.addEventListener(\"message\", listener, { signal: this.abortController.signal });\n      });\n      this.logger.debug(\"jwt attestation\", attestationJwt);\n      return attestationJwt as string;\n    } catch (e) {\n      this.logger.warn(e);\n    }\n    return \"\";\n  };\n\n  public resolve: IVerify[\"resolve\"] = async (params) => {\n    if (this.isDevEnv) return \"\";\n    const { attestationId, hash, encryptedId } = params;\n    if (attestationId === \"\") {\n      this.logger.debug(\"resolve: attestationId is empty, skipping\");\n      return;\n    }\n\n    if (attestationId) {\n      const decoded = decodeJWT(attestationId) as unknown as { payload: JwkPayload };\n      if (decoded.payload.id !== encryptedId) return;\n      const validation = await this.isValidJwtAttestation(attestationId);\n      if (validation) {\n        if (!validation.isVerified) {\n          this.logger.warn(\"resolve: jwt attestation: origin url not verified\");\n          return;\n        }\n        return validation;\n      }\n    }\n    if (!hash) return;\n    const verifyUrl = this.getVerifyUrl(params?.verifyUrl);\n    return this.fetchAttestation(hash, verifyUrl);\n  };\n\n  get context(): string {\n    return getLoggerContext(this.logger);\n  }\n\n  private fetchAttestation = async (attestationId: string, url: string) => {\n    this.logger.debug(`resolving attestation: ${attestationId} from url: ${url}`);\n    // set artificial timeout to prevent hanging\n    const timeout = this.startAbortTimer(ONE_SECOND * 5);\n    const result = await fetch(`${url}/attestation/${attestationId}?v2Supported=true`, {\n      signal: this.abortController.signal,\n    });\n    clearTimeout(timeout);\n    return result.status === 200 ? await result.json() : undefined;\n  };\n\n  private startAbortTimer(timer: number) {\n    this.abortController = new AbortController();\n    return setTimeout(() => this.abortController.abort(), toMiliseconds(timer));\n  }\n\n  private getVerifyUrl = (verifyUrl?: string) => {\n    let url = verifyUrl || VERIFY_SERVER;\n    if (!TRUSTED_VERIFY_URLS.includes(url)) {\n      this.logger.info(\n        `verify url: ${url}, not included in trusted list, assigning default: ${VERIFY_SERVER}`,\n      );\n      url = VERIFY_SERVER;\n    }\n    return url;\n  };\n\n  private fetchPublicKey = async () => {\n    try {\n      this.logger.debug(`fetching public key from: ${this.verifyUrlV3}`);\n      const timeout = this.startAbortTimer(FIVE_SECONDS);\n      const result = await fetch(`${this.verifyUrlV3}/public-key`, {\n        signal: this.abortController.signal,\n      });\n      clearTimeout(timeout);\n      return (await result.json()) as Jwk;\n    } catch (e) {\n      this.logger.warn(e);\n    }\n    return undefined;\n  };\n\n  private persistPublicKey = async (publicKey: Jwk) => {\n    this.logger.debug(`persisting public key to local storage`, publicKey);\n    await this.store.setItem(this.storeKey, publicKey);\n    this.publicKey = publicKey;\n  };\n\n  private removePublicKey = async () => {\n    this.logger.debug(`removing verify v2 public key from storage`);\n    await this.store.removeItem(this.storeKey);\n    this.publicKey = undefined;\n  };\n\n  private isValidJwtAttestation = async (attestation: string) => {\n    const key = await this.getPublicKey();\n    try {\n      if (key) {\n        const validation = this.validateAttestation(attestation, key);\n        return validation;\n      }\n    } catch (e) {\n      this.logger.error(e);\n      this.logger.warn(\"error validating attestation\");\n    }\n    const newKey = await this.fetchAndPersistPublicKey();\n    try {\n      if (newKey) {\n        const validation = this.validateAttestation(attestation, newKey);\n        return validation;\n      }\n    } catch (e) {\n      this.logger.error(e);\n      this.logger.warn(\"error validating attestation\");\n    }\n    return undefined;\n  };\n\n  private getPublicKey = async () => {\n    if (this.publicKey) return this.publicKey;\n    return await this.fetchAndPersistPublicKey();\n  };\n\n  private fetchAndPersistPublicKey = async () => {\n    if (this.fetchPromise) {\n      await this.fetchPromise;\n      return this.publicKey;\n    }\n    this.fetchPromise = new Promise(async (resolve) => {\n      const key = await this.fetchPublicKey();\n      if (!key) return;\n      await this.persistPublicKey(key);\n      resolve(key);\n    });\n    const key = await this.fetchPromise;\n    this.fetchPromise = undefined;\n    return key;\n  };\n\n  private validateAttestation = (attestation: string, key: Jwk) => {\n    const result = verifyP256Jwt<JwkPayload>(attestation, key.publicKey);\n    const validation = {\n      hasExpired: toMiliseconds(result.exp) < Date.now(),\n      payload: result,\n    };\n\n    if (validation.hasExpired) {\n      this.logger.warn(\"resolve: jwt attestation expired\");\n      throw new Error(\"JWT attestation expired\");\n    }\n\n    return {\n      origin: validation.payload.origin,\n      isScam: validation.payload.isScam,\n      isVerified: validation.payload.isVerified,\n    };\n  };\n}\n","import { generateChildLogger, Logger } from \"@walletconnect/logger\";\nimport { IEchoClient } from \"@walletconnect/types\";\nimport { ECHO_CONTEXT, ECHO_URL } from \"../constants\";\n\nexport class EchoClient extends IEchoClient {\n  public readonly context = ECHO_CONTEXT;\n  constructor(\n    public projectId: string,\n    public logger: Logger,\n  ) {\n    super(projectId, logger);\n    this.logger = generateChildLogger(logger, this.context);\n  }\n\n  public registerDeviceToken: IEchoClient[\"registerDeviceToken\"] = async (params) => {\n    const { clientId, token, notificationType, enableEncrypted = false } = params;\n\n    const echoUrl = `${ECHO_URL}/${this.projectId}/clients`;\n\n    await fetch(echoUrl, {\n      method: \"POST\",\n      headers: {\n        \"Content-Type\": \"application/json\",\n      },\n      body: JSON.stringify({\n        client_id: clientId,\n        type: notificationType,\n        token,\n        always_raw: enableEncrypted,\n      }),\n    });\n  };\n}\n","import { generateChildLogger, Logger } from \"@walletconnect/logger\";\nimport { ICore, IEventClient, EventClientTypes } from \"@walletconnect/types\";\nimport { formatUA, isTestRun, uuidv4, getAppMetadata } from \"@walletconnect/utils\";\nimport {\n  CORE_STORAGE_PREFIX,\n  EVENTS_CLIENT_API_URL,\n  EVENTS_STORAGE_CLEANUP_INTERVAL,\n  EVENTS_STORAGE_CONTEXT,\n  EVENTS_STORAGE_VERSION,\n  RELAYER_SDK_VERSION,\n} from \"../constants\";\nimport { HEARTBEAT_EVENTS } from \"@walletconnect/heartbeat\";\nimport { fromMiliseconds } from \"@walletconnect/time\";\n\nexport class EventClient extends IEventClient {\n  public readonly context = EVENTS_STORAGE_CONTEXT;\n  private readonly storagePrefix = CORE_STORAGE_PREFIX;\n  private readonly storageVersion = EVENTS_STORAGE_VERSION;\n  private events = new Map<string, EventClientTypes.Event>();\n  private shouldPersist = false;\n  constructor(\n    public core: ICore,\n    public logger: Logger,\n    telemetryEnabled = true,\n  ) {\n    super(core, logger, telemetryEnabled);\n    this.logger = generateChildLogger(logger, this.context);\n    this.telemetryEnabled = telemetryEnabled;\n    if (telemetryEnabled) {\n      this.restore().then(async () => {\n        await this.submit();\n        this.setEventListeners();\n      });\n    } else {\n      // overwrite any persisted events with an empty array\n      this.persist();\n    }\n  }\n\n  get storageKey() {\n    return (\n      this.storagePrefix + this.storageVersion + this.core.customStoragePrefix + \"//\" + this.context\n    );\n  }\n\n  public init: IEventClient[\"init\"] = async () => {\n    if (isTestRun()) return;\n    try {\n      const initEvent = {\n        eventId: uuidv4(),\n        timestamp: Date.now(),\n        domain: this.getAppDomain(),\n        props: {\n          event: \"INIT\",\n          type: \"\",\n          properties: {\n            client_id: await this.core.crypto.getClientId(),\n            user_agent: formatUA(\n              this.core.relayer.protocol,\n              this.core.relayer.version,\n              RELAYER_SDK_VERSION,\n            ),\n          },\n        },\n      };\n      await this.sendEvent([initEvent] as unknown as EventClientTypes.Event[]);\n    } catch (error) {\n      this.logger.warn(error);\n    }\n  };\n\n  public createEvent: IEventClient[\"createEvent\"] = (params) => {\n    const {\n      event = \"ERROR\",\n      type = \"\",\n      properties: { topic, trace },\n    } = params;\n    const eventId = uuidv4();\n    const bundleId = this.core.projectId || \"\";\n    const timestamp = Date.now();\n    const props = {\n      event,\n      type,\n      properties: {\n        topic,\n        trace,\n      },\n    };\n    const eventObj = {\n      eventId,\n      timestamp,\n      props,\n      bundleId,\n      domain: this.getAppDomain(),\n      ...this.setMethods(eventId),\n    };\n    if (this.telemetryEnabled) {\n      this.events.set(eventId, eventObj);\n      this.shouldPersist = true;\n    }\n\n    return eventObj;\n  };\n\n  public getEvent: IEventClient[\"getEvent\"] = (params) => {\n    const { eventId, topic } = params;\n    if (eventId) {\n      return this.events.get(eventId);\n    }\n    const event = Array.from(this.events.values()).find(\n      (event) => event.props.properties.topic === topic,\n    );\n\n    if (!event) return;\n\n    return {\n      ...event,\n      ...this.setMethods(event.eventId),\n    };\n  };\n\n  public deleteEvent: IEventClient[\"deleteEvent\"] = (params) => {\n    const { eventId } = params;\n    this.events.delete(eventId);\n    this.shouldPersist = true;\n  };\n\n  private setEventListeners = () => {\n    this.core.heartbeat.on(HEARTBEAT_EVENTS.pulse, async () => {\n      if (this.shouldPersist) await this.persist();\n      // cleanup events older than EVENTS_STORAGE_CLEANUP_INTERVAL\n      this.events.forEach((event) => {\n        if (\n          fromMiliseconds(Date.now()) - fromMiliseconds(event.timestamp) >\n          EVENTS_STORAGE_CLEANUP_INTERVAL\n        ) {\n          this.events.delete(event.eventId);\n          this.shouldPersist = true;\n        }\n      });\n    });\n  };\n\n  private setMethods = (eventId: string) => {\n    return {\n      addTrace: (trace: string) => this.addTrace(eventId, trace),\n      setError: (errorType: string) => this.setError(eventId, errorType),\n    };\n  };\n\n  private addTrace = (eventId: string, trace: string) => {\n    const event = this.events.get(eventId);\n    if (!event) return;\n    event.props.properties.trace.push(trace);\n    this.events.set(eventId, event);\n    this.shouldPersist = true;\n  };\n\n  private setError = (eventId: string, errorType: string) => {\n    const event = this.events.get(eventId);\n    if (!event) return;\n    event.props.type = errorType;\n    event.timestamp = Date.now();\n    this.events.set(eventId, event);\n    this.shouldPersist = true;\n  };\n\n  private persist = async () => {\n    await this.core.storage.setItem(this.storageKey, Array.from(this.events.values()));\n    this.shouldPersist = false;\n  };\n\n  private restore = async () => {\n    try {\n      const events =\n        (await this.core.storage.getItem<EventClientTypes.Event[]>(this.storageKey)) || [];\n      if (!events.length) return;\n      events.forEach((event) => {\n        this.events.set(event.eventId, {\n          ...event,\n          ...this.setMethods(event.eventId),\n        });\n      });\n    } catch (error) {\n      this.logger.warn(error);\n    }\n  };\n\n  private submit = async () => {\n    if (!this.telemetryEnabled) return;\n\n    if (this.events.size === 0) return;\n\n    const eventsToSend: EventClientTypes.Event[] = [];\n    // exclude events without type as they can be considered `in progress`\n    for (const [_, event] of this.events) {\n      if (event.props.type) {\n        eventsToSend.push(event);\n      }\n    }\n\n    if (eventsToSend.length === 0) return;\n\n    try {\n      const response = await this.sendEvent(eventsToSend);\n      if (response.ok) {\n        for (const event of eventsToSend) {\n          this.events.delete(event.eventId);\n          this.shouldPersist = true;\n        }\n      }\n    } catch (error) {\n      this.logger.warn(error);\n    }\n  };\n\n  private sendEvent = async (events: EventClientTypes.Event[]) => {\n    // if domain isn't available, set `sp` as `desktop` so data would be extracted on api side\n    const platform = this.getAppDomain() ? \"\" : \"&sp=desktop\";\n    const response = await fetch(\n      `${EVENTS_CLIENT_API_URL}?projectId=${this.core.projectId}&st=events_sdk&sv=js-${RELAYER_SDK_VERSION}${platform}`,\n      {\n        method: \"POST\",\n        body: JSON.stringify(events),\n      },\n    );\n    return response;\n  };\n\n  private getAppDomain = () => {\n    return getAppMetadata().url;\n  };\n}\n","import { EventEmitter } from \"events\";\n\nimport { HeartBeat } from \"@walletconnect/heartbeat\";\nimport KeyValueStorage from \"@walletconnect/keyvaluestorage\";\nimport {\n  ChunkLoggerController,\n  generateChildLogger,\n  generatePlatformLogger,\n  getDefaultLoggerOptions,\n  getLoggerContext,\n} from \"@walletconnect/logger\";\nimport { CoreTypes, ICore } from \"@walletconnect/types\";\n\nimport {\n  CORE_CONTEXT,\n  CORE_DEFAULT,\n  CORE_PROTOCOL,\n  CORE_STORAGE_OPTIONS,\n  CORE_VERSION,\n  RELAYER_DEFAULT_RELAY_URL,\n  TRANSPORT_TYPES,\n  WALLETCONNECT_CLIENT_ID,\n  WALLETCONNECT_LINK_MODE_APPS,\n} from \"./constants\";\nimport {\n  Crypto,\n  EchoClient,\n  EventClient,\n  Expirer,\n  JsonRpcHistory,\n  Pairing,\n  Relayer,\n  Verify,\n} from \"./controllers\";\n\nexport class Core extends ICore {\n  public readonly protocol = CORE_PROTOCOL;\n  public readonly version = CORE_VERSION;\n\n  public readonly name: ICore[\"name\"] = CORE_CONTEXT;\n  public readonly relayUrl: ICore[\"relayUrl\"];\n  public readonly projectId: ICore[\"projectId\"];\n  public readonly customStoragePrefix: ICore[\"customStoragePrefix\"];\n  public events: ICore[\"events\"] = new EventEmitter();\n  public logger: ICore[\"logger\"];\n  public heartbeat: ICore[\"heartbeat\"];\n  public relayer: ICore[\"relayer\"];\n  public crypto: ICore[\"crypto\"];\n  public storage: ICore[\"storage\"];\n  public history: ICore[\"history\"];\n  public expirer: ICore[\"expirer\"];\n  public pairing: ICore[\"pairing\"];\n  public verify: ICore[\"verify\"];\n  public echoClient: ICore[\"echoClient\"];\n  public linkModeSupportedApps: ICore[\"linkModeSupportedApps\"];\n  public eventClient: ICore[\"eventClient\"];\n\n  private initialized = false;\n  private logChunkController: ChunkLoggerController | null;\n\n  static async init(opts?: CoreTypes.Options) {\n    const core = new Core(opts);\n    await core.initialize();\n    const clientId = await core.crypto.getClientId();\n    await core.storage.setItem(WALLETCONNECT_CLIENT_ID, clientId);\n\n    return core;\n  }\n\n  constructor(opts?: CoreTypes.Options) {\n    super(opts);\n\n    const globalCore = this.getGlobalCore(opts?.customStoragePrefix);\n    if (globalCore) {\n      try {\n        this.customStoragePrefix = globalCore.customStoragePrefix;\n        this.logger = globalCore.logger;\n        this.heartbeat = globalCore.heartbeat;\n        this.crypto = globalCore.crypto;\n        this.history = globalCore.history;\n        this.expirer = globalCore.expirer;\n        this.storage = globalCore.storage;\n        this.relayer = globalCore.relayer;\n        this.pairing = globalCore.pairing;\n        this.verify = globalCore.verify;\n        this.echoClient = globalCore.echoClient;\n        this.linkModeSupportedApps = globalCore.linkModeSupportedApps;\n        this.eventClient = globalCore.eventClient;\n        this.initialized = globalCore.initialized;\n        this.logChunkController = globalCore.logChunkController;\n        return globalCore;\n      } catch (error) {\n        console.warn(\"Failed to copy global core\", error);\n      }\n    }\n\n    this.projectId = opts?.projectId;\n    this.relayUrl = opts?.relayUrl || RELAYER_DEFAULT_RELAY_URL;\n    this.customStoragePrefix = opts?.customStoragePrefix ? `:${opts.customStoragePrefix}` : \"\";\n\n    const loggerOptions = getDefaultLoggerOptions({\n      level: typeof opts?.logger === \"string\" && opts.logger ? opts.logger : CORE_DEFAULT.logger,\n      name: CORE_CONTEXT,\n    });\n\n    const { logger, chunkLoggerController } = generatePlatformLogger({\n      opts: loggerOptions,\n      maxSizeInBytes: opts?.maxLogBlobSizeInBytes,\n      loggerOverride: opts?.logger,\n    });\n\n    this.logChunkController = chunkLoggerController;\n\n    if (this.logChunkController?.downloadLogsBlobInBrowser) {\n      // @ts-ignore\n      window.downloadLogsBlobInBrowser = async () => {\n        // Have to null check twice because there is no guarantee\n        // this.logChunkController.downloadLogsBlobInBrowser is always truthy\n        if (this.logChunkController?.downloadLogsBlobInBrowser) {\n          this.logChunkController?.downloadLogsBlobInBrowser({\n            clientId: await this.crypto.getClientId(),\n          });\n        }\n      };\n    }\n\n    this.logger = generateChildLogger(logger, this.name);\n    this.heartbeat = new HeartBeat();\n    this.crypto = new Crypto(this, this.logger, opts?.keychain);\n    this.history = new JsonRpcHistory(this, this.logger);\n    this.expirer = new Expirer(this, this.logger);\n    this.storage = opts?.storage\n      ? opts.storage\n      : new KeyValueStorage({ ...CORE_STORAGE_OPTIONS, ...opts?.storageOptions });\n    this.relayer = new Relayer({\n      core: this,\n      logger: this.logger,\n      relayUrl: this.relayUrl,\n      projectId: this.projectId,\n    });\n    this.pairing = new Pairing(this, this.logger);\n    this.verify = new Verify(this, this.logger, this.storage);\n    this.echoClient = new EchoClient(this.projectId || \"\", this.logger);\n    this.linkModeSupportedApps = [];\n    this.eventClient = new EventClient(this, this.logger, opts?.telemetryEnabled);\n    this.setGlobalCore(this);\n  }\n\n  get context() {\n    return getLoggerContext(this.logger);\n  }\n\n  // ---------- Public ----------------------------------------------- //\n\n  public async start() {\n    if (this.initialized) return;\n    await this.initialize();\n  }\n\n  public async getLogsBlob() {\n    return this.logChunkController?.logsToBlob({\n      clientId: await this.crypto.getClientId(),\n    });\n  }\n\n  public async addLinkModeSupportedApp(universalLink: string) {\n    if (this.linkModeSupportedApps.includes(universalLink)) return;\n    this.linkModeSupportedApps.push(universalLink);\n    await this.storage.setItem(WALLETCONNECT_LINK_MODE_APPS, this.linkModeSupportedApps);\n  }\n\n  // ---------- Events ----------------------------------------------- //\n\n  public on = (name: any, listener: any) => {\n    return this.events.on(name, listener);\n  };\n\n  public once = (name: any, listener: any) => {\n    return this.events.once(name, listener);\n  };\n\n  public off = (name: any, listener: any) => {\n    return this.events.off(name, listener);\n  };\n\n  public removeListener = (name: any, listener: any) => {\n    return this.events.removeListener(name, listener);\n  };\n\n  // ---------- Link-mode ----------------------------------------------- //\n\n  public dispatchEnvelope = ({\n    topic,\n    message,\n    sessionExists,\n  }: {\n    topic: string;\n    message: string;\n    sessionExists: boolean;\n  }) => {\n    if (!topic || !message) return;\n\n    const payload = {\n      topic,\n      message,\n      publishedAt: Date.now(),\n      transportType: TRANSPORT_TYPES.link_mode,\n    };\n\n    this.relayer.onLinkMessageEvent(payload, { sessionExists });\n  };\n\n  // ---------- Private ----------------------------------------------- //\n\n  private async initialize() {\n    this.logger.trace(`Initialized`);\n    try {\n      await this.crypto.init();\n      await this.history.init();\n      await this.expirer.init();\n      await this.relayer.init();\n      await this.heartbeat.init();\n      await this.pairing.init();\n      this.linkModeSupportedApps = (await this.storage.getItem(WALLETCONNECT_LINK_MODE_APPS)) || [];\n\n      this.initialized = true;\n      this.logger.info(`Core Initialization Success`);\n    } catch (error) {\n      this.logger.warn(`Core Initialization Failure at epoch ${Date.now()}`, error);\n      this.logger.error((error as any).message);\n      throw error;\n    }\n  }\n\n  private getGlobalCore(customStoragePrefix = \"\"): Core | undefined {\n    try {\n      if (this.isGlobalCoreDisabled()) {\n        return undefined;\n      }\n      const globalCorePrefix = `_walletConnectCore_${customStoragePrefix}`;\n\n      const counterKey = `${globalCorePrefix}_count`;\n      globalThis[counterKey] = (globalThis[counterKey] || 0) + 1;\n      if (globalThis[counterKey] > 1) {\n        console.warn(\n          `WalletConnect Core is already initialized. This is probably a mistake and can lead to unexpected behavior. Init() was called ${globalThis[counterKey]} times.`,\n        );\n      }\n\n      return globalThis[globalCorePrefix];\n    } catch (error) {\n      console.warn(\"Failed to get global WalletConnect core\", error);\n      return undefined;\n    }\n  }\n\n  private setGlobalCore(core: Core) {\n    try {\n      if (this.isGlobalCoreDisabled()) {\n        return;\n      }\n      const customStoragePrefix = core.opts?.customStoragePrefix || \"\";\n      const globalCorePrefix = `_walletConnectCore_${customStoragePrefix}`;\n      globalThis[globalCorePrefix] = core;\n    } catch (error) {\n      console.warn(\"Failed to set global WalletConnect core\", error);\n    }\n  }\n\n  private isGlobalCoreDisabled() {\n    try {\n      return typeof process !== \"undefined\" && process.env.DISABLE_GLOBAL_CORE === \"true\";\n    } catch (error) {\n      return true;\n    }\n  }\n}\n","import { Core as WalletConnectCore } from \"./core\";\n\nexport * from \"./constants\";\nexport * from \"./controllers\";\n\nexport const Core = WalletConnectCore;\nexport default WalletConnectCore;\n"],"names":["ONE_DAY","SIX_HOURS","THIRTY_DAYS","FIVE_SECONDS","THIRTY_SECONDS","VERIFY_SERVER_COM","VERIFY_SERVER_ORG","fromString","from","basex","decode","encode","identity","varint","varint.encodingLength","varint.encodeTo","Digest.create","base2","base8","base10","base16","base32","base36","base64","base256emoji","bases","r","h","core","logger","__publicField","KEYCHAIN_CONTEXT","KEYCHAIN_STORAGE_VERSION","CORE_STORAGE_PREFIX","keychain","tag","key","message","getInternalError","generateChildLogger","getLoggerContext","mapToObj","objToMap","b","CRYPTO_CONTEXT","generateRandomBytes32","seed","keyPair","relayAuth","clientId","generateKeyPairUtil","aud","sub","ttl","CRYPTO_JWT_TTL","selfPublicKey","peerPublicKey","overrideTopic","selfPrivateKey","symKey","deriveSymKey","topic","hashKey","publicKey","payload","opts","params","validateEncoding","safeJsonStringify","isTypeTwoEnvelope","encodeTypeTwoEnvelope","isTypeOneEnvelope","type","senderPublicKey","encrypt","encoded","validateDecoding","decodeTypeTwoEnvelope","safeJsonParse","decrypt","error","encoding","BASE64","deserialized","deserialize","decodeTypeByte","toString","BASE16","KeyChain","privateKey","CRYPTO_CLIENT_SEED","e","p","y","k","R","g","l","i","IMessageTracker","MESSAGES_CONTEXT","MESSAGES_STORAGE_VERSION","messages","messagesWithoutClientAck","direction","hash","hashMessage","MESSAGE_DIRECTION","__spreadProps","__spreadValues","topics","IPublisher","relayer","EventEmitter","PUBLISHER_CONTEXT","toMiliseconds","ONE_MINUTE","ONE_SECOND","_a","_b","_c","_d","_e","PUBLISHER_DEFAULT_TTL","prompt","id","getBigIntRpcId","api","getRelayProtocolApi","getRelayProtocolName","request","failedPublishMessage","isUndefined","publishPromise","resolve","onPublish","RELAYER_EVENTS","initialPublish","createExpiringPromise","reject","attestation","tvf","publishMethod","FIVE_MINUTES","method","event","listener","result","attempt","HEARTBEAT_EVENTS","a","n","ids","remaining","x","ISubscriber","SubscriberTopicMap","SUBSCRIBER_CONTEXT","SUBSCRIBER_STORAGE_VERSION","relay","s","pendingSubscriptions","SUBSCRIBER_EVENTS","createdEvent","eventName","deletedEvent","reason","getSdkError","subId","TRANSPORT_TYPES","shouldThrow","subscribePromise","onSubscribe","subscription","err","subscriptions","subs","numOfBatches","batch","persisted","response","sleep","m","IRelayer","RELAYER_CONTEXT","isNode","RELAYER_PROVIDER_EVENTS","createLogger","RELAYER_DEFAULT_LOGGER","MessageTracker","Subscriber","Publisher","RELAYER_DEFAULT_RELAY_URL","isAndroid","getAppId","isIos","shouldThrowOnFailure","resolvePromise","onSubCreated","relayUrl","isOnline","sortedMessages","messageEvent","expiry","calcExpiry","pairing","onDisconnect","_resolve","_reject","auth","JsonRpcProvider","WsConnection","formatRelayRpcUrl","RELAYER_SDK_VERSION","exists","isJsonRpcRequest","RELAYER_SUBSCRIBER_SUFFIX","publishedAt","isJsonRpcResponse","formatJsonRpcResult","lastConnectedState","subscribeToNetworkChange","connected","isAppVisible","RELAYER_RECONNECT_TIMEOUT","u","IStore","name","storagePrefix","getKey","STORE_STORAGE_VERSION","value","isProposalStruct","isSessionStruct","filter","isEqual","update","PAIRING_CONTEXT","PAIRING_STORAGE_VERSION","TYPE_1","methods","RELAYER_DEFAULT_PROTOCOL","uri","formatUri","PAIRING_EVENTS","EVENT_CLIENT_PAIRING_TRACES","expiryTimestamp","parseUri","existingPairing","EVENT_CLIENT_PAIRING_ERRORS","done","createDelayedPromise","engineEvent","metadata","formatJsonRpcRequest","PAIRING_RPC_OPTS","formatJsonRpcError","expirerHasDeleted","expiredPairings","isExpired","resMethod","_topic","isJsonRpcResult","isJsonRpcError","isValidParams","isValidUrl","isValidString","Store","transportType","EXPIRER_EVENTS","parseExpirerTarget","IJsonRpcHistory","HISTORY_CONTEXT","HISTORY_STORAGE_VERSION","record","chainId","HISTORY_EVENTS","requests","requestEvent","records","deleted","IExpirer","EXPIRER_CONTEXT","EXPIRER_STORAGE_VERSION","expiration","target","formatTopicTarget","formatIdTarget","expirations","expiredEvent","IVerify","store","VERIFY_CONTEXT","VERIFY_SERVER_V3","CORE_VERSION","isBrowser","origin","decryptedId","src","document","getDocument","abortTimeout","attestationJwt","abortListener","iframe","data","decodeJWT","attestationId","encryptedId","validation","verifyUrl","url","timeout","VERIFY_SERVER","TRUSTED_VERIFY_URLS","newKey","verifyP256Jwt","isTestRun","timer","IEchoClient","projectId","ECHO_CONTEXT","token","notificationType","enableEncrypted","echoUrl","ECHO_URL","I","IEventClient","telemetryEnabled","EVENTS_STORAGE_CONTEXT","EVENTS_STORAGE_VERSION","initEvent","uuidv4","formatUA","trace","eventId","bundleId","timestamp","eventObj","fromMiliseconds","EVENTS_STORAGE_CLEANUP_INTERVAL","errorType","events","eventsToSend","_","platform","EVENTS_CLIENT_API_URL","getAppMetadata","Core","ICore","CORE_PROTOCOL","CORE_CONTEXT","sessionExists","globalCore","loggerOptions","getDefaultLoggerOptions","CORE_DEFAULT","chunkLoggerController","generatePlatformLogger","HeartBeat","Crypto","JsonRpcHistory","Expirer","KeyValueStorage","CORE_STORAGE_OPTIONS","Relayer","Pairing","Verify","EchoClient","EventClient","WALLETCONNECT_CLIENT_ID","universalLink","WALLETCONNECT_LINK_MODE_APPS","customStoragePrefix","globalCorePrefix","counterKey","WalletConnectCore"],"mappings":"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"}