@privy-io/react-auth 3.4.0 → 3.4.2-beta-20251024222344

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