@privy-io/react-auth 3.4.0 → 3.4.1

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.
Files changed (35) hide show
  1. package/dist/cjs/{SignRequestScreen-BtiA_kjR.js → SignRequestScreen-cAAtS6nl.js} +19 -19
  2. package/dist/cjs/abstract-smart-wallets.js +1 -1
  3. package/dist/cjs/index.js +5 -5
  4. package/dist/cjs/{smart-wallets-CT6HYICU.js → smart-wallets-65yy6DGK.js} +1 -1
  5. package/dist/cjs/smart-wallets.js +1 -1
  6. package/dist/cjs/solana.js +1 -1
  7. package/dist/cjs/ui.js +1 -1
  8. package/dist/cjs/{use-export-wallet-C_4yZPUM.js → use-export-wallet-9ypqLaaB.js} +1 -1
  9. package/dist/cjs/{useActiveWallet-DygS7fQB.js → useActiveWallet-CtNcsjJH.js} +1 -1
  10. package/dist/cjs/{usePrivy-8s4mCLcX.js → usePrivy-dGz-b0SX.js} +1 -1
  11. package/dist/dts/extended-chains.d.mts +2 -1
  12. package/dist/dts/extended-chains.d.ts +2 -1
  13. package/dist/dts/farcaster.d.mts +2 -1
  14. package/dist/dts/farcaster.d.ts +2 -1
  15. package/dist/dts/index.d.mts +6 -6
  16. package/dist/dts/index.d.ts +6 -6
  17. package/dist/dts/smart-wallets.d.mts +2 -1
  18. package/dist/dts/smart-wallets.d.ts +2 -1
  19. package/dist/dts/solana.d.mts +3 -2
  20. package/dist/dts/solana.d.ts +3 -2
  21. package/dist/dts/{types-tFJ_e9u8.d.mts → types-BF33BYgd.d.mts} +6 -0
  22. package/dist/dts/{types-tFJ_e9u8.d.ts → types-BF33BYgd.d.ts} +6 -0
  23. package/dist/dts/ui.d.mts +2 -1
  24. package/dist/dts/ui.d.ts +2 -1
  25. package/dist/esm/{SignRequestScreen-Dkx-HBRI.mjs → SignRequestScreen-cNZ56bAg.mjs} +17 -17
  26. package/dist/esm/abstract-smart-wallets.mjs +1 -1
  27. package/dist/esm/index.mjs +6 -6
  28. package/dist/esm/{smart-wallets-BElFh8An.mjs → smart-wallets-_lFo8N6W.mjs} +1 -1
  29. package/dist/esm/smart-wallets.mjs +1 -1
  30. package/dist/esm/solana.mjs +1 -1
  31. package/dist/esm/ui.mjs +1 -1
  32. package/dist/esm/{use-export-wallet-OoiI5as_.mjs → use-export-wallet-E2KvvjYq.mjs} +1 -1
  33. package/dist/esm/{useActiveWallet-BjD-txC9.mjs → useActiveWallet-BLu2tB4S.mjs} +1 -1
  34. package/dist/esm/{usePrivy-BJYprMT0.mjs → usePrivy-DmWciddF.mjs} +1 -1
  35. package/package.json +7 -6
@@ -1 +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,bN as K}from"./SignRequestScreen-Dkx-HBRI.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-BJYprMT0.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};
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};
@@ -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-Dkx-HBRI.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
+ 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-cNZ56bAg.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-Dkx-HBRI.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};
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-cNZ56bAg.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.0",
3
+ "version": "3.4.1",
4
4
  "description": "React client for the Privy Auth API",
5
5
  "keywords": [
6
6
  "authentication",
@@ -130,6 +130,7 @@
130
130
  "build:code": "rollup --config rollup.build.mjs",
131
131
  "check-types": "tsc --noEmit",
132
132
  "clean": "rm -rf dist .turbo .swc",
133
+ "clean:reset": "rm -rf dist .turbo .swc node_modules",
133
134
  "dev:code": "rollup --config rollup.dev.mjs --watch",
134
135
  "dev:types": "rollup --config rollup.types.mjs --watch",
135
136
  "format": "eslint src --fix",
@@ -150,15 +151,15 @@
150
151
  "@floating-ui/react": "^0.26.22",
151
152
  "@headlessui/react": "^2.2.0",
152
153
  "@heroicons/react": "^2.1.1",
153
- "@marsidev/react-turnstile": "^0.4.1",
154
+ "@marsidev/react-turnstile": "^1.3.1",
154
155
  "@privy-io/api-base": "1.7.1",
155
156
  "@privy-io/chains": "0.0.3",
156
157
  "@privy-io/ethereum": "0.0.2",
157
- "@privy-io/js-sdk-core": "0.56.2",
158
- "@privy-io/public-api": "2.50.0",
158
+ "@privy-io/js-sdk-core": "0.56.3",
159
+ "@privy-io/public-api": "2.51.0",
159
160
  "@privy-io/urls": "*",
160
161
  "@scure/base": "^1.2.5",
161
- "@simplewebauthn/browser": "^9.0.1",
162
+ "@simplewebauthn/browser": "^13.2.2",
162
163
  "@tanstack/react-virtual": "^3.13.10",
163
164
  "@wallet-standard/app": "^1.0.1",
164
165
  "@walletconnect/ethereum-provider": "2.21.7",
@@ -191,7 +192,7 @@
191
192
  "@privy-io/build-config": "*",
192
193
  "@privy-io/eslint-config-custom": "*",
193
194
  "@privy-io/eslint-plugin-privy-rules": "*",
194
- "@privy-io/public-api": "2.50.0",
195
+ "@privy-io/public-api": "2.51.0",
195
196
  "@privy-io/testing": "*",
196
197
  "@rollup/plugin-commonjs": "^26.0.1",
197
198
  "@rollup/plugin-node-resolve": "^15.3.0",