@bounded-sh/client 0.0.26 → 0.0.27
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.
- package/REACT_NATIVE.md +144 -0
- package/README.md +24 -18
- package/dist/auth/index.d.ts +18 -21
- package/dist/auth/providers/email-auth-provider.d.ts +8 -19
- package/dist/auth/providers/privy-expo-provider.d.ts +1 -1
- package/dist/global.d.ts +2 -2
- package/dist/index.d.ts +0 -3
- package/dist/index.js +84 -4617
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +94 -4621
- package/dist/index.mjs.map +1 -1
- package/dist/index.native.d.ts +2 -2
- package/dist/index.native.js +5184 -78
- package/dist/index.native.js.map +1 -1
- package/dist/index.native.mjs +5095 -4
- package/dist/index.native.mjs.map +1 -1
- package/dist/platform.d.ts +1 -1
- package/package.json +7 -3
- package/dist/index.native-BfAzgVuY.js +0 -5802
- package/dist/index.native-BfAzgVuY.js.map +0 -1
- package/dist/index.native-DEWlFCQV.mjs +0 -5742
- package/dist/index.native-DEWlFCQV.mjs.map +0 -1
- package/dist/phantom-wallet-provider-3xKduOOY.js +0 -1452
- package/dist/phantom-wallet-provider-3xKduOOY.js.map +0 -1
- package/dist/phantom-wallet-provider-B3ztJGu2.mjs +0 -1431
- package/dist/phantom-wallet-provider-B3ztJGu2.mjs.map +0 -1
- package/dist/privy-wallet-provider-3LnqlNI-.js +0 -949
- package/dist/privy-wallet-provider-3LnqlNI-.js.map +0 -1
- package/dist/privy-wallet-provider-D2i_xwYW.mjs +0 -926
- package/dist/privy-wallet-provider-D2i_xwYW.mjs.map +0 -1
- package/dist/solana-mobile-wallet-provider-D2nTRj-4.js +0 -1492
- package/dist/solana-mobile-wallet-provider-D2nTRj-4.js.map +0 -1
- package/dist/solana-mobile-wallet-provider-dOWiujmo.mjs +0 -1471
- package/dist/solana-mobile-wallet-provider-dOWiujmo.mjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"privy-wallet-provider-D2i_xwYW.mjs","sources":["../.rollup-tmp/auth/providers/privy-wallet-provider.js"],"sourcesContent":["import { getActiveSessionManager as SessionManager, createSessionWithSignature, genAuthNonce, genSolanaMessage, buildSetDocumentsTransaction, convertRemainingAccounts } from '@bounded-sh/core';\nimport { Buffer } from 'buffer';\nimport { setCurrentUser } from '../../global';\nimport { getPlatform } from '../../platform';\nimport { PublicKey, Connection, Transaction, VersionedTransaction } from '@solana/web3.js';\nimport * as anchor from '@coral-xyz/anchor';\nimport { normalizeSolanaRpcUrl, resolveSolanaRpcUrl, resolveSolanaWalletStandardChain, SURFNET_RPC_URL, } from '../solana-rpc';\nimport { confirmAndCheckTransaction } from './transaction-utils';\nimport bs58 from 'bs58';\n// React/react-dom are externalized peer deps (see rollup.config.js\n// sharedExternal / isExternal) — rollup emits these as bare ESM imports the\n// consumer's bundler resolves; they are NOT inlined. Static top-level ESM\n// imports (instead of a runtime require() behind a `typeof window` guard) so\n// the browser ESM bundle never evaluates `require`, which is undefined in a\n// production ESM/Vite build (it would throw ReferenceError at module eval).\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom/client';\n// @privy-io/react-auth(/solana) are OPTIONAL peer deps. They are loaded lazily\n// via dynamic import() rather than a static top-level import: a static import\n// would (a) in the ESM bundle still be a bare `import` the consumer resolves —\n// fine — but (b) in the CJS bundle become an eager top-level require() that\n// throws for any consumer who hasn't installed Privy (this module is pulled\n// into the entry via a static re-export). The lazy import keeps the browser\n// ESM bundle free of any runtime `require('@privy-io...')` AND lets a consumer\n// who never uses Privy load the package without it installed. Populated once\n// in `initialize()` (browser-only) before the Privy React tree renders.\nlet privyImports;\nlet privySolana;\nasync function loadPrivyModules() {\n if (privyImports && privySolana)\n return;\n [privyImports, privySolana] = await Promise.all([\n import('@privy-io/react-auth'),\n import('@privy-io/react-auth/solana'),\n ]);\n}\n// @solana/kit is an OPTIONAL wallet-only dep, used only to build the Privy\n// Solana RPC transports. Loaded lazily (like the Privy SDKs) via dynamic\n// import() rather than a static top-level import: a static import is hoisted by\n// rollup into the entry chunk, forcing every consumer (including vanilla,\n// non-wallet web apps) to have @solana/kit installed and eagerly require()d.\n// Deferring it here keeps it out of the entry bundle.\nlet solanaKit;\nasync function loadSolanaKit() {\n if (!solanaKit) {\n solanaKit = await import('@solana/kit');\n }\n return solanaKit;\n}\nfunction requirePrivyWalletConfig(privyConfig) {\n if (!privyConfig || typeof privyConfig.appId !== 'string' || privyConfig.appId.trim() === '') {\n throw new Error('Privy auth requires config.privyConfig.appId; no default Privy app is used.');\n }\n if (!privyConfig.config || typeof privyConfig.config !== 'object') {\n throw new Error('Privy auth requires config.privyConfig.config for the app-scoped Privy provider.');\n }\n return {\n appId: privyConfig.appId,\n config: privyConfig.config,\n };\n}\nexport class PrivyWalletProvider {\n constructor(appName, appLogoUrl, privyConfig, networkUrl = null, configuredNetwork = null) {\n this.containerElement = null;\n this.chainId = null;\n this.root = null;\n this.privyMethods = null;\n this.pendingLogin = null;\n // Resolved Solana RPC URLs (computed in the constructor; consumed in\n // initialize() where @solana/kit is lazily loaded to build the transports).\n this.configuredRpcUrl = null;\n // This is used to store the pending transaction until the wallet is connected for workaround for the wallet not being connected after login completion\n this.pendingTransaction = null;\n // This is used to store pending signTransaction calls until the wallet is connected\n this.pendingSignTransaction = null;\n // This is used to store pending signMessage calls until the wallet is connected\n this.pendingSignMessage = null;\n // This is used to store pending signAndSubmitTransaction calls until the wallet is connected\n this.pendingSignAndSubmitTransaction = null;\n this.networkUrl = normalizeSolanaRpcUrl(networkUrl);\n this.configuredNetwork = configuredNetwork;\n if (typeof window === 'undefined') {\n throw new Error('PrivyWalletProvider can only be instantiated in a browser environment');\n }\n const requiredPrivyConfig = requirePrivyWalletConfig(privyConfig);\n if (PrivyWalletProvider.instance) {\n return PrivyWalletProvider.instance;\n }\n this.containerElement = null;\n this.root = null;\n this.privyMethods = null;\n this.privyConfig = requiredPrivyConfig;\n if (!this.privyConfig.config.appearance) {\n this.privyConfig.config.appearance = {};\n }\n if (appName != null && appName != '' && !this.privyConfig.config.appearance.landingHeader) {\n this.privyConfig.config.appearance.landingHeader = appName;\n }\n if (appLogoUrl != null && appLogoUrl != '' && !this.privyConfig.config.appearance.logo) {\n this.privyConfig.config.appearance.logo = appLogoUrl;\n }\n // (externalWallets connectors are configured in initialize() once the\n // Privy SDK is lazily loaded — see loadPrivyModules.)\n // Resolve Solana RPC URLs for v3. The @solana/kit transports are built\n // lazily in initialize() so a non-Privy consumer never needs @solana/kit.\n if (this.networkUrl || configuredNetwork) {\n this.configuredRpcUrl = resolveSolanaRpcUrl(this.networkUrl, configuredNetwork, \"Privy Solana RPC\");\n }\n if (configuredNetwork) {\n this.chainId = resolveSolanaWalletStandardChain(configuredNetwork, \"Privy Solana transaction\");\n }\n const existingProviders = document.querySelectorAll('[data-privy-provider]');\n existingProviders.forEach(el => el.remove());\n // Fire-and-forget: initialize() lazily loads the Privy SDK then renders\n // the hidden React tree. privyMethods stays null until that render runs,\n // which the login/connect methods already wait for. Surface a clear error\n // if the optional @privy-io/react-auth peer dep isn't installed.\n this.initialize().catch((err) => {\n console.error('PrivyWalletProvider: failed to load @privy-io/react-auth — ensure it is installed to use Privy login.', err);\n });\n // Assign this instance to the static instance property\n PrivyWalletProvider.instance = this;\n }\n // Optional: Provide a static method to get the instance\n static getInstance(appName, appLogoUrl, privyConfig, networkUrl = null, configuredNetwork = null) {\n if (!PrivyWalletProvider.instance) {\n new PrivyWalletProvider(appName, appLogoUrl, privyConfig, networkUrl, configuredNetwork);\n }\n return PrivyWalletProvider.instance;\n }\n async initialize() {\n // Lazily load the Privy SDK (browser-only) before building the React tree.\n await loadPrivyModules();\n // Build the Solana RPC transports now that we're on the async path, so\n // @solana/kit can be lazily imported (kept out of the entry bundle).\n const { createSolanaRpc, createSolanaRpcSubscriptions } = await loadSolanaKit();\n if (this.configuredRpcUrl && this.chainId && !this.privyConfig.config.solana) {\n this.privyConfig.config.solana = {};\n }\n if (this.configuredRpcUrl && this.chainId) {\n this.privyConfig.config.solana.rpcs = {\n [this.chainId]: {\n rpc: createSolanaRpc(this.configuredRpcUrl),\n rpcSubscriptions: createSolanaRpcSubscriptions(this.configuredRpcUrl.replace('https://', 'wss://'))\n }\n };\n }\n // Ensure externalWallets connectors are always configured — required for\n // useWallets().ready to resolve even when no browser extension is present.\n if (!this.privyConfig.config.externalWallets && privySolana) {\n this.privyConfig.config.externalWallets = {\n solana: { connectors: privySolana.toSolanaWalletConnectors() }\n };\n }\n if (!this.containerElement) {\n this.containerElement = document.createElement('div');\n this.containerElement.setAttribute('data-privy-provider', 'true');\n document.body.appendChild(this.containerElement);\n const that = this;\n const PrivyComponent = () => {\n const privy = privyImports.usePrivy();\n const useOAuthTokens = privyImports.useOAuthTokens();\n const useFundWalletSolana = privySolana.useFundWallet();\n const useSendTransactionSolana = privySolana.useSignAndSendTransaction();\n const { signTransaction } = privySolana.useSignTransaction();\n const { signMessage: signMessageHook } = privySolana.useSignMessage();\n const { ready: walletReady, wallets } = privySolana.useWallets();\n const { createWallet } = privySolana.useCreateWallet();\n const { exportWallet } = privySolana.useExportWallet();\n const useSolanaWallets = { createWallet, exportWallet, ready: walletReady, wallets };\n const useIdentityToken = privyImports.useIdentityToken();\n const { connectWallet } = privyImports.useConnectWallet({\n onSuccess: async ({ wallet }) => {\n await that.createSession(wallet.address, await privy.getAccessToken(), useIdentityToken.identityToken);\n // If there's a pending transaction, execute it now\n if (that.pendingTransaction) {\n const { evmTransactionData, solTransactionData, options, resolve, reject } = that.pendingTransaction;\n try {\n const result = await that.runTransaction(evmTransactionData, solTransactionData, options);\n resolve(result);\n }\n catch (error) {\n reject(error);\n }\n that.pendingTransaction = null;\n }\n // If there's a pending signTransaction, execute it now\n if (that.pendingSignTransaction) {\n const { transaction, resolve, reject } = that.pendingSignTransaction;\n try {\n const result = await that.signTransaction(transaction);\n resolve(result);\n }\n catch (error) {\n reject(error);\n }\n that.pendingSignTransaction = null;\n }\n // If there's a pending signMessage, execute it now\n if (that.pendingSignMessage) {\n const { message, resolve, reject } = that.pendingSignMessage;\n try {\n const result = await that.signMessage(message);\n resolve(result);\n }\n catch (error) {\n reject(error);\n }\n that.pendingSignMessage = null;\n }\n // If there's a pending signAndSubmitTransaction, execute it now\n if (that.pendingSignAndSubmitTransaction) {\n const { transaction, feePayer, resolve, reject } = that.pendingSignAndSubmitTransaction;\n try {\n const result = await that.signAndSubmitTransaction(transaction, feePayer);\n resolve(result);\n }\n catch (error) {\n reject(error);\n }\n that.pendingSignAndSubmitTransaction = null;\n }\n },\n onError: (error) => {\n // Only log errors that aren't user-initiated cancellations\n if (error !== 'exited_auth_flow' && (error === null || error === void 0 ? void 0 : error.message) !== 'exited_auth_flow') {\n console.error('Wallet connection error:', error);\n }\n if (that.pendingTransaction) {\n that.pendingTransaction.reject(error);\n that.pendingTransaction = null;\n }\n if (that.pendingSignTransaction) {\n that.pendingSignTransaction.reject(error);\n that.pendingSignTransaction = null;\n }\n if (that.pendingSignMessage) {\n that.pendingSignMessage.reject(error);\n that.pendingSignMessage = null;\n }\n if (that.pendingSignAndSubmitTransaction) {\n that.pendingSignAndSubmitTransaction.reject(error);\n that.pendingSignAndSubmitTransaction = null;\n }\n }\n });\n const { login } = privyImports.useLogin({\n onComplete: async ({ user }) => {\n var _a;\n // This is a hack to indicate to the app that privy login is not complete\n // @ts-ignore\n window.runningPrivyOnComplete = true;\n if (!user) {\n SessionManager().clearSession();\n return;\n }\n const solanaLinkedAccounts = user.linkedAccounts.filter((account) => account.chainType === 'solana');\n const sortedLinkedAccounts = solanaLinkedAccounts.sort((a, b) => new Date(b.latestVerifiedAt).getTime() - new Date(a.latestVerifiedAt).getTime());\n let finalAddress = (_a = sortedLinkedAccounts[0]) === null || _a === void 0 ? void 0 : _a.address;\n if (!finalAddress) {\n const solanaWallet = await createWallet();\n finalAddress = solanaWallet.address;\n SessionManager().clearSession();\n return;\n }\n const session = await SessionManager().getSession();\n if (!session || finalAddress !== session.address) {\n try {\n const accessToken = await privy.getAccessToken();\n const idToken = useIdentityToken.identityToken;\n await that.createSession(finalAddress, accessToken, idToken);\n }\n catch (error) {\n console.error('Error creating session:', error);\n }\n }\n // @ts-ignore\n window.runningPrivyOnComplete = false;\n setCurrentUser({ address: finalAddress, provider: that });\n if (that.pendingLogin) {\n that.pendingLogin.resolve({ address: finalAddress, provider: that });\n that.pendingLogin = null;\n }\n },\n onError: (error) => {\n // Only log errors that aren't user-initiated cancellations\n if (error !== 'exited_auth_flow' && (error === null || error === void 0 ? void 0 : error.message) !== 'exited_auth_flow') {\n console.error('Login error:', error);\n }\n if (that.pendingLogin) {\n that.pendingLogin.reject(error);\n that.pendingLogin = null;\n }\n }\n });\n const { logout } = privyImports.useLogout({\n onSuccess: () => {\n SessionManager().clearSession();\n setCurrentUser(null);\n }\n });\n React.useEffect(() => {\n if (privy.ready) {\n that.privyMethods = {\n ready: privy.ready,\n walletReady: walletReady,\n authenticated: privy.authenticated,\n wallets,\n login,\n logout,\n connectWallet,\n getAccessToken: privy.getAccessToken,\n identityToken: useIdentityToken.identityToken,\n usePrivy: privy,\n useOAuthTokens: useOAuthTokens,\n useFundWalletSolana: useFundWalletSolana,\n useSendTransactionSolana: useSendTransactionSolana,\n useSolanaWallets: useSolanaWallets,\n signTransaction: signTransaction,\n signMessage: signMessageHook,\n };\n }\n }, [privy.ready, privy.authenticated, wallets, login, logout, walletReady]);\n return null;\n };\n const FinalPrivyComponent = () => {\n if (typeof window === 'undefined') {\n return null;\n }\n return React.createElement(privyImports.PrivyProvider, {\n appId: this.privyConfig.appId,\n config: this.privyConfig.config,\n children: React.createElement(PrivyComponent)\n });\n };\n this.root = ReactDOM.createRoot(this.containerElement);\n this.root.render(React.createElement(FinalPrivyComponent));\n }\n }\n async login() {\n var _a, _b;\n await this.ensureReady();\n // Check if we have a valid session that matches an authenticated wallet\n const session = await SessionManager().getSession();\n if (((_a = this.privyMethods) === null || _a === void 0 ? void 0 : _a.authenticated) && ((_b = this.privyMethods.wallets) === null || _b === void 0 ? void 0 : _b.length) > 0 && session) {\n // Find the wallet matching the session\n const matchingWallet = this.privyMethods.wallets.find((wallet) => wallet.address === session.address);\n if (matchingWallet) {\n // Valid session with matching wallet, return immediately\n setCurrentUser({ address: matchingWallet.address, provider: this });\n return {\n address: matchingWallet.address,\n provider: this\n };\n }\n // Session exists but doesn't match any connected wallet\n // This can happen after wallet switching - force fresh login\n console.log('Session wallet mismatch detected, forcing fresh login flow');\n }\n // If no valid session or wallet mismatch, force a fresh login flow\n // This ensures the user can select the correct wallet, especially after logout\n if (this.pendingLogin) {\n return new Promise((resolve, reject) => {\n this.pendingLogin.resolve = resolve;\n this.pendingLogin.reject = reject;\n });\n }\n return new Promise((resolve, reject) => {\n this.pendingLogin = { resolve, reject };\n // open Privy modal to let user select/verify wallet\n this.privyMethods.login();\n // safety timeout\n setTimeout(() => {\n if (this.pendingLogin) {\n this.pendingLogin.reject(new Error(\"Login timed out\"));\n this.pendingLogin = null;\n }\n }, 180000);\n });\n }\n async getNativeMethods() {\n var _a;\n await this.ensureReady();\n return (_a = this.privyMethods) === null || _a === void 0 ? void 0 : _a.usePrivy;\n }\n async logout() {\n await this.ensureReady();\n await this.privyMethods.logout();\n }\n async runTransaction(_evmTransactionData, solTransactionData, options) {\n var _a, _b, _c;\n await this.ensureReady({ waitForWallets: true });\n let session = await SessionManager().getSession();\n let sessionAddress = session === null || session === void 0 ? void 0 : session.address;\n let privyWallets = (_a = this.privyMethods) === null || _a === void 0 ? void 0 : _a.wallets;\n let privyWallet = privyWallets === null || privyWallets === void 0 ? void 0 : privyWallets.find((wallet) => wallet.address === sessionAddress);\n // If wallet not found yet, it may be an embedded wallet (email login) that hasn't\n // appeared in the wallets array due to React state timing. Wait for it before\n // falling back to connectWallet() which shows an unwanted wallet selection modal.\n if (!privyWallets || privyWallets.length === 0 || !privyWallet) {\n if (((_b = this.privyMethods) === null || _b === void 0 ? void 0 : _b.authenticated) && sessionAddress) {\n privyWallet = await this.waitForMatchingWallet(sessionAddress);\n }\n }\n if (!privyWallet) {\n // If there's already a pending transaction, throw an error to prevent overlapping calls\n if (this.pendingTransaction) {\n throw new Error(\"Oops... something went wrong. Please try again.\");\n }\n // Create a promise to wait for the transaction result\n return new Promise((resolve, reject) => {\n this.pendingTransaction = {\n resolve,\n reject,\n evmTransactionData: _evmTransactionData,\n solTransactionData,\n options\n };\n this.privyMethods.connectWallet();\n // Set a timeout to reject the promise if connection takes too long\n setTimeout(() => {\n if (this.pendingTransaction) {\n this.pendingTransaction.reject(new Error(\"Wallet connection timed out\"));\n this.pendingTransaction = null;\n }\n }, 30000); // 30 seconds timeout\n });\n }\n // Proceed with the transaction using privyWallet\n const wallet = privyWallet;\n if (solTransactionData == null) {\n throw new Error(\"Solana transaction data is required\");\n }\n const rpcUrl = this.getRpcUrl(solTransactionData.network);\n const connection = new Connection(rpcUrl, \"confirmed\");\n const remainingAccounts = convertRemainingAccounts(solTransactionData.txArgs[0].remainingAccounts);\n const app_id = solTransactionData.appId;\n if (!app_id) {\n throw new Error(\"App ID is required\");\n }\n const anchorProvider = new anchor.AnchorProvider(connection, wallet.provider, 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 let blockhash;\n let lastValidBlockHeight;\n if (solTransactionData.signedTransaction) {\n // Server already set the blockhash and co-signed — do NOT overwrite\n // the blockhash or it will invalidate the server's signature.\n tx = VersionedTransaction.deserialize(Buffer.from(solTransactionData.signedTransaction, 'base64'));\n // Extract the blockhash that was baked into the signed message\n blockhash = tx.message.recentBlockhash;\n const latestBlockhash = await connection.getLatestBlockhash('confirmed');\n lastValidBlockHeight = latestBlockhash.lastValidBlockHeight;\n }\n else {\n const result = await buildSetDocumentsTransaction(connection, solTransactionData.txArgs[0].idl, anchorProvider, new PublicKey(wallet.address), { app_id, documents: solTransactionData.txArgs[0].setDocumentData, delete_paths: solTransactionData.txArgs[0].deletePaths, txData: solTransactionData.txArgs[0].txData }, finalDeduped, solTransactionData.lutKey, solTransactionData.preInstructions, false, solTransactionData.additionalLutAddresses);\n tx = result.tx;\n blockhash = result.blockhash;\n lastValidBlockHeight = result.lastValidBlockHeight;\n }\n // Use duck typing instead of instanceof to handle multiple @solana/web3.js versions\n const isLegacyTx = 'recentBlockhash' in tx && !('message' in tx && 'staticAccountKeys' in tx.message);\n if (isLegacyTx) {\n tx.recentBlockhash = blockhash;\n tx.lastValidBlockHeight = lastValidBlockHeight;\n }\n else {\n tx.message.recentBlockhash = blockhash;\n }\n try {\n if ((options === null || options === void 0 ? void 0 : options.shouldSubmitTx) === false) {\n // Just sign, don't submit - return raw signed bytes (same as original runTransaction)\n const signedTx = await this.signTransactionRaw(tx, privyWallet, solTransactionData.network);\n return {\n signedTransaction: signedTx, // Raw Uint8Array from Privy\n blockNumber: 0,\n gasUsed: \"0\",\n data: \"\"\n };\n }\n // Sign and submit using shared helper\n const { signature, txInfo } = await this.signAndSubmitInternal(tx, privyWallet, rpcUrl, connection, solTransactionData.network);\n return {\n transactionSignature: signature,\n blockNumber: (txInfo === null || txInfo === void 0 ? void 0 : txInfo.slot) || 0,\n gasUsed: ((_c = txInfo === null || txInfo === void 0 ? void 0 : txInfo.meta) === null || _c === void 0 ? void 0 : _c.fee.toString()) || '0',\n data: txInfo === null || txInfo === void 0 ? void 0 : txInfo.meta,\n };\n }\n catch (err) {\n console.error(err);\n throw err;\n }\n }\n /**\n * Signs a Solana transaction without submitting it.\n *\n * This method handles blockhash automatically if not set - you do NOT need to\n * set recentBlockhash on the transaction before calling this method.\n * The network/RPC URL is derived from the provider's configuration (set during initialization).\n *\n * @param transaction - The transaction to sign (Transaction or VersionedTransaction)\n * @returns The signed transaction\n */\n async signTransaction(transaction) {\n var _a, _b;\n await this.ensureReady({ waitForWallets: true });\n let privyWallets = (_a = this.privyMethods) === null || _a === void 0 ? void 0 : _a.wallets;\n let session = await SessionManager().getSession();\n let sessionAddress = session === null || session === void 0 ? void 0 : session.address;\n let privyWallet = privyWallets === null || privyWallets === void 0 ? void 0 : privyWallets.find((wallet) => wallet.address === sessionAddress);\n // If there's already a pending sign transaction, throw an error to prevent overlapping calls\n if (this.pendingSignTransaction) {\n throw new Error(\"Oops... something went wrong. Please try again.\");\n }\n // If wallet not found yet, it may be an embedded wallet (email login) that hasn't\n // appeared in the wallets array due to React state timing. Wait for it before\n // falling back to connectWallet() which shows an unwanted wallet selection modal.\n if (!privyWallets || privyWallets.length === 0 || !privyWallet) {\n if (((_b = this.privyMethods) === null || _b === void 0 ? void 0 : _b.authenticated) && sessionAddress) {\n privyWallet = await this.waitForMatchingWallet(sessionAddress);\n }\n }\n // If still no wallet after waiting, trigger connection and queue the signing\n if (!privyWallet) {\n return new Promise((resolve, reject) => {\n this.pendingSignTransaction = {\n resolve,\n reject,\n transaction\n };\n this.privyMethods.connectWallet();\n // Set a timeout to reject the promise if connection takes too long\n setTimeout(() => {\n if (this.pendingSignTransaction) {\n this.pendingSignTransaction.reject(new Error(\"Wallet connection timed out\"));\n this.pendingSignTransaction = null;\n }\n }, 30000); // 30 seconds timeout\n });\n }\n // Privy requires serialized transaction bytes, which requires a blockhash.\n // If the transaction doesn't have one, get a fresh blockhash and set it.\n // Use duck typing instead of instanceof to handle multiple @solana/web3.js versions\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 // Set feePayer if not already set\n if (!legacyTx.feePayer) {\n legacyTx.feePayer = new PublicKey(privyWallet.address);\n }\n }\n else {\n // VersionedTransaction\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 // Sign using raw method, then deserialize for the public API\n const signedTxRaw = await this.signTransactionRaw(transaction, privyWallet);\n return this.deserializeSignedTransaction(signedTxRaw);\n }\n /**\n * Signs and submits a Solana transaction to the network.\n *\n * This method handles blockhash and transaction confirmation automatically - you do NOT need to\n * set recentBlockhash or lastValidBlockHeight on the transaction before calling this method.\n * The network/RPC URL is derived from the provider's configuration (set during initialization).\n *\n * @param transaction - The transaction to sign and submit (Transaction or VersionedTransaction)\n * @param feePayer - Optional fee payer public key. If not provided and the transaction doesn't\n * already have a feePayer set, the connected wallet address will be used.\n * Useful for co-signing scenarios where a different account pays the fees.\n * @returns The transaction signature\n */\n async signAndSubmitTransaction(transaction, feePayer) {\n var _a, _b;\n await this.ensureReady({ waitForWallets: true });\n let privyWallets = (_a = this.privyMethods) === null || _a === void 0 ? void 0 : _a.wallets;\n let session = await SessionManager().getSession();\n let sessionAddress = session === null || session === void 0 ? void 0 : session.address;\n let privyWallet = privyWallets === null || privyWallets === void 0 ? void 0 : privyWallets.find((wallet) => wallet.address === sessionAddress);\n // If there's already a pending signAndSubmitTransaction, throw an error to prevent overlapping calls\n if (this.pendingSignAndSubmitTransaction) {\n throw new Error(\"Oops... something went wrong. Please try again.\");\n }\n // If wallet not found yet, it may be an embedded wallet (email login) that hasn't\n // appeared in the wallets array due to React state timing. Wait for it before\n // falling back to connectWallet() which shows an unwanted wallet selection modal.\n if (!privyWallets || privyWallets.length === 0 || !privyWallet) {\n if (((_b = this.privyMethods) === null || _b === void 0 ? void 0 : _b.authenticated) && sessionAddress) {\n privyWallet = await this.waitForMatchingWallet(sessionAddress);\n }\n }\n // If still no wallet after waiting, trigger connection and queue the signing\n if (!privyWallet) {\n return new Promise((resolve, reject) => {\n this.pendingSignAndSubmitTransaction = {\n resolve,\n reject,\n transaction,\n feePayer\n };\n this.privyMethods.connectWallet();\n // Set a timeout to reject the promise if connection takes too long\n setTimeout(() => {\n if (this.pendingSignAndSubmitTransaction) {\n this.pendingSignAndSubmitTransaction.reject(new Error(\"Wallet connection timed out\"));\n this.pendingSignAndSubmitTransaction = null;\n }\n }, 30000); // 30 seconds timeout\n });\n }\n // Get RPC URL and create connection\n const rpcUrl = this.getRpcUrl();\n const connection = new Connection(rpcUrl, 'confirmed');\n // Get fresh blockhash and set it on the transaction before signing\n const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash('confirmed');\n // Use duck typing instead of instanceof to handle multiple @solana/web3.js versions\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 // Set feePayer if not already set\n if (!legacyTx.feePayer) {\n legacyTx.feePayer = feePayer !== null && feePayer !== void 0 ? feePayer : new PublicKey(privyWallet.address);\n }\n }\n else {\n // VersionedTransaction\n const versionedTx = transaction;\n versionedTx.message.recentBlockhash = blockhash;\n // Note: VersionedTransaction feePayer is set in the message at creation time\n // and cannot be modified after creation\n }\n // Use shared sign and submit logic\n const { signature } = await this.signAndSubmitInternal(transaction, privyWallet, rpcUrl, connection);\n return signature;\n }\n // ============ Private Helpers ============\n getRpcUrl(network) {\n return resolveSolanaRpcUrl(this.networkUrl, network !== null && network !== void 0 ? network : this.configuredNetwork, \"Privy Solana transaction\");\n }\n getChainId(network) {\n if (network) {\n return resolveSolanaWalletStandardChain(network, \"Privy Solana transaction\");\n }\n if (this.chainId)\n return this.chainId;\n if (this.configuredNetwork) {\n return resolveSolanaWalletStandardChain(this.configuredNetwork, \"Privy Solana transaction\");\n }\n throw new Error(\"Privy Solana transaction requires config.chain as solana_devnet, solana_mainnet, or surfnet.\");\n }\n /**\n * Internal sign transaction - serializes and signs via Privy\n * Returns the raw result from Privy (Uint8Array)\n * This mirrors exactly what runTransaction was doing\n */\n async signTransactionRaw(transaction, privyWallet, network) {\n var _a;\n // Serialize the transaction\n // Use duck typing instead of instanceof to handle multiple @solana/web3.js versions\n const isLegacyTransaction = 'recentBlockhash' in transaction && !('message' in transaction && 'staticAccountKeys' in transaction.message);\n let serializedForSign;\n if (isLegacyTransaction) {\n serializedForSign = transaction.serialize({ requireAllSignatures: false, verifySignatures: false });\n }\n else {\n serializedForSign = transaction.serialize();\n }\n // Sign via Privy - returns { signedTransaction: Uint8Array }\n const result = await ((_a = this.privyMethods) === null || _a === void 0 ? void 0 : _a.signTransaction({\n transaction: serializedForSign,\n wallet: privyWallet,\n chain: this.getChainId(network)\n }));\n // Privy returns { signedTransaction: Uint8Array }, unwrap it\n const signedTx = (result === null || result === void 0 ? void 0 : result.signedTransaction) || result;\n return signedTx;\n }\n /**\n * Deserialize a signed transaction from Uint8Array to Transaction object\n */\n deserializeSignedTransaction(signedTxRaw) {\n // Handle different formats Privy might return\n let signedTx;\n if (signedTxRaw instanceof Uint8Array) {\n signedTx = signedTxRaw;\n }\n else if (Array.isArray(signedTxRaw)) {\n signedTx = new Uint8Array(signedTxRaw);\n }\n else if (signedTxRaw && typeof signedTxRaw === 'object' && 'signedTransaction' in signedTxRaw) {\n // Privy might wrap the result\n signedTx = signedTxRaw.signedTransaction instanceof Uint8Array\n ? signedTxRaw.signedTransaction\n : new Uint8Array(signedTxRaw.signedTransaction);\n }\n else if (Buffer.isBuffer(signedTxRaw)) {\n signedTx = new Uint8Array(signedTxRaw);\n }\n else {\n throw new Error(`Unexpected signed transaction format: ${typeof signedTxRaw}`);\n }\n // Try to deserialize as VersionedTransaction first, fall back to legacy Transaction\n try {\n return VersionedTransaction.deserialize(signedTx);\n }\n catch (_a) {\n return Transaction.from(signedTx);\n }\n }\n /**\n * Internal sign and submit - handles Surfnet vs non-Surfnet logic\n * This is the core submission logic used by both signAndSubmitTransaction and runTransaction\n *\n * For Surfnet: sign with signTransactionRaw, then sendRawTransaction\n * For non-Surfnet: use Privy's signAndSendTransaction (combined operation)\n */\n async signAndSubmitInternal(transaction, privyWallet, rpcUrl, connection, network) {\n var _a;\n const isSurfnet = rpcUrl === SURFNET_RPC_URL;\n let signature;\n if (isSurfnet) {\n // For Surfnet: sign with signTransactionRaw, then sendRawTransaction\n const signedTx = await this.signTransactionRaw(transaction, privyWallet, network);\n signature = await connection.sendRawTransaction(signedTx);\n }\n else {\n // For non-Surfnet: use Privy's combined signAndSendTransaction\n // Serialize the transaction for Privy API\n // Use duck typing instead of instanceof to handle multiple @solana/web3.js versions\n const isLegacyTransaction = 'recentBlockhash' in transaction && !('message' in transaction && 'staticAccountKeys' in transaction.message);\n let serializedTx;\n if (isLegacyTransaction) {\n serializedTx = transaction.serialize({ requireAllSignatures: false, verifySignatures: false });\n }\n else {\n serializedTx = transaction.serialize();\n }\n const result = await ((_a = this.privyMethods) === null || _a === void 0 ? void 0 : _a.useSendTransactionSolana.signAndSendTransaction({\n transaction: serializedTx,\n wallet: privyWallet,\n chain: this.getChainId(network)\n }));\n // Handle case where signature might be bytes instead of string\n const rawSig = result.signature;\n if (rawSig instanceof Uint8Array || Array.isArray(rawSig)) {\n signature = bs58.encode(rawSig instanceof Uint8Array ? rawSig : new Uint8Array(rawSig));\n }\n else {\n signature = rawSig;\n }\n }\n const txInfo = await confirmAndCheckTransaction(connection, signature);\n return { signature, txInfo };\n }\n async signMessage(message) {\n var _a, _b, _c;\n await this.ensureReady({ waitForWallets: true });\n const session = await SessionManager().getSession();\n let sessionAddress = session === null || session === void 0 ? void 0 : session.address;\n // If there's already a pending sign message, throw an error to prevent overlapping calls\n if (this.pendingSignMessage) {\n throw new Error(\"Oops... something went wrong. Please try again.\");\n }\n // If no wallets connected yet, it may be an embedded wallet (email login) that hasn't\n // appeared in the wallets array due to React state timing. Wait for it before\n // falling back to connectWallet() which shows an unwanted wallet selection modal.\n if (!((_a = this.privyMethods) === null || _a === void 0 ? void 0 : _a.wallets) || this.privyMethods.wallets.length === 0) {\n if (((_b = this.privyMethods) === null || _b === void 0 ? void 0 : _b.authenticated) && sessionAddress) {\n const matchedWallet = await this.waitForMatchingWallet(sessionAddress);\n if (!matchedWallet) {\n return new Promise((resolve, reject) => {\n this.pendingSignMessage = {\n resolve,\n reject,\n message\n };\n this.privyMethods.connectWallet();\n // Set a timeout to reject the promise if connection takes too long\n setTimeout(() => {\n if (this.pendingSignMessage) {\n this.pendingSignMessage.reject(new Error(\"Wallet connection timed out\"));\n this.pendingSignMessage = null;\n }\n }, 30000); // 30 seconds timeout\n });\n }\n }\n else {\n return new Promise((resolve, reject) => {\n this.pendingSignMessage = {\n resolve,\n reject,\n message\n };\n this.privyMethods.connectWallet();\n // Set a timeout to reject the promise if connection takes too long\n setTimeout(() => {\n if (this.pendingSignMessage) {\n this.pendingSignMessage.reject(new Error(\"Wallet connection timed out\"));\n this.pendingSignMessage = null;\n }\n }, 30000); // 30 seconds timeout\n });\n }\n }\n let privyWallet = this.privyMethods.wallets.find((wallet) => wallet.address === sessionAddress);\n if (!privyWallet) {\n throw new Error('Active Privy wallets do not include the authenticated session wallet; please log in again.');\n }\n // Use the Privy signMessage hook for Solana wallets\n // The message needs to be passed as a Uint8Array\n const messageBytes = getPlatform().textEncode(message);\n const result = await ((_c = this.privyMethods) === null || _c === void 0 ? void 0 : _c.signMessage({\n message: messageBytes,\n wallet: privyWallet,\n }));\n // The signature is returned as a Uint8Array, encode it as base58 (standard Solana format)\n const signatureBytes = (result === null || result === void 0 ? void 0 : result.signature) || result;\n const bs58 = await import('bs58');\n return bs58.default.encode(signatureBytes);\n }\n async restoreSession() {\n const session = await SessionManager().getSession();\n if (session) {\n return { provider: this, address: session.address };\n }\n else {\n return null;\n }\n }\n // NOTE: accessToken/idToken are accepted for backwards-compat with existing\n // call sites but are no longer used. The session is minted by having the Privy\n // Solana wallet SIGN the canonical SIWS challenge (the same wallet-signature\n // path Phantom/MWA/guest use), so the bounded /session issuer needs no\n // Privy-specific token verification — it arrives as a Solana signature and is\n // recorded server-side as authMethod 'phantom'.\n async createSession(address, _accessToken, _idToken) {\n var _a, _b, _c, _d;\n const privyWallet = (_b = (_a = this.privyMethods) === null || _a === void 0 ? void 0 : _a.wallets) === null || _b === void 0 ? void 0 : _b.find((w) => w.address === address);\n if (!privyWallet) {\n throw new Error('No Privy Solana wallet matching the requested session address is available.');\n }\n const nonce = await genAuthNonce();\n const message = await genSolanaMessage(address, nonce);\n const messageBytes = getPlatform().textEncode(message);\n // Low-level Privy sign hook — signs WITHOUT touching the session (the public\n // signMessage() bootstraps sessions, which would recurse here).\n const signResult = await ((_c = this.privyMethods) === null || _c === void 0 ? void 0 : _c.signMessage({\n message: messageBytes,\n wallet: privyWallet,\n }));\n const signatureBytes = (_d = signResult === null || signResult === void 0 ? void 0 : signResult.signature) !== null && _d !== void 0 ? _d : signResult;\n // base64-encoded detached signature (matches Phantom + guest providers).\n const signature = Buffer.from(signatureBytes).toString('base64');\n const createSessionResult = await createSessionWithSignature(address, message, signature);\n if (createSessionResult) {\n await SessionManager().storeSession(address, createSessionResult.accessToken, createSessionResult.idToken, createSessionResult.refreshToken);\n }\n }\n /**\n * Waits for a wallet matching the session address to appear in the wallets array.\n * This handles the timing gap where Privy's embedded wallet (created for email login users)\n * may not yet be in the useWallets() array when signTransaction is called immediately after login.\n */\n async waitForMatchingWallet(sessionAddress, timeoutMs = 10000) {\n var _a;\n const startTime = Date.now();\n while (Date.now() - startTime < timeoutMs) {\n const wallets = (_a = this.privyMethods) === null || _a === void 0 ? void 0 : _a.wallets;\n if (wallets && wallets.length > 0) {\n const wallet = wallets.find((w) => w.address === sessionAddress);\n if (wallet)\n return wallet;\n }\n await new Promise(resolve => setTimeout(resolve, 200));\n }\n return null;\n }\n async ensureReady({ waitForWallets = false, timeoutMs = 15000 } = {}) {\n const isReady = () => {\n var _a, _b;\n if (!((_a = this.privyMethods) === null || _a === void 0 ? void 0 : _a.ready))\n return false;\n if (waitForWallets && !((_b = this.privyMethods) === null || _b === void 0 ? void 0 : _b.walletReady))\n return false;\n return true;\n };\n if (isReady())\n return;\n return new Promise((resolve, reject) => {\n const startTime = Date.now();\n const check = () => {\n if (isReady()) {\n resolve();\n }\n else if (Date.now() - startTime > timeoutMs) {\n reject(new Error('Login provider failed to initialize. This can happen in incognito mode or when third-party cookies are blocked. Try using a regular browser window.'));\n }\n else {\n setTimeout(check, 100);\n }\n };\n check();\n });\n }\n}\nPrivyWalletProvider.instance = null;\n"],"names":["SessionManager","Buffer"],"mappings":"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"}
|