UNPKG

@privy-io/react-auth

Version:

React client for the Privy Auth API

2 lines (1 loc) • 41.9 kB
import{cn as e,ci as n,cA as t,cB as a,cC as i,cD as r,ai as s,aj as o,cE as c,cF as l,au as d,cc as u,al as p,cG as m,cH as f,cI as g,cJ as h,cK as y,cL as w,cM as v,ar as A,am as b,cN as I,cO as T,b5 as S,cP as O,cQ as k,cR as C,aH as E,z as x,bx as F,bV as _,ae as P,cS as U,cT as W,cU as M,af as j,b2 as B,cV as D,cW as L,as as N,cX as $,cY as R,cZ as V,c_ as J,c$ as H,d0 as Q,by as q}from"./SignRequestScreen-NOqdMm22.mjs";import{jsx as K,jsxs as Y,Fragment as G}from"react/jsx-runtime";import Z from"@heroicons/react/24/outline/CheckCircleIcon";import{useMemo as z,useCallback as X,useState as ee,useEffect as ne}from"react";import{formatTokenAmount as te,rpc as ae,ConnectedStandardSolanaWallet as ie,formatWalletAddress as re}from"@privy-io/js-sdk-core";import{P as se,h as oe}from"./paths-B891YjWw.mjs";import{u as ce,a as le}from"./internal-context-LlMdpfkb.mjs";import{u as de,i as ue,a as pe,f as me,g as fe,j as ge,k as he}from"./privy-context-V2csHgUI.mjs";import{u as ye,g as we,i as ve}from"./usePrivy-ZXeOLg-E.mjs";import Ae from"eventemitter3";import{base58 as be}from"@scure/base";import{styled as Ie}from"styled-components";import{getTransactionDecoder as Te,pipe as Se,getCompiledTransactionMessageDecoder as Oe,decompileTransactionMessage as ke,setTransactionMessageLifetimeUsingBlockhash as Ce,compileTransaction as Ee,getTransactionEncoder as xe,getBase58Decoder as Fe,getBase64Decoder as _e,fetchAddressesForLookupTables as Pe,getBase58Encoder as Ue,address as We,createTransactionMessage as Me,setTransactionMessageFeePayerSigner as je,appendTransactionMessageInstruction as Be}from"@solana/kit";import{u as De}from"./use-sign-with-user-signer-DwqsbciW.mjs";import{getTransferSolInstruction as Le}from"@solana-program/system";import{findAssociatedTokenPda as Ne,getCreateAssociatedTokenIdempotentInstruction as $e,getTransferInstruction as Re}from"@solana-program/token";function Ve({rows:i}){/*#__PURE__*/return K(e,{children:i.filter((e=>!!e)).map(((e,i)=>null!=e.value||e.isLoading?/*#__PURE__*/Y(n,{children:[/*#__PURE__*/K(t,{children:e.label}),/*#__PURE__*/K(a,{$isLoading:e.isLoading,children:e.value})]},i):null))})}const Je=["solana:mainnet","solana:devnet","solana:testnet"];function He(e,n){if(!Object.prototype.hasOwnProperty.call(e,n))throw TypeError("attempted to use private field on non-instance");return e}var Qe=0,qe="__private_"+Qe+++"__implementation";function Ke(e,n){if(!Object.prototype.hasOwnProperty.call(e,n))throw TypeError("attempted to use private field on non-instance");return e}var Ye=0;function Ge(e){return"__private_"+Ye+++"_"+e}var Ze=/*#__PURE__*/Ge("_address"),ze=/*#__PURE__*/Ge("_publicKey"),Xe=/*#__PURE__*/Ge("_chains"),en=/*#__PURE__*/Ge("_features"),nn=/*#__PURE__*/Ge("_label"),tn=/*#__PURE__*/Ge("_icon");class an{get address(){return Ke(this,Ze)[Ze]}get publicKey(){return Ke(this,ze)[ze].slice()}get chains(){return Ke(this,Xe)[Xe].slice()}get features(){return Ke(this,en)[en].slice()}get label(){return Ke(this,nn)[nn]}get icon(){return Ke(this,tn)[tn]}constructor({address:e,publicKey:n,label:t,icon:a}){Object.defineProperty(this,Ze,{writable:!0,value:void 0}),Object.defineProperty(this,ze,{writable:!0,value:void 0}),Object.defineProperty(this,Xe,{writable:!0,value:void 0}),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}),Ke(this,Ze)[Ze]=e,Ke(this,ze)[ze]=n,Ke(this,Xe)[Xe]=Je,Ke(this,nn)[nn]=t,Ke(this,tn)[tn]=a,Ke(this,en)[en]=["solana:signAndSendTransaction","solana:signTransaction","solana:signMessage"],new.target===an&&Object.freeze(this)}}function rn(e,n){if(!Object.prototype.hasOwnProperty.call(e,n))throw TypeError("attempted to use private field on non-instance");return e}var sn=0;function on(e){return"__private_"+sn+++"_"+e}var cn=/*#__PURE__*/on("_listeners"),ln=/*#__PURE__*/on("_version"),dn=/*#__PURE__*/on("_name"),un=/*#__PURE__*/on("_icon"),pn=/*#__PURE__*/on("_injection"),mn=/*#__PURE__*/on("_isPrivyWallet"),fn=/*#__PURE__*/on("_accounts"),gn=/*#__PURE__*/on("_on"),hn=/*#__PURE__*/on("_emit"),yn=/*#__PURE__*/on("_off"),wn=/*#__PURE__*/on("_connected"),vn=/*#__PURE__*/on("_connect"),An=/*#__PURE__*/on("_disconnect"),bn=/*#__PURE__*/on("_signMessage"),In=/*#__PURE__*/on("_signAndSendTransaction"),Tn=/*#__PURE__*/on("_signTransaction");function Sn(e,...n){rn(this,cn)[cn][e]?.forEach((e=>e.apply(null,n)))}function On(e,n){rn(this,cn)[cn][e]=rn(this,cn)[cn][e]?.filter((e=>n!==e))}const kn=/*#__PURE__*/Ie.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)")),Cn=({instruction:s,fees:o,transactionInfo:c,solPrice:l,chain:d})=>/*#__PURE__*/Y(e,{children:[c?.action&&/*#__PURE__*/Y(n,{children:[/*#__PURE__*/K(t,{children:"Action"}),/*#__PURE__*/K(a,{children:c.action})]}),null!=s?.total&&/*#__PURE__*/Y(n,{children:[/*#__PURE__*/K(t,{children:"Total"}),/*#__PURE__*/K(a,{children:s.total})]}),!s?.total&&null!=s?.amount&&/*#__PURE__*/Y(n,{children:[/*#__PURE__*/K(t,{children:"Total"}),/*#__PURE__*/K(a,{children:/*#__PURE__*/K(i,{quantities:[s.amount,o],tokenPrice:l})})]}),/*#__PURE__*/Y(n,{children:[/*#__PURE__*/K(t,{children:"Fees"}),/*#__PURE__*/K(a,{children:/*#__PURE__*/K(i,{quantities:[o],tokenPrice:l})})]}),s?.to&&/*#__PURE__*/Y(n,{children:[/*#__PURE__*/K(t,{children:"To"}),/*#__PURE__*/K(a,{children:/*#__PURE__*/K(r,{walletAddress:s.to,chainId:d,chainType:"solana"})})]})]}),En=({fees:e,onClose:n,receiptHeader:t,receiptDescription:a,transactionInfo:i,solPrice:r,signOnly:p,instruction:m,chain:f})=>/*#__PURE__*/Y(G,{children:[/*#__PURE__*/K(s,{onClose:n}),/*#__PURE__*/K(o,{style:{marginBottom:"16px"},children:/*#__PURE__*/Y("div",{children:[/*#__PURE__*/K(kn,{color:"var(--privy-color-success-light)"}),/*#__PURE__*/K(Z,{height:38,width:38,strokeWidth:2,stroke:"var(--privy-color-success)"})]})}),/*#__PURE__*/K(c,{title:t??`Transaction ${p?"signed":"complete"}!`,description:a??"You're all set."}),/*#__PURE__*/K(Cn,{solPrice:r,instruction:m,fees:e,transactionInfo:i,chain:f}),/*#__PURE__*/K(l,{}),/*#__PURE__*/K(xn,{loading:!1,onClick:n,children:"Close"}),/*#__PURE__*/K(d,{}),/*#__PURE__*/K(u,{})]});let xn=/*#__PURE__*/Ie(p).withConfig({displayName:"SubmitButton",componentId:"sc-3cb7ee42-0"})(["&&{margin-top:24px;}transition:color 350ms ease,background-color 350ms ease;"]);function Fn(e){return new Uint8Array(Te().decode(e).messageBytes)}async function _n(e,n){try{return await e}catch{return n}}const Pn=(...e)=>{if("undefined"==typeof Buffer)throw new se("Buffer is not defined.",void 0,oe.BUFFER_NOT_DEFINED);return Buffer.from(...e)};function Un(e){switch(e){case"solana:mainnet":return"mainnet-beta";case"solana:devnet":return"devnet";case"solana:testnet":return"testnet"}}async function Wn({privyClient:e,chain:n,mint:t}){let a=m[n];if(!a[t]){let i=await e.getSplTokenMetadata({mintAddress:t,cluster:Un(n)});i&&(a[t]={address:t,symbol:i.symbol,decimals:i.decimals})}return a[t]}async function Mn({solanaClient:e,tx:n}){let t=_e().decode(Fn(n)),{value:a}=await e.rpc.getFeeForMessage(t).send();return a??0n}async function jn({solanaClient:e,tx:n,replaceRecentBlockhash:t}){let{value:a}=await e.rpc.simulateTransaction(_e().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 jn({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 Bn({tx:e,solanaClient:n,privyClient:t,checkFunds:a}){let i=Oe().decode(Fn(e)),r=i.staticAccounts[0]??"",s=await Mn({solanaClient:n,tx:e}),o=a?await _n(jn({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 Pe(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!==f&&a!==g)if(a!==h){if(a===y){let n=await _n(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 _n($n(e,u,n,t,a));if(!i){d.push({type:"unknown",program:a,discriminator:e.data?.[0]});continue}d.push(i)}else if(v.includes(a)){let i=await _n(Rn(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 _n(Nn(e,u));if(!n){d.push({type:"unknown",program:a,discriminator:e.data?.[0]});continue}d.push(n)}else{let i=await _n(Ln(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 Dn(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=Pn(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 Ln(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 Wn({privyClient:a,chain:t.chain,mint:u}),f=m?.symbol??"";return s??=m?.decimals??9,{type:"spl-transfer",program:r,fromAta:c,fromAccount:d,toAta:l,toAccount:n,value:Dn(e.data,1),token:{symbol:f,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 Nn(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:h,account:n?.toString(),value:Dn(e.data,4),withSeed:!1}}if(2===t){let[n,t]=a;return{type:"sol-transfer",program:h,fromAccount:n,toAccount:t,token:{symbol:"SOL",decimals:9},value:Dn(e.data,4),withSeed:!1}}if(3===t){let[,n]=a;return{type:"create-account",program:h,account:n,withSeed:!0,value:Dn(e.data.slice(e.data.length-32-8-8))}}if(11===t){let[n,t]=a;return{type:"sol-transfer",program:h,fromAccount:n,toAccount:t,value:Dn(e.data,4),token:{symbol:"SOL",decimals:9},withSeed:!0}}throw Error(`System program instruction type ${t} not supported`)}async function $n(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 Wn({privyClient:a,chain:t.chain,mint:n}):void 0,tokenOut:s?await Wn({privyClient:a,chain:t.chain,mint:s}):void 0,amountIn:Dn(e.data,8),minimumAmountOut:Dn(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 Wn({privyClient:a,chain:t.chain,mint:n}):void 0,tokenOut:s?await Wn({privyClient:a,chain:t.chain,mint:s}):void 0,maxAmountIn:Dn(e.data,8),amountOut:Dn(e.data,16)}}throw Error(`Raydium swap program instruction type ${s} not supported`)}async function Rn(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 Wn({privyClient:a,chain:t.chain,mint:n}):void 0,tokenOut:r?await Wn({privyClient:a,chain:t.chain,mint:r}):void 0,outAmount:Dn(e.data,e.data.length-1-2-8-8),quotedInAmount:Dn(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 Wn({privyClient:a,chain:t.chain,mint:n}):void 0,tokenOut:r?await Wn({privyClient:a,chain:t.chain,mint:r}):void 0,outAmount:Dn(e.data,e.data.length-1-2-8-8),quotedInAmount:Dn(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 Wn({privyClient:a,chain:t.chain,mint:n}):void 0,tokenOut:r?await Wn({privyClient:a,chain:t.chain,mint:r}):void 0,inAmount:Dn(e.data,e.data.length-1-2-8-8),quotedOutAmount:Dn(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 Vn({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 Jn({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(Pn(t).toString("base64"),{preflightCommitment:"confirmed",encoding:"base64"}).send();await Vn({rpcSubscriptions:n,signature:i,timeout:1e4}),a({signature:new Uint8Array(Ue().encode(i))})}catch(e){i(e)}}))}({rpc:e,rpcSubscriptions:n});return{rpc:e,rpcSubscriptions:n,chain:t,blockExplorerUrl:a,sendAndConfirmTransaction:i}}function Hn(){let e=A(),n=z((()=>Object.fromEntries(["solana:mainnet","solana:devnet","solana:testnet"].map((n=>[n,e.solanaRpcs[n]?Jn({chain:n,rpc:e.solanaRpcs[n].rpc,rpcSubscriptions:e.solanaRpcs[n].rpcSubscriptions,blockExplorerUrl:e.solanaRpcs[n].blockExplorerUrl??`https://explorer.solana.com?cluster=${n.replace("solana:","")}`}):null])))),[e.solanaRpcs]);return X((e=>{if(!n[e])throw Error(`No RPC configuration found for chain ${e}`);return n[e]}),[n])}const Qn={component:()=>{let{data:e,onUserCloseViaDialogOrKeybindRef:n,setModalData:t,navigate:a}=b(),{client:i,closePrivyModal:r,walletProxy:s,showFiatPrices:o}=ce(),c=A(),{user:l}=de(),d=Hn()(e?.standardSignAndSendTransaction?.chain??"solana:mainnet"),[u,p]=ee(e?.standardSignAndSendTransaction?.transaction),[m,f]=ee(),[g,h]=ee(),[y,w]=ee({value:0n,isLoading:!1}),[v,x]=ee(!1),[F,_]=ee({}),[P,U]=ee(),W=e?.standardSignAndSendTransaction?.account,M=!!e?.standardSignAndSendTransaction?.signOnly,j=W?.imported?ue(l):pe(l),{solPrice:B,isSolPriceLoading:D}=I({enabled:o}),L=z((()=>{if(!m)return;let e=m.spender,n=T(m.fee),t=T(y.value,3,!0),a=m.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:T(i.value)};if("spl-transfer"===i.type)return{fee:n,spender:e,balance:t,total:`${te({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:`${`${te({amount:i.amountIn,decimals:i.tokenIn.decimals})} ${i.tokenIn.symbol}`} → ${`${te({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:`${`${te({amount:i.maxAmountIn,decimals:i.tokenIn.decimals})} ${i.tokenIn.symbol}`} → ${`${te({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:`${`${te({amount:i.inAmount,decimals:i.tokenIn.decimals})} ${i.tokenIn.symbol}`} → ${`${te({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:`${`${te({amount:i.quotedInAmount,decimals:i.tokenIn.decimals})} ${i.tokenIn.symbol}`} → ${`${te({amount:i.outAmount,decimals:i.tokenOut.decimals})} ${i.tokenOut.symbol}`}`}}return{fee:n,spender:e,balance:t}}),[m,W?.address,y]),N=z((()=>{let e;if(!m||!o||!B||D)return;function n(...e){return C(e.reduce(((e,n)=>e+n),0n),B??0)}W?.address===m.spender&&(e=n(m.fee));let t=n(y.value),a=m.instructions.filter((e=>"sol-transfer"===e.type||"spl-transfer"===e.type)).at(0);return!a||m.instructions.length>1?{fee:e,balance:t}:"sol-transfer"===a.type?{fee:e,balance:t,total:n(a.value,W?.address===m.spender?m.fee:0n)}:"spl-transfer"===a.type?{fee:e,balance:t,total:`${te({amount:a.value,decimals:a.token.decimals})} ${a.token.symbol}`}:{fee:e,balance:t}}),[m,o,B,D,W?.address,y]);if(ne((()=>{!async function(){if(u&&i)try{h(void 0);let e=await Bn({tx:u,solanaClient:d,privyClient:i,checkFunds:!M});f(e)}catch(e){console.error("Failed to prepare transaction",e),h(e)}}()}),[u,d,i,M]),ne((()=>{(async function(){if(!W)return;w({value:y.value,isLoading:!0});let{value:e}=await d.rpc.getBalance(W.address,{commitment:"confirmed"}).send();w({value:e??0n,isLoading:!1})})().catch(console.error)}),[m]),!u||!e?.standardSignAndSendTransaction||!W){let n=Error("Invalid transaction request");/*#__PURE__*/return K(S,{error:n,allowlistConfig:c.allowlistConfig,onRetry:()=>{e?.standardSignAndSendTransaction?.onFailure(n),r({shouldCallAuthOnSuccess:!1})}})}let $=()=>{if(!v)return F.signature||F.signedTransaction?e?.standardSignAndSendTransaction?.onSuccess({signature:F.signature,signedTransaction:F.signedTransaction}):e?.standardSignAndSendTransaction?.onFailure(P??g??Error("User exited the modal before submitting the transaction")),r({shouldCallAuthOnSuccess:!1})};n.current=$;let R=e.standardSignAndSendTransaction?.uiOptions?.transactionInfo?.contractInfo?.imgUrl?/*#__PURE__*/K("img",{src:e.standardSignAndSendTransaction.uiOptions.transactionInfo.contractInfo.imgUrl,alt:e.standardSignAndSendTransaction.uiOptions.transactionInfo.contractInfo.imgAltText}):null,V=!!(e.funding&&e.funding.supportedOptions.length>0),J=!m?.hasFunds&&V;if(F.signature||F.signedTransaction){let n=m?.instructions.filter((e=>"sol-transfer"===e.type||"spl-transfer"===e.type)),t=1===n?.length?n?.at(0):void 0;/*#__PURE__*/return K(En,{fees:F.fees??0n,onClose:$,transactionInfo:e.standardSignAndSendTransaction?.uiOptions.transactionInfo,solPrice:B,receiptHeader:e.standardSignAndSendTransaction?.uiOptions.successHeader,receiptDescription:e.standardSignAndSendTransaction?.uiOptions.successDescription,chain:d.chain,signOnly:M,instruction:"sol-transfer"===t?.type?{to:t.toAccount,amount:t.value}:{to:t?.toAccount||t?.toAta,total:L?.total}})}return P?/*#__PURE__*/K(O,{transactionError:P,chainId:d.chain,onClose:$,chainType:"solana",onRetry:async()=>{U(void 0);let{value:e}=await d.rpc.getLatestBlockhash().send();p(function(e,n){return Se(Oe().decode(Fn(e)),(e=>ke(e)),(e=>Ce(n,e)),(e=>Ee(e)),(e=>new Uint8Array(xe().encode(e))))}(u,e))}}):/*#__PURE__*/K(k,{img:R,title:e.standardSignAndSendTransaction?.uiOptions?.transactionInfo?.title||"Confirm transaction",subtitle:e.standardSignAndSendTransaction?.uiOptions?.description||`${c.name} wants your permission to approve the following transaction.`,cta:J?"Add funds":e.standardSignAndSendTransaction?.uiOptions?.buttonText||"Approve",instructions:m?.instructions??[],network:"solana:mainnet"==d.chain?"Solana":d.chain.replace("solana:",""),blockExplorerUrl:d.blockExplorerUrl,total:o?N?.total:L?.total,fee:o?N?.fee:L?.fee,balance:o?N?.balance:L?.balance,swap:L?.swap,transactingWalletAddress:W.address,disabled:!m?.hasFunds&&!V,isSubmitting:v,isPreparing:!m||y.isLoading,isTokenPriceLoading:o&&D,isMissingFunds:!m?.hasFunds,submitError:P??void 0,parseError:g,onClick:J?async()=>{if(W){if(!V)throw Error("Funding wallet is not enabled");t({...e,funding:{...e.funding,methodScreen:E},solanaFundingData:e?.solanaFundingData}),a(E)}}:async()=>{try{if(x(!0),v||!W||!s||!l||!j)return;let n=await e.standardSignAndSendTransaction.onConfirm(u);if("signature"in n){let e=await async function({solanaClient:e,signature:n}){let t=Fe().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:d,signature:n.signature});return void _({...n,fees:e?.fee})}_(n)}catch(e){console.warn({transaction:u,error:e}),U(e)}finally{x(!1)}},onClose:$})}};function qn(e,n,t){let a=structuredClone(Te().decode(e)),i=We(n);return i in a.signatures&&(a.signatures[i]=t),new Uint8Array(xe().encode(a))}function Kn(){let{isHeadlessSigning:e,walletProxy:n,initializeWalletProxy:t,recoverEmbeddedWallet:a,openModal:i,privy:r,client:s}=ce(),{user:o}=ye(),{setModalData:c}=b(),{signWithUserSigner:l}=De();return{signMessage:({message:d,address:u,options:p})=>new Promise((async(m,f)=>{let g=me(o,u);if("privy"!==g?.walletClientType)return void f(new se("Wallet is not a Privy wallet",void 0,oe.EMBEDDED_WALLET_NOT_FOUND));let{entropyId:h,entropyIdVerifier:y}=x(o,g),w=fe(g),v=Pn(d).toString("base64");if(v.length<1)return void f(new se("Message must be a non-empty string",void 0,oe.INVALID_MESSAGE));let A=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:g.address}))throw Error("Unable to connect to wallet");if(w){let n=await ae(r,l,{chain_type:"solana",method:"signMessage",params:{message:v,encoding:"base64"},wallet_id:g.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:h,entropyIdVerifier:y,chainType:"solana",hdWalletIndex:g.walletIndex??0,requesterAppId:p?.uiOptions?.requesterAppId,request:{method:"signMessage",params:{message:v}}});e=n.data.signature}return e};if(e({showWalletUIs:p?.uiOptions?.showWalletUIs}))try{let e=await A(),n=new Uint8Array(Pn(e,"base64"));m({signature:n})}catch(e){f(e)}else c({signMessage:{method:"solana_signMessage",data:v,confirmAndSign:A,onSuccess:e=>{m({signature:new Uint8Array(Pn(e,"base64"))})},onFailure:e=>{f(e)},uiOptions:p?.uiOptions??{}},connectWallet:{recoveryMethod:g.recoveryMethod,connectingWalletAddress:g.address,entropyId:h,entropyIdVerifier:y,isUnifiedWallet:w,onCompleteNavigateTo:F,onFailure:e=>{f(new se("Failed to connect to wallet",e,oe.UNKNOWN_CONNECT_WALLET_ERROR))}}}),i(_)}))}}function Yn(){let{isHeadlessSigning:e,openModal:n}=ce(),{setModalData:t}=b(),{signMessage:a}=Kn(),{user:i}=ye();return{signTransaction:async({transaction:r,options:s,chain:o="solana:mainnet",address:c})=>{async function l(e){let{signature:n}=await a({message:Fn(e),address:c,options:{...s,uiOptions:{...s?.uiOptions,showWalletUIs:!1}}});return{signedTransaction:qn(e,c,n)}}return e({showWalletUIs:s?.uiOptions?.showWalletUIs})?l(r):new Promise((async(e,a)=>{let d=me(i,c);if("privy"!==d?.walletClientType)return void a(new se("Wallet is not a Privy wallet",void 0,oe.EMBEDDED_WALLET_NOT_FOUND));let{entropyId:u,entropyIdVerifier:p}=x(i,d),m=fe(d);function f(e){return n=>{a(n instanceof se?n:new se("Failed to connect to wallet",n,e))}}let g={account:d,transaction:r,chain:o,signOnly:!0,uiOptions:s?.uiOptions||{},onConfirm:l,onSuccess:e,onFailure:f(oe.TRANSACTION_FAILURE)};t({connectWallet:{recoveryMethod:d.recoveryMethod,connectingWalletAddress:d.address,entropyId:u,entropyIdVerifier:p,isUnifiedWallet:m,onCompleteNavigateTo:Qn,onFailure:f(oe.UNKNOWN_CONNECT_WALLET_ERROR)},standardSignAndSendTransaction:g}),n(_)}))}}}let Gn=new class extends Ae{setImplementation(e){He(this,qe)[qe]=e}async signMessage(e){return He(this,qe)[qe].signMessage(e)}async signAndSendTransaction(e){return He(this,qe)[qe].signAndSendTransaction(e)}async signTransaction(e){return He(this,qe)[qe].signTransaction(e)}constructor(e){super(),Object.defineProperty(this,qe,{writable:!0,value:void 0}),He(this,qe)[qe]=e}}({signTransaction:le("signTransaction was not injected"),signAndSendTransaction:le("signAndSendTransaction was not injected"),signMessage:le("signMessage was not injected")}),Zn=new class{get version(){return rn(this,ln)[ln]}get name(){return rn(this,dn)[dn]}get icon(){return rn(this,un)[un]}get chains(){return Je.slice()}get features(){return{"standard:connect":{version:"1.0.0",connect:rn(this,vn)[vn]},"standard:disconnect":{version:"1.0.0",disconnect:rn(this,An)[An]},"standard:events":{version:"1.0.0",on:rn(this,gn)[gn]},"solana:signAndSendTransaction":{version:"1.0.0",supportedTransactionVersions:["legacy",0],signAndSendTransaction:rn(this,In)[In]},"solana:signTransaction":{version:"1.0.0",supportedTransactionVersions:["legacy",0],signTransaction:rn(this,Tn)[Tn]},"solana:signMessage":{version:"1.0.0",signMessage:rn(this,bn)[bn]},"privy:":{privy:{signMessage:rn(this,pn)[pn].signMessage,signTransaction:rn(this,pn)[pn].signTransaction,signAndSendTransaction:rn(this,pn)[pn].signAndSendTransaction}}}}get accounts(){return rn(this,fn)[fn].slice()}get isPrivyWallet(){return rn(this,mn)[mn]}constructor({name:e,icon:n,version:t,injection:a,wallets:i}){Object.defineProperty(this,hn,{value:Sn}),Object.defineProperty(this,yn,{value:On}),Object.defineProperty(this,cn,{writable:!0,value:void 0}),Object.defineProperty(this,ln,{writable:!0,value:void 0}),Object.defineProperty(this,dn,{writable:!0,value:void 0}),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,fn,{writable:!0,value:void 0}),Object.defineProperty(this,gn,{writable:!0,value:void 0}),Object.defineProperty(this,wn,{writable:!0,value:void 0}),Object.defineProperty(this,vn,{writable:!0,value:void 0}),Object.defineProperty(this,An,{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,Tn,{writable:!0,value:void 0}),rn(this,cn)[cn]={},rn(this,gn)[gn]=(e,n)=>(rn(this,cn)[cn][e]?.push(n)||(rn(this,cn)[cn][e]=[n]),()=>rn(this,yn)[yn](e,n)),rn(this,wn)[wn]=e=>{null!=e&&(rn(this,fn)[fn]=e.map((({address:e})=>new an({address:e,publicKey:be.decode(e)})))),rn(this,hn)[hn]("change",{accounts:this.accounts})},rn(this,vn)[vn]=async()=>(rn(this,hn)[hn]("change",{accounts:this.accounts}),{accounts:this.accounts}),rn(this,An)[An]=async()=>{rn(this,hn)[hn]("change",{accounts:this.accounts})},rn(this,bn)[bn]=async(...e)=>{let n=[];for(let{account:t,...a}of e){let{signature:e}=await rn(this,pn)[pn].signMessage({...a,address:t.address});n.push({signedMessage:a.message,signature:e})}return n},rn(this,In)[In]=async(...e)=>{let n=[];for(let{transaction:t,account:a,options:i,chain:r}of e){let{signature:e}=await rn(this,pn)[pn].signAndSendTransaction({transaction:t,address:a.address,chain:r||"solana:mainnet",options:i});n.push({signature:e})}return n},rn(this,Tn)[Tn]=async(...e)=>{let n=[];for(let{transaction:t,account:a,options:i,chain:r}of e){let{signedTransaction:e}=await rn(this,pn)[pn].signTransaction({transaction:t,address:a.address,chain:r||"solana:mainnet",options:i});n.push({signedTransaction:e})}return n},rn(this,dn)[dn]=e,rn(this,un)[un]=n,rn(this,ln)[ln]=t,rn(this,pn)[pn]=a,rn(this,fn)[fn]=[],rn(this,mn)[mn]=!0,a.on("accountChanged",rn(this,wn)[wn],this),rn(this,wn)[wn](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:Gn});function zn(){let{ready:e}=P(),{user:n}=ye(),{signMessage:t}=Kn(),{signTransaction:a}=Yn(),{signAndSendTransaction:i}=function(){let e=A(),{isHeadlessSigning:n,openModal:t}=ce(),{setModalData:a}=b(),{signTransaction:i}=Yn(),r=Hn(),{user:s}=ye();return{signAndSendTransaction:async({transaction:o,address:c,chain:l="solana:mainnet",options:d})=>{async function u(e){let{signedTransaction:n}=await i({transaction:e,address:c,chain:l,options:{...d,uiOptions:{...d?.uiOptions,showWalletUIs:!1}}}),{signature:t}=await r(l).sendAndConfirmTransaction(n);return{signature:t}}return n({showWalletUIs:d?.uiOptions?.showWalletUIs})?u(o):new Promise((async(n,i)=>{let r,p,m=me(s,c);if("privy"!==m?.walletClientType)return void i(new se("Wallet is not a Privy wallet",void 0,oe.EMBEDDED_WALLET_NOT_FOUND));let{entropyId:f,entropyIdVerifier:g}=x(s,m),h=fe(m);function y(e){return n=>{i(n instanceof se?n:new se("Failed to connect to wallet",n,e))}}let w={account:m,transaction:o,chain:l,signOnly:!1,uiOptions:d?.uiOptions||{},onConfirm:u,onSuccess:n,onFailure:y(oe.TRANSACTION_FAILURE)},v={recoveryMethod:m.recoveryMethod,connectingWalletAddress:m.address,entropyId:f,entropyIdVerifier:g,isUnifiedWallet:h,onCompleteNavigateTo:Qn,onFailure:y(oe.UNKNOWN_CONNECT_WALLET_ERROR)};e.fundingConfig&&(r=we({address:c,appConfig:e,methodScreen:E,fundWalletConfig:{...d,asset:"native-currency",chain:l},externalSolanaFundingScreen:rt}),p={amount:e.fundingConfig.defaultRecommendedAmount,asset:"SOL",chain:l,destinationAddress:c,afterSuccessScreen:Qn,sourceWalletData:void 0}),a({connectWallet:v,standardSignAndSendTransaction:w,funding:r,solanaFundingData:p}),t(_)}))}}}(),r=z((()=>{let e=[...ge(n).sort(((e,n)=>(e.walletIndex??0)-(n.walletIndex??0)))],t=ue(n);return t?[...e,t]:e}),[n]),s=z((()=>({signMessage:async({message:e,address:n,options:a})=>await t({message:e,address:n,options:a}),signTransaction:async({transaction:e,address:n,chain:t,options:i})=>await a({transaction:e,address:n,chain:t,options:i}),async signAndSendTransaction({transaction:e,address:n,chain:t,options:a}){let{signature:r}=await i({transaction:e,address:n,chain:t,options:a});return{signature:r}}})),[t,a,i]);return ne((()=>{Gn?.setImplementation(s)}),[s]),ne((()=>{var n;!e||(n=Zn.accounts).length===r.length&&n.every(((e,n)=>e.address===r[n]?.address))||Gn?.emit("accountChanged",r)}),[e,r]),{ready:e,wallet:Zn}}function Xn(){let{ready:e,wallets:n}=function(){let{client:e}=ce(),{ready:n,wallet:t}=zn(),[a,i]=ee([]),[r,s]=ee([]);return ne((()=>{let e=[t,...a.filter((e=>"solana"===e.chainType&&!!e.wallet.features)).map((e=>e.wallet))];s(e);let n=e.map((n=>n.features["standard:events"]?.on("change",(()=>{s([...e])}))));return()=>{n.forEach((e=>e?.()))}}),[a]),ne((()=>{if(!n)return;i(e.connectors?.walletConnectors.filter((e=>"solana"===e.chainType))??[]);let t=()=>{i(e.connectors?.walletConnectors.filter((e=>"solana"===e.chainType))??[])};return e.connectors?.on("connectorInitialized",t),()=>{e.connectors?.off("connectorInitialized",t)}}),[n,e.connectors]),{ready:n,wallets:r}}();return{ready:e,wallets:z((()=>n.flatMap((e=>e.accounts.map((n=>new ie({wallet:e,account:n})))))),[n])}}function et(e){return Fe().decode(e)}function nt(e){return BigInt(Math.floor(1e9*parseFloat(e)))}function tt(e){return+at.format(parseFloat(e.toString())/1e9)}let at=Intl.NumberFormat(void 0,{maximumFractionDigits:8});async function it({tx:e,solanaClient:n,amount:t,asset:a,tokenPrice:i}){if(!e)return null;if("SOL"===a&&i){let a=nt(t),r=C(a,i),s=await Mn({solanaClient:n,tx:e});return{amountInUsd:r,feeInUsd:i?C(s,i):void 0,totalInUsd:C(a+s,i)}}if("USDC"===a&&i){let a="$"+t,r=await Mn({solanaClient:n,tx:e}),s=function(e,n){let t=parseFloat(e.toString())/W*n;return t<.01?0:t}(r,i);return{amountInUsd:a,feeInUsd:C(r,i),totalInUsd:"$"+(parseFloat(t)+s).toFixed(2)}}if("SOL"===a){let a=nt(t),i=await Mn({solanaClient:n,tx:e});return{amountInSol:t+" SOL",feeInSol:tt(i)+" SOL",totalInSol:tt(a+i)+" SOL"}}return{amountInUsdc:t+" USDC",feeInSol:tt(await Mn({solanaClient:n,tx:e}))+" SOL"}}const rt={component:function(){let e=A(),{closePrivyModal:n,createAnalyticsEvent:t}=ce(),{data:a,setModalData:i,navigate:r}=b(),{wallets:s}=Xn(),[o,l]=ee("preparing"),[m,g]=ee(),[h,y]=ee(),[w,v]=ee();if(!a?.solanaFundingData)throw Error("Funding config is missing");if(!a.solanaFundingData.sourceWalletData)throw Error("Funding config is missing source wallet data");let{amount:I,asset:T,chain:S,sourceWalletData:O,destinationAddress:k,afterSuccessScreen:E}=a.solanaFundingData,x=s.find((e=>e.address===O.address&&M(O.walletClientType)===M(e.standardWallet.name))),F=Hn()(S),{tokenPrice:_,isTokenPriceLoading:P}=j("solana");return ne((()=>{if("preparing"!==o||P||!x)return;let e="SOL"===T?nt(I):function(e){return BigInt(Math.floor(1e6*parseFloat(e)))}(I);y({amount:("SOL"===T&&_?C(e,_):I)??I}),("SOL"===T?async function({solanaClient:e,source:n,destination:t,amountInLamports:a}){let{value:i}=await e.rpc.getLatestBlockhash().send(),r={address:n},s=Se(Me({version:0}),(e=>je(r,e)),(e=>Ce(i,e)),(e=>Be(Le({amount:a,source:r,destination:t}),e)),(e=>Ee(e)));return new Uint8Array(xe().encode(s))}({solanaClient:F,source:x.address,destination:k,amountInLamports:e}):async function({solanaClient:e,source:n,destination:t,amountInBaseUnits:a}){let i=U(e.chain),{value:r}=await e.rpc.getLatestBlockhash().send(),s={address:n},[o]=await Ne({mint:i,owner:n,tokenProgram:f}),[c]=await Ne({mint:i,owner:t,tokenProgram:f}),[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=$e({payer:s,ata:c,owner:t,mint:i}),p=Se(Me({version:0}),(e=>je(s,e)),(e=>Ce(r,e)),(e=>d?.value?e:Be(u,e)),(e=>Be(Re({source:o,destination:c,authority:s,amount:a}),e)),(e=>Ee(e)));return new Uint8Array(xe().encode(p))}({solanaClient:F,source:x.address,destination:k,amountInBaseUnits:e})).then(g).catch((e=>{l("error"),v(e)}))}),[o,I,T,S,x,k,P,_]),ne((()=>{"preparing"===o&&m&&it({tx:m,solanaClient:F,amount:I,asset:T,tokenPrice:_}).then((e=>{l("loaded"),y({amount:e?.amountInUsd??e?.amountInUsdc??e?.amountInSol??I,fee:e?.feeInUsd??e?.feeInSol,total:e?.totalInUsd??e?.totalInSol})})).catch((e=>{l("error"),v(e)}))}),[m,I,T,o,_]),ne((()=>{"error"===o&&w&&(i({errorModalData:{error:w,previousScreen:rt},solanaFundingData:a.solanaFundingData}),r(B,!1))}),[o,r]),ne((()=>{if("success"!==o)return;let e=setTimeout(E?()=>r(E):n,D);return()=>clearTimeout(e)}),[o]),/*#__PURE__*/Y(G,"success"===o?{children:[/*#__PURE__*/K(L,{}),/*#__PURE__*/K(N,{}),/*#__PURE__*/Y($,{children:[/*#__PURE__*/K(Z,{color:"var(--privy-color-success)",width:"64px",height:"64px"}),/*#__PURE__*/K(c,{title:"Success!",description:`You’ve successfully added ${I} ${T} to your ${e.name} wallet. It may take a minute before the funds are available to use.`})]}),/*#__PURE__*/K(d,{}),/*#__PURE__*/K(u,{})]}:"preparing"===o||"loaded"===o||"sending"===o?{children:[/*#__PURE__*/K(L,{}),/*#__PURE__*/K(R,{style:{marginTop:"16px"},children:/*#__PURE__*/K(V,{icon:x?.standardWallet.icon,name:x?.standardWallet.name})}),/*#__PURE__*/K(c,{style:{marginTop:"8px",marginBottom:"12px"},title:"sending"===o&&x?`Confirming with ${x.standardWallet.name}`:"Confirm transaction"}),/*#__PURE__*/K(Ve,{rows:[{label:"Source",value:re(O.address)},{label:"Destination",value:re(k)},{label:"Network",value:J(S)},{label:"Amount",value:h?.amount,isLoading:"preparing"===o},{label:"Estimated fee",value:h?.fee,isLoading:"preparing"===o},{label:"Total",value:h?.total,isLoading:"preparing"===o}]}),/*#__PURE__*/K(p,{style:{marginTop:"1rem"},loading:"preparing"===o||"sending"===o,onClick:function(){"loaded"===o&&m&&x&&(l("sending"),async function({transaction:e,chain:n,sourceWallet:t,solanaClient:a}){let{hasFunds:i}=await jn({solanaClient:a,tx:e});if(!i)throw new se(`Wallet ${re(t.address)} does not have enough funds.`,void 0,oe.INSUFFICIENT_BALANCE);let r=et((await t.signAndSendTransaction({transaction:e,chain:n}).catch((e=>{throw new se("Transaction was rejected by the user",e,oe.TRANSACTION_FAILURE)}))).signature);return await Vn({rpcSubscriptions:a.rpcSubscriptions,signature:r,timeout:2e4}),r}({solanaClient:F,transaction:m,chain:S,sourceWallet:x}).then((e=>{l("success"),t({eventName:H,payload:{provider:"external",status:"success",txHash:e,address:x.address,value:I,chainType:"solana",clusterName:S,token:T,destinationAddress:k,destinationValue:I,destinationChainType:"solana",destinationClusterName:S,destinationToken:T}})})).catch((e=>{l("error"),v(e)})))},children:"Confirm"}),/*#__PURE__*/K(u,{})]}:{children:[/*#__PURE__*/K(L,{}),/*#__PURE__*/K(Q,{}),/*#__PURE__*/K("div",{style:{marginTop:"1rem"}}),/*#__PURE__*/K(u,{})]})}};function st(){let e=A(),{openModal:n}=ce(),{setModalData:t}=b();return{fundWallet:async({address:a,options:i})=>{let r=i?.amount||e.fundingConfig?.defaultRecommendedAmount||"1",s=i?.asset||e.fundingConfig?.defaultRecommendedCurrency.asset||"native-currency",o=i?.chain||"solana:mainnet";t({funding:we({address:a,appConfig:e,methodScreen:E,fundWalletConfig:{...i,amount:r,asset:s,chain:o},externalSolanaFundingScreen:rt}),solanaFundingData:{amount:r,asset:"native-currency"===s?"SOL":"USDC",chain:o,destinationAddress:a,sourceWalletData:void 0}}),n(E)}}}function ot(){let{user:e,getAccessToken:n}=de(),{walletProxy:t,openModal:a,client:i}=ce(),{setModalData:r}=b(),s=A();return z((()=>({exportWallet:o=>new Promise((async(c,l)=>{if(!e)return void l(new se("User must be authenticated before exporting their Privy wallet"));let d=o?.address?me(e,o.address):he(e);if(!d)return void l(new se("User must have an embedded wallet."));if(!ve(d))return void l(Error(`Export is not supported for ${d.chainType} wallets`));let u=fe(d),{entropyId:p,entropyIdVerifier:m}=x(e,d);await n()?t?(r({connectWallet:{recoveryMethod:d.recoveryMethod,connectingWalletAddress:d.address,isUnifiedWallet:u,entropyId:p,entropyIdVerifier:m,onCompleteNavigateTo:q,onFailure:l,shouldForceMFA:!0},keyExport:{appId:s.id,appClientId:s.appClientId,origin:i.apiUrl,address:d.address,entropyId:p,entropyIdVerifier:m,hdWalletIndex:d.walletIndex,chainType:d.chainType,walletId:d.id,isUnifiedWallet:u,imported:d.imported,onSuccess:c,onFailure:l}}),a(_)):l(new se("Wallet not ready for export")):l(new se("Must have valid access token."))}))})),[e,n,t,a,i,r,s])}export{ot as a,et as b,Xn as c,Mn as f,Jn as g,jn as s,st as u};