@privy-io/react-auth 3.4.1 → 3.4.2-beta-20251024222344
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/{SignRequestScreen-cAAtS6nl.js → SignRequestScreen-CQ5Uv3Ko.js} +19 -19
- package/dist/cjs/abstract-smart-wallets.js +1 -1
- package/dist/cjs/index.js +6 -6
- package/dist/cjs/{smart-wallets-65yy6DGK.js → smart-wallets-5ZD9AaXx.js} +1 -1
- package/dist/cjs/smart-wallets.js +1 -1
- package/dist/cjs/solana.js +1 -1
- package/dist/cjs/ui.js +1 -1
- package/dist/cjs/{use-export-wallet-9ypqLaaB.js → use-export-wallet-D7YWhrXi.js} +2 -2
- package/dist/cjs/{useActiveWallet-CtNcsjJH.js → useActiveWallet-BQrJpoI4.js} +1 -1
- package/dist/cjs/{usePrivy-dGz-b0SX.js → usePrivy-CQ4PJHWQ.js} +1 -1
- package/dist/dts/events-context-BWjWYSoK.d.mts +328 -0
- package/dist/dts/events-context-BWjWYSoK.d.ts +328 -0
- package/dist/dts/extended-chains.d.mts +1 -1
- package/dist/dts/extended-chains.d.ts +1 -1
- package/dist/dts/farcaster.d.mts +1 -1
- package/dist/dts/farcaster.d.ts +1 -1
- package/dist/dts/index.d.mts +17 -329
- package/dist/dts/index.d.ts +17 -329
- package/dist/dts/smart-wallets.d.mts +1 -1
- package/dist/dts/smart-wallets.d.ts +1 -1
- package/dist/dts/solana.d.mts +30 -5
- package/dist/dts/solana.d.ts +30 -5
- package/dist/dts/{types-BF33BYgd.d.mts → types-DnBecU1G.d.mts} +1 -1
- package/dist/dts/{types-BF33BYgd.d.ts → types-DnBecU1G.d.ts} +1 -1
- package/dist/dts/ui.d.mts +1 -1
- package/dist/dts/ui.d.ts +1 -1
- package/dist/esm/{SignRequestScreen-cNZ56bAg.mjs → SignRequestScreen-CtK0tEJj.mjs} +1 -1
- package/dist/esm/abstract-smart-wallets.mjs +1 -1
- package/dist/esm/index.mjs +4 -4
- package/dist/esm/{smart-wallets-_lFo8N6W.mjs → smart-wallets-1QLab7PO.mjs} +1 -1
- package/dist/esm/smart-wallets.mjs +1 -1
- package/dist/esm/solana.mjs +1 -1
- package/dist/esm/ui.mjs +1 -1
- package/dist/esm/use-export-wallet-CeffipUk.mjs +1 -0
- package/dist/esm/{useActiveWallet-BLu2tB4S.mjs → useActiveWallet-CCF1h379.mjs} +1 -1
- package/dist/esm/{usePrivy-DmWciddF.mjs → usePrivy-zBP5OUVF.mjs} +1 -1
- package/package.json +4 -4
- package/dist/esm/use-export-wallet-E2KvvjYq.mjs +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{cn as n,ci as e,cA as t,cB as a,cC as i,cD as r,aj as s,ak as o,cE as c,cF as l,av as d,cc as u,am as p,cG as m,cH as g,cI as f,cJ as h,cK as w,cL as y,cM as v,an as A,as as b,cN as I,cO as S,b5 as T,cP as O,cQ as k,cR as C,aH as E,F,bQ as _,bO as x,f as P,af as U,cS as W,cT as M,cU as B,ag as D,b2 as j,cV as L,cW as N,at as $,cX as R,cY as V,cZ as J,c_ as H,c$ as Q,d0 as q,aa as K,bN as Y}from"./SignRequestScreen-CtK0tEJj.mjs";import{jsx as G,jsxs as Z,Fragment as z}from"react/jsx-runtime";import X from"@heroicons/react/24/outline/CheckCircleIcon";import{useMemo as nn,useCallback as en,useState as tn,useEffect as an}from"react";import rn,{formatTokenAmount as sn,rpc as on,ConnectedStandardSolanaWallet as cn,formatWalletAddress as ln}from"@privy-io/js-sdk-core";import{P as dn,h as un}from"./paths-B891YjWw.mjs";import{u as pn,a as mn}from"./internal-context-CfE_S5P-.mjs";import{u as gn,h as fn,a as hn,f as wn,g as yn,k as vn,l as An}from"./privy-context-DDSW3jEM.mjs";import{u as bn,g as In,i as Sn}from"./usePrivy-zBP5OUVF.mjs";import Tn from"eventemitter3";import{base58 as On}from"@scure/base";import{u as kn}from"./use-sign-with-user-signer-DVcbjNtZ.mjs";import{styled as Cn}from"styled-components";import{getTransactionDecoder as En,pipe as Fn,getCompiledTransactionMessageDecoder as _n,decompileTransactionMessage as xn,setTransactionMessageLifetimeUsingBlockhash as Pn,compileTransaction as Un,getTransactionEncoder as Wn,getBase58Decoder as Mn,getBase64Decoder as Bn,fetchAddressesForLookupTables as Dn,getBase58Encoder as jn,address as Ln,createTransactionMessage as Nn,setTransactionMessageFeePayerSigner as $n,appendTransactionMessageInstruction as Rn}from"@solana/kit";import{getTransferSolInstruction as Vn}from"@solana-program/system";import{findAssociatedTokenPda as Jn,getCreateAssociatedTokenIdempotentInstruction as Hn,getTransferInstruction as Qn}from"@solana-program/token";function qn({rows:i}){/*#__PURE__*/return G(n,{children:i.filter((n=>!!n)).map(((n,i)=>null!=n.value||n.isLoading?/*#__PURE__*/Z(e,{children:[/*#__PURE__*/G(t,{children:n.label}),/*#__PURE__*/G(a,{$isLoading:n.isLoading,children:n.value})]},i):null))})}const Kn=["solana:mainnet","solana:devnet","solana:testnet"];function Yn(n,e){if(!Object.prototype.hasOwnProperty.call(n,e))throw TypeError("attempted to use private field on non-instance");return n}var Gn=0,Zn="__private_"+Gn+++"__implementation";function zn(n,e){if(!Object.prototype.hasOwnProperty.call(n,e))throw TypeError("attempted to use private field on non-instance");return n}var Xn=0;function ne(n){return"__private_"+Xn+++"_"+n}var ee=/*#__PURE__*/ne("_address"),te=/*#__PURE__*/ne("_publicKey"),ae=/*#__PURE__*/ne("_chains"),ie=/*#__PURE__*/ne("_features"),re=/*#__PURE__*/ne("_label"),se=/*#__PURE__*/ne("_icon");class oe{get address(){return zn(this,ee)[ee]}get publicKey(){return zn(this,te)[te].slice()}get chains(){return zn(this,ae)[ae].slice()}get features(){return zn(this,ie)[ie].slice()}get label(){return zn(this,re)[re]}get icon(){return zn(this,se)[se]}constructor({address:n,publicKey:e,label:t,icon:a}){Object.defineProperty(this,ee,{writable:!0,value:void 0}),Object.defineProperty(this,te,{writable:!0,value:void 0}),Object.defineProperty(this,ae,{writable:!0,value:void 0}),Object.defineProperty(this,ie,{writable:!0,value:void 0}),Object.defineProperty(this,re,{writable:!0,value:void 0}),Object.defineProperty(this,se,{writable:!0,value:void 0}),zn(this,ee)[ee]=n,zn(this,te)[te]=e,zn(this,ae)[ae]=Kn,zn(this,re)[re]=t,zn(this,se)[se]=a,zn(this,ie)[ie]=["solana:signAndSendTransaction","solana:signTransaction","solana:signMessage"],new.target===oe&&Object.freeze(this)}}function ce(n,e){if(!Object.prototype.hasOwnProperty.call(n,e))throw TypeError("attempted to use private field on non-instance");return n}var le=0;function de(n){return"__private_"+le+++"_"+n}var ue=/*#__PURE__*/de("_listeners"),pe=/*#__PURE__*/de("_version"),me=/*#__PURE__*/de("_name"),ge=/*#__PURE__*/de("_icon"),fe=/*#__PURE__*/de("_injection"),he=/*#__PURE__*/de("_isPrivyWallet"),we=/*#__PURE__*/de("_accounts"),ye=/*#__PURE__*/de("_on"),ve=/*#__PURE__*/de("_emit"),Ae=/*#__PURE__*/de("_off"),be=/*#__PURE__*/de("_connected"),Ie=/*#__PURE__*/de("_connect"),Se=/*#__PURE__*/de("_disconnect"),Te=/*#__PURE__*/de("_signMessage"),Oe=/*#__PURE__*/de("_signAndSendTransaction"),ke=/*#__PURE__*/de("_signTransaction");function Ce(n,...e){ce(this,ue)[ue][n]?.forEach((n=>n.apply(null,e)))}function Ee(n,e){ce(this,ue)[ue][n]=ce(this,ue)[ue][n]?.filter((n=>e!==n))}const Fe=/*#__PURE__*/Cn.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;}"],(n=>n.color??"var(--privy-color-accent)"),(n=>n.color??"var(--privy-color-accent)")),_e=({instruction:s,fees:o,transactionInfo:c,solPrice:l,chain:d})=>/*#__PURE__*/Z(n,{children:[c?.action&&/*#__PURE__*/Z(e,{children:[/*#__PURE__*/G(t,{children:"Action"}),/*#__PURE__*/G(a,{children:c.action})]}),null!=s?.total&&/*#__PURE__*/Z(e,{children:[/*#__PURE__*/G(t,{children:"Total"}),/*#__PURE__*/G(a,{children:s.total})]}),!s?.total&&null!=s?.amount&&/*#__PURE__*/Z(e,{children:[/*#__PURE__*/G(t,{children:"Total"}),/*#__PURE__*/G(a,{children:/*#__PURE__*/G(i,{quantities:[s.amount,o],tokenPrice:l})})]}),/*#__PURE__*/Z(e,{children:[/*#__PURE__*/G(t,{children:"Fees"}),/*#__PURE__*/G(a,{children:/*#__PURE__*/G(i,{quantities:[o],tokenPrice:l})})]}),s?.to&&/*#__PURE__*/Z(e,{children:[/*#__PURE__*/G(t,{children:"To"}),/*#__PURE__*/G(a,{children:/*#__PURE__*/G(r,{walletAddress:s.to,chainId:d,chainType:"solana"})})]})]}),xe=({fees:n,onClose:e,receiptHeader:t,receiptDescription:a,transactionInfo:i,solPrice:r,signOnly:p,instruction:m,chain:g})=>/*#__PURE__*/Z(z,{children:[/*#__PURE__*/G(s,{onClose:e}),/*#__PURE__*/G(o,{style:{marginBottom:"16px"},children:/*#__PURE__*/Z("div",{children:[/*#__PURE__*/G(Fe,{color:"var(--privy-color-success-light)"}),/*#__PURE__*/G(X,{height:38,width:38,strokeWidth:2,stroke:"var(--privy-color-success)"})]})}),/*#__PURE__*/G(c,{title:t??`Transaction ${p?"signed":"complete"}!`,description:a??"You're all set."}),/*#__PURE__*/G(_e,{solPrice:r,instruction:m,fees:n,transactionInfo:i,chain:g}),/*#__PURE__*/G(l,{}),/*#__PURE__*/G(Pe,{loading:!1,onClick:e,children:"Close"}),/*#__PURE__*/G(d,{}),/*#__PURE__*/G(u,{})]});let Pe=/*#__PURE__*/Cn(p).withConfig({displayName:"SubmitButton",componentId:"sc-3cb7ee42-0"})(["&&{margin-top:24px;}transition:color 350ms ease,background-color 350ms ease;"]);function Ue(n){return new Uint8Array(En().decode(n).messageBytes)}async function We(n,e){try{return await n}catch{return e}}const Me=(...n)=>{if("undefined"==typeof Buffer)throw new dn("Buffer is not defined.",void 0,un.BUFFER_NOT_DEFINED);return Buffer.from(...n)};function Be(n){switch(n){case"solana:mainnet":return"mainnet-beta";case"solana:devnet":return"devnet";case"solana:testnet":return"testnet"}}async function De({privyClient:n,chain:e,mint:t}){let a=m[e];if(!a[t]){let i=await n.getSplTokenMetadata({mintAddress:t,cluster:Be(e)});i&&(a[t]={address:t,symbol:i.symbol,decimals:i.decimals})}return a[t]}async function je({solanaClient:n,tx:e}){let t=Bn().decode(Ue(e)),{value:a}=await n.rpc.getFeeForMessage(t).send();return a??0n}async function Le({solanaClient:n,tx:e,replaceRecentBlockhash:t}){let{value:a}=await n.rpc.simulateTransaction(Bn().decode(e),{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 Le({solanaClient:n,tx:e,replaceRecentBlockhash:!0}):{logs:a.logs??[],error:a.err,hasError:!!a.err,hasFunds:a.logs?.every((n=>!/insufficient funds/gi.test(n)&&!/insufficient lamports/gi.test(n)))??!0}}async function Ne({tx:n,solanaClient:e,privyClient:t,checkFunds:a}){let i=_n().decode(Ue(n)),r=i.staticAccounts[0]??"",s=await je({solanaClient:e,tx:n}),o=a?await We(Le({solanaClient:e,tx:n})):void 0,c=o?.hasFunds??!0,l={},d=[],u=await async function({solanaClient:n,message:e}){if(!("addressTableLookups"in e)||!e.addressTableLookups)return[...e.staticAccounts];let t=e.addressTableLookups.map((n=>n.lookupTableAddress)),a=await Dn(t,n.rpc),i=t.map(((n,t)=>[...e.addressTableLookups[t]?.writableIndexes.map((e=>{let i=a[n]?.[e];if(i)return{key:i,isWritable:!0,altIdx:t}}))??[],...e.addressTableLookups[t]?.readonlyIndexes.map((e=>{let i=a[n]?.[e];if(i)return{key:i,isWritable:!1,altIdx:t}}))??[]])).flat().filter((n=>!!n)).sort(((n,e)=>n.isWritable!==e.isWritable?n.isWritable?-1:1:n.altIdx-e.altIdx)).map((({key:n})=>n));return[...e.staticAccounts,...i]}({solanaClient:e,message:i});for(let n of i.instructions){let a=i.staticAccounts[n.programAddressIndex]||"";if(a!==g&&a!==f)if(a!==h){if(a===w){let e=await We(function(n,e,t){let[a,i,r,s]=n.accountIndices?.map((n=>e[n]))??[];return{type:"ata-creation",program:t,payer:a,ata:i,owner:r,mint:s}}(n,u,a));if(!e){d.push({type:"unknown",program:a,discriminator:n.data?.[0]});continue}if(d.push(e),e.ata&&e.owner&&e.mint){l[e.ata]={owner:e.owner,mint:e.mint};continue}}if(y.includes(a)){let i=await We(Je(n,u,e,t,a));if(!i){d.push({type:"unknown",program:a,discriminator:n.data?.[0]});continue}d.push(i)}else if(v.includes(a)){let i=await We(He(n,u,e,t,a));if(!i){d.push({type:"unknown",program:a,discriminator:n.data?.[0]});continue}d.push(i)}else d.push({type:"unknown",program:a,discriminator:n.data?.[0]})}else{let e=await We(Ve(n,u));if(!e){d.push({type:"unknown",program:a,discriminator:n.data?.[0]});continue}d.push(e)}else{let i=await We(Re(n,u,e,t,l,a));if(!i){d.push({type:"unknown",program:a,discriminator:n.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 $e(n,e=0){try{return function(n,e=0){let t=0n;for(let a=0;a<8;a++)t|=BigInt(n[e+a])<<BigInt(8*a);return t}(n,e)}catch{}try{return n.readBigInt64LE(e)}catch{}let t=Me(n);try{return((n,e=0)=>{let t=n[e],a=n[e+7];if(!t||!a)throw Error(`Buffer offset out of range: first: ${t}, last: ${a}.`);return(BigInt(n[e+4]+256*n[e+5]+65536*n[e+6]+(a<<24))<<32n)+BigInt(t+256*n[++e]+65536*n[++e]+16777216*n[++e])})(t)}catch{}try{return t.subarray(e).readBigInt64LE()}catch{}try{return t.readBigInt64LE(e)}catch{}return 0n}async function Re(n,e,t,a,i,r){let s=n.data?.[0],o=n.accountIndices?.map((n=>e[n]))??[];if(1===s){let[n,e,t]=o;return{type:"spl-init-account",program:r,account:n,mint:e,owner:t}}if(3===s){let e,s,[c,l,d]=o,u="",p=l?i[l]:void 0;if(p)e=p.owner,u=p.mint;else if(l){let n=await t.rpc.getAccountInfo(l,{commitment:"confirmed",encoding:"jsonParsed"}).send(),a=n.value?.data;e=a?.parsed?.info?.owner,u=a?.parsed?.info?.mint??"",s=a?.parsed?.info?.tokenAmount?.decimals}if(!u&&c){let n=await t.rpc.getAccountInfo(c,{commitment:"confirmed",encoding:"jsonParsed"}).send(),e=n.value?.data;u=e?.parsed?.info?.mint??""}let m=await De({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:e,value:$e(n.data,1),token:{symbol:g,decimals:s,address:u}}}if(9===s){let[n,e,t]=o;return{type:"spl-close-account",program:r,source:n,destination:e,owner:t}}if(17===s)return{type:"spl-sync-native",program:r};throw Error(`Token program instruction type ${s} not supported`)}async function Ve(n,e){let t=n.data?.[0],a=n.accountIndices?.map((n=>e[n]))??[];if(0===t){let[,e]=a;return{type:"create-account",program:h,account:e?.toString(),value:$e(n.data,4),withSeed:!1}}if(2===t){let[e,t]=a;return{type:"sol-transfer",program:h,fromAccount:e,toAccount:t,token:{symbol:"SOL",decimals:9},value:$e(n.data,4),withSeed:!1}}if(3===t){let[,e]=a;return{type:"create-account",program:h,account:e,withSeed:!0,value:$e(n.data.slice(n.data.length-32-8-8))}}if(11===t){let[e,t]=a;return{type:"sol-transfer",program:h,fromAccount:e,toAccount:t,value:$e(n.data,4),token:{symbol:"SOL",decimals:9},withSeed:!0}}throw Error(`System program instruction type ${t} not supported`)}async function Je(n,e,t,a,i){let r=n.accountIndices?.map((n=>e[n]))??[],s=n.data?.[0];if(143===s){let e=r[10],s=r[11];return{type:"raydium-swap-base-input",program:i,mintIn:e,mintOut:s,tokenIn:e?await De({privyClient:a,chain:t.chain,mint:e}):void 0,tokenOut:s?await De({privyClient:a,chain:t.chain,mint:s}):void 0,amountIn:$e(n.data,8),minimumAmountOut:$e(n.data,16)}}if(55===s){let e=r[10],s=r[11];return{type:"raydium-swap-base-output",program:i,mintIn:e,mintOut:s,tokenIn:e?await De({privyClient:a,chain:t.chain,mint:e}):void 0,tokenOut:s?await De({privyClient:a,chain:t.chain,mint:s}):void 0,maxAmountIn:$e(n.data,8),amountOut:$e(n.data,16)}}throw Error(`Raydium swap program instruction type ${s} not supported`)}async function He(n,e,t,a,i){let r=n.data?.[0],s=n.accountIndices?.map((n=>e[n]))??[];if([208,51,239,151,123,43,237,92].includes(r)){let e=s[5],r=s[6];return{type:"jupiter-swap-exact-out-route",program:i,mintIn:e,mintOut:r,tokenIn:e?await De({privyClient:a,chain:t.chain,mint:e}):void 0,tokenOut:r?await De({privyClient:a,chain:t.chain,mint:r}):void 0,outAmount:$e(n.data,n.data.length-1-2-8-8),quotedInAmount:$e(n.data,n.data.length-1-2-8)}}if([176,209,105,168,154,125,69,62].includes(r)){let e=s[7],r=s[8];return{type:"jupiter-swap-exact-out-route",program:i,mintIn:e,mintOut:r,tokenIn:e?await De({privyClient:a,chain:t.chain,mint:e}):void 0,tokenOut:r?await De({privyClient:a,chain:t.chain,mint:r}):void 0,outAmount:$e(n.data,n.data.length-1-2-8-8),quotedInAmount:$e(n.data,n.data.length-1-2-8)}}if([193,32,155,51,65,214,156,129].includes(r)){let e=s[7],r=s[8];return{type:"jupiter-swap-shared-accounts-route",program:i,mintIn:e,mintOut:r,tokenIn:e?await De({privyClient:a,chain:t.chain,mint:e}):void 0,tokenOut:r?await De({privyClient:a,chain:t.chain,mint:r}):void 0,inAmount:$e(n.data,n.data.length-1-2-8-8),quotedOutAmount:$e(n.data,n.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 Qe({rpcSubscriptions:n,signature:e,timeout:t}){let a=new AbortController,i=await n.signatureNotifications(e,{commitment:"confirmed"}).subscribe({abortSignal:a.signal}),r=await Promise.race([new Promise((n=>{setTimeout((()=>{a.abort(),n(Error("Transaction confirmation timed out"))}),t)})),new Promise((async n=>{for await(let e of i){if(a.abort(),e.value.err)return n(Error("Transaction confirmation failed"));n(void 0)}}))]);if(r instanceof Error)throw r}function qe({rpc:n,rpcSubscriptions:e,chain:t,blockExplorerUrl:a}){let i=function({rpc:n,rpcSubscriptions:e}){return async t=>new Promise((async(a,i)=>{try{let i=await n.sendTransaction(Me(t).toString("base64"),{preflightCommitment:"confirmed",encoding:"base64"}).send();await Qe({rpcSubscriptions:e,signature:i,timeout:1e4}),a({signature:new Uint8Array(jn().encode(i))})}catch(n){i(n)}}))}({rpc:n,rpcSubscriptions:e});return{rpc:n,rpcSubscriptions:e,chain:t,blockExplorerUrl:a,sendAndConfirmTransaction:i}}function Ke(){let n=A(),e=nn((()=>Object.fromEntries(["solana:mainnet","solana:devnet","solana:testnet"].map((e=>[e,n.solanaRpcs[e]?qe({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 en((n=>{if(!e[n])throw Error(`No RPC configuration found for chain ${n}`);return e[n]}),[e])}const Ye={component:()=>{let{data:n,onUserCloseViaDialogOrKeybindRef:e,setModalData:t,navigate:a}=b(),{client:i,closePrivyModal:r,walletProxy:s,showFiatPrices:o}=pn(),c=A(),{user:l}=gn(),d=Ke()(n?.standardSignAndSendTransaction?.chain??"solana:mainnet"),[u,p]=tn(n?.standardSignAndSendTransaction?.transaction),[m,g]=tn(),[f,h]=tn(),[w,y]=tn({value:0n,isLoading:!1}),[v,F]=tn(!1),[_,x]=tn({}),[P,U]=tn(),W=n?.standardSignAndSendTransaction?.account,M=!!n?.standardSignAndSendTransaction?.signOnly,B=W?.imported?fn(l).find((n=>n.address===W.address)):hn(l),{solPrice:D,isSolPriceLoading:j}=I({enabled:o}),L=nn((()=>{if(!m)return;let n=m.spender,e=S(m.fee),t=S(w.value,3,!0),a=m.instructions.filter((n=>["sol-transfer","spl-transfer","raydium-swap-base-input","raydium-swap-base-output","jupiter-swap-shared-accounts-route","jupiter-swap-exact-out-route"].includes(n.type))),i=a.at(0);if(!i||a.length>1)return{fee:e,spender:n,balance:t};if("sol-transfer"===i.type)return{fee:e,spender:n,balance:t,total:S(i.value)};if("spl-transfer"===i.type)return{fee:e,spender:n,balance:t,total:`${sn({amount:i.value,decimals:i.token.decimals})} ${i.token.symbol}`};if("raydium-swap-base-input"===i.type&&i.tokenIn&&i.tokenOut){return{fee:e,spender:n,balance:t,swap:`${`${sn({amount:i.amountIn,decimals:i.tokenIn.decimals})} ${i.tokenIn.symbol}`} → ${`${sn({amount:i.minimumAmountOut,decimals:i.tokenOut.decimals})} ${i.tokenOut.symbol}`}`}}if("raydium-swap-base-output"===i.type&&i.tokenIn&&i.tokenOut){return{fee:e,spender:n,balance:t,swap:`${`${sn({amount:i.maxAmountIn,decimals:i.tokenIn.decimals})} ${i.tokenIn.symbol}`} → ${`${sn({amount:i.amountOut,decimals:i.tokenOut.decimals})} ${i.tokenOut.symbol}`}`}}if("jupiter-swap-shared-accounts-route"===i.type&&i.tokenIn&&i.tokenOut){return{fee:e,spender:n,balance:t,swap:`${`${sn({amount:i.inAmount,decimals:i.tokenIn.decimals})} ${i.tokenIn.symbol}`} → ${`${sn({amount:i.quotedOutAmount,decimals:i.tokenOut.decimals})} ${i.tokenOut.symbol}`}`}}if("jupiter-swap-exact-out-route"===i.type&&i.tokenIn&&i.tokenOut){return{fee:e,spender:n,balance:t,swap:`${`${sn({amount:i.quotedInAmount,decimals:i.tokenIn.decimals})} ${i.tokenIn.symbol}`} → ${`${sn({amount:i.outAmount,decimals:i.tokenOut.decimals})} ${i.tokenOut.symbol}`}`}}return{fee:e,spender:n,balance:t}}),[m,W?.address,w]),N=nn((()=>{let n;if(!m||!o||!D||j)return;function e(...n){return C(n.reduce(((n,e)=>n+e),0n),D??0)}W?.address===m.spender&&(n=e(m.fee));let t=e(w.value),a=m.instructions.filter((n=>"sol-transfer"===n.type||"spl-transfer"===n.type)).at(0);return!a||m.instructions.length>1?{fee:n,balance:t}:"sol-transfer"===a.type?{fee:n,balance:t,total:e(a.value,W?.address===m.spender?m.fee:0n)}:"spl-transfer"===a.type?{fee:n,balance:t,total:`${sn({amount:a.value,decimals:a.token.decimals})} ${a.token.symbol}`}:{fee:n,balance:t}}),[m,o,D,j,W?.address,w]);if(an((()=>{!async function(){if(u&&i)try{h(void 0);let n=await Ne({tx:u,solanaClient:d,privyClient:i,checkFunds:!M});g(n)}catch(n){console.error("Failed to prepare transaction",n),h(n)}}()}),[u,d,i,M]),an((()=>{(async function(){if(!W)return;y({value:w.value,isLoading:!0});let{value:n}=await d.rpc.getBalance(W.address,{commitment:"confirmed"}).send();y({value:n??0n,isLoading:!1})})().catch(console.error)}),[m]),!u||!n?.standardSignAndSendTransaction||!W){let e=Error("Invalid transaction request");/*#__PURE__*/return G(T,{error:e,allowlistConfig:c.allowlistConfig,onRetry:()=>{n?.standardSignAndSendTransaction?.onFailure(e),r({shouldCallAuthOnSuccess:!1})}})}let $=()=>{if(!v)return _.signature||_.signedTransaction?n?.standardSignAndSendTransaction?.onSuccess({signature:_.signature,signedTransaction:_.signedTransaction}):n?.standardSignAndSendTransaction?.onFailure(P??f??Error("User exited the modal before submitting the transaction")),r({shouldCallAuthOnSuccess:!1})};e.current=$;let R=n.standardSignAndSendTransaction?.uiOptions?.transactionInfo?.contractInfo?.imgUrl?/*#__PURE__*/G("img",{src:n.standardSignAndSendTransaction.uiOptions.transactionInfo.contractInfo.imgUrl,alt:n.standardSignAndSendTransaction.uiOptions.transactionInfo.contractInfo.imgAltText}):null,V=!!(n.funding&&n.funding.supportedOptions.length>0),J=!m?.hasFunds&&V;if(_.signature||_.signedTransaction){let e=m?.instructions.filter((n=>"sol-transfer"===n.type||"spl-transfer"===n.type)),t=1===e?.length?e?.at(0):void 0;/*#__PURE__*/return G(xe,{fees:_.fees??0n,onClose:$,transactionInfo:n.standardSignAndSendTransaction?.uiOptions.transactionInfo,solPrice:D,receiptHeader:n.standardSignAndSendTransaction?.uiOptions.successHeader,receiptDescription:n.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__*/G(O,{transactionError:P,chainId:d.chain,onClose:$,chainType:"solana",onRetry:async()=>{U(void 0);let{value:n}=await d.rpc.getLatestBlockhash().send();p(function(n,e){return Fn(_n().decode(Ue(n)),(n=>xn(n)),(n=>Pn(e,n)),(n=>Un(n)),(n=>new Uint8Array(Wn().encode(n))))}(u,n))}}):/*#__PURE__*/G(k,{img:R,title:n.standardSignAndSendTransaction?.uiOptions?.transactionInfo?.title||"Confirm transaction",subtitle:n.standardSignAndSendTransaction?.uiOptions?.description||`${c.name} wants your permission to approve the following transaction.`,cta:J?"Add funds":n.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||w.isLoading,isTokenPriceLoading:o&&j,isMissingFunds:!m?.hasFunds,submitError:P??void 0,isSponsored:!!n.standardSignAndSendTransaction?.isSponsored,parseError:f,onClick:J?async()=>{if(W){if(!V)throw Error("Funding wallet is not enabled");t({...n,funding:{...n.funding,methodScreen:E},solanaFundingData:n?.solanaFundingData}),a(E)}}:async()=>{try{if(F(!0),v||!W||!s||!l||!B)return;let e=await n.standardSignAndSendTransaction.onConfirm(u);if("signature"in e){let n=await async function({solanaClient:n,signature:e}){let t=Mn().decode(e),a=await n.rpc.getTransaction(t,{maxSupportedTransactionVersion:0,commitment:"confirmed",encoding:"base64"}).send().catch((()=>null));return a?{fee:a.meta?.fee??0n}:null}({solanaClient:d,signature:e.signature});return void x({...e,fees:n?.fee})}x(e)}catch(n){console.warn({transaction:u,error:n}),U(n)}finally{F(!1)}},onClose:$})}};function Ge(n,e,t){let a=structuredClone(En().decode(n)),i=Ln(e);return i in a.signatures&&(a.signatures[i]=t),new Uint8Array(Wn().encode(a))}function Ze(){let{isHeadlessSigning:n,walletProxy:e,initializeWalletProxy:t,recoverEmbeddedWallet:a,openModal:i,privy:r,client:s}=pn(),{user:o}=bn(),{setModalData:c}=b(),{signWithUserSigner:l}=kn();return{signMessage:({message:d,address:u,options:p})=>new Promise((async(m,g)=>{let f=wn(o,u);if("privy"!==f?.walletClientType)return void g(new dn("Wallet is not a Privy wallet",void 0,un.EMBEDDED_WALLET_NOT_FOUND));let{entropyId:h,entropyIdVerifier:w}=F(o,f),y=yn(f),v=Me(d).toString("base64");if(v.length<1)return void g(new dn("Message must be a non-empty string",void 0,un.INVALID_MESSAGE));let A=async()=>{let n;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=e??await t(15e3);if(!c)throw Error("Failed to initialize embedded wallet proxy.");if(!await a({address:f.address}))throw Error("Unable to connect to wallet");if(y){let e=await on(r,l,{chain_type:"solana",method:"signMessage",params:{message:v,encoding:"base64"},wallet_id:f.id});if(!e.data||!("signature"in e.data))throw Error("Failed to sign message");n=e.data.signature}else{let{response:e}=await c.rpc({accessToken:i,entropyId:h,entropyIdVerifier:w,chainType:"solana",hdWalletIndex:f.walletIndex??0,requesterAppId:p?.uiOptions?.requesterAppId,request:{method:"signMessage",params:{message:v}}});n=e.data.signature}return n};if(n({showWalletUIs:p?.uiOptions?.showWalletUIs}))try{let n=await A(),e=new Uint8Array(Me(n,"base64"));m({signature:e})}catch(n){g(n)}else c({signMessage:{method:"solana_signMessage",data:v,confirmAndSign:A,onSuccess:n=>{m({signature:new Uint8Array(Me(n,"base64"))})},onFailure:n=>{g(n)},uiOptions:p?.uiOptions??{}},connectWallet:{recoveryMethod:f.recoveryMethod,connectingWalletAddress:f.address,entropyId:h,entropyIdVerifier:w,isUnifiedWallet:y,onCompleteNavigateTo:_,onFailure:n=>{g(new dn("Failed to connect to wallet",n,un.UNKNOWN_CONNECT_WALLET_ERROR))}}}),i(x)}))}}function ze(){let{isHeadlessSigning:n,openModal:e}=pn(),{setModalData:t}=b(),{signMessage:a}=Ze(),{user:i}=bn();return{signTransaction:async({transaction:r,options:s,chain:o="solana:mainnet",address:c})=>{async function l(n){let{signature:e}=await a({message:Ue(n),address:c,options:{...s,uiOptions:{...s?.uiOptions,showWalletUIs:!1}}});return{signedTransaction:Ge(n,c,e)}}return n({showWalletUIs:s?.uiOptions?.showWalletUIs})?l(r):new Promise((async(n,a)=>{let d=wn(i,c);if("privy"!==d?.walletClientType)return void a(new dn("Wallet is not a Privy wallet",void 0,un.EMBEDDED_WALLET_NOT_FOUND));let{entropyId:u,entropyIdVerifier:p}=F(i,d),m=yn(d);function g(n){return e=>{a(e instanceof dn?e:new dn("Failed to connect to wallet",e,n))}}let f={account:d,transaction:r,chain:o,signOnly:!0,uiOptions:s?.uiOptions||{},onConfirm:l,onSuccess:n,onFailure:g(un.TRANSACTION_FAILURE)};t({connectWallet:{recoveryMethod:d.recoveryMethod,connectingWalletAddress:d.address,entropyId:u,entropyIdVerifier:p,isUnifiedWallet:m,onCompleteNavigateTo:Ye,onFailure:g(un.UNKNOWN_CONNECT_WALLET_ERROR)},standardSignAndSendTransaction:f}),e(x)}))}}}let Xe=new class extends Tn{setImplementation(n){Yn(this,Zn)[Zn]=n}async signMessage(n){return Yn(this,Zn)[Zn].signMessage(n)}async signAndSendTransaction(n){return Yn(this,Zn)[Zn].signAndSendTransaction(n)}async signTransaction(n){return Yn(this,Zn)[Zn].signTransaction(n)}constructor(n){super(),Object.defineProperty(this,Zn,{writable:!0,value:void 0}),Yn(this,Zn)[Zn]=n}}({signTransaction:mn("signTransaction was not injected"),signAndSendTransaction:mn("signAndSendTransaction was not injected"),signMessage:mn("signMessage was not injected")}),nt=new class{get version(){return ce(this,pe)[pe]}get name(){return ce(this,me)[me]}get icon(){return ce(this,ge)[ge]}get chains(){return Kn.slice()}get features(){return{"standard:connect":{version:"1.0.0",connect:ce(this,Ie)[Ie]},"standard:disconnect":{version:"1.0.0",disconnect:ce(this,Se)[Se]},"standard:events":{version:"1.0.0",on:ce(this,ye)[ye]},"solana:signAndSendTransaction":{version:"1.0.0",supportedTransactionVersions:["legacy",0],signAndSendTransaction:ce(this,Oe)[Oe]},"solana:signTransaction":{version:"1.0.0",supportedTransactionVersions:["legacy",0],signTransaction:ce(this,ke)[ke]},"solana:signMessage":{version:"1.0.0",signMessage:ce(this,Te)[Te]},"privy:":{privy:{signMessage:ce(this,fe)[fe].signMessage,signTransaction:ce(this,fe)[fe].signTransaction,signAndSendTransaction:ce(this,fe)[fe].signAndSendTransaction}}}}get accounts(){return ce(this,we)[we].slice()}get isPrivyWallet(){return ce(this,he)[he]}constructor({name:n,icon:e,version:t,injection:a,wallets:i}){Object.defineProperty(this,ve,{value:Ce}),Object.defineProperty(this,Ae,{value:Ee}),Object.defineProperty(this,ue,{writable:!0,value:void 0}),Object.defineProperty(this,pe,{writable:!0,value:void 0}),Object.defineProperty(this,me,{writable:!0,value:void 0}),Object.defineProperty(this,ge,{writable:!0,value:void 0}),Object.defineProperty(this,fe,{writable:!0,value:void 0}),Object.defineProperty(this,he,{writable:!0,value:void 0}),Object.defineProperty(this,we,{writable:!0,value:void 0}),Object.defineProperty(this,ye,{writable:!0,value:void 0}),Object.defineProperty(this,be,{writable:!0,value:void 0}),Object.defineProperty(this,Ie,{writable:!0,value:void 0}),Object.defineProperty(this,Se,{writable:!0,value:void 0}),Object.defineProperty(this,Te,{writable:!0,value:void 0}),Object.defineProperty(this,Oe,{writable:!0,value:void 0}),Object.defineProperty(this,ke,{writable:!0,value:void 0}),ce(this,ue)[ue]={},ce(this,ye)[ye]=(n,e)=>(ce(this,ue)[ue][n]?.push(e)||(ce(this,ue)[ue][n]=[e]),()=>ce(this,Ae)[Ae](n,e)),ce(this,be)[be]=n=>{null!=n&&(ce(this,we)[we]=n.map((({address:n})=>new oe({address:n,publicKey:On.decode(n)})))),ce(this,ve)[ve]("change",{accounts:this.accounts})},ce(this,Ie)[Ie]=async()=>(ce(this,ve)[ve]("change",{accounts:this.accounts}),{accounts:this.accounts}),ce(this,Se)[Se]=async()=>{ce(this,ve)[ve]("change",{accounts:this.accounts})},ce(this,Te)[Te]=async(...n)=>{let e=[];for(let{account:t,...a}of n){let{signature:n}=await ce(this,fe)[fe].signMessage({...a,address:t.address});e.push({signedMessage:a.message,signature:n})}return e},ce(this,Oe)[Oe]=async(...n)=>{let e=[];for(let t of n){let{signature:n}=await ce(this,fe)[fe].signAndSendTransaction({...t,transaction:t.transaction,address:t.account.address,chain:t.chain||"solana:mainnet",options:t.options});e.push({signature:n})}return e},ce(this,ke)[ke]=async(...n)=>{let e=[];for(let{transaction:t,account:a,options:i,chain:r}of n){let{signedTransaction:n}=await ce(this,fe)[fe].signTransaction({transaction:t,address:a.address,chain:r||"solana:mainnet",options:i});e.push({signedTransaction:n})}return e},ce(this,me)[me]=n,ce(this,ge)[ge]=e,ce(this,pe)[pe]=t,ce(this,fe)[fe]=a,ce(this,we)[we]=[],ce(this,he)[he]=!0,a.on("accountChanged",ce(this,be)[be],this),ce(this,be)[be](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:Xe});function et(){let{ready:n}=U(),{user:e}=bn(),{signMessage:t}=Ze(),{signTransaction:a}=ze(),{signAndSendTransaction:i}=function(){let n=A(),{isHeadlessSigning:e,openModal:t}=pn(),{setModalData:a}=b(),{signTransaction:i}=ze(),r=Ke(),{user:s}=bn(),{signWithUserSigner:o}=kn();return{signAndSendTransaction:async({transaction:c,address:l,chain:d="solana:mainnet",options:u})=>{async function p(n){if(u?.sponsor)return await f(n);let{signedTransaction:e}=await i({transaction:n,address:l,chain:d,options:{...u,uiOptions:{...u?.uiOptions,showWalletUIs:!1}}}),{signature:t}=await r(d).sendAndConfirmTransaction(e);return{signature:t}}if(e({showWalletUIs:u?.uiOptions?.showWalletUIs}))return p(c);let m=wn(s,l);if("privy"!==m?.walletClientType)throw new dn("Wallet is not a Privy wallet",void 0,un.EMBEDDED_WALLET_NOT_FOUND);let g=yn(m),f=async e=>{if(!g)throw new dn("Sponsoring transactions is only supported for wallets on the TEE stack",un.INVALID_DATA);let t=new rn({appId:n.id,clientId:n.appClientId,storage:P}),a=await on(t,o,{chain_type:"solana",method:"signAndSendTransaction",sponsor:!0,params:{transaction:Buffer.from(e).toString("base64"),encoding:"base64"},caip2:`solana:${(await r(d).rpc.getGenesisHash().send()).substring(0,32)}`,wallet_id:m.id});if(a.data&&"hash"in a.data)return{signature:On.decode(a.data.hash)};throw Error("Failed to sign and send transaction")};return new Promise((async(e,i)=>{let r,o,{entropyId:f,entropyIdVerifier:h}=F(s,m);function w(n){return e=>{i(e instanceof dn?e:new dn("Failed to connect to wallet",e,n))}}let y={account:m,transaction:c,chain:d,signOnly:!1,uiOptions:u?.uiOptions||{},onConfirm:p,onSuccess:e,onFailure:w(un.TRANSACTION_FAILURE),isSponsored:!!u?.sponsor},v={recoveryMethod:m.recoveryMethod,connectingWalletAddress:m.address,entropyId:f,entropyIdVerifier:h,isUnifiedWallet:g,onCompleteNavigateTo:Ye,onFailure:w(un.UNKNOWN_CONNECT_WALLET_ERROR)};n.fundingConfig&&(r=In({address:l,appConfig:n,methodScreen:E,fundWalletConfig:{...u,asset:"native-currency",chain:d},externalSolanaFundingScreen:lt}),o={amount:n.fundingConfig.defaultRecommendedAmount,asset:"SOL",chain:d,destinationAddress:l,afterSuccessScreen:Ye,sourceWalletData:void 0}),a({connectWallet:v,standardSignAndSendTransaction:y,funding:r,solanaFundingData:o}),t(x)}))}}}(),r=nn((()=>{let n=[...vn(e).sort(((n,e)=>(n.walletIndex??0)-(e.walletIndex??0)))],t=fn(e);return t.length?[...n,...t]:n}),[e]),s=nn((()=>({signMessage:async({message:n,address:e,options:a})=>await t({message:n,address:e,options:a}),signTransaction:async({transaction:n,address:e,chain:t,options:i})=>await a({transaction:n,address:e,chain:t,options:i}),async signAndSendTransaction({transaction:n,address:e,chain:t,options:a}){let{signature:r}=await i({transaction:n,address:e,chain:t,options:a});return{signature:r}}})),[t,a,i]);return an((()=>{Xe?.setImplementation(s)}),[s]),an((()=>{var e;!n||(e=nt.accounts).length===r.length&&e.every(((n,e)=>n.address===r[e]?.address))||Xe?.emit("accountChanged",r)}),[n,r]),{ready:n,wallet:nt}}function tt(){let{client:n}=pn(),{ready:e,wallet:t}=et(),[a,i]=tn([]),[r,s]=tn([]);return an((()=>{let n=[t,...a.filter((n=>"solana"===n.chainType&&!!n.wallet.features)).map((n=>n.wallet))];s(n);let e=n.map((e=>e.features["standard:events"]?.on("change",(()=>{s([...n])}))));return()=>{e.forEach((n=>n?.()))}}),[a]),an((()=>{if(!e)return;i(n.connectors?.walletConnectors.filter((n=>"solana"===n.chainType))??[]);let t=()=>{i(n.connectors?.walletConnectors.filter((n=>"solana"===n.chainType))??[])};return n.connectors?.on("connectorInitialized",t),()=>{n.connectors?.off("connectorInitialized",t)}}),[e,n.connectors]),{ready:e,wallets:r}}function at(){let{ready:n,wallets:e}=tt();return{ready:n,wallets:nn((()=>e.flatMap((n=>n.accounts.map((e=>new cn({wallet:n,account:e})))))),[e])}}function it(n){return Mn().decode(n)}function rt(n){return BigInt(Math.floor(1e9*parseFloat(n)))}function st(n){return+ot.format(parseFloat(n.toString())/1e9)}let ot=Intl.NumberFormat(void 0,{maximumFractionDigits:8});async function ct({tx:n,solanaClient:e,amount:t,asset:a,tokenPrice:i}){if(!n)return null;if("SOL"===a&&i){let a=rt(t),r=C(a,i),s=await je({solanaClient:e,tx:n});return{amountInUsd:r,feeInUsd:i?C(s,i):void 0,totalInUsd:C(a+s,i)}}if("USDC"===a&&i){let a="$"+t,r=await je({solanaClient:e,tx:n}),s=function(n,e){let t=parseFloat(n.toString())/M*e;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=rt(t),i=await je({solanaClient:e,tx:n});return{amountInSol:t+" SOL",feeInSol:st(i)+" SOL",totalInSol:st(a+i)+" SOL"}}return{amountInUsdc:t+" USDC",feeInSol:st(await je({solanaClient:e,tx:n}))+" SOL"}}const lt={component:function(){let n=A(),{closePrivyModal:e,createAnalyticsEvent:t}=pn(),{data:a,setModalData:i,navigate:r}=b(),{wallets:s}=at(),[o,l]=tn("preparing"),[m,f]=tn(),[h,w]=tn(),[y,v]=tn();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:S,chain:T,sourceWalletData:O,destinationAddress:k,afterSuccessScreen:E}=a.solanaFundingData,F=s.find((n=>n.address===O.address&&B(O.walletClientType)===B(n.standardWallet.name))),_=Ke()(T),{tokenPrice:x,isTokenPriceLoading:P}=D("solana");return an((()=>{if("preparing"!==o||P||!F)return;let n="SOL"===S?rt(I):function(n){return BigInt(Math.floor(1e6*parseFloat(n)))}(I);w({amount:("SOL"===S&&x?C(n,x):I)??I}),("SOL"===S?async function({solanaClient:n,source:e,destination:t,amountInLamports:a}){let{value:i}=await n.rpc.getLatestBlockhash().send(),r={address:e},s=Fn(Nn({version:0}),(n=>$n(r,n)),(n=>Pn(i,n)),(n=>Rn(Vn({amount:a,source:r,destination:t}),n)),(n=>Un(n)));return new Uint8Array(Wn().encode(s))}({solanaClient:_,source:F.address,destination:k,amountInLamports:n}):async function({solanaClient:n,source:e,destination:t,amountInBaseUnits:a}){let i=W(n.chain),{value:r}=await n.rpc.getLatestBlockhash().send(),s={address:e},[o]=await Jn({mint:i,owner:e,tokenProgram:g}),[c]=await Jn({mint:i,owner:t,tokenProgram:g}),[l,d]=await Promise.all([n.rpc.getAccountInfo(o,{commitment:"confirmed",encoding:"jsonParsed"}).send().catch((()=>null)),n.rpc.getAccountInfo(c,{commitment:"confirmed",encoding:"jsonParsed"}).send().catch((()=>null))]);if(!l?.value)throw Error(`Source token account does not exist for address: ${e}`);let u=Hn({payer:s,ata:c,owner:t,mint:i}),p=Fn(Nn({version:0}),(n=>$n(s,n)),(n=>Pn(r,n)),(n=>d?.value?n:Rn(u,n)),(n=>Rn(Qn({source:o,destination:c,authority:s,amount:a}),n)),(n=>Un(n)));return new Uint8Array(Wn().encode(p))}({solanaClient:_,source:F.address,destination:k,amountInBaseUnits:n})).then(f).catch((n=>{l("error"),v(n)}))}),[o,I,S,T,F,k,P,x]),an((()=>{"preparing"===o&&m&&ct({tx:m,solanaClient:_,amount:I,asset:S,tokenPrice:x}).then((n=>{l("loaded"),w({amount:n?.amountInUsd??n?.amountInUsdc??n?.amountInSol??I,fee:n?.feeInUsd??n?.feeInSol,total:n?.totalInUsd??n?.totalInSol})})).catch((n=>{l("error"),v(n)}))}),[m,I,S,o,x]),an((()=>{"error"===o&&y&&(i({errorModalData:{error:y,previousScreen:lt},solanaFundingData:a.solanaFundingData}),r(j,!1))}),[o,r]),an((()=>{if("success"!==o)return;let n=setTimeout(E?()=>r(E):e,L);return()=>clearTimeout(n)}),[o]),/*#__PURE__*/Z(z,"success"===o?{children:[/*#__PURE__*/G(N,{}),/*#__PURE__*/G($,{}),/*#__PURE__*/Z(R,{children:[/*#__PURE__*/G(X,{color:"var(--privy-color-success)",width:"64px",height:"64px"}),/*#__PURE__*/G(c,{title:"Success!",description:`You’ve successfully added ${I} ${S} to your ${n.name} wallet. It may take a minute before the funds are available to use.`})]}),/*#__PURE__*/G(d,{}),/*#__PURE__*/G(u,{})]}:"preparing"===o||"loaded"===o||"sending"===o?{children:[/*#__PURE__*/G(N,{}),/*#__PURE__*/G(V,{style:{marginTop:"16px"},children:/*#__PURE__*/G(J,{icon:F?.standardWallet.icon,name:F?.standardWallet.name})}),/*#__PURE__*/G(c,{style:{marginTop:"8px",marginBottom:"12px"},title:"sending"===o&&F?`Confirming with ${F.standardWallet.name}`:"Confirm transaction"}),/*#__PURE__*/G(qn,{rows:[{label:"Source",value:ln(O.address)},{label:"Destination",value:ln(k)},{label:"Network",value:H(T)},{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__*/G(p,{style:{marginTop:"1rem"},loading:"preparing"===o||"sending"===o,onClick:function(){"loaded"===o&&m&&F&&(l("sending"),async function({transaction:n,chain:e,sourceWallet:t,solanaClient:a}){let{hasFunds:i}=await Le({solanaClient:a,tx:n});if(!i)throw new dn(`Wallet ${ln(t.address)} does not have enough funds.`,void 0,un.INSUFFICIENT_BALANCE);let r=it((await t.signAndSendTransaction({transaction:n,chain:e}).catch((n=>{throw new dn("Transaction was rejected by the user",n,un.TRANSACTION_FAILURE)}))).signature);return await Qe({rpcSubscriptions:a.rpcSubscriptions,signature:r,timeout:2e4}),r}({solanaClient:_,transaction:m,chain:T,sourceWallet:F}).then((n=>{l("success"),t({eventName:Q,payload:{provider:"external",status:"success",txHash:n,address:F.address,value:I,chainType:"solana",clusterName:T,token:S,destinationAddress:k,destinationValue:I,destinationChainType:"solana",destinationClusterName:T,destinationToken:S}})})).catch((n=>{l("error"),v(n)})))},children:"Confirm"}),/*#__PURE__*/G(u,{})]}:{children:[/*#__PURE__*/G(N,{}),/*#__PURE__*/G(q,{}),/*#__PURE__*/G("div",{style:{marginTop:"1rem"}}),/*#__PURE__*/G(u,{})]})}};function dt(n){K("fundSolanaWallet",n);let e=A(),{openModal:t}=pn(),{setModalData:a}=b();return{fundWallet:async({address:n,options:i})=>{let r=i?.amount||e.fundingConfig?.defaultRecommendedAmount||"1",s=i?.asset||e.fundingConfig?.defaultRecommendedCurrency.asset||"native-currency",o=i?.chain||"solana:mainnet";a({funding:In({address:n,appConfig:e,methodScreen:E,fundWalletConfig:{...i,amount:r,asset:s,chain:o},externalSolanaFundingScreen:lt}),solanaFundingData:{amount:r,asset:"native-currency"===s?"SOL":"USDC",chain:o,destinationAddress:n,sourceWalletData:void 0}}),t(E)}}}function ut(){let{user:n,getAccessToken:e}=gn(),{walletProxy:t,openModal:a,client:i}=pn(),{setModalData:r}=b(),s=A();return nn((()=>({exportWallet:o=>new Promise((async(c,l)=>{if(!n)return void l(new dn("User must be authenticated before exporting their Privy wallet"));let d=o?.address?wn(n,o.address):An(n);if(!d)return void l(new dn("User must have an embedded wallet."));if(!Sn(d))return void l(Error(`Export is not supported for ${d.chainType} wallets`));let u=yn(d),{entropyId:p,entropyIdVerifier:m}=F(n,d);await e()?t?(r({connectWallet:{recoveryMethod:d.recoveryMethod,connectingWalletAddress:d.address,isUnifiedWallet:u,entropyId:p,entropyIdVerifier:m,onCompleteNavigateTo:Y,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(x)):l(new dn("Wallet not ready for export")):l(new dn("Must have valid access token."))}))})),[n,e,t,a,i,r,s])}export{ut as a,qe as b,at as c,tt as d,je as f,it as g,Le as s,dt as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useState as e,useEffect as t,useContext as n,useMemo as r,useCallback as l}from"react";import{aa as a,an as s,af as o,z as i,cv as c,f as d,cw as u,cr as f,cx as m}from"./SignRequestScreen-
|
|
1
|
+
import{useState as e,useEffect as t,useContext as n,useMemo as r,useCallback as l}from"react";import{aa as a,an as s,af as o,z as i,cv as c,f as d,cw as u,cr as f,cx as m}from"./SignRequestScreen-CtK0tEJj.mjs";import{P as p}from"./privy-context-DDSW3jEM.mjs";import{styled as w}from"styled-components";import{u as g}from"./internal-context-CfE_S5P-.mjs";const v=n=>{let[r,l]=e("auto");return t((()=>{let e=new ResizeObserver((e=>{l(e[0]?.contentRect.height??"auto")}));return n.current&&e.observe(n.current),()=>{n.current&&e.unobserve(n.current)}}),[n.current]),r};function y(e){let{logout:t}=n(p);return a("logout",e),{logout:t}}const W=/*#__PURE__*/w.div.withConfig({displayName:"Column",componentId:"sc-cfc52180-0"})(["display:flex;flex-direction:column;"]);function h(e){let{login:t}=n(p);return a("login",e),{login:t}}function x(e){let{connectWallet:t}=n(p);return a("connectWallet",e),{connectWallet:t}}const b=e=>{a("fundWallet",e);let{fundWallet:t}=g();return{fundWallet:({address:e,options:n})=>t(e,n)}},C=()=>{let e=s(),{wallets:n}=o(),{connectors:a}=g(),p=r((()=>a.filter(i).flatMap((e=>e.wallets))),[a]),w=c((e=>e.wallet));t((()=>{if(!e.id)return;let t=d.get(u(e.id));c.setState({wallet:t})}),[e.id]);let v=r((()=>{if(!w)return;let[,e]=w.split(":");return n.find((t=>t.address===e))||p.find((t=>t.address===e))}),[w,n,p]),y=r((()=>v?"ethereum"===v.type?v.chainId:"solana":void 0),[v]);return{connect:async t=>{t?.reset&&(d.del(u(e.id)),c.setState({wallet:void 0}));let{wallet:r}=await m();if(!r)return{};let[,l]=r.split(":"),a=n.find((e=>e.address===l));if(a)return{wallet:a,network:a.chainId};let s=p.find((e=>e.address===l));return s?{wallet:s,network:"solana"}:{}},setActiveWallet:l((t=>{f({address:t.address,client:t.walletClientType,appId:e.id})}),[e.id]),wallet:v,network:y}};export{W as C,y as a,h as b,x as c,b as d,C as e,v as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{P as e,h as n}from"./paths-B891YjWw.mjs";import{arbitrumSepolia as r,arbitrum as t,avalancheFuji as a,avalanche as i,baseSepolia as o,base as l,polygonAmoy as s,polygon as d,optimismSepolia as c,optimism as u,sepolia as f,mainnet as p}from"@privy-io/js-sdk-core";import{useCallback as E,useContext as h}from"react";import{a as m,h as g,e as y,u as w,P as C}from"./privy-context-DDSW3jEM.mjs";import{d1 as v,d2 as D,aS as T,an as b,aA as S,as as W,c2 as A,aa as U}from"./SignRequestScreen-
|
|
1
|
+
import{P as e,h as n}from"./paths-B891YjWw.mjs";import{arbitrumSepolia as r,arbitrum as t,avalancheFuji as a,avalanche as i,baseSepolia as o,base as l,polygonAmoy as s,polygon as d,optimismSepolia as c,optimism as u,sepolia as f,mainnet as p}from"@privy-io/js-sdk-core";import{useCallback as E,useContext as h}from"react";import{a as m,h as g,e as y,u as w,P as C}from"./privy-context-DDSW3jEM.mjs";import{d1 as v,d2 as D,aS as T,an as b,aA as S,as as W,c2 as A,aa as U}from"./SignRequestScreen-CtK0tEJj.mjs";import{u as x}from"./internal-context-CfE_S5P-.mjs";function M(e){return["ethereum","solana"].includes(e.chainType)}function _(e){let n=e.replace("eip155:","");if(n)return parseInt(n);throw Error("Chain ID not compatible with CAIP-2 format.")}const P=e=>e.filter((e=>"wallets"===e.method||("exchange"===e.method?"coinbase"===e.provider:"card"===e.method||"payment-request"===e.method?"coinbase"===e.provider||"moonpay"===e.provider:(e.method,!1)))),R={[p.id]:"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",[f.id]:"0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238",[u.id]:"0x0b2c639c533813f4aa9d7837caf62653d097ff85",[c.id]:"0x5fd84259d66Cd46123540766Be93DFE6D43130D7",[d.id]:"0x3c499c542cef5e3811e1192ce70d8cc03d5c3359",[s.id]:"0x41e94eb019c0762f9bfcf9fb1e58725bfb0e7582",[l.id]:"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",[o.id]:"0x036CbD53842c5426634e7929541eC2318f3dCF7e",[i.id]:"0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E",[a.id]:"0x5425890298aed601595a70ab815c96711a31bc65",[t.id]:"0xaf88d065e77c8cC2239327C5EDb3A432268e5831",[r.id]:"0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d"},F=({address:n,appConfig:r,fundWalletConfig:t,methodScreen:a,chainIdOverride:i,comingFromSendTransactionScreen:o=!1})=>{let l,s;if(!r.fundingConfig)throw Error("Wallet funding is not enabled");let d=P(r.fundingConfig.options);if(d.length<1)throw Error("Wallet funding is not enabled");l=i||(t?.chain?t.chain.id:_(r.fundingConfig.defaultRecommendedCurrency.chain));let c=r.chains.find((e=>e.id===l));if(!c)throw new e(`Funding chain ${l} is not in PrivyProvider chains list`);let u=t?.amount??r.fundingConfig.defaultRecommendedAmount,f=!1;function p(){if(!l)return;let e=R[l];d.find((e=>"wallets"===e.method))&&!e&&console.warn("Attempting to fund with USDC on chain where USDC address is not known. Funding via external wallet will be disabled."),s=e,f=!0}var E;t&&"asset"in t?"USDC"===t.asset?p():"string"!=typeof t.asset&&"erc20"in t.asset&&(E=s=t.asset.erc20,f=E===R[c.id]):"USDC"===r.fundingConfig.defaultRecommendedCurrency.asset&&p();let h=t?.defaultFundingMethod;return{chainType:"ethereum",address:n,amount:u,chain:c,erc20Address:s,erc20ContractInfo:f?{symbol:"USDC",decimals:6}:void 0,isUSDC:f,methodScreen:a,supportedOptions:d,comingFromSendTransactionScreen:o,defaultFundingMethod:h,usingDefaultFundingMethod:!!h,preferredCardProvider:t?.card?.preferredProvider,crossChainBridgingEnabled:r.fundingConfig.crossChainBridgingEnabled??!1,solanaChain:"solana:mainnet",uiConfig:t&&"uiConfig"in t?t.uiConfig:void 0,externalSolanaFundingScreen:null}};function I({address:e,fundWalletConfig:n,appConfig:r,comingFromSendTransactionScreen:t,externalSolanaFundingScreen:a,methodScreen:i}){if(!r.fundingConfig)throw Error("Wallet funding is not enabled");let o=P(r.fundingConfig.options);if(o.length<1)throw Error("Wallet funding is not enabled");if("USDC"===n?.asset&&"solana:testnet"===n?.chain)throw Error("USDC funding is not supported on the Solana testnet");let l=n?.amount??r.fundingConfig.defaultRecommendedAmount,s=n?.defaultFundingMethod;return{chainType:"solana",address:e,supportedOptions:o,amount:l,isUSDC:"USDC"===n?.asset,methodScreen:i,comingFromSendTransactionScreen:t,chain:n?.chain||"solana:mainnet",crossChainBridgingEnabled:r.fundingConfig.crossChainBridgingEnabled??!1,defaultFundingMethod:s,preferredCardProvider:n?.card?.preferredProvider,usingDefaultFundingMethod:!!s,uiConfig:n?.uiConfig,externalSolanaFundingScreen:a}}const B=e=>e.reduce(((e,n)=>!e||e.walletIndex<n.walletIndex?n:e),null),O=async({appConfig:e,getAccessToken:r,initializeWalletProxy:t,user:a,privy:i,emitPrivyEvent:o,recoverEmbeddedWallet:l,setModalData:s,openModal:d,setUser:c,options:u,timeoutDuration:f,refreshSessionAndUser:p,chainType:E})=>{let[h,m]=await Promise.all([t(f),r()]);if(!m||!a)throw o("createWallet","onError",n.MUST_BE_AUTHENTICATED),Error("User must be authenticated before creating a Privy wallet");if(!h&&e.customAuth?.enabled)throw o("createWallet","onError",n.UNKNOWN_EMBEDDED_WALLET_ERROR),Error("Failed to connect to wallet proxy");if(u&&"walletIndex"in u&&"number"==typeof u.walletIndex){if("user-controlled-server-wallets-only"===e.embeddedWallets.mode)throw o("createWallet","onError",n.INVALID_DATA),Error("Invalid input, use `createAdditional` instead of `walletIndex` to create additional wallets.");return k({accessToken:m,appConfig:e,privy:i,emitPrivyEvent:o,openModal:d,proxy:h,refreshSessionAndUser:p,recoverEmbeddedWallet:l,setModalData:s,user:a,walletIndex:u.walletIndex,chainType:E,setUser:c})}let g=u&&"createAdditional"in u&&u.createAdditional,y=v(a,{chainType:E});if(y[0]&&!g)throw o("createWallet","onError",n.EMBEDDED_WALLET_ALREADY_EXISTS),Error("User already has an embedded wallet.");return k({accessToken:m,appConfig:e,privy:i,emitPrivyEvent:o,openModal:d,proxy:h,recoverEmbeddedWallet:l,setModalData:s,user:a,walletIndex:(B(y)?.walletIndex??-1)+1,chainType:E,refreshSessionAndUser:p,setUser:c})};let k=async({accessToken:e,appConfig:r,privy:t,emitPrivyEvent:a,proxy:i,refreshSessionAndUser:o,recoverEmbeddedWallet:l,user:s,walletIndex:d,setModalData:c,openModal:u,chainType:f,setUser:p})=>{if(d<0)throw a("createWallet","onError",n.EMBEDDED_WALLET_CREATE_ERROR),Error(`A negative walletIndex (${d}) is invalid.`);let E=m(s);if(d>0&&!E)throw a("createWallet","onError",n.EMBEDDED_WALLET_NOT_FOUND),Error("Must have an existing embedded wallet to create an additional wallet.");if(r.embeddedWallets.requireUserOwnedRecoveryOnCreate&&"user-controlled-server-wallets-only"===r.embeddedWallets.mode)throw a("createWallet","onError",n.EMBEDDED_WALLET_CREATE_ERROR),Error("User owned recovery not yet supported for this app.");if(!E&&r.embeddedWallets.requireUserOwnedRecoveryOnCreate)return await L({emitPrivyEvent:a,setModalData:c,openModal:u,chainType:f});let h=v(s,{chainType:f,walletIndex:d})[0];if(h)return{user:s,account:h};if(0===d&&!i)return L({emitPrivyEvent:a,setModalData:c,openModal:u,chainType:f});if(!i)throw a("createWallet","onError",n.UNKNOWN_EMBEDDED_WALLET_ERROR),Error("Failed to connect to wallet proxy");return D({appConfig:r,walletIndex:d,chainType:f,user:s,accessToken:e,proxy:i,refreshSessionAndUser:o,privy:t,recoverEmbeddedWallet:l,setUser:p})},L=async({emitPrivyEvent:e,setModalData:r,openModal:t,chainType:a})=>new Promise(((i,o)=>{r({createWallet:{onSuccess:({user:n,account:r})=>{e("createWallet","onSuccess",{wallet:r}),i({user:n,account:r})},onFailure:r=>{e("createWallet","onError",n.UNKNOWN_EMBEDDED_WALLET_ERROR),o(r)},callAuthOnSuccessOnClose:!1,shouldCreateEth:"ethereum"===a,shouldCreateSol:"solana"===a}}),t(T)}));const N=()=>{let e=b(),r=S(),{setModalData:t}=W(),{initializeWalletProxy:a,recoverEmbeddedWallet:i,setUser:o,openModal:l,refreshSessionAndUser:s,privy:d,client:c}=x();return{create:async({chainType:u,options:f,latestUser:p})=>{let E=p;if(E||(E=await s()),!E)throw r("createWallet","onError",n.MUST_BE_AUTHENTICATED),Error("User must be authenticated before creating a Privy wallet");return await O({appConfig:e,privy:d,getAccessToken:()=>c.getAccessToken(),refreshSessionAndUser:s,initializeWalletProxy:a,user:E,emitPrivyEvent:r,recoverEmbeddedWallet:i,setModalData:t,openModal:l,setUser:o,options:f,timeoutDuration:A,chainType:u})}}};function K(e){let{create:n}=N();return U("createWallet",e),{createWallet:async e=>{e&&"target"in e&&e&&(e=void 0);let{account:r}=await n({chainType:"ethereum",options:e});return r}}}const z=async({emitPrivyEvent:r,getAccessToken:t,initializeWalletProxy:a,refreshSessionAndUser:i,user:o,appConfig:l},{privateKey:s,chainType:d,additionalSigners:c})=>{if(!o)throw r("linkAccount","onError",n.MUST_BE_AUTHENTICATED,{linkMethod:"siwe"}),new e("User must be authenticated before linking an account.");let u="user-controlled-server-wallets-only"===l.embeddedWallets.mode?"tee":"on-device";if(c&&"on-device"===u)throw new e("Specifying additionalSigners is only supported for TEE execution and this app uses On-device execution. Learn more https://docs.privy.io/recipes/tee-wallet-migration-guide");let[f,p]=await Promise.all([t(),a(15e3)]);if(!p||!f)throw r("linkAccount","onError",n.MUST_BE_AUTHENTICATED,{linkMethod:"siwe"}),new e("User must be authenticated before linking an account.");let{address:E}=await p.importWallet({privateKey:s,accessToken:f,chainType:d,mode:u,additionalSigners:c}),h=await i(),m="solana"===d?g(h):y(h),w=m?.find((e=>e.address===E));if(!w)throw r("createWallet","onError",n.UNKNOWN_EMBEDDED_WALLET_ERROR),Error("Failed to import wallet");return r("createWallet","onSuccess",{wallet:w}),w},j=()=>{let{user:e}=w(),{client:n,refreshSessionAndUser:r,initializeWalletProxy:t}=x(),a=S(),i=b();return{importWallet:E((({privateKey:o,additionalSigners:l})=>z({getAccessToken:()=>n.getAccessToken(),user:e,initializeWalletProxy:t,refreshSessionAndUser:r,emitPrivyEvent:a,appConfig:i},{privateKey:o,chainType:"ethereum",additionalSigners:l})),[e,n,r,t,a,i])}},q=()=>{let{importWallet:e}=j(),{createWallet:n}=K();return{...h(C),importWallet:e,createWallet:n}};export{N as a,K as b,j as c,z as d,_ as e,P as f,I as g,M as i,F as p,q as u};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@privy-io/react-auth",
|
|
3
|
-
"version": "3.4.
|
|
3
|
+
"version": "3.4.2-beta-20251024222344",
|
|
4
4
|
"description": "React client for the Privy Auth API",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"authentication",
|
|
@@ -155,8 +155,8 @@
|
|
|
155
155
|
"@privy-io/api-base": "1.7.1",
|
|
156
156
|
"@privy-io/chains": "0.0.3",
|
|
157
157
|
"@privy-io/ethereum": "0.0.2",
|
|
158
|
-
"@privy-io/js-sdk-core": "0.56.
|
|
159
|
-
"@privy-io/public-api": "2.51.
|
|
158
|
+
"@privy-io/js-sdk-core": "0.56.4-beta-20251024222344",
|
|
159
|
+
"@privy-io/public-api": "2.51.1-beta-20251024222344",
|
|
160
160
|
"@privy-io/urls": "*",
|
|
161
161
|
"@scure/base": "^1.2.5",
|
|
162
162
|
"@simplewebauthn/browser": "^13.2.2",
|
|
@@ -192,7 +192,7 @@
|
|
|
192
192
|
"@privy-io/build-config": "*",
|
|
193
193
|
"@privy-io/eslint-config-custom": "*",
|
|
194
194
|
"@privy-io/eslint-plugin-privy-rules": "*",
|
|
195
|
-
"@privy-io/public-api": "2.51.
|
|
195
|
+
"@privy-io/public-api": "2.51.1-beta-20251024222344",
|
|
196
196
|
"@privy-io/testing": "*",
|
|
197
197
|
"@rollup/plugin-commonjs": "^26.0.1",
|
|
198
198
|
"@rollup/plugin-node-resolve": "^15.3.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{cn as n,ci as e,cA as t,cB as a,cC as i,cD as r,aj as s,ak as o,cE as c,cF as l,av as d,cc as u,am as p,cG as m,cH as g,cI as f,cJ as h,cK as w,cL as y,cM as v,an as A,as as b,cN as I,cO as S,b5 as T,cP as O,cQ as k,cR as C,aH as E,F,bQ as _,bO as x,f as P,af as U,cS as W,cT as M,cU as B,ag as D,b2 as j,cV as L,cW as N,at as $,cX as R,cY as V,cZ as J,c_ as H,c$ as Q,d0 as q,bN as K}from"./SignRequestScreen-cNZ56bAg.mjs";import{jsx as Y,jsxs as G,Fragment as Z}from"react/jsx-runtime";import z from"@heroicons/react/24/outline/CheckCircleIcon";import{useMemo as X,useCallback as nn,useState as en,useEffect as tn}from"react";import an,{formatTokenAmount as rn,rpc as sn,ConnectedStandardSolanaWallet as on,formatWalletAddress as cn}from"@privy-io/js-sdk-core";import{P as ln,h as dn}from"./paths-B891YjWw.mjs";import{u as un,a as pn}from"./internal-context-CfE_S5P-.mjs";import{u as mn,h as gn,a as fn,f as hn,g as wn,k as yn,l as vn}from"./privy-context-DDSW3jEM.mjs";import{u as An,g as bn,i as In}from"./usePrivy-DmWciddF.mjs";import Sn from"eventemitter3";import{base58 as Tn}from"@scure/base";import{u as On}from"./use-sign-with-user-signer-DVcbjNtZ.mjs";import{styled as kn}from"styled-components";import{getTransactionDecoder as Cn,pipe as En,getCompiledTransactionMessageDecoder as Fn,decompileTransactionMessage as _n,setTransactionMessageLifetimeUsingBlockhash as xn,compileTransaction as Pn,getTransactionEncoder as Un,getBase58Decoder as Wn,getBase64Decoder as Mn,fetchAddressesForLookupTables as Bn,getBase58Encoder as Dn,address as jn,createTransactionMessage as Ln,setTransactionMessageFeePayerSigner as Nn,appendTransactionMessageInstruction as $n}from"@solana/kit";import{getTransferSolInstruction as Rn}from"@solana-program/system";import{findAssociatedTokenPda as Vn,getCreateAssociatedTokenIdempotentInstruction as Jn,getTransferInstruction as Hn}from"@solana-program/token";function Qn({rows:i}){/*#__PURE__*/return Y(n,{children:i.filter((n=>!!n)).map(((n,i)=>null!=n.value||n.isLoading?/*#__PURE__*/G(e,{children:[/*#__PURE__*/Y(t,{children:n.label}),/*#__PURE__*/Y(a,{$isLoading:n.isLoading,children:n.value})]},i):null))})}const qn=["solana:mainnet","solana:devnet","solana:testnet"];function Kn(n,e){if(!Object.prototype.hasOwnProperty.call(n,e))throw TypeError("attempted to use private field on non-instance");return n}var Yn=0,Gn="__private_"+Yn+++"__implementation";function Zn(n,e){if(!Object.prototype.hasOwnProperty.call(n,e))throw TypeError("attempted to use private field on non-instance");return n}var zn=0;function Xn(n){return"__private_"+zn+++"_"+n}var ne=/*#__PURE__*/Xn("_address"),ee=/*#__PURE__*/Xn("_publicKey"),te=/*#__PURE__*/Xn("_chains"),ae=/*#__PURE__*/Xn("_features"),ie=/*#__PURE__*/Xn("_label"),re=/*#__PURE__*/Xn("_icon");class se{get address(){return Zn(this,ne)[ne]}get publicKey(){return Zn(this,ee)[ee].slice()}get chains(){return Zn(this,te)[te].slice()}get features(){return Zn(this,ae)[ae].slice()}get label(){return Zn(this,ie)[ie]}get icon(){return Zn(this,re)[re]}constructor({address:n,publicKey:e,label:t,icon:a}){Object.defineProperty(this,ne,{writable:!0,value:void 0}),Object.defineProperty(this,ee,{writable:!0,value:void 0}),Object.defineProperty(this,te,{writable:!0,value:void 0}),Object.defineProperty(this,ae,{writable:!0,value:void 0}),Object.defineProperty(this,ie,{writable:!0,value:void 0}),Object.defineProperty(this,re,{writable:!0,value:void 0}),Zn(this,ne)[ne]=n,Zn(this,ee)[ee]=e,Zn(this,te)[te]=qn,Zn(this,ie)[ie]=t,Zn(this,re)[re]=a,Zn(this,ae)[ae]=["solana:signAndSendTransaction","solana:signTransaction","solana:signMessage"],new.target===se&&Object.freeze(this)}}function oe(n,e){if(!Object.prototype.hasOwnProperty.call(n,e))throw TypeError("attempted to use private field on non-instance");return n}var ce=0;function le(n){return"__private_"+ce+++"_"+n}var de=/*#__PURE__*/le("_listeners"),ue=/*#__PURE__*/le("_version"),pe=/*#__PURE__*/le("_name"),me=/*#__PURE__*/le("_icon"),ge=/*#__PURE__*/le("_injection"),fe=/*#__PURE__*/le("_isPrivyWallet"),he=/*#__PURE__*/le("_accounts"),we=/*#__PURE__*/le("_on"),ye=/*#__PURE__*/le("_emit"),ve=/*#__PURE__*/le("_off"),Ae=/*#__PURE__*/le("_connected"),be=/*#__PURE__*/le("_connect"),Ie=/*#__PURE__*/le("_disconnect"),Se=/*#__PURE__*/le("_signMessage"),Te=/*#__PURE__*/le("_signAndSendTransaction"),Oe=/*#__PURE__*/le("_signTransaction");function ke(n,...e){oe(this,de)[de][n]?.forEach((n=>n.apply(null,e)))}function Ce(n,e){oe(this,de)[de][n]=oe(this,de)[de][n]?.filter((n=>e!==n))}const Ee=/*#__PURE__*/kn.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;}"],(n=>n.color??"var(--privy-color-accent)"),(n=>n.color??"var(--privy-color-accent)")),Fe=({instruction:s,fees:o,transactionInfo:c,solPrice:l,chain:d})=>/*#__PURE__*/G(n,{children:[c?.action&&/*#__PURE__*/G(e,{children:[/*#__PURE__*/Y(t,{children:"Action"}),/*#__PURE__*/Y(a,{children:c.action})]}),null!=s?.total&&/*#__PURE__*/G(e,{children:[/*#__PURE__*/Y(t,{children:"Total"}),/*#__PURE__*/Y(a,{children:s.total})]}),!s?.total&&null!=s?.amount&&/*#__PURE__*/G(e,{children:[/*#__PURE__*/Y(t,{children:"Total"}),/*#__PURE__*/Y(a,{children:/*#__PURE__*/Y(i,{quantities:[s.amount,o],tokenPrice:l})})]}),/*#__PURE__*/G(e,{children:[/*#__PURE__*/Y(t,{children:"Fees"}),/*#__PURE__*/Y(a,{children:/*#__PURE__*/Y(i,{quantities:[o],tokenPrice:l})})]}),s?.to&&/*#__PURE__*/G(e,{children:[/*#__PURE__*/Y(t,{children:"To"}),/*#__PURE__*/Y(a,{children:/*#__PURE__*/Y(r,{walletAddress:s.to,chainId:d,chainType:"solana"})})]})]}),_e=({fees:n,onClose:e,receiptHeader:t,receiptDescription:a,transactionInfo:i,solPrice:r,signOnly:p,instruction:m,chain:g})=>/*#__PURE__*/G(Z,{children:[/*#__PURE__*/Y(s,{onClose:e}),/*#__PURE__*/Y(o,{style:{marginBottom:"16px"},children:/*#__PURE__*/G("div",{children:[/*#__PURE__*/Y(Ee,{color:"var(--privy-color-success-light)"}),/*#__PURE__*/Y(z,{height:38,width:38,strokeWidth:2,stroke:"var(--privy-color-success)"})]})}),/*#__PURE__*/Y(c,{title:t??`Transaction ${p?"signed":"complete"}!`,description:a??"You're all set."}),/*#__PURE__*/Y(Fe,{solPrice:r,instruction:m,fees:n,transactionInfo:i,chain:g}),/*#__PURE__*/Y(l,{}),/*#__PURE__*/Y(xe,{loading:!1,onClick:e,children:"Close"}),/*#__PURE__*/Y(d,{}),/*#__PURE__*/Y(u,{})]});let xe=/*#__PURE__*/kn(p).withConfig({displayName:"SubmitButton",componentId:"sc-3cb7ee42-0"})(["&&{margin-top:24px;}transition:color 350ms ease,background-color 350ms ease;"]);function Pe(n){return new Uint8Array(Cn().decode(n).messageBytes)}async function Ue(n,e){try{return await n}catch{return e}}const We=(...n)=>{if("undefined"==typeof Buffer)throw new ln("Buffer is not defined.",void 0,dn.BUFFER_NOT_DEFINED);return Buffer.from(...n)};function Me(n){switch(n){case"solana:mainnet":return"mainnet-beta";case"solana:devnet":return"devnet";case"solana:testnet":return"testnet"}}async function Be({privyClient:n,chain:e,mint:t}){let a=m[e];if(!a[t]){let i=await n.getSplTokenMetadata({mintAddress:t,cluster:Me(e)});i&&(a[t]={address:t,symbol:i.symbol,decimals:i.decimals})}return a[t]}async function De({solanaClient:n,tx:e}){let t=Mn().decode(Pe(e)),{value:a}=await n.rpc.getFeeForMessage(t).send();return a??0n}async function je({solanaClient:n,tx:e,replaceRecentBlockhash:t}){let{value:a}=await n.rpc.simulateTransaction(Mn().decode(e),{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 je({solanaClient:n,tx:e,replaceRecentBlockhash:!0}):{logs:a.logs??[],error:a.err,hasError:!!a.err,hasFunds:a.logs?.every((n=>!/insufficient funds/gi.test(n)&&!/insufficient lamports/gi.test(n)))??!0}}async function Le({tx:n,solanaClient:e,privyClient:t,checkFunds:a}){let i=Fn().decode(Pe(n)),r=i.staticAccounts[0]??"",s=await De({solanaClient:e,tx:n}),o=a?await Ue(je({solanaClient:e,tx:n})):void 0,c=o?.hasFunds??!0,l={},d=[],u=await async function({solanaClient:n,message:e}){if(!("addressTableLookups"in e)||!e.addressTableLookups)return[...e.staticAccounts];let t=e.addressTableLookups.map((n=>n.lookupTableAddress)),a=await Bn(t,n.rpc),i=t.map(((n,t)=>[...e.addressTableLookups[t]?.writableIndexes.map((e=>{let i=a[n]?.[e];if(i)return{key:i,isWritable:!0,altIdx:t}}))??[],...e.addressTableLookups[t]?.readonlyIndexes.map((e=>{let i=a[n]?.[e];if(i)return{key:i,isWritable:!1,altIdx:t}}))??[]])).flat().filter((n=>!!n)).sort(((n,e)=>n.isWritable!==e.isWritable?n.isWritable?-1:1:n.altIdx-e.altIdx)).map((({key:n})=>n));return[...e.staticAccounts,...i]}({solanaClient:e,message:i});for(let n of i.instructions){let a=i.staticAccounts[n.programAddressIndex]||"";if(a!==g&&a!==f)if(a!==h){if(a===w){let e=await Ue(function(n,e,t){let[a,i,r,s]=n.accountIndices?.map((n=>e[n]))??[];return{type:"ata-creation",program:t,payer:a,ata:i,owner:r,mint:s}}(n,u,a));if(!e){d.push({type:"unknown",program:a,discriminator:n.data?.[0]});continue}if(d.push(e),e.ata&&e.owner&&e.mint){l[e.ata]={owner:e.owner,mint:e.mint};continue}}if(y.includes(a)){let i=await Ue(Ve(n,u,e,t,a));if(!i){d.push({type:"unknown",program:a,discriminator:n.data?.[0]});continue}d.push(i)}else if(v.includes(a)){let i=await Ue(Je(n,u,e,t,a));if(!i){d.push({type:"unknown",program:a,discriminator:n.data?.[0]});continue}d.push(i)}else d.push({type:"unknown",program:a,discriminator:n.data?.[0]})}else{let e=await Ue(Re(n,u));if(!e){d.push({type:"unknown",program:a,discriminator:n.data?.[0]});continue}d.push(e)}else{let i=await Ue($e(n,u,e,t,l,a));if(!i){d.push({type:"unknown",program:a,discriminator:n.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 Ne(n,e=0){try{return function(n,e=0){let t=0n;for(let a=0;a<8;a++)t|=BigInt(n[e+a])<<BigInt(8*a);return t}(n,e)}catch{}try{return n.readBigInt64LE(e)}catch{}let t=We(n);try{return((n,e=0)=>{let t=n[e],a=n[e+7];if(!t||!a)throw Error(`Buffer offset out of range: first: ${t}, last: ${a}.`);return(BigInt(n[e+4]+256*n[e+5]+65536*n[e+6]+(a<<24))<<32n)+BigInt(t+256*n[++e]+65536*n[++e]+16777216*n[++e])})(t)}catch{}try{return t.subarray(e).readBigInt64LE()}catch{}try{return t.readBigInt64LE(e)}catch{}return 0n}async function $e(n,e,t,a,i,r){let s=n.data?.[0],o=n.accountIndices?.map((n=>e[n]))??[];if(1===s){let[n,e,t]=o;return{type:"spl-init-account",program:r,account:n,mint:e,owner:t}}if(3===s){let e,s,[c,l,d]=o,u="",p=l?i[l]:void 0;if(p)e=p.owner,u=p.mint;else if(l){let n=await t.rpc.getAccountInfo(l,{commitment:"confirmed",encoding:"jsonParsed"}).send(),a=n.value?.data;e=a?.parsed?.info?.owner,u=a?.parsed?.info?.mint??"",s=a?.parsed?.info?.tokenAmount?.decimals}if(!u&&c){let n=await t.rpc.getAccountInfo(c,{commitment:"confirmed",encoding:"jsonParsed"}).send(),e=n.value?.data;u=e?.parsed?.info?.mint??""}let m=await Be({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:e,value:Ne(n.data,1),token:{symbol:g,decimals:s,address:u}}}if(9===s){let[n,e,t]=o;return{type:"spl-close-account",program:r,source:n,destination:e,owner:t}}if(17===s)return{type:"spl-sync-native",program:r};throw Error(`Token program instruction type ${s} not supported`)}async function Re(n,e){let t=n.data?.[0],a=n.accountIndices?.map((n=>e[n]))??[];if(0===t){let[,e]=a;return{type:"create-account",program:h,account:e?.toString(),value:Ne(n.data,4),withSeed:!1}}if(2===t){let[e,t]=a;return{type:"sol-transfer",program:h,fromAccount:e,toAccount:t,token:{symbol:"SOL",decimals:9},value:Ne(n.data,4),withSeed:!1}}if(3===t){let[,e]=a;return{type:"create-account",program:h,account:e,withSeed:!0,value:Ne(n.data.slice(n.data.length-32-8-8))}}if(11===t){let[e,t]=a;return{type:"sol-transfer",program:h,fromAccount:e,toAccount:t,value:Ne(n.data,4),token:{symbol:"SOL",decimals:9},withSeed:!0}}throw Error(`System program instruction type ${t} not supported`)}async function Ve(n,e,t,a,i){let r=n.accountIndices?.map((n=>e[n]))??[],s=n.data?.[0];if(143===s){let e=r[10],s=r[11];return{type:"raydium-swap-base-input",program:i,mintIn:e,mintOut:s,tokenIn:e?await Be({privyClient:a,chain:t.chain,mint:e}):void 0,tokenOut:s?await Be({privyClient:a,chain:t.chain,mint:s}):void 0,amountIn:Ne(n.data,8),minimumAmountOut:Ne(n.data,16)}}if(55===s){let e=r[10],s=r[11];return{type:"raydium-swap-base-output",program:i,mintIn:e,mintOut:s,tokenIn:e?await Be({privyClient:a,chain:t.chain,mint:e}):void 0,tokenOut:s?await Be({privyClient:a,chain:t.chain,mint:s}):void 0,maxAmountIn:Ne(n.data,8),amountOut:Ne(n.data,16)}}throw Error(`Raydium swap program instruction type ${s} not supported`)}async function Je(n,e,t,a,i){let r=n.data?.[0],s=n.accountIndices?.map((n=>e[n]))??[];if([208,51,239,151,123,43,237,92].includes(r)){let e=s[5],r=s[6];return{type:"jupiter-swap-exact-out-route",program:i,mintIn:e,mintOut:r,tokenIn:e?await Be({privyClient:a,chain:t.chain,mint:e}):void 0,tokenOut:r?await Be({privyClient:a,chain:t.chain,mint:r}):void 0,outAmount:Ne(n.data,n.data.length-1-2-8-8),quotedInAmount:Ne(n.data,n.data.length-1-2-8)}}if([176,209,105,168,154,125,69,62].includes(r)){let e=s[7],r=s[8];return{type:"jupiter-swap-exact-out-route",program:i,mintIn:e,mintOut:r,tokenIn:e?await Be({privyClient:a,chain:t.chain,mint:e}):void 0,tokenOut:r?await Be({privyClient:a,chain:t.chain,mint:r}):void 0,outAmount:Ne(n.data,n.data.length-1-2-8-8),quotedInAmount:Ne(n.data,n.data.length-1-2-8)}}if([193,32,155,51,65,214,156,129].includes(r)){let e=s[7],r=s[8];return{type:"jupiter-swap-shared-accounts-route",program:i,mintIn:e,mintOut:r,tokenIn:e?await Be({privyClient:a,chain:t.chain,mint:e}):void 0,tokenOut:r?await Be({privyClient:a,chain:t.chain,mint:r}):void 0,inAmount:Ne(n.data,n.data.length-1-2-8-8),quotedOutAmount:Ne(n.data,n.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 He({rpcSubscriptions:n,signature:e,timeout:t}){let a=new AbortController,i=await n.signatureNotifications(e,{commitment:"confirmed"}).subscribe({abortSignal:a.signal}),r=await Promise.race([new Promise((n=>{setTimeout((()=>{a.abort(),n(Error("Transaction confirmation timed out"))}),t)})),new Promise((async n=>{for await(let e of i){if(a.abort(),e.value.err)return n(Error("Transaction confirmation failed"));n(void 0)}}))]);if(r instanceof Error)throw r}function Qe({rpc:n,rpcSubscriptions:e,chain:t,blockExplorerUrl:a}){let i=function({rpc:n,rpcSubscriptions:e}){return async t=>new Promise((async(a,i)=>{try{let i=await n.sendTransaction(We(t).toString("base64"),{preflightCommitment:"confirmed",encoding:"base64"}).send();await He({rpcSubscriptions:e,signature:i,timeout:1e4}),a({signature:new Uint8Array(Dn().encode(i))})}catch(n){i(n)}}))}({rpc:n,rpcSubscriptions:e});return{rpc:n,rpcSubscriptions:e,chain:t,blockExplorerUrl:a,sendAndConfirmTransaction:i}}function qe(){let n=A(),e=X((()=>Object.fromEntries(["solana:mainnet","solana:devnet","solana:testnet"].map((e=>[e,n.solanaRpcs[e]?Qe({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 nn((n=>{if(!e[n])throw Error(`No RPC configuration found for chain ${n}`);return e[n]}),[e])}const Ke={component:()=>{let{data:n,onUserCloseViaDialogOrKeybindRef:e,setModalData:t,navigate:a}=b(),{client:i,closePrivyModal:r,walletProxy:s,showFiatPrices:o}=un(),c=A(),{user:l}=mn(),d=qe()(n?.standardSignAndSendTransaction?.chain??"solana:mainnet"),[u,p]=en(n?.standardSignAndSendTransaction?.transaction),[m,g]=en(),[f,h]=en(),[w,y]=en({value:0n,isLoading:!1}),[v,F]=en(!1),[_,x]=en({}),[P,U]=en(),W=n?.standardSignAndSendTransaction?.account,M=!!n?.standardSignAndSendTransaction?.signOnly,B=W?.imported?gn(l).find((n=>n.address===W.address)):fn(l),{solPrice:D,isSolPriceLoading:j}=I({enabled:o}),L=X((()=>{if(!m)return;let n=m.spender,e=S(m.fee),t=S(w.value,3,!0),a=m.instructions.filter((n=>["sol-transfer","spl-transfer","raydium-swap-base-input","raydium-swap-base-output","jupiter-swap-shared-accounts-route","jupiter-swap-exact-out-route"].includes(n.type))),i=a.at(0);if(!i||a.length>1)return{fee:e,spender:n,balance:t};if("sol-transfer"===i.type)return{fee:e,spender:n,balance:t,total:S(i.value)};if("spl-transfer"===i.type)return{fee:e,spender:n,balance:t,total:`${rn({amount:i.value,decimals:i.token.decimals})} ${i.token.symbol}`};if("raydium-swap-base-input"===i.type&&i.tokenIn&&i.tokenOut){return{fee:e,spender:n,balance:t,swap:`${`${rn({amount:i.amountIn,decimals:i.tokenIn.decimals})} ${i.tokenIn.symbol}`} → ${`${rn({amount:i.minimumAmountOut,decimals:i.tokenOut.decimals})} ${i.tokenOut.symbol}`}`}}if("raydium-swap-base-output"===i.type&&i.tokenIn&&i.tokenOut){return{fee:e,spender:n,balance:t,swap:`${`${rn({amount:i.maxAmountIn,decimals:i.tokenIn.decimals})} ${i.tokenIn.symbol}`} → ${`${rn({amount:i.amountOut,decimals:i.tokenOut.decimals})} ${i.tokenOut.symbol}`}`}}if("jupiter-swap-shared-accounts-route"===i.type&&i.tokenIn&&i.tokenOut){return{fee:e,spender:n,balance:t,swap:`${`${rn({amount:i.inAmount,decimals:i.tokenIn.decimals})} ${i.tokenIn.symbol}`} → ${`${rn({amount:i.quotedOutAmount,decimals:i.tokenOut.decimals})} ${i.tokenOut.symbol}`}`}}if("jupiter-swap-exact-out-route"===i.type&&i.tokenIn&&i.tokenOut){return{fee:e,spender:n,balance:t,swap:`${`${rn({amount:i.quotedInAmount,decimals:i.tokenIn.decimals})} ${i.tokenIn.symbol}`} → ${`${rn({amount:i.outAmount,decimals:i.tokenOut.decimals})} ${i.tokenOut.symbol}`}`}}return{fee:e,spender:n,balance:t}}),[m,W?.address,w]),N=X((()=>{let n;if(!m||!o||!D||j)return;function e(...n){return C(n.reduce(((n,e)=>n+e),0n),D??0)}W?.address===m.spender&&(n=e(m.fee));let t=e(w.value),a=m.instructions.filter((n=>"sol-transfer"===n.type||"spl-transfer"===n.type)).at(0);return!a||m.instructions.length>1?{fee:n,balance:t}:"sol-transfer"===a.type?{fee:n,balance:t,total:e(a.value,W?.address===m.spender?m.fee:0n)}:"spl-transfer"===a.type?{fee:n,balance:t,total:`${rn({amount:a.value,decimals:a.token.decimals})} ${a.token.symbol}`}:{fee:n,balance:t}}),[m,o,D,j,W?.address,w]);if(tn((()=>{!async function(){if(u&&i)try{h(void 0);let n=await Le({tx:u,solanaClient:d,privyClient:i,checkFunds:!M});g(n)}catch(n){console.error("Failed to prepare transaction",n),h(n)}}()}),[u,d,i,M]),tn((()=>{(async function(){if(!W)return;y({value:w.value,isLoading:!0});let{value:n}=await d.rpc.getBalance(W.address,{commitment:"confirmed"}).send();y({value:n??0n,isLoading:!1})})().catch(console.error)}),[m]),!u||!n?.standardSignAndSendTransaction||!W){let e=Error("Invalid transaction request");/*#__PURE__*/return Y(T,{error:e,allowlistConfig:c.allowlistConfig,onRetry:()=>{n?.standardSignAndSendTransaction?.onFailure(e),r({shouldCallAuthOnSuccess:!1})}})}let $=()=>{if(!v)return _.signature||_.signedTransaction?n?.standardSignAndSendTransaction?.onSuccess({signature:_.signature,signedTransaction:_.signedTransaction}):n?.standardSignAndSendTransaction?.onFailure(P??f??Error("User exited the modal before submitting the transaction")),r({shouldCallAuthOnSuccess:!1})};e.current=$;let R=n.standardSignAndSendTransaction?.uiOptions?.transactionInfo?.contractInfo?.imgUrl?/*#__PURE__*/Y("img",{src:n.standardSignAndSendTransaction.uiOptions.transactionInfo.contractInfo.imgUrl,alt:n.standardSignAndSendTransaction.uiOptions.transactionInfo.contractInfo.imgAltText}):null,V=!!(n.funding&&n.funding.supportedOptions.length>0),J=!m?.hasFunds&&V;if(_.signature||_.signedTransaction){let e=m?.instructions.filter((n=>"sol-transfer"===n.type||"spl-transfer"===n.type)),t=1===e?.length?e?.at(0):void 0;/*#__PURE__*/return Y(_e,{fees:_.fees??0n,onClose:$,transactionInfo:n.standardSignAndSendTransaction?.uiOptions.transactionInfo,solPrice:D,receiptHeader:n.standardSignAndSendTransaction?.uiOptions.successHeader,receiptDescription:n.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__*/Y(O,{transactionError:P,chainId:d.chain,onClose:$,chainType:"solana",onRetry:async()=>{U(void 0);let{value:n}=await d.rpc.getLatestBlockhash().send();p(function(n,e){return En(Fn().decode(Pe(n)),(n=>_n(n)),(n=>xn(e,n)),(n=>Pn(n)),(n=>new Uint8Array(Un().encode(n))))}(u,n))}}):/*#__PURE__*/Y(k,{img:R,title:n.standardSignAndSendTransaction?.uiOptions?.transactionInfo?.title||"Confirm transaction",subtitle:n.standardSignAndSendTransaction?.uiOptions?.description||`${c.name} wants your permission to approve the following transaction.`,cta:J?"Add funds":n.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||w.isLoading,isTokenPriceLoading:o&&j,isMissingFunds:!m?.hasFunds,submitError:P??void 0,isSponsored:!!n.standardSignAndSendTransaction?.isSponsored,parseError:f,onClick:J?async()=>{if(W){if(!V)throw Error("Funding wallet is not enabled");t({...n,funding:{...n.funding,methodScreen:E},solanaFundingData:n?.solanaFundingData}),a(E)}}:async()=>{try{if(F(!0),v||!W||!s||!l||!B)return;let e=await n.standardSignAndSendTransaction.onConfirm(u);if("signature"in e){let n=await async function({solanaClient:n,signature:e}){let t=Wn().decode(e),a=await n.rpc.getTransaction(t,{maxSupportedTransactionVersion:0,commitment:"confirmed",encoding:"base64"}).send().catch((()=>null));return a?{fee:a.meta?.fee??0n}:null}({solanaClient:d,signature:e.signature});return void x({...e,fees:n?.fee})}x(e)}catch(n){console.warn({transaction:u,error:n}),U(n)}finally{F(!1)}},onClose:$})}};function Ye(n,e,t){let a=structuredClone(Cn().decode(n)),i=jn(e);return i in a.signatures&&(a.signatures[i]=t),new Uint8Array(Un().encode(a))}function Ge(){let{isHeadlessSigning:n,walletProxy:e,initializeWalletProxy:t,recoverEmbeddedWallet:a,openModal:i,privy:r,client:s}=un(),{user:o}=An(),{setModalData:c}=b(),{signWithUserSigner:l}=On();return{signMessage:({message:d,address:u,options:p})=>new Promise((async(m,g)=>{let f=hn(o,u);if("privy"!==f?.walletClientType)return void g(new ln("Wallet is not a Privy wallet",void 0,dn.EMBEDDED_WALLET_NOT_FOUND));let{entropyId:h,entropyIdVerifier:w}=F(o,f),y=wn(f),v=We(d).toString("base64");if(v.length<1)return void g(new ln("Message must be a non-empty string",void 0,dn.INVALID_MESSAGE));let A=async()=>{let n;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=e??await t(15e3);if(!c)throw Error("Failed to initialize embedded wallet proxy.");if(!await a({address:f.address}))throw Error("Unable to connect to wallet");if(y){let e=await sn(r,l,{chain_type:"solana",method:"signMessage",params:{message:v,encoding:"base64"},wallet_id:f.id});if(!e.data||!("signature"in e.data))throw Error("Failed to sign message");n=e.data.signature}else{let{response:e}=await c.rpc({accessToken:i,entropyId:h,entropyIdVerifier:w,chainType:"solana",hdWalletIndex:f.walletIndex??0,requesterAppId:p?.uiOptions?.requesterAppId,request:{method:"signMessage",params:{message:v}}});n=e.data.signature}return n};if(n({showWalletUIs:p?.uiOptions?.showWalletUIs}))try{let n=await A(),e=new Uint8Array(We(n,"base64"));m({signature:e})}catch(n){g(n)}else c({signMessage:{method:"solana_signMessage",data:v,confirmAndSign:A,onSuccess:n=>{m({signature:new Uint8Array(We(n,"base64"))})},onFailure:n=>{g(n)},uiOptions:p?.uiOptions??{}},connectWallet:{recoveryMethod:f.recoveryMethod,connectingWalletAddress:f.address,entropyId:h,entropyIdVerifier:w,isUnifiedWallet:y,onCompleteNavigateTo:_,onFailure:n=>{g(new ln("Failed to connect to wallet",n,dn.UNKNOWN_CONNECT_WALLET_ERROR))}}}),i(x)}))}}function Ze(){let{isHeadlessSigning:n,openModal:e}=un(),{setModalData:t}=b(),{signMessage:a}=Ge(),{user:i}=An();return{signTransaction:async({transaction:r,options:s,chain:o="solana:mainnet",address:c})=>{async function l(n){let{signature:e}=await a({message:Pe(n),address:c,options:{...s,uiOptions:{...s?.uiOptions,showWalletUIs:!1}}});return{signedTransaction:Ye(n,c,e)}}return n({showWalletUIs:s?.uiOptions?.showWalletUIs})?l(r):new Promise((async(n,a)=>{let d=hn(i,c);if("privy"!==d?.walletClientType)return void a(new ln("Wallet is not a Privy wallet",void 0,dn.EMBEDDED_WALLET_NOT_FOUND));let{entropyId:u,entropyIdVerifier:p}=F(i,d),m=wn(d);function g(n){return e=>{a(e instanceof ln?e:new ln("Failed to connect to wallet",e,n))}}let f={account:d,transaction:r,chain:o,signOnly:!0,uiOptions:s?.uiOptions||{},onConfirm:l,onSuccess:n,onFailure:g(dn.TRANSACTION_FAILURE)};t({connectWallet:{recoveryMethod:d.recoveryMethod,connectingWalletAddress:d.address,entropyId:u,entropyIdVerifier:p,isUnifiedWallet:m,onCompleteNavigateTo:Ke,onFailure:g(dn.UNKNOWN_CONNECT_WALLET_ERROR)},standardSignAndSendTransaction:f}),e(x)}))}}}let ze=new class extends Sn{setImplementation(n){Kn(this,Gn)[Gn]=n}async signMessage(n){return Kn(this,Gn)[Gn].signMessage(n)}async signAndSendTransaction(n){return Kn(this,Gn)[Gn].signAndSendTransaction(n)}async signTransaction(n){return Kn(this,Gn)[Gn].signTransaction(n)}constructor(n){super(),Object.defineProperty(this,Gn,{writable:!0,value:void 0}),Kn(this,Gn)[Gn]=n}}({signTransaction:pn("signTransaction was not injected"),signAndSendTransaction:pn("signAndSendTransaction was not injected"),signMessage:pn("signMessage was not injected")}),Xe=new class{get version(){return oe(this,ue)[ue]}get name(){return oe(this,pe)[pe]}get icon(){return oe(this,me)[me]}get chains(){return qn.slice()}get features(){return{"standard:connect":{version:"1.0.0",connect:oe(this,be)[be]},"standard:disconnect":{version:"1.0.0",disconnect:oe(this,Ie)[Ie]},"standard:events":{version:"1.0.0",on:oe(this,we)[we]},"solana:signAndSendTransaction":{version:"1.0.0",supportedTransactionVersions:["legacy",0],signAndSendTransaction:oe(this,Te)[Te]},"solana:signTransaction":{version:"1.0.0",supportedTransactionVersions:["legacy",0],signTransaction:oe(this,Oe)[Oe]},"solana:signMessage":{version:"1.0.0",signMessage:oe(this,Se)[Se]},"privy:":{privy:{signMessage:oe(this,ge)[ge].signMessage,signTransaction:oe(this,ge)[ge].signTransaction,signAndSendTransaction:oe(this,ge)[ge].signAndSendTransaction}}}}get accounts(){return oe(this,he)[he].slice()}get isPrivyWallet(){return oe(this,fe)[fe]}constructor({name:n,icon:e,version:t,injection:a,wallets:i}){Object.defineProperty(this,ye,{value:ke}),Object.defineProperty(this,ve,{value:Ce}),Object.defineProperty(this,de,{writable:!0,value:void 0}),Object.defineProperty(this,ue,{writable:!0,value:void 0}),Object.defineProperty(this,pe,{writable:!0,value:void 0}),Object.defineProperty(this,me,{writable:!0,value:void 0}),Object.defineProperty(this,ge,{writable:!0,value:void 0}),Object.defineProperty(this,fe,{writable:!0,value:void 0}),Object.defineProperty(this,he,{writable:!0,value:void 0}),Object.defineProperty(this,we,{writable:!0,value:void 0}),Object.defineProperty(this,Ae,{writable:!0,value:void 0}),Object.defineProperty(this,be,{writable:!0,value:void 0}),Object.defineProperty(this,Ie,{writable:!0,value:void 0}),Object.defineProperty(this,Se,{writable:!0,value:void 0}),Object.defineProperty(this,Te,{writable:!0,value:void 0}),Object.defineProperty(this,Oe,{writable:!0,value:void 0}),oe(this,de)[de]={},oe(this,we)[we]=(n,e)=>(oe(this,de)[de][n]?.push(e)||(oe(this,de)[de][n]=[e]),()=>oe(this,ve)[ve](n,e)),oe(this,Ae)[Ae]=n=>{null!=n&&(oe(this,he)[he]=n.map((({address:n})=>new se({address:n,publicKey:Tn.decode(n)})))),oe(this,ye)[ye]("change",{accounts:this.accounts})},oe(this,be)[be]=async()=>(oe(this,ye)[ye]("change",{accounts:this.accounts}),{accounts:this.accounts}),oe(this,Ie)[Ie]=async()=>{oe(this,ye)[ye]("change",{accounts:this.accounts})},oe(this,Se)[Se]=async(...n)=>{let e=[];for(let{account:t,...a}of n){let{signature:n}=await oe(this,ge)[ge].signMessage({...a,address:t.address});e.push({signedMessage:a.message,signature:n})}return e},oe(this,Te)[Te]=async(...n)=>{let e=[];for(let t of n){let{signature:n}=await oe(this,ge)[ge].signAndSendTransaction({...t,transaction:t.transaction,address:t.account.address,chain:t.chain||"solana:mainnet",options:t.options});e.push({signature:n})}return e},oe(this,Oe)[Oe]=async(...n)=>{let e=[];for(let{transaction:t,account:a,options:i,chain:r}of n){let{signedTransaction:n}=await oe(this,ge)[ge].signTransaction({transaction:t,address:a.address,chain:r||"solana:mainnet",options:i});e.push({signedTransaction:n})}return e},oe(this,pe)[pe]=n,oe(this,me)[me]=e,oe(this,ue)[ue]=t,oe(this,ge)[ge]=a,oe(this,he)[he]=[],oe(this,fe)[fe]=!0,a.on("accountChanged",oe(this,Ae)[Ae],this),oe(this,Ae)[Ae](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:ze});function nt(){let{ready:n}=U(),{user:e}=An(),{signMessage:t}=Ge(),{signTransaction:a}=Ze(),{signAndSendTransaction:i}=function(){let n=A(),{isHeadlessSigning:e,openModal:t}=un(),{setModalData:a}=b(),{signTransaction:i}=Ze(),r=qe(),{user:s}=An(),{signWithUserSigner:o}=On();return{signAndSendTransaction:async({transaction:c,address:l,chain:d="solana:mainnet",options:u})=>{async function p(n){if(u?.sponsor)return await f(n);let{signedTransaction:e}=await i({transaction:n,address:l,chain:d,options:{...u,uiOptions:{...u?.uiOptions,showWalletUIs:!1}}}),{signature:t}=await r(d).sendAndConfirmTransaction(e);return{signature:t}}if(e({showWalletUIs:u?.uiOptions?.showWalletUIs}))return p(c);let m=hn(s,l);if("privy"!==m?.walletClientType)throw new ln("Wallet is not a Privy wallet",void 0,dn.EMBEDDED_WALLET_NOT_FOUND);let g=wn(m),f=async e=>{if(!g)throw new ln("Sponsoring transactions is only supported for wallets on the TEE stack",dn.INVALID_DATA);let t=new an({appId:n.id,clientId:n.appClientId,storage:P}),a=await sn(t,o,{chain_type:"solana",method:"signAndSendTransaction",sponsor:!0,params:{transaction:Buffer.from(e).toString("base64"),encoding:"base64"},caip2:`solana:${(await r(d).rpc.getGenesisHash().send()).substring(0,32)}`,wallet_id:m.id});if(a.data&&"hash"in a.data)return{signature:Tn.decode(a.data.hash)};throw Error("Failed to sign and send transaction")};return new Promise((async(e,i)=>{let r,o,{entropyId:f,entropyIdVerifier:h}=F(s,m);function w(n){return e=>{i(e instanceof ln?e:new ln("Failed to connect to wallet",e,n))}}let y={account:m,transaction:c,chain:d,signOnly:!1,uiOptions:u?.uiOptions||{},onConfirm:p,onSuccess:e,onFailure:w(dn.TRANSACTION_FAILURE),isSponsored:!!u?.sponsor},v={recoveryMethod:m.recoveryMethod,connectingWalletAddress:m.address,entropyId:f,entropyIdVerifier:h,isUnifiedWallet:g,onCompleteNavigateTo:Ke,onFailure:w(dn.UNKNOWN_CONNECT_WALLET_ERROR)};n.fundingConfig&&(r=bn({address:l,appConfig:n,methodScreen:E,fundWalletConfig:{...u,asset:"native-currency",chain:d},externalSolanaFundingScreen:ct}),o={amount:n.fundingConfig.defaultRecommendedAmount,asset:"SOL",chain:d,destinationAddress:l,afterSuccessScreen:Ke,sourceWalletData:void 0}),a({connectWallet:v,standardSignAndSendTransaction:y,funding:r,solanaFundingData:o}),t(x)}))}}}(),r=X((()=>{let n=[...yn(e).sort(((n,e)=>(n.walletIndex??0)-(e.walletIndex??0)))],t=gn(e);return t.length?[...n,...t]:n}),[e]),s=X((()=>({signMessage:async({message:n,address:e,options:a})=>await t({message:n,address:e,options:a}),signTransaction:async({transaction:n,address:e,chain:t,options:i})=>await a({transaction:n,address:e,chain:t,options:i}),async signAndSendTransaction({transaction:n,address:e,chain:t,options:a}){let{signature:r}=await i({transaction:n,address:e,chain:t,options:a});return{signature:r}}})),[t,a,i]);return tn((()=>{ze?.setImplementation(s)}),[s]),tn((()=>{var e;!n||(e=Xe.accounts).length===r.length&&e.every(((n,e)=>n.address===r[e]?.address))||ze?.emit("accountChanged",r)}),[n,r]),{ready:n,wallet:Xe}}function et(){let{client:n}=un(),{ready:e,wallet:t}=nt(),[a,i]=en([]),[r,s]=en([]);return tn((()=>{let n=[t,...a.filter((n=>"solana"===n.chainType&&!!n.wallet.features)).map((n=>n.wallet))];s(n);let e=n.map((e=>e.features["standard:events"]?.on("change",(()=>{s([...n])}))));return()=>{e.forEach((n=>n?.()))}}),[a]),tn((()=>{if(!e)return;i(n.connectors?.walletConnectors.filter((n=>"solana"===n.chainType))??[]);let t=()=>{i(n.connectors?.walletConnectors.filter((n=>"solana"===n.chainType))??[])};return n.connectors?.on("connectorInitialized",t),()=>{n.connectors?.off("connectorInitialized",t)}}),[e,n.connectors]),{ready:e,wallets:r}}function tt(){let{ready:n,wallets:e}=et();return{ready:n,wallets:X((()=>e.flatMap((n=>n.accounts.map((e=>new on({wallet:n,account:e})))))),[e])}}function at(n){return Wn().decode(n)}function it(n){return BigInt(Math.floor(1e9*parseFloat(n)))}function rt(n){return+st.format(parseFloat(n.toString())/1e9)}let st=Intl.NumberFormat(void 0,{maximumFractionDigits:8});async function ot({tx:n,solanaClient:e,amount:t,asset:a,tokenPrice:i}){if(!n)return null;if("SOL"===a&&i){let a=it(t),r=C(a,i),s=await De({solanaClient:e,tx:n});return{amountInUsd:r,feeInUsd:i?C(s,i):void 0,totalInUsd:C(a+s,i)}}if("USDC"===a&&i){let a="$"+t,r=await De({solanaClient:e,tx:n}),s=function(n,e){let t=parseFloat(n.toString())/M*e;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=it(t),i=await De({solanaClient:e,tx:n});return{amountInSol:t+" SOL",feeInSol:rt(i)+" SOL",totalInSol:rt(a+i)+" SOL"}}return{amountInUsdc:t+" USDC",feeInSol:rt(await De({solanaClient:e,tx:n}))+" SOL"}}const ct={component:function(){let n=A(),{closePrivyModal:e,createAnalyticsEvent:t}=un(),{data:a,setModalData:i,navigate:r}=b(),{wallets:s}=tt(),[o,l]=en("preparing"),[m,f]=en(),[h,w]=en(),[y,v]=en();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:S,chain:T,sourceWalletData:O,destinationAddress:k,afterSuccessScreen:E}=a.solanaFundingData,F=s.find((n=>n.address===O.address&&B(O.walletClientType)===B(n.standardWallet.name))),_=qe()(T),{tokenPrice:x,isTokenPriceLoading:P}=D("solana");return tn((()=>{if("preparing"!==o||P||!F)return;let n="SOL"===S?it(I):function(n){return BigInt(Math.floor(1e6*parseFloat(n)))}(I);w({amount:("SOL"===S&&x?C(n,x):I)??I}),("SOL"===S?async function({solanaClient:n,source:e,destination:t,amountInLamports:a}){let{value:i}=await n.rpc.getLatestBlockhash().send(),r={address:e},s=En(Ln({version:0}),(n=>Nn(r,n)),(n=>xn(i,n)),(n=>$n(Rn({amount:a,source:r,destination:t}),n)),(n=>Pn(n)));return new Uint8Array(Un().encode(s))}({solanaClient:_,source:F.address,destination:k,amountInLamports:n}):async function({solanaClient:n,source:e,destination:t,amountInBaseUnits:a}){let i=W(n.chain),{value:r}=await n.rpc.getLatestBlockhash().send(),s={address:e},[o]=await Vn({mint:i,owner:e,tokenProgram:g}),[c]=await Vn({mint:i,owner:t,tokenProgram:g}),[l,d]=await Promise.all([n.rpc.getAccountInfo(o,{commitment:"confirmed",encoding:"jsonParsed"}).send().catch((()=>null)),n.rpc.getAccountInfo(c,{commitment:"confirmed",encoding:"jsonParsed"}).send().catch((()=>null))]);if(!l?.value)throw Error(`Source token account does not exist for address: ${e}`);let u=Jn({payer:s,ata:c,owner:t,mint:i}),p=En(Ln({version:0}),(n=>Nn(s,n)),(n=>xn(r,n)),(n=>d?.value?n:$n(u,n)),(n=>$n(Hn({source:o,destination:c,authority:s,amount:a}),n)),(n=>Pn(n)));return new Uint8Array(Un().encode(p))}({solanaClient:_,source:F.address,destination:k,amountInBaseUnits:n})).then(f).catch((n=>{l("error"),v(n)}))}),[o,I,S,T,F,k,P,x]),tn((()=>{"preparing"===o&&m&&ot({tx:m,solanaClient:_,amount:I,asset:S,tokenPrice:x}).then((n=>{l("loaded"),w({amount:n?.amountInUsd??n?.amountInUsdc??n?.amountInSol??I,fee:n?.feeInUsd??n?.feeInSol,total:n?.totalInUsd??n?.totalInSol})})).catch((n=>{l("error"),v(n)}))}),[m,I,S,o,x]),tn((()=>{"error"===o&&y&&(i({errorModalData:{error:y,previousScreen:ct},solanaFundingData:a.solanaFundingData}),r(j,!1))}),[o,r]),tn((()=>{if("success"!==o)return;let n=setTimeout(E?()=>r(E):e,L);return()=>clearTimeout(n)}),[o]),/*#__PURE__*/G(Z,"success"===o?{children:[/*#__PURE__*/Y(N,{}),/*#__PURE__*/Y($,{}),/*#__PURE__*/G(R,{children:[/*#__PURE__*/Y(z,{color:"var(--privy-color-success)",width:"64px",height:"64px"}),/*#__PURE__*/Y(c,{title:"Success!",description:`You’ve successfully added ${I} ${S} to your ${n.name} wallet. It may take a minute before the funds are available to use.`})]}),/*#__PURE__*/Y(d,{}),/*#__PURE__*/Y(u,{})]}:"preparing"===o||"loaded"===o||"sending"===o?{children:[/*#__PURE__*/Y(N,{}),/*#__PURE__*/Y(V,{style:{marginTop:"16px"},children:/*#__PURE__*/Y(J,{icon:F?.standardWallet.icon,name:F?.standardWallet.name})}),/*#__PURE__*/Y(c,{style:{marginTop:"8px",marginBottom:"12px"},title:"sending"===o&&F?`Confirming with ${F.standardWallet.name}`:"Confirm transaction"}),/*#__PURE__*/Y(Qn,{rows:[{label:"Source",value:cn(O.address)},{label:"Destination",value:cn(k)},{label:"Network",value:H(T)},{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__*/Y(p,{style:{marginTop:"1rem"},loading:"preparing"===o||"sending"===o,onClick:function(){"loaded"===o&&m&&F&&(l("sending"),async function({transaction:n,chain:e,sourceWallet:t,solanaClient:a}){let{hasFunds:i}=await je({solanaClient:a,tx:n});if(!i)throw new ln(`Wallet ${cn(t.address)} does not have enough funds.`,void 0,dn.INSUFFICIENT_BALANCE);let r=at((await t.signAndSendTransaction({transaction:n,chain:e}).catch((n=>{throw new ln("Transaction was rejected by the user",n,dn.TRANSACTION_FAILURE)}))).signature);return await He({rpcSubscriptions:a.rpcSubscriptions,signature:r,timeout:2e4}),r}({solanaClient:_,transaction:m,chain:T,sourceWallet:F}).then((n=>{l("success"),t({eventName:Q,payload:{provider:"external",status:"success",txHash:n,address:F.address,value:I,chainType:"solana",clusterName:T,token:S,destinationAddress:k,destinationValue:I,destinationChainType:"solana",destinationClusterName:T,destinationToken:S}})})).catch((n=>{l("error"),v(n)})))},children:"Confirm"}),/*#__PURE__*/Y(u,{})]}:{children:[/*#__PURE__*/Y(N,{}),/*#__PURE__*/Y(q,{}),/*#__PURE__*/Y("div",{style:{marginTop:"1rem"}}),/*#__PURE__*/Y(u,{})]})}};function lt(){let n=A(),{openModal:e}=un(),{setModalData:t}=b();return{fundWallet:async({address:a,options:i})=>{let r=i?.amount||n.fundingConfig?.defaultRecommendedAmount||"1",s=i?.asset||n.fundingConfig?.defaultRecommendedCurrency.asset||"native-currency",o=i?.chain||"solana:mainnet";t({funding:bn({address:a,appConfig:n,methodScreen:E,fundWalletConfig:{...i,amount:r,asset:s,chain:o},externalSolanaFundingScreen:ct}),solanaFundingData:{amount:r,asset:"native-currency"===s?"SOL":"USDC",chain:o,destinationAddress:a,sourceWalletData:void 0}}),e(E)}}}function dt(){let{user:n,getAccessToken:e}=mn(),{walletProxy:t,openModal:a,client:i}=un(),{setModalData:r}=b(),s=A();return X((()=>({exportWallet:o=>new Promise((async(c,l)=>{if(!n)return void l(new ln("User must be authenticated before exporting their Privy wallet"));let d=o?.address?hn(n,o.address):vn(n);if(!d)return void l(new ln("User must have an embedded wallet."));if(!In(d))return void l(Error(`Export is not supported for ${d.chainType} wallets`));let u=wn(d),{entropyId:p,entropyIdVerifier:m}=F(n,d);await e()?t?(r({connectWallet:{recoveryMethod:d.recoveryMethod,connectingWalletAddress:d.address,isUnifiedWallet:u,entropyId:p,entropyIdVerifier:m,onCompleteNavigateTo:K,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(x)):l(new ln("Wallet not ready for export")):l(new ln("Must have valid access token."))}))})),[n,e,t,a,i,r,s])}export{dt as a,Qe as b,tt as c,et as d,De as f,at as g,je as s,lt as u};
|