UNPKG

@privy-io/react-auth

Version:

React client for the Privy Auth API

2 lines (1 loc) • 22.6 kB
import{jsxs as t,jsx as e,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-BsvZLUXE.mjs";import{u as T,q as h}from"./context-Bycd1SKV.mjs";import{P as g,j as I}from"./prepareFundingModalData-CIgFwA7s.mjs";import{u as v}from"./internal-context-e-Eni5bG.mjs";import{a as k,u as j}from"./get-is-unified-wallet-DvKS5IUO.mjs";import{u as E}from"./useGetTokenPrice-0Bn0Y88A.mjs";import{u as C}from"./useWalletBalance-CkNw6kj0.mjs";import{g as M}from"./getErc20TokenInfo-BFoeg5F6.mjs";import{f as w}from"./formatErc20TokenAmount-BuPk9xcy.mjs";import{g as F,a as _,p as x}from"./ethers-C3Y94dat.mjs";import{Y as N,D as S}from"./useActiveWallet-Bsy5GTCV.mjs";import{g as A}from"./getPublicClient-A9RSftUZ.mjs";import{ErrorScreenView as O}from"./ErrorScreen-BdxNEgU1.mjs";import{styled as R}from"styled-components";import{M as D,B}from"./ModalHeader-BLGC-7ev.mjs";import{D as P}from"./JsonTree-Bvd2C29R.mjs";import{T as $,S as q}from"./TransactionErrorView-CfyBAYzV.mjs";import{P as L}from"./Button-B8mqatRx.mjs";import{R as U}from"./Layouts-Bmf8DxNP.mjs";import{S as W}from"./ScreenHeader-Biz1wq02.mjs";import{T as V}from"./TransactionDetails-Bb1NEpUH.mjs";import{E as G}from"./transfer-CMPmjPsM.mjs";import{p as H}from"./index-CCyaupaz.mjs";import"lucide-react";import"tinycolor2";import"eventemitter3";import"ofetch";import"./useGetSolPrice-Cfm8o9C5.mjs";import"zustand";import"react-device-detect";import"./events-context-CI0iqAXA.mjs";import"viem/utils";import"./useWallets-D0lpBS44.mjs";import"./reservoir-kvLjIrEo.mjs";import"./ScreenLayout-CddsD3Of.mjs";import"./Screen-BTyXgDrd.mjs";import"./index-CJMgUOnw.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-BaiIHGte.mjs";import"@scure/base";import"@headlessui/react";import"@walletconnect/ethereum-provider";import"@privy-io/urls";import"js-cookie";import"./frame-CwE9r3cT.mjs";import"@privy-io/routes";import"x402/client";import"@privy-io/api-base";import"viem/accounts";import"./use-sign-with-user-signer-eEm9Olt_.mjs";import"./getEmbeddedConnectedWallet-CM6cDQCS.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-B4M62ove.mjs";import"./LoadingSkeleton-CHdaq3pb.mjs";import"./Row-CG0lSY5Z.mjs";import"./ErrorMessage-Cx8GKGhL.mjs";import"./LabelXs-BOisBtqT.mjs";import"./Subtitle-DkvfP2Ev.mjs";import"./Title-D0pfZff-.mjs";import"./WalletInfoCard-YE5P6CSV.mjs";import"./shared-CtYf3O54.mjs";import"./Checkbox-NmGCZeKL.mjs";import"./ErrorBanner-BdiArMwu.mjs";import"@heroicons/react/24/outline/ExclamationCircleIcon";import"./WarningBanner-BDp-QC9i.mjs";import"@heroicons/react/24/outline/ExclamationTriangleIcon";import"@heroicons/react/24/outline/ClipboardDocumentCheckIcon";import"@heroicons/react/24/outline/ClipboardDocumentIcon";import"./WalletLink-C9CSqqVy.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"}],J=/*#__PURE__*/R.div.withConfig({displayName:"Container",componentId:"sc-31acb2bc-0"})(["display:flex;flex-direction:column;min-height:72px;"]);var Q=({onBack:n,details:a})=>/*#__PURE__*/t(J,{children:[/*#__PURE__*/e(D,{backFn:n}),/*#__PURE__*/e(P,{data:a}),/*#__PURE__*/e(B,{})]});let X=({gasUsed:t,effectiveGasPrice:e})=>{if(t&&e)try{return l(t*e)}catch(t){return}};const Y=({txn:a,receipt:s,transactionInfo:i,onClose:o,tokenPrice:r,tokenSymbol:p,receiptHeader:l,receiptDescription:u})=>/*#__PURE__*/t(n,{children:[/*#__PURE__*/e(D,{onClose:o}),/*#__PURE__*/e(W,{title:l??"Transaction complete!",description:u??"You're all set."}),/*#__PURE__*/e(V,{tokenPrice:r,from:s.from,to:s.to,gas:X(s),txn:a,transactionInfo:i,tokenSymbol:p}),/*#__PURE__*/e(N,{}),/*#__PURE__*/e(K,{loading:!1,onClick:o,children:"All Done"}),/*#__PURE__*/e(U,{}),/*#__PURE__*/e(B,{})]});let K=/*#__PURE__*/R(L).withConfig({displayName:"SubmitButton",componentId:"sc-f70d0f7a-0"})(["&&{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"}],tt=[{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"}]}],et=[{constant:!1,inputs:[{name:"spender",type:"address"},{name:"value",type:"uint256"}],name:"approve",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"}],nt=[{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"}],at=[{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"}],st=[{constant:!1,inputs:[{name:"_operator",type:"address"},{name:"_approved",type:"bool"}],name:"setApprovalForAll",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"}],it=[{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"}],ot=[{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"}],rt=[{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"}],pt=(t,e)=>{let n=lt(et,t);if(n)return{action:"approve",functionName:"approve",isErc20Ish:!0,isNFTIsh:!1,spender:n.args[0],amount:n.args[1]};let a=lt(G,t);if(a)return{action:"transfer",functionName:"transfer",isErc20Ish:!0,isNFTIsh:!1,transferTo:a.args[0],amount:a.args[1]};if(!e)return{action:"transaction",functionName:"",isErc20Ish:!1,isNFTIsh:!1};let s=lt(Z,t);if(s&&"string"==typeof s.args[1]){let t=ut(s.args[1]);if(t&&t[4].encodedInitData)return pt(t[4].encodedInitData,e)}let i=lt(st,t);if(i)return{action:"approve",functionName:"setApprovalForAll",isNFTIsh:!0,isErc20Ish:!1,operator:i.args[0],approved:i.args[1]};let o=lt(it,t);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=lt(at,t);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=lt(rt,t);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=lt(ot,t);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=lt(nt,t);return u?{action:"mint",functionName:u.functionName,isNFTIsh:!0,isErc20Ish:!1,args:u.args}:{action:"transaction",isErc20Ish:!1,isNFTIsh:!1}};let lt=(t,e)=>{try{let n=u({abi:t,data:e});return{functionName:n.functionName,args:n.args||[]}}catch(t){return null}},ut=t=>{try{if("string"==typeof t)return m(tt,`0x${t.slice(10)}`)}catch(t){return null}},mt=t=>`${parseFloat(t).toFixed(2)}`;function ct(t,e){let n=[],a=new Map;if(t)for(let e of t)if(e.in[0]){let t;t="ERC721"===e.asset.type||"approve_for_all"===e.in[0].value?{id:`nft:${e.asset.name}`,nftName:e.asset.name,nftCount:e.in.length}:{id:`token:${e.asset.type}:${e.asset.symbol}:${e.asset.name}`,iconUrl:e.asset.logo_url,value:e.in[0].value,symbol:e.asset.symbol,usdValue:e.in[0].usd_price?mt(e.in[0].usd_price):void 0,decimals:e.asset.decimals},n.push(t)}else if(e.out[0]?.value){let t;t="ERC721"===e.asset.type||"approve_for_all"===e.out[0].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.out[0].value,symbol:e.asset.symbol,usdValue:e.out[0].usd_price?mt(e.out[0].usd_price):void 0,decimals:e.asset.decimals},a.has(t.id)||a.set(t.id,t)}for(let t of e)for(let e of Object.keys(t.spenders)){let n;n="ERC721"===t.asset.type||"approve_for_all"===t.spenders[e]?.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.spenders[e]?.value,symbol:t.asset.symbol,usdValue:t.spenders[e]?.usd_price?mt(t.spenders[e]?.usd_price):void 0,decimals:t.asset.decimals},a.has(n.id)||a.set(n.id,n)}return{assetsIn:n,assetsOut:Array.from(a.values())}}const dt=(t,e,n,s)=>{let[i,r]=a(null),{walletProxy:p}=v();return o((()=>{i&&r(null),(async()=>{if(!p||!e)return null;let a=[],i=!0,o=await H(t,n,e,s).catch((e=>(e.message&&e.message.includes("Insufficient balance for transaction")||e.message&&e.message.includes("Insufficient funds for gas * price + value")||e.details&&e.details.includes("insufficient funds")?i=!1:a.push(e),t)));return{tx:o,totalGasEstimate:o.gas,hasFunds:i,errors:a}})().then(r)}),[t]),i};let yt=new g(new I("There was an issue preparing your transaction",f.E32603_DEFAULT_INTERNAL_ERROR.eipCode)),ft=(t,e)=>t?.sendTransaction?"transactionRequest"in t.sendTransaction?t.sendTransaction.transactionRequest:t.sendTransaction.transactionRequests[e]:void 0;const bt={component:()=>{let{data:l,onUserCloseViaDialogOrKeybindRef:u,setModalData:m,navigate:N}=k(),{client:R,rpcConfig:D,chains:B,closePrivyModal:P,walletProxy:L,showFiatPrices:U}=v(),{user:W}=j(),V=T(),[G,H]=a(0),[J,X]=a(0),[K,Z]=a(ft(l,G)),[tt,et]=a(null),[nt,at]=a(),[st,it]=a(!1),[ot,rt]=a(null),[lt,ut]=a(null),[mt,bt]=a(null),[Tt,ht]=a(void 0),[gt,It]=a(void 0),[vt,kt]=a(!1),[jt,Et]=a(!1),[Ct,Mt]=a([]),[wt,Ft]=a([]),[_t,xt]=a("uninitiated"),[Nt,St]=a(void 0);if(!K||!l?.sendTransaction||!l?.sendTransaction)/*#__PURE__*/return e(O,{error:Error("Invalid transaction request"),allowlistConfig:V.allowlistConfig,onRetry:()=>{l?.sendTransaction?.onFailure(yt),P({shouldCallAuthOnSuccess:!1})}});let{transactingWalletAddress:At}=l.sendTransaction,Ot=s((()=>B.find((t=>Number(t.id)===Number(K.chainId)))),[K.chainId]),Rt=Ot?.nativeCurrency.symbol??"ETH",Dt=s((()=>pt(K.data,!!V.embeddedWallets.extendedCalldataDecoding)),[K.data]),{action:Bt,isErc20Ish:Pt,isNFTIsh:$t,functionName:qt}=Dt,{toAddress:Lt,tokenAddress:Ut}=s((()=>({toAddress:Dt.isErc20Ish?Dt.transferTo:K.to??void 0,tokenAddress:Dt.isErc20Ish?K.to:void 0})),[Dt]);o((()=>{K.to&&Ot&&Pt&&M({address:K.to,chain:Ot,rpcConfig:V.rpcConfig,privyAppId:V.id}).then(et).catch(console.error)}),[K.to,Ot]);let{tokenPrice:Wt,isTokenPriceLoading:Vt}=E(K.chainId),{balance:Gt}=C({rpcConfig:V.rpcConfig,appId:V.id,address:At,chain:Ot}),Ht=function({rpcConfig:t,appId:e,address:n,chain:l,tokenInfo:u}){let{chains:m}=v(),[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,t,e))})}),[l,t,e]),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(t){console.error(t)}finally{T(!1)}}),[h,n,u?.address,l]);return o((()=>{g().then((t=>null!=t&&f(t)))}),[g]),{balance:c,isLoading:b&&null==c,formattedBalance:y({amount:c??BigInt(0),decimals:u.decimals})}}({rpcConfig:V.rpcConfig,appId:V.id,address:At,tokenInfo:{address:Ut||"",decimals:tt?.decimals??18},chain:Ot}),zt=s((()=>A(Number(K.chainId),B,D,{appId:V.id})),[K.chainId,D]),Jt=dt(K,At,zt,l?.sendTransaction?.prepareTransactionRequest);o((()=>{Z(ft(l,G))}),[G]),o((()=>{l.sendTransaction?.getIsSponsored?l.sendTransaction.getIsSponsored().then(at).catch(console.error):at(!1)}),[l.sendTransaction.getIsSponsored]);let Qt=()=>{if(!st)return ot?l?.sendTransaction?.onSuccess({hash:ot}):mt||Jt?.errors[0]?l?.sendTransaction?.onFailure(mt??Jt?.errors[0]??yt):l?.sendTransaction?.onFailure(new g(new I("The user rejected the request",f.E4001_USER_REJECTED_REQUEST.eipCode))),P({shouldCallAuthOnSuccess:!1})};u.current=Qt;let Xt=!!(l.funding&&l.funding.supportedOptions.length>0),Yt=F(BigInt(Jt?.totalGasEstimate??0n),Rt),Kt=U&&Wt?_(BigInt(Jt?.totalGasEstimate??0n),Wt):void 0,Zt=F(Gt??0n,Rt,void 0,!0),te=U&&Wt?_(Gt??0n,Wt):void 0,ee=tt&&!Ht.isLoading&&Pt&&"approve"!==Bt?`${Ht.formattedBalance} ${tt.symbol}`:void 0,ne=l.sendTransaction?.uiOptions?.transactionInfo?.title;ne||(ne="approve"===Bt?Pt?"Confirm address":"Confirm action":`Approve ${Bt}`);let ae=s((()=>{if(l.sendTransaction?.uiOptions?.description)return l.sendTransaction?.uiOptions?.description;if("approve"===Bt&&"setApprovalForAll"===qt&&Dt.approved){let a=/*#__PURE__*/e(b,{address:Dt.operator||"",url:Ot?.blockExplorers?.default?.url});/*#__PURE__*/return t(n,{children:[V.name," would like your permission for ",a," to transfer tokens on your behalf."]})}if("approve"===Bt&&"setApprovalForAll"===qt&&!Dt.approved){let a=/*#__PURE__*/e(b,{address:Dt.operator||"",url:Ot?.blockExplorers?.default?.url});/*#__PURE__*/return t(n,{children:[V.name," would like your permission to revoke permissions of ",a," from transferring tokens on your behalf."]})}return Pt&&"approve"===Bt||Pt&&"approve"===Bt?`${V.name} would like your permission for ${S(Dt.spender)} to spend tokens on your behalf.`:`${V.name} wants your permission to approve the following transaction.`}),[V.name,Pt,Dt,l.sendTransaction?.uiOptions.description,qt]),se=l.sendTransaction?.uiOptions?.transactionInfo?.contractInfo?.imgUrl?/*#__PURE__*/e("img",{src:l.sendTransaction.uiOptions.transactionInfo.contractInfo.imgUrl,alt:l.sendTransaction.uiOptions.transactionInfo.contractInfo.imgAltText}):null,ie=!(!Jt||Jt.errors[0]||Jt.hasFunds||!1!==nt),oe=ie&&Xt,re=oe?"Add funds":l.sendTransaction?.uiOptions?.buttonText||(G<J?"Continue":"Approve"),pe=t=>{if(!t)throw Error("Transaction scan failed");if("Success"===t.validation.status&&("Benign"===t.validation.result_type?It("safe"):"Warning"===t.validation.result_type?It("warn"):"Malicious"===t.validation.result_type&&(It("error"),Et(!0))),"Success"!==t.simulation.status)throw Error("Simulation failed");{ht(t.simulation.params);let{assetsIn:e,assetsOut:n}=ct(t.simulation.assets_diffs,t.simulation.exposures);if(0===n.length&&0===e.length)throw Error("No tokens found");Mt(n),Ft(e)}};if(o((()=>{l.sendTransaction?.scanTransaction&&V.embeddedWallets.transactionScanning.enabled&&"uninitiated"===_t&&(xt("in progress"),l.sendTransaction.scanTransaction().then((t=>{pe(t),xt("completed")})).catch((()=>xt("failed"))))}),[!!l.sendTransaction?.scanTransaction]),o((()=>{l.sendTransaction?.scanTransaction&&"failed"!==_t||((t,e,n)=>{if(X((t=>t?.sendTransaction?"transactionRequest"in t.sendTransaction?0:t.sendTransaction.transactionRequests.length-1:0)(l)),e.isErc20Ish&&e.amount&&n){let t=w({amount:e.amount,decimals:n.decimals});St(t),Mt([{value:t,symbol:n?.symbol,decimals:n?.decimals}])}else if(t.value){let e=BigInt(t.value),n=Wt?_(e,Wt):void 0;Mt(U&&n?[{value:n}]:[{value:x(e),symbol:Rt,decimals:18,usdValue:n}])}else Mt(U?[{value:"$0"}]:[{value:"0",symbol:Rt,decimals:18}])})(Jt?.tx??K,Dt,tt)}),[K,Jt?.tx,Dt,tt,_t]),lt/*#__PURE__*/)return e(Y,{txn:Jt?.tx??K,onClose:Qt,receipt:lt,transactionInfo:l.sendTransaction?.uiOptions.transactionInfo,tokenPrice:Wt,tokenSymbol:Rt,receiptHeader:l.sendTransaction?.uiOptions.successHeader,receiptDescription:l.sendTransaction?.uiOptions.successDescription});if(mt)/*#__PURE__*/return e($,{transactionError:mt,transactionHash:ot??void 0,chainType:"ethereum",chainId:Jt?.tx.chainId??K.chainId,onClose:Qt,onRetry:({resetNonce:t})=>{bt(null);let e={...Jt?.tx??K};t&&(e.nonce=void 0),Z(e)}});let le=0!==J&&"number"==typeof G&&0!==G?()=>{H(G-1)}:void 0;return vt&&Tt?/*#__PURE__*/e(Q,{details:Tt,onBack:()=>kt(!1)}):/*#__PURE__*/e(q,{transactionIndex:G,onBack:le,maxIndex:J,disabled:ie&&!Xt||jt,isSubmitting:st,submitError:mt,isPreparing:!Jt,isTokenPriceLoading:Vt,isTokenContractInfoLoading:!$t&&!tt,prepareError:Jt?.errors[0],symbol:tt?.symbol,chain:Ot,img:se,title:ne,subtitle:ae,txValue:K.value,fee:Kt??Yt,isSponsored:nt,from:At??"",to:Lt,tokenAddress:Ut??void 0,network:V.chains.find((t=>t.id===K.chainId))?.name??"",transactionDetails:{...Dt,formattedAmount:Nt},cta:re,missingFunds:ie,action:Bt,balance:ee??te??Zt,onClose:Qt,onClick:oe?async()=>{if(!At)return;if(!Xt)throw Error("Funding wallet is not enabled");let t="FundingMethodSelectionScreen";m({...l,funding:{...l.funding,methodScreen:t,chainType:"ethereum",amount:c(BigInt(Jt?.tx.value??0)+BigInt(Jt?.totalGasEstimate?.toString()??0)),chain:Ot},solanaFundingData:l?.solanaFundingData}),N(t)}:async()=>{if(G<J)H(G+1);else{it(!0);try{let t=await R.getAccessToken();if(st||!t||!L||!W)return;let e=await l.sendTransaction.onConfirm({transactionRequest:Jt?.tx??K});if(rt(e),l.sendTransaction?.signOnly)return await new Promise((t=>setTimeout(t,h))),l?.sendTransaction?.onSuccess({hash:e}),P({shouldCallAuthOnSuccess:!1});let n=await zt.waitForTransactionReceipt({hash:e});if("reverted"===n.status)throw Error("Transaction failed");ut(n)}catch(t){console.warn({transaction:Jt?.tx??K,error:t}),bt(t)}finally{it(!1)}}},validation:gt,hasScanDetails:!!Tt,setIsScanDetailsOpen:kt,preventMaliciousTransaction:jt,setPreventMaliciousTransaction:Et,tokensSent:Ct,tokensReceived:wt,isScanning:"in progress"===_t,isCancellable:l.sendTransaction?.uiOptions?.isCancellable??!1,functionName:qt})}};export{bt as SendTransactionScreen,bt as default};