UNPKG

@privy-io/react-auth

Version:

React client for the Privy Auth API

13 lines (12 loc) • 22.8 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-N-mzBgMy.mjs";import{u as T,q as h}from"./context-DLtU3JQy.mjs";import{P as g,v,G as I}from"./use-export-wallet-_wu5ex5t.mjs";import{u as k}from"./internal-context-Z-fyxadS.mjs";import{a as j,u as E}from"./privy-context-DrMxzgOR.mjs";import{u as M}from"./useGetTokenPrice-LPJMl6JV.mjs";import{u as C}from"./useWalletBalance-RmRvKAUV.mjs";import{g as F}from"./getErc20TokenInfo-wKW6b8bj.mjs";import{f as _}from"./formatErc20TokenAmount-BuPk9xcy.mjs";import{g as w,a as x,p as N}from"./ethers-Dnv1tMN3.mjs";import{a as S}from"./useWallets-BzNCTucF.mjs";import{ErrorScreenView as A}from"./ErrorScreen-sNIfGI6q.mjs";import{styled as O}from"styled-components";import{M as R,B as D,P}from"./ModalHeader-BnVmXtvG.mjs";import{D as $}from"./JsonTree-aPaJmPx7.mjs";import{T as B,S as q}from"./TransactionErrorView-BjaCgZpa.mjs";import{R as L}from"./Layouts-BlFm53ED.mjs";import{S as W}from"./ScreenHeader-CHmc4-Lu.mjs";import{G as U}from"./useActiveWallet-CvP7iYvj.mjs";import{T as G}from"./TransactionDetails-DqFIa7IO.mjs";import{E as V}from"./transfer-6YztDh-t.mjs";import{p as H}from"./index-YDEix4mU.mjs";import"lucide-react";import"tinycolor2";import"eventemitter3";import"viem/utils";import"ofetch";import"@privy-io/are-addresses-equal";import"./useGetSolPrice-DwwjjGbd.mjs";import"./reservoir-0wfhnc0j.mjs";import"./ScreenLayout-D1p_ntex.mjs";import"./Screen-Cycy3IzT.mjs";import"./index-Dq_xe9dz.mjs";import"uuid";import"jose";import"zustand";import"react-device-detect";import"./events-context-CI0iqAXA.mjs";import"@coinbase/wallet-sdk";import"@privy-io/ethereum";import"mipd";import"@privy-io/popup";import"./paths-3HW55qZg.mjs";import"./usePrivy-C_sY2Duk.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-CEcdukTg.mjs";import"./shared-FM0rljBt.mjs";import"./Checkbox-BhNoOKjX.mjs";import"./ErrorBanner-CQERa7bL.mjs";import"@heroicons/react/24/outline/ExclamationCircleIcon";import"./WarningBanner-D5LqDt95.mjs";import"@heroicons/react/24/outline/ExclamationTriangleIcon";import"@heroicons/react/24/outline/ClipboardDocumentCheckIcon";import"@heroicons/react/24/outline/ClipboardDocumentIcon";import"./WalletLink-DNbGmOPX.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=O.div` display: flex; flex-direction: column; min-height: 72px; `;var J=({onBack:n,details:a})=>/*#__PURE__*/t(Q,{children:[/*#__PURE__*/e(R,{backFn:n}),/*#__PURE__*/e($,{data:a}),/*#__PURE__*/e(D,{})]});let X=({gasUsed:t,effectiveGasPrice:e})=>{if(t&&e)try{return l(t*e)}catch(t){return}};const K=({txn:a,receipt:s,transactionInfo:i,onClose:o,tokenPrice:r,tokenSymbol:p,receiptHeader:l,receiptDescription:u})=>/*#__PURE__*/t(n,{children:[/*#__PURE__*/e(R,{onClose:o}),/*#__PURE__*/e(W,{title:l??"Transaction complete!",description:u??"You're all set."}),/*#__PURE__*/e(G,{tokenPrice:r,from:s.from,to:s.to,gas:X(s),txn:a,transactionInfo:i,tokenSymbol:p}),/*#__PURE__*/e(U,{}),/*#__PURE__*/e(Y,{loading:!1,onClick:o,children:"All Done"}),/*#__PURE__*/e(L,{}),/*#__PURE__*/e(D,{})]});let Y=O(P)` && { 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:[{name:"to",type:"address"},{name:"amount",type:"uint256"},{name:"memo",type:"bytes32"}],name:"transferWithMemo",outputs:[{name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}],at=[{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"}],st=[{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"}],it=[{constant:!1,inputs:[{name:"_operator",type:"address"},{name:"_approved",type:"bool"}],name:"setApprovalForAll",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"}],ot=[{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"}],rt=[{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"}],pt=[{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"}],lt=(t,e)=>{let n=ut(et,t);if(n)return{action:"approve",functionName:"approve",isErc20Ish:!0,isNFTIsh:!1,spender:n.args[0],amount:n.args[1]};let a=ut(V,t);if(a)return{action:"transfer",functionName:"transfer",isErc20Ish:!0,isNFTIsh:!1,transferTo:a.args[0],amount:a.args[1]};let s=ut(nt,t);if(s)return{action:"transfer",functionName:"transferWithMemo",isErc20Ish:!0,isNFTIsh:!1,transferTo:s.args[0],amount:s.args[1]};if(!e)return{action:"transaction",functionName:"",isErc20Ish:!1,isNFTIsh:!1};let i=ut(Z,t);if(i&&"string"==typeof i.args[1]){let t=mt(i.args[1]);if(t&&t[4].encodedInitData)return lt(t[4].encodedInitData,e)}let o=ut(it,t);if(o)return{action:"approve",functionName:"setApprovalForAll",isNFTIsh:!0,isErc20Ish:!1,operator:o.args[0],approved:o.args[1]};let r=ut(ot,t);if(r)return{action:"transfer",functionName:"transferFrom",isNFTIsh:!0,isErc20Ish:!1,transferFrom:r.args[0],transferTo:r.args[1],tokenId:r.args[2]};let p=ut(st,t);if(p)return{action:"transfer",functionName:"safeTransferFrom",isNFTIsh:!0,isErc20Ish:!1,transferFrom:p.args[0],transferTo:p.args[1],tokenId:p.args[2]};let l=ut(pt,t);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 u=ut(rt,t);if(u)return{action:"batch transfer",functionName:"safeBatchTransferFrom",isNFTIsh:!0,isErc20Ish:!1,transferFrom:u.args[0],transferTo:u.args[1],tokenIds:u.args[2],amounts:u.args[3]};let m=ut(at,t);return m?{action:"mint",functionName:m.functionName,isNFTIsh:!0,isErc20Ish:!1,args:m.args}:{action:"transaction",isErc20Ish:!1,isNFTIsh:!1}};let ut=(t,e)=>{try{let n=u({abi:t,data:e});return{functionName:n.functionName,args:n.args||[]}}catch(t){return null}},mt=t=>{try{if("string"==typeof t)return m(tt,`0x${t.slice(10)}`)}catch(t){return null}},ct=t=>`${parseFloat(t).toFixed(2)}`;function dt(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?ct(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?ct(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?ct(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 yt=(t,e,n,s)=>{let[i,r]=a(null),{walletProxy:p}=k();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 ft=new g(new I("There was an issue preparing your transaction",f.E32603_DEFAULT_INTERNAL_ERROR.eipCode)),bt=(t,e)=>t?.sendTransaction?"transactionRequest"in t.sendTransaction?t.sendTransaction.transactionRequest:t.sendTransaction.transactionRequests[e]:void 0;const Tt={component:()=>{let{data:l,onUserCloseViaDialogOrKeybindRef:u,setModalData:m,navigate:O}=j(),{client:R,rpcConfig:D,chains:P,closePrivyModal:$,walletProxy:L,showFiatPrices:W}=k(),{user:U}=E(),G=T(),[V,H]=a(0),[Q,X]=a(0),[Y,Z]=a(bt(l,V)),[tt,et]=a(null),[nt,at]=a(),[st,it]=a(!1),[ot,rt]=a(null),[pt,ut]=a(null),[mt,ct]=a(null),[Tt,ht]=a(void 0),[gt,vt]=a(void 0),[It,kt]=a(!1),[jt,Et]=a(!1),[Mt,Ct]=a([]),[Ft,_t]=a([]),[wt,xt]=a("uninitiated"),[Nt,St]=a(void 0);if(!Y||!l?.sendTransaction||!l?.sendTransaction)/*#__PURE__*/return e(A,{error:Error("Invalid transaction request"),allowlistConfig:G.allowlistConfig,onRetry:()=>{l?.sendTransaction?.onFailure(ft),$({shouldCallAuthOnSuccess:!1})}});let{transactingWalletAddress:At}=l.sendTransaction,Ot=s((()=>P.find((t=>Number(t.id)===Number(Y.chainId)))),[Y.chainId]),Rt=Ot?.nativeCurrency.symbol??"ETH",Dt=s((()=>lt(Y.data,!!G.embeddedWallets.extendedCalldataDecoding)),[Y.data]),{action:Pt,isErc20Ish:$t,isNFTIsh:Bt,functionName:qt}=Dt,{toAddress:Lt,tokenAddress:Wt}=s((()=>({toAddress:Dt.isErc20Ish?Dt.transferTo:Y.to??void 0,tokenAddress:Dt.isErc20Ish?Y.to:void 0})),[Dt]);o((()=>{Y.to&&Ot&&$t&&F({address:Y.to,chain:Ot,rpcConfig:G.rpcConfig,privyAppId:G.id}).then(et).catch(console.error)}),[Y.to,Ot]);let{tokenPrice:Ut,isTokenPriceLoading:Gt}=M(Y.chainId),{balance:Vt}=C({rpcConfig:G.rpcConfig,appId:G.id,address:At,chain:Ot}),Ht=function({rpcConfig:t,appId:e,address:n,chain:l,tokenInfo:u}){let{chains:m}=k(),[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:G.rpcConfig,appId:G.id,address:At,tokenInfo:{address:Wt||"",decimals:tt?.decimals??18},chain:Ot}),zt=s((()=>S(Number(Y.chainId),P,D,{appId:G.id})),[Y.chainId,D]),Qt=yt(Y,At,zt,l?.sendTransaction?.prepareTransactionRequest);o((()=>{Z(bt(l,V))}),[V]),o((()=>{l.sendTransaction?.getIsSponsored?l.sendTransaction.getIsSponsored().then(at).catch(console.error):at(!1)}),[l.sendTransaction.getIsSponsored]);let Jt=()=>{if(!st)return ot?l?.sendTransaction?.onSuccess({hash:ot}):mt||Qt?.errors[0]?l?.sendTransaction?.onFailure(mt??Qt?.errors[0]??ft):l?.sendTransaction?.onFailure(new g(new I("The user rejected the request",f.E4001_USER_REJECTED_REQUEST.eipCode))),$({shouldCallAuthOnSuccess:!1})};u.current=Jt;let Xt=!!(l.funding&&l.funding.supportedOptions.length>0),Kt=w(BigInt(Qt?.totalGasEstimate??0n),Rt),Yt=W&&Ut?x(BigInt(Qt?.totalGasEstimate??0n),Ut):void 0,Zt=w(Vt??0n,Rt,void 0,!0),te=W&&Ut?x(Vt??0n,Ut):void 0,ee=tt&&!Ht.isLoading&&$t&&"approve"!==Pt?`${Ht.formattedBalance} ${tt.symbol}`:void 0,ne=l.sendTransaction?.uiOptions?.transactionInfo?.title;ne||(ne="approve"===Pt?$t?"Confirm address":"Confirm action":`Approve ${Pt}`);let ae=s((()=>{if(l.sendTransaction?.uiOptions?.description)return l.sendTransaction?.uiOptions?.description;if("approve"===Pt&&"setApprovalForAll"===qt&&Dt.approved){let a=/*#__PURE__*/e(b,{address:Dt.operator||"",url:Ot?.blockExplorers?.default?.url});/*#__PURE__*/return t(n,{children:[G.name," would like your permission for ",a," to transfer tokens on your behalf."]})}if("approve"===Pt&&"setApprovalForAll"===qt&&!Dt.approved){let a=/*#__PURE__*/e(b,{address:Dt.operator||"",url:Ot?.blockExplorers?.default?.url});/*#__PURE__*/return t(n,{children:[G.name," would like your permission to revoke permissions of ",a," from transferring tokens on your behalf."]})}return $t&&"approve"===Pt||$t&&"approve"===Pt?`${G.name} would like your permission for ${v(Dt.spender)} to spend tokens on your behalf.`:`${G.name} wants your permission to approve the following transaction.`}),[G.name,$t,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=!(!Qt||Qt.errors[0]||Qt.hasFunds||!1!==nt),oe=ie&&Xt,re=oe?"Add funds":l.sendTransaction?.uiOptions?.buttonText||(V<Q?"Continue":"Approve"),pe=t=>{if(!t)throw Error("Transaction scan failed");if("Success"===t.validation.status&&("Benign"===t.validation.result_type?vt("safe"):"Warning"===t.validation.result_type?vt("warn"):"Malicious"===t.validation.result_type&&(vt("error"),Et(!0))),"Success"!==t.simulation.status)throw Error("Simulation failed");{ht(t.simulation.params);let{assetsIn:e,assetsOut:n}=dt(t.simulation.assets_diffs,t.simulation.exposures);if(0===n.length&&0===e.length)throw Error("No tokens found");Ct(n),_t(e)}};if(o((()=>{l.sendTransaction?.scanTransaction&&G.embeddedWallets.transactionScanning.enabled&&"uninitiated"===wt&&(xt("in progress"),l.sendTransaction.scanTransaction().then((t=>{pe(t),xt("completed")})).catch((()=>xt("failed"))))}),[!!l.sendTransaction?.scanTransaction]),o((()=>{l.sendTransaction?.scanTransaction&&"failed"!==wt||((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=_({amount:e.amount,decimals:n.decimals});St(t),Ct([{value:t,symbol:n?.symbol,decimals:n?.decimals}])}else if(t.value){let e=BigInt(t.value),n=Ut?x(e,Ut):void 0;Ct(W&&n?[{value:n}]:[{value:N(e),symbol:Rt,decimals:18,usdValue:n}])}else Ct(W?[{value:"$0"}]:[{value:"0",symbol:Rt,decimals:18}])})(Qt?.tx??Y,Dt,tt)}),[Y,Qt?.tx,Dt,tt,wt]),pt/*#__PURE__*/)return e(K,{txn:Qt?.tx??Y,onClose:Jt,receipt:pt,transactionInfo:l.sendTransaction?.uiOptions.transactionInfo,tokenPrice:Ut,tokenSymbol:Rt,receiptHeader:l.sendTransaction?.uiOptions.successHeader,receiptDescription:l.sendTransaction?.uiOptions.successDescription});if(mt)/*#__PURE__*/return e(B,{transactionError:mt,transactionHash:ot??void 0,chainType:"ethereum",chainId:Qt?.tx.chainId??Y.chainId,onClose:Jt,onRetry:({resetNonce:t})=>{ct(null);let e={...Qt?.tx??Y};t&&(e.nonce=void 0),Z(e)}});let le=0!==Q&&"number"==typeof V&&0!==V?()=>{H(V-1)}:void 0;return It&&Tt?/*#__PURE__*/e(J,{details:Tt,onBack:()=>kt(!1)}):/*#__PURE__*/e(q,{transactionIndex:V,onBack:le,maxIndex:Q,disabled:ie&&!Xt||jt,isSubmitting:st,submitError:mt,isPreparing:!Qt,isTokenPriceLoading:Gt,isTokenContractInfoLoading:!Bt&&!tt,prepareError:Qt?.errors[0],symbol:tt?.symbol,chain:Ot,img:se,title:ne,subtitle:ae,txValue:Y.value,fee:Yt??Kt,isSponsored:nt,from:At??"",to:Lt,tokenAddress:Wt??void 0,network:G.chains.find((t=>t.id===Y.chainId))?.name??"",transactionDetails:{...Dt,formattedAmount:Nt},cta:re,missingFunds:ie,action:Pt,balance:ee??te??Zt,onClose:Jt,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(Qt?.tx.value??0)+BigInt(Qt?.totalGasEstimate?.toString()??0)),chain:Ot},solanaFundingData:l?.solanaFundingData}),O(t)}:async()=>{if(V<Q)H(V+1);else{it(!0);try{let t=await R.getAccessToken();if(st||!t||!L||!U)return;let e=await l.sendTransaction.onConfirm({transactionRequest:Qt?.tx??Y});if(rt(e),l.sendTransaction?.signOnly)return await new Promise((t=>setTimeout(t,h))),l?.sendTransaction?.onSuccess({hash:e}),$({shouldCallAuthOnSuccess:!1});let n=await zt.waitForTransactionReceipt({hash:e});if("reverted"===n.status)throw Error("Transaction failed");ut(n)}catch(t){console.warn({transaction:Qt?.tx??Y,error:t}),ct(t)}finally{it(!1)}}},validation:gt,hasScanDetails:!!Tt,setIsScanDetailsOpen:kt,preventMaliciousTransaction:jt,setPreventMaliciousTransaction:Et,tokensSent:Mt,tokensReceived:Ft,isScanning:"in progress"===wt,isCancellable:l.sendTransaction?.uiOptions?.isCancellable??!1,functionName:qt})}};export{Tt as SendTransactionScreen,Tt as default};