@pooflabs/web 0.0.81 → 0.0.82

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/dist/{index-B2WGCssJ.js → index-BicMkamC.js} +221 -116
  2. package/dist/index-BicMkamC.js.map +1 -0
  3. package/dist/{index-nt_HQVrk.esm.js → index-BsY_Lgiu.esm.js} +222 -116
  4. package/dist/index-BsY_Lgiu.esm.js.map +1 -0
  5. package/dist/index-CHWmdXHE.esm.js +6 -0
  6. package/dist/index-CHWmdXHE.esm.js.map +1 -0
  7. package/dist/{index-CjHbp7Dq.esm.js → index-CK_2Zn89.esm.js} +135 -8
  8. package/dist/index-CK_2Zn89.esm.js.map +1 -0
  9. package/dist/{index-DXPkkq81.js → index-Ci3m3diI.js} +134 -7
  10. package/dist/index-Ci3m3diI.js.map +1 -0
  11. package/dist/{index-dcJIjFrs.esm.js → index-DWf2AOhe.esm.js} +134 -7
  12. package/dist/index-DWf2AOhe.esm.js.map +1 -0
  13. package/dist/{index-D_DiP8XQ.js → index-DlKo76M3.js} +135 -8
  14. package/dist/index-DlKo76M3.js.map +1 -0
  15. package/dist/index-Dz0bPXrU.js +8 -0
  16. package/dist/index-Dz0bPXrU.js.map +1 -0
  17. package/dist/{index.browser-CT6PUv9G.js → index.browser-BkMiHSON.js} +1366 -1569
  18. package/dist/index.browser-BkMiHSON.js.map +1 -0
  19. package/dist/index.browser-C-_FEr5M.esm.js +1134 -0
  20. package/dist/index.browser-C-_FEr5M.esm.js.map +1 -0
  21. package/dist/index.browser-C9bFQZyQ.esm.js +1373 -0
  22. package/dist/index.browser-C9bFQZyQ.esm.js.map +1 -0
  23. package/dist/{index.browser-BNdFfyIg.esm.js → index.browser-DCOvqSUT.esm.js} +1366 -1569
  24. package/dist/index.browser-DCOvqSUT.esm.js.map +1 -0
  25. package/dist/index.browser-Dbq5Qf1G.esm.js +242 -0
  26. package/dist/index.browser-Dbq5Qf1G.esm.js.map +1 -0
  27. package/dist/index.browser-Df7yN8D5.js +245 -0
  28. package/dist/index.browser-Df7yN8D5.js.map +1 -0
  29. package/dist/index.browser-DjEZSiqI.js +1137 -0
  30. package/dist/index.browser-DjEZSiqI.js.map +1 -0
  31. package/dist/index.browser-dszs5oe5.js +1376 -0
  32. package/dist/index.browser-dszs5oe5.js.map +1 -0
  33. package/dist/index.esm.js +1 -1
  34. package/dist/index.js +1 -1
  35. package/dist/{index.native-CyA-RdvW.js → index.native-11supFRU.js} +2683 -207
  36. package/dist/index.native-11supFRU.js.map +1 -0
  37. package/dist/{index.native-BqYr--vb.esm.js → index.native-CLaHKvDv.esm.js} +2682 -207
  38. package/dist/index.native-CLaHKvDv.esm.js.map +1 -0
  39. package/dist/index.native.esm.js +1 -1
  40. package/dist/index.native.js +1 -1
  41. package/dist/{phantom-wallet-provider-K2V96G-G.esm.js → phantom-wallet-provider-BN47klTp.esm.js} +4 -4
  42. package/dist/{phantom-wallet-provider-K2V96G-G.esm.js.map → phantom-wallet-provider-BN47klTp.esm.js.map} +1 -1
  43. package/dist/{phantom-wallet-provider-DWCaMkyz.js → phantom-wallet-provider-Xb070-O6.js} +4 -4
  44. package/dist/{phantom-wallet-provider-DWCaMkyz.js.map → phantom-wallet-provider-Xb070-O6.js.map} +1 -1
  45. package/dist/{privy-wallet-provider-BMg_S_d0.js → privy-wallet-provider-Ch22rj_G.js} +4 -4
  46. package/dist/privy-wallet-provider-Ch22rj_G.js.map +1 -0
  47. package/dist/{privy-wallet-provider-DoX8q99w.esm.js → privy-wallet-provider-DUJS5viU.esm.js} +4 -4
  48. package/dist/privy-wallet-provider-DUJS5viU.esm.js.map +1 -0
  49. package/dist/{solana-mobile-wallet-provider-Cmphb3oB.esm.js → solana-mobile-wallet-provider-BF04Xp8P.esm.js} +4 -4
  50. package/dist/{solana-mobile-wallet-provider-Cmphb3oB.esm.js.map → solana-mobile-wallet-provider-BF04Xp8P.esm.js.map} +1 -1
  51. package/dist/{solana-mobile-wallet-provider-t22Ie8lY.js → solana-mobile-wallet-provider-BXm94fqW.js} +4 -4
  52. package/dist/{solana-mobile-wallet-provider-t22Ie8lY.js.map → solana-mobile-wallet-provider-BXm94fqW.js.map} +1 -1
  53. package/package.json +2 -2
  54. package/dist/index-B2WGCssJ.js.map +0 -1
  55. package/dist/index-Bdcc5821.js +0 -2375
  56. package/dist/index-Bdcc5821.js.map +0 -1
  57. package/dist/index-CjHbp7Dq.esm.js.map +0 -1
  58. package/dist/index-CrOVJFX9.esm.js +0 -2373
  59. package/dist/index-CrOVJFX9.esm.js.map +0 -1
  60. package/dist/index-DXPkkq81.js.map +0 -1
  61. package/dist/index-D_DiP8XQ.js.map +0 -1
  62. package/dist/index-dcJIjFrs.esm.js.map +0 -1
  63. package/dist/index-nt_HQVrk.esm.js.map +0 -1
  64. package/dist/index.browser-BNdFfyIg.esm.js.map +0 -1
  65. package/dist/index.browser-CT6PUv9G.js.map +0 -1
  66. package/dist/index.browser-Cy21yaX0.esm.js +0 -1096
  67. package/dist/index.browser-Cy21yaX0.esm.js.map +0 -1
  68. package/dist/index.browser-OvGNsMPu.esm.js +0 -1002
  69. package/dist/index.browser-OvGNsMPu.esm.js.map +0 -1
  70. package/dist/index.browser-ZD7Tz2bn.js +0 -1099
  71. package/dist/index.browser-ZD7Tz2bn.js.map +0 -1
  72. package/dist/index.browser-d0PlOXpF.js +0 -105
  73. package/dist/index.browser-d0PlOXpF.js.map +0 -1
  74. package/dist/index.browser-pE1s68e9.esm.js +0 -102
  75. package/dist/index.browser-pE1s68e9.esm.js.map +0 -1
  76. package/dist/index.browser-vuTr40so.js +0 -1008
  77. package/dist/index.browser-vuTr40so.js.map +0 -1
  78. package/dist/index.native-BqYr--vb.esm.js.map +0 -1
  79. package/dist/index.native-CyA-RdvW.js.map +0 -1
  80. package/dist/privy-wallet-provider-BMg_S_d0.js.map +0 -1
  81. package/dist/privy-wallet-provider-DoX8q99w.esm.js.map +0 -1
@@ -1,5 +1,5 @@
1
- import { b as bufferExports } from './index-CrOVJFX9.esm.js';
2
- import { g as getPlatform, l as setAuthLoading, W as WebSessionManager, s as setCurrentUser, m as genAuthNonce, n as genSolanaMessage, o as createSessionWithSignature, e as confirmAndCheckTransaction, c as convertRemainingAccounts, b as buildSetDocumentsTransaction, a as SOLANA_DEVNET_RPC_URL, S as SOLANA_MAINNET_RPC_URL, h as SURFNET_RPC_URL } from './index.native-BqYr--vb.esm.js';
1
+ import { b as bufferExports } from './index-CHWmdXHE.esm.js';
2
+ import { g as getPlatform, l as setAuthLoading, W as WebSessionManager, s as setCurrentUser, m as genAuthNonce, n as genSolanaMessage, o as createSessionWithSignature, e as confirmAndCheckTransaction, c as convertRemainingAccounts, b as buildSetDocumentsTransaction, a as SOLANA_DEVNET_RPC_URL, S as SOLANA_MAINNET_RPC_URL, h as SURFNET_RPC_URL } from './index.native-CLaHKvDv.esm.js';
3
3
  import { PublicKey, Connection, VersionedTransaction } from '@solana/web3.js';
4
4
  import * as anchor from '@coral-xyz/anchor';
5
5
  import 'axios';
