{"version":3,"sources":["../src/auth.ts","../src/errors.ts","../src/asigna.ts","../src/providers.ts","../src/utils.ts","../src/profile/index.ts","../src/signature/index.ts","../src/signature/structuredData.ts","../src/transactions/index.ts","../src/ui.ts","../src/storage.ts","../src/walletconnect/index.ts","../src/walletconnect/config.ts","../src/request.ts","../src/types/transactions.ts","../src/types/bitcoin.ts","../src/bitcoin/psbt.ts"],"names":["JsonRpcError","_JsonRpcError","message","code","data","cause","error","JsonRpcErrorCode","source","generateCall","payload","key","res","listener","generateAsignaMessage","AsignaIframeProvider","method","options","initializeAsignaProvider","DEFAULT_PROVIDERS","WALLET_CONNECT_PROVIDER","getStacksProvider","getProviderFromId","getSelectedProviderId","isStacksWalletInstalled","legacyNetworkFromConnectNetwork","network","LegacyStacksNetwork","LegacyStacksMainnet","TransactionVersion","LegacyStacksTestnet","isInstance","object","clazz","_a","_b","connectNetworkToString","LegacyStacksDevnet","LegacyStacksMocknet","legacyCVToCV","cv","LegacyClarityType","Cl","k","v","Address","_exhaustiveCheck","removeUnserializableKeys","obj","__spreadProps","__spreadValues","getDefaultProfileUpdateRequestOptions","_options","makeProfileUpdateToken","METHOD","LEGACY_UPDATE_PROFILE_OPTIONS_MAP","LEGACY_UPDATE_PROFILE_RESPONSE_MAP","response","openProfileUpdateRequestPopup","provider","requestRawLegacy","getDefaultSignatureRequestOptions","signMessage","LEGACY_SIGN_MESSAGE_OPTIONS_MAP","LEGACY_SIGN_MESSAGE_RESPONSE_MAP","openSignatureRequestPopup","signStructuredMessage","LEGACY_SIGN_STRUCTURED_MESSAGE_OPTIONS_MAP","LEGACY_SIGN_STRUCTURED_MESSAGE_RESPONSE_MAP","openStructuredDataSignatureRequestPopup","getUserSession","_userSession","userSession","appConfig","AppConfig","UserSession","hasAppPrivateKey","e","getKeys","getStxAddress","stxAddress","_network","stxAddresses","chainIdToKey","ChainId","makeContractCallToken","makeContractDeployToken","makeSTXTransferToken","makeSignTransaction","METHOD_CALL_CONTRACT","LEGACY_CALL_CONTRACT_OPTIONS_MAP","functionArgs","arg","optPostConditionMode","optPostCondition","LEGACY_CALL_CONTRACT_RESPONSE_MAP","deserializeTransaction","openContractCall","METHOD_DEPLOY_CONTRACT","LEGACY_DEPLOY_CONTRACT_OPTIONS_MAP","LEGACY_DEPLOY_CONTRACT_RESPONSE_MAP","openContractDeploy","METHOD_TRANSFER_STX","LEGACY_TRANSFER_STX_OPTIONS_MAP","LEGACY_TRANSFER_STX_RESPONSE_MAP","openSTXTransfer","METHOD_SIGN_TRANSACTION","LEGACY_SIGN_TRANSACTION_OPTIONS_MAP","LEGACY_SIGN_TRANSACTION_RESPONSE_MAP","openSignTransaction","pcs","pc","bytesToHex","legacySerializePostCondition","mode","PostConditionMode","requestLegacy","mapOptions","mapResponse","params","o","request","r","showConnect","authenticate","showSTXTransfer","showContractCall","showContractDeploy","showSignTransaction","showProfileUpdate","showSignMessage","showSignStructuredMessage","showBlockstackConnect","LOCAL_STORAGE_KEY","INITIAL_STORAGE","normalizeAddresses","addresses","a","__objRest","setLocalStorageData","current","getLocalStorage","updated","utf8ToBytes","clearLocalStorage","hex","bytesToUtf8","hexToBytes","disconnect","getProvider","clearSelectedProviderId","isConnected","storage","walletconnect_exports","__export","Chains","Default","Networks","initializeWalletConnectProvider","stacksMethods","Stacks","Bitcoin","jsonRpcResponse","result","WalletConnectProvider","connector","appKit","resolve","reject","unsubscribe","state","session","_c","_d","stacksSessionAddressesString","stacksSessionAddresses","allAddresses","account","addr","btcSessionAddressesString","btcSessionAddresses","btcAddresses","b","stacksAddresses","namespaces","btcMethods","_e","_f","_g","_h","accountMethods","caipNetworkId","address","projectId","config","UniversalConnector","walletConnectProvider","requestRaw","createRequestWithStorage","enableLocalStorage","stx","btc","sortAddresses","acc","args","requestArgs","opts","shallowDefined","req","wrapResultOverrides","finalMethod","finalParams","getMethodOverrides","serializeParams","defineCustomElements","element","filterProviders","getInstalledProviders","originalOverflow","closeModal","selectedProviderId","selectedProvider","proxy","createPersistProviderProxy","handleEsc","ev","approvedProviderIds","providers","p","connect","isXverseLike","isXverse","isFordefi","isLeather","value","enableOverrides","modifiedResult","base64","paramsXverse","signInputs","signRecord","input","paramsLeather","i","POST_CONDITIONS","item","postConditionToHex","shouldPersist","providerId","setSelectedProviderId","aPayment","bPayment","defaultAuthURL","isMobile","ua","authOptions","onFinish","onCancel","getOrCreateUserSession","sessionData","isMainnet","btcAddress","isAddressTaproot","LOCALSTORAGE_SESSION_KEY","_scopes","_appDomain","_redirectPath","_manifestPath","_coreNode","_authenticatorURL","InstanceDataStore","LocalStorageStore","userData","NoSessionDataError","redirectURL","SessionDataStore","sessionOptions","_session","getUserData","PREFIXES","LENGTHS","index","TransactionTypes","ContractCallArgumentType","SignatureHash","getDefaultPsbtRequestOptions","makePsbtToken","LEGACY_SIGN_PSBT_OPTIONS_MAP","hash","LEGACY_SIGN_PSBT_RESPONSE_MAP","openPsbtRequestPopup"],"mappings":"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","file":"index.mjs","sourcesContent":["import { NoSessionDataError } from '@stacks/common';\nimport { request } from './request';\nimport { AuthOptions, StacksProvider } from './types';\n\n/** @deprecated Not used anymore. */\nexport const defaultAuthURL = 'https://app.blockstack.org';\n\nif (typeof window !== 'undefined') {\n  window.__CONNECT_VERSION__ = '__VERSION__'; // replaced via tsup esbuildOptions\n}\n\n/** @deprecated Will be marked as internal going forward. */\nexport const isMobile = () => {\n  const ua = navigator.userAgent;\n  if (/android/i.test(ua)) {\n    return true;\n  }\n  if (/iPad|iPhone|iPod/.test(ua)) {\n    return true;\n  }\n  return /windows phone/i.test(ua);\n};\n\n/**\n * Special `authenticate` legacy request, to store addresses in userSession matching legacy behavior.\n * @internal Legacy UI request.\n */\nexport const authenticate = async (authOptions: AuthOptions, provider?: StacksProvider) => {\n  const { onFinish, onCancel, userSession: _userSession } = authOptions;\n\n  const userSession = getOrCreateUserSession(_userSession);\n  if (userSession.isUserSignedIn()) userSession.signUserOut();\n\n  try {\n    const method = 'getAddresses';\n    const response = await request({ provider, forceWalletSelect: true }, method);\n\n    const sessionData = userSession.store.getSessionData();\n\n    // Ensure user data structure exists\n    sessionData.userData ??= { profile: {} };\n    sessionData.userData.profile ??= {};\n    sessionData.userData.profile.stxAddress ??= {\n      mainnet: '',\n      testnet: '',\n    };\n\n    // Take first STX address and use it for legacy connect user session storing.\n    const address = response.addresses\n      .find(a => a?.symbol === 'STX' || a.address.startsWith('S'))\n      .address.toUpperCase();\n    const isMainnet = address[1] === 'P' || address[1] === 'M';\n\n    Object.assign(sessionData.userData.profile.stxAddress, {\n      [isMainnet ? 'mainnet' : 'testnet']: address,\n    });\n\n    // Take first BTC address and use it for legacy connect user session storing.\n    const btcAddress = response.addresses.find(a => {\n      if (a?.address?.startsWith('S')) return false;\n      if (a['purpose'] === 'payment') return true;\n\n      // If it's taproot, only select it if no non-taproot addresses exist\n      if (isAddressTaproot(a?.address)) {\n        const onlyTaprootAddressesExist = response.addresses.every(\n          addr => addr?.address?.startsWith('S') || isAddressTaproot(addr?.address)\n        );\n        return onlyTaprootAddressesExist;\n      }\n\n      return true;\n    })?.address;\n    if (btcAddress) sessionData.userData.profile.btcAddress = btcAddress;\n\n    userSession.store.setSessionData(sessionData);\n\n    onFinish?.({ userSession, authResponsePayload: sessionData.userData });\n  } catch (error) {\n    console.error('[Connect] Error during auth request', error);\n    onCancel?.(error);\n  }\n};\n\n// Legacy User Session, User Data, etc.\n\n/** @deprecated Update to the latest `request` RPC methods. It's not recommended to use the UserSession. */\nexport const LOCALSTORAGE_SESSION_KEY = 'blockstack-session';\n\n/**\n * Semi-compatible `AppConfig` type for configuring `UserSession`.\n *\n * @deprecated Update to the latest `request` RPC methods. It's not recommended to use the UserSession.\n */\nexport class AppConfig {\n  // Copied over from legacy @stacks/auth\n  constructor(\n    _scopes?: any,\n    _appDomain?: any,\n    _redirectPath?: string,\n    _manifestPath?: string,\n    _coreNode?: string,\n    _authenticatorURL?: string\n  ) {}\n}\n\n/**\n * Semi-compatible `SessionOptions` type for accessing `userData`.\n *\n * @deprecated Update to the latest `request` RPC methods. It's not recommended to use the UserSession.\n */\nexport interface SessionOptions {\n  userData?: UserData;\n  localStorageKey?: string;\n  storeOptions?: {\n    localStorageKey?: string;\n  };\n}\n\n/**\n * Semi-compatible `SessionData` type for accessing `userData`.\n *\n * @deprecated Update to the latest `request` RPC methods. It's not recommended to use the UserSession.\n */\nexport interface SessionData {\n  userData?: UserData;\n}\n\n/**\n * Semi-compatible `UserSession` type for accessing `userData`.\n *\n * @deprecated Update to the latest `request` RPC methods. It's not recommended to use the UserSession.\n */\nexport class UserSession {\n  // Copied over from legacy @stacks/auth\n  appConfig: any;\n\n  store: SessionDataStore;\n\n  /**\n   * UserSession might still work for some use cases, but it's not recommended.\n   *\n   * @deprecated Update to the latest `request` RPC methods.\n   */\n  constructor(options?: { appConfig?: any; sessionStore?: any; sessionOptions?: SessionOptions }) {\n    if (options?.appConfig) this.appConfig = options.appConfig;\n\n    if (typeof window === 'undefined' && typeof self === 'undefined') {\n      // not running in browser\n      this.store = new InstanceDataStore();\n    } else {\n      // running in browser\n      this.store = new LocalStorageStore();\n    }\n  }\n\n  /** @deprecated No-op. Update to the latest `request` RPC methods. */\n  makeAuthRequestToken() {}\n\n  /** @deprecated No-op. Update to the latest `request` RPC methods. */\n  generateAndStoreTransitKey() {}\n\n  /** @deprecated No-op. Update to the latest `request` RPC methods. */\n  getAuthResponseToken() {}\n\n  /** @deprecated No-op. Update to the latest `request` RPC methods. */\n  isSignInPending() {\n    return false;\n  }\n\n  /**\n   * Check if a user is currently signed in.\n   *\n   * @returns {Boolean} `true` if the user is signed in (aka connected), `false` if not.\n   */\n  isUserSignedIn() {\n    return !!this.store.getSessionData().userData;\n  }\n\n  /**\n   * Try to process any pending sign in request by returning a `Promise` that resolves\n   * to the user data object if the sign in succeeds.\n   *\n   * @returns {Promise} that resolves to the user data object if successful and rejects\n   * if handling the sign in request fails or there was no pending sign in request.\n   */\n  async handlePendingSignIn(): Promise<UserData> {\n    return Promise.resolve(this.loadUserData());\n  }\n\n  /**\n   * Retrieves the user data object. The user's profile is stored in the key [[Profile]].\n   *\n   * @returns {Object} User data object.\n   */\n  loadUserData() {\n    const userData = this.store.getSessionData().userData;\n    if (!userData) throw new NoSessionDataError('No user data found. Did the user sign in?');\n    return userData;\n  }\n\n  /** @deprecated No-op. Update to the latest `request` RPC methods. */\n  encryptContent() {}\n\n  /** @deprecated No-op. Update to the latest `request` RPC methods. */\n  decryptContent() {}\n\n  /**\n   * Sign the user out and optionally redirect to given location.\n   * @param redirectURL Location to redirect user to after sign out.\n   */\n  signUserOut(redirectURL?: string) {\n    this.store.deleteSessionData();\n    if (redirectURL && typeof location !== 'undefined' && location.href) {\n      location.href = redirectURL;\n    }\n  }\n}\n\n/** @deprecated Update to the latest `request` RPC methods. It's not recommended to use the UserSession. */\nexport interface UserData {\n  /** @deprecated */\n  email?: string;\n  /** @deprecated */\n  decentralizedID?: string;\n  /** @deprecated */\n  identityAddress?: string;\n  /** @deprecated */\n  appPrivateKey?: string;\n  /** @deprecated */\n  hubUrl?: string;\n  /** @deprecated */\n  coreNode?: string;\n  /** @deprecated */\n  authResponseToken?: string;\n  /** @deprecated */\n  coreSessionToken?: string;\n  /** @deprecated */\n  gaiaAssociationToken?: string;\n  /** @deprecated */\n  profile: any;\n  /** @deprecated */\n  gaiaHubConfig?: any;\n  /** @deprecated */\n  appPrivateKeyFromWalletSalt?: string;\n}\n\n/**\n * @abstract An abstract class representing the SessionDataStore interface.\n * @deprecated Update to the latest `request` RPC methods. It's not recommended to use the UserSession.\n */\nexport class SessionDataStore {\n  constructor(sessionOptions?: SessionOptions) {\n    if (sessionOptions) this.setSessionData(sessionOptions);\n  }\n\n  getSessionData(): SessionData {\n    throw new Error('Abstract class');\n  }\n\n  setSessionData(_session: SessionData): boolean {\n    throw new Error('Abstract class');\n  }\n\n  deleteSessionData(): boolean {\n    throw new Error('Abstract class');\n  }\n}\n\n/**\n * Stores session data in the instance of this class.\n *\n * @deprecated Update to the latest `request` RPC methods. It's not recommended to use the UserSession.\n */\nexport class InstanceDataStore extends SessionDataStore {\n  sessionData?: SessionData;\n\n  constructor(sessionOptions?: SessionOptions) {\n    super(sessionOptions);\n    if (!this.sessionData) this.setSessionData({});\n  }\n\n  getSessionData(): SessionData {\n    if (!this.sessionData) throw new NoSessionDataError('No session data was found.');\n    return this.sessionData;\n  }\n\n  setSessionData(session: SessionData): boolean {\n    this.sessionData = session;\n    return true;\n  }\n\n  deleteSessionData(): boolean {\n    this.setSessionData({});\n    return true;\n  }\n}\n\n/**\n * Stores session data in browser a localStorage entry.\n *\n * @deprecated Update to the latest `request` RPC methods. It's not recommended to use the UserSession.\n */\nexport class LocalStorageStore extends SessionDataStore {\n  key: string;\n\n  constructor(sessionOptions?: SessionOptions) {\n    super(sessionOptions);\n    this.key =\n      typeof sessionOptions?.storeOptions?.localStorageKey === 'string'\n        ? sessionOptions.storeOptions.localStorageKey\n        : LOCALSTORAGE_SESSION_KEY;\n\n    const data = localStorage.getItem(this.key);\n    if (!data) this.setSessionData({});\n  }\n\n  getSessionData(): SessionData {\n    const data = localStorage.getItem(this.key);\n    if (!data) throw new NoSessionDataError('No session data was found in localStorage');\n\n    return JSON.parse(data);\n  }\n\n  setSessionData(session: SessionData): boolean {\n    localStorage.setItem(this.key, JSON.stringify(session));\n    return true;\n  }\n\n  deleteSessionData(): boolean {\n    localStorage.removeItem(this.key);\n    this.setSessionData({});\n    return true;\n  }\n}\n\n/** @deprecated Update to the latest `request` RPC methods. It's not recommended to use the UserSession. */\nexport const getOrCreateUserSession = (userSession?: UserSession): UserSession => {\n  if (userSession) return userSession;\n  return new UserSession();\n};\n\n/** @deprecated Update to the latest `request` RPC methods. It's not recommended to use the UserSession. */\nexport const getUserData = async (userSession?: UserSession) => {\n  userSession = getOrCreateUserSession(userSession);\n  if (userSession.isUserSignedIn()) return Promise.resolve(userSession.loadUserData());\n  return Promise.resolve(null);\n};\n\n/** @internal */\nexport function isAddressTaproot(address: string) {\n  const PREFIXES = ['bc1p', 'tb1p', 'bcrt1p'];\n  const LENGTHS = [62, 62, 64];\n\n  const index = PREFIXES.findIndex(p => address.startsWith(p));\n  if (index === -1) return false;\n\n  return address.length === LENGTHS[index];\n}\n","import { JsonRpcResponseError } from './methods';\n\nexport class JsonRpcError extends Error {\n  constructor(\n    public message: string,\n    public code: number,\n    public data?: string,\n\n    public cause?: Error\n  ) {\n    super(message);\n    this.name = 'JsonRpcError';\n    this.message = message;\n    this.code = code;\n    this.data = data;\n\n    this.cause = cause;\n  }\n\n  static fromResponse(error: JsonRpcResponseError) {\n    return new JsonRpcError(error.message, error.code, error.data);\n  }\n\n  toString() {\n    return `${this.name} (${this.code}): ${this.message}${this.data ? `: ${JSON.stringify(this.data)}` : ''}`;\n  }\n}\n\n/**\n * Numeric error codes for JSON-RPC errors, used for `.code` in {@link JsonRpcError}.\n * Implementation-defined wallet errors range from `-32099` to `-32000`.\n */\nexport enum JsonRpcErrorCode {\n  // https://www.jsonrpc.org/specification#error_object\n  // > The error codes from and including -32768 to -32000 are reserved for pre-defined errors.\n\n  /** Invalid JSON received by server while parsing */\n  ParseError = -32_700,\n\n  /** Invalid Request object */\n  InvalidRequest = -32_600,\n\n  /** Method not found/available */\n  MethodNotFound = -32_601,\n\n  /** Invalid method params */\n  InvalidParams = -32_602,\n\n  /** Internal JSON-RPC error */\n  InternalError = -32_603,\n\n  // IMPLEMENTATION-DEFINED WALLET ERRORS\n  /** User rejected the request (implementation-defined wallet error) */\n  UserRejection = -32_000,\n\n  /** Address mismatch for the requested method (implementation-defined wallet error) */\n  MethodAddressMismatch = -32_001,\n\n  /** Access denied for the requested method (implementation-defined wallet error) */\n  MethodAccessDenied = -32_002,\n\n  // CUSTOM ERRORS (Custom range, not inside the JSON-RPC error code range)\n  /**\n   * Unknown external error.\n   * Error does not originate from the wallet.\n   */\n  UnknownError = -31_000,\n\n  /**\n   * User canceled the request.\n   * Error may not originate from the wallet.\n   */\n  UserCanceled = -31_001,\n}\n","import { MethodParams, Methods } from './methods';\n\nconst source = 'asigna-stx';\n\nconst generateCall = (payload: string | MethodParams<keyof Methods>, key: string) => {\n  return new Promise(res => {\n    function listener(message: MessageEvent<any>) {\n      if (message.data.source === source && message.data[key]) {\n        res(message.data[key]);\n        window.removeEventListener('message', listener);\n      }\n    }\n    window.addEventListener('message', listener);\n    window.top.postMessage(generateAsignaMessage(payload, key), '*');\n  });\n};\n\nconst AsignaIframeProvider = {\n  authenticationRequest: async (payload: string) => {\n    return generateCall(payload, 'authenticationRequest');\n  },\n  transactionRequest: async (payload: string) => {\n    return generateCall(payload, 'transactionRequest');\n  },\n  request: async <M extends keyof Methods>(method: M, options: MethodParams<M>) => {\n    return generateCall(options, method);\n  },\n};\n\nconst generateAsignaMessage = (payload: string | MethodParams<keyof Methods>, key: string) => ({\n  source,\n  [key]: payload,\n});\n\nexport const initializeAsignaProvider = () => {\n  if (typeof window === 'undefined') return;\n\n  const isIframe = window.top !== window.self;\n  if (isIframe) {\n    window['AsignaProvider'] = AsignaIframeProvider;\n  }\n};\n","import { WebBTCProvider } from '@stacks/connect-ui';\nimport { initializeAsignaProvider } from './asigna';\n\ninitializeAsignaProvider();\n\nexport const DEFAULT_PROVIDERS: WebBTCProvider[] = [\n  {\n    id: 'LeatherProvider',\n    name: 'Leather',\n    icon: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCIgdmlld0JveD0iMCAwIDEyOCAxMjgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4IiByeD0iMjYuODM4NyIgZmlsbD0iIzEyMTAwRiIvPgo8cGF0aCBkPSJNNzQuOTE3MSA1Mi43MTE0QzgyLjQ3NjYgNTEuNTQwOCA5My40MDg3IDQzLjU4MDQgOTMuNDA4NyAzNy4zNzYxQzkzLjQwODcgMzUuNTAzMSA5MS44OTY4IDM0LjIxNTQgODkuNjg3MSAzNC4yMTU0Qzg1LjUwMDQgMzQuMjE1NCA3OC40MDYxIDQwLjUzNjggNzQuOTE3MSA1Mi43MTE0Wk0zOS45MTEgODMuNDk5MUMzMC4wMjU2IDgzLjQ5OTEgMjkuMjExNSA5My4zMzI0IDM5LjA5NjkgOTMuMzMyNEM0My41MTYzIDkzLjMzMjQgNDguODY2MSA5MS41NzY0IDUxLjY1NzMgODguNDE1N0M0Ny41ODY4IDg0LjkwMzggNDQuMjE0MSA4My40OTkxIDM5LjkxMSA4My40OTkxWk0xMDIuODI5IDc5LjI4NDhDMTAzLjQxIDk1Ljc5MDcgOTUuMDM2OSAxMDUuMDM5IDgwLjg0ODQgMTA1LjAzOUM3Mi40NzQ4IDEwNS4wMzkgNjguMjg4MSAxMDEuODc4IDU5LjMzMyA5Ni4wMjQ5QzU0LjY4MSAxMDEuMTc2IDQ1Ljg0MjMgMTA1LjAzOSAzOC41MTU0IDEwNS4wMzlDMTMuMjc4NSAxMDUuMDM5IDE0LjMyNTIgNzIuODQ2MyA0MC4wMjczIDcyLjg0NjNDNDUuMzc3MSA3Mi44NDYzIDQ5LjkxMjggNzQuMjUxMSA1NS43Mjc3IDc3Ljg4TDU5LjU2NTYgNjQuNDE3N0M0My43NDg5IDYwLjA4NjQgMzUuODQwNSA0Ny45MTE4IDQzLjYzMjYgMzAuNDY5M0g1Ni4xOTI5QzQ5LjIxNSA0Mi4wNTg2IDUzLjk4MzIgNTEuNjU3OCA2Mi44MjIgNTIuNzExNEM2Ny41OTAzIDM1LjczNzIgNzcuODI0NiAyMi41MDkgOTEuNDMxNiAyMi41MDlDOTkuMTA3NCAyMi41MDkgMTA1LjE1NSAyNy41NDI4IDEwNS4xNTUgMzYuNjczN0MxMDUuMTU1IDUxLjMwNjYgODYuMDgxOSA2My4yNDcxIDcxLjY2MDcgNjQuNDE3N0w2NS43Mjk1IDg1LjM3MjFDNzIuNDc0OCA5My4yMTUzIDkxLjE5OSAxMDAuODI0IDkxLjE5OSA3OS4yODQ4SDEwMi44MjlaIiBmaWxsPSIjRjVGMUVEIi8+Cjwvc3ZnPgo=',\n\n    webUrl: 'https://leather.io',\n    chromeWebStoreUrl:\n      'https://chrome.google.com/webstore/detail/hiro-wallet/ldinpeekobnhjjdofggfgjlcehhmanlj',\n    mozillaAddOnsUrl: 'https://leather.io/install-extension',\n  },\n  {\n    id: 'XverseProviders.BitcoinProvider',\n    name: 'Xverse Wallet',\n    icon: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2MDAiIGhlaWdodD0iNjAwIj48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGZpbGw9IiMxNzE3MTciIGQ9Ik0wIDBoNjAwdjYwMEgweiIvPjxwYXRoIGZpbGw9IiNGRkYiIGZpbGwtcnVsZT0ibm9uemVybyIgZD0iTTQ0MCA0MzUuNHYtNTFjMC0yLS44LTMuOS0yLjItNS4zTDIyMCAxNjIuMmE3LjYgNy42IDAgMCAwLTUuNC0yLjJoLTUxLjFjLTIuNSAwLTQuNiAyLTQuNiA0LjZ2NDcuM2MwIDIgLjggNCAyLjIgNS40bDc4LjIgNzcuOGE0LjYgNC42IDAgMCAxIDAgNi41bC03OSA3OC43Yy0xIC45LTEuNCAyLTEuNCAzLjJ2NTJjMCAyLjQgMiA0LjUgNC42IDQuNUgyNDljMi42IDAgNC42LTIgNC42LTQuNlY0MDVjMC0xLjIuNS0yLjQgMS40LTMuM2w0Mi40LTQyLjJhNC42IDQuNiAwIDAgMSA2LjQgMGw3OC43IDc4LjRhNy42IDcuNiAwIDAgMCA1LjQgMi4yaDQ3LjVjMi41IDAgNC42LTIgNC42LTQuNloiLz48cGF0aCBmaWxsPSIjRUU3QTMwIiBmaWxsLXJ1bGU9Im5vbnplcm8iIGQ9Ik0zMjUuNiAyMjcuMmg0Mi44YzIuNiAwIDQuNiAyLjEgNC42IDQuNnY0Mi42YzAgNCA1IDYuMSA4IDMuMmw1OC43LTU4LjVjLjgtLjggMS4zLTIgMS4zLTMuMnYtNTEuMmMwLTIuNi0yLTQuNi00LjYtNC42TDM4NCAxNjBjLTEuMiAwLTIuNC41LTMuMyAxLjNsLTU4LjQgNTguMWE0LjYgNC42IDAgMCAwIDMuMiA3LjhaIi8+PC9nPjwvc3ZnPg==',\n\n    webUrl: 'https://xverse.app',\n    chromeWebStoreUrl:\n      'https://chrome.google.com/webstore/detail/xverse-wallet/idnnbdplmphpflfnlkomgpfbpcgelopg',\n    googlePlayStoreUrl: 'https://play.google.com/store/apps/details?id=com.secretkeylabs.xverse',\n    iOSAppStoreUrl: 'https://apps.apple.com/app/xverse-bitcoin-web3-wallet/id1552272513',\n    mozillaAddOnsUrl: 'https://www.xverse.app/download',\n  },\n  {\n    id: 'AsignaProvider',\n    name: 'Asigna Multisig',\n    icon: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iIzAwMDEwMCIgZD0iTTAgMGgzMnYzMkgweiIvPjxwYXRoIGZpbGw9InVybCgjYSkiIGQ9Ik0xNS4xMSA1LjU1YTMgMyAwIDAgMC0xLjgyIDEuM2wtLjA1LjA4LS40My43Mi0uMDcuMTEtLjUuODUtLjA1LjA5LTEuMjkgMi4xOC0uMDQuMDctLjQ3LjgtLjA2LjEtLjQ2Ljc4LS4wNy4xMS0xLjYzIDIuNzYtLjA3LjExLS4zOC42Ni0uMDUuMDgtLjczIDEuMjQtLjM1LjYtLjQuNjctLjA1LjA5TDUuMSAyMC43bC0uMTEuMTgtLjE0LjIzLS4wNy4xMy0uMzMuNTUtLjA0LjA3di4wMWExLjI2IDEuMjYgMCAwIDAtLjE0LjQ3IDEuMzEgMS4zMSAwIDAgMCAxLjI0IDEuNGgxLjVsLjA1LS4wNi4wNC0uMDYuODctMS4yMS4wNS0uMDguNzctMS4wNy4wNS0uMDcuNC0uNTcuMDUtLjA2LjI0LS4zNGExLjUyIDEuNTIgMCAwIDEgMS4zOS0uNjIgMS41IDEuNSAwIDAgMSAuNjQuMiAxLjQ3IDEuNDcgMCAwIDEgLjczIDEuMjcgMS40NCAxLjQ0IDAgMCAxLS4yNy44NGwtLjYzLjg4LS4wNS4wNy0uMzIuNDUtLjA2LjA4LS4wOC4xMi0uMTIuMTYtLjA1LjA4aDIuMTNhMi4zMiAyLjMyIDAgMCAwIDEuNzctLjk2bDEuMTgtMS42My43Ny0xLjA4IDEuMy0xLjhhMS4yNCAxLjI0IDAgMCAxIC41NS0uNDNsLjA4LS4wM2ExLjMgMS4zIDAgMCAxIC4zLS4wNiAxLjI4IDEuMjggMCAwIDEgMS4xNS41NGwuMTEuMmExLjEzIDEuMTMgMCAwIDEgLjEuNDEgMS4xOSAxLjE5IDAgMCAxLS4yMy43N2wtLjAzLjA1LS41Ny44LS43Ljk4LS4yNy4zN2ExLjIyIDEuMjIgMCAwIDAtLjIuNSAxLjA1IDEuMDUgMCAwIDAtLjAyLjIzdi4wNmExLjE3IDEuMTcgMCAwIDAgLjE0LjQzbC4wMi4wNS4wNy4xYTEuNDQgMS40NCAwIDAgMCAuMS4xMWwuMDUuMDYuMDEuMDFhMS44IDEuOCAwIDAgMCAuMTQuMWMwIC4wMi4wMi4wMy4wNC4wM2ExIDEgMCAwIDAgLjA4LjA1bC4wNy4wNGExLjI1IDEuMjUgMCAwIDAgLjUuMWg2LjljLjEgMCAuMi0uMDEuMjktLjAzbC4wNi0uMDJhMS4yNyAxLjI3IDAgMCAwIC4yNy0uMS41Ny41NyAwIDAgMCAuMDctLjAzIDEuMjEgMS4yMSAwIDAgMCAuMjYtLjE5bC4wOC0uMDdhLjkyLjkyIDAgMCAwIC4xNS0uMTkgMS41NSAxLjU1IDAgMCAwIC4wOS0uMTdsLjAyLS4wNWExLjIyIDEuMjIgMCAwIDAgLjA4LS4yNnYtLjA0bC4wMi0uMDh2LS4wOGExLjMyIDEuMzIgMCAwIDAtLjItLjc0bC0xLjYtMi42NC0uMDYtLjEtLjItLjMyLS4zMy0uNTR2LS4wMWwtLjA1LS4wOC0xLjMtMi4xNS0uMDctLjEtLjA0LS4wNi0uOC0xLjMyLS4wNC0uMDctLjItLjM0LS4xLS4xNC0uMS0uMTYtLjUzLS45LS4xMy0uMi0uMDktLjE0LTIuMTctMy41Ny0uMDQtLjA3LS43Mi0xLjE5LS4wNS0uMDctLjQtLjY1YTIuNjUgMi42NSAwIDAgMC0uMy0uNCAyLjk2IDIuOTYgMCAwIDAtLjk3LS43NCAzLjA0IDMuMDQgMCAwIDAtMS4zLS4zYy0uMjUgMC0uNS4wNC0uNzQuMVoiLz48cGF0aCBmaWxsPSJ1cmwoI2IpIiBkPSJNMTkgMTYuM2E1LjQ1IDUuNDUgMCAwIDAtLjgzIDEuNTZsLS4wNC4xNWExLjM2IDEuMzYgMCAwIDEgLjI4LS4xNiAxLjI0IDEuMjQgMCAwIDEgLjM4LS4wOGguMWExLjI4IDEuMjggMCAwIDEgMS4wNS41NGMuMDQuMDYuMDguMTMuMS4yYTEuMjQgMS4yNCAwIDAgMSAuMDkuMjcgMS4xOSAxLjE5IDAgMCAxLS4yLjkxbC0uMDQuMDUtLjU3Ljc5LS43Ljk5LS4yNy4zN2ExLjIzIDEuMjMgMCAwIDAtLjIuNDIgMS4wNiAxLjA2IDAgMCAwLS4wMi4zMXYuMDZhMS4xNyAxLjE3IDAgMCAwIC4xNi40Ny45My45MyAwIDAgMCAuMDcuMSAxLjUgMS41IDAgMCAwIC4xLjEybC4wNS4wNmguMDFhMS45NCAxLjk0IDAgMCAwIC4wOS4wOCAxIDEgMCAwIDAgLjE3LjFsLjA3LjA0YTEuMjUgMS4yNSAwIDAgMCAuNS4xaDYuOWMuMSAwIC4yIDAgLjI4LS4wMmwuMDctLjAyYTEuMzIgMS4zMiAwIDAgMCAuMzQtLjEzbC4xNi0uMS4wMy0uMDNhMS4yOSAxLjI5IDAgMCAwIC4yLS4yIDIuNDMgMi40MyAwIDAgMCAuMTItLjE3Yy4wMy0uMDMuMDUtLjA4LjA3LS4xMmwuMDItLjA1YTEuMjEgMS4yMSAwIDAgMCAuMDktLjN2LS4wOGwuMDEtLjA5YTEuMzIgMS4zMiAwIDAgMC0uMi0uNzNsLTEuNi0yLjY0LS4wNi0uMS0uMi0uMzItLjMzLS41NHYtLjAybC0uMDUtLjA3LTEuMy0yLjE1LS4xMi0uMDctLjA3LS4wNGE0Ljk0IDQuOTQgMCAwIDAtMi40Ni0uNjdjLTEuMDMgMC0xLjc2LjU3LTIuMjYgMS4yWiIvPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik0xMi4yOSAyMS4wOGMwIC4yOS0uMDkuNTgtLjI3Ljg0bC0xLjMxIDEuODRIN2wyLjUyLTMuNTNhMS41NCAxLjU0IDAgMCAxIDIuMS0uMzZjLjQzLjI4LjY2Ljc0LjY2IDEuMloiLz48cGF0aCBmaWxsPSIjMDAwIiBkPSJNMTEuMTYgMjEuMjVhLjU2LjU2IDAgMCAxLS41Ny41NS41Ni41NiAwIDAgMS0uNTctLjU2LjU2LjU2IDAgMCAxIC41Ny0uNTUuNTYuNTYgMCAwIDEgLjU3LjU2WiIvPjxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD0iYSIgeDE9IjE1LjIzIiB4Mj0iMTkuMyIgeTE9IjI1Ljc4IiB5Mj0iNi4xMSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiM2NTIyRjQiLz48c3RvcCBvZmZzZXQ9Ii41NSIgc3RvcC1jb2xvcj0iIzlCNkJGRiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0E1ODVGRiIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJiIiB4MT0iMjIuNTkiIHgyPSIyNC44IiB5MT0iMjQuNzEiIHkyPSIxNS41MyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiM0MjFGOEIiLz48c3RvcCBvZmZzZXQ9Ii41NSIgc3RvcC1jb2xvcj0iIzcyMzBGRiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzk3NzNGRiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjwvc3ZnPg==',\n\n    webUrl: 'https://asigna.io',\n    chromeWebStoreUrl: 'https://stx.asigna.io/',\n  },\n  {\n    id: 'FordefiProviders.UtxoProvider',\n    name: 'Fordefi',\n\n    icon: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDIiIGhlaWdodD0iNDIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPHBhdGggZmlsbD0iIzEwMTExNCIgZD0iTTAgMGg0MnY0MkgweiIvPgogIDxwYXRoIGQ9Ik0xOS40NyAyNi44OUg1djMuNTdhNC41NyA0LjU3IDAgMCAwIDQuNTggNC41N2g1LjgzbDQuMDYtOC4xNFoiIGZpbGw9IiM3OTk0RkYiLz4KICA8cGF0aCBkPSJNNSAxNy40aDI3LjU4bC0zLjIgNi43OEg1VjE3LjRaIiBmaWxsPSIjNDg2REZGIi8+CiAgPHBhdGggZD0iTTE0LjY3IDdINXY3LjY4aDMzVjdoLTkuNjd2NS43NGgtMlY3aC05LjY3djUuNzRoLTEuOTlWN1oiIGZpbGw9IiM1Q0QxRkEiLz4KPC9zdmc+Cg==',\n    webUrl: 'https://www.fordefi.com/',\n    chromeWebStoreUrl:\n      'https://chromewebstore.google.com/detail/fordefi/hcmehenccjdmfbojapcbcofkgdpbnlle',\n  },\n];\n\nexport const WALLET_CONNECT_PROVIDER: WebBTCProvider = {\n  id: 'WalletConnectProvider',\n  name: 'WalletConnect',\n  icon: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIiBmaWxsPSJub25lIj48bWFzayBpZD0iYSIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiIHg9IjAiIHk9IjAiIG1hc2tVbml0cz0idXNlclNwYWNlT25Vc2UiIHN0eWxlPSJtYXNrLXR5cGU6bHVtaW5hbmNlIj48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMCAwaDQwMHY0MDBIMFYwWiIvPjwvbWFzaz48ZyBtYXNrPSJ1cmwoI2EpIj48cGF0aCBmaWxsPSIjMzM5NkZGIiBkPSJNNDAwIDQwMEgwVjBoNDAwdjQwMFoiLz48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMTIyLjUyIDE0OC45N2M0Mi43OS00MS43MyAxMTIuMTctNDEuNzMgMTU0Ljk2IDBsNS4xNSA1LjAyYTUuMjUgNS4yNSAwIDAgMSAwIDcuNTVsLTE3LjYyIDE3LjE4YTIuNzkgMi43OSAwIDAgMS0zLjg3IDBsLTcuMDktNi45Yy0yOS44NS0yOS4xMi03OC4yNS0yOS4xMi0xMDguMSAwbC03LjYgNy40YTIuNzkgMi43OSAwIDAgMS0zLjg3IDBsLTE3LjYxLTE3LjE5YTUuMjUgNS4yNSAwIDAgMSAwLTcuNTVsNS42NS01LjUxWm0xOTEuNCAzNS41MiAxNS42OCAxNS4zYTUuMjUgNS4yNSAwIDAgMSAwIDcuNTVsLTcwLjcgNjguOTRhNS41OCA1LjU4IDAgMCAxLTcuNzUgMGwtNTAuMTgtNDguOTNhMS40IDEuNCAwIDAgMC0xLjk0IDBsLTUwLjE4IDQ4LjkzYTUuNTggNS41OCAwIDAgMS03Ljc0IDBsLTcwLjctNjguOTRhNS4yNSA1LjI1IDAgMCAxIDAtNy41NmwxNS42Ny0xNS4yOWE1LjU4IDUuNTggMCAwIDEgNy43NSAwbDUwLjE4IDQ4Ljk0Yy41NC41MiAxLjQuNTIgMS45NCAwbDUwLjE4LTQ4Ljk0YTUuNTggNS41OCAwIDAgMSA3Ljc0IDBsNTAuMTggNDguOTRjLjU0LjUyIDEuNC41MiAxLjk0IDBsNTAuMTgtNDguOTRhNS41OCA1LjU4IDAgMCAxIDcuNzUgMFoiLz48L2c+PC9zdmc+',\n  webUrl: 'https://walletconnect.com/',\n  chromeWebStoreUrl: '',\n};\n","import { getProviderFromId, getSelectedProviderId } from '@stacks/connect-ui';\nimport { TransactionVersion } from '@stacks/network';\nimport {\n  StacksDevnet as LegacyStacksDevnet,\n  StacksMainnet as LegacyStacksMainnet,\n  StacksMocknet as LegacyStacksMocknet,\n  StacksNetwork as LegacyStacksNetwork,\n  StacksTestnet as LegacyStacksTestnet,\n} from '@stacks/network-v6';\nimport { Address, Cl, ClarityValue } from '@stacks/transactions';\nimport {\n  ClarityType as LegacyClarityType,\n  ClarityValue as LegacyClarityValue,\n} from '@stacks/transactions-v6';\nimport { ConnectNetwork } from './types';\n\n/** @deprecated This will default to the legacy provider. The behavior may be undefined with competing wallets. */\nexport function getStacksProvider() {\n  const provider = getProviderFromId(getSelectedProviderId());\n  return provider || (window as any).StacksProvider || (window as any).BlockstackProvider;\n}\n\nexport function isStacksWalletInstalled() {\n  return !!getStacksProvider();\n}\n\n/** @internal */\nexport function legacyNetworkFromConnectNetwork(network?: ConnectNetwork): LegacyStacksNetwork {\n  if (!network) return new LegacyStacksTestnet();\n  if (typeof network === 'string') return LegacyStacksNetwork.fromName(network);\n  if ('version' in network) return network; // legacy type\n\n  if ('url' in network) return new LegacyStacksMainnet({ url: network.url }); // experimental\n\n  return network.transactionVersion === (TransactionVersion.Mainnet as number)\n    ? new LegacyStacksMainnet({ url: network.client.baseUrl })\n    : new LegacyStacksTestnet({ url: network.client.baseUrl });\n}\n\nfunction isInstance<T>(object: any, clazz: { new (...args: any[]): T }): object is T {\n  return object instanceof clazz || object?.constructor?.name?.toLowerCase() === clazz.name;\n}\n\n/** @internal */\nexport function connectNetworkToString(network: ConnectNetwork): string {\n  // not perfect, but good enough to identify the legacy network in most cases\n  if (!network) return 'mainnet';\n  if (typeof network === 'string') return network;\n  if (isInstance(network, LegacyStacksMainnet)) return 'mainnet';\n  if (isInstance(network, LegacyStacksTestnet)) return 'testnet';\n  if (isInstance(network, LegacyStacksDevnet)) return 'devnet';\n  if (isInstance(network, LegacyStacksMocknet)) return 'devnet';\n\n  if ('coreApiUrl' in (network as any)) return (network as any).coreApiUrl; // in case alternate network was used\n  if ('url' in network) return network.url;\n  if ('transactionVersion' in network) {\n    return network.transactionVersion === (TransactionVersion.Mainnet as number)\n      ? 'mainnet'\n      : 'testnet';\n  }\n  return 'mainnet';\n}\n\n/**\n * @internal\n * This may be moved to Stacks.js in the future.\n */\nexport function legacyCVToCV(cv: LegacyClarityValue | ClarityValue): ClarityValue {\n  if (typeof cv.type === 'string') return cv;\n\n  switch (cv.type) {\n    case LegacyClarityType.BoolFalse:\n      return Cl.bool(false);\n    case LegacyClarityType.BoolTrue:\n      return Cl.bool(true);\n    case LegacyClarityType.Int:\n      return Cl.int(cv.value);\n    case LegacyClarityType.UInt:\n      return Cl.uint(cv.value);\n    case LegacyClarityType.Buffer:\n      return Cl.buffer(cv.buffer);\n    case LegacyClarityType.StringASCII:\n      return Cl.stringAscii(cv.data);\n    case LegacyClarityType.StringUTF8:\n      return Cl.stringUtf8(cv.data);\n    case LegacyClarityType.List:\n      return Cl.list(cv.list.map(legacyCVToCV));\n    case LegacyClarityType.Tuple:\n      return Cl.tuple(\n        Object.fromEntries(Object.entries(cv.data).map(([k, v]) => [k, legacyCVToCV(v)]))\n      );\n    case LegacyClarityType.OptionalNone:\n      return Cl.none();\n    case LegacyClarityType.OptionalSome:\n      return Cl.some(legacyCVToCV(cv.value));\n    case LegacyClarityType.ResponseErr:\n      return Cl.error(legacyCVToCV(cv.value));\n    case LegacyClarityType.ResponseOk:\n      return Cl.ok(legacyCVToCV(cv.value));\n    case LegacyClarityType.PrincipalContract:\n      return Cl.contractPrincipal(Address.stringify(cv.address), cv.contractName.content);\n    case LegacyClarityType.PrincipalStandard:\n      return Cl.standardPrincipal(Address.stringify(cv.address));\n    default:\n      const _exhaustiveCheck: never = cv;\n      throw new Error(`Unknown clarity type: ${_exhaustiveCheck}`);\n  }\n}\n\n/** @internal */\nexport function removeUnserializableKeys<O>(\n  obj: O | { onFinish?: Function; onCancel?: Function }\n): O {\n  return {\n    ...obj,\n    onFinish: undefined,\n    onCancel: undefined,\n  } as O;\n}\n","import { PublicPersonProfile } from '@stacks/profile';\nimport { MethodParams, MethodResult } from '../methods';\nimport { requestRawLegacy } from '../request';\nimport { ProfileUpdateRequestOptions, StacksProvider } from '../types';\nimport { getStacksProvider } from '../utils';\n\n/** @deprecated No-op. Tokens are not needed for latest RPC endpoints. */\nexport function getDefaultProfileUpdateRequestOptions(_options: ProfileUpdateRequestOptions) {}\n\n/** @deprecated No-op. Tokens are not needed for latest RPC endpoints. */\nexport const makeProfileUpdateToken = async (_options: ProfileUpdateRequestOptions) => {};\n\nconst METHOD = 'stx_updateProfile' as const;\n\n/** @internal */\nexport const LEGACY_UPDATE_PROFILE_OPTIONS_MAP = (\n  options: ProfileUpdateRequestOptions\n): MethodParams<typeof METHOD> => options;\n\n/** @internal */\nexport const LEGACY_UPDATE_PROFILE_RESPONSE_MAP = (\n  response: MethodResult<typeof METHOD>\n): PublicPersonProfile => response.profile as PublicPersonProfile;\n\n/** Compatible interface with previous Connect `openProfileUpdateRequestPopup` version, but using new SIP-030 RPC method. */\nexport function openProfileUpdateRequestPopup(\n  options: ProfileUpdateRequestOptions,\n  provider: StacksProvider = getStacksProvider()\n) {\n  requestRawLegacy(\n    METHOD,\n    LEGACY_UPDATE_PROFILE_OPTIONS_MAP,\n    LEGACY_UPDATE_PROFILE_RESPONSE_MAP\n  )(options, provider);\n}\n","import { MethodParams, MethodResult } from '../methods';\nimport { requestRawLegacy } from '../request';\nimport { StacksProvider } from '../types';\nimport {\n  CommonSignatureRequestOptions,\n  SignatureData,\n  SignatureRequestOptions,\n} from '../types/signature';\nimport { getStacksProvider } from '../utils';\n\n/** @deprecated No-op. Tokens are not needed for latest RPC endpoints. */\nexport function getDefaultSignatureRequestOptions(_options: CommonSignatureRequestOptions) {}\n\nexport interface SignatureRequestPayload {\n  message: string;\n}\n\n/** @deprecated No-op. Tokens are not needed for latest RPC endpoints. */\nexport const signMessage = async (_options: SignatureRequestOptions) => {};\n\nconst METHOD = 'stx_signMessage' as const;\n\n/** @internal */\nexport const LEGACY_SIGN_MESSAGE_OPTIONS_MAP = (\n  options: SignatureRequestOptions\n): MethodParams<typeof METHOD> => options;\n\n/** @internal */\nexport const LEGACY_SIGN_MESSAGE_RESPONSE_MAP = (\n  response: MethodResult<typeof METHOD>\n): SignatureData => response;\n\n/** Compatible interface with previous Connect `openSignatureRequestPopup` version, but using new SIP-030 RPC method. */\nexport function openSignatureRequestPopup(\n  options: SignatureRequestOptions,\n  provider: StacksProvider = getStacksProvider()\n) {\n  requestRawLegacy(\n    METHOD,\n    LEGACY_SIGN_MESSAGE_OPTIONS_MAP,\n    LEGACY_SIGN_MESSAGE_RESPONSE_MAP\n  )(options, provider);\n}\n","import { TupleCV } from '@stacks/transactions';\nimport { ClarityType as LegacyClarityType } from '@stacks/transactions-v6';\nimport { MethodParams, MethodResult } from '../methods';\nimport { requestRawLegacy } from '../request';\nimport { SignatureData, StacksProvider } from '../types';\nimport { StructuredDataSignatureRequestOptions } from '../types/structuredDataSignature';\nimport { getStacksProvider, legacyCVToCV } from '../utils';\n\n/** @deprecated No-op. Tokens are not needed for latest RPC endpoints. */\nexport async function signStructuredMessage(_options: StructuredDataSignatureRequestOptions) {}\n\nconst METHOD = 'stx_signStructuredMessage' as const;\n\n/** @internal */\nexport const LEGACY_SIGN_STRUCTURED_MESSAGE_OPTIONS_MAP = (\n  options: StructuredDataSignatureRequestOptions\n): MethodParams<typeof METHOD> => ({\n  // todo: also make sure that cvs don't have bigint unserializable values\n  message: legacyCVToCV(options.message),\n  domain: legacyCVToCV(options.domain) as TupleCV, // safe cast, because of below check\n});\n\n/** @internal */\nexport const LEGACY_SIGN_STRUCTURED_MESSAGE_RESPONSE_MAP = (\n  response: MethodResult<typeof METHOD>\n): SignatureData => response;\n\n/** Compatible interface with previous Connect `openStructuredDataSignatureRequestPopup` version, but using new SIP-030 RPC method. */\nexport function openStructuredDataSignatureRequestPopup(\n  options: StructuredDataSignatureRequestOptions,\n  provider: StacksProvider = getStacksProvider()\n): void {\n  if (options.domain.type !== LegacyClarityType.Tuple) {\n    throw new Error('Domain must be a tuple'); // check, ensures domain is a tuple\n  }\n\n  requestRawLegacy(\n    METHOD,\n    LEGACY_SIGN_STRUCTURED_MESSAGE_OPTIONS_MAP,\n    LEGACY_SIGN_STRUCTURED_MESSAGE_RESPONSE_MAP\n  )(options, provider);\n}\n","import { bytesToHex } from '@stacks/common';\nimport { ChainId } from '@stacks/network';\nimport {\n  Cl,\n  deserializeTransaction,\n  PostCondition,\n  PostConditionMode,\n  PostConditionModeName,\n} from '@stacks/transactions';\nimport {\n  PostCondition as LegacyPostCondition,\n  serializePostCondition as legacySerializePostCondition,\n} from '@stacks/transactions-v6';\nimport { MethodParams, MethodResult } from '../methods';\nimport { requestRawLegacy } from '../request';\nimport { StacksProvider } from '../types';\nimport {\n  ContractCallOptions,\n  ContractCallRegularOptions,\n  ContractCallSponsoredOptions,\n  ContractDeployOptions,\n  FinishedTxData,\n  SignTransactionFinishedTxData,\n  SignTransactionOptions,\n  SponsoredFinishedTxData,\n  STXTransferOptions,\n  STXTransferRegularOptions,\n  STXTransferSponsoredOptions,\n  TransactionOptions,\n} from '../types/transactions';\nimport {\n  connectNetworkToString,\n  getStacksProvider,\n  legacyCVToCV,\n  legacyNetworkFromConnectNetwork,\n} from '../utils';\nimport { AppConfig, UserSession } from '../auth';\n\n/** @deprecated Update to the latest `request` RPC methods. It's not recommended to use the UserSession. */\nexport const getUserSession = (_userSession?: UserSession) => {\n  let userSession = _userSession;\n\n  if (!userSession) {\n    const appConfig = new AppConfig(['store_write'], document.location.href);\n    userSession = new UserSession({ appConfig });\n  }\n  return userSession;\n};\n\n/** @deprecated Update to the latest `request` RPC methods. It's not recommended to use the UserSession. */\nexport function hasAppPrivateKey(userSession?: UserSession) {\n  try {\n    const session = getUserSession(userSession).loadUserData();\n    return session.appPrivateKey;\n  } catch (e) {\n    return false;\n  }\n}\n\n/** @deprecated No-op. Update to the latest `request` RPC methods. */\nexport const getKeys = (_userSession?: UserSession) => {};\n\n/** @deprecated Update to the latest `request` RPC methods. It's not recommended to use the UserSession. */\nexport function getStxAddress(options: TransactionOptions) {\n  const { stxAddress, userSession, network: _network } = options;\n\n  if (stxAddress) return stxAddress;\n  if (!userSession || !_network) return undefined;\n  const stxAddresses = userSession?.loadUserData().profile?.stxAddress;\n\n  const chainIdToKey = {\n    [ChainId.Mainnet]: 'mainnet',\n    [ChainId.Testnet]: 'testnet',\n  };\n  const network = legacyNetworkFromConnectNetwork(_network);\n  const address: string | undefined = stxAddresses?.[chainIdToKey[network.chainId]];\n  return address;\n}\n\n/** @deprecated No-op. Tokens are not needed for latest RPC endpoints. */\nexport const makeContractCallToken = async (_options: ContractCallOptions) => {};\n\n/** @deprecated No-op. Tokens are not needed for latest RPC endpoints. */\nexport const makeContractDeployToken = async (_options: ContractDeployOptions) => {};\n\n/** @deprecated No-op. Tokens are not needed for latest RPC endpoints. */\nexport const makeSTXTransferToken = async (_options: STXTransferOptions) => {};\n\n/** @deprecated No-op. Tokens are not needed for latest RPC endpoints. */\nexport const makeSignTransaction = async (_options: SignTransactionOptions) => {};\n\n// # TRANSACTION METHODS\n\n// ## Contract Call\n\nconst METHOD_CALL_CONTRACT = 'stx_callContract' as const;\n\n/** @internal */\nexport const LEGACY_CALL_CONTRACT_OPTIONS_MAP = (\n  options: ContractCallOptions\n): MethodParams<typeof METHOD_CALL_CONTRACT> => {\n  const functionArgs = options.functionArgs\n    ?.map(arg => {\n      if (typeof arg === 'string') return Cl.deserialize(arg);\n      return legacyCVToCV(arg);\n    })\n    // serialize to hex, since some wallets expect hex-encoded args\n    .map(arg => Cl.serialize(arg));\n\n  return {\n    ...options,\n    contract: `${options.contractAddress}.${options.contractName}`,\n    functionArgs,\n    network: connectNetworkToString(options.network),\n    postConditionMode: optPostConditionMode(options.postConditionMode),\n    postConditions: optPostCondition(options.postConditions),\n    address: options.stxAddress,\n  };\n};\n\n/** @internal */\nexport const LEGACY_CALL_CONTRACT_RESPONSE_MAP = (\n  response: MethodResult<typeof METHOD_CALL_CONTRACT>\n): FinishedTxData | SponsoredFinishedTxData => ({\n  txId: response.txid,\n  txRaw: response.transaction,\n  stacksTransaction: deserializeTransaction(response.transaction),\n});\n\n/** Compatible interface with previous Connect `openContractCall` version, but using new SIP-030 RPC method. */\nexport function openContractCall(\n  options: ContractCallOptions | ContractCallRegularOptions | ContractCallSponsoredOptions,\n  provider: StacksProvider = getStacksProvider()\n) {\n  requestRawLegacy(\n    METHOD_CALL_CONTRACT,\n    LEGACY_CALL_CONTRACT_OPTIONS_MAP,\n    LEGACY_CALL_CONTRACT_RESPONSE_MAP\n  )(options, provider);\n}\n\n// ## Contract Deploy\n\nconst METHOD_DEPLOY_CONTRACT = 'stx_deployContract' as const;\n\n/** @internal */\nexport const LEGACY_DEPLOY_CONTRACT_OPTIONS_MAP = (\n  options: ContractDeployOptions\n): MethodParams<typeof METHOD_DEPLOY_CONTRACT> => ({\n  ...options,\n  name: options.contractName,\n  clarityCode: options.codeBody,\n  network: connectNetworkToString(options.network),\n  postConditionMode: optPostConditionMode(options.postConditionMode),\n  postConditions: optPostCondition(options.postConditions),\n  address: options.stxAddress,\n});\n\n/** @internal */\nexport const LEGACY_DEPLOY_CONTRACT_RESPONSE_MAP = (\n  response: MethodResult<typeof METHOD_DEPLOY_CONTRACT>\n): FinishedTxData | SponsoredFinishedTxData => ({\n  txId: response.txid,\n  txRaw: response.transaction,\n  stacksTransaction: deserializeTransaction(response.transaction),\n});\n\n/** Compatible interface with previous Connect `openContractDeploy` version, but using new SIP-030 RPC method. */\nexport function openContractDeploy(\n  options: ContractDeployOptions,\n  provider: StacksProvider = getStacksProvider()\n) {\n  requestRawLegacy(\n    METHOD_DEPLOY_CONTRACT,\n    LEGACY_DEPLOY_CONTRACT_OPTIONS_MAP,\n    LEGACY_DEPLOY_CONTRACT_RESPONSE_MAP\n  )(options, provider);\n}\n\n// ## STX Transfer\n\nconst METHOD_TRANSFER_STX = 'stx_transferStx' as const;\n\n/** @internal */\nexport const LEGACY_TRANSFER_STX_OPTIONS_MAP = (\n  options: STXTransferOptions\n): MethodParams<typeof METHOD_TRANSFER_STX> => ({\n  ...options,\n  amount: options.amount.toString(),\n  network: connectNetworkToString(options.network),\n  address: options.stxAddress,\n});\n\n/** @internal */\nexport const LEGACY_TRANSFER_STX_RESPONSE_MAP = (\n  response: MethodResult<typeof METHOD_TRANSFER_STX>\n): FinishedTxData | SponsoredFinishedTxData => ({\n  txId: response.txid,\n  txRaw: response.transaction,\n  stacksTransaction: deserializeTransaction(response.transaction),\n});\n\n/** Compatible interface with previous Connect `openSTXTransfer` version, but using new SIP-030 RPC method. */\nexport function openSTXTransfer(\n  options: STXTransferOptions | STXTransferRegularOptions | STXTransferSponsoredOptions,\n  provider: StacksProvider = getStacksProvider()\n) {\n  requestRawLegacy(\n    METHOD_TRANSFER_STX,\n    LEGACY_TRANSFER_STX_OPTIONS_MAP,\n    LEGACY_TRANSFER_STX_RESPONSE_MAP\n  )(options, provider);\n}\n\n// ## Sign Transaction\n\nconst METHOD_SIGN_TRANSACTION = 'stx_signTransaction' as const;\n\n/** @internal */\nexport const LEGACY_SIGN_TRANSACTION_OPTIONS_MAP = (\n  options: SignTransactionOptions\n): MethodParams<typeof METHOD_SIGN_TRANSACTION> => ({\n  ...options,\n  transaction: options.txHex,\n});\n\n/** @internal */\nexport const LEGACY_SIGN_TRANSACTION_RESPONSE_MAP = (\n  response: MethodResult<typeof METHOD_SIGN_TRANSACTION>\n): SignTransactionFinishedTxData => ({\n  ...response, // additional fields, in case previous type was incorrect\n  stacksTransaction: deserializeTransaction(response.transaction),\n});\n\n/** Compatible interface with previous Connect `openSignTransaction` version, but using new SIP-030 RPC method. */\nexport function openSignTransaction(\n  options: SignTransactionOptions,\n  provider: StacksProvider = getStacksProvider()\n) {\n  requestRawLegacy(\n    METHOD_SIGN_TRANSACTION,\n    LEGACY_SIGN_TRANSACTION_OPTIONS_MAP,\n    LEGACY_SIGN_TRANSACTION_RESPONSE_MAP\n  )(options, provider);\n}\n\n// ## Helpers\n\n/** @internal */\nfunction optPostCondition(pcs?: (string | LegacyPostCondition | PostCondition)[]) {\n  if (typeof pcs === 'undefined') return undefined;\n  return pcs.map(pc => {\n    if (typeof pc === 'string') return pc;\n    if (typeof pc.type === 'string') {\n      return {\n        ...pc,\n        amount: 'amount' in pc ? pc.amount.toString() : undefined, // ensure amount is not bigint\n      };\n    }\n    return bytesToHex(legacySerializePostCondition(pc));\n  });\n}\n\n/** @internal */\nfunction optPostConditionMode(mode?: PostConditionModeName | PostConditionMode) {\n  if (typeof mode === 'undefined') return undefined;\n  if (typeof mode === 'string') return mode;\n  switch (mode) {\n    case PostConditionMode.Allow:\n      return 'allow';\n    case PostConditionMode.Deny:\n      return 'deny';\n    default:\n      const _exhaustiveCheck: never = mode;\n      throw new Error(\n        `Unknown post condition mode: ${_exhaustiveCheck}. Should be one of: 'allow', 'deny'`\n      );\n  }\n}\n","import { authenticate } from './auth';\nimport { MethodParams, MethodResult, Methods } from './methods';\nimport { LEGACY_UPDATE_PROFILE_OPTIONS_MAP, LEGACY_UPDATE_PROFILE_RESPONSE_MAP } from './profile';\nimport { request } from './request';\nimport { LEGACY_SIGN_MESSAGE_OPTIONS_MAP, LEGACY_SIGN_MESSAGE_RESPONSE_MAP } from './signature';\nimport {\n  LEGACY_SIGN_STRUCTURED_MESSAGE_OPTIONS_MAP,\n  LEGACY_SIGN_STRUCTURED_MESSAGE_RESPONSE_MAP,\n} from './signature/structuredData';\nimport {\n  LEGACY_CALL_CONTRACT_OPTIONS_MAP,\n  LEGACY_CALL_CONTRACT_RESPONSE_MAP,\n  LEGACY_DEPLOY_CONTRACT_OPTIONS_MAP,\n  LEGACY_DEPLOY_CONTRACT_RESPONSE_MAP,\n  LEGACY_SIGN_TRANSACTION_OPTIONS_MAP,\n  LEGACY_SIGN_TRANSACTION_RESPONSE_MAP,\n  LEGACY_TRANSFER_STX_OPTIONS_MAP,\n  LEGACY_TRANSFER_STX_RESPONSE_MAP,\n} from './transactions';\nimport { StacksProvider } from './types';\nimport { removeUnserializableKeys } from './utils';\n\n/**\n * **Note:** Higher order function!\n * @internal Legacy UI request.\n */\nfunction requestLegacy<M extends keyof Methods, O, R>(\n  method: M,\n  mapOptions: (options: O) => MethodParams<M>,\n  mapResponse: (response: MethodResult<M>) => R\n) {\n  return (options: O, provider?: StacksProvider) => {\n    const params = mapOptions(removeUnserializableKeys(options));\n\n    // Manual cast, since TypeScipt can't infer generic type of options\n    const o = options as {\n      onCancel?: (error?: Error) => void;\n      onFinish?: (response: R) => void;\n    };\n\n    void request({ provider }, method, params)\n      .then(response => {\n        const r = mapResponse(response);\n        o.onFinish?.(r);\n      })\n      .catch(e => {\n        console.error(e); // todo: remove again? or maybe keep for legacy debugging\n        o.onCancel?.(e);\n      });\n  };\n}\n\n// BACKWARDS COMPATIBILITY\n\n/** A wrapper for selecting a wallet (if none is selected) and then calling the {@link authenticate} action. */\nexport const showConnect = authenticate;\n\n/** A wrapper for selecting a wallet (if none is selected) and then calling the {@link openSTXTransfer} action. */\nexport const showSTXTransfer = requestLegacy(\n  'stx_transferStx',\n  LEGACY_TRANSFER_STX_OPTIONS_MAP,\n  LEGACY_TRANSFER_STX_RESPONSE_MAP\n);\n\n/** A wrapper for selecting a wallet (if none is selected) and then calling the {@link openContractCall} action. */\nexport const showContractCall = requestLegacy(\n  'stx_callContract',\n  LEGACY_CALL_CONTRACT_OPTIONS_MAP,\n  LEGACY_CALL_CONTRACT_RESPONSE_MAP\n);\n\n/** A wrapper for selecting a wallet (if none is selected) and then calling the {@link openContractDeploy} action. */\nexport const showContractDeploy = requestLegacy(\n  'stx_deployContract',\n  LEGACY_DEPLOY_CONTRACT_OPTIONS_MAP,\n  LEGACY_DEPLOY_CONTRACT_RESPONSE_MAP\n);\n\n/** A wrapper for selecting a wallet (if none is selected) and then calling the {@link openSignTransaction} action. */\nexport const showSignTransaction = requestLegacy(\n  'stx_signTransaction',\n  LEGACY_SIGN_TRANSACTION_OPTIONS_MAP,\n  LEGACY_SIGN_TRANSACTION_RESPONSE_MAP\n);\n\n/** A wrapper for selecting a wallet (if none is selected) and then calling the {@link openProfileUpdateRequestPopup} action. */\nexport const showProfileUpdate = requestLegacy(\n  'stx_updateProfile',\n  LEGACY_UPDATE_PROFILE_OPTIONS_MAP,\n  LEGACY_UPDATE_PROFILE_RESPONSE_MAP\n);\n\n/** A wrapper for selecting a wallet (if none is selected) and then calling the {@link openSignatureRequestPopup} action. */\nexport const showSignMessage = requestLegacy(\n  'stx_signMessage',\n  LEGACY_SIGN_MESSAGE_OPTIONS_MAP,\n  LEGACY_SIGN_MESSAGE_RESPONSE_MAP\n);\n\n/** A wrapper for selecting a wallet (if none is selected) and then calling the {@link openStructuredDataSignatureRequestPopup} action. */\nexport const showSignStructuredMessage = requestLegacy(\n  'stx_signStructuredMessage',\n  LEGACY_SIGN_STRUCTURED_MESSAGE_OPTIONS_MAP,\n  LEGACY_SIGN_STRUCTURED_MESSAGE_RESPONSE_MAP\n);\n\nexport { getProvider as getSelectedProvider, isProviderSelected } from '@stacks/connect-ui';\n\n/**\n * @deprecated Use the renamed {@link showConnect} method\n */\nexport const showBlockstackConnect = showConnect;\n","import { bytesToHex, bytesToUtf8, hexToBytes, utf8ToBytes } from '@stacks/common';\nimport { clearSelectedProviderId } from '@stacks/connect-ui';\nimport { UserSession } from './auth';\nimport { AddressEntry } from './methods';\nimport { getSelectedProvider } from './ui';\n\nexport const LOCAL_STORAGE_KEY = '@stacks/connect';\n\nexport interface StorageData {\n  addresses: {\n    stx: Omit<AddressEntry, 'publicKey'>[];\n    btc: Omit<AddressEntry, 'publicKey'>[];\n  };\n  updatedAt?: number;\n  version: string;\n}\n\n/** @internal */\nconst INITIAL_STORAGE: StorageData = {\n  addresses: {\n    stx: [],\n    btc: [],\n  },\n  version: '0.0.1',\n};\n\n/**\n * @internal Helper to deduplicate address entries and strip sensitive data\n */\nexport const normalizeAddresses = (\n  addresses: AddressEntry[]\n): Omit<AddressEntry, 'publicKey'>[] => {\n  const deduped = [...new Map(addresses.map(a => [a.address, a])).values()];\n  return deduped.map(({ ...a }) => {\n    if ('publicKey' in a) delete a.publicKey;\n    if ('derivationPath' in a) delete a.derivationPath;\n    if ('tweakedPublicKey' in a) delete a.tweakedPublicKey;\n    return a;\n  });\n};\n\n/**\n * @internal Helper to safely store data in localStorage\n */\nexport function setLocalStorageData(data: {\n  addresses?: { stx?: AddressEntry[]; btc?: AddressEntry[] };\n}) {\n  try {\n    const existing = getLocalStorage();\n    const current: StorageData = existing || INITIAL_STORAGE;\n\n    const updated = {\n      ...current,\n      updatedAt: Date.now(),\n      addresses: {\n        ...current.addresses,\n        ...(data.addresses && {\n          stx:\n            data.addresses.stx &&\n            normalizeAddresses([\n              ...(current.addresses.stx as AddressEntry[]),\n              ...data.addresses.stx,\n            ]),\n          btc:\n            data.addresses.btc &&\n            normalizeAddresses([\n              ...(current.addresses.btc as AddressEntry[]),\n              ...data.addresses.btc,\n            ]),\n        }),\n      },\n    };\n\n    localStorage.setItem(LOCAL_STORAGE_KEY, bytesToHex(utf8ToBytes(JSON.stringify(updated))));\n  } catch (error) {\n    console.warn('Failed to store data in localStorage:', error);\n  }\n}\n\n/**\n * Clears all stored connect data from localStorage\n */\nexport function clearLocalStorage() {\n  try {\n    localStorage.removeItem(LOCAL_STORAGE_KEY);\n  } catch (error) {\n    console.warn('Failed to clear localStorage:', error);\n  }\n}\n\n/**\n * Gets the current connect data from localStorage\n */\nexport function getLocalStorage(): StorageData | null {\n  try {\n    const hex = localStorage.getItem(LOCAL_STORAGE_KEY);\n    return hex ? JSON.parse(bytesToUtf8(hexToBytes(hex))) : null;\n  } catch (error) {\n    console.warn('Failed to get data from localStorage:', error);\n    return null;\n  }\n}\n\n/** Disconnect selected wallet, clear session data and potentially clear local storage. */\nexport function disconnect() {\n  // Custom disconnect (needed for WalletConnect)\n  const provider = getSelectedProvider();\n  if (provider && 'disconnect' in provider) provider.disconnect();\n\n  // Default disconnect\n  clearSelectedProviderId();\n  clearLocalStorage();\n  new UserSession().store.deleteSessionData();\n}\n\n/**\n * Checks if the user is connected.\n * Aka has successfully connected to a wallet and received an address.\n * This requires the {@link request} method to have been called with `enableLocalStorage: true`.\n */\nexport function isConnected(): boolean {\n  const storage = getLocalStorage();\n  return storage?.addresses.stx.length > 0 || storage?.addresses.btc.length > 0;\n}\n","import type {\n  UniversalConnector as UniversalConnectorType,\n  UniversalConnectorConfig,\n} from '@reown/appkit-universal-connector';\nimport {\n  AddressEntry,\n  GetAddressesResult,\n  JsonRpcResponse,\n  MethodParamsRaw,\n  MethodsRaw,\n  NetworkString,\n  SignMessageResult,\n} from '../methods';\nimport { StacksProvider } from '../types/provider';\nimport { Chains, Default } from './config';\n\nfunction jsonRpcResponse<M extends keyof MethodsRaw>(result: unknown): JsonRpcResponse<M> {\n  return {\n    jsonrpc: '2.0',\n    id: 1,\n    result,\n  } as JsonRpcResponse<M>;\n}\n\nclass WalletConnectProvider implements StacksProvider {\n  private connector: UniversalConnectorType;\n  constructor(connector: UniversalConnectorType) {\n    this.connector = connector;\n  }\n\n  private async connect() {\n    // Access the AppKit instance to detect modal dismissal.\n    // The field is private in TS but present at runtime.\n    const appKit = (this.connector as any).appKit as\n      | { subscribeState(cb: (state: { open: boolean }) => void): () => void }\n      | undefined;\n\n    return new Promise<Awaited<ReturnType<UniversalConnectorType['connect']>>['session']>(\n      (resolve, reject) => {\n        // When the user closes the WalletConnect modal without pairing,\n        // connector.connect() hangs forever. Detect that and reject.\n        const unsubscribe = appKit?.subscribeState((state: { open: boolean }) => {\n          if (!state.open && !this.connector.provider?.session) {\n            unsubscribe?.();\n            reject(new Error('User closed the WalletConnect modal'));\n          }\n        });\n\n        this.connector\n          .connect()\n          .then(({ session }) => {\n            unsubscribe?.();\n            resolve(session);\n          })\n          .catch(error => {\n            unsubscribe?.();\n            console.error('>> WalletConnectProvider connect error', error);\n            reject(error);\n          });\n      }\n    );\n  }\n\n  private get stacksAddresses(): (AddressEntry & { path?: string; purpose?: string })[] {\n    const session = this.connector.provider?.session;\n\n    if (!session?.namespaces?.stacks?.accounts) return [];\n\n    const stacksSessionAddressesString = session?.sessionProperties?.['stacks_getAddresses'];\n    const stacksSessionAddresses = JSON.parse(stacksSessionAddressesString || '[]');\n    const stacksAddresses = session.namespaces.stacks.accounts.map(account => ({\n      address: account.split(':')[2],\n      publicKey: '',\n    }));\n\n    const allAddresses: AddressEntry[] = [\n      ...(stacksAddresses || []),\n      ...(stacksSessionAddresses || []),\n    ].sort(a => (a.publicKey ? 1 : -1));\n\n    return Array.from(new Map(allAddresses.map(addr => [addr.address, addr])).values());\n  }\n\n  private get btcAddresses(): AddressEntry[] {\n    const session = this.connector.provider?.session;\n\n    if (!session?.namespaces?.bip122?.accounts) return [];\n\n    const btcSessionAddressesString = session?.sessionProperties['bip122_getAccountAddresses'];\n    const btcSessionAddresses = JSON.parse(btcSessionAddressesString || '{}');\n    const btcAddresses = session.namespaces.bip122.accounts.map(account => ({\n      address: account.split(':')[2],\n      publicKey: '',\n    }));\n\n    const allAddresses: (AddressEntry & { path?: string; purpose?: string })[] = [\n      ...(btcSessionAddresses?.payment.map(a => ({ ...a, purpose: 'payment' })) || []),\n      ...(btcSessionAddresses?.ordinal.map(a => ({ ...a, purpose: 'ordinal' })) || []),\n      ...(btcAddresses || []),\n    ]\n      // Sort entries without public key first, to overwrite with entries from session with public key\n      .sort(a => (a.publicKey ? 1 : -1))\n      // Sort by address length ascending (payment first)\n      .sort((a, b) => a?.address.length - b?.address.length);\n\n    return Array.from(new Map(allAddresses.map(addr => [addr.address, addr])).values());\n  }\n\n  private async getAddresses(): Promise<GetAddressesResult> {\n    let session = this.connector.provider?.session;\n\n    if (!session) {\n      session = await this.connect();\n    }\n\n    const stacksAddresses = this.stacksAddresses;\n    const btcAddresses = this.btcAddresses;\n    const addresses = [...stacksAddresses, ...btcAddresses];\n\n    return { addresses };\n  }\n\n  private validateRpcMethod(method: keyof MethodsRaw) {\n    const accountMethods = ['getAddresses', 'stx_getAccounts', 'stx_getAddresses'];\n    if (accountMethods.includes(method)) {\n      return;\n    }\n\n    if (!this.connector.provider?.session) {\n      throw new Error('WalletConnectProvider not connected. Please connect first.');\n    }\n    const namespaces = this.connector.provider?.session.namespaces;\n    const stacksMethods = namespaces['stacks']?.methods || [];\n    const btcMethods = namespaces['bip122']?.methods || [];\n    const methods = [...stacksMethods, ...btcMethods];\n\n    if (!methods.includes(method)) {\n      throw new Error(\n        `WalletConnectProvider does not support method ${method}. Please use a supported method.`\n      );\n    }\n  }\n\n  private getTargetCaipNetworkId<M extends keyof MethodsRaw>(\n    method: M,\n    params?: MethodParamsRaw<M>\n  ) {\n    const accountMethods = ['getAddresses', 'stx_getAccounts', 'stx_getAddresses'];\n    const network = params && 'network' in params ? (params.network as NetworkString) : undefined;\n\n    if (network) {\n      return {\n        mainnet: Chains.Stacks.Mainnet.caipNetworkId,\n        testnet: Chains.Stacks.Testnet.caipNetworkId,\n      }[network];\n    }\n\n    if (accountMethods.includes(method)) {\n      return Chains.Stacks.Mainnet.caipNetworkId;\n    }\n\n    if (this.connector.provider?.session?.namespaces?.stacks?.methods.includes(method)) {\n      return Chains.Stacks.Mainnet.caipNetworkId;\n    }\n\n    if (this.connector.provider?.session?.namespaces?.bip122?.methods.includes(method)) {\n      return Chains.Bitcoin.Mainnet.caipNetworkId;\n    }\n\n    throw new Error(\n      `WalletConnectProvider does not support method ${method}. Please use a supported method.`\n    );\n  }\n\n  async request<M extends keyof MethodsRaw>(\n    method: M,\n    params?: MethodParamsRaw<M>\n  ): Promise<JsonRpcResponse<M>> {\n    try {\n      this.validateRpcMethod(method);\n      const caipNetworkId = this.getTargetCaipNetworkId(method, params);\n\n      switch (method) {\n        case 'getAddresses':\n        case 'stx_getAddresses':\n        case 'stx_getAccounts':\n          const addresses = await this.getAddresses();\n          return jsonRpcResponse(addresses);\n        case 'stx_signMessage':\n          const caipAddress = this.connector.provider?.session?.namespaces?.stacks?.accounts[0];\n          const address = caipAddress.split(':')[2];\n          const result = (await this.connector.request(\n            { method, params: { address, ...params } },\n            caipNetworkId\n          )) as SignMessageResult;\n          return jsonRpcResponse(result);\n        default:\n          return (await this.connector.request(\n            { method, params },\n            caipNetworkId\n          )) as JsonRpcResponse<M>;\n      }\n    } catch (error) {\n      console.error('>> WalletConnectProvider request error', error);\n      throw error;\n    }\n  }\n\n  async disconnect() {\n    await this.connector.disconnect();\n  }\n}\n\nexport async function initializeWalletConnectProvider(projectId: string): Promise<void>;\nexport async function initializeWalletConnectProvider(\n  config: Partial<Pick<UniversalConnectorConfig, 'metadata' | 'networks'>> &\n    Omit<UniversalConnectorConfig, 'metadata' | 'networks'>\n): Promise<void>;\nexport async function initializeWalletConnectProvider(\n  arg:\n    | string\n    | (Partial<Pick<UniversalConnectorConfig, 'metadata' | 'networks'>> &\n        Omit<UniversalConnectorConfig, 'metadata' | 'networks'>)\n): Promise<void> {\n  if (window['WalletConnectProvider']) return;\n\n  const { projectId, config } =\n    typeof arg === 'string'\n      ? { projectId: arg, config: undefined }\n      : { projectId: arg.projectId, config: arg };\n\n  const { UniversalConnector } = await import('@reown/appkit-universal-connector');\n  const provider = await UniversalConnector.init({\n    ...Default,\n    ...config,\n    projectId,\n  });\n\n  const walletConnectProvider = new WalletConnectProvider(provider);\n\n  window['WalletConnectProvider'] = walletConnectProvider;\n}\n\n// Re-export config constants\nexport { Networks, Chains, Default } from './config';\n\n// Export with consumer-facing name\nexport { initializeWalletConnectProvider as initializeProvider };\n","import type {\n  CustomCaipNetwork,\n  UniversalConnectorConfig,\n} from '@reown/appkit-universal-connector';\nimport { MethodsRaw } from '../methods';\n\nconst stacksMethods: (keyof MethodsRaw)[] = [\n  'stx_signMessage',\n  'stx_signTransaction',\n  'stx_signStructuredMessage',\n  'stx_getAccounts',\n  'stx_getAddresses',\n  'stx_updateProfile',\n  'stx_transferStx',\n  'stx_transferSip10Ft',\n  'stx_transferSip9Nft',\n  'stx_callContract',\n  'stx_deployContract',\n  'sendTransfer',\n  'signPsbt',\n  'getAddresses',\n];\n\nexport namespace Chains {\n  export namespace Stacks {\n    export const Mainnet: CustomCaipNetwork<'stacks'> = {\n      id: 1,\n      chainNamespace: 'stacks' as const,\n      caipNetworkId: 'stacks:1',\n      name: 'Stacks',\n      nativeCurrency: { name: 'STX', symbol: 'STX', decimals: 6 },\n      rpcUrls: { default: { http: ['https://api.mainnet.hiro.so'] } },\n    };\n\n    export const Testnet: CustomCaipNetwork<'stacks'> = {\n      id: 2,\n      chainNamespace: 'stacks' as const,\n      caipNetworkId: 'stacks:2147483648',\n      name: 'Stacks Testnet',\n      nativeCurrency: { name: 'STX', symbol: 'STX', decimals: 6 },\n      rpcUrls: { default: { http: ['https://api.testnet.hiro.so'] } },\n    };\n  }\n\n  export namespace Bitcoin {\n    export const Mainnet: CustomCaipNetwork<'bip122'> = {\n      id: '000000000019d6689c085ae165831e93',\n      caipNetworkId: 'bip122:000000000019d6689c085ae165831e93',\n      chainNamespace: 'bip122' as const,\n      name: 'Bitcoin',\n      nativeCurrency: { name: 'Bitcoin', symbol: 'BTC', decimals: 8 },\n      rpcUrls: { default: { http: ['https://rpc.walletconnect.org/v1'] } },\n    };\n\n    export const Testnet: CustomCaipNetwork<'bip122'> = {\n      id: '000000000933ea01ad0ee984209779ba',\n      caipNetworkId: 'bip122:000000000933ea01ad0ee984209779ba',\n      chainNamespace: 'bip122' as const,\n      name: 'Bitcoin Testnet',\n      nativeCurrency: { name: 'Bitcoin', symbol: 'BTC', decimals: 8 },\n      rpcUrls: { default: { http: ['https://rpc.walletconnect.org/v1'] } },\n      testnet: true,\n    };\n  }\n}\n\nexport namespace Networks {\n  export const Stacks = {\n    namespace: 'stacks',\n    chains: [Chains.Stacks.Mainnet, Chains.Stacks.Testnet],\n    methods: stacksMethods,\n    events: ['stx_chainChanged', 'stx_accountsChanged'],\n  };\n\n  export const Bitcoin = {\n    namespace: 'bip122',\n    chains: [Chains.Bitcoin.Mainnet],\n    methods: ['signMessage', 'sendTransfer', 'signPsbt', 'getAccountAddresses'],\n    events: ['bip122_addressesChanged'],\n  };\n}\n\nexport const Default: Omit<UniversalConnectorConfig, 'projectId'> = {\n  metadata: {\n    name: 'Universal Connector',\n    description: 'Universal Connector',\n    url: 'https://appkit.reown.com',\n    icons: ['https://appkit.reown.com/icon.png'],\n  },\n  networks: [Networks.Stacks, Networks.Bitcoin],\n};\n","import { base64 } from '@scure/base';\nimport { bytesToHex, hexToBytes } from '@stacks/common';\nimport {\n  getInstalledProviders,\n  getProvider,\n  getProviderFromId,\n  setSelectedProviderId,\n  WbipProvider,\n} from '@stacks/connect-ui';\nimport { defineCustomElements } from '@stacks/connect-ui/loader';\nimport { Cl, PostCondition, postConditionToHex } from '@stacks/transactions';\nimport { JsonRpcError, JsonRpcErrorCode } from './errors';\nimport {\n  AddressEntry,\n  MethodParams,\n  MethodParamsRaw,\n  MethodResult,\n  MethodResultRaw,\n  Methods,\n  MethodsRaw,\n  SendTransferParams,\n} from './methods';\nimport { DEFAULT_PROVIDERS, WALLET_CONNECT_PROVIDER } from './providers';\nimport { setLocalStorageData } from './storage';\nimport { StacksProvider } from './types';\nimport { initializeWalletConnectProvider } from './walletconnect';\nimport type { UniversalConnectorConfig } from '@reown/appkit-universal-connector';\n\nexport interface ConnectRequestOptions {\n  /**\n   * The provider to use for the request.\n   * If none is provided the UI will be shown.\n   * Defaults to the previously selected provider (unless `forceWalletSelect` is `true`).\n   */\n  provider?: StacksProvider;\n\n  /**\n   * Forces the user to select a wallet.\n   * Defaults to `false`.\n   */\n  forceWalletSelect?: boolean;\n\n  /**\n   * Persist the selected wallet across requests.\n   * Defaults to `true`.\n   */\n  persistWalletSelect?: boolean;\n\n  /**\n   * Adds manual request rewriting to make different providers behave more closely to SIP-030 / WBIPs.\n   * Defaults to `true`.\n   */\n  enableOverrides?: boolean;\n\n  /**\n   * Enable local storage caching of addresses.\n   * Defaults to `true`.\n   */\n  enableLocalStorage?: boolean;\n\n  /**\n   * The default wallets to display in the modal.\n   * Defaults to some known popular wallets.\n   */\n  defaultProviders?: WbipProvider[];\n\n  /**\n   * A list of provider IDs that are approved to be shown in the Stacks Connect modal.\n   * If not provided, all default and installed providers will be shown.\n   */\n  approvedProviderIds?: string[];\n\n  /**\n   * @deprecated Use `walletConnect` instead. If `walletConnect` is provided, `walletConnectProjectId` is ignored.\n   *\n   * The project ID for WalletConnect.\n   * If provided, the WalletConnect provider will be created with default metadata and networks.\n   */\n  walletConnectProjectId?: string;\n\n  /**\n   * The config for WalletConnect.\n   * If provided, the WalletConnect provider will be created.\n   * - `config.projectId` is required.\n   * - `config.metadata` and `config.networks` are optional and will use default values if not provided.\n   *\n   * If using `walletConnect` alongside `approvedProviderIds`, make sure to include\n   * `\"WalletConnectProvider\"` in the `approvedProviderIds` array.\n   */\n  walletConnect?: Partial<Pick<UniversalConnectorConfig, 'metadata' | 'networks'>> &\n    Omit<UniversalConnectorConfig, 'metadata' | 'networks'>;\n}\n\nexport async function requestRaw<M extends keyof MethodsRaw>(\n  provider: StacksProvider,\n  method: M,\n  params?: MethodParamsRaw<M>\n): Promise<MethodResultRaw<M>> {\n  try {\n    const response = await provider.request(method, params);\n    if (!response) {\n      throw new JsonRpcError('Provider did not return a response', JsonRpcErrorCode.UnknownError);\n    }\n    if ('error' in response) throw JsonRpcError.fromResponse(response.error);\n\n    return response.result;\n  } catch (error) {\n    if (error instanceof JsonRpcError) throw error;\n    if ('jsonrpc' in error) throw JsonRpcError.fromResponse(error.error);\n\n    const code = error.code ?? JsonRpcErrorCode.UnknownError;\n    throw new JsonRpcError(error.message, code, error.data, error);\n  }\n}\n\n/**\n * @internal Helper function that wraps requestRaw with local storage support\n */\nfunction createRequestWithStorage(enableLocalStorage: boolean): typeof requestRaw {\n  if (!enableLocalStorage) return requestRaw;\n\n  return async function requestRawWithStorage<M extends keyof MethodsRaw>(\n    provider: StacksProvider,\n    method: M,\n    params?: MethodParamsRaw<M>\n  ): Promise<MethodResultRaw<M>> {\n    const result = await requestRaw(provider, method, params);\n    if (\n      (method === 'getAddresses' || (method as string) === 'wallet_connect') &&\n      'addresses' in result\n    ) {\n      const { stx, btc } = sortAddresses(result.addresses).reduce(\n        (acc, addr) => {\n          acc[addr.address.startsWith('S') ? 'stx' : 'btc'].push(addr);\n          return acc;\n        },\n        { stx: [], btc: [] }\n      );\n\n      setLocalStorageData({ addresses: { stx, btc } });\n    }\n    return result;\n  };\n}\n\n/**\n * The main `request` method for interacting with wallets.\n * This method adds automatic error handling, request parameter serialization, and optional local storage.\n * For more advanced use cases, consider using the {@link requestRaw} method directly.\n *\n * @example\n * ```\n * // Send BTC\n * const result = await request('sendTransfer', {\n *   recipients: [{\n *     address: 'bc1...',\n *     amount: 100_000_000n, // 1 BTC = 100,000,000 sats\n *   }],\n * });\n * ```\n *\n * @example\n * ```\n * // Optional features\n * const result = await request({\n *   provider: MyCustomProvider,\n *   defaultProviders: [MyCustomProvider, ...],\n *   forceWalletSelect: false,\n *   persistWalletSelect: true,\n *   enableOverrides: true,\n *   enableLocalStorage: true,\n * }, 'method', params);\n * ```\n */\nexport async function request<M extends keyof Methods>(\n  method: M,\n  params?: MethodParams<M>\n): Promise<MethodResult<M>>;\nexport async function request<M extends keyof Methods>(\n  options: ConnectRequestOptions,\n  method: M,\n  params?: MethodParams<M>\n): Promise<MethodResult<M>>;\nexport async function request<M extends keyof Methods>(\n  ...args:\n    | [method: M, params?: MethodParams<M>]\n    | [options: ConnectRequestOptions, method: M, params?: MethodParams<M>]\n): Promise<MethodResult<M>> {\n  const { options: _options, method, params } = requestArgs(args);\n\n  const opts = Object.assign(\n    {\n      provider: null,\n      defaultProviders: DEFAULT_PROVIDERS,\n      forceWalletSelect: false,\n      persistWalletSelect: true,\n      enableOverrides: true,\n      enableLocalStorage: true,\n    },\n    shallowDefined(_options)\n  );\n\n  // Handle WalletConnect optional provider\n  if (opts?.walletConnect) {\n    await initializeWalletConnectProvider(opts.walletConnect).catch(console.error);\n    opts.defaultProviders = [...opts.defaultProviders, WALLET_CONNECT_PROVIDER];\n  } else if (opts?.walletConnectProjectId) {\n    await initializeWalletConnectProvider(opts.walletConnectProjectId).catch(console.error);\n    opts.defaultProviders = [...opts.defaultProviders, WALLET_CONNECT_PROVIDER];\n  }\n\n  // Call getProvider() after all the providers have been initialized\n  opts.provider = opts.provider ?? getProvider();\n\n  const req = wrapResultOverrides(\n    opts.enableOverrides,\n    createRequestWithStorage(opts.enableLocalStorage)\n  );\n\n  // WITHOUT UI\n  if (opts.provider && !opts.forceWalletSelect) {\n    const { method: finalMethod, params: finalParams } = getMethodOverrides(\n      opts.provider,\n      method,\n      params,\n      opts.enableOverrides\n    );\n    return await req(opts.provider, finalMethod as any, serializeParams(finalParams));\n  }\n\n  // WITH UI\n  if (typeof window === 'undefined') return undefined; // don't throw for SSR contexts\n\n  void defineCustomElements(window);\n\n  return new Promise((resolve, reject) => {\n    const element = document.createElement('connect-modal');\n    element.defaultProviders = filterProviders(opts.approvedProviderIds, opts.defaultProviders);\n    element.installedProviders = filterProviders(\n      opts.approvedProviderIds,\n      getInstalledProviders(opts.defaultProviders)\n    );\n\n    const originalOverflow = document.body.style.overflow;\n    document.body.style.overflow = 'hidden';\n\n    const closeModal = () => {\n      element.remove();\n      document.body.style.overflow = originalOverflow;\n    };\n\n    element.callback = (selectedProviderId: string | undefined) => {\n      closeModal();\n\n      const selectedProvider = getProviderFromId(selectedProviderId);\n\n      const { method: finalMethod, params: finalParams } = getMethodOverrides(\n        selectedProvider,\n        method,\n        params,\n        opts.enableOverrides\n      );\n\n      const proxy = createPersistProviderProxy(opts.persistWalletSelect, selectedProviderId);\n      resolve(req(selectedProvider, finalMethod as any, serializeParams(finalParams)).then(proxy));\n    };\n\n    element.cancelCallback = () => {\n      closeModal();\n      reject(new JsonRpcError('User canceled the request', JsonRpcErrorCode.UserCanceled));\n    };\n\n    document.body.appendChild(element);\n\n    const handleEsc = (ev: KeyboardEvent) => {\n      if (ev.key !== 'Escape') return;\n      document.removeEventListener('keydown', handleEsc);\n      element.remove();\n      reject(new JsonRpcError('User canceled the request', JsonRpcErrorCode.UserCanceled));\n    };\n    document.addEventListener('keydown', handleEsc);\n  });\n}\n\n/** @internal */\nfunction requestArgs<M extends keyof Methods>(\n  args:\n    | [method: M, params?: MethodParams<M>]\n    | [options: ConnectRequestOptions, method: M, params?: MethodParams<M>]\n): {\n  method: M;\n  params?: MethodParams<M>;\n  options?: ConnectRequestOptions;\n} {\n  if (typeof args[0] === 'string') return { method: args[0], params: args[1] as MethodParams<M> };\n  return { options: args[0], method: args[1] as M, params: args[2] };\n}\n\n/** @internal */\nfunction filterProviders(approvedProviderIds: string[], providers: WbipProvider[]): WbipProvider[] {\n  if (!approvedProviderIds) return providers;\n  return providers.filter(p => approvedProviderIds.includes(p.id));\n}\n\n/**\n * Initiate a wallet connection and request addresses.\n * Alias for `request` to `getAddresses` with `forceWalletSelect: true`.\n */\nexport function connect(options?: ConnectRequestOptions & MethodParams<'getAddresses'>) {\n  const params = options && 'network' in options ? { network: options.network } : undefined;\n  return request({ ...options, forceWalletSelect: true }, 'getAddresses', params);\n}\n\n/**\n * **Note:** Higher order function!\n * @internal Legacy non-UI request.\n */\nexport function requestRawLegacy<M extends keyof Methods, O, R>(\n  method: M,\n  mapOptions: (options: O) => MethodParams<M>,\n  mapResponse: (response: MethodResult<M>) => R\n) {\n  return (options: O, provider?: StacksProvider) => {\n    if (!provider) throw new Error('[Connect] No installed Stacks wallet found');\n\n    const params = mapOptions(options);\n\n    // Manual cast, since TypeScipt can't infer generic type of options\n    const o = options as {\n      onCancel?: (error?: Error) => void;\n      onFinish?: (response: R) => void;\n    };\n\n    const { method: finalMethod, params: finalParams } = getMethodOverrides(\n      provider,\n      method,\n      params\n    );\n\n    void requestRaw(provider, finalMethod as any, serializeParams(finalParams))\n      .then(response => {\n        const r = mapResponse(response);\n        o.onFinish?.(r);\n      })\n      .catch(o.onCancel);\n  };\n}\n\n// todo: strip params that might be unserializable or privacy sensitive, e.g.\n// appDetails?: AuthOptions['appDetails'];\n// authOrigin?: string;\n// network?: ConnectNetwork;\n// stxAddress?: string;\n// userSession?: UserSession;\n// onFinish?: ProfileUpdateFinished;\n// onCancel?: ProfileUpdateCanceled;\n\nfunction isXverseLike(provider: StacksProvider): boolean {\n  return isXverse(provider) || isFordefi(provider);\n}\n\nfunction isXverse(provider: StacksProvider): boolean {\n  return (\n    // Best effort detection for Xverse\n    'signMultipleTransactions' in provider &&\n    'createRepeatInscriptions' in provider &&\n    !provider?.['isLeather'] &&\n    !provider?.['isFordefi']\n  );\n}\n\nfunction isFordefi(provider: StacksProvider): boolean {\n  return 'isFordefi' in provider && !!provider.isFordefi;\n}\n\nfunction isLeather(provider: StacksProvider): boolean {\n  return 'isLeather' in provider && !!provider.isLeather;\n}\n\nfunction shallowDefined<T extends object>(obj: T): Partial<T> {\n  if (obj === undefined) return {};\n  const result: Partial<T> = {};\n  for (const [key, value] of Object.entries(obj)) {\n    if (value !== undefined) result[key as keyof T] = value;\n  }\n  return result;\n}\n\n/** @internal Higher-order function for proxying request results with overrides */\nfunction wrapResultOverrides<\n  M extends keyof MethodsRaw,\n  P extends MethodParamsRaw<M>,\n  R extends MethodResultRaw<M>,\n>(\n  enableOverrides: boolean,\n  request: (provider: StacksProvider, method: M, params?: P) => Promise<R>\n) {\n  if (!enableOverrides) return request;\n\n  return async (provider: StacksProvider, method: M, params?: P): Promise<R> => {\n    const result = await request(provider, method, params);\n\n    const modifiedResult = { ...result };\n\n    // Handle txId/txid case variation (Fordefi returns `txId`, others return `txid`)\n    if (result !== null && 'txId' in result && result.txId && !('txid' in modifiedResult)) {\n      (modifiedResult as any).txid = result.txId;\n    }\n\n    // Handle Leather returning `hex` instead of `psbt` (base64 encoded)\n    if (\n      result !== null &&\n      'hex' in result &&\n      result.hex &&\n      typeof result.hex === 'string' &&\n      !('psbt' in modifiedResult)\n    ) {\n      (modifiedResult as any).psbt = base64.encode(hexToBytes(result.hex));\n    }\n\n    return modifiedResult;\n  };\n}\n\nfunction getMethodOverrides<M extends keyof Methods>(\n  provider: StacksProvider,\n  method: M,\n  params?: MethodParams<M>,\n  enableOverrides: boolean = true\n): { method: string; params: any } {\n  if (!provider || !enableOverrides) return { method, params };\n\n  // Xverse-ish wallets\n  if (\n    isXverseLike(provider) &&\n    // Permission granting method\n    ['getAddresses', 'stx_getAddresses'].includes(method)\n  ) {\n    return { method: 'wallet_connect', params };\n  }\n\n  // Xverse-ish `sendTransfer`\n  if (isXverseLike(provider) && method === 'sendTransfer') {\n    const paramsXverse = {\n      ...params,\n      recipients: (params as SendTransferParams).recipients.map(r => ({\n        ...r,\n        amount: Number(r.amount), // Xverse expects amount as number\n      })),\n      network: undefined, // strip network until Xverse adds it as optional\n    };\n    return { method, params: paramsXverse };\n  }\n\n  // Xverse-ish `signPsbt`\n  if (isXverseLike(provider) && method === 'signPsbt') {\n    const signInputs = (params as MethodParams<'signPsbt'>).signInputs;\n    if (!signInputs) return { method, params };\n\n    // Transform array of SignInputsByAddress into Record<string, number[]>\n    const signRecord: Record<string, number[]> = {};\n    for (const input of signInputs) {\n      if (typeof input === 'number') continue; // Skip plain numbers\n      if (!input.address) continue; // Skip entries without address\n\n      if (!signRecord[input.address]) signRecord[input.address] = [];\n\n      signRecord[input.address].push(input.index);\n    }\n\n    const paramsXverse = {\n      psbt: (params as MethodParams<'signPsbt'>).psbt,\n      signInputs: signRecord,\n      broadcast: (params as MethodParams<'signPsbt'>).broadcast,\n      // todo: add `network` when Xverse supports it\n    };\n    return { method, params: paramsXverse };\n  }\n\n  // Non-Xverse-ish `stx_signMessage`\n  if (!isXverseLike(provider) && method === 'stx_signMessage') {\n    const p = { ...(params as MethodParams<'stx_signMessage'>) };\n    delete p.publicKey;\n    return { method, params: p };\n  }\n\n  // Leather `sendTransfer`\n  if (isLeather(provider) && method === 'sendTransfer') {\n    const paramsLeather = {\n      ...params,\n      recipients: (params as SendTransferParams).recipients.map(r => ({\n        ...r,\n        amount: r.amount.toString(), // Leather expects amount as string\n      })),\n    };\n    return { method, params: paramsLeather };\n  }\n\n  // Leather `signPsbt`\n  if (isLeather(provider) && method === 'signPsbt') {\n    const paramsLeather = {\n      hex: bytesToHex(base64.decode((params as MethodParams<'signPsbt'>).psbt)),\n      signAtIndex: (params as MethodParams<'signPsbt'>).signInputs.map(i => {\n        if (typeof i === 'number') return i;\n        return i.index;\n      }),\n      allowedSighash: (params as MethodParams<'signPsbt'>).allowedSighash,\n      broadcast: (params as MethodParams<'signPsbt'>).broadcast,\n      network: (params as MethodParams<'signPsbt'>).network,\n    };\n    return { method, params: paramsLeather };\n  }\n\n  return { method, params };\n}\n\nconst POST_CONDITIONS = [\n  'stx-postcondition',\n  'ft-postcondition',\n  'nft-postcondition',\n] satisfies PostCondition['type'][];\n\n/**\n * @internal\n * Simple function for serializing clarity object values to hex strings, in case wallets don't support them.\n */\nexport function serializeParams<M extends keyof Methods>(params: MethodParams<M>): MethodParams<M> {\n  if (!params || typeof params !== 'object') return params;\n\n  const result = { ...params };\n\n  for (const [key, value] of Object.entries(params)) {\n    // Handle bigint values\n    if (typeof value === 'bigint') {\n      result[key] = value.toString();\n      continue;\n    }\n\n    // Keep original value, don't override\n    if (!value) continue;\n\n    // Handle array of things\n    if (Array.isArray(value)) {\n      result[key] = value.map(item => {\n        if (typeof item === 'bigint') return item.toString();\n        if (!item || typeof item !== 'object' || !('type' in item)) return item;\n        if (POST_CONDITIONS.includes(item.type)) return postConditionToHex(item);\n        return Cl.serialize(item);\n      });\n      continue;\n    }\n\n    // Handle things\n    if (typeof value === 'object' && 'type' in value) {\n      result[key] = POST_CONDITIONS.includes(value.type)\n        ? // Post condition\n          postConditionToHex(value)\n        : // Clarity value\n          Cl.serialize(value);\n    }\n  }\n\n  return JSON.parse(JSON.stringify(result)); // Strip unserializable values\n}\n\n/** @internal Higher order function for persisting the selected provider */\nfunction createPersistProviderProxy(shouldPersist: boolean, providerId: string) {\n  return function persistProvider<T>(result: T) {\n    if (shouldPersist) {\n      try {\n        setSelectedProviderId(providerId);\n      } catch (e) {\n        // ignore errors\n      }\n    }\n\n    return result;\n  };\n}\n\n/** @internal */\nfunction sortAddresses(addresses: AddressEntry[]) {\n  return addresses.slice().sort((a, b) => {\n    const aPayment = 'purpose' in a && a.purpose === 'payment';\n    const bPayment = 'purpose' in b && b.purpose === 'payment';\n\n    // Move payment addresses to the beginning\n    if (aPayment && !bPayment) return -1;\n    if (!aPayment && bPayment) return 1;\n    return 0;\n  });\n}\n","import type { AuthOptions } from '../types/auth';\nimport {\n  ClarityValue as LegacyClarityValue,\n  PostCondition as LegacyPostCondition,\n  PostConditionMode as LegacyPostConditionMode,\n} from '@stacks/transactions-v6';\nimport {\n  PostConditionMode,\n  PostCondition,\n  AnchorMode,\n  ClarityValue,\n  StacksTransactionWire,\n} from '@stacks/transactions';\nimport { ConnectNetwork } from './network';\nimport { UserSession } from '../auth';\n\nexport interface TxBase {\n  appDetails?: AuthOptions['appDetails'];\n  postConditionMode?: LegacyPostConditionMode | PostConditionMode;\n  postConditions?: (string | LegacyPostCondition | PostCondition)[];\n  network?: ConnectNetwork;\n  anchorMode?: AnchorMode;\n  attachment?: string;\n  fee?: number | string;\n  /**\n   * Provide the Hiro Wallet with a suggested account to sign this transaction with.\n   * This is set by default if a `userSession` option is provided.\n   */\n  stxAddress?: string;\n  /** @deprecated `unused - only included for compatibility with @stacks/transactions` */\n  senderKey?: string;\n  /** @deprecated `unused - only included for compatibility with @stacks/transactions` */\n  nonce?: number;\n}\n\nexport interface SignTransactionBase {\n  appDetails?: AuthOptions['appDetails'];\n  network?: ConnectNetwork;\n  attachment?: string;\n  /**\n   * Provide wallets with a suggested account to sign this transaction with.\n   * This is set by default if a `userSession` option is provided.\n   */\n  stxAddress?: string;\n  txHex: string;\n  /** @deprecated `unused - only included for compatibility with other transaction types` */\n  postConditions?: (string | LegacyPostCondition | PostCondition)[];\n}\n\nexport interface SponsoredFinishedTxPayload {\n  txRaw: string;\n}\n\nexport interface SponsoredFinishedTxData extends SponsoredFinishedTxPayload {\n  stacksTransaction: StacksTransactionWire;\n}\n\nexport interface FinishedTxPayload extends SponsoredFinishedTxPayload {\n  txId: string;\n}\n\nexport interface FinishedTxData extends FinishedTxPayload {\n  stacksTransaction: StacksTransactionWire;\n}\n\nexport enum TransactionTypes {\n  ContractCall = 'contract_call',\n  ContractDeploy = 'smart_contract',\n  STXTransfer = 'token_transfer',\n}\n\n/**\n * Contract Call\n */\n\nexport enum ContractCallArgumentType {\n  BUFFER = 'buffer',\n  UINT = 'uint',\n  INT = 'int',\n  PRINCIPAL = 'principal',\n  BOOL = 'bool',\n}\n\nexport interface ContractCallBase extends TxBase {\n  contractAddress: string;\n  contractName: string;\n  functionName: string;\n  functionArgs: (string | LegacyClarityValue | ClarityValue)[];\n}\n\nexport interface OptionsBase {\n  /**\n   * @deprecated Authentication is no longer supported through a hosted\n   * version. Users must install an extension.\n   */\n  authOrigin?: string;\n  userSession?: UserSession;\n}\n\nexport type SponsoredFinished = (data: SponsoredFinishedTxData) => void;\nexport type Finished = (data: FinishedTxData) => void;\nexport type Canceled = (error?: Error) => void;\n\nexport interface SponsoredOptionsBase extends TxBase, OptionsBase {\n  sponsored: true;\n  onFinish?: SponsoredFinished;\n  onCancel?: Canceled;\n}\n\nexport interface RegularOptionsBase extends TxBase, OptionsBase {\n  sponsored?: false;\n  onFinish?: Finished;\n  onCancel?: Canceled;\n}\n\nexport type ContractCallRegularOptions = ContractCallBase & RegularOptionsBase;\nexport type ContractCallSponsoredOptions = ContractCallBase & SponsoredOptionsBase;\nexport type ContractCallOptions = ContractCallRegularOptions | ContractCallSponsoredOptions;\n\nexport interface ContractCallArgument {\n  type: ContractCallArgumentType;\n  value: string;\n}\n\nexport interface ContractCallPayload extends ContractCallBase {\n  txType: TransactionTypes.ContractCall;\n  publicKey: string;\n  functionArgs: string[];\n  sponsored?: boolean;\n}\n\n/**\n * Contract Deploy\n */\nexport interface ContractDeployBase extends TxBase {\n  contractName: string;\n  codeBody: string;\n  /**\n   * Optional integer value to specify the Clarity version to use for this contract.\n   * Current live Clarity versions are: `1`, `2`, and `3`.\n   *\n   * ⚠︎ Warning: Wallets may not support this parameter yet and typically default to the latest Clarity version.\n   */\n  clarityVersion?: number;\n}\n\nexport type ContractDeployRegularOptions = ContractDeployBase & RegularOptionsBase;\nexport type ContractDeploySponsoredOptions = ContractDeployBase & SponsoredOptionsBase;\nexport type ContractDeployOptions = ContractDeployRegularOptions | ContractDeploySponsoredOptions;\n\nexport interface ContractDeployPayload extends ContractDeployBase {\n  publicKey: string;\n  txType: TransactionTypes.ContractDeploy;\n  sponsored?: boolean;\n}\n\n/**\n * STX Transfer\n */\n\nexport interface STXTransferBase extends TxBase {\n  recipient: string;\n  amount: bigint | string;\n  memo?: string;\n}\n\nexport type STXTransferRegularOptions = STXTransferBase & RegularOptionsBase;\nexport type STXTransferSponsoredOptions = STXTransferBase & SponsoredOptionsBase;\nexport type STXTransferOptions = STXTransferRegularOptions | STXTransferSponsoredOptions;\n\nexport interface STXTransferPayload extends STXTransferBase {\n  publicKey: string;\n  txType: TransactionTypes.STXTransfer;\n  amount: string;\n  sponsored?: boolean;\n}\n\n/**\n * Transaction Popup\n */\n\nexport type TransactionOptions =\n  | ContractCallOptions\n  | ContractDeployOptions\n  | STXTransferOptions\n  | SignTransactionOptions;\nexport type TransactionPayload =\n  | ContractCallPayload\n  | ContractDeployPayload\n  | STXTransferPayload\n  | SignTransactionPayload;\n\nexport interface TransactionPopup {\n  token: string;\n  options: TransactionOptions;\n}\n\nexport interface SignTransactionOptionBase extends SignTransactionBase, OptionsBase {\n  onFinish?: SignTransactionFinished;\n  onCancel?: Canceled;\n}\n\nexport interface SignTransactionPayload extends SignTransactionBase {\n  publicKey: string;\n}\n\nexport type SignTransactionFinished = (data: SignTransactionFinishedTxData) => void;\n\nexport type SignTransactionOptions = SignTransactionOptionBase;\n\nexport interface SignTransactionFinishedTxData {\n  stacksTransaction: StacksTransactionWire;\n}\n","import { UserSession } from '../auth';\nimport { AuthOptions } from './auth';\nimport { ConnectNetwork } from './network';\n\n// Taken from @scure/btc-signer\n// https://github.com/paulmillr/scure-btc-signer\nexport enum SignatureHash {\n  DEFAULT = 0,\n  ALL = 1,\n  NONE = 2,\n  SINGLE = 3,\n  ANYONECANPAY = 0x80,\n}\n\nexport interface PsbtData {\n  hex: string;\n}\n\nexport type PsbtCanceled = (error?: Error) => void;\nexport type PsbtFinished = (data: PsbtData) => void;\n\nexport interface PsbtBase {\n  appDetails?: AuthOptions['appDetails'];\n  authOrigin?: string;\n  network?: ConnectNetwork;\n  onCancel?: PsbtCanceled;\n  onFinish?: PsbtFinished;\n  stxAddress?: string;\n  userSession?: UserSession;\n}\n\nexport interface PsbtRequestOptions extends PsbtBase {\n  allowedSighash?: SignatureHash[];\n  hex: string;\n  signAtIndex?: number | number[];\n}\n\nexport interface CommonPsbtPayload extends PsbtBase {\n  publicKey: string;\n}\n\nexport interface PsbtPayload extends CommonPsbtPayload {\n  allowedSighash?: SignatureHash[];\n  hex: string;\n  signAtIndex?: number | number[];\n}\n\n/**\n * Psbt Popup\n */\nexport interface PsbtPopup {\n  token: string;\n  options: PsbtRequestOptions;\n}\n","import { base64 } from '@scure/base';\nimport { bytesToHex, hexToBytes } from '@stacks/common';\nimport { MethodParams, MethodResult, Sighash } from '../methods';\nimport { requestRawLegacy } from '../request';\nimport { StacksProvider } from '../types';\nimport { PsbtData, PsbtRequestOptions, SignatureHash } from '../types/bitcoin';\nimport { getStacksProvider } from '../utils';\n\n/** @deprecated No-op. Tokens are not needed for latest RPC endpoints. */\nexport function getDefaultPsbtRequestOptions(_options: PsbtRequestOptions) {}\n\n/** @deprecated No-op. Tokens are not needed for latest RPC endpoints. */\nexport const makePsbtToken = async (_options: PsbtRequestOptions) => {};\n\nconst METHOD = 'signPsbt' as const;\n\n/** @internal */\nexport const LEGACY_SIGN_PSBT_OPTIONS_MAP = (\n  options: PsbtRequestOptions\n): MethodParams<typeof METHOD> => ({\n  psbt: base64.encode(hexToBytes(options.hex)),\n  signInputs: typeof options.signAtIndex === 'number' ? [options.signAtIndex] : options.signAtIndex,\n  allowedSighash: options.allowedSighash?.map(hash => SignatureHash[hash] as Sighash),\n});\n\n/** @internal */\nexport const LEGACY_SIGN_PSBT_RESPONSE_MAP = (response: MethodResult<typeof METHOD>): PsbtData => ({\n  hex: bytesToHex(base64.decode(response.psbt)),\n});\n\n/**\n * @experimental\n * Compatible interface with previous Connect `openPsbtRequestPopup` version, but using new SIP-030 RPC method.\n */\nexport function openPsbtRequestPopup(\n  options: PsbtRequestOptions,\n  provider: StacksProvider = getStacksProvider()\n) {\n  requestRawLegacy(\n    METHOD,\n    LEGACY_SIGN_PSBT_OPTIONS_MAP,\n    LEGACY_SIGN_PSBT_RESPONSE_MAP\n  )(options, provider);\n}\n"]}