@privy-io/react-auth
Version:
React client for the Privy Auth API
2 lines (1 loc) • 42.8 kB
JavaScript
import{k as e,v as n,u as t}from"./events-context-ClaboIDc.mjs";import{jsx as a,jsxs as i,Fragment as r}from"react/jsx-runtime";import s from"@heroicons/react/24/outline/CheckCircleIcon";import{useMemo as o,useCallback as c,useState as l,useEffect as d}from"react";import u,{formatTokenAmount as p,rpc as m,ConnectedStandardSolanaWallet as g,formatWalletAddress as f}from"@privy-io/js-sdk-core";import{c5 as h,c0 as w,cj as y,ck as v,cl as A,cm as b,a3 as I,a4 as S,cn as T,co as k,ag as O,bW as C,a6 as E,cp as F,cq as x,cr as _,cs as P,ct as U,cu as W,cv as M,ac as D,ab as j,be as B,ak as L,cw as N,cx as $,aM as R,cy as V,cz as J,cA as q,ao as H,bd as K,H as Q,q as G,bw as Y,p as z,$ as Z,cB as X,cC as ee,cD as ne,cE as te,a0 as ae,aJ as ie,cF as re,ae as se,cG as oe,cH as ce,cI as le,cJ as de,cK as ue,cL as pe,cM as me,bv as ge}from"./EmbeddedWalletConnectingScreen-D50stmJi.mjs";import{P as fe,h as he,aa as we,ag as ye}from"./internal-context-eGSwROSk.mjs";import{u as ve,g as Ae,i as be}from"./usePrivy-BCcRF869.mjs";import Ie from"eventemitter3";import{base58 as Se}from"@scure/base";import{u as Te}from"./use-sign-with-user-signer-DaTvrd5T.mjs";import{styled as ke}from"styled-components";import{getTransactionDecoder as Oe,pipe as Ce,getCompiledTransactionMessageDecoder as Ee,decompileTransactionMessage as Fe,setTransactionMessageLifetimeUsingBlockhash as xe,compileTransaction as _e,getTransactionEncoder as Pe,getBase58Decoder as Ue,getBase64Decoder as We,fetchAddressesForLookupTables as Me,getBase58Encoder as De,address as je,createTransactionMessage as Be,setTransactionMessageFeePayerSigner as Le,appendTransactionMessageInstruction as Ne}from"@solana/kit";import{S as $e}from"./SignRequestScreen-D9o7VhNz.mjs";import{getTransferSolInstruction as Re}from"@solana-program/system";import{findAssociatedTokenPda as Ve,getCreateAssociatedTokenIdempotentInstruction as Je,getTransferInstruction as qe}from"@solana-program/token";const He=["solana:mainnet","solana:devnet","solana:testnet"];function Ke({rows:e}){/*#__PURE__*/return a(h,{children:e.filter((e=>!!e)).map(((e,n)=>null!=e.value||e.isLoading?/*#__PURE__*/i(w,{children:[/*#__PURE__*/a(y,{children:e.label}),/*#__PURE__*/a(v,{$isLoading:e.isLoading,children:e.value})]},n):null))})}function Qe(e,n){if(!Object.prototype.hasOwnProperty.call(e,n))throw TypeError("attempted to use private field on non-instance");return e}var Ge=0,Ye="__private_"+Ge+++"__implementation";function ze(e,n){if(!Object.prototype.hasOwnProperty.call(e,n))throw TypeError("attempted to use private field on non-instance");return e}var Ze=0;function Xe(e){return"__private_"+Ze+++"_"+e}var en=/*#__PURE__*/Xe("_address"),nn=/*#__PURE__*/Xe("_publicKey"),tn=/*#__PURE__*/Xe("_chains"),an=/*#__PURE__*/Xe("_features"),rn=/*#__PURE__*/Xe("_label"),sn=/*#__PURE__*/Xe("_icon");class on{get address(){return ze(this,en)[en]}get publicKey(){return ze(this,nn)[nn].slice()}get chains(){return ze(this,tn)[tn].slice()}get features(){return ze(this,an)[an].slice()}get label(){return ze(this,rn)[rn]}get icon(){return ze(this,sn)[sn]}constructor({address:e,publicKey:n,label:t,icon:a}){Object.defineProperty(this,en,{writable:!0,value:void 0}),Object.defineProperty(this,nn,{writable:!0,value:void 0}),Object.defineProperty(this,tn,{writable:!0,value:void 0}),Object.defineProperty(this,an,{writable:!0,value:void 0}),Object.defineProperty(this,rn,{writable:!0,value:void 0}),Object.defineProperty(this,sn,{writable:!0,value:void 0}),ze(this,en)[en]=e,ze(this,nn)[nn]=n,ze(this,tn)[tn]=He,ze(this,rn)[rn]=t,ze(this,sn)[sn]=a,ze(this,an)[an]=["solana:signAndSendTransaction","solana:signTransaction","solana:signMessage"],new.target===on&&Object.freeze(this)}}function cn(e,n){if(!Object.prototype.hasOwnProperty.call(e,n))throw TypeError("attempted to use private field on non-instance");return e}var ln=0;function dn(e){return"__private_"+ln+++"_"+e}var un=/*#__PURE__*/dn("_listeners"),pn=/*#__PURE__*/dn("_version"),mn=/*#__PURE__*/dn("_name"),gn=/*#__PURE__*/dn("_icon"),fn=/*#__PURE__*/dn("_injection"),hn=/*#__PURE__*/dn("_isPrivyWallet"),wn=/*#__PURE__*/dn("_accounts"),yn=/*#__PURE__*/dn("_on"),vn=/*#__PURE__*/dn("_emit"),An=/*#__PURE__*/dn("_off"),bn=/*#__PURE__*/dn("_connected"),In=/*#__PURE__*/dn("_connect"),Sn=/*#__PURE__*/dn("_disconnect"),Tn=/*#__PURE__*/dn("_signMessage"),kn=/*#__PURE__*/dn("_signAndSendTransaction"),On=/*#__PURE__*/dn("_signTransaction");function Cn(e,...n){cn(this,un)[un][e]?.forEach((e=>e.apply(null,n)))}function En(e,n){cn(this,un)[un][e]=cn(this,un)[un][e]?.filter((e=>n!==e))}const Fn=(...e)=>{if("undefined"==typeof Buffer)throw new fe("Buffer is not defined.",void 0,he.BUFFER_NOT_DEFINED);return Buffer.from(...e)},xn=/*#__PURE__*/ke.span.withConfig({displayName:"CircleBackground",componentId:"sc-c9f33cd-0"})(["&&{width:82px;height:82px;border-width:4px;border-style:solid;border-color:",";background-color:",";border-radius:50%;display:inline-block;box-sizing:border-box;}"],(e=>e.color??"var(--privy-color-accent)"),(e=>e.color??"var(--privy-color-accent)")),_n=({instruction:e,fees:n,transactionInfo:t,solPrice:r,chain:s})=>/*#__PURE__*/i(h,{children:[t?.action&&/*#__PURE__*/i(w,{children:[/*#__PURE__*/a(y,{children:"Action"}),/*#__PURE__*/a(v,{children:t.action})]}),null!=e?.total&&/*#__PURE__*/i(w,{children:[/*#__PURE__*/a(y,{children:"Total"}),/*#__PURE__*/a(v,{children:e.total})]}),!e?.total&&null!=e?.amount&&/*#__PURE__*/i(w,{children:[/*#__PURE__*/a(y,{children:"Total"}),/*#__PURE__*/a(v,{children:/*#__PURE__*/a(A,{quantities:[e.amount,n],tokenPrice:r})})]}),/*#__PURE__*/i(w,{children:[/*#__PURE__*/a(y,{children:"Fees"}),/*#__PURE__*/a(v,{children:/*#__PURE__*/a(A,{quantities:[n],tokenPrice:r})})]}),e?.to&&/*#__PURE__*/i(w,{children:[/*#__PURE__*/a(y,{children:"To"}),/*#__PURE__*/a(v,{children:/*#__PURE__*/a(b,{walletAddress:e.to,chainId:s,chainType:"solana"})})]})]}),Pn=({fees:e,onClose:n,receiptHeader:t,receiptDescription:o,transactionInfo:c,solPrice:l,signOnly:d,instruction:u,chain:p})=>/*#__PURE__*/i(r,{children:[/*#__PURE__*/a(I,{onClose:n}),/*#__PURE__*/a(S,{style:{marginBottom:"16px"},children:/*#__PURE__*/i("div",{children:[/*#__PURE__*/a(xn,{color:"var(--privy-color-success-light)"}),/*#__PURE__*/a(s,{height:38,width:38,strokeWidth:2,stroke:"var(--privy-color-success)"})]})}),/*#__PURE__*/a(T,{title:t??`Transaction ${d?"signed":"complete"}!`,description:o??"You're all set."}),/*#__PURE__*/a(_n,{solPrice:l,instruction:u,fees:e,transactionInfo:c,chain:p}),/*#__PURE__*/a(k,{}),/*#__PURE__*/a(Un,{loading:!1,onClick:n,children:"Close"}),/*#__PURE__*/a(O,{}),/*#__PURE__*/a(C,{})]});let Un=/*#__PURE__*/ke(E).withConfig({displayName:"SubmitButton",componentId:"sc-3cb7ee42-0"})(["&&{margin-top:24px;}transition:color 350ms ease,background-color 350ms ease;"]);function Wn(e){return new Uint8Array(Oe().decode(e).messageBytes)}async function Mn(e,n){try{return await e}catch{return n}}function Dn(e){switch(e){case"solana:mainnet":return"mainnet-beta";case"solana:devnet":return"devnet";case"solana:testnet":return"testnet"}}async function jn({privyClient:e,chain:n,mint:t}){let a=F[n];if(!a[t]){let i=await e.getSplTokenMetadata({mintAddress:t,cluster:Dn(n)});i&&(a[t]={address:t,symbol:i.symbol,decimals:i.decimals})}return a[t]}async function Bn({solanaClient:e,tx:n}){let t=We().decode(Wn(n)),{value:a}=await e.rpc.getFeeForMessage(t).send();return a??0n}async function Ln({solanaClient:e,tx:n,replaceRecentBlockhash:t}){let{value:a}=await e.rpc.simulateTransaction(We().decode(n),{commitment:"confirmed",encoding:"base64",sigVerify:!1,replaceRecentBlockhash:t}).send();if("BlockhashNotFound"===a.err&&t)throw Error("Simulation failed: Blockhash not found");return"BlockhashNotFound"===a.err?await Ln({solanaClient:e,tx:n,replaceRecentBlockhash:!0}):{logs:a.logs??[],error:a.err,hasError:!!a.err,hasFunds:a.logs?.every((e=>!/insufficient funds/gi.test(e)&&!/insufficient lamports/gi.test(e)))??!0}}async function Nn({tx:e,solanaClient:n,privyClient:t,checkFunds:a}){let i=Ee().decode(Wn(e)),r=i.staticAccounts[0]??"",s=await Bn({solanaClient:n,tx:e}),o=a?await Mn(Ln({solanaClient:n,tx:e})):void 0,c=o?.hasFunds??!0,l={},d=[],u=await async function({solanaClient:e,message:n}){if(!("addressTableLookups"in n)||!n.addressTableLookups)return[...n.staticAccounts];let t=n.addressTableLookups.map((e=>e.lookupTableAddress)),a=await Me(t,e.rpc),i=t.map(((e,t)=>[...n.addressTableLookups[t]?.writableIndexes.map((n=>{let i=a[e]?.[n];if(i)return{key:i,isWritable:!0,altIdx:t}}))??[],...n.addressTableLookups[t]?.readonlyIndexes.map((n=>{let i=a[e]?.[n];if(i)return{key:i,isWritable:!1,altIdx:t}}))??[]])).flat().filter((e=>!!e)).sort(((e,n)=>e.isWritable!==n.isWritable?e.isWritable?-1:1:e.altIdx-n.altIdx)).map((({key:e})=>e));return[...n.staticAccounts,...i]}({solanaClient:n,message:i});for(let e of i.instructions){let a=i.staticAccounts[e.programAddressIndex]||"";if(a!==x&&a!==_)if(a!==P){if(a===U){let n=await Mn(function(e,n,t){let[a,i,r,s]=e.accountIndices?.map((e=>n[e]))??[];return{type:"ata-creation",program:t,payer:a,ata:i,owner:r,mint:s}}(e,u,a));if(!n){d.push({type:"unknown",program:a,discriminator:e.data?.[0]});continue}if(d.push(n),n.ata&&n.owner&&n.mint){l[n.ata]={owner:n.owner,mint:n.mint};continue}}if(W.includes(a)){let i=await Mn(Jn(e,u,n,t,a));if(!i){d.push({type:"unknown",program:a,discriminator:e.data?.[0]});continue}d.push(i)}else if(M.includes(a)){let i=await Mn(qn(e,u,n,t,a));if(!i){d.push({type:"unknown",program:a,discriminator:e.data?.[0]});continue}d.push(i)}else d.push({type:"unknown",program:a,discriminator:e.data?.[0]})}else{let n=await Mn(Vn(e,u));if(!n){d.push({type:"unknown",program:a,discriminator:e.data?.[0]});continue}d.push(n)}else{let i=await Mn(Rn(e,u,n,t,l,a));if(!i){d.push({type:"unknown",program:a,discriminator:e.data?.[0]});continue}d.push(i),"spl-transfer"===i.type&&(i.fromAta&&i.fromAccount&&i.token.address&&(l[i.fromAta]??={owner:i.fromAccount,mint:i.token.address}),i.toAta&&i.toAccount&&i.token.address&&(l[i.toAta]??={owner:i.toAccount,mint:i.token.address}))}}return{spender:r,fee:s,instructions:d,hasFunds:!!c}}function $n(e,n=0){try{return function(e,n=0){let t=0n;for(let a=0;a<8;a++)t|=BigInt(e[n+a])<<BigInt(8*a);return t}(e,n)}catch{}try{return e.readBigInt64LE(n)}catch{}let t=Fn(e);try{return((e,n=0)=>{let t=e[n],a=e[n+7];if(!t||!a)throw Error(`Buffer offset out of range: first: ${t}, last: ${a}.`);return(BigInt(e[n+4]+256*e[n+5]+65536*e[n+6]+(a<<24))<<32n)+BigInt(t+256*e[++n]+65536*e[++n]+16777216*e[++n])})(t)}catch{}try{return t.subarray(n).readBigInt64LE()}catch{}try{return t.readBigInt64LE(n)}catch{}return 0n}async function Rn(e,n,t,a,i,r){let s=e.data?.[0],o=e.accountIndices?.map((e=>n[e]))??[];if(1===s){let[e,n,t]=o;return{type:"spl-init-account",program:r,account:e,mint:n,owner:t}}if(3===s){let n,s,[c,l,d]=o,u="",p=l?i[l]:void 0;if(p)n=p.owner,u=p.mint;else if(l){let e=await t.rpc.getAccountInfo(l,{commitment:"confirmed",encoding:"jsonParsed"}).send(),a=e.value?.data;n=a?.parsed?.info?.owner,u=a?.parsed?.info?.mint??"",s=a?.parsed?.info?.tokenAmount?.decimals}if(!u&&c){let e=await t.rpc.getAccountInfo(c,{commitment:"confirmed",encoding:"jsonParsed"}).send(),n=e.value?.data;u=n?.parsed?.info?.mint??""}let m=await jn({privyClient:a,chain:t.chain,mint:u}),g=m?.symbol??"";return s??=m?.decimals??9,{type:"spl-transfer",program:r,fromAta:c,fromAccount:d,toAta:l,toAccount:n,value:$n(e.data,1),token:{symbol:g,decimals:s,address:u}}}if(9===s){let[e,n,t]=o;return{type:"spl-close-account",program:r,source:e,destination:n,owner:t}}if(17===s)return{type:"spl-sync-native",program:r};throw Error(`Token program instruction type ${s} not supported`)}async function Vn(e,n){let t=e.data?.[0],a=e.accountIndices?.map((e=>n[e]))??[];if(0===t){let[,n]=a;return{type:"create-account",program:P,account:n?.toString(),value:$n(e.data,4),withSeed:!1}}if(2===t){let[n,t]=a;return{type:"sol-transfer",program:P,fromAccount:n,toAccount:t,token:{symbol:"SOL",decimals:9},value:$n(e.data,4),withSeed:!1}}if(3===t){let[,n]=a;return{type:"create-account",program:P,account:n,withSeed:!0,value:$n(e.data.slice(e.data.length-32-8-8))}}if(11===t){let[n,t]=a;return{type:"sol-transfer",program:P,fromAccount:n,toAccount:t,value:$n(e.data,4),token:{symbol:"SOL",decimals:9},withSeed:!0}}throw Error(`System program instruction type ${t} not supported`)}async function Jn(e,n,t,a,i){let r=e.accountIndices?.map((e=>n[e]))??[],s=e.data?.[0];if(143===s){let n=r[10],s=r[11];return{type:"raydium-swap-base-input",program:i,mintIn:n,mintOut:s,tokenIn:n?await jn({privyClient:a,chain:t.chain,mint:n}):void 0,tokenOut:s?await jn({privyClient:a,chain:t.chain,mint:s}):void 0,amountIn:$n(e.data,8),minimumAmountOut:$n(e.data,16)}}if(55===s){let n=r[10],s=r[11];return{type:"raydium-swap-base-output",program:i,mintIn:n,mintOut:s,tokenIn:n?await jn({privyClient:a,chain:t.chain,mint:n}):void 0,tokenOut:s?await jn({privyClient:a,chain:t.chain,mint:s}):void 0,maxAmountIn:$n(e.data,8),amountOut:$n(e.data,16)}}throw Error(`Raydium swap program instruction type ${s} not supported`)}async function qn(e,n,t,a,i){let r=e.data?.[0],s=e.accountIndices?.map((e=>n[e]))??[];if([208,51,239,151,123,43,237,92].includes(r)){let n=s[5],r=s[6];return{type:"jupiter-swap-exact-out-route",program:i,mintIn:n,mintOut:r,tokenIn:n?await jn({privyClient:a,chain:t.chain,mint:n}):void 0,tokenOut:r?await jn({privyClient:a,chain:t.chain,mint:r}):void 0,outAmount:$n(e.data,e.data.length-1-2-8-8),quotedInAmount:$n(e.data,e.data.length-1-2-8)}}if([176,209,105,168,154,125,69,62].includes(r)){let n=s[7],r=s[8];return{type:"jupiter-swap-exact-out-route",program:i,mintIn:n,mintOut:r,tokenIn:n?await jn({privyClient:a,chain:t.chain,mint:n}):void 0,tokenOut:r?await jn({privyClient:a,chain:t.chain,mint:r}):void 0,outAmount:$n(e.data,e.data.length-1-2-8-8),quotedInAmount:$n(e.data,e.data.length-1-2-8)}}if([193,32,155,51,65,214,156,129].includes(r)){let n=s[7],r=s[8];return{type:"jupiter-swap-shared-accounts-route",program:i,mintIn:n,mintOut:r,tokenIn:n?await jn({privyClient:a,chain:t.chain,mint:n}):void 0,tokenOut:r?await jn({privyClient:a,chain:t.chain,mint:r}):void 0,inAmount:$n(e.data,e.data.length-1-2-8-8),quotedOutAmount:$n(e.data,e.data.length-1-2-8)}}throw[62,198,214,193,213,159,108,210].includes(r)&&console.warn("Jupiter swap program instruction 'claim' not implemented"),[116,206,27,191,166,19,0,73].includes(r)&&console.warn("Jupiter swap program instruction 'claim_token' not implemented"),[26,74,236,151,104,64,183,249].includes(r)&&console.warn("Jupiter swap program instruction 'close_token' not implemented"),[229,194,212,172,8,10,134,147].includes(r)&&console.warn("Jupiter swap program instruction 'create_open_orders' not implemented"),[28,226,32,148,188,136,113,171].includes(r)&&console.warn("Jupiter swap program instruction 'create_program_open_orders' not implemented"),[232,242,197,253,240,143,129,52].includes(r)&&console.warn("Jupiter swap program instruction 'create_token_ledger' not implemented"),[147,241,123,100,244,132,174,118].includes(r)&&console.warn("Jupiter swap program instruction 'create_token_account' not implemented"),[229,23,203,151,122,227,173,42].includes(r)&&console.warn("Jupiter swap program instruction 'route' not implemented"),[150,86,71,116,167,93,14,104].includes(r)&&console.warn("Jupiter swap program instruction 'route_with_token_ledger' not implemented"),[228,85,185,112,78,79,77,2].includes(r)&&console.warn("Jupiter swap program instruction 'set_token_ledger' not implemented"),[230,121,143,80,119,159,106,170].includes(r)&&console.warn("Jupiter swap program instruction 'shared_accounts_route_with_token_ledger' not implemented"),Error(`Jupiter swap program instruction type ${r} not supported`)}async function Hn({rpcSubscriptions:e,signature:n,timeout:t}){let a=new AbortController,i=await e.signatureNotifications(n,{commitment:"confirmed"}).subscribe({abortSignal:a.signal}),r=await Promise.race([new Promise((e=>{setTimeout((()=>{a.abort(),e(Error("Transaction confirmation timed out"))}),t)})),new Promise((async e=>{for await(let n of i){if(a.abort(),n.value.err)return e(Error("Transaction confirmation failed"));e(void 0)}}))]);if(r instanceof Error)throw r}function Kn({rpc:e,rpcSubscriptions:n,chain:t,blockExplorerUrl:a}){let i=function({rpc:e,rpcSubscriptions:n}){return async t=>new Promise((async(a,i)=>{try{let i=await e.sendTransaction(Fn(t).toString("base64"),{preflightCommitment:"confirmed",encoding:"base64"}).send();await Hn({rpcSubscriptions:n,signature:i,timeout:1e4}),a({signature:new Uint8Array(De().encode(i))})}catch(e){i(e)}}))}({rpc:e,rpcSubscriptions:n});return{rpc:e,rpcSubscriptions:n,chain:t,blockExplorerUrl:a,sendAndConfirmTransaction:i}}function Qn(){let n=e(),t=o((()=>Object.fromEntries(["solana:mainnet","solana:devnet","solana:testnet"].map((e=>[e,n.solanaRpcs[e]?Kn({chain:e,rpc:n.solanaRpcs[e].rpc,rpcSubscriptions:n.solanaRpcs[e].rpcSubscriptions,blockExplorerUrl:n.solanaRpcs[e].blockExplorerUrl??`https://explorer.solana.com?cluster=${e.replace("solana:","")}`}):null])))),[n.solanaRpcs]);return c((e=>{if(!t[e])throw Error(`No RPC configuration found for chain ${e}`);return t[e]}),[t])}const Gn={component:()=>{let{data:n,onUserCloseViaDialogOrKeybindRef:t,setModalData:i,navigate:r}=D(),{client:s,closePrivyModal:c,walletProxy:u,showFiatPrices:m}=we(),g=e(),{user:f}=j(),h=Qn()(n?.standardSignAndSendTransaction?.chain??"solana:mainnet"),[w,y]=l(n?.standardSignAndSendTransaction?.transaction),[v,A]=l(),[b,I]=l(),[S,T]=l({value:0n,isLoading:!1}),[k,O]=l(!1),[C,E]=l({}),[F,x]=l(),_=n?.standardSignAndSendTransaction?.account,P=!!n?.standardSignAndSendTransaction?.signOnly,U=_?.imported?B(f).find((e=>e.address===_.address)):L(f),{solPrice:W,isSolPriceLoading:M}=N({enabled:m}),K=o((()=>{if(!v)return;let e=v.spender,n=$(v.fee),t=$(S.value,3,!0),a=v.instructions.filter((e=>["sol-transfer","spl-transfer","raydium-swap-base-input","raydium-swap-base-output","jupiter-swap-shared-accounts-route","jupiter-swap-exact-out-route"].includes(e.type))),i=a.at(0);if(!i||a.length>1)return{fee:n,spender:e,balance:t};if("sol-transfer"===i.type)return{fee:n,spender:e,balance:t,total:$(i.value)};if("spl-transfer"===i.type)return{fee:n,spender:e,balance:t,total:`${p({amount:i.value,decimals:i.token.decimals})} ${i.token.symbol}`};if("raydium-swap-base-input"===i.type&&i.tokenIn&&i.tokenOut){return{fee:n,spender:e,balance:t,swap:`${`${p({amount:i.amountIn,decimals:i.tokenIn.decimals})} ${i.tokenIn.symbol}`} → ${`${p({amount:i.minimumAmountOut,decimals:i.tokenOut.decimals})} ${i.tokenOut.symbol}`}`}}if("raydium-swap-base-output"===i.type&&i.tokenIn&&i.tokenOut){return{fee:n,spender:e,balance:t,swap:`${`${p({amount:i.maxAmountIn,decimals:i.tokenIn.decimals})} ${i.tokenIn.symbol}`} → ${`${p({amount:i.amountOut,decimals:i.tokenOut.decimals})} ${i.tokenOut.symbol}`}`}}if("jupiter-swap-shared-accounts-route"===i.type&&i.tokenIn&&i.tokenOut){return{fee:n,spender:e,balance:t,swap:`${`${p({amount:i.inAmount,decimals:i.tokenIn.decimals})} ${i.tokenIn.symbol}`} → ${`${p({amount:i.quotedOutAmount,decimals:i.tokenOut.decimals})} ${i.tokenOut.symbol}`}`}}if("jupiter-swap-exact-out-route"===i.type&&i.tokenIn&&i.tokenOut){return{fee:n,spender:e,balance:t,swap:`${`${p({amount:i.quotedInAmount,decimals:i.tokenIn.decimals})} ${i.tokenIn.symbol}`} → ${`${p({amount:i.outAmount,decimals:i.tokenOut.decimals})} ${i.tokenOut.symbol}`}`}}return{fee:n,spender:e,balance:t}}),[v,_?.address,S]),Q=o((()=>{let e;if(!v||!m||!W||M)return;function n(...e){return q(e.reduce(((e,n)=>e+n),0n),W??0)}_?.address===v.spender&&(e=n(v.fee));let t=n(S.value),a=v.instructions.filter((e=>"sol-transfer"===e.type||"spl-transfer"===e.type)).at(0);return!a||v.instructions.length>1?{fee:e,balance:t}:"sol-transfer"===a.type?{fee:e,balance:t,total:n(a.value,_?.address===v.spender?v.fee:0n)}:"spl-transfer"===a.type?{fee:e,balance:t,total:`${p({amount:a.value,decimals:a.token.decimals})} ${a.token.symbol}`}:{fee:e,balance:t}}),[v,m,W,M,_?.address,S]);if(d((()=>{!async function(){if(w&&s)try{I(void 0);let e=await Nn({tx:w,solanaClient:h,privyClient:s,checkFunds:!P});A(e)}catch(e){console.error("Failed to prepare transaction",e),I(e)}}()}),[w,h,s,P]),d((()=>{(async function(){if(!_)return;T({value:S.value,isLoading:!0});let{value:e}=await h.rpc.getBalance(_.address,{commitment:"confirmed"}).send();T({value:e??0n,isLoading:!1})})().catch(console.error)}),[v]),!w||!n?.standardSignAndSendTransaction||!_){let e=Error("Invalid transaction request");/*#__PURE__*/return a(R,{error:e,allowlistConfig:g.allowlistConfig,onRetry:()=>{n?.standardSignAndSendTransaction?.onFailure(e),c({shouldCallAuthOnSuccess:!1})}})}let G=()=>{if(!k)return C.signature||C.signedTransaction?n?.standardSignAndSendTransaction?.onSuccess({signature:C.signature,signedTransaction:C.signedTransaction}):n?.standardSignAndSendTransaction?.onFailure(F??b??Error("User exited the modal before submitting the transaction")),c({shouldCallAuthOnSuccess:!1})};t.current=G;let Y=n.standardSignAndSendTransaction?.uiOptions?.transactionInfo?.contractInfo?.imgUrl?/*#__PURE__*/a("img",{src:n.standardSignAndSendTransaction.uiOptions.transactionInfo.contractInfo.imgUrl,alt:n.standardSignAndSendTransaction.uiOptions.transactionInfo.contractInfo.imgAltText}):null,z=!!(n.funding&&n.funding.supportedOptions.length>0),Z=!v?.hasFunds&&z;if(C.signature||C.signedTransaction){let e=v?.instructions.filter((e=>"sol-transfer"===e.type||"spl-transfer"===e.type)),t=1===e?.length?e?.at(0):void 0;/*#__PURE__*/return a(Pn,{fees:C.fees??0n,onClose:G,transactionInfo:n.standardSignAndSendTransaction?.uiOptions.transactionInfo,solPrice:W,receiptHeader:n.standardSignAndSendTransaction?.uiOptions.successHeader,receiptDescription:n.standardSignAndSendTransaction?.uiOptions.successDescription,chain:h.chain,signOnly:P,instruction:"sol-transfer"===t?.type?{to:t.toAccount,amount:t.value}:{to:t?.toAccount||t?.toAta,total:K?.total}})}return F?/*#__PURE__*/a(V,{transactionError:F,chainId:h.chain,onClose:G,chainType:"solana",onRetry:async()=>{x(void 0);let{value:e}=await h.rpc.getLatestBlockhash().send();y(function(e,n){return Ce(Ee().decode(Wn(e)),(e=>Fe(e)),(e=>xe(n,e)),(e=>_e(e)),(e=>new Uint8Array(Pe().encode(e))))}(w,e))}}):/*#__PURE__*/a(J,{img:Y,title:n.standardSignAndSendTransaction?.uiOptions?.transactionInfo?.title||"Confirm transaction",subtitle:n.standardSignAndSendTransaction?.uiOptions?.description||`${g.name} wants your permission to approve the following transaction.`,cta:Z?"Add funds":n.standardSignAndSendTransaction?.uiOptions?.buttonText||"Approve",instructions:v?.instructions??[],network:"solana:mainnet"==h.chain?"Solana":h.chain.replace("solana:",""),blockExplorerUrl:h.blockExplorerUrl,total:m?Q?.total:K?.total,fee:m?Q?.fee:K?.fee,balance:m?Q?.balance:K?.balance,swap:K?.swap,transactingWalletAddress:_.address,disabled:!v?.hasFunds&&!z,isSubmitting:k,isPreparing:!v||S.isLoading,isTokenPriceLoading:m&&M,isMissingFunds:!v?.hasFunds,submitError:F??void 0,isSponsored:!!n.standardSignAndSendTransaction?.isSponsored,parseError:b,onClick:Z?async()=>{if(_){if(!z)throw Error("Funding wallet is not enabled");i({...n,funding:{...n.funding,methodScreen:H},solanaFundingData:n?.solanaFundingData}),r(H)}}:async()=>{try{if(O(!0),k||!_||!u||!f||!U)return;let e=await n.standardSignAndSendTransaction.onConfirm(w);if("signature"in e){let n=await async function({solanaClient:e,signature:n}){let t=Ue().decode(n),a=await e.rpc.getTransaction(t,{maxSupportedTransactionVersion:0,commitment:"confirmed",encoding:"base64"}).send().catch((()=>null));return a?{fee:a.meta?.fee??0n}:null}({solanaClient:h,signature:e.signature});return void E({...e,fees:n?.fee})}E(e)}catch(e){console.warn({transaction:w,error:e}),x(e)}finally{O(!1)}},onClose:G})}};function Yn(e,n,t){let a=structuredClone(Oe().decode(e)),i=je(n);return i in a.signatures&&(a.signatures[i]=t),new Uint8Array(Pe().encode(a))}function zn(){let{isHeadlessSigning:e,walletProxy:n,initializeWalletProxy:t,recoverEmbeddedWallet:a,openModal:i,privy:r,client:s}=we(),{user:o}=ve(),{setModalData:c}=D(),{signWithUserSigner:l}=Te();return{signMessage:({message:d,address:u,options:p})=>new Promise((async(g,f)=>{let h=K(o,u);if("privy"!==h?.walletClientType)return void f(new fe("Wallet is not a Privy wallet",void 0,he.EMBEDDED_WALLET_NOT_FOUND));let{entropyId:w,entropyIdVerifier:y}=Q(o,h),v=G(h),A=Fn(d).toString("base64");if(A.length<1)return void f(new fe("Message must be a non-empty string",void 0,he.INVALID_MESSAGE));let b=async()=>{let e;if(!o)throw Error("User must be authenticated before signing with a Privy wallet");let i=await s.getAccessToken();if(!i)throw Error("User must be authenticated to use their embedded wallet.");let c=n??await t(15e3);if(!c)throw Error("Failed to initialize embedded wallet proxy.");if(!await a({address:h.address}))throw Error("Unable to connect to wallet");if(v){let n=await m(r,l,{chain_type:"solana",method:"signMessage",params:{message:A,encoding:"base64"},wallet_id:h.id});if(!n.data||!("signature"in n.data))throw Error("Failed to sign message");e=n.data.signature}else{let{response:n}=await c.rpc({accessToken:i,entropyId:w,entropyIdVerifier:y,chainType:"solana",hdWalletIndex:h.walletIndex??0,requesterAppId:p?.uiOptions?.requesterAppId,request:{method:"signMessage",params:{message:A}}});e=n.data.signature}return e};if(e({showWalletUIs:p?.uiOptions?.showWalletUIs}))try{let e=await b(),n=new Uint8Array(Fn(e,"base64"));g({signature:n})}catch(e){f(e)}else c({signMessage:{method:"solana_signMessage",data:A,confirmAndSign:b,onSuccess:e=>{g({signature:new Uint8Array(Fn(e,"base64"))})},onFailure:e=>{f(e)},uiOptions:p?.uiOptions??{}},connectWallet:{recoveryMethod:h.recoveryMethod,connectingWalletAddress:h.address,entropyId:w,entropyIdVerifier:y,isUnifiedWallet:v,onCompleteNavigateTo:$e,onFailure:e=>{f(new fe("Failed to connect to wallet",e,he.UNKNOWN_CONNECT_WALLET_ERROR))}}}),i(Y)}))}}function Zn(){let{isHeadlessSigning:e,openModal:n}=we(),{setModalData:t}=D(),{signMessage:a}=zn(),{user:i}=ve();return{signTransaction:async({transaction:r,options:s,chain:o="solana:mainnet",address:c})=>{async function l(e){let{signature:n}=await a({message:Wn(e),address:c,options:{...s,uiOptions:{...s?.uiOptions,showWalletUIs:!1}}});return{signedTransaction:Yn(e,c,n)}}return e({showWalletUIs:s?.uiOptions?.showWalletUIs})?l(r):new Promise((async(e,a)=>{let d=K(i,c);if("privy"!==d?.walletClientType)return void a(new fe("Wallet is not a Privy wallet",void 0,he.EMBEDDED_WALLET_NOT_FOUND));let{entropyId:u,entropyIdVerifier:p}=Q(i,d),m=G(d);function g(e){return n=>{a(n instanceof fe?n:new fe("Failed to connect to wallet",n,e))}}let f={account:d,transaction:r,chain:o,signOnly:!0,uiOptions:s?.uiOptions||{},onConfirm:l,onSuccess:e,onFailure:g(he.TRANSACTION_FAILURE)};t({connectWallet:{recoveryMethod:d.recoveryMethod,connectingWalletAddress:d.address,entropyId:u,entropyIdVerifier:p,isUnifiedWallet:m,onCompleteNavigateTo:Gn,onFailure:g(he.UNKNOWN_CONNECT_WALLET_ERROR)},standardSignAndSendTransaction:f}),n(Y)}))}}}let Xn=new class extends Ie{setImplementation(e){Qe(this,Ye)[Ye]=e}async signMessage(e){return Qe(this,Ye)[Ye].signMessage(e)}async signAndSendTransaction(e){return Qe(this,Ye)[Ye].signAndSendTransaction(e)}async signTransaction(e){return Qe(this,Ye)[Ye].signTransaction(e)}constructor(e){super(),Object.defineProperty(this,Ye,{writable:!0,value:void 0}),Qe(this,Ye)[Ye]=e}}({signTransaction:ye("signTransaction was not injected"),signAndSendTransaction:ye("signAndSendTransaction was not injected"),signMessage:ye("signMessage was not injected")}),et=new class{get version(){return cn(this,pn)[pn]}get name(){return cn(this,mn)[mn]}get icon(){return cn(this,gn)[gn]}get chains(){return He.slice()}get features(){return{"standard:connect":{version:"1.0.0",connect:cn(this,In)[In]},"standard:disconnect":{version:"1.0.0",disconnect:cn(this,Sn)[Sn]},"standard:events":{version:"1.0.0",on:cn(this,yn)[yn]},"solana:signAndSendTransaction":{version:"1.0.0",supportedTransactionVersions:["legacy",0],signAndSendTransaction:cn(this,kn)[kn]},"solana:signTransaction":{version:"1.0.0",supportedTransactionVersions:["legacy",0],signTransaction:cn(this,On)[On]},"solana:signMessage":{version:"1.0.0",signMessage:cn(this,Tn)[Tn]},"privy:":{privy:{signMessage:cn(this,fn)[fn].signMessage,signTransaction:cn(this,fn)[fn].signTransaction,signAndSendTransaction:cn(this,fn)[fn].signAndSendTransaction}}}}get accounts(){return cn(this,wn)[wn].slice()}get isPrivyWallet(){return cn(this,hn)[hn]}constructor({name:e,icon:n,version:t,injection:a,wallets:i}){Object.defineProperty(this,vn,{value:Cn}),Object.defineProperty(this,An,{value:En}),Object.defineProperty(this,un,{writable:!0,value:void 0}),Object.defineProperty(this,pn,{writable:!0,value:void 0}),Object.defineProperty(this,mn,{writable:!0,value:void 0}),Object.defineProperty(this,gn,{writable:!0,value:void 0}),Object.defineProperty(this,fn,{writable:!0,value:void 0}),Object.defineProperty(this,hn,{writable:!0,value:void 0}),Object.defineProperty(this,wn,{writable:!0,value:void 0}),Object.defineProperty(this,yn,{writable:!0,value:void 0}),Object.defineProperty(this,bn,{writable:!0,value:void 0}),Object.defineProperty(this,In,{writable:!0,value:void 0}),Object.defineProperty(this,Sn,{writable:!0,value:void 0}),Object.defineProperty(this,Tn,{writable:!0,value:void 0}),Object.defineProperty(this,kn,{writable:!0,value:void 0}),Object.defineProperty(this,On,{writable:!0,value:void 0}),cn(this,un)[un]={},cn(this,yn)[yn]=(e,n)=>(cn(this,un)[un][e]?.push(n)||(cn(this,un)[un][e]=[n]),()=>cn(this,An)[An](e,n)),cn(this,bn)[bn]=e=>{null!=e&&(cn(this,wn)[wn]=e.map((({address:e})=>new on({address:e,publicKey:Se.decode(e)})))),cn(this,vn)[vn]("change",{accounts:this.accounts})},cn(this,In)[In]=async()=>(cn(this,vn)[vn]("change",{accounts:this.accounts}),{accounts:this.accounts}),cn(this,Sn)[Sn]=async()=>{cn(this,vn)[vn]("change",{accounts:this.accounts})},cn(this,Tn)[Tn]=async(...e)=>{let n=[];for(let{account:t,...a}of e){let{signature:e}=await cn(this,fn)[fn].signMessage({...a,address:t.address});n.push({signedMessage:a.message,signature:e})}return n},cn(this,kn)[kn]=async(...e)=>{let n=[];for(let t of e){let{signature:e}=await cn(this,fn)[fn].signAndSendTransaction({...t,transaction:t.transaction,address:t.account.address,chain:t.chain||"solana:mainnet",options:t.options});n.push({signature:e})}return n},cn(this,On)[On]=async(...e)=>{let n=[];for(let{transaction:t,account:a,options:i,chain:r}of e){let{signedTransaction:e}=await cn(this,fn)[fn].signTransaction({transaction:t,address:a.address,chain:r||"solana:mainnet",options:i});n.push({signedTransaction:e})}return n},cn(this,mn)[mn]=e,cn(this,gn)[gn]=n,cn(this,pn)[pn]=t,cn(this,fn)[fn]=a,cn(this,wn)[wn]=[],cn(this,hn)[hn]=!0,a.on("accountChanged",cn(this,bn)[bn],this),cn(this,bn)[bn](i)}}({name:"Privy",version:"1.0.0",icon:"data:image/png;base64,AAABAAEAFBQAAAAAIABlAQAAFgAAAIlQTkcNChoKAAAADUlIRFIAAAAUAAAAFAgGAAAAjYkdDQAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAQVJREFUeJxiYMANZIC4E4ivAPFPIP4FxDeAuB+IlfDowwBMQFwJxF+B+D8O/AOI66Bq8QJGIF6ExyB0vAqImfEZmEeCYTDcgMswPiB+T4aB34FYApuBsWQYBsP52AycToGBK7EZuJECAw9jM3AVBQbuwWZgIwUGTsZmoDkFBnpiMxAEjpJh2FV8iVsbiD+TYBgoDVrgMgwGnID4HRGGgTKBGyHDYEAaiBdCSxh0g/5AU4Q8sYYhAzEgjoGmABBOgFo2eACowFABYn0oVgViAVINkQTiZUD8DIj/ATF6GILEXgLxCiCWIsZAbiAuBeKtQHwHiEHJ6C8UfwHie0C8E4jLoWpRAAAAAP//rcbhsQAAAAZJREFUAwBYFs3VKJ0cuQAAAABJRU5ErkJggg==",wallets:[],injection:Xn});function nt(){let{ready:n}=Z(),{user:t}=ve(),{signMessage:a}=zn(),{signTransaction:i}=Zn(),{signAndSendTransaction:r}=function(){let n=e(),{isHeadlessSigning:t,openModal:a}=we(),{setModalData:i}=D(),{signTransaction:r}=Zn(),s=Qn(),{user:o}=ve(),{signWithUserSigner:c}=Te();return{signAndSendTransaction:async({transaction:e,address:l,chain:d="solana:mainnet",options:p})=>{let g=K(o,l);if("privy"!==g?.walletClientType)throw new fe("Wallet is not a Privy wallet",void 0,he.EMBEDDED_WALLET_NOT_FOUND);let f=G(g);async function h(e){if(p?.sponsor)return await(async e=>{if(!f)throw new fe("Sponsoring transactions is only supported for wallets on the TEE stack",he.INVALID_DATA);let t=new u({appId:n.id,clientId:n.appClientId,storage:z}),a=await m(t,c,{chain_type:"solana",method:"signAndSendTransaction",sponsor:!0,params:{transaction:Fn(e).toString("base64"),encoding:"base64"},caip2:`solana:${(await s(d).rpc.getGenesisHash().send()).substring(0,32)}`,wallet_id:g.id});if(a.data&&"hash"in a.data)return{signature:Se.decode(a.data.hash)};throw Error("Failed to sign and send transaction")})(e);let{signedTransaction:t}=await r({transaction:e,address:l,chain:d,options:{...p,uiOptions:{...p?.uiOptions,showWalletUIs:!1}}}),{signature:a}=await s(d).sendAndConfirmTransaction(t);return{signature:a}}return t({showWalletUIs:p?.uiOptions?.showWalletUIs})?h(e):new Promise((async(t,r)=>{let s,c,{entropyId:u,entropyIdVerifier:m}=Q(o,g);function w(e){return n=>{r(n instanceof fe?n:new fe("Failed to connect to wallet",n,e))}}let y={account:g,transaction:e,chain:d,signOnly:!1,uiOptions:p?.uiOptions||{},onConfirm:h,onSuccess:t,onFailure:w(he.TRANSACTION_FAILURE),isSponsored:!!p?.sponsor},v={recoveryMethod:g.recoveryMethod,connectingWalletAddress:g.address,entropyId:u,entropyIdVerifier:m,isUnifiedWallet:f,onCompleteNavigateTo:Gn,onFailure:w(he.UNKNOWN_CONNECT_WALLET_ERROR)};n.fundingConfig&&(s=Ae({address:l,appConfig:n,methodScreen:H,fundWalletConfig:{...p,asset:"native-currency",chain:d},externalSolanaFundingScreen:lt}),c={amount:n.fundingConfig.defaultRecommendedAmount,asset:"SOL",chain:d,destinationAddress:l,afterSuccessScreen:Gn,sourceWalletData:void 0}),i({connectWallet:v,standardSignAndSendTransaction:y,funding:s,solanaFundingData:c}),a(Y)}))}}}(),s=o((()=>{let e=[...X(t).sort(((e,n)=>(e.walletIndex??0)-(n.walletIndex??0)))],n=B(t);return n.length?[...e,...n]:e}),[t]),c=o((()=>({signMessage:async({message:e,address:n,options:t})=>await a({message:e,address:n,options:t}),signTransaction:async({transaction:e,address:n,chain:t,options:a})=>await i({transaction:e,address:n,chain:t,options:a}),async signAndSendTransaction({transaction:e,address:n,chain:t,options:a}){let{signature:i}=await r({transaction:e,address:n,chain:t,options:a});return{signature:i}}})),[a,i,r]);return d((()=>{Xn?.setImplementation(c)}),[c]),d((()=>{var e;!n||(e=et.accounts).length===s.length&&e.every(((e,n)=>e.address===s[n]?.address))||Xn?.emit("accountChanged",s)}),[n,s]),{ready:n,wallet:et}}function tt(){let{client:e}=we(),{ready:n,wallet:t}=nt(),[a,i]=l([]),[r,s]=l([]);return d((()=>{let e=[t,...a.filter((e=>"solana"===e.chainType&&!!e.wallet.features)).map((e=>e.wallet))];s(e);let n=a.flatMap((n=>{let t=()=>s([...e]);return n.on("walletsUpdated",t),{connector:n,off:t}})),i=e.map((n=>n.features["standard:events"]?.on("change",(()=>{s([...e])}))));return()=>{i.forEach((e=>e?.())),n.forEach((({connector:e,off:n})=>e.off("walletsUpdated",n)))}}),[a]),d((()=>{i(e.connectors?.walletConnectors.filter((e=>"solana"===e.chainType))??[]);let n=()=>{i(e.connectors?.walletConnectors.filter((e=>"solana"===e.chainType))??[])};return e.connectors?.on("connectorInitialized",n),()=>{e.connectors?.off("connectorInitialized",n)}}),[n,e.connectors]),{ready:n,wallets:r}}function at(){let{ready:e,wallets:n}=tt();return{ready:e,wallets:o((()=>n.flatMap((e=>e.accounts.map((n=>new g({wallet:e,account:n})))))),[n])}}function it(e){return Ue().decode(e)}function rt(e){return BigInt(Math.floor(1e9*parseFloat(e)))}function st(e){return+ot.format(parseFloat(e.toString())/1e9)}let ot=Intl.NumberFormat(void 0,{maximumFractionDigits:8});async function ct({tx:e,solanaClient:n,amount:t,asset:a,tokenPrice:i}){if(!e)return null;if("SOL"===a&&i){let a=rt(t),r=q(a,i),s=await Bn({solanaClient:n,tx:e});return{amountInUsd:r,feeInUsd:i?q(s,i):void 0,totalInUsd:q(a+s,i)}}if("USDC"===a&&i){let a="$"+t,r=await Bn({solanaClient:n,tx:e}),s=function(e,n){let t=parseFloat(e.toString())/ne*n;return t<.01?0:t}(r,i);return{amountInUsd:a,feeInUsd:q(r,i),totalInUsd:"$"+(parseFloat(t)+s).toFixed(2)}}if("SOL"===a){let a=rt(t),i=await Bn({solanaClient:n,tx:e});return{amountInSol:t+" SOL",feeInSol:st(i)+" SOL",totalInSol:st(a+i)+" SOL"}}return{amountInUsdc:t+" USDC",feeInSol:st(await Bn({solanaClient:n,tx:e}))+" SOL"}}const lt={component:function(){let t=e(),{closePrivyModal:o,createAnalyticsEvent:c}=we(),{data:u,setModalData:p,navigate:m}=D(),{wallets:g}=at(),[h,w]=l("preparing"),[y,v]=l(),[A,b]=l(),[I,S]=l();if(!u?.solanaFundingData)throw Error("Funding config is missing");if(!u.solanaFundingData.sourceWalletData)throw Error("Funding config is missing source wallet data");let{amount:k,asset:F,chain:_,sourceWalletData:P,destinationAddress:U,afterSuccessScreen:W}=u.solanaFundingData,M=g.find((e=>e.address===P.address&&te(P.walletClientType)===te(e.standardWallet.name))),j=Qn()(_),{tokenPrice:B,isTokenPriceLoading:L}=ae("solana");return d((()=>{if("preparing"!==h||L||!M)return;let e="SOL"===F?rt(k):function(e){return BigInt(Math.floor(1e6*parseFloat(e)))}(k);b({amount:("SOL"===F&&B?q(e,B):k)??k}),("SOL"===F?async function({solanaClient:e,source:n,destination:t,amountInLamports:a}){let{value:i}=await e.rpc.getLatestBlockhash().send(),r={address:n},s=Ce(Be({version:0}),(e=>Le(r,e)),(e=>xe(i,e)),(e=>Ne(Re({amount:a,source:r,destination:t}),e)),(e=>_e(e)));return new Uint8Array(Pe().encode(s))}({solanaClient:j,source:M.address,destination:U,amountInLamports:e}):async function({solanaClient:e,source:n,destination:t,amountInBaseUnits:a}){let i=ee(e.chain),{value:r}=await e.rpc.getLatestBlockhash().send(),s={address:n},[o]=await Ve({mint:i,owner:n,tokenProgram:x}),[c]=await Ve({mint:i,owner:t,tokenProgram:x}),[l,d]=await Promise.all([e.rpc.getAccountInfo(o,{commitment:"confirmed",encoding:"jsonParsed"}).send().catch((()=>null)),e.rpc.getAccountInfo(c,{commitment:"confirmed",encoding:"jsonParsed"}).send().catch((()=>null))]);if(!l?.value)throw Error(`Source token account does not exist for address: ${n}`);let u=Je({payer:s,ata:c,owner:t,mint:i}),p=Ce(Be({version:0}),(e=>Le(s,e)),(e=>xe(r,e)),(e=>d?.value?e:Ne(u,e)),(e=>Ne(qe({source:o,destination:c,authority:s,amount:a}),e)),(e=>_e(e)));return new Uint8Array(Pe().encode(p))}({solanaClient:j,source:M.address,destination:U,amountInBaseUnits:e})).then(v).catch((e=>{w("error"),S(e)}))}),[h,k,F,_,M,U,L,B]),d((()=>{"preparing"===h&&y&&ct({tx:y,solanaClient:j,amount:k,asset:F,tokenPrice:B}).then((e=>{w("loaded"),b({amount:e?.amountInUsd??e?.amountInUsdc??e?.amountInSol??k,fee:e?.feeInUsd??e?.feeInSol,total:e?.totalInUsd??e?.totalInSol})})).catch((e=>{w("error"),S(e)}))}),[y,k,F,h,B]),d((()=>{"error"===h&&I&&(p({errorModalData:{error:I,previousScreen:lt},solanaFundingData:u.solanaFundingData}),m(ie,!1))}),[h,m]),d((()=>{if("success"!==h)return;let e=setTimeout(W?()=>m(W):o,n);return()=>clearTimeout(e)}),[h]),/*#__PURE__*/i(r,"success"===h?{children:[/*#__PURE__*/a(re,{}),/*#__PURE__*/a(se,{}),/*#__PURE__*/i(oe,{children:[/*#__PURE__*/a(s,{color:"var(--privy-color-success)",width:"64px",height:"64px"}),/*#__PURE__*/a(T,{title:"Success!",description:`You’ve successfully added ${k} ${F} to your ${t.name} wallet. It may take a minute before the funds are available to use.`})]}),/*#__PURE__*/a(O,{}),/*#__PURE__*/a(C,{})]}:"preparing"===h||"loaded"===h||"sending"===h?{children:[/*#__PURE__*/a(re,{}),/*#__PURE__*/a(ce,{style:{marginTop:"16px"},children:/*#__PURE__*/a(le,{icon:M?.standardWallet.icon,name:M?.standardWallet.name})}),/*#__PURE__*/a(T,{style:{marginTop:"8px",marginBottom:"12px"},title:"sending"===h&&M?`Confirming with ${M.standardWallet.name}`:"Confirm transaction"}),/*#__PURE__*/a(Ke,{rows:[{label:"Source",value:f(P.address)},{label:"Destination",value:f(U)},{label:"Network",value:de(_)},{label:"Amount",value:A?.amount,isLoading:"preparing"===h},{label:"Estimated fee",value:A?.fee,isLoading:"preparing"===h},{label:"Total",value:A?.total,isLoading:"preparing"===h}]}),/*#__PURE__*/a(E,{style:{marginTop:"1rem"},loading:"preparing"===h||"sending"===h,onClick:function(){"loaded"===h&&y&&M&&(w("sending"),async function({transaction:e,chain:n,sourceWallet:t,solanaClient:a}){let{hasFunds:i}=await Ln({solanaClient:a,tx:e});if(!i)throw new fe(`Wallet ${f(t.address)} does not have enough funds.`,void 0,he.INSUFFICIENT_BALANCE);let r=it((await t.signAndSendTransaction({transaction:e,chain:n}).catch((e=>{throw new fe("Transaction was rejected by the user",e,he.TRANSACTION_FAILURE)}))).signature);return await Hn({rpcSubscriptions:a.rpcSubscriptions,signature:r,timeout:2e4}),r}({solanaClient:j,transaction:y,chain:_,sourceWallet:M}).then((e=>{w("success"),c({eventName:ue,payload:{provider:"external",status:"success",txHash:e,address:M.address,value:k,chainType:"solana",clusterName:_,token:F,destinationAddress:U,destinationValue:k,destinationChainType:"solana",destinationClusterName:_,destinationToken:F}})})).catch((e=>{w("error"),S(e)})))},children:"Confirm"}),/*#__PURE__*/a(C,{})]}:{children:[/*#__PURE__*/a(re,{}),/*#__PURE__*/a(pe,{}),/*#__PURE__*/a("div",{style:{marginTop:"1rem"}}),/*#__PURE__*/a(C,{})]})}};function dt(n){t("fundSolanaWallet",n);let a=e(),{openModal:i}=we(),{setModalData:r}=D();return{fundWallet:async({address:e,options:n})=>{let t=n?.amount||a.fundingConfig?.defaultRecommendedAmount||"1",s=n?.asset||a.fundingConfig?.defaultRecommendedCurrency.asset||"native-currency",o=n?.chain||"solana:mainnet";r({funding:Ae({address:e,appConfig:a,methodScreen:H,fundWalletConfig:{...n,amount:t,asset:s,chain:o},externalSolanaFundingScreen:lt}),solanaFundingData:{amount:t,asset:"native-currency"===s?"SOL":"USDC",chain:o,destinationAddress:e,sourceWalletData:void 0}}),i(H)}}}function ut(){let{user:n,getAccessToken:t}=j(),{walletProxy:a,openModal:i,client:r}=we(),{setModalData:s}=D(),c=e();return o((()=>({exportWallet:e=>new Promise((async(o,l)=>{if(!n)return void l(new fe("User must be authenticated before exporting their Privy wallet"));let d=e?.address?K(n,e.address):me(n);if(!d)return void l(new fe("User must have an embedded wallet."));if(!be(d))return void l(Error(`Export is not supported for ${d.chainType} wallets`));let u=G(d),{entropyId:p,entropyIdVerifier:m}=Q(n,d);await t()?a?(s({connectWallet:{recoveryMethod:d.recoveryMethod,connectingWalletAddress:d.address,isUnifiedWallet:u,entropyId:p,entropyIdVerifier:m,onCompleteNavigateTo:ge,onFailure:l,shouldForceMFA:!0},keyExport:{appId:c.id,appClientId:c.appClientId,origin:r.apiUrl,address:d.address,entropyId:p,entropyIdVerifier:m,hdWalletIndex:d.walletIndex,chainType:d.chainType,walletId:d.id,isUnifiedWallet:u,imported:d.imported,onSuccess:o,onFailure:l}}),i(Y)):l(new fe("Wallet not ready for export")):l(new fe("Must have valid access token."))}))})),[n,t,a,i,r,s,c])}export{He as S,ut as a,Kn as b,at as c,tt as d,Bn as f,it as g,Ln as s,dt as u};