@@ -18,7 +18,7 @@ async function loadMwaProtocol() {
18
18
  return mwaProtocolLoadPromise;
19
19
  mwaProtocolLoadPromise = (async () => {
20
20
  try {
21
- mwaProtocolModule = await import('./index.browser-Cy21yaX0.esm.js');
21
+ mwaProtocolModule = await import('./index.browser-C9bFQZyQ.esm.js');
22
22
  }
23
23
  catch (e) {
24
24
  console.warn('[SolanaMobileWallet] @solana-mobile/mobile-wallet-adapter-protocol-web3js not installed. Install it to enable Seeker wallet support.');
@@ -555,4 +555,4 @@ class SolanaMobileWalletProvider {
555
555
  SolanaMobileWalletProvider.instance = null;
556
556
 
557
557
  export { SolanaMobileWalletProvider };
558
- //# sourceMappingURL=solana-mobile-wallet-provider-Cmphb3oB.esm.js.map
558
+ //# sourceMappingURL=solana-mobile-wallet-provider-BF04Xp8P.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"solana-mobile-wallet-provider-Cmphb3oB.esm.js","sources":["../.rollup-tmp/auth/providers/solana-mobile-wallet-provider.js"],"sourcesContent":["import { Buffer } from 'buffer';\nimport { WebSessionManager as SessionManager, createSessionWithSignature, genAuthNonce, genSolanaMessage, buildSetDocumentsTransaction, convertRemainingAccounts } from '@pooflabs/core';\nimport { setCurrentUser, setAuthLoading } from '../../global';\nimport { getPlatform, detectAndroid } from '../../platform';\nimport { Connection, PublicKey, VersionedTransaction } from '@solana/web3.js';\nimport * as anchor from '@coral-xyz/anchor';\nimport { SOLANA_DEVNET_RPC_URL, SOLANA_MAINNET_RPC_URL, SURFNET_RPC_URL } from '..';\nimport { confirmAndCheckTransaction } from './transaction-utils';\n/**\n * Detects whether the current environment is a mobile browser capable of\n * Mobile Wallet Adapter (MWA) communication.\n *\n * Returns true on Android browsers (Chrome, etc.) where MWA intents work,\n * or inside a Seeker/Saga in-app browser context.\n */\nexport function isMobileWalletAvailable() {\n if (typeof window === 'undefined' || typeof navigator === 'undefined')\n return false;\n return detectAndroid();\n}\nconst ED25519_SIGNATURE_LENGTH = 64;\n// Dynamically imported MWA protocol module\nlet mwaProtocolModule = null;\nlet mwaProtocolLoadPromise = null;\nasync function loadMwaProtocol() {\n if (mwaProtocolModule)\n return;\n if (typeof window === 'undefined')\n return;\n if (mwaProtocolLoadPromise)\n return mwaProtocolLoadPromise;\n mwaProtocolLoadPromise = (async () => {\n try {\n mwaProtocolModule = await import('@solana-mobile/mobile-wallet-adapter-protocol-web3js');\n }\n catch (e) {\n console.warn('[SolanaMobileWallet] @solana-mobile/mobile-wallet-adapter-protocol-web3js not installed. Install it to enable Seeker wallet support.');\n throw new Error('Missing @solana-mobile/mobile-wallet-adapter-protocol-web3js dependency');\n }\n })();\n return mwaProtocolLoadPromise;\n}\n/**\n * Registers Mobile Wallet Adapter as a wallet-standard wallet so it appears\n * in wallet selection UIs and can be discovered by other wallet-standard consumers.\n *\n * Call this once at app startup (in a browser-only / non-SSR context).\n *\n * @param config - App identity and optional remote host authority for desktop QR code support\n */\nexport async function registerMobileWalletAdapter(config) {\n var _a;\n if (typeof window === 'undefined')\n return;\n try {\n const walletStandardMobile = await import('@solana-mobile/wallet-standard-mobile');\n const registerMwa = walletStandardMobile.registerMwa || ((_a = walletStandardMobile.default) === null || _a === void 0 ? void 0 : _a.registerMwa);\n if (!registerMwa) {\n console.warn('[SolanaMobileWallet] registerMwa not found in @solana-mobile/wallet-standard-mobile');\n return;\n }\n const options = {};\n if (config === null || config === void 0 ? void 0 : config.appIdentity) {\n options.appIdentity = config.appIdentity;\n }\n if (config === null || config === void 0 ? void 0 : config.chains) {\n options.chains = config.chains;\n }\n if (config === null || config === void 0 ? void 0 : config.remoteHostAuthority) {\n options.remoteHostAuthority = config.remoteHostAuthority;\n }\n // Use the library's default helpers if available\n if (walletStandardMobile.createDefaultAuthorizationCache) {\n options.authorizationCache = walletStandardMobile.createDefaultAuthorizationCache();\n }\n if (walletStandardMobile.createDefaultChainSelector) {\n options.chainSelector = walletStandardMobile.createDefaultChainSelector();\n }\n if (walletStandardMobile.createDefaultWalletNotFoundHandler) {\n options.onWalletNotFound = walletStandardMobile.createDefaultWalletNotFoundHandler();\n }\n registerMwa(options);\n }\n catch (e) {\n // @solana-mobile/wallet-standard-mobile is an optional dependency\n // Silently skip if not installed — the provider still works via\n // @solana-mobile/mobile-wallet-adapter-protocol-web3js directly\n console.debug('[SolanaMobileWallet] @solana-mobile/wallet-standard-mobile not available, skipping wallet-standard registration');\n }\n}\n/**\n * SolanaMobileWalletProvider implements the AuthProvider interface using the\n * Solana Mobile Wallet Adapter (MWA) protocol's low-level `transact` API.\n *\n * This enables TaroBase dApps to work with any MWA-compliant wallet on Solana\n * mobile devices (Seeker, Saga) — including the native Seed Vault Wallet,\n * Phantom, Solflare, and any other wallet that implements the MWA protocol.\n *\n * By using `transact()` directly (instead of the wallet-adapter wrapper),\n * login combines authorize + signMessage into a single wallet session —\n * meaning one popup/approval instead of two.\n */\nexport class SolanaMobileWalletProvider {\n constructor(networkUrl = null, config = {}) {\n // MWA authorization state\n this.authToken = null;\n this.walletUriBase = null;\n this.base64Address = null;\n this.authorizedPublicKey = null;\n this.publicKeyObj = null;\n this.networkUrl = networkUrl;\n this.config = config;\n if (typeof window === 'undefined') {\n throw new Error('SolanaMobileWalletProvider can only be instantiated in a browser environment');\n }\n if (SolanaMobileWalletProvider.instance) {\n return SolanaMobileWalletProvider.instance;\n }\n this.appIdentity = config.appIdentity || {\n name: 'TaroBase App',\n uri: getPlatform().getLocationOrigin(),\n };\n this.chain = `solana:${config.cluster || 'mainnet-beta'}`;\n SolanaMobileWalletProvider.instance = this;\n }\n static getInstance(networkUrl, config) {\n if (!SolanaMobileWalletProvider.instance) {\n new SolanaMobileWalletProvider(networkUrl, config);\n }\n return SolanaMobileWalletProvider.instance;\n }\n /** Config for transact() — routes to the same wallet if we've already authorized */\n getAssociationConfig() {\n if (this.walletUriBase) {\n return { baseUri: this.walletUriBase };\n }\n return undefined;\n }\n /** Reauthorize within a transact callback using a stored auth_token */\n async reauthorizeWallet(wallet) {\n if (!this.authToken) {\n // No existing auth — do a fresh authorize\n const authResult = await wallet.authorize({\n identity: this.appIdentity,\n chain: this.chain,\n });\n this.storeAuthResult(authResult);\n return authResult;\n }\n try {\n const authResult = await wallet.reauthorize({\n auth_token: this.authToken,\n identity: this.appIdentity,\n });\n this.storeAuthResult(authResult);\n return authResult;\n }\n catch (e) {\n // Reauth failed (token expired, wallet reset, etc.) — try fresh authorize\n console.warn('[SolanaMobileWallet] Reauthorization failed, attempting fresh authorize:', e === null || e === void 0 ? void 0 : e.message);\n const authResult = await wallet.authorize({\n identity: this.appIdentity,\n chain: this.chain,\n });\n this.storeAuthResult(authResult);\n return authResult;\n }\n }\n /** Persist auth result from an authorize/reauthorize call */\n storeAuthResult(authResult) {\n var _a;\n this.authToken = authResult.auth_token;\n this.walletUriBase = authResult.wallet_uri_base;\n if (((_a = authResult.accounts) === null || _a === void 0 ? void 0 : _a.length) > 0) {\n const account = authResult.accounts[0];\n this.base64Address = account.address;\n // Decode base64 address → PublicKey → base58\n const addressBytes = Uint8Array.from(getPlatform().atob(account.address), c => c.charCodeAt(0));\n this.publicKeyObj = new PublicKey(addressBytes);\n this.authorizedPublicKey = this.publicKeyObj.toBase58();\n }\n }\n async login() {\n var _a, _b, _c, _d, _e;\n setAuthLoading(true);\n try {\n await loadMwaProtocol();\n const { transact } = mwaProtocolModule;\n // Quick check: if we already have auth state and a valid session, skip\n if (this.authorizedPublicKey) {\n const existingSession = await SessionManager.getSession();\n if (existingSession && existingSession.address === this.authorizedPublicKey) {\n const user = { provider: this, address: this.authorizedPublicKey };\n setCurrentUser(user);\n return user;\n }\n }\n // Pre-fetch nonce from server while wallet is not yet connected\n const nonce = await genAuthNonce();\n // Single transact() call: authorize + signMessages — one wallet popup\n const result = await transact(async (wallet) => {\n // Step 1: Authorize — user approves the dApp\n const authResult = await wallet.authorize({\n identity: this.appIdentity,\n chain: this.chain,\n });\n const base64Addr = authResult.accounts[0].address;\n const addressBytes = Uint8Array.from(getPlatform().atob(base64Addr), c => c.charCodeAt(0));\n const pubkey = new PublicKey(addressBytes);\n const base58Addr = pubkey.toBase58();\n // Step 2: Sign the auth message — still in the same wallet session\n const messageText = await genSolanaMessage(base58Addr, nonce);\n const messageBytes = getPlatform().textEncode(messageText);\n const signedMessages = await wallet.signMessages({\n addresses: [base64Addr],\n payloads: [messageBytes],\n });\n // The signed payload is [original message bytes][64-byte ed25519 signature]\n const signedPayload = signedMessages[0];\n const signatureBytes = signedPayload.slice(-ED25519_SIGNATURE_LENGTH);\n return {\n base58Address: base58Addr,\n base64Address: base64Addr,\n publicKey: pubkey,\n signature: Buffer.from(signatureBytes).toString('base64'),\n messageText,\n authToken: authResult.auth_token,\n walletUriBase: authResult.wallet_uri_base,\n };\n }, this.getAssociationConfig());\n // Store MWA auth state for reauthorization in subsequent transact() calls\n this.authToken = result.authToken;\n this.walletUriBase = result.walletUriBase;\n this.base64Address = result.base64Address;\n this.authorizedPublicKey = result.base58Address;\n this.publicKeyObj = result.publicKey;\n // Check if we already have a valid session for this address\n const existingSession = await SessionManager.getSession();\n if (existingSession && existingSession.address === result.base58Address) {\n const user = { provider: this, address: result.base58Address };\n setCurrentUser(user);\n return user;\n }\n // Create new session on the server\n const createSessionResult = await createSessionWithSignature(result.base58Address, result.messageText, result.signature);\n await SessionManager.storeSession(result.base58Address, createSessionResult.accessToken, createSessionResult.idToken, createSessionResult.refreshToken);\n // Mark auth method\n try {\n getPlatform().storage.setItem('tarobase_last_auth_method', 'mobile-wallet-adapter');\n }\n catch (_f) { }\n const user = { provider: this, address: result.base58Address };\n setCurrentUser(user);\n return user;\n }\n catch (error) {\n const isUserRejection = (error === null || error === void 0 ? void 0 : error.code) === 4001 ||\n ((_a = error === null || error === void 0 ? void 0 : error.message) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes('user rejected')) ||\n ((_b = error === null || error === void 0 ? void 0 : error.message) === null || _b === void 0 ? void 0 : _b.toLowerCase().includes('user denied')) ||\n ((_c = error === null || error === void 0 ? void 0 : error.message) === null || _c === void 0 ? void 0 : _c.toLowerCase().includes('user cancelled')) ||\n ((_d = error === null || error === void 0 ? void 0 : error.message) === null || _d === void 0 ? void 0 : _d.toLowerCase().includes('user canceled')) ||\n ((_e = error === null || error === void 0 ? void 0 : error.message) === null || _e === void 0 ? void 0 : _e.toLowerCase().includes('user declined'));\n if (!isUserRejection) {\n console.error('[SolanaMobileWallet] Login failed:', error);\n }\n throw error;\n }\n finally {\n setAuthLoading(false);\n }\n }\n async restoreSession() {\n const session = await SessionManager.getSession();\n if (session) {\n this.authorizedPublicKey = session.address;\n this.publicKeyObj = new PublicKey(session.address);\n return { provider: this, address: session.address };\n }\n return null;\n }\n async logout() {\n // Deauthorize with the wallet if we have an auth_token\n if (this.authToken) {\n try {\n await loadMwaProtocol();\n const { transact } = mwaProtocolModule;\n const authToken = this.authToken;\n await transact(async (wallet) => {\n await wallet.deauthorize({ auth_token: authToken });\n }, this.getAssociationConfig());\n }\n catch (error) {\n console.error('[SolanaMobileWallet] Deauthorize error:', error);\n }\n }\n this.authToken = null;\n this.walletUriBase = null;\n this.base64Address = null;\n this.authorizedPublicKey = null;\n this.publicKeyObj = null;\n SessionManager.clearSession();\n setCurrentUser(null);\n }\n async signMessage(message) {\n var _a, _b;\n if (!this.authorizedPublicKey || !this.base64Address) {\n throw new Error('Not connected. Call login() first.');\n }\n await loadMwaProtocol();\n const { transact } = mwaProtocolModule;\n const base64Addr = this.base64Address;\n try {\n const signedMessages = await transact(async (wallet) => {\n await this.reauthorizeWallet(wallet);\n const messageBytes = getPlatform().textEncode(message);\n return wallet.signMessages({\n addresses: [base64Addr],\n payloads: [messageBytes],\n });\n }, this.getAssociationConfig());\n const signedPayload = signedMessages[0];\n const signatureBytes = signedPayload.slice(-ED25519_SIGNATURE_LENGTH);\n return Buffer.from(signatureBytes).toString('base64');\n }\n catch (error) {\n if (((_a = error === null || error === void 0 ? void 0 : error.message) === null || _a === void 0 ? void 0 : _a.includes('not connected')) || ((_b = error === null || error === void 0 ? void 0 : error.message) === null || _b === void 0 ? void 0 : _b.includes('not authorized')) ||\n (error === null || error === void 0 ? void 0 : error.code) === 'ERROR_AUTHORIZATION_FAILED') {\n await this.logout();\n throw new Error('Wallet connection lost. Please reconnect.');\n }\n throw new Error(`Failed to sign message: ${error.message}`);\n }\n }\n async signTransaction(transaction) {\n var _a, _b;\n if (!this.publicKeyObj) {\n throw new Error('Not connected. Call login() first.');\n }\n await loadMwaProtocol();\n const { transact } = mwaProtocolModule;\n // Ensure blockhash and fee payer are set before signing\n const isLegacyTransaction = 'recentBlockhash' in transaction && !('message' in transaction && 'staticAccountKeys' in transaction.message);\n if (isLegacyTransaction) {\n const legacyTx = transaction;\n if (!legacyTx.recentBlockhash) {\n const rpcUrl = this.getRpcUrl();\n const connection = new Connection(rpcUrl, 'confirmed');\n const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash('confirmed');\n legacyTx.recentBlockhash = blockhash;\n legacyTx.lastValidBlockHeight = lastValidBlockHeight;\n }\n if (!legacyTx.feePayer && this.publicKeyObj) {\n legacyTx.feePayer = this.publicKeyObj;\n }\n }\n else {\n const versionedTx = transaction;\n if (!versionedTx.message.recentBlockhash) {\n const rpcUrl = this.getRpcUrl();\n const connection = new Connection(rpcUrl, 'confirmed');\n const { blockhash } = await connection.getLatestBlockhash('confirmed');\n versionedTx.message.recentBlockhash = blockhash;\n }\n }\n try {\n const signedTransactions = await transact(async (wallet) => {\n await this.reauthorizeWallet(wallet);\n return wallet.signTransactions({ transactions: [transaction] });\n }, this.getAssociationConfig());\n return signedTransactions[0];\n }\n catch (error) {\n if (((_a = error === null || error === void 0 ? void 0 : error.message) === null || _a === void 0 ? void 0 : _a.includes('not connected')) || ((_b = error === null || error === void 0 ? void 0 : error.message) === null || _b === void 0 ? void 0 : _b.includes('not authorized')) ||\n (error === null || error === void 0 ? void 0 : error.code) === 'ERROR_AUTHORIZATION_FAILED') {\n await this.logout();\n throw new Error('Wallet connection lost. Please reconnect.');\n }\n throw new Error(`Failed to sign transaction: ${error.message}`);\n }\n }\n async signAndSubmitTransaction(transaction, feePayer) {\n var _a, _b, _c, _d, _e, _f;\n if (!this.publicKeyObj) {\n throw new Error('Not connected. Call login() first.');\n }\n await loadMwaProtocol();\n const { transact } = mwaProtocolModule;\n const rpcUrl = this.getRpcUrl();\n const connection = new Connection(rpcUrl, 'confirmed');\n const isSurfnet = rpcUrl === SURFNET_RPC_URL;\n try {\n const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash('confirmed');\n const isLegacyTransaction = 'recentBlockhash' in transaction && !('message' in transaction && 'staticAccountKeys' in transaction.message);\n if (isLegacyTransaction) {\n const legacyTx = transaction;\n legacyTx.recentBlockhash = blockhash;\n legacyTx.lastValidBlockHeight = lastValidBlockHeight;\n if (!legacyTx.feePayer) {\n if (feePayer) {\n legacyTx.feePayer = feePayer;\n }\n else if (this.publicKeyObj) {\n legacyTx.feePayer = this.publicKeyObj;\n }\n }\n }\n else {\n const versionedTx = transaction;\n versionedTx.message.recentBlockhash = blockhash;\n }\n if (isSurfnet) {\n // Surfnet: sign-only, then submit to our specific RPC\n const signedTransactions = await transact(async (wallet) => {\n await this.reauthorizeWallet(wallet);\n return wallet.signTransactions({ transactions: [transaction] });\n }, this.getAssociationConfig());\n const signedTx = signedTransactions[0];\n const signature = await connection.sendRawTransaction(signedTx.serialize(), {\n preflightCommitment: 'confirmed'\n });\n const confirmation = await connection.confirmTransaction({\n signature,\n blockhash,\n lastValidBlockHeight,\n }, 'confirmed');\n if (confirmation.value.err) {\n throw new Error(`Transaction failed: ${confirmation.value.err.toString()}`);\n }\n return signature;\n }\n // Non-surfnet: use signAndSendTransactions for wallet-optimized submission\n const signatures = await transact(async (wallet) => {\n await this.reauthorizeWallet(wallet);\n return wallet.signAndSendTransactions({\n transactions: [transaction],\n commitment: 'confirmed',\n });\n }, this.getAssociationConfig());\n const signature = signatures[0];\n await confirmAndCheckTransaction(connection, signature);\n return signature;\n }\n catch (error) {\n if (((_a = error === null || error === void 0 ? void 0 : error.message) === null || _a === void 0 ? void 0 : _a.includes('not connected')) || ((_b = error === null || error === void 0 ? void 0 : error.message) === null || _b === void 0 ? void 0 : _b.includes('not authorized')) ||\n (error === null || error === void 0 ? void 0 : error.code) === 'ERROR_AUTHORIZATION_FAILED') {\n await this.logout();\n throw new Error('Wallet connection lost. Please reconnect.');\n }\n const isUserRejection = (error === null || error === void 0 ? void 0 : error.code) === 4001 ||\n ((_c = error === null || error === void 0 ? void 0 : error.message) === null || _c === void 0 ? void 0 : _c.toLowerCase().includes('user rejected')) ||\n ((_d = error === null || error === void 0 ? void 0 : error.message) === null || _d === void 0 ? void 0 : _d.toLowerCase().includes('user denied')) ||\n ((_e = error === null || error === void 0 ? void 0 : error.message) === null || _e === void 0 ? void 0 : _e.toLowerCase().includes('user cancelled')) ||\n ((_f = error === null || error === void 0 ? void 0 : error.message) === null || _f === void 0 ? void 0 : _f.toLowerCase().includes('user canceled'));\n if (!isUserRejection) {\n console.error('[SolanaMobileWallet] Transaction failed:', error);\n }\n throw new Error(`Failed to execute transaction: ${error.message}`);\n }\n }\n async runTransaction(_evmTransactionData, solTransactionData, options) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n if (!solTransactionData) {\n throw new Error('Solana transaction data is required for mobile wallet');\n }\n if (!this.publicKeyObj || !this.authorizedPublicKey) {\n await this.login();\n }\n await loadMwaProtocol();\n const { transact } = mwaProtocolModule;\n const rpcUrl = this.getRpcUrl(solTransactionData.network);\n const connection = new Connection(rpcUrl, 'confirmed');\n const isSurfnet = rpcUrl === SURFNET_RPC_URL;\n try {\n const publicKey = this.publicKeyObj;\n const remainingAccounts = convertRemainingAccounts(solTransactionData.txArgs[0].remainingAccounts);\n let app_id = solTransactionData.appId;\n if (typeof window !== 'undefined' && window.CUSTOM_TAROBASE_APP_ID_HEADER) {\n app_id = window.CUSTOM_TAROBASE_APP_ID_HEADER;\n }\n if (!app_id) {\n throw new Error('App ID is required');\n }\n // Create a mock wallet adapter for Anchor (only publicKey is needed for building TX)\n const mockWalletAdapter = {\n publicKey,\n signTransaction: async (tx) => tx,\n signAllTransactions: async (txs) => txs,\n };\n const anchorProvider = new anchor.AnchorProvider(connection, mockWalletAdapter, anchor.AnchorProvider.defaultOptions());\n const finalDeduped = [];\n for (const acc of remainingAccounts) {\n const existing = finalDeduped.find((d) => d.pubkey.equals(acc.pubkey));\n if (existing) {\n existing.isSigner = existing.isSigner || acc.isSigner;\n existing.isWritable = existing.isWritable || acc.isWritable;\n }\n else {\n finalDeduped.push(acc);\n }\n }\n let tx;\n if (solTransactionData.signedTransaction) {\n tx = VersionedTransaction.deserialize(Buffer.from(solTransactionData.signedTransaction, 'base64'));\n }\n else {\n const result = await buildSetDocumentsTransaction(connection, solTransactionData.txArgs[0].idl, anchorProvider, publicKey, {\n app_id,\n documents: solTransactionData.txArgs[0].setDocumentData,\n delete_paths: solTransactionData.txArgs[0].deletePaths,\n txData: solTransactionData.txArgs[0].txData\n }, finalDeduped, solTransactionData.lutKey, solTransactionData.preInstructions, false, solTransactionData.additionalLutAddresses);\n tx = result.tx;\n }\n if ((options === null || options === void 0 ? void 0 : options.shouldSubmitTx) === false) {\n const [signedTx] = await transact(async (wallet) => {\n await this.reauthorizeWallet(wallet);\n return wallet.signTransactions({ transactions: [tx] });\n }, this.getAssociationConfig());\n return {\n signedTransaction: signedTx,\n blockNumber: 0,\n gasUsed: '0',\n data: ''\n };\n }\n if (isSurfnet) {\n // Surfnet: sign then submit manually to our RPC\n const [signedTx] = await transact(async (wallet) => {\n await this.reauthorizeWallet(wallet);\n return wallet.signTransactions({ transactions: [tx] });\n }, this.getAssociationConfig());\n const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash('confirmed');\n const signature = await connection.sendRawTransaction(signedTx.serialize(), {\n preflightCommitment: 'confirmed'\n });\n const confirmation = await connection.confirmTransaction({\n signature,\n blockhash,\n lastValidBlockHeight,\n }, 'confirmed');\n if (confirmation.value.err) {\n throw new Error(`Transaction failed: ${confirmation.value.err.toString()}`);\n }\n const txInfo = await connection.getParsedTransaction(signature, {\n maxSupportedTransactionVersion: 0,\n commitment: 'confirmed'\n });\n return {\n transactionSignature: signature,\n blockNumber: (txInfo === null || txInfo === void 0 ? void 0 : txInfo.slot) || 0,\n gasUsed: ((_a = txInfo === null || txInfo === void 0 ? void 0 : txInfo.meta) === null || _a === void 0 ? void 0 : _a.fee.toString()) || '0',\n data: txInfo === null || txInfo === void 0 ? void 0 : txInfo.meta,\n };\n }\n // Non-surfnet: use signAndSendTransactions\n const signatures = await transact(async (wallet) => {\n await this.reauthorizeWallet(wallet);\n return wallet.signAndSendTransactions({\n transactions: [tx],\n commitment: 'confirmed',\n });\n }, this.getAssociationConfig());\n const signature = signatures[0];\n const txInfo = await confirmAndCheckTransaction(connection, signature);\n return {\n transactionSignature: signature,\n blockNumber: (txInfo === null || txInfo === void 0 ? void 0 : txInfo.slot) || 0,\n gasUsed: ((_b = txInfo === null || txInfo === void 0 ? void 0 : txInfo.meta) === null || _b === void 0 ? void 0 : _b.fee.toString()) || '0',\n data: txInfo === null || txInfo === void 0 ? void 0 : txInfo.meta,\n };\n }\n catch (error) {\n if (((_c = error === null || error === void 0 ? void 0 : error.message) === null || _c === void 0 ? void 0 : _c.includes('not connected')) || ((_d = error === null || error === void 0 ? void 0 : error.message) === null || _d === void 0 ? void 0 : _d.includes('not authorized')) ||\n (error === null || error === void 0 ? void 0 : error.code) === 'ERROR_AUTHORIZATION_FAILED') {\n await this.logout();\n throw new Error('Wallet connection lost. Please reconnect.');\n }\n const isUserRejection = (error === null || error === void 0 ? void 0 : error.code) === 4001 ||\n ((_e = error === null || error === void 0 ? void 0 : error.message) === null || _e === void 0 ? void 0 : _e.toLowerCase().includes('user rejected')) ||\n ((_f = error === null || error === void 0 ? void 0 : error.message) === null || _f === void 0 ? void 0 : _f.toLowerCase().includes('user denied')) ||\n ((_g = error === null || error === void 0 ? void 0 : error.message) === null || _g === void 0 ? void 0 : _g.toLowerCase().includes('user cancelled')) ||\n ((_h = error === null || error === void 0 ? void 0 : error.message) === null || _h === void 0 ? void 0 : _h.toLowerCase().includes('user canceled'));\n if (!isUserRejection) {\n console.error('[SolanaMobileWallet] Transaction failed:', error);\n }\n throw new Error(`Failed to execute transaction: ${error.message}`);\n }\n }\n async getNativeMethods() {\n return {\n authToken: this.authToken,\n walletUriBase: this.walletUriBase,\n publicKey: this.publicKeyObj,\n base64Address: this.base64Address,\n };\n }\n /* ----------------------------------------------------------- *\n * Private Helpers\n * ----------------------------------------------------------- */\n getRpcUrl(network) {\n if (this.networkUrl) {\n return this.networkUrl;\n }\n if (network === 'solana_devnet') {\n return SOLANA_DEVNET_RPC_URL;\n }\n else if (network === 'solana_mainnet') {\n return SOLANA_MAINNET_RPC_URL;\n }\n else if (network === 'surfnet') {\n return SURFNET_RPC_URL;\n }\n return SOLANA_MAINNET_RPC_URL;\n }\n}\nSolanaMobileWalletProvider.instance = null;\n"],"names":["SessionManager","Buffer"],"mappings":"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"}
1
+ {"version":3,"file":"solana-mobile-wallet-provider-BF04Xp8P.esm.js","sources":["../.rollup-tmp/auth/providers/solana-mobile-wallet-provider.js"],"sourcesContent":["import { Buffer } from 'buffer';\nimport { WebSessionManager as SessionManager, createSessionWithSignature, genAuthNonce, genSolanaMessage, buildSetDocumentsTransaction, convertRemainingAccounts } from '@pooflabs/core';\nimport { setCurrentUser, setAuthLoading } from '../../global';\nimport { getPlatform, detectAndroid } from '../../platform';\nimport { Connection, PublicKey, VersionedTransaction } from '@solana/web3.js';\nimport * as anchor from '@coral-xyz/anchor';\nimport { SOLANA_DEVNET_RPC_URL, SOLANA_MAINNET_RPC_URL, SURFNET_RPC_URL } from '..';\nimport { confirmAndCheckTransaction } from './transaction-utils';\n/**\n * Detects whether the current environment is a mobile browser capable of\n * Mobile Wallet Adapter (MWA) communication.\n *\n * Returns true on Android browsers (Chrome, etc.) where MWA intents work,\n * or inside a Seeker/Saga in-app browser context.\n */\nexport function isMobileWalletAvailable() {\n if (typeof window === 'undefined' || typeof navigator === 'undefined')\n return false;\n return detectAndroid();\n}\nconst ED25519_SIGNATURE_LENGTH = 64;\n// Dynamically imported MWA protocol module\nlet mwaProtocolModule = null;\nlet mwaProtocolLoadPromise = null;\nasync function loadMwaProtocol() {\n if (mwaProtocolModule)\n return;\n if (typeof window === 'undefined')\n return;\n if (mwaProtocolLoadPromise)\n return mwaProtocolLoadPromise;\n mwaProtocolLoadPromise = (async () => {\n try {\n mwaProtocolModule = await import('@solana-mobile/mobile-wallet-adapter-protocol-web3js');\n }\n catch (e) {\n console.warn('[SolanaMobileWallet] @solana-mobile/mobile-wallet-adapter-protocol-web3js not installed. Install it to enable Seeker wallet support.');\n throw new Error('Missing @solana-mobile/mobile-wallet-adapter-protocol-web3js dependency');\n }\n })();\n return mwaProtocolLoadPromise;\n}\n/**\n * Registers Mobile Wallet Adapter as a wallet-standard wallet so it appears\n * in wallet selection UIs and can be discovered by other wallet-standard consumers.\n *\n * Call this once at app startup (in a browser-only / non-SSR context).\n *\n * @param config - App identity and optional remote host authority for desktop QR code support\n */\nexport async function registerMobileWalletAdapter(config) {\n var _a;\n if (typeof window === 'undefined')\n return;\n try {\n const walletStandardMobile = await import('@solana-mobile/wallet-standard-mobile');\n const registerMwa = walletStandardMobile.registerMwa || ((_a = walletStandardMobile.default) === null || _a === void 0 ? void 0 : _a.registerMwa);\n if (!registerMwa) {\n console.warn('[SolanaMobileWallet] registerMwa not found in @solana-mobile/wallet-standard-mobile');\n return;\n }\n const options = {};\n if (config === null || config === void 0 ? void 0 : config.appIdentity) {\n options.appIdentity = config.appIdentity;\n }\n if (config === null || config === void 0 ? void 0 : config.chains) {\n options.chains = config.chains;\n }\n if (config === null || config === void 0 ? void 0 : config.remoteHostAuthority) {\n options.remoteHostAuthority = config.remoteHostAuthority;\n }\n // Use the library's default helpers if available\n if (walletStandardMobile.createDefaultAuthorizationCache) {\n options.authorizationCache = walletStandardMobile.createDefaultAuthorizationCache();\n }\n if (walletStandardMobile.createDefaultChainSelector) {\n options.chainSelector = walletStandardMobile.createDefaultChainSelector();\n }\n if (walletStandardMobile.createDefaultWalletNotFoundHandler) {\n options.onWalletNotFound = walletStandardMobile.createDefaultWalletNotFoundHandler();\n }\n registerMwa(options);\n }\n catch (e) {\n // @solana-mobile/wallet-standard-mobile is an optional dependency\n // Silently skip if not installed — the provider still works via\n // @solana-mobile/mobile-wallet-adapter-protocol-web3js directly\n console.debug('[SolanaMobileWallet] @solana-mobile/wallet-standard-mobile not available, skipping wallet-standard registration');\n }\n}\n/**\n * SolanaMobileWalletProvider implements the AuthProvider interface using the\n * Solana Mobile Wallet Adapter (MWA) protocol's low-level `transact` API.\n *\n * This enables TaroBase dApps to work with any MWA-compliant wallet on Solana\n * mobile devices (Seeker, Saga) — including the native Seed Vault Wallet,\n * Phantom, Solflare, and any other wallet that implements the MWA protocol.\n *\n * By using `transact()` directly (instead of the wallet-adapter wrapper),\n * login combines authorize + signMessage into a single wallet session —\n * meaning one popup/approval instead of two.\n */\nexport class SolanaMobileWalletProvider {\n constructor(networkUrl = null, config = {}) {\n // MWA authorization state\n this.authToken = null;\n this.walletUriBase = null;\n this.base64Address = null;\n this.authorizedPublicKey = null;\n this.publicKeyObj = null;\n this.networkUrl = networkUrl;\n this.config = config;\n if (typeof window === 'undefined') {\n throw new Error('SolanaMobileWalletProvider can only be instantiated in a browser environment');\n }\n if (SolanaMobileWalletProvider.instance) {\n return SolanaMobileWalletProvider.instance;\n }\n this.appIdentity = config.appIdentity || {\n name: 'TaroBase App',\n uri: getPlatform().getLocationOrigin(),\n };\n this.chain = `solana:${config.cluster || 'mainnet-beta'}`;\n SolanaMobileWalletProvider.instance = this;\n }\n static getInstance(networkUrl, config) {\n if (!SolanaMobileWalletProvider.instance) {\n new SolanaMobileWalletProvider(networkUrl, config);\n }\n return SolanaMobileWalletProvider.instance;\n }\n /** Config for transact() — routes to the same wallet if we've already authorized */\n getAssociationConfig() {\n if (this.walletUriBase) {\n return { baseUri: this.walletUriBase };\n }\n return undefined;\n }\n /** Reauthorize within a transact callback using a stored auth_token */\n async reauthorizeWallet(wallet) {\n if (!this.authToken) {\n // No existing auth — do a fresh authorize\n const authResult = await wallet.authorize({\n identity: this.appIdentity,\n chain: this.chain,\n });\n this.storeAuthResult(authResult);\n return authResult;\n }\n try {\n const authResult = await wallet.reauthorize({\n auth_token: this.authToken,\n identity: this.appIdentity,\n });\n this.storeAuthResult(authResult);\n return authResult;\n }\n catch (e) {\n // Reauth failed (token expired, wallet reset, etc.) — try fresh authorize\n console.warn('[SolanaMobileWallet] Reauthorization failed, attempting fresh authorize:', e === null || e === void 0 ? void 0 : e.message);\n const authResult = await wallet.authorize({\n identity: this.appIdentity,\n chain: this.chain,\n });\n this.storeAuthResult(authResult);\n return authResult;\n }\n }\n /** Persist auth result from an authorize/reauthorize call */\n storeAuthResult(authResult) {\n var _a;\n this.authToken = authResult.auth_token;\n this.walletUriBase = authResult.wallet_uri_base;\n if (((_a = authResult.accounts) === null || _a === void 0 ? void 0 : _a.length) > 0) {\n const account = authResult.accounts[0];\n this.base64Address = account.address;\n // Decode base64 address → PublicKey → base58\n const addressBytes = Uint8Array.from(getPlatform().atob(account.address), c => c.charCodeAt(0));\n this.publicKeyObj = new PublicKey(addressBytes);\n this.authorizedPublicKey = this.publicKeyObj.toBase58();\n }\n }\n async login() {\n var _a, _b, _c, _d, _e;\n setAuthLoading(true);\n try {\n await loadMwaProtocol();\n const { transact } = mwaProtocolModule;\n // Quick check: if we already have auth state and a valid session, skip\n if (this.authorizedPublicKey) {\n const existingSession = await SessionManager.getSession();\n if (existingSession && existingSession.address === this.authorizedPublicKey) {\n const user = { provider: this, address: this.authorizedPublicKey };\n setCurrentUser(user);\n return user;\n }\n }\n // Pre-fetch nonce from server while wallet is not yet connected\n const nonce = await genAuthNonce();\n // Single transact() call: authorize + signMessages — one wallet popup\n const result = await transact(async (wallet) => {\n // Step 1: Authorize — user approves the dApp\n const authResult = await wallet.authorize({\n identity: this.appIdentity,\n chain: this.chain,\n });\n const base64Addr = authResult.accounts[0].address;\n const addressBytes = Uint8Array.from(getPlatform().atob(base64Addr), c => c.charCodeAt(0));\n const pubkey = new PublicKey(addressBytes);\n const base58Addr = pubkey.toBase58();\n // Step 2: Sign the auth message — still in the same wallet session\n const messageText = await genSolanaMessage(base58Addr, nonce);\n const messageBytes = getPlatform().textEncode(messageText);\n const signedMessages = await wallet.signMessages({\n addresses: [base64Addr],\n payloads: [messageBytes],\n });\n // The signed payload is [original message bytes][64-byte ed25519 signature]\n const signedPayload = signedMessages[0];\n const signatureBytes = signedPayload.slice(-ED25519_SIGNATURE_LENGTH);\n return {\n base58Address: base58Addr,\n base64Address: base64Addr,\n publicKey: pubkey,\n signature: Buffer.from(signatureBytes).toString('base64'),\n messageText,\n authToken: authResult.auth_token,\n walletUriBase: authResult.wallet_uri_base,\n };\n }, this.getAssociationConfig());\n // Store MWA auth state for reauthorization in subsequent transact() calls\n this.authToken = result.authToken;\n this.walletUriBase = result.walletUriBase;\n this.base64Address = result.base64Address;\n this.authorizedPublicKey = result.base58Address;\n this.publicKeyObj = result.publicKey;\n // Check if we already have a valid session for this address\n const existingSession = await SessionManager.getSession();\n if (existingSession && existingSession.address === result.base58Address) {\n const user = { provider: this, address: result.base58Address };\n setCurrentUser(user);\n return user;\n }\n // Create new session on the server\n const createSessionResult = await createSessionWithSignature(result.base58Address, result.messageText, result.signature);\n await SessionManager.storeSession(result.base58Address, createSessionResult.accessToken, createSessionResult.idToken, createSessionResult.refreshToken);\n // Mark auth method\n try {\n getPlatform().storage.setItem('tarobase_last_auth_method', 'mobile-wallet-adapter');\n }\n catch (_f) { }\n const user = { provider: this, address: result.base58Address };\n setCurrentUser(user);\n return user;\n }\n catch (error) {\n const isUserRejection = (error === null || error === void 0 ? void 0 : error.code) === 4001 ||\n ((_a = error === null || error === void 0 ? void 0 : error.message) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes('user rejected')) ||\n ((_b = error === null || error === void 0 ? void 0 : error.message) === null || _b === void 0 ? void 0 : _b.toLowerCase().includes('user denied')) ||\n ((_c = error === null || error === void 0 ? void 0 : error.message) === null || _c === void 0 ? void 0 : _c.toLowerCase().includes('user cancelled')) ||\n ((_d = error === null || error === void 0 ? void 0 : error.message) === null || _d === void 0 ? void 0 : _d.toLowerCase().includes('user canceled')) ||\n ((_e = error === null || error === void 0 ? void 0 : error.message) === null || _e === void 0 ? void 0 : _e.toLowerCase().includes('user declined'));\n if (!isUserRejection) {\n console.error('[SolanaMobileWallet] Login failed:', error);\n }\n throw error;\n }\n finally {\n setAuthLoading(false);\n }\n }\n async restoreSession() {\n const session = await SessionManager.getSession();\n if (session) {\n this.authorizedPublicKey = session.address;\n this.publicKeyObj = new PublicKey(session.address);\n return { provider: this, address: session.address };\n }\n return null;\n }\n async logout() {\n // Deauthorize with the wallet if we have an auth_token\n if (this.authToken) {\n try {\n await loadMwaProtocol();\n const { transact } = mwaProtocolModule;\n const authToken = this.authToken;\n await transact(async (wallet) => {\n await wallet.deauthorize({ auth_token: authToken });\n }, this.getAssociationConfig());\n }\n catch (error) {\n console.error('[SolanaMobileWallet] Deauthorize error:', error);\n }\n }\n this.authToken = null;\n this.walletUriBase = null;\n this.base64Address = null;\n this.authorizedPublicKey = null;\n this.publicKeyObj = null;\n SessionManager.clearSession();\n setCurrentUser(null);\n }\n async signMessage(message) {\n var _a, _b;\n if (!this.authorizedPublicKey || !this.base64Address) {\n throw new Error('Not connected. Call login() first.');\n }\n await loadMwaProtocol();\n const { transact } = mwaProtocolModule;\n const base64Addr = this.base64Address;\n try {\n const signedMessages = await transact(async (wallet) => {\n await this.reauthorizeWallet(wallet);\n const messageBytes = getPlatform().textEncode(message);\n return wallet.signMessages({\n addresses: [base64Addr],\n payloads: [messageBytes],\n });\n }, this.getAssociationConfig());\n const signedPayload = signedMessages[0];\n const signatureBytes = signedPayload.slice(-ED25519_SIGNATURE_LENGTH);\n return Buffer.from(signatureBytes).toString('base64');\n }\n catch (error) {\n if (((_a = error === null || error === void 0 ? void 0 : error.message) === null || _a === void 0 ? void 0 : _a.includes('not connected')) || ((_b = error === null || error === void 0 ? void 0 : error.message) === null || _b === void 0 ? void 0 : _b.includes('not authorized')) ||\n (error === null || error === void 0 ? void 0 : error.code) === 'ERROR_AUTHORIZATION_FAILED') {\n await this.logout();\n throw new Error('Wallet connection lost. Please reconnect.');\n }\n throw new Error(`Failed to sign message: ${error.message}`);\n }\n }\n async signTransaction(transaction) {\n var _a, _b;\n if (!this.publicKeyObj) {\n throw new Error('Not connected. Call login() first.');\n }\n await loadMwaProtocol();\n const { transact } = mwaProtocolModule;\n // Ensure blockhash and fee payer are set before signing\n const isLegacyTransaction = 'recentBlockhash' in transaction && !('message' in transaction && 'staticAccountKeys' in transaction.message);\n if (isLegacyTransaction) {\n const legacyTx = transaction;\n if (!legacyTx.recentBlockhash) {\n const rpcUrl = this.getRpcUrl();\n const connection = new Connection(rpcUrl, 'confirmed');\n const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash('confirmed');\n legacyTx.recentBlockhash = blockhash;\n legacyTx.lastValidBlockHeight = lastValidBlockHeight;\n }\n if (!legacyTx.feePayer && this.publicKeyObj) {\n legacyTx.feePayer = this.publicKeyObj;\n }\n }\n else {\n const versionedTx = transaction;\n if (!versionedTx.message.recentBlockhash) {\n const rpcUrl = this.getRpcUrl();\n const connection = new Connection(rpcUrl, 'confirmed');\n const { blockhash } = await connection.getLatestBlockhash('confirmed');\n versionedTx.message.recentBlockhash = blockhash;\n }\n }\n try {\n const signedTransactions = await transact(async (wallet) => {\n await this.reauthorizeWallet(wallet);\n return wallet.signTransactions({ transactions: [transaction] });\n }, this.getAssociationConfig());\n return signedTransactions[0];\n }\n catch (error) {\n if (((_a = error === null || error === void 0 ? void 0 : error.message) === null || _a === void 0 ? void 0 : _a.includes('not connected')) || ((_b = error === null || error === void 0 ? void 0 : error.message) === null || _b === void 0 ? void 0 : _b.includes('not authorized')) ||\n (error === null || error === void 0 ? void 0 : error.code) === 'ERROR_AUTHORIZATION_FAILED') {\n await this.logout();\n throw new Error('Wallet connection lost. Please reconnect.');\n }\n throw new Error(`Failed to sign transaction: ${error.message}`);\n }\n }\n async signAndSubmitTransaction(transaction, feePayer) {\n var _a, _b, _c, _d, _e, _f;\n if (!this.publicKeyObj) {\n throw new Error('Not connected. Call login() first.');\n }\n await loadMwaProtocol();\n const { transact } = mwaProtocolModule;\n const rpcUrl = this.getRpcUrl();\n const connection = new Connection(rpcUrl, 'confirmed');\n const isSurfnet = rpcUrl === SURFNET_RPC_URL;\n try {\n const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash('confirmed');\n const isLegacyTransaction = 'recentBlockhash' in transaction && !('message' in transaction && 'staticAccountKeys' in transaction.message);\n if (isLegacyTransaction) {\n const legacyTx = transaction;\n legacyTx.recentBlockhash = blockhash;\n legacyTx.lastValidBlockHeight = lastValidBlockHeight;\n if (!legacyTx.feePayer) {\n if (feePayer) {\n legacyTx.feePayer = feePayer;\n }\n else if (this.publicKeyObj) {\n legacyTx.feePayer = this.publicKeyObj;\n }\n }\n }\n else {\n const versionedTx = transaction;\n versionedTx.message.recentBlockhash = blockhash;\n }\n if (isSurfnet) {\n // Surfnet: sign-only, then submit to our specific RPC\n const signedTransactions = await transact(async (wallet) => {\n await this.reauthorizeWallet(wallet);\n return wallet.signTransactions({ transactions: [transaction] });\n }, this.getAssociationConfig());\n const signedTx = signedTransactions[0];\n const signature = await connection.sendRawTransaction(signedTx.serialize(), {\n preflightCommitment: 'confirmed'\n });\n const confirmation = await connection.confirmTransaction({\n signature,\n blockhash,\n lastValidBlockHeight,\n }, 'confirmed');\n if (confirmation.value.err) {\n throw new Error(`Transaction failed: ${confirmation.value.err.toString()}`);\n }\n return signature;\n }\n // Non-surfnet: use signAndSendTransactions for wallet-optimized submission\n const signatures = await transact(async (wallet) => {\n await this.reauthorizeWallet(wallet);\n return wallet.signAndSendTransactions({\n transactions: [transaction],\n commitment: 'confirmed',\n });\n }, this.getAssociationConfig());\n const signature = signatures[0];\n await confirmAndCheckTransaction(connection, signature);\n return signature;\n }\n catch (error) {\n if (((_a = error === null || error === void 0 ? void 0 : error.message) === null || _a === void 0 ? void 0 : _a.includes('not connected')) || ((_b = error === null || error === void 0 ? void 0 : error.message) === null || _b === void 0 ? void 0 : _b.includes('not authorized')) ||\n (error === null || error === void 0 ? void 0 : error.code) === 'ERROR_AUTHORIZATION_FAILED') {\n await this.logout();\n throw new Error('Wallet connection lost. Please reconnect.');\n }\n const isUserRejection = (error === null || error === void 0 ? void 0 : error.code) === 4001 ||\n ((_c = error === null || error === void 0 ? void 0 : error.message) === null || _c === void 0 ? void 0 : _c.toLowerCase().includes('user rejected')) ||\n ((_d = error === null || error === void 0 ? void 0 : error.message) === null || _d === void 0 ? void 0 : _d.toLowerCase().includes('user denied')) ||\n ((_e = error === null || error === void 0 ? void 0 : error.message) === null || _e === void 0 ? void 0 : _e.toLowerCase().includes('user cancelled')) ||\n ((_f = error === null || error === void 0 ? void 0 : error.message) === null || _f === void 0 ? void 0 : _f.toLowerCase().includes('user canceled'));\n if (!isUserRejection) {\n console.error('[SolanaMobileWallet] Transaction failed:', error);\n }\n throw new Error(`Failed to execute transaction: ${error.message}`);\n }\n }\n async runTransaction(_evmTransactionData, solTransactionData, options) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n if (!solTransactionData) {\n throw new Error('Solana transaction data is required for mobile wallet');\n }\n if (!this.publicKeyObj || !this.authorizedPublicKey) {\n await this.login();\n }\n await loadMwaProtocol();\n const { transact } = mwaProtocolModule;\n const rpcUrl = this.getRpcUrl(solTransactionData.network);\n const connection = new Connection(rpcUrl, 'confirmed');\n const isSurfnet = rpcUrl === SURFNET_RPC_URL;\n try {\n const publicKey = this.publicKeyObj;\n const remainingAccounts = convertRemainingAccounts(solTransactionData.txArgs[0].remainingAccounts);\n let app_id = solTransactionData.appId;\n if (typeof window !== 'undefined' && window.CUSTOM_TAROBASE_APP_ID_HEADER) {\n app_id = window.CUSTOM_TAROBASE_APP_ID_HEADER;\n }\n if (!app_id) {\n throw new Error('App ID is required');\n }\n // Create a mock wallet adapter for Anchor (only publicKey is needed for building TX)\n const mockWalletAdapter = {\n publicKey,\n signTransaction: async (tx) => tx,\n signAllTransactions: async (txs) => txs,\n };\n const anchorProvider = new anchor.AnchorProvider(connection, mockWalletAdapter, anchor.AnchorProvider.defaultOptions());\n const finalDeduped = [];\n for (const acc of remainingAccounts) {\n const existing = finalDeduped.find((d) => d.pubkey.equals(acc.pubkey));\n if (existing) {\n existing.isSigner = existing.isSigner || acc.isSigner;\n existing.isWritable = existing.isWritable || acc.isWritable;\n }\n else {\n finalDeduped.push(acc);\n }\n }\n let tx;\n if (solTransactionData.signedTransaction) {\n tx = VersionedTransaction.deserialize(Buffer.from(solTransactionData.signedTransaction, 'base64'));\n }\n else {\n const result = await buildSetDocumentsTransaction(connection, solTransactionData.txArgs[0].idl, anchorProvider, publicKey, {\n app_id,\n documents: solTransactionData.txArgs[0].setDocumentData,\n delete_paths: solTransactionData.txArgs[0].deletePaths,\n txData: solTransactionData.txArgs[0].txData\n }, finalDeduped, solTransactionData.lutKey, solTransactionData.preInstructions, false, solTransactionData.additionalLutAddresses);\n tx = result.tx;\n }\n if ((options === null || options === void 0 ? void 0 : options.shouldSubmitTx) === false) {\n const [signedTx] = await transact(async (wallet) => {\n await this.reauthorizeWallet(wallet);\n return wallet.signTransactions({ transactions: [tx] });\n }, this.getAssociationConfig());\n return {\n signedTransaction: signedTx,\n blockNumber: 0,\n gasUsed: '0',\n data: ''\n };\n }\n if (isSurfnet) {\n // Surfnet: sign then submit manually to our RPC\n const [signedTx] = await transact(async (wallet) => {\n await this.reauthorizeWallet(wallet);\n return wallet.signTransactions({ transactions: [tx] });\n }, this.getAssociationConfig());\n const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash('confirmed');\n const signature = await connection.sendRawTransaction(signedTx.serialize(), {\n preflightCommitment: 'confirmed'\n });\n const confirmation = await connection.confirmTransaction({\n signature,\n blockhash,\n lastValidBlockHeight,\n }, 'confirmed');\n if (confirmation.value.err) {\n throw new Error(`Transaction failed: ${confirmation.value.err.toString()}`);\n }\n const txInfo = await connection.getParsedTransaction(signature, {\n maxSupportedTransactionVersion: 0,\n commitment: 'confirmed'\n });\n return {\n transactionSignature: signature,\n blockNumber: (txInfo === null || txInfo === void 0 ? void 0 : txInfo.slot) || 0,\n gasUsed: ((_a = txInfo === null || txInfo === void 0 ? void 0 : txInfo.meta) === null || _a === void 0 ? void 0 : _a.fee.toString()) || '0',\n data: txInfo === null || txInfo === void 0 ? void 0 : txInfo.meta,\n };\n }\n // Non-surfnet: use signAndSendTransactions\n const signatures = await transact(async (wallet) => {\n await this.reauthorizeWallet(wallet);\n return wallet.signAndSendTransactions({\n transactions: [tx],\n commitment: 'confirmed',\n });\n }, this.getAssociationConfig());\n const signature = signatures[0];\n const txInfo = await confirmAndCheckTransaction(connection, signature);\n return {\n transactionSignature: signature,\n blockNumber: (txInfo === null || txInfo === void 0 ? void 0 : txInfo.slot) || 0,\n gasUsed: ((_b = txInfo === null || txInfo === void 0 ? void 0 : txInfo.meta) === null || _b === void 0 ? void 0 : _b.fee.toString()) || '0',\n data: txInfo === null || txInfo === void 0 ? void 0 : txInfo.meta,\n };\n }\n catch (error) {\n if (((_c = error === null || error === void 0 ? void 0 : error.message) === null || _c === void 0 ? void 0 : _c.includes('not connected')) || ((_d = error === null || error === void 0 ? void 0 : error.message) === null || _d === void 0 ? void 0 : _d.includes('not authorized')) ||\n (error === null || error === void 0 ? void 0 : error.code) === 'ERROR_AUTHORIZATION_FAILED') {\n await this.logout();\n throw new Error('Wallet connection lost. Please reconnect.');\n }\n const isUserRejection = (error === null || error === void 0 ? void 0 : error.code) === 4001 ||\n ((_e = error === null || error === void 0 ? void 0 : error.message) === null || _e === void 0 ? void 0 : _e.toLowerCase().includes('user rejected')) ||\n ((_f = error === null || error === void 0 ? void 0 : error.message) === null || _f === void 0 ? void 0 : _f.toLowerCase().includes('user denied')) ||\n ((_g = error === null || error === void 0 ? void 0 : error.message) === null || _g === void 0 ? void 0 : _g.toLowerCase().includes('user cancelled')) ||\n ((_h = error === null || error === void 0 ? void 0 : error.message) === null || _h === void 0 ? void 0 : _h.toLowerCase().includes('user canceled'));\n if (!isUserRejection) {\n console.error('[SolanaMobileWallet] Transaction failed:', error);\n }\n throw new Error(`Failed to execute transaction: ${error.message}`);\n }\n }\n async getNativeMethods() {\n return {\n authToken: this.authToken,\n walletUriBase: this.walletUriBase,\n publicKey: this.publicKeyObj,\n base64Address: this.base64Address,\n };\n }\n /* ----------------------------------------------------------- *\n * Private Helpers\n * ----------------------------------------------------------- */\n getRpcUrl(network) {\n if (this.networkUrl) {\n return this.networkUrl;\n }\n if (network === 'solana_devnet') {\n return SOLANA_DEVNET_RPC_URL;\n }\n else if (network === 'solana_mainnet') {\n return SOLANA_MAINNET_RPC_URL;\n }\n else if (network === 'surfnet') {\n return SURFNET_RPC_URL;\n }\n return SOLANA_MAINNET_RPC_URL;\n }\n}\nSolanaMobileWalletProvider.instance = null;\n"],"names":["SessionManager","Buffer"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-Bdcc5821.js');
4
- var index_native = require('./index.native-CyA-RdvW.js');
3
+ var index = require('./index-Dz0bPXrU.js');
4
+ var index_native = require('./index.native-11supFRU.js');
5
5
  var web3_js = require('@solana/web3.js');
6
6
  var anchor = require('@coral-xyz/anchor');
7
7
  require('axios');
@@ -39,7 +39,7 @@ async function loadMwaProtocol() {
39
39
  return mwaProtocolLoadPromise;
40
40
  mwaProtocolLoadPromise = (async () => {
41
41
  try {
42
- mwaProtocolModule = await Promise.resolve().then(function () { return require('./index.browser-ZD7Tz2bn.js'); });
42
+ mwaProtocolModule = await Promise.resolve().then(function () { return require('./index.browser-dszs5oe5.js'); });
43
43
  }
44
44
  catch (e) {
45
45
  console.warn('[SolanaMobileWallet] @solana-mobile/mobile-wallet-adapter-protocol-web3js not installed. Install it to enable Seeker wallet support.');
@@ -576,4 +576,4 @@ class SolanaMobileWalletProvider {
576
576
  SolanaMobileWalletProvider.instance = null;
577
577
 
578
578
  exports.SolanaMobileWalletProvider = SolanaMobileWalletProvider;
579
- //# sourceMappingURL=solana-mobile-wallet-provider-t22Ie8lY.js.map
579
+ //# sourceMappingURL=solana-mobile-wallet-provider-BXm94fqW.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"solana-mobile-wallet-provider-t22Ie8lY.js","sources":["../.rollup-tmp/auth/providers/solana-mobile-wallet-provider.js"],"sourcesContent":["import { Buffer } from 'buffer';\nimport { WebSessionManager as SessionManager, createSessionWithSignature, genAuthNonce, genSolanaMessage, buildSetDocumentsTransaction, convertRemainingAccounts } from '@pooflabs/core';\nimport { setCurrentUser, setAuthLoading } from '../../global';\nimport { getPlatform, detectAndroid } from '../../platform';\nimport { Connection, PublicKey, VersionedTransaction } from '@solana/web3.js';\nimport * as anchor from '@coral-xyz/anchor';\nimport { SOLANA_DEVNET_RPC_URL, SOLANA_MAINNET_RPC_URL, SURFNET_RPC_URL } from '..';\nimport { confirmAndCheckTransaction } from './transaction-utils';\n/**\n * Detects whether the current environment is a mobile browser capable of\n * Mobile Wallet Adapter (MWA) communication.\n *\n * Returns true on Android browsers (Chrome, etc.) where MWA intents work,\n * or inside a Seeker/Saga in-app browser context.\n */\nexport function isMobileWalletAvailable() {\n if (typeof window === 'undefined' || typeof navigator === 'undefined')\n return false;\n return detectAndroid();\n}\nconst ED25519_SIGNATURE_LENGTH = 64;\n// Dynamically imported MWA protocol module\nlet mwaProtocolModule = null;\nlet mwaProtocolLoadPromise = null;\nasync function loadMwaProtocol() {\n if (mwaProtocolModule)\n return;\n if (typeof window === 'undefined')\n return;\n if (mwaProtocolLoadPromise)\n return mwaProtocolLoadPromise;\n mwaProtocolLoadPromise = (async () => {\n try {\n mwaProtocolModule = await import('@solana-mobile/mobile-wallet-adapter-protocol-web3js');\n }\n catch (e) {\n console.warn('[SolanaMobileWallet] @solana-mobile/mobile-wallet-adapter-protocol-web3js not installed. Install it to enable Seeker wallet support.');\n throw new Error('Missing @solana-mobile/mobile-wallet-adapter-protocol-web3js dependency');\n }\n })();\n return mwaProtocolLoadPromise;\n}\n/**\n * Registers Mobile Wallet Adapter as a wallet-standard wallet so it appears\n * in wallet selection UIs and can be discovered by other wallet-standard consumers.\n *\n * Call this once at app startup (in a browser-only / non-SSR context).\n *\n * @param config - App identity and optional remote host authority for desktop QR code support\n */\nexport async function registerMobileWalletAdapter(config) {\n var _a;\n if (typeof window === 'undefined')\n return;\n try {\n const walletStandardMobile = await import('@solana-mobile/wallet-standard-mobile');\n const registerMwa = walletStandardMobile.registerMwa || ((_a = walletStandardMobile.default) === null || _a === void 0 ? void 0 : _a.registerMwa);\n if (!registerMwa) {\n console.warn('[SolanaMobileWallet] registerMwa not found in @solana-mobile/wallet-standard-mobile');\n return;\n }\n const options = {};\n if (config === null || config === void 0 ? void 0 : config.appIdentity) {\n options.appIdentity = config.appIdentity;\n }\n if (config === null || config === void 0 ? void 0 : config.chains) {\n options.chains = config.chains;\n }\n if (config === null || config === void 0 ? void 0 : config.remoteHostAuthority) {\n options.remoteHostAuthority = config.remoteHostAuthority;\n }\n // Use the library's default helpers if available\n if (walletStandardMobile.createDefaultAuthorizationCache) {\n options.authorizationCache = walletStandardMobile.createDefaultAuthorizationCache();\n }\n if (walletStandardMobile.createDefaultChainSelector) {\n options.chainSelector = walletStandardMobile.createDefaultChainSelector();\n }\n if (walletStandardMobile.createDefaultWalletNotFoundHandler) {\n options.onWalletNotFound = walletStandardMobile.createDefaultWalletNotFoundHandler();\n }\n registerMwa(options);\n }\n catch (e) {\n // @solana-mobile/wallet-standard-mobile is an optional dependency\n // Silently skip if not installed — the provider still works via\n // @solana-mobile/mobile-wallet-adapter-protocol-web3js directly\n console.debug('[SolanaMobileWallet] @solana-mobile/wallet-standard-mobile not available, skipping wallet-standard registration');\n }\n}\n/**\n * SolanaMobileWalletProvider implements the AuthProvider interface using the\n * Solana Mobile Wallet Adapter (MWA) protocol's low-level `transact` API.\n *\n * This enables TaroBase dApps to work with any MWA-compliant wallet on Solana\n * mobile devices (Seeker, Saga) — including the native Seed Vault Wallet,\n * Phantom, Solflare, and any other wallet that implements the MWA protocol.\n *\n * By using `transact()` directly (instead of the wallet-adapter wrapper),\n * login combines authorize + signMessage into a single wallet session —\n * meaning one popup/approval instead of two.\n */\nexport class SolanaMobileWalletProvider {\n constructor(networkUrl = null, config = {}) {\n // MWA authorization state\n this.authToken = null;\n this.walletUriBase = null;\n this.base64Address = null;\n this.authorizedPublicKey = null;\n this.publicKeyObj = null;\n this.networkUrl = networkUrl;\n this.config = config;\n if (typeof window === 'undefined') {\n throw new Error('SolanaMobileWalletProvider can only be instantiated in a browser environment');\n }\n if (SolanaMobileWalletProvider.instance) {\n return SolanaMobileWalletProvider.instance;\n }\n this.appIdentity = config.appIdentity || {\n name: 'TaroBase App',\n uri: getPlatform().getLocationOrigin(),\n };\n this.chain = `solana:${config.cluster || 'mainnet-beta'}`;\n SolanaMobileWalletProvider.instance = this;\n }\n static getInstance(networkUrl, config) {\n if (!SolanaMobileWalletProvider.instance) {\n new SolanaMobileWalletProvider(networkUrl, config);\n }\n return SolanaMobileWalletProvider.instance;\n }\n /** Config for transact() — routes to the same wallet if we've already authorized */\n getAssociationConfig() {\n if (this.walletUriBase) {\n return { baseUri: this.walletUriBase };\n }\n return undefined;\n }\n /** Reauthorize within a transact callback using a stored auth_token */\n async reauthorizeWallet(wallet) {\n if (!this.authToken) {\n // No existing auth — do a fresh authorize\n const authResult = await wallet.authorize({\n identity: this.appIdentity,\n chain: this.chain,\n });\n this.storeAuthResult(authResult);\n return authResult;\n }\n try {\n const authResult = await wallet.reauthorize({\n auth_token: this.authToken,\n identity: this.appIdentity,\n });\n this.storeAuthResult(authResult);\n return authResult;\n }\n catch (e) {\n // Reauth failed (token expired, wallet reset, etc.) — try fresh authorize\n console.warn('[SolanaMobileWallet] Reauthorization failed, attempting fresh authorize:', e === null || e === void 0 ? void 0 : e.message);\n const authResult = await wallet.authorize({\n identity: this.appIdentity,\n chain: this.chain,\n });\n this.storeAuthResult(authResult);\n return authResult;\n }\n }\n /** Persist auth result from an authorize/reauthorize call */\n storeAuthResult(authResult) {\n var _a;\n this.authToken = authResult.auth_token;\n this.walletUriBase = authResult.wallet_uri_base;\n if (((_a = authResult.accounts) === null || _a === void 0 ? void 0 : _a.length) > 0) {\n const account = authResult.accounts[0];\n this.base64Address = account.address;\n // Decode base64 address → PublicKey → base58\n const addressBytes = Uint8Array.from(getPlatform().atob(account.address), c => c.charCodeAt(0));\n this.publicKeyObj = new PublicKey(addressBytes);\n this.authorizedPublicKey = this.publicKeyObj.toBase58();\n }\n }\n async login() {\n var _a, _b, _c, _d, _e;\n setAuthLoading(true);\n try {\n await loadMwaProtocol();\n const { transact } = mwaProtocolModule;\n // Quick check: if we already have auth state and a valid session, skip\n if (this.authorizedPublicKey) {\n const existingSession = await SessionManager.getSession();\n if (existingSession && existingSession.address === this.authorizedPublicKey) {\n const user = { provider: this, address: this.authorizedPublicKey };\n setCurrentUser(user);\n return user;\n }\n }\n // Pre-fetch nonce from server while wallet is not yet connected\n const nonce = await genAuthNonce();\n // Single transact() call: authorize + signMessages — one wallet popup\n const result = await transact(async (wallet) => {\n // Step 1: Authorize — user approves the dApp\n const authResult = await wallet.authorize({\n identity: this.appIdentity,\n chain: this.chain,\n });\n const base64Addr = authResult.accounts[0].address;\n const addressBytes = Uint8Array.from(getPlatform().atob(base64Addr), c => c.charCodeAt(0));\n const pubkey = new PublicKey(addressBytes);\n const base58Addr = pubkey.toBase58();\n // Step 2: Sign the auth message — still in the same wallet session\n const messageText = await genSolanaMessage(base58Addr, nonce);\n const messageBytes = getPlatform().textEncode(messageText);\n const signedMessages = await wallet.signMessages({\n addresses: [base64Addr],\n payloads: [messageBytes],\n });\n // The signed payload is [original message bytes][64-byte ed25519 signature]\n const signedPayload = signedMessages[0];\n const signatureBytes = signedPayload.slice(-ED25519_SIGNATURE_LENGTH);\n return {\n base58Address: base58Addr,\n base64Address: base64Addr,\n publicKey: pubkey,\n signature: Buffer.from(signatureBytes).toString('base64'),\n messageText,\n authToken: authResult.auth_token,\n walletUriBase: authResult.wallet_uri_base,\n };\n }, this.getAssociationConfig());\n // Store MWA auth state for reauthorization in subsequent transact() calls\n this.authToken = result.authToken;\n this.walletUriBase = result.walletUriBase;\n this.base64Address = result.base64Address;\n this.authorizedPublicKey = result.base58Address;\n this.publicKeyObj = result.publicKey;\n // Check if we already have a valid session for this address\n const existingSession = await SessionManager.getSession();\n if (existingSession && existingSession.address === result.base58Address) {\n const user = { provider: this, address: result.base58Address };\n setCurrentUser(user);\n return user;\n }\n // Create new session on the server\n const createSessionResult = await createSessionWithSignature(result.base58Address, result.messageText, result.signature);\n await SessionManager.storeSession(result.base58Address, createSessionResult.accessToken, createSessionResult.idToken, createSessionResult.refreshToken);\n // Mark auth method\n try {\n getPlatform().storage.setItem('tarobase_last_auth_method', 'mobile-wallet-adapter');\n }\n catch (_f) { }\n const user = { provider: this, address: result.base58Address };\n setCurrentUser(user);\n return user;\n }\n catch (error) {\n const isUserRejection = (error === null || error === void 0 ? void 0 : error.code) === 4001 ||\n ((_a = error === null || error === void 0 ? void 0 : error.message) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes('user rejected')) ||\n ((_b = error === null || error === void 0 ? void 0 : error.message) === null || _b === void 0 ? void 0 : _b.toLowerCase().includes('user denied')) ||\n ((_c = error === null || error === void 0 ? void 0 : error.message) === null || _c === void 0 ? void 0 : _c.toLowerCase().includes('user cancelled')) ||\n ((_d = error === null || error === void 0 ? void 0 : error.message) === null || _d === void 0 ? void 0 : _d.toLowerCase().includes('user canceled')) ||\n ((_e = error === null || error === void 0 ? void 0 : error.message) === null || _e === void 0 ? void 0 : _e.toLowerCase().includes('user declined'));\n if (!isUserRejection) {\n console.error('[SolanaMobileWallet] Login failed:', error);\n }\n throw error;\n }\n finally {\n setAuthLoading(false);\n }\n }\n async restoreSession() {\n const session = await SessionManager.getSession();\n if (session) {\n this.authorizedPublicKey = session.address;\n this.publicKeyObj = new PublicKey(session.address);\n return { provider: this, address: session.address };\n }\n return null;\n }\n async logout() {\n // Deauthorize with the wallet if we have an auth_token\n if (this.authToken) {\n try {\n await loadMwaProtocol();\n const { transact } = mwaProtocolModule;\n const authToken = this.authToken;\n await transact(async (wallet) => {\n await wallet.deauthorize({ auth_token: authToken });\n }, this.getAssociationConfig());\n }\n catch (error) {\n console.error('[SolanaMobileWallet] Deauthorize error:', error);\n }\n }\n this.authToken = null;\n this.walletUriBase = null;\n this.base64Address = null;\n this.authorizedPublicKey = null;\n this.publicKeyObj = null;\n SessionManager.clearSession();\n setCurrentUser(null);\n }\n async signMessage(message) {\n var _a, _b;\n if (!this.authorizedPublicKey || !this.base64Address) {\n throw new Error('Not connected. Call login() first.');\n }\n await loadMwaProtocol();\n const { transact } = mwaProtocolModule;\n const base64Addr = this.base64Address;\n try {\n const signedMessages = await transact(async (wallet) => {\n await this.reauthorizeWallet(wallet);\n const messageBytes = getPlatform().textEncode(message);\n return wallet.signMessages({\n addresses: [base64Addr],\n payloads: [messageBytes],\n });\n }, this.getAssociationConfig());\n const signedPayload = signedMessages[0];\n const signatureBytes = signedPayload.slice(-ED25519_SIGNATURE_LENGTH);\n return Buffer.from(signatureBytes).toString('base64');\n }\n catch (error) {\n if (((_a = error === null || error === void 0 ? void 0 : error.message) === null || _a === void 0 ? void 0 : _a.includes('not connected')) || ((_b = error === null || error === void 0 ? void 0 : error.message) === null || _b === void 0 ? void 0 : _b.includes('not authorized')) ||\n (error === null || error === void 0 ? void 0 : error.code) === 'ERROR_AUTHORIZATION_FAILED') {\n await this.logout();\n throw new Error('Wallet connection lost. Please reconnect.');\n }\n throw new Error(`Failed to sign message: ${error.message}`);\n }\n }\n async signTransaction(transaction) {\n var _a, _b;\n if (!this.publicKeyObj) {\n throw new Error('Not connected. Call login() first.');\n }\n await loadMwaProtocol();\n const { transact } = mwaProtocolModule;\n // Ensure blockhash and fee payer are set before signing\n const isLegacyTransaction = 'recentBlockhash' in transaction && !('message' in transaction && 'staticAccountKeys' in transaction.message);\n if (isLegacyTransaction) {\n const legacyTx = transaction;\n if (!legacyTx.recentBlockhash) {\n const rpcUrl = this.getRpcUrl();\n const connection = new Connection(rpcUrl, 'confirmed');\n const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash('confirmed');\n legacyTx.recentBlockhash = blockhash;\n legacyTx.lastValidBlockHeight = lastValidBlockHeight;\n }\n if (!legacyTx.feePayer && this.publicKeyObj) {\n legacyTx.feePayer = this.publicKeyObj;\n }\n }\n else {\n const versionedTx = transaction;\n if (!versionedTx.message.recentBlockhash) {\n const rpcUrl = this.getRpcUrl();\n const connection = new Connection(rpcUrl, 'confirmed');\n const { blockhash } = await connection.getLatestBlockhash('confirmed');\n versionedTx.message.recentBlockhash = blockhash;\n }\n }\n try {\n const signedTransactions = await transact(async (wallet) => {\n await this.reauthorizeWallet(wallet);\n return wallet.signTransactions({ transactions: [transaction] });\n }, this.getAssociationConfig());\n return signedTransactions[0];\n }\n catch (error) {\n if (((_a = error === null || error === void 0 ? void 0 : error.message) === null || _a === void 0 ? void 0 : _a.includes('not connected')) || ((_b = error === null || error === void 0 ? void 0 : error.message) === null || _b === void 0 ? void 0 : _b.includes('not authorized')) ||\n (error === null || error === void 0 ? void 0 : error.code) === 'ERROR_AUTHORIZATION_FAILED') {\n await this.logout();\n throw new Error('Wallet connection lost. Please reconnect.');\n }\n throw new Error(`Failed to sign transaction: ${error.message}`);\n }\n }\n async signAndSubmitTransaction(transaction, feePayer) {\n var _a, _b, _c, _d, _e, _f;\n if (!this.publicKeyObj) {\n throw new Error('Not connected. Call login() first.');\n }\n await loadMwaProtocol();\n const { transact } = mwaProtocolModule;\n const rpcUrl = this.getRpcUrl();\n const connection = new Connection(rpcUrl, 'confirmed');\n const isSurfnet = rpcUrl === SURFNET_RPC_URL;\n try {\n const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash('confirmed');\n const isLegacyTransaction = 'recentBlockhash' in transaction && !('message' in transaction && 'staticAccountKeys' in transaction.message);\n if (isLegacyTransaction) {\n const legacyTx = transaction;\n legacyTx.recentBlockhash = blockhash;\n legacyTx.lastValidBlockHeight = lastValidBlockHeight;\n if (!legacyTx.feePayer) {\n if (feePayer) {\n legacyTx.feePayer = feePayer;\n }\n else if (this.publicKeyObj) {\n legacyTx.feePayer = this.publicKeyObj;\n }\n }\n }\n else {\n const versionedTx = transaction;\n versionedTx.message.recentBlockhash = blockhash;\n }\n if (isSurfnet) {\n // Surfnet: sign-only, then submit to our specific RPC\n const signedTransactions = await transact(async (wallet) => {\n await this.reauthorizeWallet(wallet);\n return wallet.signTransactions({ transactions: [transaction] });\n }, this.getAssociationConfig());\n const signedTx = signedTransactions[0];\n const signature = await connection.sendRawTransaction(signedTx.serialize(), {\n preflightCommitment: 'confirmed'\n });\n const confirmation = await connection.confirmTransaction({\n signature,\n blockhash,\n lastValidBlockHeight,\n }, 'confirmed');\n if (confirmation.value.err) {\n throw new Error(`Transaction failed: ${confirmation.value.err.toString()}`);\n }\n return signature;\n }\n // Non-surfnet: use signAndSendTransactions for wallet-optimized submission\n const signatures = await transact(async (wallet) => {\n await this.reauthorizeWallet(wallet);\n return wallet.signAndSendTransactions({\n transactions: [transaction],\n commitment: 'confirmed',\n });\n }, this.getAssociationConfig());\n const signature = signatures[0];\n await confirmAndCheckTransaction(connection, signature);\n return signature;\n }\n catch (error) {\n if (((_a = error === null || error === void 0 ? void 0 : error.message) === null || _a === void 0 ? void 0 : _a.includes('not connected')) || ((_b = error === null || error === void 0 ? void 0 : error.message) === null || _b === void 0 ? void 0 : _b.includes('not authorized')) ||\n (error === null || error === void 0 ? void 0 : error.code) === 'ERROR_AUTHORIZATION_FAILED') {\n await this.logout();\n throw new Error('Wallet connection lost. Please reconnect.');\n }\n const isUserRejection = (error === null || error === void 0 ? void 0 : error.code) === 4001 ||\n ((_c = error === null || error === void 0 ? void 0 : error.message) === null || _c === void 0 ? void 0 : _c.toLowerCase().includes('user rejected')) ||\n ((_d = error === null || error === void 0 ? void 0 : error.message) === null || _d === void 0 ? void 0 : _d.toLowerCase().includes('user denied')) ||\n ((_e = error === null || error === void 0 ? void 0 : error.message) === null || _e === void 0 ? void 0 : _e.toLowerCase().includes('user cancelled')) ||\n ((_f = error === null || error === void 0 ? void 0 : error.message) === null || _f === void 0 ? void 0 : _f.toLowerCase().includes('user canceled'));\n if (!isUserRejection) {\n console.error('[SolanaMobileWallet] Transaction failed:', error);\n }\n throw new Error(`Failed to execute transaction: ${error.message}`);\n }\n }\n async runTransaction(_evmTransactionData, solTransactionData, options) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n if (!solTransactionData) {\n throw new Error('Solana transaction data is required for mobile wallet');\n }\n if (!this.publicKeyObj || !this.authorizedPublicKey) {\n await this.login();\n }\n await loadMwaProtocol();\n const { transact } = mwaProtocolModule;\n const rpcUrl = this.getRpcUrl(solTransactionData.network);\n const connection = new Connection(rpcUrl, 'confirmed');\n const isSurfnet = rpcUrl === SURFNET_RPC_URL;\n try {\n const publicKey = this.publicKeyObj;\n const remainingAccounts = convertRemainingAccounts(solTransactionData.txArgs[0].remainingAccounts);\n let app_id = solTransactionData.appId;\n if (typeof window !== 'undefined' && window.CUSTOM_TAROBASE_APP_ID_HEADER) {\n app_id = window.CUSTOM_TAROBASE_APP_ID_HEADER;\n }\n if (!app_id) {\n throw new Error('App ID is required');\n }\n // Create a mock wallet adapter for Anchor (only publicKey is needed for building TX)\n const mockWalletAdapter = {\n publicKey,\n signTransaction: async (tx) => tx,\n signAllTransactions: async (txs) => txs,\n };\n const anchorProvider = new anchor.AnchorProvider(connection, mockWalletAdapter, anchor.AnchorProvider.defaultOptions());\n const finalDeduped = [];\n for (const acc of remainingAccounts) {\n const existing = finalDeduped.find((d) => d.pubkey.equals(acc.pubkey));\n if (existing) {\n existing.isSigner = existing.isSigner || acc.isSigner;\n existing.isWritable = existing.isWritable || acc.isWritable;\n }\n else {\n finalDeduped.push(acc);\n }\n }\n let tx;\n if (solTransactionData.signedTransaction) {\n tx = VersionedTransaction.deserialize(Buffer.from(solTransactionData.signedTransaction, 'base64'));\n }\n else {\n const result = await buildSetDocumentsTransaction(connection, solTransactionData.txArgs[0].idl, anchorProvider, publicKey, {\n app_id,\n documents: solTransactionData.txArgs[0].setDocumentData,\n delete_paths: solTransactionData.txArgs[0].deletePaths,\n txData: solTransactionData.txArgs[0].txData\n }, finalDeduped, solTransactionData.lutKey, solTransactionData.preInstructions, false, solTransactionData.additionalLutAddresses);\n tx = result.tx;\n }\n if ((options === null || options === void 0 ? void 0 : options.shouldSubmitTx) === false) {\n const [signedTx] = await transact(async (wallet) => {\n await this.reauthorizeWallet(wallet);\n return wallet.signTransactions({ transactions: [tx] });\n }, this.getAssociationConfig());\n return {\n signedTransaction: signedTx,\n blockNumber: 0,\n gasUsed: '0',\n data: ''\n };\n }\n if (isSurfnet) {\n // Surfnet: sign then submit manually to our RPC\n const [signedTx] = await transact(async (wallet) => {\n await this.reauthorizeWallet(wallet);\n return wallet.signTransactions({ transactions: [tx] });\n }, this.getAssociationConfig());\n const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash('confirmed');\n const signature = await connection.sendRawTransaction(signedTx.serialize(), {\n preflightCommitment: 'confirmed'\n });\n const confirmation = await connection.confirmTransaction({\n signature,\n blockhash,\n lastValidBlockHeight,\n }, 'confirmed');\n if (confirmation.value.err) {\n throw new Error(`Transaction failed: ${confirmation.value.err.toString()}`);\n }\n const txInfo = await connection.getParsedTransaction(signature, {\n maxSupportedTransactionVersion: 0,\n commitment: 'confirmed'\n });\n return {\n transactionSignature: signature,\n blockNumber: (txInfo === null || txInfo === void 0 ? void 0 : txInfo.slot) || 0,\n gasUsed: ((_a = txInfo === null || txInfo === void 0 ? void 0 : txInfo.meta) === null || _a === void 0 ? void 0 : _a.fee.toString()) || '0',\n data: txInfo === null || txInfo === void 0 ? void 0 : txInfo.meta,\n };\n }\n // Non-surfnet: use signAndSendTransactions\n const signatures = await transact(async (wallet) => {\n await this.reauthorizeWallet(wallet);\n return wallet.signAndSendTransactions({\n transactions: [tx],\n commitment: 'confirmed',\n });\n }, this.getAssociationConfig());\n const signature = signatures[0];\n const txInfo = await confirmAndCheckTransaction(connection, signature);\n return {\n transactionSignature: signature,\n blockNumber: (txInfo === null || txInfo === void 0 ? void 0 : txInfo.slot) || 0,\n gasUsed: ((_b = txInfo === null || txInfo === void 0 ? void 0 : txInfo.meta) === null || _b === void 0 ? void 0 : _b.fee.toString()) || '0',\n data: txInfo === null || txInfo === void 0 ? void 0 : txInfo.meta,\n };\n }\n catch (error) {\n if (((_c = error === null || error === void 0 ? void 0 : error.message) === null || _c === void 0 ? void 0 : _c.includes('not connected')) || ((_d = error === null || error === void 0 ? void 0 : error.message) === null || _d === void 0 ? void 0 : _d.includes('not authorized')) ||\n (error === null || error === void 0 ? void 0 : error.code) === 'ERROR_AUTHORIZATION_FAILED') {\n await this.logout();\n throw new Error('Wallet connection lost. Please reconnect.');\n }\n const isUserRejection = (error === null || error === void 0 ? void 0 : error.code) === 4001 ||\n ((_e = error === null || error === void 0 ? void 0 : error.message) === null || _e === void 0 ? void 0 : _e.toLowerCase().includes('user rejected')) ||\n ((_f = error === null || error === void 0 ? void 0 : error.message) === null || _f === void 0 ? void 0 : _f.toLowerCase().includes('user denied')) ||\n ((_g = error === null || error === void 0 ? void 0 : error.message) === null || _g === void 0 ? void 0 : _g.toLowerCase().includes('user cancelled')) ||\n ((_h = error === null || error === void 0 ? void 0 : error.message) === null || _h === void 0 ? void 0 : _h.toLowerCase().includes('user canceled'));\n if (!isUserRejection) {\n console.error('[SolanaMobileWallet] Transaction failed:', error);\n }\n throw new Error(`Failed to execute transaction: ${error.message}`);\n }\n }\n async getNativeMethods() {\n return {\n authToken: this.authToken,\n walletUriBase: this.walletUriBase,\n publicKey: this.publicKeyObj,\n base64Address: this.base64Address,\n };\n }\n /* ----------------------------------------------------------- *\n * Private Helpers\n * ----------------------------------------------------------- */\n getRpcUrl(network) {\n if (this.networkUrl) {\n return this.networkUrl;\n }\n if (network === 'solana_devnet') {\n return SOLANA_DEVNET_RPC_URL;\n }\n else if (network === 'solana_mainnet') {\n return SOLANA_MAINNET_RPC_URL;\n }\n else if (network === 'surfnet') {\n return SURFNET_RPC_URL;\n }\n return SOLANA_MAINNET_RPC_URL;\n }\n}\nSolanaMobileWalletProvider.instance = null;\n"],"names":["getPlatform","PublicKey","setAuthLoading","SessionManager","setCurrentUser","genAuthNonce","genSolanaMessage","Buffer","createSessionWithSignature","Connection","SURFNET_RPC_URL","confirmAndCheckTransaction","convertRemainingAccounts","anchor","VersionedTransaction","buildSetDocumentsTransaction","SOLANA_DEVNET_RPC_URL","SOLANA_MAINNET_RPC_URL"],"mappings":"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"}
1
+ {"version":3,"file":"solana-mobile-wallet-provider-BXm94fqW.js","sources":["../.rollup-tmp/auth/providers/solana-mobile-wallet-provider.js"],"sourcesContent":["import { Buffer } from 'buffer';\nimport { WebSessionManager as SessionManager, createSessionWithSignature, genAuthNonce, genSolanaMessage, buildSetDocumentsTransaction, convertRemainingAccounts } from '@pooflabs/core';\nimport { setCurrentUser, setAuthLoading } from '../../global';\nimport { getPlatform, detectAndroid } from '../../platform';\nimport { Connection, PublicKey, VersionedTransaction } from '@solana/web3.js';\nimport * as anchor from '@coral-xyz/anchor';\nimport { SOLANA_DEVNET_RPC_URL, SOLANA_MAINNET_RPC_URL, SURFNET_RPC_URL } from '..';\nimport { confirmAndCheckTransaction } from './transaction-utils';\n/**\n * Detects whether the current environment is a mobile browser capable of\n * Mobile Wallet Adapter (MWA) communication.\n *\n * Returns true on Android browsers (Chrome, etc.) where MWA intents work,\n * or inside a Seeker/Saga in-app browser context.\n */\nexport function isMobileWalletAvailable() {\n if (typeof window === 'undefined' || typeof navigator === 'undefined')\n return false;\n return detectAndroid();\n}\nconst ED25519_SIGNATURE_LENGTH = 64;\n// Dynamically imported MWA protocol module\nlet mwaProtocolModule = null;\nlet mwaProtocolLoadPromise = null;\nasync function loadMwaProtocol() {\n if (mwaProtocolModule)\n return;\n if (typeof window === 'undefined')\n return;\n if (mwaProtocolLoadPromise)\n return mwaProtocolLoadPromise;\n mwaProtocolLoadPromise = (async () => {\n try {\n mwaProtocolModule = await import('@solana-mobile/mobile-wallet-adapter-protocol-web3js');\n }\n catch (e) {\n console.warn('[SolanaMobileWallet] @solana-mobile/mobile-wallet-adapter-protocol-web3js not installed. Install it to enable Seeker wallet support.');\n throw new Error('Missing @solana-mobile/mobile-wallet-adapter-protocol-web3js dependency');\n }\n })();\n return mwaProtocolLoadPromise;\n}\n/**\n * Registers Mobile Wallet Adapter as a wallet-standard wallet so it appears\n * in wallet selection UIs and can be discovered by other wallet-standard consumers.\n *\n * Call this once at app startup (in a browser-only / non-SSR context).\n *\n * @param config - App identity and optional remote host authority for desktop QR code support\n */\nexport async function registerMobileWalletAdapter(config) {\n var _a;\n if (typeof window === 'undefined')\n return;\n try {\n const walletStandardMobile = await import('@solana-mobile/wallet-standard-mobile');\n const registerMwa = walletStandardMobile.registerMwa || ((_a = walletStandardMobile.default) === null || _a === void 0 ? void 0 : _a.registerMwa);\n if (!registerMwa) {\n console.warn('[SolanaMobileWallet] registerMwa not found in @solana-mobile/wallet-standard-mobile');\n return;\n }\n const options = {};\n if (config === null || config === void 0 ? void 0 : config.appIdentity) {\n options.appIdentity = config.appIdentity;\n }\n if (config === null || config === void 0 ? void 0 : config.chains) {\n options.chains = config.chains;\n }\n if (config === null || config === void 0 ? void 0 : config.remoteHostAuthority) {\n options.remoteHostAuthority = config.remoteHostAuthority;\n }\n // Use the library's default helpers if available\n if (walletStandardMobile.createDefaultAuthorizationCache) {\n options.authorizationCache = walletStandardMobile.createDefaultAuthorizationCache();\n }\n if (walletStandardMobile.createDefaultChainSelector) {\n options.chainSelector = walletStandardMobile.createDefaultChainSelector();\n }\n if (walletStandardMobile.createDefaultWalletNotFoundHandler) {\n options.onWalletNotFound = walletStandardMobile.createDefaultWalletNotFoundHandler();\n }\n registerMwa(options);\n }\n catch (e) {\n // @solana-mobile/wallet-standard-mobile is an optional dependency\n // Silently skip if not installed — the provider still works via\n // @solana-mobile/mobile-wallet-adapter-protocol-web3js directly\n console.debug('[SolanaMobileWallet] @solana-mobile/wallet-standard-mobile not available, skipping wallet-standard registration');\n }\n}\n/**\n * SolanaMobileWalletProvider implements the AuthProvider interface using the\n * Solana Mobile Wallet Adapter (MWA) protocol's low-level `transact` API.\n *\n * This enables TaroBase dApps to work with any MWA-compliant wallet on Solana\n * mobile devices (Seeker, Saga) — including the native Seed Vault Wallet,\n * Phantom, Solflare, and any other wallet that implements the MWA protocol.\n *\n * By using `transact()` directly (instead of the wallet-adapter wrapper),\n * login combines authorize + signMessage into a single wallet session —\n * meaning one popup/approval instead of two.\n */\nexport class SolanaMobileWalletProvider {\n constructor(networkUrl = null, config = {}) {\n // MWA authorization state\n this.authToken = null;\n this.walletUriBase = null;\n this.base64Address = null;\n this.authorizedPublicKey = null;\n this.publicKeyObj = null;\n this.networkUrl = networkUrl;\n this.config = config;\n if (typeof window === 'undefined') {\n throw new Error('SolanaMobileWalletProvider can only be instantiated in a browser environment');\n }\n if (SolanaMobileWalletProvider.instance) {\n return SolanaMobileWalletProvider.instance;\n }\n this.appIdentity = config.appIdentity || {\n name: 'TaroBase App',\n uri: getPlatform().getLocationOrigin(),\n };\n this.chain = `solana:${config.cluster || 'mainnet-beta'}`;\n SolanaMobileWalletProvider.instance = this;\n }\n static getInstance(networkUrl, config) {\n if (!SolanaMobileWalletProvider.instance) {\n new SolanaMobileWalletProvider(networkUrl, config);\n }\n return SolanaMobileWalletProvider.instance;\n }\n /** Config for transact() — routes to the same wallet if we've already authorized */\n getAssociationConfig() {\n if (this.walletUriBase) {\n return { baseUri: this.walletUriBase };\n }\n return undefined;\n }\n /** Reauthorize within a transact callback using a stored auth_token */\n async reauthorizeWallet(wallet) {\n if (!this.authToken) {\n // No existing auth — do a fresh authorize\n const authResult = await wallet.authorize({\n identity: this.appIdentity,\n chain: this.chain,\n });\n this.storeAuthResult(authResult);\n return authResult;\n }\n try {\n const authResult = await wallet.reauthorize({\n auth_token: this.authToken,\n identity: this.appIdentity,\n });\n this.storeAuthResult(authResult);\n return authResult;\n }\n catch (e) {\n // Reauth failed (token expired, wallet reset, etc.) — try fresh authorize\n console.warn('[SolanaMobileWallet] Reauthorization failed, attempting fresh authorize:', e === null || e === void 0 ? void 0 : e.message);\n const authResult = await wallet.authorize({\n identity: this.appIdentity,\n chain: this.chain,\n });\n this.storeAuthResult(authResult);\n return authResult;\n }\n }\n /** Persist auth result from an authorize/reauthorize call */\n storeAuthResult(authResult) {\n var _a;\n this.authToken = authResult.auth_token;\n this.walletUriBase = authResult.wallet_uri_base;\n if (((_a = authResult.accounts) === null || _a === void 0 ? void 0 : _a.length) > 0) {\n const account = authResult.accounts[0];\n this.base64Address = account.address;\n // Decode base64 address → PublicKey → base58\n const addressBytes = Uint8Array.from(getPlatform().atob(account.address), c => c.charCodeAt(0));\n this.publicKeyObj = new PublicKey(addressBytes);\n this.authorizedPublicKey = this.publicKeyObj.toBase58();\n }\n }\n async login() {\n var _a, _b, _c, _d, _e;\n setAuthLoading(true);\n try {\n await loadMwaProtocol();\n const { transact } = mwaProtocolModule;\n // Quick check: if we already have auth state and a valid session, skip\n if (this.authorizedPublicKey) {\n const existingSession = await SessionManager.getSession();\n if (existingSession && existingSession.address === this.authorizedPublicKey) {\n const user = { provider: this, address: this.authorizedPublicKey };\n setCurrentUser(user);\n return user;\n }\n }\n // Pre-fetch nonce from server while wallet is not yet connected\n const nonce = await genAuthNonce();\n // Single transact() call: authorize + signMessages — one wallet popup\n const result = await transact(async (wallet) => {\n // Step 1: Authorize — user approves the dApp\n const authResult = await wallet.authorize({\n identity: this.appIdentity,\n chain: this.chain,\n });\n const base64Addr = authResult.accounts[0].address;\n const addressBytes = Uint8Array.from(getPlatform().atob(base64Addr), c => c.charCodeAt(0));\n const pubkey = new PublicKey(addressBytes);\n const base58Addr = pubkey.toBase58();\n // Step 2: Sign the auth message — still in the same wallet session\n const messageText = await genSolanaMessage(base58Addr, nonce);\n const messageBytes = getPlatform().textEncode(messageText);\n const signedMessages = await wallet.signMessages({\n addresses: [base64Addr],\n payloads: [messageBytes],\n });\n // The signed payload is [original message bytes][64-byte ed25519 signature]\n const signedPayload = signedMessages[0];\n const signatureBytes = signedPayload.slice(-ED25519_SIGNATURE_LENGTH);\n return {\n base58Address: base58Addr,\n base64Address: base64Addr,\n publicKey: pubkey,\n signature: Buffer.from(signatureBytes).toString('base64'),\n messageText,\n authToken: authResult.auth_token,\n walletUriBase: authResult.wallet_uri_base,\n };\n }, this.getAssociationConfig());\n // Store MWA auth state for reauthorization in subsequent transact() calls\n this.authToken = result.authToken;\n this.walletUriBase = result.walletUriBase;\n this.base64Address = result.base64Address;\n this.authorizedPublicKey = result.base58Address;\n this.publicKeyObj = result.publicKey;\n // Check if we already have a valid session for this address\n const existingSession = await SessionManager.getSession();\n if (existingSession && existingSession.address === result.base58Address) {\n const user = { provider: this, address: result.base58Address };\n setCurrentUser(user);\n return user;\n }\n // Create new session on the server\n const createSessionResult = await createSessionWithSignature(result.base58Address, result.messageText, result.signature);\n await SessionManager.storeSession(result.base58Address, createSessionResult.accessToken, createSessionResult.idToken, createSessionResult.refreshToken);\n // Mark auth method\n try {\n getPlatform().storage.setItem('tarobase_last_auth_method', 'mobile-wallet-adapter');\n }\n catch (_f) { }\n const user = { provider: this, address: result.base58Address };\n setCurrentUser(user);\n return user;\n }\n catch (error) {\n const isUserRejection = (error === null || error === void 0 ? void 0 : error.code) === 4001 ||\n ((_a = error === null || error === void 0 ? void 0 : error.message) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes('user rejected')) ||\n ((_b = error === null || error === void 0 ? void 0 : error.message) === null || _b === void 0 ? void 0 : _b.toLowerCase().includes('user denied')) ||\n ((_c = error === null || error === void 0 ? void 0 : error.message) === null || _c === void 0 ? void 0 : _c.toLowerCase().includes('user cancelled')) ||\n ((_d = error === null || error === void 0 ? void 0 : error.message) === null || _d === void 0 ? void 0 : _d.toLowerCase().includes('user canceled')) ||\n ((_e = error === null || error === void 0 ? void 0 : error.message) === null || _e === void 0 ? void 0 : _e.toLowerCase().includes('user declined'));\n if (!isUserRejection) {\n console.error('[SolanaMobileWallet] Login failed:', error);\n }\n throw error;\n }\n finally {\n setAuthLoading(false);\n }\n }\n async restoreSession() {\n const session = await SessionManager.getSession();\n if (session) {\n this.authorizedPublicKey = session.address;\n this.publicKeyObj = new PublicKey(session.address);\n return { provider: this, address: session.address };\n }\n return null;\n }\n async logout() {\n // Deauthorize with the wallet if we have an auth_token\n if (this.authToken) {\n try {\n await loadMwaProtocol();\n const { transact } = mwaProtocolModule;\n const authToken = this.authToken;\n await transact(async (wallet) => {\n await wallet.deauthorize({ auth_token: authToken });\n }, this.getAssociationConfig());\n }\n catch (error) {\n console.error('[SolanaMobileWallet] Deauthorize error:', error);\n }\n }\n this.authToken = null;\n this.walletUriBase = null;\n this.base64Address = null;\n this.authorizedPublicKey = null;\n this.publicKeyObj = null;\n SessionManager.clearSession();\n setCurrentUser(null);\n }\n async signMessage(message) {\n var _a, _b;\n if (!this.authorizedPublicKey || !this.base64Address) {\n throw new Error('Not connected. Call login() first.');\n }\n await loadMwaProtocol();\n const { transact } = mwaProtocolModule;\n const base64Addr = this.base64Address;\n try {\n const signedMessages = await transact(async (wallet) => {\n await this.reauthorizeWallet(wallet);\n const messageBytes = getPlatform().textEncode(message);\n return wallet.signMessages({\n addresses: [base64Addr],\n payloads: [messageBytes],\n });\n }, this.getAssociationConfig());\n const signedPayload = signedMessages[0];\n const signatureBytes = signedPayload.slice(-ED25519_SIGNATURE_LENGTH);\n return Buffer.from(signatureBytes).toString('base64');\n }\n catch (error) {\n if (((_a = error === null || error === void 0 ? void 0 : error.message) === null || _a === void 0 ? void 0 : _a.includes('not connected')) || ((_b = error === null || error === void 0 ? void 0 : error.message) === null || _b === void 0 ? void 0 : _b.includes('not authorized')) ||\n (error === null || error === void 0 ? void 0 : error.code) === 'ERROR_AUTHORIZATION_FAILED') {\n await this.logout();\n throw new Error('Wallet connection lost. Please reconnect.');\n }\n throw new Error(`Failed to sign message: ${error.message}`);\n }\n }\n async signTransaction(transaction) {\n var _a, _b;\n if (!this.publicKeyObj) {\n throw new Error('Not connected. Call login() first.');\n }\n await loadMwaProtocol();\n const { transact } = mwaProtocolModule;\n // Ensure blockhash and fee payer are set before signing\n const isLegacyTransaction = 'recentBlockhash' in transaction && !('message' in transaction && 'staticAccountKeys' in transaction.message);\n if (isLegacyTransaction) {\n const legacyTx = transaction;\n if (!legacyTx.recentBlockhash) {\n const rpcUrl = this.getRpcUrl();\n const connection = new Connection(rpcUrl, 'confirmed');\n const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash('confirmed');\n legacyTx.recentBlockhash = blockhash;\n legacyTx.lastValidBlockHeight = lastValidBlockHeight;\n }\n if (!legacyTx.feePayer && this.publicKeyObj) {\n legacyTx.feePayer = this.publicKeyObj;\n }\n }\n else {\n const versionedTx = transaction;\n if (!versionedTx.message.recentBlockhash) {\n const rpcUrl = this.getRpcUrl();\n const connection = new Connection(rpcUrl, 'confirmed');\n const { blockhash } = await connection.getLatestBlockhash('confirmed');\n versionedTx.message.recentBlockhash = blockhash;\n }\n }\n try {\n const signedTransactions = await transact(async (wallet) => {\n await this.reauthorizeWallet(wallet);\n return wallet.signTransactions({ transactions: [transaction] });\n }, this.getAssociationConfig());\n return signedTransactions[0];\n }\n catch (error) {\n if (((_a = error === null || error === void 0 ? void 0 : error.message) === null || _a === void 0 ? void 0 : _a.includes('not connected')) || ((_b = error === null || error === void 0 ? void 0 : error.message) === null || _b === void 0 ? void 0 : _b.includes('not authorized')) ||\n (error === null || error === void 0 ? void 0 : error.code) === 'ERROR_AUTHORIZATION_FAILED') {\n await this.logout();\n throw new Error('Wallet connection lost. Please reconnect.');\n }\n throw new Error(`Failed to sign transaction: ${error.message}`);\n }\n }\n async signAndSubmitTransaction(transaction, feePayer) {\n var _a, _b, _c, _d, _e, _f;\n if (!this.publicKeyObj) {\n throw new Error('Not connected. Call login() first.');\n }\n await loadMwaProtocol();\n const { transact } = mwaProtocolModule;\n const rpcUrl = this.getRpcUrl();\n const connection = new Connection(rpcUrl, 'confirmed');\n const isSurfnet = rpcUrl === SURFNET_RPC_URL;\n try {\n const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash('confirmed');\n const isLegacyTransaction = 'recentBlockhash' in transaction && !('message' in transaction && 'staticAccountKeys' in transaction.message);\n if (isLegacyTransaction) {\n const legacyTx = transaction;\n legacyTx.recentBlockhash = blockhash;\n legacyTx.lastValidBlockHeight = lastValidBlockHeight;\n if (!legacyTx.feePayer) {\n if (feePayer) {\n legacyTx.feePayer = feePayer;\n }\n else if (this.publicKeyObj) {\n legacyTx.feePayer = this.publicKeyObj;\n }\n }\n }\n else {\n const versionedTx = transaction;\n versionedTx.message.recentBlockhash = blockhash;\n }\n if (isSurfnet) {\n // Surfnet: sign-only, then submit to our specific RPC\n const signedTransactions = await transact(async (wallet) => {\n await this.reauthorizeWallet(wallet);\n return wallet.signTransactions({ transactions: [transaction] });\n }, this.getAssociationConfig());\n const signedTx = signedTransactions[0];\n const signature = await connection.sendRawTransaction(signedTx.serialize(), {\n preflightCommitment: 'confirmed'\n });\n const confirmation = await connection.confirmTransaction({\n signature,\n blockhash,\n lastValidBlockHeight,\n }, 'confirmed');\n if (confirmation.value.err) {\n throw new Error(`Transaction failed: ${confirmation.value.err.toString()}`);\n }\n return signature;\n }\n // Non-surfnet: use signAndSendTransactions for wallet-optimized submission\n const signatures = await transact(async (wallet) => {\n await this.reauthorizeWallet(wallet);\n return wallet.signAndSendTransactions({\n transactions: [transaction],\n commitment: 'confirmed',\n });\n }, this.getAssociationConfig());\n const signature = signatures[0];\n await confirmAndCheckTransaction(connection, signature);\n return signature;\n }\n catch (error) {\n if (((_a = error === null || error === void 0 ? void 0 : error.message) === null || _a === void 0 ? void 0 : _a.includes('not connected')) || ((_b = error === null || error === void 0 ? void 0 : error.message) === null || _b === void 0 ? void 0 : _b.includes('not authorized')) ||\n (error === null || error === void 0 ? void 0 : error.code) === 'ERROR_AUTHORIZATION_FAILED') {\n await this.logout();\n throw new Error('Wallet connection lost. Please reconnect.');\n }\n const isUserRejection = (error === null || error === void 0 ? void 0 : error.code) === 4001 ||\n ((_c = error === null || error === void 0 ? void 0 : error.message) === null || _c === void 0 ? void 0 : _c.toLowerCase().includes('user rejected')) ||\n ((_d = error === null || error === void 0 ? void 0 : error.message) === null || _d === void 0 ? void 0 : _d.toLowerCase().includes('user denied')) ||\n ((_e = error === null || error === void 0 ? void 0 : error.message) === null || _e === void 0 ? void 0 : _e.toLowerCase().includes('user cancelled')) ||\n ((_f = error === null || error === void 0 ? void 0 : error.message) === null || _f === void 0 ? void 0 : _f.toLowerCase().includes('user canceled'));\n if (!isUserRejection) {\n console.error('[SolanaMobileWallet] Transaction failed:', error);\n }\n throw new Error(`Failed to execute transaction: ${error.message}`);\n }\n }\n async runTransaction(_evmTransactionData, solTransactionData, options) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n if (!solTransactionData) {\n throw new Error('Solana transaction data is required for mobile wallet');\n }\n if (!this.publicKeyObj || !this.authorizedPublicKey) {\n await this.login();\n }\n await loadMwaProtocol();\n const { transact } = mwaProtocolModule;\n const rpcUrl = this.getRpcUrl(solTransactionData.network);\n const connection = new Connection(rpcUrl, 'confirmed');\n const isSurfnet = rpcUrl === SURFNET_RPC_URL;\n try {\n const publicKey = this.publicKeyObj;\n const remainingAccounts = convertRemainingAccounts(solTransactionData.txArgs[0].remainingAccounts);\n let app_id = solTransactionData.appId;\n if (typeof window !== 'undefined' && window.CUSTOM_TAROBASE_APP_ID_HEADER) {\n app_id = window.CUSTOM_TAROBASE_APP_ID_HEADER;\n }\n if (!app_id) {\n throw new Error('App ID is required');\n }\n // Create a mock wallet adapter for Anchor (only publicKey is needed for building TX)\n const mockWalletAdapter = {\n publicKey,\n signTransaction: async (tx) => tx,\n signAllTransactions: async (txs) => txs,\n };\n const anchorProvider = new anchor.AnchorProvider(connection, mockWalletAdapter, anchor.AnchorProvider.defaultOptions());\n const finalDeduped = [];\n for (const acc of remainingAccounts) {\n const existing = finalDeduped.find((d) => d.pubkey.equals(acc.pubkey));\n if (existing) {\n existing.isSigner = existing.isSigner || acc.isSigner;\n existing.isWritable = existing.isWritable || acc.isWritable;\n }\n else {\n finalDeduped.push(acc);\n }\n }\n let tx;\n if (solTransactionData.signedTransaction) {\n tx = VersionedTransaction.deserialize(Buffer.from(solTransactionData.signedTransaction, 'base64'));\n }\n else {\n const result = await buildSetDocumentsTransaction(connection, solTransactionData.txArgs[0].idl, anchorProvider, publicKey, {\n app_id,\n documents: solTransactionData.txArgs[0].setDocumentData,\n delete_paths: solTransactionData.txArgs[0].deletePaths,\n txData: solTransactionData.txArgs[0].txData\n }, finalDeduped, solTransactionData.lutKey, solTransactionData.preInstructions, false, solTransactionData.additionalLutAddresses);\n tx = result.tx;\n }\n if ((options === null || options === void 0 ? void 0 : options.shouldSubmitTx) === false) {\n const [signedTx] = await transact(async (wallet) => {\n await this.reauthorizeWallet(wallet);\n return wallet.signTransactions({ transactions: [tx] });\n }, this.getAssociationConfig());\n return {\n signedTransaction: signedTx,\n blockNumber: 0,\n gasUsed: '0',\n data: ''\n };\n }\n if (isSurfnet) {\n // Surfnet: sign then submit manually to our RPC\n const [signedTx] = await transact(async (wallet) => {\n await this.reauthorizeWallet(wallet);\n return wallet.signTransactions({ transactions: [tx] });\n }, this.getAssociationConfig());\n const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash('confirmed');\n const signature = await connection.sendRawTransaction(signedTx.serialize(), {\n preflightCommitment: 'confirmed'\n });\n const confirmation = await connection.confirmTransaction({\n signature,\n blockhash,\n lastValidBlockHeight,\n }, 'confirmed');\n if (confirmation.value.err) {\n throw new Error(`Transaction failed: ${confirmation.value.err.toString()}`);\n }\n const txInfo = await connection.getParsedTransaction(signature, {\n maxSupportedTransactionVersion: 0,\n commitment: 'confirmed'\n });\n return {\n transactionSignature: signature,\n blockNumber: (txInfo === null || txInfo === void 0 ? void 0 : txInfo.slot) || 0,\n gasUsed: ((_a = txInfo === null || txInfo === void 0 ? void 0 : txInfo.meta) === null || _a === void 0 ? void 0 : _a.fee.toString()) || '0',\n data: txInfo === null || txInfo === void 0 ? void 0 : txInfo.meta,\n };\n }\n // Non-surfnet: use signAndSendTransactions\n const signatures = await transact(async (wallet) => {\n await this.reauthorizeWallet(wallet);\n return wallet.signAndSendTransactions({\n transactions: [tx],\n commitment: 'confirmed',\n });\n }, this.getAssociationConfig());\n const signature = signatures[0];\n const txInfo = await confirmAndCheckTransaction(connection, signature);\n return {\n transactionSignature: signature,\n blockNumber: (txInfo === null || txInfo === void 0 ? void 0 : txInfo.slot) || 0,\n gasUsed: ((_b = txInfo === null || txInfo === void 0 ? void 0 : txInfo.meta) === null || _b === void 0 ? void 0 : _b.fee.toString()) || '0',\n data: txInfo === null || txInfo === void 0 ? void 0 : txInfo.meta,\n };\n }\n catch (error) {\n if (((_c = error === null || error === void 0 ? void 0 : error.message) === null || _c === void 0 ? void 0 : _c.includes('not connected')) || ((_d = error === null || error === void 0 ? void 0 : error.message) === null || _d === void 0 ? void 0 : _d.includes('not authorized')) ||\n (error === null || error === void 0 ? void 0 : error.code) === 'ERROR_AUTHORIZATION_FAILED') {\n await this.logout();\n throw new Error('Wallet connection lost. Please reconnect.');\n }\n const isUserRejection = (error === null || error === void 0 ? void 0 : error.code) === 4001 ||\n ((_e = error === null || error === void 0 ? void 0 : error.message) === null || _e === void 0 ? void 0 : _e.toLowerCase().includes('user rejected')) ||\n ((_f = error === null || error === void 0 ? void 0 : error.message) === null || _f === void 0 ? void 0 : _f.toLowerCase().includes('user denied')) ||\n ((_g = error === null || error === void 0 ? void 0 : error.message) === null || _g === void 0 ? void 0 : _g.toLowerCase().includes('user cancelled')) ||\n ((_h = error === null || error === void 0 ? void 0 : error.message) === null || _h === void 0 ? void 0 : _h.toLowerCase().includes('user canceled'));\n if (!isUserRejection) {\n console.error('[SolanaMobileWallet] Transaction failed:', error);\n }\n throw new Error(`Failed to execute transaction: ${error.message}`);\n }\n }\n async getNativeMethods() {\n return {\n authToken: this.authToken,\n walletUriBase: this.walletUriBase,\n publicKey: this.publicKeyObj,\n base64Address: this.base64Address,\n };\n }\n /* ----------------------------------------------------------- *\n * Private Helpers\n * ----------------------------------------------------------- */\n getRpcUrl(network) {\n if (this.networkUrl) {\n return this.networkUrl;\n }\n if (network === 'solana_devnet') {\n return SOLANA_DEVNET_RPC_URL;\n }\n else if (network === 'solana_mainnet') {\n return SOLANA_MAINNET_RPC_URL;\n }\n else if (network === 'surfnet') {\n return SURFNET_RPC_URL;\n }\n return SOLANA_MAINNET_RPC_URL;\n }\n}\nSolanaMobileWalletProvider.instance = null;\n"],"names":["getPlatform","PublicKey","setAuthLoading","SessionManager","setCurrentUser","genAuthNonce","genSolanaMessage","Buffer","createSessionWithSignature","Connection","SURFNET_RPC_URL","confirmAndCheckTransaction","convertRemainingAccounts","anchor","VersionedTransaction","buildSetDocumentsTransaction","SOLANA_DEVNET_RPC_URL","SOLANA_MAINNET_RPC_URL"],"mappings":"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"}