@privy-io/react-auth 3.2.1 → 3.3.0-beta-20251010144542
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/dist/cjs/SignRequestScreen-CP2KA7ya.js +27 -0
- package/dist/cjs/abstract-smart-wallets.js +1 -1
- package/dist/cjs/extended-chains.js +1 -1
- package/dist/cjs/getEmbeddedConnectedWallet-6TsVZJkD.js +1 -0
- package/dist/cjs/index.js +5 -5
- package/dist/cjs/privy-context-NMR-GjnL.js +1 -0
- package/dist/cjs/{smart-wallets-7Aqc5Nzs.js → smart-wallets-DeRINaJe.js} +1 -1
- package/dist/cjs/smart-wallets.js +1 -1
- package/dist/cjs/solana.js +1 -1
- package/dist/cjs/ui.js +2 -2
- package/dist/cjs/{use-export-wallet-sK7TOD-_.js → use-export-wallet-BP0lPnqm.js} +1 -1
- package/dist/cjs/{useActiveWallet-BtCoqsEN.js → useActiveWallet-LAFaOocp.js} +1 -1
- package/dist/cjs/{usePrivy-B_0-uaxv.js → usePrivy-qD6wnoRL.js} +1 -1
- package/dist/dts/extended-chains.d.mts +1 -1
- package/dist/dts/extended-chains.d.ts +1 -1
- package/dist/dts/farcaster.d.mts +1 -1
- package/dist/dts/farcaster.d.ts +1 -1
- package/dist/dts/index.d.mts +25 -3
- package/dist/dts/index.d.ts +25 -3
- package/dist/dts/smart-wallets.d.mts +1 -1
- package/dist/dts/smart-wallets.d.ts +1 -1
- package/dist/dts/solana.d.mts +2 -2
- package/dist/dts/solana.d.ts +2 -2
- package/dist/dts/{types-DbYYrJGX.d.mts → types-C97UOzaM.d.mts} +18 -3
- package/dist/dts/{types-DbYYrJGX.d.ts → types-C97UOzaM.d.ts} +18 -3
- package/dist/dts/ui.d.mts +1 -1
- package/dist/dts/ui.d.ts +1 -1
- package/dist/esm/SignRequestScreen-CGlP3Q5r.mjs +25 -0
- package/dist/esm/abstract-smart-wallets.mjs +1 -1
- package/dist/esm/extended-chains.mjs +1 -1
- package/dist/esm/getEmbeddedConnectedWallet-CM6cDQCS.mjs +1 -0
- package/dist/esm/index.mjs +6 -6
- package/dist/esm/privy-context-C7K3ZBW-.mjs +1 -0
- package/dist/esm/smart-wallets-CdEONzDF.mjs +1 -0
- package/dist/esm/smart-wallets.mjs +1 -1
- package/dist/esm/solana.mjs +1 -1
- package/dist/esm/ui.mjs +2 -2
- package/dist/esm/use-export-wallet-CaBSW_2U.mjs +1 -0
- package/dist/esm/{useActiveWallet-LdKZteNM.mjs → useActiveWallet-CiDNzxEx.mjs} +1 -1
- package/dist/esm/{usePrivy-DPEbjcra.mjs → usePrivy-DQW-BUcn.mjs} +1 -1
- package/package.json +4 -4
- package/dist/cjs/SignRequestScreen-BbqNYmhD.js +0 -27
- package/dist/cjs/getEmbeddedConnectedWallet-DTU4T9TJ.js +0 -1
- package/dist/cjs/privy-context-CJzQZH6s.js +0 -1
- package/dist/esm/SignRequestScreen-BFYRKL3N.mjs +0 -25
- package/dist/esm/getEmbeddedConnectedWallet-CSSBWE2p.mjs +0 -1
- package/dist/esm/privy-context-CTKe79J4.mjs +0 -1
- package/dist/esm/smart-wallets-kAXh6Vvw.mjs +0 -1
- package/dist/esm/use-export-wallet-BxcU5zVQ.mjs +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function e(e){return e.find((e=>"privy"===e.walletClientType&&"embedded"===e.connectorType&&!e.imported))??null}export{e as g};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{getAddress as e}from"viem";import{createContext as t,useContext as i}from"react";import{n as a}from"./internal-context-LlMdpfkb.mjs";function r(e){return"string"==typeof e&&/^custom:[a-zA-Z0-9_-]+$/i.test(e)}function s(e){return e?new Date(1e3*e):null}function l(e,t){return e.slice().sort(((e,t)=>(e.firstVerifiedAt?.getTime()??0)-(t.firstVerifiedAt?.getTime()??0))).find((e=>e.type===t))}const n=e=>e?d(e).find((e=>0===e.walletIndex))??null:null,d=e=>e?u(e,"ethereum"):[],u=(e,t)=>e.linkedAccounts.filter((e=>"wallet"===e.type&&"privy"===e.walletClientType&&!e.imported&&e.chainType===t)),p=e=>e?u(e,"solana"):[],m=e=>e?p(e).find((e=>0===e.walletIndex))??null:null,o=e=>(e?.linkedAccounts??[]).filter((e=>"wallet"===e.type&&"privy"===e.walletClientType&&e.imported&&"ethereum"===e.chainType)),c=e=>(e?.linkedAccounts??[]).filter((e=>"wallet"===e.type&&e.imported&&"privy"===e.walletClientType&&"solana"===e.chainType));let f=(t,i)=>t===i||!(!t.startsWith("0x")||!i.startsWith("0x"))&&e(t)===e(i);const _=(e,t)=>e?.linkedAccounts.find((e=>"wallet"===e.type&&"privy"===e.walletClientType&&f(e.address,t)))||null,y=(e,t)=>e.find((e=>f(e.address,t)))||null,h=e=>n(e)??m(e);function b(e){if(!e)return null;let t=function(e){let t=[];for(let i of e){let e=i.type;switch(i.type){case"wallet":let a={id:i.id,address:i.address,type:i.type,imported:i.imported,delegated:i.delegated,firstVerifiedAt:s(i.first_verified_at),latestVerifiedAt:s(i.latest_verified_at),chainType:i.chain_type,walletClientType:i.wallet_client_type,connectorType:i.connector_type,recoveryMethod:i.recovery_method,walletIndex:i.wallet_index,publicKey:i.public_key};t.push(a);break;case"smart_wallet":let l={address:i.address,type:i.type,firstVerifiedAt:s(i.first_verified_at),latestVerifiedAt:s(i.latest_verified_at),smartWalletType:i.smart_wallet_type,smartWalletVersion:i.smart_wallet_version};t.push(l);break;case"cross_app":let n={type:i.type,subject:i.subject,embeddedWallets:i.embedded_wallets,smartWallets:i.smart_wallets,providerApp:{id:i.provider_app_id},firstVerifiedAt:s(i.first_verified_at),latestVerifiedAt:s(i.latest_verified_at)};t.push(n);break;case"email":let d={address:i.address,type:i.type,firstVerifiedAt:s(i.first_verified_at),latestVerifiedAt:s(i.latest_verified_at)};t.push(d);break;case"phone":let u={number:i.phoneNumber,type:i.type,firstVerifiedAt:s(i.first_verified_at),latestVerifiedAt:s(i.latest_verified_at)};t.push(u);break;case"google_oauth":let p={subject:i.subject,email:i.email,name:i.name,type:i.type,firstVerifiedAt:s(i.first_verified_at),latestVerifiedAt:s(i.latest_verified_at)};t.push(p);break;case"spotify_oauth":let m={subject:i.subject,email:i.email,name:i.name,type:i.type,firstVerifiedAt:s(i.first_verified_at),latestVerifiedAt:s(i.latest_verified_at)};t.push(m);break;case"instagram_oauth":let o={subject:i.subject,username:i.username,type:i.type,firstVerifiedAt:s(i.first_verified_at),latestVerifiedAt:s(i.latest_verified_at)};t.push(o);break;case"twitter_oauth":let c={subject:i.subject,username:i.username,name:i.name,type:i.type,profilePictureUrl:i.profile_picture_url,firstVerifiedAt:s(i.first_verified_at),latestVerifiedAt:s(i.latest_verified_at)};t.push(c);break;case"discord_oauth":let f={subject:i.subject,username:i.username,email:i.email,type:i.type,firstVerifiedAt:s(i.first_verified_at),latestVerifiedAt:s(i.latest_verified_at)};t.push(f);break;case"github_oauth":let _={subject:i.subject,username:i.username,name:i.name,email:i.email,type:i.type,firstVerifiedAt:s(i.first_verified_at),latestVerifiedAt:s(i.latest_verified_at)};t.push(_);break;case"tiktok_oauth":let y={subject:i.subject,username:i.username,name:i.name,type:i.type,firstVerifiedAt:s(i.first_verified_at),latestVerifiedAt:s(i.latest_verified_at)};t.push(y);break;case"line_oauth":let h={subject:i.subject,name:i.name,email:i.email,profilePictureUrl:i.profile_picture_url,type:i.type,firstVerifiedAt:s(i.first_verified_at),latestVerifiedAt:s(i.latest_verified_at)};t.push(h);break;case"linkedin_oauth":let b={subject:i.subject,name:i.name,email:i.email,vanityName:i.vanity_name,type:i.type,firstVerifiedAt:s(i.first_verified_at),latestVerifiedAt:s(i.latest_verified_at)};t.push(b);break;case"apple_oauth":let k={subject:i.subject,email:i.email,type:i.type,firstVerifiedAt:s(i.first_verified_at),latestVerifiedAt:s(i.latest_verified_at)};t.push(k);break;case"custom_auth":t.push({type:i.type,customUserId:i.custom_user_id,firstVerifiedAt:s(i.first_verified_at),latestVerifiedAt:s(i.latest_verified_at)});break;case"farcaster":let A={type:i.type,fid:i.fid,ownerAddress:i.owner_address,displayName:i.display_name,username:i.username,bio:i.bio,pfp:i.profile_picture_url,url:i.homepage_url,firstVerifiedAt:s(i.first_verified_at),latestVerifiedAt:s(i.latest_verified_at),signerPublicKey:i.signer_public_key};t.push(A);break;case"passkey":let v={type:i.type,enrolledInMfa:i.enrolled_in_mfa,credentialId:i.credential_id,publicKey:i.public_key,authenticatorName:i.authenticator_name,createdWithDevice:i.created_with_device,createdWithOs:i.created_with_os,createdWithBrowser:i.created_with_browser,firstVerifiedAt:s(i.first_verified_at),latestVerifiedAt:s(i.latest_verified_at)};t.push(v);break;case"telegram":let g={type:i.type,telegramUserId:i.telegram_user_id,firstName:i.first_name,lastName:i.last_name,username:i.username,photoUrl:i.photo_url,firstVerifiedAt:s(i.first_verified_at),latestVerifiedAt:s(i.latest_verified_at)};t.push(g);break;default:if(r(i.type)){let e={type:i.type,subject:i.subject,name:i.name,username:i.username,email:i.email,profilePictureUrl:i.profile_picture_url,firstVerifiedAt:s(i.first_verified_at),latestVerifiedAt:s(i.latest_verified_at)};t.push(e);break}console.warn(`Unrecognized account type: ${e}. Please consider upgrading the Privy SDK.`)}}return t}(e.linked_accounts),i=l(t,"wallet"),a=l(t,"smart_wallet"),n=l(t,"email"),d=l(t,"phone"),u=l(t,"google_oauth"),p=l(t,"twitter_oauth"),m=l(t,"discord_oauth"),o=l(t,"github_oauth"),c=l(t,"spotify_oauth"),f=l(t,"instagram_oauth"),_=l(t,"tiktok_oauth"),y=l(t,"line_oauth"),h=l(t,"linkedin_oauth"),b=l(t,"apple_oauth"),k=l(t,"farcaster"),A=l(t,"telegram"),v=e.mfa_methods.map((({type:e,verified_at:t})=>({type:e,verifiedAt:s(t)})));return{id:e.id,createdAt:s(e.created_at),linkedAccounts:t,email:n&&{address:n?.address},phone:d&&{number:d?.number},wallet:i&&{id:i.id,address:i.address,chainType:i.chainType,walletClientType:i.walletClientType,connectorType:i.connectorType,recoveryMethod:i.recoveryMethod,imported:i.imported,delegated:i.delegated,walletIndex:i.walletIndex,publicKey:i.publicKey},smartWallet:a&&{address:a.address,smartWalletType:a.smartWalletType,smartWalletVersion:a.smartWalletVersion},google:u&&{subject:u.subject,email:u.email,name:u.name},twitter:p&&{subject:p.subject,username:p.username,name:p.name,profilePictureUrl:p.profilePictureUrl},discord:m&&{subject:m.subject,username:m.username,email:m.email},github:o&&{subject:o.subject,username:o.username,name:o.name,email:o.email},spotify:c&&{subject:c.subject,email:c.email,name:c.name},instagram:f&&{subject:f.subject,username:f.username},tiktok:_&&{subject:_.subject,username:_.username,name:_.name},line:y&&{subject:y.subject,name:y.name,email:y.email,profilePictureUrl:y.profilePictureUrl},linkedin:h&&{subject:h.subject,name:h.name,email:h.email,vanityName:h.vanityName},apple:b&&{subject:b.subject,email:b.email},farcaster:k&&{fid:k.fid,ownerAddress:k.ownerAddress,displayName:k.displayName,username:k.username,bio:k.bio,pfp:k.pfp,url:k.url,signerPublicKey:k.signerPublicKey},telegram:A&&{telegramUserId:A.telegramUserId,firstName:A.firstName,lastName:A.lastName,username:A.username,photoUrl:A.photoUrl},delegatedWallets:[],mfaMethods:v.map((e=>e.type)),hasAcceptedTerms:e.has_accepted_terms??!1,isGuest:e.is_guest,customMetadata:e.custom_metadata}}const k=e=>!!e.id&&"privy-v2"===e.recoveryMethod,A=/*#__PURE__*/t({ready:!1,authenticated:!1,user:null,walletConnectors:null,connectWallet:a,login:a,connectOrCreateWallet:a,linkEmail:a,linkPhone:a,linkFarcaster:a,linkWallet:a,startCrossAppAuthFlow:a,linkGoogle:a,linkTwitter:a,linkDiscord:a,linkGithub:a,linkSpotify:a,linkInstagram:a,linkTelegram:a,linkTiktok:a,linkLine:a,linkLinkedIn:a,linkApple:a,linkPasskey:a,updateEmail:a,updatePhone:a,logout:a,getAccessToken:a,unlinkEmail:a,unlinkPhone:a,unlinkWallet:a,unlinkGoogle:a,unlinkTwitter:a,unlinkDiscord:a,unlinkGithub:a,unlinkSpotify:a,unlinkInstagram:a,unlinkTiktok:a,unlinkLine:a,unlinkLinkedIn:a,unlinkApple:a,unlinkCrossAppAccount:a,unlinkFarcaster:a,unlinkTelegram:a,unlinkPasskey:a,signMessage:a,signTypedData:a,enrollInMfa:a,initEnrollmentWithSms:a,initEnrollmentWithTotp:a,initEnrollmentWithPasskey:a,promptMfa:a,init:a,submitEnrollmentWithSms:a,submitEnrollmentWithTotp:a,submitEnrollmentWithPasskey:a,unenroll:a,submit:a,cancel:a,sendTransaction:a,signTransaction:a,exportWallet:a,setWalletPassword:a,setWalletRecovery:a,requestFarcasterSignerFromWarpcast:a,getFarcasterSignerPublicKey:a,signFarcasterMessage:a,signMessageWithCrossAppWallet:a,signTypedDataWithCrossAppWallet:a,sendTransactionWithCrossAppWallet:a,signTransactionWithCrossAppWallet:a,isModalOpen:!1,mfaMethods:[]}),v=()=>i(A);export{A as P,h as a,n as b,b as c,d,o as e,_ as f,k as g,y as h,r as i,c as j,p as k,m as l,u as m,v as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{useRef as e,useState as t,useCallback as r}from"react";import{http as a,createPublicClient as n}from"viem";import{u as i,b as s,g as o}from"./privy-context-CTKe79J4.mjs";import{c2 as l,am as c,ar as d,ae as u,z as m,bT as p,bU as y,bw as g}from"./SignRequestScreen-BFYRKL3N.mjs";import{P as f}from"./paths-B891YjWw.mjs";import{u as h}from"./internal-context-LlMdpfkb.mjs";import{g as w}from"./getEmbeddedConnectedWallet-CSSBWE2p.mjs";import{createSmartAccountClient as P}from"permissionless";import{toThirdwebSmartAccount as I,toLightSmartAccount as W,toBiconomySmartAccount as v,toKernelSmartAccount as F,toSafeSmartAccount as x}from"permissionless/accounts";import{createPimlicoClient as G}from"permissionless/clients/pimlico";import{toCoinbaseSmartAccount as C,entryPoint06Address as T,entryPoint07Address as U}from"viem/account-abstraction";import{THIRDWEB as b,COINBASE_SMART_WALLET as M,LIGHT_ACCOUNT as S,BICONOMY as O,KERNEL as V,SAFE as A}from"@privy-io/js-sdk-core";let D={address:T,version:"0.6"},N={address:U,version:"0.7"},_=({owner:e,smartWalletType:t,smartWalletVersion:r,publicClient:a})=>{switch(t){case A:return x({client:a,entryPoint:N,owners:[e],version:"1.4.1"});case V:return F({client:a,version:"0.3.1",entryPoint:N,useMetaFactory:"optional",owners:[e]});case O:return v({client:a,owners:[e],entryPoint:D});case S:return W({client:a,entryPoint:D,owner:e,version:"1.1.0"});case M:return async function({client:e,owner:t,version:r}){let[a]=await t.request({method:"eth_accounts"});if(!a)throw Error("Unable to request embedded owner for eth_accounts");return await C({client:e,owners:[{type:"local",source:"privy",address:a,sign:async({hash:e})=>await t.request({method:"secp256k1_sign",params:[e]})}],version:r})}({client:a,owner:e,version:r??"1"});case b:return I({client:a,entryPoint:N,owner:e});default:throw Error(`Invalid smart account type: ${t}.`)}};const B=({calls:e,chain:t,maxPriorityFeePerGas:r,maxFeePerGas:a,nonce:n})=>e.map((e=>({to:e.to||void 0,data:e.data,value:e.value,chainId:t.id,nonce:n,maxFeePerGas:a,maxPriorityFeePerGas:r}))),$=async({chain:e,paymasterContext:t,account:r,signer:i,user:s,smartWalletsConfig:o,rpcConfig:c,privyAppId:d})=>{if(!(o?.enabled&&s&&r&&i))return;let u=o?.configuredNetworks.find((t=>t.chainId===`eip155:${e.id}`));if(!u)throw new f(`The chain ${e.name} (eip155:${e.id}) must be configured in the smart wallet configuration in your dashboard`);let m=s.smartWallet?s.smartWallet.smartWalletType:o.smartWalletType,p=s.smartWallet?s.smartWallet.smartWalletVersion:o.smartWalletVersion,y=l(e,c,d),g=n({chain:e,transport:a(y)}),h=t??u.paymasterContext,w=await(async({owner:e,smartWalletType:t,smartWalletVersion:r,chain:n,publicClient:i,bundlerUrl:s,paymasterUrl:o,paymasterContext:l})=>{let c=await _({owner:e,smartWalletType:t,publicClient:i,smartWalletVersion:r}),d=G({transport:a(s),entryPoint:c.entryPoint}),u=o?G({transport:a(o),entryPoint:c.entryPoint}):void 0;return P({account:c,chain:n,paymaster:u,paymasterContext:l,bundlerTransport:a(s),userOperation:{estimateFeesPerGas:async()=>{if(["public.pimlico.io","api.pimlico.io"].some((e=>s.includes(e))))return await d.getUserOperationGasPrice().then((e=>e.fast));if(["rpc.zerodev.app"].some((e=>s.includes(e))))return(await d.request({method:"zd_getUserOperationGasPrice",params:[]})).fast;if(["g.alchemy.com"].some((e=>s.includes(e)))){let[e,t]=await Promise.all([i.getBlock({blockTag:"latest"}),d.request({method:"rundler_maxPriorityFeePerGas",params:[]})]);if(!e.baseFeePerGas||!t)throw Error("Failed to get block or maxPriorityFeePerGasEstimate");return{maxFeePerGas:150n*e.baseFeePerGas/100n+BigInt(t.toString()),maxPriorityFeePerGas:BigInt(t.toString())}}{let e=await i.estimateFeesPerGas(),t=s.includes("api.developer.coinbase.com")?175n:150n;return{...e,maxFeePerGas:e.maxFeePerGas*t/100n,maxPriorityFeePerGas:e.maxPriorityFeePerGas*t/100n}}}}})})({owner:i,smartWalletType:m,smartWalletVersion:p,chain:e,publicClient:g,paymasterContext:h,...u});if(!w)throw new f(`Failed to create smart wallet client for chain ${e.name} (eip155:${e.id})`);return w},q=({clientConfig:a,smartWalletsConfig:n})=>{let{hideWalletUIs:l,openPrivyModal:P,appId:I,isHeadlessSigning:W}=h(),v=c(),{setModalData:F}=d(),{user:x}=i(),{chains:G}=c(),{chainId:C,clients:T,setChainId:U,chainIdState:b}=(()=>{let r=e(),[a,n]=t();return{clients:e({}),setChainId:e=>{r.current=e,n(e)},chainId:r,chainIdState:a}})(),M=G.find((e=>e.id===b)),{wallets:S}=u(),O=s(x),V=w(S),A=!!O&&o(O),D=r((async()=>C.current),[C]),N=r((async({id:e})=>{if(!T.current[e]){let t=await $({chain:G.find((t=>t.id===e)),account:O,signer:await(V?.getEthereumProvider()),user:x,paymasterContext:a?.paymasterContext,smartWalletsConfig:n,rpcConfig:v.rpcConfig,privyAppId:I});t&&(T.current[e]=t)}U(e)}),[G,a,S,x,n]);return{wrapSmartAccountClient:e=>{T.current[e.chain.id]=e,b||U(e.chain.id);return{...e,sendTransaction:async(e,t)=>{let r=T.current[C.current];if(!r)throw new f(`Smart wallet client for chain (eip155:${C.current}) not found`);if(delete e.account,W({showWalletUIs:t?.uiOptions?.showWalletUIs}))return l.current=!0,await r.sendTransaction(e).finally((()=>l.current=!1));let a=[];"calls"in e&&void 0!==e.calls?a=[...e.calls]:"to"in e&&(a=[{to:e.to,value:e.value||BigInt(0),data:e.data||"0x"}]);let n=async()=>{let{paymasterAndData:t,paymasterData:n,maxFeePerGas:i,maxPriorityFeePerGas:s}=await r.prepareUserOperation({calls:a,maxFeePerGas:e.maxFeePerGas,maxPriorityFeePerGas:e.maxPriorityFeePerGas,nonce:e.nonce?BigInt(e.nonce):void 0});return 0===Number(i)&&0===Number(s)||Number(t??n??0)>0};return new Promise((async(i,s)=>{l.current=!0;let{entropyId:o,entropyIdVerifier:c}=m(x);F({connectWallet:{recoveryMethod:O.recoveryMethod,connectingWalletAddress:O.address,isUnifiedWallet:A,entropyId:o,entropyIdVerifier:c,onCompleteNavigateTo:p,onFailure:()=>{}},sendTransaction:{transactionRequests:B({calls:a,chain:r.chain,maxPriorityFeePerGas:e.maxPriorityFeePerGas,maxFeePerGas:e.maxFeePerGas,nonce:e.nonce?BigInt(e.nonce):void 0}),transactingWalletIndex:0,transactingWalletAddress:r.account.address,entropyId:o,entropyIdVerifier:c,getIsSponsored:n,signOnly:!1,onConfirm:()=>r.sendTransaction(e),onSuccess:e=>i(e.hash),onFailure:s,uiOptions:t?.uiOptions??{}}}),P(y)})).finally((()=>{l.current=!1}))},signMessage:async(e,t)=>{let r=T.current[C.current];if(!r)throw new f(`Smart wallet client for chain (eip155:${C.current}) not found`);return W({showWalletUIs:t?.uiOptions?.showWalletUIs})?(l.current=!0,await r.signMessage(e).finally((()=>l.current=!1))):new Promise((async(a,n)=>{let{entropyId:i,entropyIdVerifier:s}=m(x);l.current=!0,F({connectWallet:{recoveryMethod:O.recoveryMethod,connectingWalletAddress:O.address,isUnifiedWallet:A,entropyId:i,entropyIdVerifier:s,onCompleteNavigateTo:g,onFailure:()=>{}},signMessage:{method:"personal_sign",data:"string"==typeof e.message?e.message:e.message.raw.toString(),confirmAndSign:()=>r.signMessage(e),onSuccess:e=>a(e),onFailure:n,uiOptions:t?.uiOptions??{}}}),P(y)})).finally((()=>{l.current=!1}))},signTypedData:async(e,t)=>{let r=T.current[C.current];if(!r)throw new f(`Smart wallet client for chain (eip155:${C.current}) not found`);return delete e.account,W({showWalletUIs:t?.uiOptions?.showWalletUIs})?(l.current=!0,await r.signTypedData(e).finally((()=>l.current=!1))):new Promise((async(a,n)=>{l.current=!0;let{entropyId:i,entropyIdVerifier:s}=m(x);F({connectWallet:{recoveryMethod:O.recoveryMethod,connectingWalletAddress:O.address,isUnifiedWallet:A,entropyId:i,entropyIdVerifier:s,onCompleteNavigateTo:g,onFailure:()=>{}},signMessage:{method:"eth_signTypedData_v4",data:e,confirmAndSign:()=>r.signTypedData(e),onSuccess:e=>a(e),onFailure:n,uiOptions:t?.uiOptions??{}}}),P(y)})).finally((()=>{l.current=!1}))},getChainId:D,chain:M,switchChain:N}}}},j=()=>{let{hideWalletUIs:e,openPrivyModal:t,isHeadlessSigning:r}=h(),{setModalData:a}=d(),{user:n}=i(),l=s(n),c=!!l&&o(l);return{wrapSmartAccountClientWithUIs:i=>({...i,sendTransaction:async(s,o)=>{if(r({showWalletUIs:o?.uiOptions?.showWalletUIs}))return e.current=!0,await i.sendTransaction(s).finally((()=>e.current=!1));let d=[];"calls"in s&&void 0!==s.calls?d=[...s.calls]:"to"in s&&(d=[{to:s.to,value:s.value||BigInt(0),data:s.data||"0x"}]);let u=async()=>{if(!i.paymaster)return!1;let{paymasterData:e,paymasterAndData:t}=await i.prepareUserOperation({calls:d,maxFeePerGas:s.maxFeePerGas,maxPriorityFeePerGas:s.maxPriorityFeePerGas,nonce:s.nonce?BigInt(s.nonce):void 0});return Number(t??e??0)>0};return new Promise((async(r,g)=>{e.current=!0;let{entropyId:f,entropyIdVerifier:h}=m(n);a({connectWallet:{recoveryMethod:l.recoveryMethod,connectingWalletAddress:l.address,isUnifiedWallet:c,entropyId:f,entropyIdVerifier:h,onCompleteNavigateTo:p,onFailure:()=>{}},sendTransaction:{transactionRequests:B({calls:d,chain:i.chain,maxPriorityFeePerGas:s.maxPriorityFeePerGas,maxFeePerGas:s.maxFeePerGas,nonce:s.nonce?BigInt(s.nonce):void 0}),transactingWalletIndex:0,transactingWalletAddress:i.account.address,entropyId:f,entropyIdVerifier:h,getIsSponsored:u,signOnly:!1,onConfirm:()=>i.sendTransaction(s),onSuccess:e=>r(e.hash),onFailure:g,uiOptions:o?.uiOptions??{}}}),t(y)})).finally((()=>{e.current=!1}))},signMessage:async(s,o)=>r({showWalletUIs:o?.uiOptions?.showWalletUIs})?(e.current=!0,await i.signMessage(s).finally((()=>e.current=!1))):new Promise((async(r,d)=>{let{entropyId:u,entropyIdVerifier:p}=m(n);e.current=!0,a({connectWallet:{recoveryMethod:l.recoveryMethod,connectingWalletAddress:l.address,isUnifiedWallet:c,entropyId:u,entropyIdVerifier:p,onCompleteNavigateTo:g,onFailure:()=>{}},signMessage:{method:"personal_sign",data:"string"==typeof s.message?s.message:s.message.raw.toString(),confirmAndSign:()=>i.signMessage(s),onSuccess:e=>r(e),onFailure:d,uiOptions:o?.uiOptions??{}}}),t(y)})).finally((()=>{e.current=!1})),signTypedData:async(s,o)=>r({showWalletUIs:o?.uiOptions?.showWalletUIs})?(e.current=!0,await i.signTypedData(s).finally((()=>e.current=!1))):new Promise((async(r,d)=>{e.current=!0;let{entropyId:u,entropyIdVerifier:p}=m(n);a({connectWallet:{recoveryMethod:l.recoveryMethod,connectingWalletAddress:l.address,isUnifiedWallet:c,entropyId:u,entropyIdVerifier:p,onCompleteNavigateTo:g,onFailure:()=>{}},signMessage:{method:"eth_signTypedData_v4",data:s,confirmAndSign:()=>i.signTypedData(s),onSuccess:e=>r(e),onFailure:d,uiOptions:o?.uiOptions??{}}}),t(y)})).finally((()=>{e.current=!1}))})}};export{q as a,B as c,$ as g,j as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{cm as e,ch as n,cz as t,cA as a,cB as i,cC as r,ai as s,aj as o,cD as c,cE as l,au as d,cb as u,al as p,cF as m,cG as f,cH as g,cI as h,cJ as y,cK as w,cL as v,am as A,ar as b,cM as I,cN as T,b4 as S,cO as O,cP as k,cQ as C,aG as E,z as x,bw as F,bU as _,ae as P,cR as U,cS as W,cT as M,af as j,b1 as B,cU as D,cV as L,as as N,cW as $,cX as R,cY as V,cZ as J,c_ as Q,c$ as q,bx as H}from"./SignRequestScreen-BFYRKL3N.mjs";import{jsx as K,jsxs as Y,Fragment as G}from"react/jsx-runtime";import z from"@heroicons/react/24/outline/CheckCircleIcon";import{useMemo as Z,useCallback as X,useState as ee,useEffect as ne}from"react";import{formatTokenAmount as te,rpc as ae,ConnectedStandardSolanaWallet as ie,formatWalletAddress as re}from"@privy-io/js-sdk-core";import{P as se,h as oe}from"./paths-B891YjWw.mjs";import{u as ce,a as le}from"./internal-context-LlMdpfkb.mjs";import{u as de,j as ue,a as pe,f as me,g as fe,k as ge,l as he}from"./privy-context-CTKe79J4.mjs";import{u as ye,g as we,i as ve}from"./usePrivy-DPEbjcra.mjs";import Ae from"eventemitter3";import{base58 as be}from"@scure/base";import{styled as Ie}from"styled-components";import{getTransactionDecoder as Te,pipe as Se,getCompiledTransactionMessageDecoder as Oe,decompileTransactionMessage as ke,setTransactionMessageLifetimeUsingBlockhash as Ce,compileTransaction as Ee,getTransactionEncoder as xe,getBase58Decoder as Fe,getBase64Decoder as _e,fetchAddressesForLookupTables as Pe,getBase58Encoder as Ue,address as We,createTransactionMessage as Me,setTransactionMessageFeePayerSigner as je,appendTransactionMessageInstruction as Be}from"@solana/kit";import{u as De}from"./use-sign-with-user-signer-DwqsbciW.mjs";import{getTransferSolInstruction as Le}from"@solana-program/system";import{findAssociatedTokenPda as Ne,getCreateAssociatedTokenIdempotentInstruction as $e,getTransferInstruction as Re}from"@solana-program/token";function Ve({rows:i}){/*#__PURE__*/return K(e,{children:i.filter((e=>!!e)).map(((e,i)=>null!=e.value||e.isLoading?/*#__PURE__*/Y(n,{children:[/*#__PURE__*/K(t,{children:e.label}),/*#__PURE__*/K(a,{$isLoading:e.isLoading,children:e.value})]},i):null))})}const Je=["solana:mainnet","solana:devnet","solana:testnet"];function Qe(e,n){if(!Object.prototype.hasOwnProperty.call(e,n))throw TypeError("attempted to use private field on non-instance");return e}var qe=0,He="__private_"+qe+++"__implementation";function Ke(e,n){if(!Object.prototype.hasOwnProperty.call(e,n))throw TypeError("attempted to use private field on non-instance");return e}var Ye=0;function Ge(e){return"__private_"+Ye+++"_"+e}var ze=/*#__PURE__*/Ge("_address"),Ze=/*#__PURE__*/Ge("_publicKey"),Xe=/*#__PURE__*/Ge("_chains"),en=/*#__PURE__*/Ge("_features"),nn=/*#__PURE__*/Ge("_label"),tn=/*#__PURE__*/Ge("_icon");class an{get address(){return Ke(this,ze)[ze]}get publicKey(){return Ke(this,Ze)[Ze].slice()}get chains(){return Ke(this,Xe)[Xe].slice()}get features(){return Ke(this,en)[en].slice()}get label(){return Ke(this,nn)[nn]}get icon(){return Ke(this,tn)[tn]}constructor({address:e,publicKey:n,label:t,icon:a}){Object.defineProperty(this,ze,{writable:!0,value:void 0}),Object.defineProperty(this,Ze,{writable:!0,value:void 0}),Object.defineProperty(this,Xe,{writable:!0,value:void 0}),Object.defineProperty(this,en,{writable:!0,value:void 0}),Object.defineProperty(this,nn,{writable:!0,value:void 0}),Object.defineProperty(this,tn,{writable:!0,value:void 0}),Ke(this,ze)[ze]=e,Ke(this,Ze)[Ze]=n,Ke(this,Xe)[Xe]=Je,Ke(this,nn)[nn]=t,Ke(this,tn)[tn]=a,Ke(this,en)[en]=["solana:signAndSendTransaction","solana:signTransaction","solana:signMessage"],new.target===an&&Object.freeze(this)}}function rn(e,n){if(!Object.prototype.hasOwnProperty.call(e,n))throw TypeError("attempted to use private field on non-instance");return e}var sn=0;function on(e){return"__private_"+sn+++"_"+e}var cn=/*#__PURE__*/on("_listeners"),ln=/*#__PURE__*/on("_version"),dn=/*#__PURE__*/on("_name"),un=/*#__PURE__*/on("_icon"),pn=/*#__PURE__*/on("_injection"),mn=/*#__PURE__*/on("_isPrivyWallet"),fn=/*#__PURE__*/on("_accounts"),gn=/*#__PURE__*/on("_on"),hn=/*#__PURE__*/on("_emit"),yn=/*#__PURE__*/on("_off"),wn=/*#__PURE__*/on("_connected"),vn=/*#__PURE__*/on("_connect"),An=/*#__PURE__*/on("_disconnect"),bn=/*#__PURE__*/on("_signMessage"),In=/*#__PURE__*/on("_signAndSendTransaction"),Tn=/*#__PURE__*/on("_signTransaction");function Sn(e,...n){rn(this,cn)[cn][e]?.forEach((e=>e.apply(null,n)))}function On(e,n){rn(this,cn)[cn][e]=rn(this,cn)[cn][e]?.filter((e=>n!==e))}const kn=/*#__PURE__*/Ie.span.withConfig({displayName:"CircleBackground",componentId:"sc-c9f33cd-0"})(["&&{width:82px;height:82px;border-width:4px;border-style:solid;border-color:",";background-color:",";border-radius:50%;display:inline-block;box-sizing:border-box;}"],(e=>e.color??"var(--privy-color-accent)"),(e=>e.color??"var(--privy-color-accent)")),Cn=({instruction:s,fees:o,transactionInfo:c,solPrice:l,chain:d})=>/*#__PURE__*/Y(e,{children:[c?.action&&/*#__PURE__*/Y(n,{children:[/*#__PURE__*/K(t,{children:"Action"}),/*#__PURE__*/K(a,{children:c.action})]}),null!=s?.total&&/*#__PURE__*/Y(n,{children:[/*#__PURE__*/K(t,{children:"Total"}),/*#__PURE__*/K(a,{children:s.total})]}),!s?.total&&null!=s?.amount&&/*#__PURE__*/Y(n,{children:[/*#__PURE__*/K(t,{children:"Total"}),/*#__PURE__*/K(a,{children:/*#__PURE__*/K(i,{quantities:[s.amount,o],tokenPrice:l})})]}),/*#__PURE__*/Y(n,{children:[/*#__PURE__*/K(t,{children:"Fees"}),/*#__PURE__*/K(a,{children:/*#__PURE__*/K(i,{quantities:[o],tokenPrice:l})})]}),s?.to&&/*#__PURE__*/Y(n,{children:[/*#__PURE__*/K(t,{children:"To"}),/*#__PURE__*/K(a,{children:/*#__PURE__*/K(r,{walletAddress:s.to,chainId:d,chainType:"solana"})})]})]}),En=({fees:e,onClose:n,receiptHeader:t,receiptDescription:a,transactionInfo:i,solPrice:r,signOnly:p,instruction:m,chain:f})=>/*#__PURE__*/Y(G,{children:[/*#__PURE__*/K(s,{onClose:n}),/*#__PURE__*/K(o,{style:{marginBottom:"16px"},children:/*#__PURE__*/Y("div",{children:[/*#__PURE__*/K(kn,{color:"var(--privy-color-success-light)"}),/*#__PURE__*/K(z,{height:38,width:38,strokeWidth:2,stroke:"var(--privy-color-success)"})]})}),/*#__PURE__*/K(c,{title:t??`Transaction ${p?"signed":"complete"}!`,description:a??"You're all set."}),/*#__PURE__*/K(Cn,{solPrice:r,instruction:m,fees:e,transactionInfo:i,chain:f}),/*#__PURE__*/K(l,{}),/*#__PURE__*/K(xn,{loading:!1,onClick:n,children:"Close"}),/*#__PURE__*/K(d,{}),/*#__PURE__*/K(u,{})]});let xn=/*#__PURE__*/Ie(p).withConfig({displayName:"SubmitButton",componentId:"sc-3cb7ee42-0"})(["&&{margin-top:24px;}transition:color 350ms ease,background-color 350ms ease;"]);function Fn(e){return new Uint8Array(Te().decode(e).messageBytes)}async function _n(e,n){try{return await e}catch{return n}}const Pn=(...e)=>{if("undefined"==typeof Buffer)throw new se("Buffer is not defined.",void 0,oe.BUFFER_NOT_DEFINED);return Buffer.from(...e)};function Un(e){switch(e){case"solana:mainnet":return"mainnet-beta";case"solana:devnet":return"devnet";case"solana:testnet":return"testnet"}}async function Wn({privyClient:e,chain:n,mint:t}){let a=m[n];if(!a[t]){let i=await e.getSplTokenMetadata({mintAddress:t,cluster:Un(n)});i&&(a[t]={address:t,symbol:i.symbol,decimals:i.decimals})}return a[t]}async function Mn({solanaClient:e,tx:n}){let t=_e().decode(Fn(n)),{value:a}=await e.rpc.getFeeForMessage(t).send();return a??0n}async function jn({solanaClient:e,tx:n,replaceRecentBlockhash:t}){let{value:a}=await e.rpc.simulateTransaction(_e().decode(n),{commitment:"confirmed",encoding:"base64",sigVerify:!1,replaceRecentBlockhash:t}).send();if("BlockhashNotFound"===a.err&&t)throw Error("Simulation failed: Blockhash not found");return"BlockhashNotFound"===a.err?await jn({solanaClient:e,tx:n,replaceRecentBlockhash:!0}):{logs:a.logs??[],error:a.err,hasError:!!a.err,hasFunds:a.logs?.every((e=>!/insufficient funds/gi.test(e)&&!/insufficient lamports/gi.test(e)))??!0}}async function Bn({tx:e,solanaClient:n,privyClient:t,checkFunds:a}){let i=Oe().decode(Fn(e)),r=i.staticAccounts[0]??"",s=await Mn({solanaClient:n,tx:e}),o=a?await _n(jn({solanaClient:n,tx:e})):void 0,c=o?.hasFunds??!0,l={},d=[],u=await async function({solanaClient:e,message:n}){if(!("addressTableLookups"in n)||!n.addressTableLookups)return[...n.staticAccounts];let t=n.addressTableLookups.map((e=>e.lookupTableAddress)),a=await Pe(t,e.rpc),i=t.map(((e,t)=>[...n.addressTableLookups[t]?.writableIndexes.map((n=>{let i=a[e]?.[n];if(i)return{key:i,isWritable:!0,altIdx:t}}))??[],...n.addressTableLookups[t]?.readonlyIndexes.map((n=>{let i=a[e]?.[n];if(i)return{key:i,isWritable:!1,altIdx:t}}))??[]])).flat().filter((e=>!!e)).sort(((e,n)=>e.isWritable!==n.isWritable?e.isWritable?-1:1:e.altIdx-n.altIdx)).map((({key:e})=>e));return[...n.staticAccounts,...i]}({solanaClient:n,message:i});for(let e of i.instructions){let a=i.staticAccounts[e.programAddressIndex]||"";if(a!==f&&a!==g)if(a!==h){if(a===y){let n=await _n(function(e,n,t){let[a,i,r,s]=e.accountIndices?.map((e=>n[e]))??[];return{type:"ata-creation",program:t,payer:a,ata:i,owner:r,mint:s}}(e,u,a));if(!n){d.push({type:"unknown",program:a,discriminator:e.data?.[0]});continue}if(d.push(n),n.ata&&n.owner&&n.mint){l[n.ata]={owner:n.owner,mint:n.mint};continue}}if(w.includes(a)){let i=await _n($n(e,u,n,t,a));if(!i){d.push({type:"unknown",program:a,discriminator:e.data?.[0]});continue}d.push(i)}else if(v.includes(a)){let i=await _n(Rn(e,u,n,t,a));if(!i){d.push({type:"unknown",program:a,discriminator:e.data?.[0]});continue}d.push(i)}else d.push({type:"unknown",program:a,discriminator:e.data?.[0]})}else{let n=await _n(Nn(e,u));if(!n){d.push({type:"unknown",program:a,discriminator:e.data?.[0]});continue}d.push(n)}else{let i=await _n(Ln(e,u,n,t,l,a));if(!i){d.push({type:"unknown",program:a,discriminator:e.data?.[0]});continue}d.push(i),"spl-transfer"===i.type&&(i.fromAta&&i.fromAccount&&i.token.address&&(l[i.fromAta]??={owner:i.fromAccount,mint:i.token.address}),i.toAta&&i.toAccount&&i.token.address&&(l[i.toAta]??={owner:i.toAccount,mint:i.token.address}))}}return{spender:r,fee:s,instructions:d,hasFunds:!!c}}function Dn(e,n=0){try{return function(e,n=0){let t=0n;for(let a=0;a<8;a++)t|=BigInt(e[n+a])<<BigInt(8*a);return t}(e,n)}catch{}try{return e.readBigInt64LE(n)}catch{}let t=Pn(e);try{return((e,n=0)=>{let t=e[n],a=e[n+7];if(!t||!a)throw Error(`Buffer offset out of range: first: ${t}, last: ${a}.`);return(BigInt(e[n+4]+256*e[n+5]+65536*e[n+6]+(a<<24))<<32n)+BigInt(t+256*e[++n]+65536*e[++n]+16777216*e[++n])})(t)}catch{}try{return t.subarray(n).readBigInt64LE()}catch{}try{return t.readBigInt64LE(n)}catch{}return 0n}async function Ln(e,n,t,a,i,r){let s=e.data?.[0],o=e.accountIndices?.map((e=>n[e]))??[];if(1===s){let[e,n,t]=o;return{type:"spl-init-account",program:r,account:e,mint:n,owner:t}}if(3===s){let n,s,[c,l,d]=o,u="",p=l?i[l]:void 0;if(p)n=p.owner,u=p.mint;else if(l){let e=await t.rpc.getAccountInfo(l,{commitment:"confirmed",encoding:"jsonParsed"}).send(),a=e.value?.data;n=a?.parsed?.info?.owner,u=a?.parsed?.info?.mint??"",s=a?.parsed?.info?.tokenAmount?.decimals}if(!u&&c){let e=await t.rpc.getAccountInfo(c,{commitment:"confirmed",encoding:"jsonParsed"}).send(),n=e.value?.data;u=n?.parsed?.info?.mint??""}let m=await Wn({privyClient:a,chain:t.chain,mint:u}),f=m?.symbol??"";return s??=m?.decimals??9,{type:"spl-transfer",program:r,fromAta:c,fromAccount:d,toAta:l,toAccount:n,value:Dn(e.data,1),token:{symbol:f,decimals:s,address:u}}}if(9===s){let[e,n,t]=o;return{type:"spl-close-account",program:r,source:e,destination:n,owner:t}}if(17===s)return{type:"spl-sync-native",program:r};throw Error(`Token program instruction type ${s} not supported`)}async function Nn(e,n){let t=e.data?.[0],a=e.accountIndices?.map((e=>n[e]))??[];if(0===t){let[,n]=a;return{type:"create-account",program:h,account:n?.toString(),value:Dn(e.data,4),withSeed:!1}}if(2===t){let[n,t]=a;return{type:"sol-transfer",program:h,fromAccount:n,toAccount:t,token:{symbol:"SOL",decimals:9},value:Dn(e.data,4),withSeed:!1}}if(3===t){let[,n]=a;return{type:"create-account",program:h,account:n,withSeed:!0,value:Dn(e.data.slice(e.data.length-32-8-8))}}if(11===t){let[n,t]=a;return{type:"sol-transfer",program:h,fromAccount:n,toAccount:t,value:Dn(e.data,4),token:{symbol:"SOL",decimals:9},withSeed:!0}}throw Error(`System program instruction type ${t} not supported`)}async function $n(e,n,t,a,i){let r=e.accountIndices?.map((e=>n[e]))??[],s=e.data?.[0];if(143===s){let n=r[10],s=r[11];return{type:"raydium-swap-base-input",program:i,mintIn:n,mintOut:s,tokenIn:n?await Wn({privyClient:a,chain:t.chain,mint:n}):void 0,tokenOut:s?await Wn({privyClient:a,chain:t.chain,mint:s}):void 0,amountIn:Dn(e.data,8),minimumAmountOut:Dn(e.data,16)}}if(55===s){let n=r[10],s=r[11];return{type:"raydium-swap-base-output",program:i,mintIn:n,mintOut:s,tokenIn:n?await Wn({privyClient:a,chain:t.chain,mint:n}):void 0,tokenOut:s?await Wn({privyClient:a,chain:t.chain,mint:s}):void 0,maxAmountIn:Dn(e.data,8),amountOut:Dn(e.data,16)}}throw Error(`Raydium swap program instruction type ${s} not supported`)}async function Rn(e,n,t,a,i){let r=e.data?.[0],s=e.accountIndices?.map((e=>n[e]))??[];if([208,51,239,151,123,43,237,92].includes(r)){let n=s[5],r=s[6];return{type:"jupiter-swap-exact-out-route",program:i,mintIn:n,mintOut:r,tokenIn:n?await Wn({privyClient:a,chain:t.chain,mint:n}):void 0,tokenOut:r?await Wn({privyClient:a,chain:t.chain,mint:r}):void 0,outAmount:Dn(e.data,e.data.length-1-2-8-8),quotedInAmount:Dn(e.data,e.data.length-1-2-8)}}if([176,209,105,168,154,125,69,62].includes(r)){let n=s[7],r=s[8];return{type:"jupiter-swap-exact-out-route",program:i,mintIn:n,mintOut:r,tokenIn:n?await Wn({privyClient:a,chain:t.chain,mint:n}):void 0,tokenOut:r?await Wn({privyClient:a,chain:t.chain,mint:r}):void 0,outAmount:Dn(e.data,e.data.length-1-2-8-8),quotedInAmount:Dn(e.data,e.data.length-1-2-8)}}if([193,32,155,51,65,214,156,129].includes(r)){let n=s[7],r=s[8];return{type:"jupiter-swap-shared-accounts-route",program:i,mintIn:n,mintOut:r,tokenIn:n?await Wn({privyClient:a,chain:t.chain,mint:n}):void 0,tokenOut:r?await Wn({privyClient:a,chain:t.chain,mint:r}):void 0,inAmount:Dn(e.data,e.data.length-1-2-8-8),quotedOutAmount:Dn(e.data,e.data.length-1-2-8)}}throw[62,198,214,193,213,159,108,210].includes(r)&&console.warn("Jupiter swap program instruction 'claim' not implemented"),[116,206,27,191,166,19,0,73].includes(r)&&console.warn("Jupiter swap program instruction 'claim_token' not implemented"),[26,74,236,151,104,64,183,249].includes(r)&&console.warn("Jupiter swap program instruction 'close_token' not implemented"),[229,194,212,172,8,10,134,147].includes(r)&&console.warn("Jupiter swap program instruction 'create_open_orders' not implemented"),[28,226,32,148,188,136,113,171].includes(r)&&console.warn("Jupiter swap program instruction 'create_program_open_orders' not implemented"),[232,242,197,253,240,143,129,52].includes(r)&&console.warn("Jupiter swap program instruction 'create_token_ledger' not implemented"),[147,241,123,100,244,132,174,118].includes(r)&&console.warn("Jupiter swap program instruction 'create_token_account' not implemented"),[229,23,203,151,122,227,173,42].includes(r)&&console.warn("Jupiter swap program instruction 'route' not implemented"),[150,86,71,116,167,93,14,104].includes(r)&&console.warn("Jupiter swap program instruction 'route_with_token_ledger' not implemented"),[228,85,185,112,78,79,77,2].includes(r)&&console.warn("Jupiter swap program instruction 'set_token_ledger' not implemented"),[230,121,143,80,119,159,106,170].includes(r)&&console.warn("Jupiter swap program instruction 'shared_accounts_route_with_token_ledger' not implemented"),Error(`Jupiter swap program instruction type ${r} not supported`)}async function Vn({rpcSubscriptions:e,signature:n,timeout:t}){let a=new AbortController,i=await e.signatureNotifications(n,{commitment:"confirmed"}).subscribe({abortSignal:a.signal}),r=await Promise.race([new Promise((e=>{setTimeout((()=>{a.abort(),e(Error("Transaction confirmation timed out"))}),t)})),new Promise((async e=>{for await(let n of i){if(a.abort(),n.value.err)return e(Error("Transaction confirmation failed"));e(void 0)}}))]);if(r instanceof Error)throw r}function Jn({rpc:e,rpcSubscriptions:n,chain:t,blockExplorerUrl:a}){let i=function({rpc:e,rpcSubscriptions:n}){return async t=>new Promise((async(a,i)=>{try{let i=await e.sendTransaction(Pn(t).toString("base64"),{preflightCommitment:"confirmed",encoding:"base64"}).send();await Vn({rpcSubscriptions:n,signature:i,timeout:1e4}),a({signature:new Uint8Array(Ue().encode(i))})}catch(e){i(e)}}))}({rpc:e,rpcSubscriptions:n});return{rpc:e,rpcSubscriptions:n,chain:t,blockExplorerUrl:a,sendAndConfirmTransaction:i}}function Qn(){let e=A(),n=Z((()=>Object.fromEntries(["solana:mainnet","solana:devnet","solana:testnet"].map((n=>[n,e.solanaRpcs[n]?Jn({chain:n,rpc:e.solanaRpcs[n].rpc,rpcSubscriptions:e.solanaRpcs[n].rpcSubscriptions,blockExplorerUrl:e.solanaRpcs[n].blockExplorerUrl??`https://explorer.solana.com?cluster=${n.replace("solana:","")}`}):null])))),[e.solanaRpcs]);return X((e=>{if(!n[e])throw Error(`No RPC configuration found for chain ${e}`);return n[e]}),[n])}const qn={component:()=>{let{data:e,onUserCloseViaDialogOrKeybindRef:n,setModalData:t,navigate:a}=b(),{client:i,closePrivyModal:r,walletProxy:s,showFiatPrices:o}=ce(),c=A(),{user:l}=de(),d=Qn()(e?.standardSignAndSendTransaction?.chain??"solana:mainnet"),[u,p]=ee(e?.standardSignAndSendTransaction?.transaction),[m,f]=ee(),[g,h]=ee(),[y,w]=ee({value:0n,isLoading:!1}),[v,x]=ee(!1),[F,_]=ee({}),[P,U]=ee(),W=e?.standardSignAndSendTransaction?.account,M=!!e?.standardSignAndSendTransaction?.signOnly,j=W?.imported?ue(l).find((e=>e.address===W.address)):pe(l),{solPrice:B,isSolPriceLoading:D}=I({enabled:o}),L=Z((()=>{if(!m)return;let e=m.spender,n=T(m.fee),t=T(y.value,3,!0),a=m.instructions.filter((e=>["sol-transfer","spl-transfer","raydium-swap-base-input","raydium-swap-base-output","jupiter-swap-shared-accounts-route","jupiter-swap-exact-out-route"].includes(e.type))),i=a.at(0);if(!i||a.length>1)return{fee:n,spender:e,balance:t};if("sol-transfer"===i.type)return{fee:n,spender:e,balance:t,total:T(i.value)};if("spl-transfer"===i.type)return{fee:n,spender:e,balance:t,total:`${te({amount:i.value,decimals:i.token.decimals})} ${i.token.symbol}`};if("raydium-swap-base-input"===i.type&&i.tokenIn&&i.tokenOut){return{fee:n,spender:e,balance:t,swap:`${`${te({amount:i.amountIn,decimals:i.tokenIn.decimals})} ${i.tokenIn.symbol}`} → ${`${te({amount:i.minimumAmountOut,decimals:i.tokenOut.decimals})} ${i.tokenOut.symbol}`}`}}if("raydium-swap-base-output"===i.type&&i.tokenIn&&i.tokenOut){return{fee:n,spender:e,balance:t,swap:`${`${te({amount:i.maxAmountIn,decimals:i.tokenIn.decimals})} ${i.tokenIn.symbol}`} → ${`${te({amount:i.amountOut,decimals:i.tokenOut.decimals})} ${i.tokenOut.symbol}`}`}}if("jupiter-swap-shared-accounts-route"===i.type&&i.tokenIn&&i.tokenOut){return{fee:n,spender:e,balance:t,swap:`${`${te({amount:i.inAmount,decimals:i.tokenIn.decimals})} ${i.tokenIn.symbol}`} → ${`${te({amount:i.quotedOutAmount,decimals:i.tokenOut.decimals})} ${i.tokenOut.symbol}`}`}}if("jupiter-swap-exact-out-route"===i.type&&i.tokenIn&&i.tokenOut){return{fee:n,spender:e,balance:t,swap:`${`${te({amount:i.quotedInAmount,decimals:i.tokenIn.decimals})} ${i.tokenIn.symbol}`} → ${`${te({amount:i.outAmount,decimals:i.tokenOut.decimals})} ${i.tokenOut.symbol}`}`}}return{fee:n,spender:e,balance:t}}),[m,W?.address,y]),N=Z((()=>{let e;if(!m||!o||!B||D)return;function n(...e){return C(e.reduce(((e,n)=>e+n),0n),B??0)}W?.address===m.spender&&(e=n(m.fee));let t=n(y.value),a=m.instructions.filter((e=>"sol-transfer"===e.type||"spl-transfer"===e.type)).at(0);return!a||m.instructions.length>1?{fee:e,balance:t}:"sol-transfer"===a.type?{fee:e,balance:t,total:n(a.value,W?.address===m.spender?m.fee:0n)}:"spl-transfer"===a.type?{fee:e,balance:t,total:`${te({amount:a.value,decimals:a.token.decimals})} ${a.token.symbol}`}:{fee:e,balance:t}}),[m,o,B,D,W?.address,y]);if(ne((()=>{!async function(){if(u&&i)try{h(void 0);let e=await Bn({tx:u,solanaClient:d,privyClient:i,checkFunds:!M});f(e)}catch(e){console.error("Failed to prepare transaction",e),h(e)}}()}),[u,d,i,M]),ne((()=>{(async function(){if(!W)return;w({value:y.value,isLoading:!0});let{value:e}=await d.rpc.getBalance(W.address,{commitment:"confirmed"}).send();w({value:e??0n,isLoading:!1})})().catch(console.error)}),[m]),!u||!e?.standardSignAndSendTransaction||!W){let n=Error("Invalid transaction request");/*#__PURE__*/return K(S,{error:n,allowlistConfig:c.allowlistConfig,onRetry:()=>{e?.standardSignAndSendTransaction?.onFailure(n),r({shouldCallAuthOnSuccess:!1})}})}let $=()=>{if(!v)return F.signature||F.signedTransaction?e?.standardSignAndSendTransaction?.onSuccess({signature:F.signature,signedTransaction:F.signedTransaction}):e?.standardSignAndSendTransaction?.onFailure(P??g??Error("User exited the modal before submitting the transaction")),r({shouldCallAuthOnSuccess:!1})};n.current=$;let R=e.standardSignAndSendTransaction?.uiOptions?.transactionInfo?.contractInfo?.imgUrl?/*#__PURE__*/K("img",{src:e.standardSignAndSendTransaction.uiOptions.transactionInfo.contractInfo.imgUrl,alt:e.standardSignAndSendTransaction.uiOptions.transactionInfo.contractInfo.imgAltText}):null,V=!!(e.funding&&e.funding.supportedOptions.length>0),J=!m?.hasFunds&&V;if(F.signature||F.signedTransaction){let n=m?.instructions.filter((e=>"sol-transfer"===e.type||"spl-transfer"===e.type)),t=1===n?.length?n?.at(0):void 0;/*#__PURE__*/return K(En,{fees:F.fees??0n,onClose:$,transactionInfo:e.standardSignAndSendTransaction?.uiOptions.transactionInfo,solPrice:B,receiptHeader:e.standardSignAndSendTransaction?.uiOptions.successHeader,receiptDescription:e.standardSignAndSendTransaction?.uiOptions.successDescription,chain:d.chain,signOnly:M,instruction:"sol-transfer"===t?.type?{to:t.toAccount,amount:t.value}:{to:t?.toAccount||t?.toAta,total:L?.total}})}return P?/*#__PURE__*/K(O,{transactionError:P,chainId:d.chain,onClose:$,chainType:"solana",onRetry:async()=>{U(void 0);let{value:e}=await d.rpc.getLatestBlockhash().send();p(function(e,n){return Se(Oe().decode(Fn(e)),(e=>ke(e)),(e=>Ce(n,e)),(e=>Ee(e)),(e=>new Uint8Array(xe().encode(e))))}(u,e))}}):/*#__PURE__*/K(k,{img:R,title:e.standardSignAndSendTransaction?.uiOptions?.transactionInfo?.title||"Confirm transaction",subtitle:e.standardSignAndSendTransaction?.uiOptions?.description||`${c.name} wants your permission to approve the following transaction.`,cta:J?"Add funds":e.standardSignAndSendTransaction?.uiOptions?.buttonText||"Approve",instructions:m?.instructions??[],network:"solana:mainnet"==d.chain?"Solana":d.chain.replace("solana:",""),blockExplorerUrl:d.blockExplorerUrl,total:o?N?.total:L?.total,fee:o?N?.fee:L?.fee,balance:o?N?.balance:L?.balance,swap:L?.swap,transactingWalletAddress:W.address,disabled:!m?.hasFunds&&!V,isSubmitting:v,isPreparing:!m||y.isLoading,isTokenPriceLoading:o&&D,isMissingFunds:!m?.hasFunds,submitError:P??void 0,parseError:g,onClick:J?async()=>{if(W){if(!V)throw Error("Funding wallet is not enabled");t({...e,funding:{...e.funding,methodScreen:E},solanaFundingData:e?.solanaFundingData}),a(E)}}:async()=>{try{if(x(!0),v||!W||!s||!l||!j)return;let n=await e.standardSignAndSendTransaction.onConfirm(u);if("signature"in n){let e=await async function({solanaClient:e,signature:n}){let t=Fe().decode(n),a=await e.rpc.getTransaction(t,{maxSupportedTransactionVersion:0,commitment:"confirmed",encoding:"base64"}).send().catch((()=>null));return a?{fee:a.meta?.fee??0n}:null}({solanaClient:d,signature:n.signature});return void _({...n,fees:e?.fee})}_(n)}catch(e){console.warn({transaction:u,error:e}),U(e)}finally{x(!1)}},onClose:$})}};function Hn(e,n,t){let a=structuredClone(Te().decode(e)),i=We(n);return i in a.signatures&&(a.signatures[i]=t),new Uint8Array(xe().encode(a))}function Kn(){let{isHeadlessSigning:e,walletProxy:n,initializeWalletProxy:t,recoverEmbeddedWallet:a,openModal:i,privy:r,client:s}=ce(),{user:o}=ye(),{setModalData:c}=b(),{signWithUserSigner:l}=De();return{signMessage:({message:d,address:u,options:p})=>new Promise((async(m,f)=>{let g=me(o,u);if("privy"!==g?.walletClientType)return void f(new se("Wallet is not a Privy wallet",void 0,oe.EMBEDDED_WALLET_NOT_FOUND));let{entropyId:h,entropyIdVerifier:y}=x(o,g),w=fe(g),v=Pn(d).toString("base64");if(v.length<1)return void f(new se("Message must be a non-empty string",void 0,oe.INVALID_MESSAGE));let A=async()=>{let e;if(!o)throw Error("User must be authenticated before signing with a Privy wallet");let i=await s.getAccessToken();if(!i)throw Error("User must be authenticated to use their embedded wallet.");let c=n??await t(15e3);if(!c)throw Error("Failed to initialize embedded wallet proxy.");if(!await a({address:g.address}))throw Error("Unable to connect to wallet");if(w){let n=await ae(r,l,{chain_type:"solana",method:"signMessage",params:{message:v,encoding:"base64"},wallet_id:g.id});if(!n.data||!("signature"in n.data))throw Error("Failed to sign message");e=n.data.signature}else{let{response:n}=await c.rpc({accessToken:i,entropyId:h,entropyIdVerifier:y,chainType:"solana",hdWalletIndex:g.walletIndex??0,requesterAppId:p?.uiOptions?.requesterAppId,request:{method:"signMessage",params:{message:v}}});e=n.data.signature}return e};if(e({showWalletUIs:p?.uiOptions?.showWalletUIs}))try{let e=await A(),n=new Uint8Array(Pn(e,"base64"));m({signature:n})}catch(e){f(e)}else c({signMessage:{method:"solana_signMessage",data:v,confirmAndSign:A,onSuccess:e=>{m({signature:new Uint8Array(Pn(e,"base64"))})},onFailure:e=>{f(e)},uiOptions:p?.uiOptions??{}},connectWallet:{recoveryMethod:g.recoveryMethod,connectingWalletAddress:g.address,entropyId:h,entropyIdVerifier:y,isUnifiedWallet:w,onCompleteNavigateTo:F,onFailure:e=>{f(new se("Failed to connect to wallet",e,oe.UNKNOWN_CONNECT_WALLET_ERROR))}}}),i(_)}))}}function Yn(){let{isHeadlessSigning:e,openModal:n}=ce(),{setModalData:t}=b(),{signMessage:a}=Kn(),{user:i}=ye();return{signTransaction:async({transaction:r,options:s,chain:o="solana:mainnet",address:c})=>{async function l(e){let{signature:n}=await a({message:Fn(e),address:c,options:{...s,uiOptions:{...s?.uiOptions,showWalletUIs:!1}}});return{signedTransaction:Hn(e,c,n)}}return e({showWalletUIs:s?.uiOptions?.showWalletUIs})?l(r):new Promise((async(e,a)=>{let d=me(i,c);if("privy"!==d?.walletClientType)return void a(new se("Wallet is not a Privy wallet",void 0,oe.EMBEDDED_WALLET_NOT_FOUND));let{entropyId:u,entropyIdVerifier:p}=x(i,d),m=fe(d);function f(e){return n=>{a(n instanceof se?n:new se("Failed to connect to wallet",n,e))}}let g={account:d,transaction:r,chain:o,signOnly:!0,uiOptions:s?.uiOptions||{},onConfirm:l,onSuccess:e,onFailure:f(oe.TRANSACTION_FAILURE)};t({connectWallet:{recoveryMethod:d.recoveryMethod,connectingWalletAddress:d.address,entropyId:u,entropyIdVerifier:p,isUnifiedWallet:m,onCompleteNavigateTo:qn,onFailure:f(oe.UNKNOWN_CONNECT_WALLET_ERROR)},standardSignAndSendTransaction:g}),n(_)}))}}}let Gn=new class extends Ae{setImplementation(e){Qe(this,He)[He]=e}async signMessage(e){return Qe(this,He)[He].signMessage(e)}async signAndSendTransaction(e){return Qe(this,He)[He].signAndSendTransaction(e)}async signTransaction(e){return Qe(this,He)[He].signTransaction(e)}constructor(e){super(),Object.defineProperty(this,He,{writable:!0,value:void 0}),Qe(this,He)[He]=e}}({signTransaction:le("signTransaction was not injected"),signAndSendTransaction:le("signAndSendTransaction was not injected"),signMessage:le("signMessage was not injected")}),zn=new class{get version(){return rn(this,ln)[ln]}get name(){return rn(this,dn)[dn]}get icon(){return rn(this,un)[un]}get chains(){return Je.slice()}get features(){return{"standard:connect":{version:"1.0.0",connect:rn(this,vn)[vn]},"standard:disconnect":{version:"1.0.0",disconnect:rn(this,An)[An]},"standard:events":{version:"1.0.0",on:rn(this,gn)[gn]},"solana:signAndSendTransaction":{version:"1.0.0",supportedTransactionVersions:["legacy",0],signAndSendTransaction:rn(this,In)[In]},"solana:signTransaction":{version:"1.0.0",supportedTransactionVersions:["legacy",0],signTransaction:rn(this,Tn)[Tn]},"solana:signMessage":{version:"1.0.0",signMessage:rn(this,bn)[bn]},"privy:":{privy:{signMessage:rn(this,pn)[pn].signMessage,signTransaction:rn(this,pn)[pn].signTransaction,signAndSendTransaction:rn(this,pn)[pn].signAndSendTransaction}}}}get accounts(){return rn(this,fn)[fn].slice()}get isPrivyWallet(){return rn(this,mn)[mn]}constructor({name:e,icon:n,version:t,injection:a,wallets:i}){Object.defineProperty(this,hn,{value:Sn}),Object.defineProperty(this,yn,{value:On}),Object.defineProperty(this,cn,{writable:!0,value:void 0}),Object.defineProperty(this,ln,{writable:!0,value:void 0}),Object.defineProperty(this,dn,{writable:!0,value:void 0}),Object.defineProperty(this,un,{writable:!0,value:void 0}),Object.defineProperty(this,pn,{writable:!0,value:void 0}),Object.defineProperty(this,mn,{writable:!0,value:void 0}),Object.defineProperty(this,fn,{writable:!0,value:void 0}),Object.defineProperty(this,gn,{writable:!0,value:void 0}),Object.defineProperty(this,wn,{writable:!0,value:void 0}),Object.defineProperty(this,vn,{writable:!0,value:void 0}),Object.defineProperty(this,An,{writable:!0,value:void 0}),Object.defineProperty(this,bn,{writable:!0,value:void 0}),Object.defineProperty(this,In,{writable:!0,value:void 0}),Object.defineProperty(this,Tn,{writable:!0,value:void 0}),rn(this,cn)[cn]={},rn(this,gn)[gn]=(e,n)=>(rn(this,cn)[cn][e]?.push(n)||(rn(this,cn)[cn][e]=[n]),()=>rn(this,yn)[yn](e,n)),rn(this,wn)[wn]=e=>{null!=e&&(rn(this,fn)[fn]=e.map((({address:e})=>new an({address:e,publicKey:be.decode(e)})))),rn(this,hn)[hn]("change",{accounts:this.accounts})},rn(this,vn)[vn]=async()=>(rn(this,hn)[hn]("change",{accounts:this.accounts}),{accounts:this.accounts}),rn(this,An)[An]=async()=>{rn(this,hn)[hn]("change",{accounts:this.accounts})},rn(this,bn)[bn]=async(...e)=>{let n=[];for(let{account:t,...a}of e){let{signature:e}=await rn(this,pn)[pn].signMessage({...a,address:t.address});n.push({signedMessage:a.message,signature:e})}return n},rn(this,In)[In]=async(...e)=>{let n=[];for(let{transaction:t,account:a,options:i,chain:r}of e){let{signature:e}=await rn(this,pn)[pn].signAndSendTransaction({transaction:t,address:a.address,chain:r||"solana:mainnet",options:i});n.push({signature:e})}return n},rn(this,Tn)[Tn]=async(...e)=>{let n=[];for(let{transaction:t,account:a,options:i,chain:r}of e){let{signedTransaction:e}=await rn(this,pn)[pn].signTransaction({transaction:t,address:a.address,chain:r||"solana:mainnet",options:i});n.push({signedTransaction:e})}return n},rn(this,dn)[dn]=e,rn(this,un)[un]=n,rn(this,ln)[ln]=t,rn(this,pn)[pn]=a,rn(this,fn)[fn]=[],rn(this,mn)[mn]=!0,a.on("accountChanged",rn(this,wn)[wn],this),rn(this,wn)[wn](i)}}({name:"Privy",version:"1.0.0",icon:"data:image/png;base64,AAABAAEAFBQAAAAAIABlAQAAFgAAAIlQTkcNChoKAAAADUlIRFIAAAAUAAAAFAgGAAAAjYkdDQAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAQVJREFUeJxiYMANZIC4E4ivAPFPIP4FxDeAuB+IlfDowwBMQFwJxF+B+D8O/AOI66Bq8QJGIF6ExyB0vAqImfEZmEeCYTDcgMswPiB+T4aB34FYApuBsWQYBsP52AycToGBK7EZuJECAw9jM3AVBQbuwWZgIwUGTsZmoDkFBnpiMxAEjpJh2FV8iVsbiD+TYBgoDVrgMgwGnID4HRGGgTKBGyHDYEAaiBdCSxh0g/5AU4Q8sYYhAzEgjoGmABBOgFo2eACowFABYn0oVgViAVINkQTiZUD8DIj/ATF6GILEXgLxCiCWIsZAbiAuBeKtQHwHiEHJ6C8UfwHie0C8E4jLoWpRAAAAAP//rcbhsQAAAAZJREFUAwBYFs3VKJ0cuQAAAABJRU5ErkJggg==",wallets:[],injection:Gn});function Zn(){let{ready:e}=P(),{user:n}=ye(),{signMessage:t}=Kn(),{signTransaction:a}=Yn(),{signAndSendTransaction:i}=function(){let e=A(),{isHeadlessSigning:n,openModal:t}=ce(),{setModalData:a}=b(),{signTransaction:i}=Yn(),r=Qn(),{user:s}=ye();return{signAndSendTransaction:async({transaction:o,address:c,chain:l="solana:mainnet",options:d})=>{async function u(e){let{signedTransaction:n}=await i({transaction:e,address:c,chain:l,options:{...d,uiOptions:{...d?.uiOptions,showWalletUIs:!1}}}),{signature:t}=await r(l).sendAndConfirmTransaction(n);return{signature:t}}return n({showWalletUIs:d?.uiOptions?.showWalletUIs})?u(o):new Promise((async(n,i)=>{let r,p,m=me(s,c);if("privy"!==m?.walletClientType)return void i(new se("Wallet is not a Privy wallet",void 0,oe.EMBEDDED_WALLET_NOT_FOUND));let{entropyId:f,entropyIdVerifier:g}=x(s,m),h=fe(m);function y(e){return n=>{i(n instanceof se?n:new se("Failed to connect to wallet",n,e))}}let w={account:m,transaction:o,chain:l,signOnly:!1,uiOptions:d?.uiOptions||{},onConfirm:u,onSuccess:n,onFailure:y(oe.TRANSACTION_FAILURE)},v={recoveryMethod:m.recoveryMethod,connectingWalletAddress:m.address,entropyId:f,entropyIdVerifier:g,isUnifiedWallet:h,onCompleteNavigateTo:qn,onFailure:y(oe.UNKNOWN_CONNECT_WALLET_ERROR)};e.fundingConfig&&(r=we({address:c,appConfig:e,methodScreen:E,fundWalletConfig:{...d,asset:"native-currency",chain:l},externalSolanaFundingScreen:st}),p={amount:e.fundingConfig.defaultRecommendedAmount,asset:"SOL",chain:l,destinationAddress:c,afterSuccessScreen:qn,sourceWalletData:void 0}),a({connectWallet:v,standardSignAndSendTransaction:w,funding:r,solanaFundingData:p}),t(_)}))}}}(),r=Z((()=>{let e=[...ge(n).sort(((e,n)=>(e.walletIndex??0)-(n.walletIndex??0)))],t=ue(n);return t.length?[...e,...t]:e}),[n]),s=Z((()=>({signMessage:async({message:e,address:n,options:a})=>await t({message:e,address:n,options:a}),signTransaction:async({transaction:e,address:n,chain:t,options:i})=>await a({transaction:e,address:n,chain:t,options:i}),async signAndSendTransaction({transaction:e,address:n,chain:t,options:a}){let{signature:r}=await i({transaction:e,address:n,chain:t,options:a});return{signature:r}}})),[t,a,i]);return ne((()=>{Gn?.setImplementation(s)}),[s]),ne((()=>{var n;!e||(n=zn.accounts).length===r.length&&n.every(((e,n)=>e.address===r[n]?.address))||Gn?.emit("accountChanged",r)}),[e,r]),{ready:e,wallet:zn}}function Xn(){let{client:e}=ce(),{ready:n,wallet:t}=Zn(),[a,i]=ee([]),[r,s]=ee([]);return ne((()=>{let e=[t,...a.filter((e=>"solana"===e.chainType&&!!e.wallet.features)).map((e=>e.wallet))];s(e);let n=e.map((n=>n.features["standard:events"]?.on("change",(()=>{s([...e])}))));return()=>{n.forEach((e=>e?.()))}}),[a]),ne((()=>{if(!n)return;i(e.connectors?.walletConnectors.filter((e=>"solana"===e.chainType))??[]);let t=()=>{i(e.connectors?.walletConnectors.filter((e=>"solana"===e.chainType))??[])};return e.connectors?.on("connectorInitialized",t),()=>{e.connectors?.off("connectorInitialized",t)}}),[n,e.connectors]),{ready:n,wallets:r}}function et(){let{ready:e,wallets:n}=Xn();return{ready:e,wallets:Z((()=>n.flatMap((e=>e.accounts.map((n=>new ie({wallet:e,account:n})))))),[n])}}function nt(e){return Fe().decode(e)}function tt(e){return BigInt(Math.floor(1e9*parseFloat(e)))}function at(e){return+it.format(parseFloat(e.toString())/1e9)}let it=Intl.NumberFormat(void 0,{maximumFractionDigits:8});async function rt({tx:e,solanaClient:n,amount:t,asset:a,tokenPrice:i}){if(!e)return null;if("SOL"===a&&i){let a=tt(t),r=C(a,i),s=await Mn({solanaClient:n,tx:e});return{amountInUsd:r,feeInUsd:i?C(s,i):void 0,totalInUsd:C(a+s,i)}}if("USDC"===a&&i){let a="$"+t,r=await Mn({solanaClient:n,tx:e}),s=function(e,n){let t=parseFloat(e.toString())/W*n;return t<.01?0:t}(r,i);return{amountInUsd:a,feeInUsd:C(r,i),totalInUsd:"$"+(parseFloat(t)+s).toFixed(2)}}if("SOL"===a){let a=tt(t),i=await Mn({solanaClient:n,tx:e});return{amountInSol:t+" SOL",feeInSol:at(i)+" SOL",totalInSol:at(a+i)+" SOL"}}return{amountInUsdc:t+" USDC",feeInSol:at(await Mn({solanaClient:n,tx:e}))+" SOL"}}const st={component:function(){let e=A(),{closePrivyModal:n,createAnalyticsEvent:t}=ce(),{data:a,setModalData:i,navigate:r}=b(),{wallets:s}=et(),[o,l]=ee("preparing"),[m,g]=ee(),[h,y]=ee(),[w,v]=ee();if(!a?.solanaFundingData)throw Error("Funding config is missing");if(!a.solanaFundingData.sourceWalletData)throw Error("Funding config is missing source wallet data");let{amount:I,asset:T,chain:S,sourceWalletData:O,destinationAddress:k,afterSuccessScreen:E}=a.solanaFundingData,x=s.find((e=>e.address===O.address&&M(O.walletClientType)===M(e.standardWallet.name))),F=Qn()(S),{tokenPrice:_,isTokenPriceLoading:P}=j("solana");return ne((()=>{if("preparing"!==o||P||!x)return;let e="SOL"===T?tt(I):function(e){return BigInt(Math.floor(1e6*parseFloat(e)))}(I);y({amount:("SOL"===T&&_?C(e,_):I)??I}),("SOL"===T?async function({solanaClient:e,source:n,destination:t,amountInLamports:a}){let{value:i}=await e.rpc.getLatestBlockhash().send(),r={address:n},s=Se(Me({version:0}),(e=>je(r,e)),(e=>Ce(i,e)),(e=>Be(Le({amount:a,source:r,destination:t}),e)),(e=>Ee(e)));return new Uint8Array(xe().encode(s))}({solanaClient:F,source:x.address,destination:k,amountInLamports:e}):async function({solanaClient:e,source:n,destination:t,amountInBaseUnits:a}){let i=U(e.chain),{value:r}=await e.rpc.getLatestBlockhash().send(),s={address:n},[o]=await Ne({mint:i,owner:n,tokenProgram:f}),[c]=await Ne({mint:i,owner:t,tokenProgram:f}),[l,d]=await Promise.all([e.rpc.getAccountInfo(o,{commitment:"confirmed",encoding:"jsonParsed"}).send().catch((()=>null)),e.rpc.getAccountInfo(c,{commitment:"confirmed",encoding:"jsonParsed"}).send().catch((()=>null))]);if(!l?.value)throw Error(`Source token account does not exist for address: ${n}`);let u=$e({payer:s,ata:c,owner:t,mint:i}),p=Se(Me({version:0}),(e=>je(s,e)),(e=>Ce(r,e)),(e=>d?.value?e:Be(u,e)),(e=>Be(Re({source:o,destination:c,authority:s,amount:a}),e)),(e=>Ee(e)));return new Uint8Array(xe().encode(p))}({solanaClient:F,source:x.address,destination:k,amountInBaseUnits:e})).then(g).catch((e=>{l("error"),v(e)}))}),[o,I,T,S,x,k,P,_]),ne((()=>{"preparing"===o&&m&&rt({tx:m,solanaClient:F,amount:I,asset:T,tokenPrice:_}).then((e=>{l("loaded"),y({amount:e?.amountInUsd??e?.amountInUsdc??e?.amountInSol??I,fee:e?.feeInUsd??e?.feeInSol,total:e?.totalInUsd??e?.totalInSol})})).catch((e=>{l("error"),v(e)}))}),[m,I,T,o,_]),ne((()=>{"error"===o&&w&&(i({errorModalData:{error:w,previousScreen:st},solanaFundingData:a.solanaFundingData}),r(B,!1))}),[o,r]),ne((()=>{if("success"!==o)return;let e=setTimeout(E?()=>r(E):n,D);return()=>clearTimeout(e)}),[o]),/*#__PURE__*/Y(G,"success"===o?{children:[/*#__PURE__*/K(L,{}),/*#__PURE__*/K(N,{}),/*#__PURE__*/Y($,{children:[/*#__PURE__*/K(z,{color:"var(--privy-color-success)",width:"64px",height:"64px"}),/*#__PURE__*/K(c,{title:"Success!",description:`You’ve successfully added ${I} ${T} to your ${e.name} wallet. It may take a minute before the funds are available to use.`})]}),/*#__PURE__*/K(d,{}),/*#__PURE__*/K(u,{})]}:"preparing"===o||"loaded"===o||"sending"===o?{children:[/*#__PURE__*/K(L,{}),/*#__PURE__*/K(R,{style:{marginTop:"16px"},children:/*#__PURE__*/K(V,{icon:x?.standardWallet.icon,name:x?.standardWallet.name})}),/*#__PURE__*/K(c,{style:{marginTop:"8px",marginBottom:"12px"},title:"sending"===o&&x?`Confirming with ${x.standardWallet.name}`:"Confirm transaction"}),/*#__PURE__*/K(Ve,{rows:[{label:"Source",value:re(O.address)},{label:"Destination",value:re(k)},{label:"Network",value:J(S)},{label:"Amount",value:h?.amount,isLoading:"preparing"===o},{label:"Estimated fee",value:h?.fee,isLoading:"preparing"===o},{label:"Total",value:h?.total,isLoading:"preparing"===o}]}),/*#__PURE__*/K(p,{style:{marginTop:"1rem"},loading:"preparing"===o||"sending"===o,onClick:function(){"loaded"===o&&m&&x&&(l("sending"),async function({transaction:e,chain:n,sourceWallet:t,solanaClient:a}){let{hasFunds:i}=await jn({solanaClient:a,tx:e});if(!i)throw new se(`Wallet ${re(t.address)} does not have enough funds.`,void 0,oe.INSUFFICIENT_BALANCE);let r=nt((await t.signAndSendTransaction({transaction:e,chain:n}).catch((e=>{throw new se("Transaction was rejected by the user",e,oe.TRANSACTION_FAILURE)}))).signature);return await Vn({rpcSubscriptions:a.rpcSubscriptions,signature:r,timeout:2e4}),r}({solanaClient:F,transaction:m,chain:S,sourceWallet:x}).then((e=>{l("success"),t({eventName:Q,payload:{provider:"external",status:"success",txHash:e,address:x.address,value:I,chainType:"solana",clusterName:S,token:T,destinationAddress:k,destinationValue:I,destinationChainType:"solana",destinationClusterName:S,destinationToken:T}})})).catch((e=>{l("error"),v(e)})))},children:"Confirm"}),/*#__PURE__*/K(u,{})]}:{children:[/*#__PURE__*/K(L,{}),/*#__PURE__*/K(q,{}),/*#__PURE__*/K("div",{style:{marginTop:"1rem"}}),/*#__PURE__*/K(u,{})]})}};function ot(){let e=A(),{openModal:n}=ce(),{setModalData:t}=b();return{fundWallet:async({address:a,options:i})=>{let r=i?.amount||e.fundingConfig?.defaultRecommendedAmount||"1",s=i?.asset||e.fundingConfig?.defaultRecommendedCurrency.asset||"native-currency",o=i?.chain||"solana:mainnet";t({funding:we({address:a,appConfig:e,methodScreen:E,fundWalletConfig:{...i,amount:r,asset:s,chain:o},externalSolanaFundingScreen:st}),solanaFundingData:{amount:r,asset:"native-currency"===s?"SOL":"USDC",chain:o,destinationAddress:a,sourceWalletData:void 0}}),n(E)}}}function ct(){let{user:e,getAccessToken:n}=de(),{walletProxy:t,openModal:a,client:i}=ce(),{setModalData:r}=b(),s=A();return Z((()=>({exportWallet:o=>new Promise((async(c,l)=>{if(!e)return void l(new se("User must be authenticated before exporting their Privy wallet"));let d=o?.address?me(e,o.address):he(e);if(!d)return void l(new se("User must have an embedded wallet."));if(!ve(d))return void l(Error(`Export is not supported for ${d.chainType} wallets`));let u=fe(d),{entropyId:p,entropyIdVerifier:m}=x(e,d);await n()?t?(r({connectWallet:{recoveryMethod:d.recoveryMethod,connectingWalletAddress:d.address,isUnifiedWallet:u,entropyId:p,entropyIdVerifier:m,onCompleteNavigateTo:H,onFailure:l,shouldForceMFA:!0},keyExport:{appId:s.id,appClientId:s.appClientId,origin:i.apiUrl,address:d.address,entropyId:p,entropyIdVerifier:m,hdWalletIndex:d.walletIndex,chainType:d.chainType,walletId:d.id,isUnifiedWallet:u,imported:d.imported,onSuccess:c,onFailure:l}}),a(_)):l(new se("Wallet not ready for export")):l(new se("Must have valid access token."))}))})),[e,n,t,a,i,r,s])}export{ct as a,nt as b,et as c,Xn as d,Mn as f,Jn as g,jn as s,ot as u};
|