{
  "version": 3,
  "sources": ["../src/near-wallet-selector/index.ts"],
  "sourcesContent": [
    "import type { Wallet, WalletModuleFactory } from \"@near-wallet-selector/core\";\nimport \"@near-wallet-selector/modal-ui-js/styles.css\";\nimport type { Transaction } from \"@near-js/transactions\";\nimport { Chain, filterSupportedChains, SKConfig, SwapKitError, WalletOption } from \"@swapkit/helpers\";\nimport { getNearToolbox } from \"@swapkit/toolboxes/near\";\nimport { createWallet, getWalletSupportedChains } from \"@swapkit/wallet-core\";\n\nfunction createNearSigner(wallet: Wallet) {\n  return {\n    getAddress: async () => {\n      const accounts = await wallet.getAccounts();\n      const accountId = accounts[0]?.accountId;\n\n      if (!accountId) {\n        throw new SwapKitError(\"wallet_connection_rejected_by_user\");\n      }\n\n      return accountId;\n    },\n\n    getPublicKey: () => {\n      throw new SwapKitError(\"wallet_near_method_not_supported\");\n    },\n    signAndSendTransactions: async (transactions: { transactions: Transaction[] }) => {\n      const result = await wallet.signAndSendTransactions(transactions);\n      return result?.[0]?.transaction_outcome.id || \"\";\n    },\n\n    signDelegateAction: () => {\n      throw new SwapKitError(\"wallet_near_method_not_supported\");\n    },\n\n    signNep413Message: () => {\n      throw new SwapKitError(\"wallet_near_method_not_supported\");\n    },\n\n    signTransaction: (params: Transaction) => {\n      if (!wallet.signTransaction) {\n        throw new SwapKitError(\"wallet_near_method_not_supported\");\n      }\n      return wallet.signTransaction(params);\n    },\n  };\n}\n\nfunction waitForWalletSelection(selector: any, modal: any) {\n  return new Promise<void>((resolve) => {\n    const subscription = selector.store.observable.subscribe((state: any) => {\n      if (state.selectedWalletId) {\n        subscription.unsubscribe();\n        modal.hide();\n        resolve();\n      }\n    });\n\n    modal.show();\n  });\n}\n\nasync function getWalletMethods(walletFactories?: WalletModuleFactory[]) {\n  const { setupWalletSelector } = await import(\"@near-wallet-selector/core\");\n  const { setupModal } = await import(\"@near-wallet-selector/modal-ui-js\");\n\n  const contractId = SKConfig.get(\"integrations\")?.nearWalletSelector?.contractId || \"\";\n  const selector = await setupWalletSelector({ modules: [...(walletFactories || [])], network: \"mainnet\" });\n\n  const isSignedIn = selector.isSignedIn();\n\n  if (!isSignedIn) {\n    // Only show modal if not already connected\n    const modal = setupModal(selector, { contractId, description: \"Connect your NEAR wallet to SwapKit\" });\n\n    await waitForWalletSelection(selector, modal);\n  }\n\n  const wallet = await selector.wallet();\n  const signer = createNearSigner(wallet);\n  const toolbox = await getNearToolbox({ signer });\n  const address = await signer.getAddress();\n\n  const disconnect = async () => {\n    try {\n      await wallet.signOut();\n    } catch (error) {\n      throw new SwapKitError(\"wallet_connection_rejected_by_user\", error);\n    }\n  };\n\n  return { ...toolbox, address, disconnect };\n}\n\nexport const walletSelectorWallet = createWallet({\n  connect: ({ addChain, supportedChains, walletType }) =>\n    async function connectWalletSelector(chains: Chain[], walletFactories?: WalletModuleFactory[]) {\n      const filteredChains = filterSupportedChains({ chains, supportedChains, walletType });\n\n      if (filteredChains.length === 0) {\n        throw new SwapKitError(\"wallet_chain_not_supported\", {\n          chain: chains[0],\n          wallet: WalletOption.WALLET_SELECTOR,\n        });\n      }\n\n      const walletMethods = await getWalletMethods(walletFactories);\n\n      addChain({ ...walletMethods, balance: [], chain: Chain.Near, walletType });\n\n      return true;\n    },\n  directSigningSupport: { [Chain.Near]: true },\n  name: \"connectWalletSelector\",\n  supportedChains: [Chain.Near],\n  walletType: WalletOption.WALLET_SELECTOR,\n});\n\nexport const WALLET_SELECTOR_SUPPORTED_CHAINS = getWalletSupportedChains(walletSelectorWallet);\n"
  ],
  "mappings": "sGACO,IAAP,0DAEA,8BACA,qCACA,kCAEA,SAAS,CAAgB,CAAC,EAAgB,CACxC,MAAO,CACL,WAAY,SAAY,CAEtB,IAAM,GADW,MAAM,EAAO,YAAY,GACf,IAAI,UAE/B,GAAI,CAAC,EACH,MAAM,IAAI,eAAa,oCAAoC,EAG7D,OAAO,GAGT,aAAc,IAAM,CAClB,MAAM,IAAI,eAAa,kCAAkC,GAE3D,wBAAyB,MAAO,IAAkD,CAEhF,OADe,MAAM,EAAO,wBAAwB,CAAY,KAChD,IAAI,oBAAoB,IAAM,IAGhD,mBAAoB,IAAM,CACxB,MAAM,IAAI,eAAa,kCAAkC,GAG3D,kBAAmB,IAAM,CACvB,MAAM,IAAI,eAAa,kCAAkC,GAG3D,gBAAiB,CAAC,IAAwB,CACxC,GAAI,CAAC,EAAO,gBACV,MAAM,IAAI,eAAa,kCAAkC,EAE3D,OAAO,EAAO,gBAAgB,CAAM,EAExC,EAGF,SAAS,CAAsB,CAAC,EAAe,EAAY,CACzD,OAAO,IAAI,QAAc,CAAC,IAAY,CACpC,IAAM,EAAe,EAAS,MAAM,WAAW,UAAU,CAAC,IAAe,CACvE,GAAI,EAAM,iBACR,EAAa,YAAY,EACzB,EAAM,KAAK,EACX,EAAQ,EAEX,EAED,EAAM,KAAK,EACZ,EAGH,eAAe,CAAgB,CAAC,EAAyC,CACvE,IAAQ,uBAAwB,KAAa,uCACrC,cAAe,KAAa,6CAE9B,EAAa,WAAS,IAAI,cAAc,GAAG,oBAAoB,YAAc,GAC7E,EAAW,MAAM,EAAoB,CAAE,QAAS,CAAC,GAAI,GAAmB,CAAC,CAAE,EAAG,QAAS,SAAU,CAAC,EAIxG,GAAI,CAFe,EAAS,WAAW,EAEtB,CAEf,IAAM,EAAQ,EAAW,EAAU,CAAE,aAAY,YAAa,qCAAsC,CAAC,EAErG,MAAM,EAAuB,EAAU,CAAK,EAG9C,IAAM,EAAS,MAAM,EAAS,OAAO,EAC/B,EAAS,EAAiB,CAAM,EAChC,EAAU,MAAM,iBAAe,CAAE,QAAO,CAAC,EACzC,EAAU,MAAM,EAAO,WAAW,EAUxC,MAAO,IAAK,EAAS,UAAS,WARX,SAAY,CAC7B,GAAI,CACF,MAAM,EAAO,QAAQ,EACrB,MAAO,EAAO,CACd,MAAM,IAAI,eAAa,qCAAsC,CAAK,GAI7B,EAGpC,IAAM,EAAuB,eAAa,CAC/C,QAAS,EAAG,WAAU,kBAAiB,gBACrC,cAAoC,CAAC,EAAiB,EAAyC,CAG7F,GAFuB,wBAAsB,CAAE,SAAQ,kBAAiB,YAAW,CAAC,EAEjE,SAAW,EAC5B,MAAM,IAAI,eAAa,6BAA8B,CACnD,MAAO,EAAO,GACd,OAAQ,eAAa,eACvB,CAAC,EAGH,IAAM,EAAgB,MAAM,EAAiB,CAAe,EAI5D,OAFA,EAAS,IAAK,EAAe,QAAS,CAAC,EAAG,MAAO,QAAM,KAAM,YAAW,CAAC,EAElE,IAEX,qBAAsB,EAAG,QAAM,MAAO,EAAK,EAC3C,KAAM,wBACN,gBAAiB,CAAC,QAAM,IAAI,EAC5B,WAAY,eAAa,eAC3B,CAAC,EAEY,EAAmC,2BAAyB,CAAoB",
  "debugId": "CFDAD77E2A11B1B664756E2164756E21",
  "names": []
}