{"version":3,"file":"index.cjs","sources":["../../../node_modules/events/events.js","../src/constants/client.ts","../src/constants/request.ts","../src/types/client.ts","../src/types/engine.ts","../src/controllers/engine.ts","../src/utils/notifications.ts","../src/utils/pay.ts","../src/client.ts","../src/index.ts"],"sourcesContent":["// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n  ? R.apply\n  : function ReflectApply(target, receiver, args) {\n    return Function.prototype.apply.call(target, receiver, args);\n  }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n  ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target)\n      .concat(Object.getOwnPropertySymbols(target));\n  };\n} else {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target);\n  };\n}\n\nfunction ProcessEmitWarning(warning) {\n  if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n  return value !== value;\n}\n\nfunction EventEmitter() {\n  EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n  if (typeof listener !== 'function') {\n    throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n  }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n  enumerable: true,\n  get: function() {\n    return defaultMaxListeners;\n  },\n  set: function(arg) {\n    if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n      throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n    }\n    defaultMaxListeners = arg;\n  }\n});\n\nEventEmitter.init = function() {\n\n  if (this._events === undefined ||\n      this._events === Object.getPrototypeOf(this)._events) {\n    this._events = Object.create(null);\n    this._eventsCount = 0;\n  }\n\n  this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n  if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n    throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n  }\n  this._maxListeners = n;\n  return this;\n};\n\nfunction _getMaxListeners(that) {\n  if (that._maxListeners === undefined)\n    return EventEmitter.defaultMaxListeners;\n  return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n  return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n  var args = [];\n  for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n  var doError = (type === 'error');\n\n  var events = this._events;\n  if (events !== undefined)\n    doError = (doError && events.error === undefined);\n  else if (!doError)\n    return false;\n\n  // If there is no 'error' event listener then throw.\n  if (doError) {\n    var er;\n    if (args.length > 0)\n      er = args[0];\n    if (er instanceof Error) {\n      // Note: The comments on the `throw` lines are intentional, they show\n      // up in Node's output if this results in an unhandled exception.\n      throw er; // Unhandled 'error' event\n    }\n    // At least give some kind of context to the user\n    var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n    err.context = er;\n    throw err; // Unhandled 'error' event\n  }\n\n  var handler = events[type];\n\n  if (handler === undefined)\n    return false;\n\n  if (typeof handler === 'function') {\n    ReflectApply(handler, this, args);\n  } else {\n    var len = handler.length;\n    var listeners = arrayClone(handler, len);\n    for (var i = 0; i < len; ++i)\n      ReflectApply(listeners[i], this, args);\n  }\n\n  return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n  var m;\n  var events;\n  var existing;\n\n  checkListener(listener);\n\n  events = target._events;\n  if (events === undefined) {\n    events = target._events = Object.create(null);\n    target._eventsCount = 0;\n  } else {\n    // To avoid recursion in the case that type === \"newListener\"! Before\n    // adding it to the listeners, first emit \"newListener\".\n    if (events.newListener !== undefined) {\n      target.emit('newListener', type,\n                  listener.listener ? listener.listener : listener);\n\n      // Re-assign `events` because a newListener handler could have caused the\n      // this._events to be assigned to a new object\n      events = target._events;\n    }\n    existing = events[type];\n  }\n\n  if (existing === undefined) {\n    // Optimize the case of one listener. Don't need the extra array object.\n    existing = events[type] = listener;\n    ++target._eventsCount;\n  } else {\n    if (typeof existing === 'function') {\n      // Adding the second element, need to change to array.\n      existing = events[type] =\n        prepend ? [listener, existing] : [existing, listener];\n      // If we've already got an array, just append.\n    } else if (prepend) {\n      existing.unshift(listener);\n    } else {\n      existing.push(listener);\n    }\n\n    // Check for listener leak\n    m = _getMaxListeners(target);\n    if (m > 0 && existing.length > m && !existing.warned) {\n      existing.warned = true;\n      // No error code for this since it is a Warning\n      // eslint-disable-next-line no-restricted-syntax\n      var w = new Error('Possible EventEmitter memory leak detected. ' +\n                          existing.length + ' ' + String(type) + ' listeners ' +\n                          'added. Use emitter.setMaxListeners() to ' +\n                          'increase limit');\n      w.name = 'MaxListenersExceededWarning';\n      w.emitter = target;\n      w.type = type;\n      w.count = existing.length;\n      ProcessEmitWarning(w);\n    }\n  }\n\n  return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n  return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n    function prependListener(type, listener) {\n      return _addListener(this, type, listener, true);\n    };\n\nfunction onceWrapper() {\n  if (!this.fired) {\n    this.target.removeListener(this.type, this.wrapFn);\n    this.fired = true;\n    if (arguments.length === 0)\n      return this.listener.call(this.target);\n    return this.listener.apply(this.target, arguments);\n  }\n}\n\nfunction _onceWrap(target, type, listener) {\n  var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n  var wrapped = onceWrapper.bind(state);\n  wrapped.listener = listener;\n  state.wrapFn = wrapped;\n  return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n  checkListener(listener);\n  this.on(type, _onceWrap(this, type, listener));\n  return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n    function prependOnceListener(type, listener) {\n      checkListener(listener);\n      this.prependListener(type, _onceWrap(this, type, listener));\n      return this;\n    };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n    function removeListener(type, listener) {\n      var list, events, position, i, originalListener;\n\n      checkListener(listener);\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      list = events[type];\n      if (list === undefined)\n        return this;\n\n      if (list === listener || list.listener === listener) {\n        if (--this._eventsCount === 0)\n          this._events = Object.create(null);\n        else {\n          delete events[type];\n          if (events.removeListener)\n            this.emit('removeListener', type, list.listener || listener);\n        }\n      } else if (typeof list !== 'function') {\n        position = -1;\n\n        for (i = list.length - 1; i >= 0; i--) {\n          if (list[i] === listener || list[i].listener === listener) {\n            originalListener = list[i].listener;\n            position = i;\n            break;\n          }\n        }\n\n        if (position < 0)\n          return this;\n\n        if (position === 0)\n          list.shift();\n        else {\n          spliceOne(list, position);\n        }\n\n        if (list.length === 1)\n          events[type] = list[0];\n\n        if (events.removeListener !== undefined)\n          this.emit('removeListener', type, originalListener || listener);\n      }\n\n      return this;\n    };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n    function removeAllListeners(type) {\n      var listeners, events, i;\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      // not listening for removeListener, no need to emit\n      if (events.removeListener === undefined) {\n        if (arguments.length === 0) {\n          this._events = Object.create(null);\n          this._eventsCount = 0;\n        } else if (events[type] !== undefined) {\n          if (--this._eventsCount === 0)\n            this._events = Object.create(null);\n          else\n            delete events[type];\n        }\n        return this;\n      }\n\n      // emit removeListener for all listeners on all events\n      if (arguments.length === 0) {\n        var keys = Object.keys(events);\n        var key;\n        for (i = 0; i < keys.length; ++i) {\n          key = keys[i];\n          if (key === 'removeListener') continue;\n          this.removeAllListeners(key);\n        }\n        this.removeAllListeners('removeListener');\n        this._events = Object.create(null);\n        this._eventsCount = 0;\n        return this;\n      }\n\n      listeners = events[type];\n\n      if (typeof listeners === 'function') {\n        this.removeListener(type, listeners);\n      } else if (listeners !== undefined) {\n        // LIFO order\n        for (i = listeners.length - 1; i >= 0; i--) {\n          this.removeListener(type, listeners[i]);\n        }\n      }\n\n      return this;\n    };\n\nfunction _listeners(target, type, unwrap) {\n  var events = target._events;\n\n  if (events === undefined)\n    return [];\n\n  var evlistener = events[type];\n  if (evlistener === undefined)\n    return [];\n\n  if (typeof evlistener === 'function')\n    return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n  return unwrap ?\n    unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n  return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n  return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n  if (typeof emitter.listenerCount === 'function') {\n    return emitter.listenerCount(type);\n  } else {\n    return listenerCount.call(emitter, type);\n  }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n  var events = this._events;\n\n  if (events !== undefined) {\n    var evlistener = events[type];\n\n    if (typeof evlistener === 'function') {\n      return 1;\n    } else if (evlistener !== undefined) {\n      return evlistener.length;\n    }\n  }\n\n  return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n  return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n  var copy = new Array(n);\n  for (var i = 0; i < n; ++i)\n    copy[i] = arr[i];\n  return copy;\n}\n\nfunction spliceOne(list, index) {\n  for (; index + 1 < list.length; index++)\n    list[index] = list[index + 1];\n  list.pop();\n}\n\nfunction unwrapListeners(arr) {\n  var ret = new Array(arr.length);\n  for (var i = 0; i < ret.length; ++i) {\n    ret[i] = arr[i].listener || arr[i];\n  }\n  return ret;\n}\n\nfunction once(emitter, name) {\n  return new Promise(function (resolve, reject) {\n    function errorListener(err) {\n      emitter.removeListener(name, resolver);\n      reject(err);\n    }\n\n    function resolver() {\n      if (typeof emitter.removeListener === 'function') {\n        emitter.removeListener('error', errorListener);\n      }\n      resolve([].slice.call(arguments));\n    };\n\n    eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n    if (name !== 'error') {\n      addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n    }\n  });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n  if (typeof emitter.on === 'function') {\n    eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n  }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n  if (typeof emitter.on === 'function') {\n    if (flags.once) {\n      emitter.once(name, listener);\n    } else {\n      emitter.on(name, listener);\n    }\n  } else if (typeof emitter.addEventListener === 'function') {\n    // EventTarget does not have `error` event semantics like Node\n    // EventEmitters, we do not listen for `error` events here.\n    emitter.addEventListener(name, function wrapListener(arg) {\n      // IE does not have builtin `{ once: true }` support so we\n      // have to do it manually.\n      if (flags.once) {\n        emitter.removeEventListener(name, wrapListener);\n      }\n      listener(arg);\n    });\n  } else {\n    throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n  }\n}\n","export const PROTOCOL = \"wc\";\nexport const PROTOCOL_VERSION = 2;\nexport const CLIENT_CONTEXT = \"WalletKit\";\n\nexport const CLIENT_STORAGE_PREFIX = `${PROTOCOL}@${PROTOCOL_VERSION}:${CLIENT_CONTEXT}:`;\n\nexport const CLIENT_STORAGE_OPTIONS = {\n  database: \":memory:\",\n};\n","export const REQUEST_CONTEXT = \"request\";\n","import EventEmmiter, { EventEmitter } from \"events\";\nimport { ICore, CoreTypes, SignClientTypes } from \"@walletconnect/types\";\nimport { Logger } from \"@walletconnect/logger\";\nimport { JsonRpcPayload } from \"@walletconnect/jsonrpc-utils\";\nimport { IWalletKitEngine } from \"./engine.js\";\nimport { IWalletKitPay, PayOptions } from \"./pay.js\";\n\nexport declare namespace WalletKitTypes {\n  type Event =\n    | \"session_proposal\"\n    | \"session_request\"\n    | \"session_delete\"\n    | \"proposal_expire\"\n    | \"session_request_expire\"\n    | \"session_authenticate\";\n\n  interface BaseEventArgs<T = unknown> {\n    id: number;\n    topic: string;\n    params: T;\n  }\n\n  type SessionRequest = SignClientTypes.EventArguments[\"session_request\"];\n\n  type SessionProposal = SignClientTypes.EventArguments[\"session_proposal\"];\n\n  type SessionDelete = Omit<BaseEventArgs, \"params\">;\n\n  type ProposalExpire = { id: number };\n\n  type SessionRequestExpire = { id: number };\n\n  type SessionAuthenticate = SignClientTypes.EventArguments[\"session_authenticate\"];\n\n  type SignConfig = SignClientTypes.Options[\"signConfig\"];\n\n  interface EventArguments {\n    session_proposal: SessionProposal;\n    session_request: SessionRequest;\n    session_delete: Omit<BaseEventArgs, \"params\">;\n    proposal_expire: ProposalExpire;\n    session_request_expire: SessionRequestExpire;\n    session_authenticate: SessionAuthenticate;\n  }\n\n  interface Options {\n    core: ICore;\n    metadata: Metadata;\n    name?: string;\n    signConfig?: SignConfig;\n    payConfig?: PayOptions;\n  }\n\n  type Metadata = CoreTypes.Metadata;\n\n  interface INotifications {\n    decryptMessage: (params: {\n      topic: string;\n      encryptedMessage: string;\n      storageOptions?: CoreTypes.Options[\"storageOptions\"];\n      storage?: CoreTypes.Options[\"storage\"];\n      customStoragePrefix?: CoreTypes.Options[\"customStoragePrefix\"];\n    }) => Promise<JsonRpcPayload>;\n    getMetadata: (params: {\n      topic: string;\n      storageOptions?: CoreTypes.Options[\"storageOptions\"];\n      storage?: CoreTypes.Options[\"storage\"];\n      customStoragePrefix?: CoreTypes.Options[\"customStoragePrefix\"];\n    }) => Promise<CoreTypes.Metadata>;\n  }\n}\n\nexport abstract class IWalletKitEvents extends EventEmmiter {\n  constructor() {\n    super();\n  }\n\n  public abstract emit: <E extends WalletKitTypes.Event>(\n    event: E,\n    args: WalletKitTypes.EventArguments[E],\n  ) => boolean;\n\n  public abstract on: <E extends WalletKitTypes.Event>(\n    event: E,\n    listener: (args: WalletKitTypes.EventArguments[E]) => any,\n  ) => this;\n\n  public abstract once: <E extends WalletKitTypes.Event>(\n    event: E,\n    listener: (args: WalletKitTypes.EventArguments[E]) => any,\n  ) => this;\n\n  public abstract off: <E extends WalletKitTypes.Event>(\n    event: E,\n    listener: (args: WalletKitTypes.EventArguments[E]) => any,\n  ) => this;\n\n  public abstract removeListener: <E extends WalletKitTypes.Event>(\n    event: E,\n    listener: (args: WalletKitTypes.EventArguments[E]) => any,\n  ) => this;\n}\n\nexport abstract class IWalletKit {\n  public abstract readonly name: string;\n  public abstract engine: IWalletKitEngine;\n  public abstract events: EventEmitter;\n  public abstract logger: Logger;\n  public abstract core: ICore;\n  public abstract metadata: WalletKitTypes.Metadata;\n  public abstract signConfig?: WalletKitTypes.SignConfig;\n  public abstract pay: IWalletKitPay;\n\n  constructor(public opts: WalletKitTypes.Options) {}\n\n  // ---------- Public Methods ----------------------------------------------- //\n\n  public abstract pair: IWalletKitEngine[\"pair\"];\n\n  // sign //\n  public abstract approveSession: IWalletKitEngine[\"approveSession\"];\n  public abstract rejectSession: IWalletKitEngine[\"rejectSession\"];\n  public abstract updateSession: IWalletKitEngine[\"updateSession\"];\n  public abstract extendSession: IWalletKitEngine[\"extendSession\"];\n  public abstract respondSessionRequest: IWalletKitEngine[\"respondSessionRequest\"];\n  public abstract disconnectSession: IWalletKitEngine[\"disconnectSession\"];\n  public abstract emitSessionEvent: IWalletKitEngine[\"emitSessionEvent\"];\n  public abstract getActiveSessions: IWalletKitEngine[\"getActiveSessions\"];\n  public abstract getPendingSessionProposals: IWalletKitEngine[\"getPendingSessionProposals\"];\n  public abstract getPendingSessionRequests: IWalletKitEngine[\"getPendingSessionRequests\"];\n  // push\n  public abstract registerDeviceToken: IWalletKitEngine[\"registerDeviceToken\"];\n  // multi chain auth //\n  public abstract approveSessionAuthenticate: IWalletKitEngine[\"approveSessionAuthenticate\"];\n  public abstract formatAuthMessage: IWalletKitEngine[\"formatAuthMessage\"];\n  public abstract rejectSessionAuthenticate: IWalletKitEngine[\"rejectSessionAuthenticate\"];\n\n  // ---------- Event Handlers ----------------------------------------------- //\n  public abstract on: <E extends WalletKitTypes.Event>(\n    event: E,\n    listener: (args: WalletKitTypes.EventArguments[E]) => void,\n  ) => EventEmitter;\n\n  public abstract once: <E extends WalletKitTypes.Event>(\n    event: E,\n    listener: (args: WalletKitTypes.EventArguments[E]) => void,\n  ) => EventEmitter;\n\n  public abstract off: <E extends WalletKitTypes.Event>(\n    event: E,\n    listener: (args: WalletKitTypes.EventArguments[E]) => void,\n  ) => EventEmitter;\n\n  public abstract removeListener: <E extends WalletKitTypes.Event>(\n    event: E,\n    listener: (args: WalletKitTypes.EventArguments[E]) => void,\n  ) => EventEmitter;\n}\n","import EventEmitter from \"events\";\nimport { ErrorResponse, JsonRpcResponse } from \"@walletconnect/jsonrpc-utils\";\nimport {\n  ISignClient,\n  PendingRequestTypes,\n  ProposalTypes,\n  SessionTypes,\n  EchoClientTypes,\n  AuthTypes,\n  EngineTypes,\n} from \"@walletconnect/types\";\nimport { IWalletKit, WalletKitTypes } from \"./client.js\";\n\nexport abstract class IWalletKitEngine {\n  public abstract signClient: ISignClient;\n\n  constructor(public client: IWalletKit) {}\n  // ---------- Public Methods ------------------------------------------------- //\n  public abstract init(): Promise<void>;\n\n  public abstract pair(params: { uri: string; activatePairing?: boolean }): Promise<void>;\n\n  // ---------- Sign ------------------------------------------------- //\n  // approve a session proposal (SIGN)\n  public abstract approveSession(params: {\n    id: number;\n    namespaces: Record<string, SessionTypes.Namespace>;\n    sessionProperties?: ProposalTypes.SessionProperties;\n    scopedProperties?: ProposalTypes.ScopedProperties;\n    sessionConfig?: SessionTypes.SessionConfig;\n    relayProtocol?: string;\n    proposalRequestsResponses?: EngineTypes.ApproveParams[\"proposalRequestsResponses\"];\n  }): Promise<SessionTypes.Struct>;\n\n  // reject a session proposal (SIGN)\n  public abstract rejectSession(params: {\n    // proposerPublicKey: string;\n    id: number;\n    reason: ErrorResponse;\n  }): Promise<void>;\n\n  // update session namespaces (SIGN)\n  public abstract updateSession(params: {\n    topic: string;\n    namespaces: SessionTypes.Namespaces;\n  }): Promise<{ acknowledged: () => Promise<void> }>;\n\n  // update session expiry (SIGN)\n  public abstract extendSession(params: {\n    topic: string;\n  }): Promise<{ acknowledged: () => Promise<void> }>;\n\n  // respond JSON-RPC request (SIGN)\n  public abstract respondSessionRequest(params: {\n    topic: string;\n    response: JsonRpcResponse;\n  }): Promise<void>;\n\n  // emit session events (SIGN)\n  public abstract emitSessionEvent(params: {\n    topic: string;\n    event: any; //SessionEvent;\n    chainId: string;\n  }): Promise<void>;\n\n  // disconnect a session (SIGN)\n  public abstract disconnectSession(params: {\n    topic: string;\n    reason: ErrorResponse;\n  }): Promise<void>;\n\n  // query all active sessions (SIGN)\n  public abstract getActiveSessions(): Record<string, SessionTypes.Struct>;\n\n  // query all pending session requests (SIGN)\n  public abstract getPendingSessionProposals(): Record<number, ProposalTypes.Struct>;\n\n  // query all pending session requests (SIGN)\n  public abstract getPendingSessionRequests(): PendingRequestTypes.Struct[];\n\n  // ---------- Multi chain Auth ------------------------------------------------- //\n\n  public abstract approveSessionAuthenticate(\n    params: AuthTypes.ApproveSessionAuthenticateParams,\n  ): Promise<{ session: SessionTypes.Struct | undefined }>;\n\n  public abstract formatAuthMessage: (params: {\n    request: AuthTypes.BaseAuthRequestParams;\n    iss: string;\n  }) => string;\n\n  public abstract rejectSessionAuthenticate(params: {\n    id: number;\n    reason: ErrorResponse;\n  }): Promise<void>;\n\n  // ---------- Push ------------------------------------------------- //\n  public abstract registerDeviceToken(\n    params: EchoClientTypes.RegisterDeviceTokenParams,\n  ): Promise<void>;\n\n  // ---------- Event Handlers ----------------------------------------------- //\n  public abstract on: <E extends WalletKitTypes.Event>(\n    event: E,\n    listener: (args: WalletKitTypes.EventArguments[E]) => void,\n  ) => EventEmitter;\n\n  public abstract once: <E extends WalletKitTypes.Event>(\n    event: E,\n    listener: (args: WalletKitTypes.EventArguments[E]) => void,\n  ) => EventEmitter;\n\n  public abstract off: <E extends WalletKitTypes.Event>(\n    event: E,\n    listener: (args: WalletKitTypes.EventArguments[E]) => void,\n  ) => EventEmitter;\n\n  public abstract removeListener: <E extends WalletKitTypes.Event>(\n    event: E,\n    listener: (args: WalletKitTypes.EventArguments[E]) => void,\n  ) => EventEmitter;\n}\n","import { SignClient } from \"@walletconnect/sign-client\";\nimport { ISignClient, SessionTypes } from \"@walletconnect/types\";\nimport { IWalletKitEngine, WalletKitTypes } from \"../types/index.js\";\n\nexport class Engine extends IWalletKitEngine {\n  public signClient: ISignClient;\n\n  constructor(client: IWalletKitEngine[\"client\"]) {\n    super(client);\n    // initialized in init()\n    this.signClient = {} as any;\n  }\n\n  public init = async () => {\n    this.signClient = await SignClient.init({\n      core: this.client.core,\n      metadata: this.client.metadata,\n      signConfig: this.client.signConfig,\n    });\n    this.signClient.core.eventClient.init().catch((error) => {\n      this.client.logger.warn(error);\n    });\n  };\n\n  public pair: IWalletKitEngine[\"pair\"] = async (params) => {\n    await this.client.core.pairing.pair(params);\n  };\n\n  // Sign //\n  public approveSession: IWalletKitEngine[\"approveSession\"] = async (sessionProposal) => {\n    const { topic, acknowledged } = await this.signClient.approve({\n      ...sessionProposal,\n      id: sessionProposal.id,\n      namespaces: sessionProposal.namespaces,\n      sessionProperties: sessionProposal.sessionProperties,\n      scopedProperties: sessionProposal.scopedProperties,\n      sessionConfig: sessionProposal.sessionConfig,\n      proposalRequestsResponses: sessionProposal?.proposalRequestsResponses,\n    });\n    await acknowledged();\n    return this.signClient.session.get(topic);\n  };\n\n  public rejectSession: IWalletKitEngine[\"rejectSession\"] = async (params) => {\n    return await this.signClient.reject(params);\n  };\n\n  public updateSession: IWalletKitEngine[\"updateSession\"] = async (params) => {\n    return await this.signClient.update(params);\n  };\n\n  public extendSession: IWalletKitEngine[\"extendSession\"] = async (params) => {\n    return await this.signClient.extend(params);\n  };\n\n  public respondSessionRequest: IWalletKitEngine[\"respondSessionRequest\"] = async (params) => {\n    const result = await this.signClient.respond(params);\n    return result;\n  };\n\n  public disconnectSession: IWalletKitEngine[\"disconnectSession\"] = async (params) => {\n    return await this.signClient.disconnect(params);\n  };\n\n  public emitSessionEvent: IWalletKitEngine[\"emitSessionEvent\"] = async (params) => {\n    return await this.signClient.emit(params);\n  };\n\n  public getActiveSessions: IWalletKitEngine[\"getActiveSessions\"] = () => {\n    const sessions = this.signClient.session.getAll();\n    return sessions.reduce((sessions: Record<string, SessionTypes.Struct>, session) => {\n      sessions[session.topic] = session;\n      return sessions;\n    }, {});\n  };\n\n  public getPendingSessionProposals: IWalletKitEngine[\"getPendingSessionProposals\"] = () => {\n    return this.signClient.proposal.getAll();\n  };\n\n  public getPendingSessionRequests: IWalletKitEngine[\"getPendingSessionRequests\"] = () => {\n    return this.signClient.getPendingSessionRequests();\n  };\n\n  // Multi chain Auth //\n  public approveSessionAuthenticate: IWalletKitEngine[\"approveSessionAuthenticate\"] = async (\n    params,\n  ) => {\n    return await this.signClient.approveSessionAuthenticate(params);\n  };\n\n  public rejectSessionAuthenticate: IWalletKitEngine[\"rejectSessionAuthenticate\"] = async (\n    params,\n  ) => {\n    return await this.signClient.rejectSessionAuthenticate(params);\n  };\n\n  public formatAuthMessage: IWalletKitEngine[\"formatAuthMessage\"] = (params) => {\n    return this.signClient.formatAuthMessage(params);\n  };\n\n  // Push //\n  public registerDeviceToken: IWalletKitEngine[\"registerDeviceToken\"] = (params) => {\n    return this.client.core.echoClient.registerDeviceToken(params);\n  };\n\n  // ---------- public events ----------------------------------------------- //\n  public on: IWalletKitEngine[\"on\"] = (name, listener) => {\n    this.setEvent(name, \"off\");\n    this.setEvent(name, \"on\");\n    return this.client.events.on(name, listener);\n  };\n\n  public once: IWalletKitEngine[\"once\"] = (name, listener) => {\n    this.setEvent(name, \"off\");\n    this.setEvent(name, \"once\");\n    return this.client.events.once(name, listener);\n  };\n\n  public off: IWalletKitEngine[\"off\"] = (name, listener) => {\n    this.setEvent(name, \"off\");\n    return this.client.events.off(name, listener);\n  };\n\n  public removeListener: IWalletKitEngine[\"removeListener\"] = (name, listener) => {\n    this.setEvent(name, \"removeListener\");\n    return this.client.events.removeListener(name, listener);\n  };\n\n  // ---------- Private ----------------------------------------------- //\n\n  private onSessionRequest = (event: WalletKitTypes.SessionRequest) => {\n    this.client.events.emit(\"session_request\", event);\n  };\n\n  private onSessionProposal = (event: WalletKitTypes.SessionProposal) => {\n    this.client.events.emit(\"session_proposal\", event);\n  };\n\n  private onSessionDelete = (event: WalletKitTypes.SessionDelete) => {\n    this.client.events.emit(\"session_delete\", event);\n  };\n\n  private onProposalExpire = (event: WalletKitTypes.ProposalExpire) => {\n    this.client.events.emit(\"proposal_expire\", event);\n  };\n\n  private onSessionRequestExpire = (event: WalletKitTypes.SessionRequestExpire) => {\n    this.client.events.emit(\"session_request_expire\", event);\n  };\n\n  private onSessionRequestAuthenticate = (event: WalletKitTypes.SessionAuthenticate) => {\n    this.client.events.emit(\"session_authenticate\", event);\n  };\n\n  private setEvent = (\n    event: WalletKitTypes.Event,\n    action: \"on\" | \"off\" | \"once\" | \"removeListener\",\n  ) => {\n    switch (event) {\n      case \"session_request\":\n        this.signClient.events[action](\"session_request\", this.onSessionRequest);\n        break;\n      case \"session_proposal\":\n        this.signClient.events[action](\"session_proposal\", this.onSessionProposal);\n        break;\n      case \"session_delete\":\n        this.signClient.events[action](\"session_delete\", this.onSessionDelete);\n        break;\n      case \"proposal_expire\":\n        this.signClient.events[action](\"proposal_expire\", this.onProposalExpire);\n        break;\n      case \"session_request_expire\":\n        this.signClient.events[action](\"session_request_expire\", this.onSessionRequestExpire);\n        break;\n      case \"session_authenticate\":\n        this.signClient.events[action](\"session_authenticate\", this.onSessionRequestAuthenticate);\n        break;\n    }\n  };\n}\n","import { Core } from \"@walletconnect/core\";\nimport { SessionStore } from \"@walletconnect/sign-client\";\nimport { WalletKitTypes } from \"../types/index.js\";\n\nexport const Notifications: WalletKitTypes.INotifications = {\n  decryptMessage: async (params) => {\n    const instance = {\n      core: new Core({\n        storageOptions: params.storageOptions,\n        storage: params.storage,\n        customStoragePrefix: params.customStoragePrefix,\n      }),\n    } as any;\n    await instance.core.crypto.init();\n    const decoded = instance.core.crypto.decode(params.topic, params.encryptedMessage);\n    instance.core = null;\n    return decoded;\n  },\n  getMetadata: async (params) => {\n    const instances = {\n      core: new Core({\n        storageOptions: params.storageOptions,\n        storage: params.storage,\n        customStoragePrefix: params.customStoragePrefix,\n      }),\n      sessionStore: null,\n    } as any;\n    instances.sessionStore = new SessionStore(instances.core, instances.core.logger);\n    await instances.sessionStore.init();\n    const session = instances.sessionStore.get(params.topic);\n    const metadata = session?.peer.metadata;\n    instances.core = null;\n    instances.sessionStore = null;\n    return metadata;\n  },\n};\n","export function isPaymentLink(uri: string): boolean {\n  const lower = uri.toLowerCase();\n  return (\n    lower.includes(\"pay.\") ||\n    lower.includes(\"pay=\") ||\n    lower.includes(\"pay_\") ||\n    lower.includes(\"pay%2e\") || // encoded \"pay.\"\n    lower.includes(\"pay%3d\") || // encoded \"pay=\"\n    lower.includes(\"pay%5f\") // encoded \"pay_\"\n  );\n}\n","import EventEmitter from \"events\";\nimport { WalletConnectPay } from \"@walletconnect/pay\";\nimport { CLIENT_CONTEXT } from \"./constants/index.js\";\nimport { Engine } from \"./controllers/index.js\";\nimport { IWalletKit, WalletKitTypes, IWalletKitPay } from \"./types/index.js\";\nimport { Notifications } from \"./utils/index.js\";\n\nexport class WalletKit extends IWalletKit {\n  public name: IWalletKit[\"name\"];\n  public core: IWalletKit[\"core\"];\n  public logger: IWalletKit[\"logger\"];\n  public events: IWalletKit[\"events\"] = new EventEmitter();\n  public engine: IWalletKit[\"engine\"];\n  public metadata: IWalletKit[\"metadata\"];\n  public static notifications: WalletKitTypes.INotifications = Notifications;\n  public signConfig: IWalletKit[\"signConfig\"];\n  public pay: IWalletKitPay;\n\n  static async init(opts: WalletKitTypes.Options) {\n    const client = new WalletKit(opts);\n    await client.initialize();\n\n    return client;\n  }\n\n  constructor(opts: WalletKitTypes.Options) {\n    super(opts);\n    this.metadata = opts.metadata;\n    this.name = opts.name || CLIENT_CONTEXT;\n    this.signConfig = opts.signConfig;\n    this.core = opts.core;\n    this.logger = this.core.logger;\n    this.engine = new Engine(this);\n    // initialized in initialize()\n    this.pay = undefined as unknown as IWalletKitPay;\n  }\n\n  // ---------- Events ----------------------------------------------- //\n\n  public on: IWalletKit[\"on\"] = (name, listener) => {\n    return this.engine.on(name, listener);\n  };\n\n  public once: IWalletKit[\"once\"] = (name, listener) => {\n    return this.engine.once(name, listener);\n  };\n\n  public off: IWalletKit[\"off\"] = (name, listener) => {\n    return this.engine.off(name, listener);\n  };\n\n  public removeListener: IWalletKit[\"removeListener\"] = (name, listener) => {\n    return this.engine.removeListener(name, listener);\n  };\n\n  // ---------- Engine ----------------------------------------------- //\n\n  public pair: IWalletKit[\"pair\"] = async (params) => {\n    try {\n      return await this.engine.pair(params);\n    } catch (error: any) {\n      this.logger.error(error.message);\n      throw error;\n    }\n  };\n\n  public approveSession: IWalletKit[\"approveSession\"] = async (params) => {\n    try {\n      return await this.engine.approveSession(params);\n    } catch (error: any) {\n      this.logger.error(error.message);\n      throw error;\n    }\n  };\n\n  public rejectSession: IWalletKit[\"rejectSession\"] = async (params) => {\n    try {\n      return await this.engine.rejectSession(params);\n    } catch (error: any) {\n      this.logger.error(error.message);\n      throw error;\n    }\n  };\n\n  public updateSession: IWalletKit[\"updateSession\"] = async (params) => {\n    try {\n      return await this.engine.updateSession(params);\n    } catch (error: any) {\n      this.logger.error(error.message);\n      throw error;\n    }\n  };\n\n  public extendSession: IWalletKit[\"extendSession\"] = async (params) => {\n    try {\n      return await this.engine.extendSession(params);\n    } catch (error: any) {\n      this.logger.error(error.message);\n      throw error;\n    }\n  };\n\n  public respondSessionRequest: IWalletKit[\"respondSessionRequest\"] = async (params) => {\n    try {\n      return await this.engine.respondSessionRequest(params);\n    } catch (error: any) {\n      this.logger.error(error.message);\n      throw error;\n    }\n  };\n\n  public disconnectSession: IWalletKit[\"disconnectSession\"] = async (params) => {\n    try {\n      return await this.engine.disconnectSession(params);\n    } catch (error: any) {\n      this.logger.error(error.message);\n      throw error;\n    }\n  };\n\n  public emitSessionEvent: IWalletKit[\"emitSessionEvent\"] = async (params) => {\n    try {\n      return await this.engine.emitSessionEvent(params);\n    } catch (error: any) {\n      this.logger.error(error.message);\n      throw error;\n    }\n  };\n\n  public getActiveSessions: IWalletKit[\"getActiveSessions\"] = () => {\n    try {\n      return this.engine.getActiveSessions();\n    } catch (error: any) {\n      this.logger.error(error.message);\n      throw error;\n    }\n  };\n\n  public getPendingSessionProposals: IWalletKit[\"getPendingSessionProposals\"] = () => {\n    try {\n      return this.engine.getPendingSessionProposals();\n    } catch (error: any) {\n      this.logger.error(error.message);\n      throw error;\n    }\n  };\n\n  public getPendingSessionRequests: IWalletKit[\"getPendingSessionRequests\"] = () => {\n    try {\n      return this.engine.getPendingSessionRequests();\n    } catch (error: any) {\n      this.logger.error(error.message);\n      throw error;\n    }\n  };\n\n  public registerDeviceToken: IWalletKit[\"registerDeviceToken\"] = (params) => {\n    try {\n      return this.engine.registerDeviceToken(params);\n    } catch (error: any) {\n      this.logger.error(error.message);\n      throw error;\n    }\n  };\n\n  public approveSessionAuthenticate: IWalletKit[\"approveSessionAuthenticate\"] = (params) => {\n    try {\n      return this.engine.approveSessionAuthenticate(params);\n    } catch (error: any) {\n      this.logger.error(error.message);\n      throw error;\n    }\n  };\n\n  public rejectSessionAuthenticate: IWalletKit[\"rejectSessionAuthenticate\"] = (params) => {\n    try {\n      return this.engine.rejectSessionAuthenticate(params);\n    } catch (error: any) {\n      this.logger.error(error.message);\n      throw error;\n    }\n  };\n\n  public formatAuthMessage: IWalletKit[\"formatAuthMessage\"] = (params) => {\n    try {\n      return this.engine.formatAuthMessage(params);\n    } catch (error: any) {\n      this.logger.error(error.message);\n      throw error;\n    }\n  };\n\n  // ---------- Private ----------------------------------------------- //\n\n  private async initialize() {\n    this.logger.trace(`Initialized`);\n    try {\n      await this.engine.init();\n      if (WalletConnectPay.isAvailable()) {\n        this.pay = new WalletConnectPay({\n          clientId: await this.core.crypto.getClientId(),\n          appId: this.core.projectId,\n          ...(this.opts.payConfig || {}),\n        });\n      }\n      this.logger.info(`WalletKit Initialization Success`);\n    } catch (error: any) {\n      this.logger.info(`WalletKit Initialization Failure`);\n      this.logger.error(error.message);\n      throw error;\n    }\n  }\n}\n","import { WalletKit as Client } from \"./client.js\";\n\nexport * from \"./constants/index.js\";\nexport * from \"./types/index.js\";\nexport { isPaymentLink } from \"./utils/index.js\";\n\nexport const WalletKit = Client;\nexport default Client;\n"],"names":["eventsModule","events","EventEmmiter","opts","client","p","g","h","l","a","IWalletKitEngine","__publicField","SignClient","error","params","sessionProposal","topic","acknowledged","__spreadProps","__spreadValues","sessions","session","name","listener","event","action","instance","Core","decoded","instances","SessionStore","metadata","uri","lower","_WalletKit","IWalletKit","EventEmitter","CLIENT_CONTEXT","Engine","WalletConnectPay","Notifications","WalletKit","Client"],"mappings":"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"}