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