UNPKG

@privy-io/react-auth

Version:

React client for the Privy Auth API

13 lines (12 loc) • 23.7 kB
"use strict";var e=require("react/jsx-runtime"),t=require("react"),n=require("viem"),a=require("@privy-io/js-sdk-core"),s=require("./Address-BeuDoSGB.js"),r=require("./context-Cg3IEi80.js"),i=require("./use-export-wallet-_EIyxyle.js"),o=require("./internal-context-BJv4f_bO.js"),u=require("./privy-context-CrM9_s6G.js"),l=require("./useGetTokenPrice-CSWuvKuF.js"),c=require("./useWalletBalance-v_jFKi4B.js"),p=require("./getErc20TokenInfo-D0BUvlN2.js"),d=require("./formatErc20TokenAmount-DxwoWe7e.js"),m=require("./ethers-p3w-Ig2U.js"),y=require("./useWallets-dikDynAG.js"),f=require("./ErrorScreen-CL31INic.js"),b=require("styled-components"),T=require("./ModalHeader-C5Wuo3-1.js"),h=require("./JsonTree-C28xtYM0.js"),g=require("./TransactionErrorView-OoipbwSa.js"),v=require("./Layouts-D3TOcPhm.js"),I=require("./ScreenHeader-CgYJ5Fmg.js"),q=require("./useActiveWallet-BfMD5hzE.js"),E=require("./TransactionDetails-BisPbyIV.js"),j=require("./transfer-B1Y_9LWi.js"),k=require("./index-DchMyzt9.js");require("lucide-react"),require("tinycolor2"),require("eventemitter3"),require("viem/utils"),require("ofetch"),require("@privy-io/are-addresses-equal"),require("./useGetSolPrice-Ca32VAbF.js"),require("./reservoir-Bx0HQwbb.js"),require("./ScreenLayout-C4QHZMbl.js"),require("./Screen-DWnRbzSA.js"),require("./index-ByFhjjzH.js"),require("uuid"),require("jose"),require("zustand"),require("react-device-detect"),require("./events-context-Di6--rDg.js"),require("@coinbase/wallet-sdk"),require("@privy-io/ethereum"),require("mipd"),require("@privy-io/popup"),require("./paths-DizMb-lU.js"),require("./usePrivy-C-Rab7yP.js"),require("@scure/base"),require("@headlessui/react"),require("@walletconnect/ethereum-provider"),require("@privy-io/urls"),require("./PrivyPluginContext-DsgaS6n9.js"),require("./getEmbeddedConnectedWallet-pJd-l936.js"),require("js-cookie"),require("./frame-Oz7volks.js"),require("@privy-io/routes"),require("x402/client"),require("@privy-io/api-base"),require("viem/accounts"),require("./use-sign-with-user-signer-Cu_6Bx7m.js"),require("@heroicons/react/24/outline/ArrowLeftIcon"),require("@heroicons/react/24/outline/ArrowRightIcon"),require("@heroicons/react/24/outline/QuestionMarkCircleIcon"),require("@heroicons/react/24/outline/XMarkIcon"),require("@heroicons/react/24/outline"),require("./Value-mhPsfsxe.js"),require("./LoadingSkeleton-BoyADunQ.js"),require("./Row-CMqYn75Q.js"),require("./ErrorMessage-BfTVyue9.js"),require("./LabelXs-C8rLnCfU.js"),require("./Subtitle-CR8zM7ZJ.js"),require("./Title-ifTy35V5.js"),require("./WalletInfoCard-B7ARTvO5.js"),require("./shared-DBm7PUrg.js"),require("./Checkbox-DzxHC5tk.js"),require("./ErrorBanner-dOLclNms.js"),require("@heroicons/react/24/outline/ExclamationCircleIcon"),require("./WarningBanner-DUcGaIpZ.js"),require("@heroicons/react/24/outline/ExclamationTriangleIcon"),require("@heroicons/react/24/outline/ClipboardDocumentCheckIcon"),require("@heroicons/react/24/outline/ClipboardDocumentIcon"),require("./WalletLink-CRWOuFlx.js"),require("./getFormattedUsdFromLamports-Mu2fqwL2.js"),require("./transaction-DjF5X-by.js"),require("@heroicons/react/24/outline/ChevronDownIcon");let x=[{constant:!0,inputs:[{name:"_owner",type:"address"}],name:"balanceOf",outputs:[{name:"balance",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"}],S=b.styled.div` display: flex; flex-direction: column; min-height: 72px; `;var F=({onBack:t,details:n})=>/*#__PURE__*/e.jsxs(S,{children:[/*#__PURE__*/e.jsx(T.ModalHeader,{backFn:t}),/*#__PURE__*/e.jsx(h.DisplayJsonTree,{data:n}),/*#__PURE__*/e.jsx(T.BlobbyFooter,{})]});let M=({gasUsed:e,effectiveGasPrice:t})=>{if(e&&t)try{return n.toHex(e*t)}catch(e){return}};const C=({txn:t,receipt:n,transactionInfo:a,onClose:s,tokenPrice:r,tokenSymbol:i,receiptHeader:o,receiptDescription:u})=>/*#__PURE__*/e.jsxs(e.Fragment,{children:[/*#__PURE__*/e.jsx(T.ModalHeader,{onClose:s}),/*#__PURE__*/e.jsx(I.ScreenHeader,{title:o??"Transaction complete!",description:u??"You're all set."}),/*#__PURE__*/e.jsx(E.TransactionDetails,{tokenPrice:r,from:n.from,to:n.to,gas:M(n),txn:t,transactionInfo:a,tokenSymbol:i}),/*#__PURE__*/e.jsx(q.Grow,{}),/*#__PURE__*/e.jsx(_,{loading:!1,onClick:s,children:"All Done"}),/*#__PURE__*/e.jsx(v.RefactorSpacerBottom,{}),/*#__PURE__*/e.jsx(T.BlobbyFooter,{})]});let _=b.styled(T.PrimaryButton)` && { margin-top: 24px; } transition: color 350ms ease, background-color 350ms ease; `;const w=[{constant:!1,inputs:[{name:"_salt",type:"bytes32"},{name:"_initializer",type:"bytes"}],name:"deployAccount",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"}],A=[{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"}]}],N=[{constant:!1,inputs:[{name:"spender",type:"address"},{name:"value",type:"uint256"}],name:"approve",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"}],P=[{inputs:[{name:"to",type:"address"},{name:"amount",type:"uint256"},{name:"memo",type:"bytes32"}],name:"transferWithMemo",outputs:[{name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}],R=[{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"}],D=[{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"}],O=[{constant:!1,inputs:[{name:"_operator",type:"address"},{name:"_approved",type:"bool"}],name:"setApprovalForAll",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"}],B=[{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"}],W=[{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"}],$=[{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"}],L=(e,t)=>{let n=U(N,e);if(n)return{action:"approve",functionName:"approve",isErc20Ish:!0,isNFTIsh:!1,spender:n.args[0],amount:n.args[1]};let a=U(j.ERC20_TRANSFER_ABI_STUB,e);if(a)return{action:"transfer",functionName:"transfer",isErc20Ish:!0,isNFTIsh:!1,transferTo:a.args[0],amount:a.args[1]};let s=U(P,e);if(s)return{action:"transfer",functionName:"transferWithMemo",isErc20Ish:!0,isNFTIsh:!1,transferTo:s.args[0],amount:s.args[1]};if(!t)return{action:"transaction",functionName:"",isErc20Ish:!1,isNFTIsh:!1};let r=U(w,e);if(r&&"string"==typeof r.args[1]){let e=H(r.args[1]);if(e&&e[4].encodedInitData)return L(e[4].encodedInitData,t)}let i=U(O,e);if(i)return{action:"approve",functionName:"setApprovalForAll",isNFTIsh:!0,isErc20Ish:!1,operator:i.args[0],approved:i.args[1]};let o=U(B,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 u=U(D,e);if(u)return{action:"transfer",functionName:"safeTransferFrom",isNFTIsh:!0,isErc20Ish:!1,transferFrom:u.args[0],transferTo:u.args[1],tokenId:u.args[2]};let l=U($,e);if(l)return{action:"transfer",functionName:"safeTransferFrom",isNFTIsh:!0,isErc20Ish:!1,transferFrom:l.args[0],transferTo:l.args[1],tokenId:l.args[2],amount:l.args[3]};let c=U(W,e);if(c)return{action:"batch transfer",functionName:"safeBatchTransferFrom",isNFTIsh:!0,isErc20Ish:!1,transferFrom:c.args[0],transferTo:c.args[1],tokenIds:c.args[2],amounts:c.args[3]};let p=U(R,e);return p?{action:"mint",functionName:p.functionName,isNFTIsh:!0,isErc20Ish:!1,args:p.args}:{action:"transaction",isErc20Ish:!1,isNFTIsh:!1}};let U=(e,t)=>{try{let a=n.decodeFunctionData({abi:e,data:t});return{functionName:a.functionName,args:a.args||[]}}catch(e){return null}},H=e=>{try{if("string"==typeof e)return n.decodeAbiParameters(A,`0x${e.slice(10)}`)}catch(e){return null}},V=e=>`${parseFloat(e).toFixed(2)}`;function G(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?V(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?V(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?V(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 J=(e,n,a,s)=>{let[r,i]=t.useState(null),{walletProxy:u}=o.usePrivyInternal();return t.useEffect((()=>{r&&i(null),(async()=>{if(!u||!n)return null;let t=[],r=!0,i=await k.prepareTransactionRequest(e,a,n,s).catch((n=>(n.message&&n.message.includes("Insufficient balance for transaction")||n.message&&n.message.includes("Insufficient funds for gas * price + value")||n.details&&n.details.includes("insufficient funds")?r=!1:t.push(n),e)));return{tx:i,totalGasEstimate:i.gas,hasFunds:r,errors:t}})().then(i)}),[e]),r};let z=new i.PrivyProviderRpcError(new i.ProviderRpcError("There was an issue preparing your transaction",a.ProviderErrors.E32603_DEFAULT_INTERNAL_ERROR.eipCode)),Q=(e,t)=>e?.sendTransaction?"transactionRequest"in e.sendTransaction?e.sendTransaction.transactionRequest:e.sendTransaction.transactionRequests[t]:void 0;const X={component:()=>{let{data:b,onUserCloseViaDialogOrKeybindRef:T,setModalData:h,navigate:v}=u.usePrivyModal(),{client:I,rpcConfig:q,chains:E,closePrivyModal:j,walletProxy:k,showFiatPrices:S}=o.usePrivyInternal(),{user:M}=u.usePrivyContext(),_=r.useAppConfig(),[w,A]=t.useState(0),[N,P]=t.useState(0),[R,D]=t.useState(Q(b,w)),[O,B]=t.useState(null),[W,$]=t.useState(),[U,H]=t.useState(!1),[V,X]=t.useState(null),[K,Y]=t.useState(null),[Z,ee]=t.useState(null),[te,ne]=t.useState(void 0),[ae,se]=t.useState(void 0),[re,ie]=t.useState(!1),[oe,ue]=t.useState(!1),[le,ce]=t.useState([]),[pe,de]=t.useState([]),[me,ye]=t.useState("uninitiated"),[fe,be]=t.useState(void 0);if(!R||!b?.sendTransaction||!b?.sendTransaction)/*#__PURE__*/return e.jsx(f.ErrorScreenView,{error:Error("Invalid transaction request"),allowlistConfig:_.allowlistConfig,onRetry:()=>{b?.sendTransaction?.onFailure(z),j({shouldCallAuthOnSuccess:!1})}});let{transactingWalletAddress:Te}=b.sendTransaction,he=t.useMemo((()=>E.find((e=>Number(e.id)===Number(R.chainId)))),[R.chainId]),ge=he?.nativeCurrency.symbol??"ETH",ve=t.useMemo((()=>L(R.data,!!_.embeddedWallets.extendedCalldataDecoding)),[R.data]),{action:Ie,isErc20Ish:qe,isNFTIsh:Ee,functionName:je}=ve,{toAddress:ke,tokenAddress:xe}=t.useMemo((()=>({toAddress:ve.isErc20Ish?ve.transferTo:R.to??void 0,tokenAddress:ve.isErc20Ish?R.to:void 0})),[ve]);t.useEffect((()=>{R.to&&he&&qe&&p.getErc20TokenInfo({address:R.to,chain:he,rpcConfig:_.rpcConfig,privyAppId:_.id}).then(B).catch(console.error)}),[R.to,he]);let{tokenPrice:Se,isTokenPriceLoading:Fe}=l.useGetTokenPrice(R.chainId),{balance:Me}=c.useWalletBalance({rpcConfig:_.rpcConfig,appId:_.id,address:Te,chain:he}),Ce=function({rpcConfig:e,appId:s,address:r,chain:i,tokenInfo:u}){let{chains:l}=o.usePrivyInternal(),[c,p]=t.useState(null),[d,m]=t.useState(!1),y=t.useMemo((()=>{let t=i||l[0];if(t)return n.createPublicClient({chain:i,transport:n.http(a.getJsonRpcEndpointFromChain(t,e,s))})}),[i,e,s]),f=t.useCallback((async()=>{if(r&&y&&u.address)try{return m(!0),await y.readContract({address:u.address,abi:x,functionName:"balanceOf",args:[r]})}catch(e){console.error(e)}finally{m(!1)}}),[y,r,u?.address,i]);return t.useEffect((()=>{f().then((e=>null!=e&&p(e)))}),[f]),{balance:c,isLoading:d&&null==c,formattedBalance:a.formatTokenAmount({amount:c??BigInt(0),decimals:u.decimals})}}({rpcConfig:_.rpcConfig,appId:_.id,address:Te,tokenInfo:{address:xe||"",decimals:O?.decimals??18},chain:he}),_e=t.useMemo((()=>y.getPublicClient(Number(R.chainId),E,q,{appId:_.id})),[R.chainId,q]),we=J(R,Te,_e,b?.sendTransaction?.prepareTransactionRequest);t.useEffect((()=>{D(Q(b,w))}),[w]),t.useEffect((()=>{b.sendTransaction?.getIsSponsored?b.sendTransaction.getIsSponsored().then($).catch(console.error):$(!1)}),[b.sendTransaction.getIsSponsored]);let Ae=()=>{if(!U)return V?b?.sendTransaction?.onSuccess({hash:V}):Z||we?.errors[0]?b?.sendTransaction?.onFailure(Z??we?.errors[0]??z):b?.sendTransaction?.onFailure(new i.PrivyProviderRpcError(new i.ProviderRpcError("The user rejected the request",a.ProviderErrors.E4001_USER_REJECTED_REQUEST.eipCode))),j({shouldCallAuthOnSuccess:!1})};T.current=Ae;let Ne=!!(b.funding&&b.funding.supportedOptions.length>0),Pe=m.getNativeCurrencyFromWei(BigInt(we?.totalGasEstimate??0n),ge),Re=S&&Se?m.getDollarsFromWei(BigInt(we?.totalGasEstimate??0n),Se):void 0,De=m.getNativeCurrencyFromWei(Me??0n,ge,void 0,!0),Oe=S&&Se?m.getDollarsFromWei(Me??0n,Se):void 0,Be=O&&!Ce.isLoading&&qe&&"approve"!==Ie?`${Ce.formattedBalance} ${O.symbol}`:void 0,We=b.sendTransaction?.uiOptions?.transactionInfo?.title;We||(We="approve"===Ie?qe?"Confirm address":"Confirm action":`Approve ${Ie}`);let $e=t.useMemo((()=>{if(b.sendTransaction?.uiOptions?.description)return b.sendTransaction?.uiOptions?.description;if("approve"===Ie&&"setApprovalForAll"===je&&ve.approved){let t=/*#__PURE__*/e.jsx(s.Address,{address:ve.operator||"",url:he?.blockExplorers?.default?.url});/*#__PURE__*/return e.jsxs(e.Fragment,{children:[_.name," would like your permission for ",t," to transfer tokens on your behalf."]})}if("approve"===Ie&&"setApprovalForAll"===je&&!ve.approved){let t=/*#__PURE__*/e.jsx(s.Address,{address:ve.operator||"",url:he?.blockExplorers?.default?.url});/*#__PURE__*/return e.jsxs(e.Fragment,{children:[_.name," would like your permission to revoke permissions of ",t," from transferring tokens on your behalf."]})}return qe&&"approve"===Ie||qe&&"approve"===Ie?`${_.name} would like your permission for ${i.formatWalletAddress(ve.spender)} to spend tokens on your behalf.`:`${_.name} wants your permission to approve the following transaction.`}),[_.name,qe,ve,b.sendTransaction?.uiOptions.description,je]),Le=b.sendTransaction?.uiOptions?.transactionInfo?.contractInfo?.imgUrl?/*#__PURE__*/e.jsx("img",{src:b.sendTransaction.uiOptions.transactionInfo.contractInfo.imgUrl,alt:b.sendTransaction.uiOptions.transactionInfo.contractInfo.imgAltText}):null,Ue=!(!we||we.errors[0]||we.hasFunds||!1!==W),He=Ue&&Ne,Ve=He?"Add funds":b.sendTransaction?.uiOptions?.buttonText||(w<N?"Continue":"Approve"),Ge=e=>{if(!e)throw Error("Transaction scan failed");if("Success"===e.validation.status&&("Benign"===e.validation.result_type?se("safe"):"Warning"===e.validation.result_type?se("warn"):"Malicious"===e.validation.result_type&&(se("error"),ue(!0))),"Success"!==e.simulation.status)throw Error("Simulation failed");{ne(e.simulation.params);let{assetsIn:t,assetsOut:n}=G(e.simulation.assets_diffs,e.simulation.exposures);if(0===n.length&&0===t.length)throw Error("No tokens found");ce(n),de(t)}};if(t.useEffect((()=>{b.sendTransaction?.scanTransaction&&_.embeddedWallets.transactionScanning.enabled&&"uninitiated"===me&&(ye("in progress"),b.sendTransaction.scanTransaction().then((e=>{Ge(e),ye("completed")})).catch((()=>ye("failed"))))}),[!!b.sendTransaction?.scanTransaction]),t.useEffect((()=>{b.sendTransaction?.scanTransaction&&"failed"!==me||((e,t,n)=>{if(P((e=>e?.sendTransaction?"transactionRequest"in e.sendTransaction?0:e.sendTransaction.transactionRequests.length-1:0)(b)),t.isErc20Ish&&t.amount&&n){let e=d.formatErc20TokenAmount({amount:t.amount,decimals:n.decimals});be(e),ce([{value:e,symbol:n?.symbol,decimals:n?.decimals}])}else if(e.value){let t=BigInt(e.value),n=Se?m.getDollarsFromWei(t,Se):void 0;ce(S&&n?[{value:n}]:[{value:m.parseNativeCurrencyFromWei(t),symbol:ge,decimals:18,usdValue:n}])}else ce(S?[{value:"$0"}]:[{value:"0",symbol:ge,decimals:18}])})(we?.tx??R,ve,O)}),[R,we?.tx,ve,O,me]),K/*#__PURE__*/)return e.jsx(C,{txn:we?.tx??R,onClose:Ae,receipt:K,transactionInfo:b.sendTransaction?.uiOptions.transactionInfo,tokenPrice:Se,tokenSymbol:ge,receiptHeader:b.sendTransaction?.uiOptions.successHeader,receiptDescription:b.sendTransaction?.uiOptions.successDescription});if(Z)/*#__PURE__*/return e.jsx(g.TransactionErrorView,{transactionError:Z,transactionHash:V??void 0,chainType:"ethereum",chainId:we?.tx.chainId??R.chainId,onClose:Ae,onRetry:({resetNonce:e})=>{ee(null);let t={...we?.tx??R};e&&(t.nonce=void 0),D(t)}});let Je=0!==N&&"number"==typeof w&&0!==w?()=>{A(w-1)}:void 0;return re&&te?/*#__PURE__*/e.jsx(F,{details:te,onBack:()=>ie(!1)}):/*#__PURE__*/e.jsx(g.SendTransactionScreenView,{transactionIndex:w,onBack:Je,maxIndex:N,disabled:Ue&&!Ne||oe,isSubmitting:U,submitError:Z,isPreparing:!we,isTokenPriceLoading:Fe,isTokenContractInfoLoading:!Ee&&!O,prepareError:we?.errors[0],symbol:O?.symbol,chain:he,img:Le,title:We,subtitle:$e,txValue:R.value,fee:Re??Pe,isSponsored:W,from:Te??"",to:ke,tokenAddress:xe??void 0,network:_.chains.find((e=>e.id===R.chainId))?.name??"",transactionDetails:{...ve,formattedAmount:fe},cta:Ve,missingFunds:Ue,action:Ie,balance:Be??Oe??De,onClose:Ae,onClick:He?async()=>{if(!Te)return;if(!Ne)throw Error("Funding wallet is not enabled");let e="FundingMethodSelectionScreen";h({...b,funding:{...b.funding,methodScreen:e,chainType:"ethereum",amount:n.formatEther(BigInt(we?.tx.value??0)+BigInt(we?.totalGasEstimate?.toString()??0)),chain:he},solanaFundingData:b?.solanaFundingData}),v(e)}:async()=>{if(w<N)A(w+1);else{H(!0);try{let e=await I.getAccessToken();if(U||!e||!k||!M)return;let t=await b.sendTransaction.onConfirm({transactionRequest:we?.tx??R});if(X(t),b.sendTransaction?.signOnly)return await new Promise((e=>setTimeout(e,r.DEFAULT_SUCCESS_SCREEN_DURATION_MS))),b?.sendTransaction?.onSuccess({hash:t}),j({shouldCallAuthOnSuccess:!1});let n=await _e.waitForTransactionReceipt({hash:t});if("reverted"===n.status)throw Error("Transaction failed");Y(n)}catch(e){console.warn({transaction:we?.tx??R,error:e}),ee(e)}finally{H(!1)}}},validation:ae,hasScanDetails:!!te,setIsScanDetailsOpen:ie,preventMaliciousTransaction:oe,setPreventMaliciousTransaction:ue,tokensSent:le,tokensReceived:pe,isScanning:"in progress"===me,isCancellable:b.sendTransaction?.uiOptions?.isCancellable??!1,functionName:je})}};exports.SendTransactionScreen=X,exports.default=X;