@privy-io/react-auth
Version:
React client for the Privy Auth API
13 lines (12 loc) • 22.5 kB
JavaScript
import{jsxs as e,jsx as t,Fragment as n}from"react/jsx-runtime";import{useState as a,useMemo as s,useCallback as i,useEffect as o}from"react";import{createPublicClient as r,http as p,toHex as l,decodeFunctionData as u,decodeAbiParameters as m,formatEther as c}from"viem";import{getJsonRpcEndpointFromChain as d,formatTokenAmount as y,ProviderErrors as f}from"@privy-io/js-sdk-core";import{A as b}from"./Address-BjZb-TIL.mjs";import{u as T,q as h}from"./context-WTldtXS8.mjs";import{P as g,j as v}from"./use-export-wallet-CV4p7L0b.mjs";import{u as I}from"./internal-context-Z-fyxadS.mjs";import{a as k,u as j}from"./get-is-unified-wallet-Boa8DYrQ.mjs";import{u as E}from"./useGetTokenPrice-BPBpM07F.mjs";import{u as M}from"./useWalletBalance-CDyi5_iR.mjs";import{g as C}from"./getErc20TokenInfo-1Q6w1Ibq.mjs";import{f as w}from"./formatErc20TokenAmount-BuPk9xcy.mjs";import{g as F,a as _,p as x}from"./ethers-D1WT71Ay.mjs";import{Y as S,D as A}from"./useActiveWallet-3RHPIBxJ.mjs";import{g as N}from"./getPublicClient-B4uPLKn-.mjs";import{ErrorScreenView as O}from"./ErrorScreen-DtGc3Chy.mjs";import{styled as R}from"styled-components";import{M as D,B as P,P as $}from"./ModalHeader-D8-mhjp4.mjs";import{D as B}from"./JsonTree-aPaJmPx7.mjs";import{T as q,S as L}from"./TransactionErrorView-CPFrt0L4.mjs";import{R as U}from"./Layouts-BlFm53ED.mjs";import{S as W}from"./ScreenHeader-CHmc4-Lu.mjs";import{T as G}from"./TransactionDetails-BurRo8R0.mjs";import{E as V}from"./transfer-6YztDh-t.mjs";import{p as H}from"./index-BBRkihRn.mjs";import"lucide-react";import"tinycolor2";import"eventemitter3";import"viem/utils";import"./useWallets-CR0z5IIt.mjs";import"ofetch";import"@privy-io/are-addresses-equal";import"./useGetSolPrice-DwwjjGbd.mjs";import"zustand";import"react-device-detect";import"./events-context-CI0iqAXA.mjs";import"./reservoir-0wfhnc0j.mjs";import"./ScreenLayout-DTmQLGPf.mjs";import"./Screen-Bp-TN9gb.mjs";import"./index-Dq_xe9dz.mjs";import"uuid";import"jose";import"@coinbase/wallet-sdk";import"@privy-io/ethereum";import"mipd";import"@privy-io/popup";import"./paths-3HW55qZg.mjs";import"./usePrivy-6nkpbErN.mjs";import"@scure/base";import"@headlessui/react";import"@walletconnect/ethereum-provider";import"@privy-io/urls";import"./PrivyPluginContext-2QN2dVUw.mjs";import"./getEmbeddedConnectedWallet-JzK4iD-L.mjs";import"js-cookie";import"./frame-uzTmvtww.mjs";import"@privy-io/routes";import"x402/client";import"@privy-io/api-base";import"viem/accounts";import"./use-sign-with-user-signer-Do5Oi_rb.mjs";import"@heroicons/react/24/outline/ArrowLeftIcon";import"@heroicons/react/24/outline/ArrowRightIcon";import"@heroicons/react/24/outline/QuestionMarkCircleIcon";import"@heroicons/react/24/outline/XMarkIcon";import"@heroicons/react/24/outline";import"./Value-tcJV9e0L.mjs";import"./LoadingSkeleton-U6-3yFwI.mjs";import"./Row-C9vrS4Zi.mjs";import"./ErrorMessage-D8VaAP5m.mjs";import"./LabelXs-oqZNqbm_.mjs";import"./Subtitle-CV-2yKE4.mjs";import"./Title-BnzYV3Is.mjs";import"./WalletInfoCard-DFt8ndGE.mjs";import"./shared-FM0rljBt.mjs";import"./Checkbox-BhNoOKjX.mjs";import"./ErrorBanner-CQERa7bL.mjs";import"@heroicons/react/24/outline/ExclamationCircleIcon";import"./WarningBanner-c8L53pJ2.mjs";import"@heroicons/react/24/outline/ExclamationTriangleIcon";import"@heroicons/react/24/outline/ClipboardDocumentCheckIcon";import"@heroicons/react/24/outline/ClipboardDocumentIcon";import"./WalletLink--05Hzo2b.mjs";import"./getFormattedUsdFromLamports-B6EqSEho.mjs";import"./transaction-CnfuREWo.mjs";import"@heroicons/react/24/outline/ChevronDownIcon";let z=[{constant:!0,inputs:[{name:"_owner",type:"address"}],name:"balanceOf",outputs:[{name:"balance",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"}],Q=R.div`
display: flex;
flex-direction: column;
min-height: 72px;
`;var J=({onBack:n,details:a})=>/*#__PURE__*/e(Q,{children:[/*#__PURE__*/t(D,{backFn:n}),/*#__PURE__*/t(B,{data:a}),/*#__PURE__*/t(P,{})]});let X=({gasUsed:e,effectiveGasPrice:t})=>{if(e&&t)try{return l(e*t)}catch(e){return}};const Y=({txn:a,receipt:s,transactionInfo:i,onClose:o,tokenPrice:r,tokenSymbol:p,receiptHeader:l,receiptDescription:u})=>/*#__PURE__*/e(n,{children:[/*#__PURE__*/t(D,{onClose:o}),/*#__PURE__*/t(W,{title:l??"Transaction complete!",description:u??"You're all set."}),/*#__PURE__*/t(G,{tokenPrice:r,from:s.from,to:s.to,gas:X(s),txn:a,transactionInfo:i,tokenSymbol:p}),/*#__PURE__*/t(S,{}),/*#__PURE__*/t(K,{loading:!1,onClick:o,children:"All Done"}),/*#__PURE__*/t(U,{}),/*#__PURE__*/t(P,{})]});let K=R($)`
&& {
margin-top: 24px;
}
transition:
color 350ms ease,
background-color 350ms ease;
`;const Z=[{constant:!1,inputs:[{name:"_salt",type:"bytes32"},{name:"_initializer",type:"bytes"}],name:"deployAccount",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"}],ee=[{name:"from",type:"address"},{name:"param2",type:"address"},{name:"param3",type:"bytes"},{name:"param4",type:"tuple",components:[]},{type:"tuple",components:[{name:"param5",type:"address"},{name:"param6",type:"uint256"},{name:"param7",type:"uint256"},{name:"encodedInitData",type:"bytes"}]}],te=[{constant:!1,inputs:[{name:"spender",type:"address"},{name:"value",type:"uint256"}],name:"approve",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"}],ne=[{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"mint",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"mint",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"}],name:"mint",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"}],name:"mint",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"uint256",name:"quantity",type:"uint256"},{internalType:"bytes",name:"data",type:"bytes"}],name:"mint",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"uint256",name:"quantity",type:"uint256"},{internalType:"bytes",name:"data",type:"bytes"}],name:"mint",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256[]",name:"tokenIds",type:"uint256[]"},{internalType:"uint256[]",name:"quantities",type:"uint256[]"},{internalType:"bytes",name:"data",type:"bytes"}],name:"mintBatch",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256[]",name:"tokenIds",type:"uint256[]"},{internalType:"uint256[]",name:"quantities",type:"uint256[]"},{internalType:"bytes",name:"data",type:"bytes"}],name:"mintBatch",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"quantity",type:"uint256"}],name:"mint",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"quantity",type:"uint256"}],name:"mint",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"}],name:"safeMint",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"}],name:"safeMint",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"string",name:"uri",type:"string"}],name:"safeMint",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"string",name:"uri",type:"string"}],name:"safeMint",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"safeMint",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"safeMint",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"string",name:"uri",type:"string"}],name:"safeMint",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"string",name:"uri",type:"string"}],name:"safeMint",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"batchMint",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"batchMint",outputs:[],stateMutability:"payable",type:"function"}],ae=[{constant:!1,inputs:[{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_tokenId",type:"uint256"}],name:"safeTransferFrom",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"}],se=[{constant:!1,inputs:[{name:"_operator",type:"address"},{name:"_approved",type:"bool"}],name:"setApprovalForAll",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"}],ie=[{constant:!1,inputs:[{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_tokenId",type:"uint256"}],name:"transferFrom",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"}],oe=[{constant:!1,inputs:[{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_tokenIds",type:"uint256[]"},{name:"_amounts",type:"uint256[]"},{name:"_data",type:"bytes"}],name:"safeBatchTransferFrom",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"}],re=[{constant:!1,inputs:[{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_tokenId",type:"uint256"},{name:"_amount",type:"uint256"},{name:"_data",type:"bytes"}],name:"safeTransferFrom",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"}],pe=(e,t)=>{let n=le(te,e);if(n)return{action:"approve",functionName:"approve",isErc20Ish:!0,isNFTIsh:!1,spender:n.args[0],amount:n.args[1]};let a=le(V,e);if(a)return{action:"transfer",functionName:"transfer",isErc20Ish:!0,isNFTIsh:!1,transferTo:a.args[0],amount:a.args[1]};if(!t)return{action:"transaction",functionName:"",isErc20Ish:!1,isNFTIsh:!1};let s=le(Z,e);if(s&&"string"==typeof s.args[1]){let e=ue(s.args[1]);if(e&&e[4].encodedInitData)return pe(e[4].encodedInitData,t)}let i=le(se,e);if(i)return{action:"approve",functionName:"setApprovalForAll",isNFTIsh:!0,isErc20Ish:!1,operator:i.args[0],approved:i.args[1]};let o=le(ie,e);if(o)return{action:"transfer",functionName:"transferFrom",isNFTIsh:!0,isErc20Ish:!1,transferFrom:o.args[0],transferTo:o.args[1],tokenId:o.args[2]};let r=le(ae,e);if(r)return{action:"transfer",functionName:"safeTransferFrom",isNFTIsh:!0,isErc20Ish:!1,transferFrom:r.args[0],transferTo:r.args[1],tokenId:r.args[2]};let p=le(re,e);if(p)return{action:"transfer",functionName:"safeTransferFrom",isNFTIsh:!0,isErc20Ish:!1,transferFrom:p.args[0],transferTo:p.args[1],tokenId:p.args[2],amount:p.args[3]};let l=le(oe,e);if(l)return{action:"batch transfer",functionName:"safeBatchTransferFrom",isNFTIsh:!0,isErc20Ish:!1,transferFrom:l.args[0],transferTo:l.args[1],tokenIds:l.args[2],amounts:l.args[3]};let u=le(ne,e);return u?{action:"mint",functionName:u.functionName,isNFTIsh:!0,isErc20Ish:!1,args:u.args}:{action:"transaction",isErc20Ish:!1,isNFTIsh:!1}};let le=(e,t)=>{try{let n=u({abi:e,data:t});return{functionName:n.functionName,args:n.args||[]}}catch(e){return null}},ue=e=>{try{if("string"==typeof e)return m(ee,`0x${e.slice(10)}`)}catch(e){return null}},me=e=>`${parseFloat(e).toFixed(2)}`;function ce(e,t){let n=[],a=new Map;if(e)for(let t of e)if(t.in[0]){let e;e="ERC721"===t.asset.type||"approve_for_all"===t.in[0].value?{id:`nft:${t.asset.name}`,nftName:t.asset.name,nftCount:t.in.length}:{id:`token:${t.asset.type}:${t.asset.symbol}:${t.asset.name}`,iconUrl:t.asset.logo_url,value:t.in[0].value,symbol:t.asset.symbol,usdValue:t.in[0].usd_price?me(t.in[0].usd_price):void 0,decimals:t.asset.decimals},n.push(e)}else if(t.out[0]?.value){let e;e="ERC721"===t.asset.type||"approve_for_all"===t.out[0].value?{id:`nft:${t.asset.name}`,nftName:t.asset.name}:{id:`token:${t.asset.type}:${t.asset.symbol}:${t.asset.name}`,iconUrl:t.asset.logo_url,value:t.out[0].value,symbol:t.asset.symbol,usdValue:t.out[0].usd_price?me(t.out[0].usd_price):void 0,decimals:t.asset.decimals},a.has(e.id)||a.set(e.id,e)}for(let e of t)for(let t of Object.keys(e.spenders)){let n;n="ERC721"===e.asset.type||"approve_for_all"===e.spenders[t]?.value?{id:`nft:${e.asset.name}`,nftName:e.asset.name}:{id:`token:${e.asset.type}:${e.asset.symbol}:${e.asset.name}`,iconUrl:e.asset.logo_url,value:e.spenders[t]?.value,symbol:e.asset.symbol,usdValue:e.spenders[t]?.usd_price?me(e.spenders[t]?.usd_price):void 0,decimals:e.asset.decimals},a.has(n.id)||a.set(n.id,n)}return{assetsIn:n,assetsOut:Array.from(a.values())}}const de=(e,t,n,s)=>{let[i,r]=a(null),{walletProxy:p}=I();return o((()=>{i&&r(null),(async()=>{if(!p||!t)return null;let a=[],i=!0,o=await H(e,n,t,s).catch((t=>(t.message&&t.message.includes("Insufficient balance for transaction")||t.message&&t.message.includes("Insufficient funds for gas * price + value")||t.details&&t.details.includes("insufficient funds")?i=!1:a.push(t),e)));return{tx:o,totalGasEstimate:o.gas,hasFunds:i,errors:a}})().then(r)}),[e]),i};let ye=new g(new v("There was an issue preparing your transaction",f.E32603_DEFAULT_INTERNAL_ERROR.eipCode)),fe=(e,t)=>e?.sendTransaction?"transactionRequest"in e.sendTransaction?e.sendTransaction.transactionRequest:e.sendTransaction.transactionRequests[t]:void 0;const be={component:()=>{let{data:l,onUserCloseViaDialogOrKeybindRef:u,setModalData:m,navigate:S}=k(),{client:R,rpcConfig:D,chains:P,closePrivyModal:$,walletProxy:B,showFiatPrices:U}=I(),{user:W}=j(),G=T(),[V,H]=a(0),[Q,X]=a(0),[K,Z]=a(fe(l,V)),[ee,te]=a(null),[ne,ae]=a(),[se,ie]=a(!1),[oe,re]=a(null),[le,ue]=a(null),[me,be]=a(null),[Te,he]=a(void 0),[ge,ve]=a(void 0),[Ie,ke]=a(!1),[je,Ee]=a(!1),[Me,Ce]=a([]),[we,Fe]=a([]),[_e,xe]=a("uninitiated"),[Se,Ae]=a(void 0);if(!K||!l?.sendTransaction||!l?.sendTransaction)/*#__PURE__*/return t(O,{error:Error("Invalid transaction request"),allowlistConfig:G.allowlistConfig,onRetry:()=>{l?.sendTransaction?.onFailure(ye),$({shouldCallAuthOnSuccess:!1})}});let{transactingWalletAddress:Ne}=l.sendTransaction,Oe=s((()=>P.find((e=>Number(e.id)===Number(K.chainId)))),[K.chainId]),Re=Oe?.nativeCurrency.symbol??"ETH",De=s((()=>pe(K.data,!!G.embeddedWallets.extendedCalldataDecoding)),[K.data]),{action:Pe,isErc20Ish:$e,isNFTIsh:Be,functionName:qe}=De,{toAddress:Le,tokenAddress:Ue}=s((()=>({toAddress:De.isErc20Ish?De.transferTo:K.to??void 0,tokenAddress:De.isErc20Ish?K.to:void 0})),[De]);o((()=>{K.to&&Oe&&$e&&C({address:K.to,chain:Oe,rpcConfig:G.rpcConfig,privyAppId:G.id}).then(te).catch(console.error)}),[K.to,Oe]);let{tokenPrice:We,isTokenPriceLoading:Ge}=E(K.chainId),{balance:Ve}=M({rpcConfig:G.rpcConfig,appId:G.id,address:Ne,chain:Oe}),He=function({rpcConfig:e,appId:t,address:n,chain:l,tokenInfo:u}){let{chains:m}=I(),[c,f]=a(null),[b,T]=a(!1),h=s((()=>{let n=l||m[0];if(n)return r({chain:l,transport:p(d(n,e,t))})}),[l,e,t]),g=i((async()=>{if(n&&h&&u.address)try{return T(!0),await h.readContract({address:u.address,abi:z,functionName:"balanceOf",args:[n]})}catch(e){console.error(e)}finally{T(!1)}}),[h,n,u?.address,l]);return o((()=>{g().then((e=>null!=e&&f(e)))}),[g]),{balance:c,isLoading:b&&null==c,formattedBalance:y({amount:c??BigInt(0),decimals:u.decimals})}}({rpcConfig:G.rpcConfig,appId:G.id,address:Ne,tokenInfo:{address:Ue||"",decimals:ee?.decimals??18},chain:Oe}),ze=s((()=>N(Number(K.chainId),P,D,{appId:G.id})),[K.chainId,D]),Qe=de(K,Ne,ze,l?.sendTransaction?.prepareTransactionRequest);o((()=>{Z(fe(l,V))}),[V]),o((()=>{l.sendTransaction?.getIsSponsored?l.sendTransaction.getIsSponsored().then(ae).catch(console.error):ae(!1)}),[l.sendTransaction.getIsSponsored]);let Je=()=>{if(!se)return oe?l?.sendTransaction?.onSuccess({hash:oe}):me||Qe?.errors[0]?l?.sendTransaction?.onFailure(me??Qe?.errors[0]??ye):l?.sendTransaction?.onFailure(new g(new v("The user rejected the request",f.E4001_USER_REJECTED_REQUEST.eipCode))),$({shouldCallAuthOnSuccess:!1})};u.current=Je;let Xe=!!(l.funding&&l.funding.supportedOptions.length>0),Ye=F(BigInt(Qe?.totalGasEstimate??0n),Re),Ke=U&&We?_(BigInt(Qe?.totalGasEstimate??0n),We):void 0,Ze=F(Ve??0n,Re,void 0,!0),et=U&&We?_(Ve??0n,We):void 0,tt=ee&&!He.isLoading&&$e&&"approve"!==Pe?`${He.formattedBalance} ${ee.symbol}`:void 0,nt=l.sendTransaction?.uiOptions?.transactionInfo?.title;nt||(nt="approve"===Pe?$e?"Confirm address":"Confirm action":`Approve ${Pe}`);let at=s((()=>{if(l.sendTransaction?.uiOptions?.description)return l.sendTransaction?.uiOptions?.description;if("approve"===Pe&&"setApprovalForAll"===qe&&De.approved){let a=/*#__PURE__*/t(b,{address:De.operator||"",url:Oe?.blockExplorers?.default?.url});/*#__PURE__*/return e(n,{children:[G.name," would like your permission for ",a," to transfer tokens on your behalf."]})}if("approve"===Pe&&"setApprovalForAll"===qe&&!De.approved){let a=/*#__PURE__*/t(b,{address:De.operator||"",url:Oe?.blockExplorers?.default?.url});/*#__PURE__*/return e(n,{children:[G.name," would like your permission to revoke permissions of ",a," from transferring tokens on your behalf."]})}return $e&&"approve"===Pe||$e&&"approve"===Pe?`${G.name} would like your permission for ${A(De.spender)} to spend tokens on your behalf.`:`${G.name} wants your permission to approve the following transaction.`}),[G.name,$e,De,l.sendTransaction?.uiOptions.description,qe]),st=l.sendTransaction?.uiOptions?.transactionInfo?.contractInfo?.imgUrl?/*#__PURE__*/t("img",{src:l.sendTransaction.uiOptions.transactionInfo.contractInfo.imgUrl,alt:l.sendTransaction.uiOptions.transactionInfo.contractInfo.imgAltText}):null,it=!(!Qe||Qe.errors[0]||Qe.hasFunds||!1!==ne),ot=it&&Xe,rt=ot?"Add funds":l.sendTransaction?.uiOptions?.buttonText||(V<Q?"Continue":"Approve"),pt=e=>{if(!e)throw Error("Transaction scan failed");if("Success"===e.validation.status&&("Benign"===e.validation.result_type?ve("safe"):"Warning"===e.validation.result_type?ve("warn"):"Malicious"===e.validation.result_type&&(ve("error"),Ee(!0))),"Success"!==e.simulation.status)throw Error("Simulation failed");{he(e.simulation.params);let{assetsIn:t,assetsOut:n}=ce(e.simulation.assets_diffs,e.simulation.exposures);if(0===n.length&&0===t.length)throw Error("No tokens found");Ce(n),Fe(t)}};if(o((()=>{l.sendTransaction?.scanTransaction&&G.embeddedWallets.transactionScanning.enabled&&"uninitiated"===_e&&(xe("in progress"),l.sendTransaction.scanTransaction().then((e=>{pt(e),xe("completed")})).catch((()=>xe("failed"))))}),[!!l.sendTransaction?.scanTransaction]),o((()=>{l.sendTransaction?.scanTransaction&&"failed"!==_e||((e,t,n)=>{if(X((e=>e?.sendTransaction?"transactionRequest"in e.sendTransaction?0:e.sendTransaction.transactionRequests.length-1:0)(l)),t.isErc20Ish&&t.amount&&n){let e=w({amount:t.amount,decimals:n.decimals});Ae(e),Ce([{value:e,symbol:n?.symbol,decimals:n?.decimals}])}else if(e.value){let t=BigInt(e.value),n=We?_(t,We):void 0;Ce(U&&n?[{value:n}]:[{value:x(t),symbol:Re,decimals:18,usdValue:n}])}else Ce(U?[{value:"$0"}]:[{value:"0",symbol:Re,decimals:18}])})(Qe?.tx??K,De,ee)}),[K,Qe?.tx,De,ee,_e]),le/*#__PURE__*/)return t(Y,{txn:Qe?.tx??K,onClose:Je,receipt:le,transactionInfo:l.sendTransaction?.uiOptions.transactionInfo,tokenPrice:We,tokenSymbol:Re,receiptHeader:l.sendTransaction?.uiOptions.successHeader,receiptDescription:l.sendTransaction?.uiOptions.successDescription});if(me)/*#__PURE__*/return t(q,{transactionError:me,transactionHash:oe??void 0,chainType:"ethereum",chainId:Qe?.tx.chainId??K.chainId,onClose:Je,onRetry:({resetNonce:e})=>{be(null);let t={...Qe?.tx??K};e&&(t.nonce=void 0),Z(t)}});let lt=0!==Q&&"number"==typeof V&&0!==V?()=>{H(V-1)}:void 0;return Ie&&Te?/*#__PURE__*/t(J,{details:Te,onBack:()=>ke(!1)}):/*#__PURE__*/t(L,{transactionIndex:V,onBack:lt,maxIndex:Q,disabled:it&&!Xe||je,isSubmitting:se,submitError:me,isPreparing:!Qe,isTokenPriceLoading:Ge,isTokenContractInfoLoading:!Be&&!ee,prepareError:Qe?.errors[0],symbol:ee?.symbol,chain:Oe,img:st,title:nt,subtitle:at,txValue:K.value,fee:Ke??Ye,isSponsored:ne,from:Ne??"",to:Le,tokenAddress:Ue??void 0,network:G.chains.find((e=>e.id===K.chainId))?.name??"",transactionDetails:{...De,formattedAmount:Se},cta:rt,missingFunds:it,action:Pe,balance:tt??et??Ze,onClose:Je,onClick:ot?async()=>{if(!Ne)return;if(!Xe)throw Error("Funding wallet is not enabled");let e="FundingMethodSelectionScreen";m({...l,funding:{...l.funding,methodScreen:e,chainType:"ethereum",amount:c(BigInt(Qe?.tx.value??0)+BigInt(Qe?.totalGasEstimate?.toString()??0)),chain:Oe},solanaFundingData:l?.solanaFundingData}),S(e)}:async()=>{if(V<Q)H(V+1);else{ie(!0);try{let e=await R.getAccessToken();if(se||!e||!B||!W)return;let t=await l.sendTransaction.onConfirm({transactionRequest:Qe?.tx??K});if(re(t),l.sendTransaction?.signOnly)return await new Promise((e=>setTimeout(e,h))),l?.sendTransaction?.onSuccess({hash:t}),$({shouldCallAuthOnSuccess:!1});let n=await ze.waitForTransactionReceipt({hash:t});if("reverted"===n.status)throw Error("Transaction failed");ue(n)}catch(e){console.warn({transaction:Qe?.tx??K,error:e}),be(e)}finally{ie(!1)}}},validation:ge,hasScanDetails:!!Te,setIsScanDetailsOpen:ke,preventMaliciousTransaction:je,setPreventMaliciousTransaction:Ee,tokensSent:Me,tokensReceived:we,isScanning:"in progress"===_e,isCancellable:l.sendTransaction?.uiOptions?.isCancellable??!1,functionName:qe})}};export{be as SendTransactionScreen,be as default};