{"version":3,"file":"XverseWalletAdapter.impl-DojHlAk1.mjs","sources":["../src/adapters/XverseWalletAdapter.impl.ts"],"sourcesContent":["import { hex } from \"@scure/base\"\nimport {\n  addressToScriptPubKey,\n  getRedeemScriptOf_P2SH_P2WPKH_publicKey,\n} from \"../utils/bitcoinAddressHelpers\"\nimport { getBitcoinNetwork } from \"../utils/bitcoinNetworkHelpers\"\nimport { checkNever } from \"../utils/misc\"\nimport {\n  XverseCompatibleWalletAdapterImpl,\n  XverseCompatibleWalletAdapterImplAddress,\n} from \"../utils/XverseCompatibleWalletAdapterImpl\"\nimport {\n  WalletAdapter,\n  WalletAdapterAddressPurpose,\n  WalletAdapterAddressType,\n  WalletAdapterBitcoinNetwork,\n} from \"../WalletAdapters.types\"\nimport { metadata, XVERSE_PROVIDER_ID } from \"./XverseWalletAdapter\"\n\ndeclare global {\n  interface Window {\n    btc_providers?: import(\"sats-connect\").Provider[]\n  }\n}\n\nexport type XverseWalletAdapterAddresses =\n  XverseCompatibleWalletAdapterImplAddress\n\n/**\n * Derivation path (BIP-49): m/49'/0'/0'/0/ address_index\n */\n\nexport class XverseWalletAdapterImpl\n  extends XverseCompatibleWalletAdapterImpl\n  implements WalletAdapter\n{\n  constructor() {\n    super({\n      walletDisplayName: metadata.name,\n      getProviderId: async () => {\n        return XVERSE_PROVIDER_ID\n      },\n      parseAddresses: async ({ sdk, network: xverseNetwork, addresses }) => {\n        // prettier-ignore\n        const network =\n          xverseNetwork === sdk.BitcoinNetworkType.Mainnet ? WalletAdapterBitcoinNetwork.MAINNET :\n          xverseNetwork === sdk.BitcoinNetworkType.Testnet ? WalletAdapterBitcoinNetwork.TESTNET :\n          xverseNetwork === sdk.BitcoinNetworkType.Testnet4 ? WalletAdapterBitcoinNetwork.TESTNET :\n          xverseNetwork === sdk.BitcoinNetworkType.Signet ? WalletAdapterBitcoinNetwork.UNKNOWN :\n          xverseNetwork === sdk.BitcoinNetworkType.Regtest ? WalletAdapterBitcoinNetwork.UNKNOWN :\n          (checkNever(xverseNetwork), WalletAdapterBitcoinNetwork.UNKNOWN)\n\n        const bitcoinNetwork = getBitcoinNetwork(\n          network === WalletAdapterBitcoinNetwork.MAINNET\n            ? \"mainnet\"\n            : \"testnet\",\n        )\n\n        return addresses.flatMap((a): XverseWalletAdapterAddresses[] => {\n          const purposes: WalletAdapterAddressPurpose[] = []\n          switch (a.purpose) {\n            case sdk.AddressPurpose.Ordinals:\n              purposes.push(\n                WalletAdapterAddressPurpose.Ordinals,\n                WalletAdapterAddressPurpose.BRC20,\n                WalletAdapterAddressPurpose.Runes,\n              )\n              break\n            case sdk.AddressPurpose.Payment:\n              purposes.push(WalletAdapterAddressPurpose.Bitcoin)\n              break\n          }\n\n          const scriptPubKey = hex.encode(\n            addressToScriptPubKey(bitcoinNetwork, a.address),\n          )\n\n          switch (a.addressType) {\n            case sdk.AddressType.stacks:\n              return []\n            case sdk.AddressType.p2pkh:\n              return [\n                {\n                  purposes,\n                  network,\n                  addressType: WalletAdapterAddressType.P2PKH,\n                  address: a.address,\n                  scriptPubKey,\n                  publicKey: a.publicKey,\n                },\n              ]\n            case sdk.AddressType.p2wpkh:\n              return [\n                {\n                  purposes,\n                  network,\n                  addressType: WalletAdapterAddressType.P2WPKH,\n                  address: a.address,\n                  scriptPubKey,\n                  publicKey: a.publicKey,\n                },\n              ]\n            case sdk.AddressType.p2tr: {\n              const tapInternalKey: string = a.publicKey\n              return [\n                {\n                  purposes,\n                  network,\n                  addressType: WalletAdapterAddressType.P2TR,\n                  address: a.address,\n                  scriptPubKey,\n                  publicKey: a.publicKey,\n                  tapInternalKey,\n                },\n              ]\n            }\n            case sdk.AddressType.p2sh: {\n              const redeemScript = hex.encode(\n                getRedeemScriptOf_P2SH_P2WPKH_publicKey(\n                  bitcoinNetwork,\n                  hex.decode(a.publicKey),\n                ),\n              )\n              return [\n                {\n                  purposes,\n                  network,\n                  addressType: WalletAdapterAddressType.P2SH_P2WPKH,\n                  address: a.address,\n                  scriptPubKey,\n                  publicKey: a.publicKey,\n                  redeemScript,\n                },\n              ]\n            }\n            case sdk.AddressType.p2wsh:\n              // not supported\n              return []\n            case sdk.AddressType.starknet:\n            case sdk.AddressType.spark:\n              return []\n            default:\n              checkNever(a.addressType)\n              return []\n          }\n        })\n      },\n    })\n  }\n}\n"],"names":["XverseWalletAdapterImpl","XverseCompatibleWalletAdapterImpl","metadata","XVERSE_PROVIDER_ID","sdk","xverseNetwork","addresses","network","WalletAdapterBitcoinNetwork","bitcoinNetwork","getBitcoinNetwork","a","purposes","WalletAdapterAddressPurpose","scriptPubKey","hex","addressToScriptPubKey","WalletAdapterAddressType","tapInternalKey","redeemScript","getRedeemScriptOf_P2SH_P2WPKH_publicKey","checkNever"],"mappings":"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"}