1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8492],{3381:(e,t,a)=>{a.d(t,{g:()=>r});var n=a(6927),i=a(18449);function r(e,t="wei"){return(0,i.X)(e,n.eL[t])}},18449:(e,t,a)=>{a.d(t,{X:()=>r});var n=a(76200);class i extends n.C{constructor({value:e}){super(`Number \`${e}\` is not a valid decimal number.`,{name:"InvalidDecimalNumberError"})}}function r(e,t){if(!/^(-?)([0-9]*)\.?([0-9]*)$/.test(e))throw new i({value:e});let[a,n="0"]=e.split("."),r=a.startsWith("-");if(r&&(a=a.slice(1)),n=n.replace(/(0+)$/,""),0===t)1===Math.round(Number(`.${n}`))&&(a=`${BigInt(a)+1n}`),n="";else if(n.length>t){let[e,i,r]=[n.slice(0,t-1),n.slice(t-1,t),n.slice(t)],s=Math.round(Number(`${i}.${r}`));(n=s>9?`${BigInt(e)+BigInt(1)}0`.padStart(e.length+1,"0"):`${e}${s}`).length>t&&(n=n.slice(1),a=`${BigInt(a)+1n}`),n=n.slice(0,t)}else n=n.padEnd(t,"0");return BigInt(`${r?"-":""}${a}${n}`)}},28492:(e,t,a)=>{a.r(t),a.d(t,{AwaitingExternalEthereumTransferScreen:()=>_,default:()=>_});var n=a(37876),i=a(372),r=a(14232),s=a(3381),d=a(57757),o=a(70238),c=a(91553),l=a(45160),u=a(98357),h=a(14237),g=a(32602),f=a(30257),m=a(93084),p=a(82965),v=a(25583),y=a(59921),b=a(71798),C=a(58563),I=a(8627),T=a(55927),w=a(49482),E=a(72871),S=a(79408),x=a(99764),N=a(70291),A=a(2170),B=a(11424),$=a(91641),F=a(59419),j=a(47767),k=a(15442),U=a(1750),M=a(75003);a(62465),a(94085),a(13799),a(29454),a(87808);let _={component:()=>{let{rpcConfig:e,appId:t,closePrivyModal:a,createAnalyticsEvent:_}=(0,I.u)(),{navigate:D,setModalData:H,data:L}=(0,w.a)(),P=(0,C.u)(),{wallets:W}=(0,S.u)(),[q,Q]=(0,r.useState)(!1),[R,J]=(0,r.useState)(0n),[O,V]=(0,r.useState)(!1),[X,Y]=(0,r.useState)(null),[z,G]=(0,r.useState)(null),[K,Z]=(0,r.useState)([]),[ee,et]=(0,r.useState)(0),[ea,en]=(0,r.useState)(!1),[ei,er]=(0,r.useState)(!1),[es,ed]=(0,r.useState)(!1),[eo,ec]=(0,r.useState)(!1),[el,eu]=(0,r.useState)(),[eh,eg]=(0,r.useState)();if(!L?.funding||"ethereum"!==L.funding.chainType)throw Error("Invalid funding data");let{erc20ContractInfo:ef,chain:em,connectedWallet:ep}=L.funding,ev=L.funding.address,ey=L.funding.erc20Address,[eb,eC]=(0,r.useState)(L.funding.amount);(0,r.useEffect)(()=>{ey&&!ef&&Y(Error("Unable to fetch token details"))},[]);let eI=!!ey&&!!ef,eT=eI?BigInt(parseFloat(eb)*10**ef.decimals):(0,s.g)(eb),ew=("ethereum"===ep?.type?ep:void 0)??W[0],eE=(0,T.Q)(ew?.walletClientType||"unknown"),eS=eE?.name||"wallet",[ex,eN]=(0,r.useState)(null);(0,r.useEffect)(()=>{(async()=>{if(!ew)return;let e=await ew.getEthereumProvider();eN((0,d.F)({account:ew.address,transport:(0,o.I)(e)}).extend(c.$))})().catch(console.error)},[ew]);let[eA,eB]=(0,r.useState)(0n);(0,r.useEffect)(()=>{(0,l.l)({chain:em,transport:(0,u.L)((0,U.a)(em,e,t))}).getBalance({address:ev}).then(eB).catch(console.error)},[]);let[e$,eF]=(0,r.useState)(0n);(0,r.useEffect)(()=>{eI&&(0,k.g)({chain:em,address:ev,appId:t,rpcConfig:e,erc20Address:ey}).then(e=>eF(e.balance)).catch(console.error)},[]);let{tokenPrice:ej}=(0,E.u)(em.id),[ek,eU]=(0,r.useState)({to:ev,chain:em,value:eT,data:void 0});(0,r.useEffect)(()=>{(async()=>{let a,n;if(!ex||!ew||ea||es)return;en(!0);let i=(0,l.l)({chain:ek.chain,transport:(0,u.L)((0,U.a)(ek.chain,e,t))});if(eI&&!ek.data)return await i.simulateContract({address:ey,chain:ek.chain,abi:x.E,functionName:"transfer",args:[ev,eT],account:ew.address}).catch(e=>{console.warn("Simulated token transfer failed with error, fetching bridge options.",e)})?(en(!1),void eU({to:ey,chain:ek.chain,data:(0,h.p)({abi:x.E,functionName:"transfer",args:[ev,eT]}),value:"0x0"})):(en(!1),void V(!0));try{a=await i.prepareTransactionRequest({account:ew.address,to:ek.to,chain:ek.chain,data:ek.data,value:BigInt(ek.value??0)})}catch(e){if(console.error(e),K.length>1)G(e.shortMessage??"Something went wrong");else if(ei&&0===K.length)return void Y(new I.a(`Wallet ${(0,T.D)(ew.address)} does not have enough funds.`,void 0,I.b.INSUFFICIENT_BALANCE))}if(!a)return en(!1),void V(!0);en(!1),ed(!0),Q(!0),J(a.gas);try{await ex.switchChain({id:ek.chain.id})}catch(e){await ex.addChain({chain:ek.chain}),await ex.switchChain({id:ek.chain.id})}try{n=await ex.sendTransaction(a)}catch(e){if(console.error(e),"TransactionExecutionError"===e.name)if(K.length<1){let t=e.shortMessage;(e.shortMessage.includes("rejected the request")||e.details.includes("rejected the request"))&&(t="User rejected the request."),Y(new I.a(t,void 0,I.b.TRANSACTION_FAILURE))}else G(e.shortMessage??"Something went wrong")}n?(await ex.waitForTransactionReceipt({hash:n}),ed(!1),ei?(eu(n),eg("pending")):(ec(!0),H((0,F.x)(L,"completed",n,ew?.walletClientType,eI,ef,em)),_({eventName:B.O,payload:{provider:"external",status:"success",txHash:n,address:ew.address,chainId:ek.chain.id,chainType:"ethereum",value:ek.value?(0,g.J)(BigInt(ek.value),ef?.decimals??18):void 0,token:ef?.symbol??ey??"ETH",destinationAddress:ev,destinationChainId:em.id,destinationChainType:"ethereum",destinationValue:eT?(0,g.J)(eT,ef?.decimals??18):void 0,destinationToken:ef?.symbol??ey??em.nativeCurrency.name}}))):ed(!1)})().catch(console.error)},[ex,ek]),(0,r.useEffect)(()=>{(async()=>
1{if(!O||!ex||!ew)return;let a=(0,f.u)(P.chains).filter(e=>e.id!==em.id&&!!e.testnet==!!em.testnet);eI&&a.unshift(em);let n=await (0,j.g)({chains:a,address:ew.address,appId:t,rpcConfig:e,includeUsdc:L.funding?.isUSDC}),i=eI?n.filter(e=>e.balance>0n):n.filter(e=>e.balance>eT),r=eI&&n.every(e=>0n===e.balance);if(i.length<1)return void Y(new I.a(r?`Wallet ${(0,T.D)(ew.address)} doesn't have enough funds to cover gas fees. Top up your wallet and try again.`:`Wallet ${(0,T.D)(ew.address)} does not have enough funds.`,void 0,I.b.INSUFFICIENT_BALANCE));i.sort((e,t)=>Number(eI?(t.erc20Balance??0n)-(e.erc20Balance??0n):t.balance-e.balance));let s=i.flatMap(e=>{let a=[{...e,isErc20Quote:!1,isTestnet:!!em.testnet,input:(0,$.t)({appId:t,amount:eT.toString(),user:ew.address,recipient:ev,destinationChainId:em.id,destinationCurrency:ey,originChainId:e.chain.id})}];return eI&&ey&&(e.erc20Balance??0n)>=eT&&a.push({...e,isErc20Quote:!0,isTestnet:!!em.testnet,input:(0,$.t)({appId:t,amount:eT.toString(),user:ew.address,recipient:ev,destinationChainId:em.id,destinationCurrency:ey,originChainId:e.chain.id,originCurrency:e.erc20Address})}),a}),d=(await Promise.allSettled(s.map(async e=>({...e,quote:await (0,$.g)(e)})))).filter(e=>"fulfilled"===e.status).map(e=>e.value);if(d.length<1)return void Y(new I.a(`Wallet ${(0,T.D)(ew.address)} does not have enough funds.`,void 0,I.b.INSUFFICIENT_BALANCE));let o=d.map(e=>({bridgeTx:(0,$.c)(e.quote),balance:e.balance,chain:e.chain,erc20Balance:e.erc20Balance,isErc20Quote:e.isErc20Quote})).filter(e=>!!e.bridgeTx);if(o.length>1)return void Z(o);let c=o[0];c?(er(!0),eU({data:c.bridgeTx.data,to:c.bridgeTx.to,value:c.bridgeTx.value,chain:c.chain})):Y(new I.a(`Wallet ${(0,T.D)(ew.address)} does not have enough funds.`,void 0,I.b.INSUFFICIENT_BALANCE))})().catch(console.error)},[O]),(0,$.u)({transactionHash:el,isTestnet:!!em.testnet,bridgingStatus:eh,setBridgingStatus:eg,onSuccess({transactionHash:e}){er(!1),ec(!0),H((0,F.x)(L,"completed",e,ew?.walletClientType,eI,ef,em)),_({eventName:B.O,payload:{provider:"external",status:"success",txHash:e,address:ew?.address,chainId:ek.chain.id,chainType:"ethereum",value:ek.value?(0,g.J)(BigInt(ek.value),ef?.decimals??18):void 0,token:ef?.symbol??ey??"ETH",destinationAddress:ev,destinationChainId:em.id,destinationChainType:"ethereum",destinationValue:eT?(0,g.J)(eT,ef?.decimals??18):void 0,destinationToken:ef?.symbol??ey??em.nativeCurrency.name}})},onFailure({error:e}){er(!1),Y(e)}}),(0,r.useEffect)(()=>{X&&(H({funding:L?.funding,solanaFundingData:L?.solanaFundingData,sendTransaction:L?.sendTransaction,errorModalData:{error:X,previousScreen:"TransferFromWalletScreen"}}),D("ErrorScreen",!1))},[X]);let eM=!eI&&ej?(0,A.c)(eb??"0",ej):void 0,e_=eI?R:(0,A.s)([R,eT]),eD=e_&&ej?(0,A.a)(e_,ej):void 0,eH=e_?(0,A.g)(e_,L?.funding?.erc20Address?L?.funding?.erc20ContractInfo?.symbol||"ETH":L?.funding?.chain.nativeCurrency.symbol||"ETH"):void 0,eL=R&&ej?(0,A.a)(R,ej):void 0,eP=R?(0,A.g)(R,em?.nativeCurrency?.symbol||"ETH"):void 0;if((0,r.useEffect)(()=>{if(!eo)return;let e=setTimeout(a,C.t);return()=>clearTimeout(e)},[eo]),eo)return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(y.t,{}),(0,n.jsx)(m.b,{}),(0,n.jsxs)(m.c,{children:[(0,n.jsx)(i.A,{color:"var(--privy-color-success)",width:"64px",height:"64px"}),(0,n.jsx)(v.C,{title:"Success!",description:`Youâve successfully added ${eb} ${eI?ef.symbol:em.nativeCurrency.symbol} to your ${P.name} wallet. It may take a minute before the funds are available to use.`})]}),(0,n.jsx)(m.R,{}),(0,n.jsx)(p.B,{})]});let eW=eI?`${(0,N.f)({amount:e$,decimals:ef.decimals})} ${ef.symbol}`:(0,A.g)(eA,em.nativeCurrency.symbol,3,!0),eq=K[ee];return K.length>1&&eq?(0,n.jsx)(j.B,{displayName:eS,configuredFundingChain:em,erc20ContractInfo:ef,formattedBalance:eW,fundingAmount:eb,fundingCurrency:eI?ef.symbol
1:em.nativeCurrency.symbol,fundingAmountInUsd:eM,options:K,selectedOption:eq,isPreparing:ea,isSubmitting:es,addressToFund:ev,fundingWalletAddress:ew?.address||"",errorMessage:z,onSubmit:()=>{L.funding?.amount!==eb?(async function(){if(ew&&eq)try{let e=await (0,$.g)({isTestnet:!!em.testnet,input:(0,$.t)({appId:t,amount:eT.toString(),user:ew.address,recipient:ev,destinationChainId:em.id,destinationCurrency:ey,originChainId:eq.chain.id})}),a=(0,$.c)(e);if(!a)throw Error("Invalid transaction request");er(!0),eU({data:a.data,to:a.to,value:a.value,chain:eq.chain})}catch(e){console.error(e),Y(new I.a("Unable to fetch quotes for bridging",e,I.b.INSUFFICIENT_BALANCE))}})().catch(console.error):eU({to:eq.bridgeTx.to,data:eq.bridgeTx.data,value:eq.bridgeTx.value,chain:eq.chain})},onSelect:e=>{e!==ee&&(G(null),et(e))},onAmountChange:eC}):q&&R&&ew&&L?.funding?(0,n.jsx)(M.T,{walletClientType:ew?.walletClientType||"unknown",displayName:eS,addressToFund:ev,isBridging:ei,isErc20Flow:eI,totalPriceInUsd:eD,totalPriceInNativeCurrency:eH,gasPriceInUsd:eL,gasPriceInNativeCurrency:eP,chainId:em.id,chainName:em.name}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(y.t,{}),(0,n.jsx)(b.N,{}),(0,n.jsx)("div",{style:{marginTop:"1rem"}}),(0,n.jsx)(p.B,{})]})}}},99764:(e,t,a)=>{a.d(t,{E:()=>n});let n=[{constant:!1,inputs:[{name:"_to",type:"address"},{name:"_value",type:"uint256"}],name:"transfer",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"}]}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.