@privy-io/react-auth 3.5.1 → 3.6.0-beta-20251104001210

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/dist/cjs/{EmbeddedWalletConnectingScreen-i0UDHMDq.js → EmbeddedWalletConnectingScreen-jOWUCqZg.js} +15 -15
  2. package/dist/cjs/{SignRequestScreen-H5r467q6.js → SignRequestScreen-CC8faRpv.js} +1 -1
  3. package/dist/cjs/abstract-smart-wallets.js +1 -1
  4. package/dist/cjs/{events-context-Cgq8fGB0.js → events-context-PZ26oAHB.js} +1 -1
  5. package/dist/cjs/extended-chains.js +1 -1
  6. package/dist/cjs/index.js +2 -2
  7. package/dist/cjs/internal.js +1 -1
  8. package/dist/cjs/{smart-wallets-B0bTYa6G.js → smart-wallets-7xSqnGde.js} +1 -1
  9. package/dist/cjs/smart-wallets.js +1 -1
  10. package/dist/cjs/solana.js +1 -1
  11. package/dist/cjs/ui.js +1 -1
  12. package/dist/cjs/{use-export-wallet-BhYG6ocQ.js → use-export-wallet-C-yeV_2q.js} +1 -1
  13. package/dist/cjs/{useActiveWallet-BoPIudwB.js → useActiveWallet-B8m9GNRD.js} +1 -1
  14. package/dist/cjs/{usePrivy-CLLJiDdU.js → usePrivy-8MnUTXRB.js} +1 -1
  15. package/dist/dts/{events-context-DB3Pn5Hg.d.mts → events-context-Dr3UkLLW.d.mts} +1 -1
  16. package/dist/dts/{events-context-DB3Pn5Hg.d.ts → events-context-Dr3UkLLW.d.ts} +1 -1
  17. package/dist/dts/extended-chains.d.mts +1 -1
  18. package/dist/dts/extended-chains.d.ts +1 -1
  19. package/dist/dts/farcaster.d.mts +1 -1
  20. package/dist/dts/farcaster.d.ts +1 -1
  21. package/dist/dts/index.d.mts +4 -4
  22. package/dist/dts/index.d.ts +4 -4
  23. package/dist/dts/internal.d.mts +1 -1
  24. package/dist/dts/internal.d.ts +1 -1
  25. package/dist/dts/smart-wallets.d.mts +1 -1
  26. package/dist/dts/smart-wallets.d.ts +1 -1
  27. package/dist/dts/solana.d.mts +3 -3
  28. package/dist/dts/solana.d.ts +3 -3
  29. package/dist/dts/{types-C4KyGxEF.d.mts → types-CjeRoR7y.d.mts} +63 -1
  30. package/dist/dts/{types-C4KyGxEF.d.ts → types-CjeRoR7y.d.ts} +63 -1
  31. package/dist/dts/ui.d.mts +1 -1
  32. package/dist/dts/ui.d.ts +1 -1
  33. package/dist/esm/{EmbeddedWalletConnectingScreen-BehtOUIO.mjs → EmbeddedWalletConnectingScreen-_hPnhal6.mjs} +16 -16
  34. package/dist/esm/{SignRequestScreen-W1brL2hg.mjs → SignRequestScreen-COrPVTAi.mjs} +1 -1
  35. package/dist/esm/abstract-smart-wallets.mjs +1 -1
  36. package/dist/esm/events-context-BccykGqQ.mjs +1 -0
  37. package/dist/esm/extended-chains.mjs +1 -1
  38. package/dist/esm/index.mjs +2 -2
  39. package/dist/esm/internal.mjs +1 -1
  40. package/dist/esm/{smart-wallets-CZ7EzP9s.mjs → smart-wallets-6eFo3Ba2.mjs} +1 -1
  41. package/dist/esm/smart-wallets.mjs +1 -1
  42. package/dist/esm/solana.mjs +1 -1
  43. package/dist/esm/ui.mjs +1 -1
  44. package/dist/esm/{use-export-wallet-CPxLgKFx.mjs → use-export-wallet-PupiUzXB.mjs} +1 -1
  45. package/dist/esm/{useActiveWallet-Bw1ry9JQ.mjs → useActiveWallet-CPXrlSna.mjs} +1 -1
  46. package/dist/esm/{usePrivy-BJ3NMQui.mjs → usePrivy-CpgWT-Fo.mjs} +1 -1
  47. package/package.json +1 -1
  48. package/dist/esm/events-context-BKqrDYHW.mjs +0 -1
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("./events-context-Cgq8fGB0.js"),n=require("react/jsx-runtime"),t=require("@heroicons/react/24/outline/CheckCircleIcon"),a=require("react"),r=require("@privy-io/js-sdk-core"),i=require("./EmbeddedWalletConnectingScreen-i0UDHMDq.js"),s=require("./internal-context-CeWKmK5u.js"),o=require("./usePrivy-CLLJiDdU.js"),l=require("eventemitter3"),c=require("@scure/base"),d=require("./use-sign-with-user-signer-BtJVKMQr.js"),u=require("styled-components"),p=require("@solana/kit"),m=require("./SignRequestScreen-H5r467q6.js"),g=require("@solana-program/system"),f=require("@solana-program/token");function h(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var y=/*#__PURE__*/h(t),w=/*#__PURE__*/h(r),v=/*#__PURE__*/h(l);const A=["solana:mainnet","solana:devnet","solana:testnet"];function S({rows:e}){/*#__PURE__*/return n.jsx(i.Rows,{children:e.filter((e=>!!e)).map(((e,t)=>null!=e.value||e.isLoading?/*#__PURE__*/n.jsxs(i.Row,{children:[/*#__PURE__*/n.jsx(i.LabelSm,{children:e.label}),/*#__PURE__*/n.jsx(i.Value,{$isLoading:e.isLoading,children:e.value})]},t):null))})}function T(e,n){if(!Object.prototype.hasOwnProperty.call(e,n))throw TypeError("attempted to use private field on non-instance");return e}var I=0,b="__private_"+I+++"__implementation";class C extends v.default{setImplementation(e){T(this,b)[b]=e}async signMessage(e){return T(this,b)[b].signMessage(e)}async signAndSendTransaction(e){return T(this,b)[b].signAndSendTransaction(e)}async signTransaction(e){return T(this,b)[b].signTransaction(e)}constructor(e){super(),Object.defineProperty(this,b,{writable:!0,value:void 0}),T(this,b)[b]=e}}function E(e,n){if(!Object.prototype.hasOwnProperty.call(e,n))throw TypeError("attempted to use private field on non-instance");return e}var P=0;function x(e){return"__private_"+P+++"_"+e}var O=/*#__PURE__*/x("_address"),k=/*#__PURE__*/x("_publicKey"),F=/*#__PURE__*/x("_chains"),_=/*#__PURE__*/x("_features"),M=/*#__PURE__*/x("_label"),j=/*#__PURE__*/x("_icon");class W{get address(){return E(this,O)[O]}get publicKey(){return E(this,k)[k].slice()}get chains(){return E(this,F)[F].slice()}get features(){return E(this,_)[_].slice()}get label(){return E(this,M)[M]}get icon(){return E(this,j)[j]}constructor({address:e,publicKey:n,label:t,icon:a}){Object.defineProperty(this,O,{writable:!0,value:void 0}),Object.defineProperty(this,k,{writable:!0,value:void 0}),Object.defineProperty(this,F,{writable:!0,value:void 0}),Object.defineProperty(this,_,{writable:!0,value:void 0}),Object.defineProperty(this,M,{writable:!0,value:void 0}),Object.defineProperty(this,j,{writable:!0,value:void 0}),E(this,O)[O]=e,E(this,k)[k]=n,E(this,F)[F]=A,E(this,M)[M]=t,E(this,j)[j]=a,E(this,_)[_]=["solana:signAndSendTransaction","solana:signTransaction","solana:signMessage"],new.target===W&&Object.freeze(this)}}function U(e,n){if(!Object.prototype.hasOwnProperty.call(e,n))throw TypeError("attempted to use private field on non-instance");return e}var D=0;function L(e){return"__private_"+D+++"_"+e}var R=/*#__PURE__*/L("_listeners"),B=/*#__PURE__*/L("_version"),N=/*#__PURE__*/L("_name"),$=/*#__PURE__*/L("_icon"),V=/*#__PURE__*/L("_injection"),q=/*#__PURE__*/L("_isPrivyWallet"),G=/*#__PURE__*/L("_accounts"),J=/*#__PURE__*/L("_on"),H=/*#__PURE__*/L("_emit"),K=/*#__PURE__*/L("_off"),Y=/*#__PURE__*/L("_connected"),Q=/*#__PURE__*/L("_connect"),Z=/*#__PURE__*/L("_disconnect"),z=/*#__PURE__*/L("_signMessage"),X=/*#__PURE__*/L("_signAndSendTransaction"),ee=/*#__PURE__*/L("_signTransaction");function ne(e,...n){U(this,R)[R][e]?.forEach((e=>e.apply(null,n)))}function te(e,n){U(this,R)[R][e]=U(this,R)[R][e]?.filter((e=>n!==e))}const ae=/*#__PURE__*/u.styled.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)")),re=({instruction:e,fees:t,transactionInfo:a,solPrice:r,chain:s})=>/*#__PURE__*/n.jsxs(i.Rows,{children:[a?.action&&/*#__PURE__*/n.jsxs(i.Row,{children:[/*#__PURE__*/n.jsx(i.LabelSm,{children:"Action"}),/*#__PURE__*/n.jsx(i.Value,{children:a.action})]}),null!=e?.total&&/*#__PURE__*/n.jsxs(i.Row,{children:[/*#__PURE__*/n.jsx(i.LabelSm,{children:"Total"}),/*#__PURE__*/n.jsx(i.Value,{children:e.total})]}),!e?.total&&null!=e?.amount&&/*#__PURE__*/n.jsxs(i.Row,{children:[/*#__PURE__*/n.jsx(i.LabelSm,{children:"Total"}),/*#__PURE__*/n.jsx(i.Value,{children:/*#__PURE__*/n.jsx(i.SolanaPriceDisplay,{quantities:[e.amount,t],tokenPrice:r})})]}),/*#__PURE__*/n.jsxs(i.Row,{children:[/*#__PURE__*/n.jsx(i.LabelSm,{children:"Fees"}),/*#__PURE__*/n.jsx(i.Value,{children:/*#__PURE__*/n.jsx(i.SolanaPriceDisplay,{quantities:[t],tokenPrice:r})})]}),e?.to&&/*#__PURE__*/n.jsxs(i.Row,{children:[/*#__PURE__*/n.jsx(i.LabelSm,{children:"To"}),/*#__PURE__*/n.jsx(i.Value,{children:/*#__PURE__*/n.jsx(i.WalletLink,{walletAddress:e.to,chainId:s,chainType:"solana"})})]})]}),ie=({fees:e,onClose:t,receiptHeader:a,receiptDescription:r,transactionInfo:s,solPrice:o,signOnly:l,instruction:c,chain:d})=>/*#__PURE__*/n.jsxs(n.Fragment,{children:[/*#__PURE__*/n.jsx(i.ModalHeader,{onClose:t}),/*#__PURE__*/n.jsx(i.e$2,{style:{marginBottom:"16px"},children:/*#__PURE__*/n.jsxs("div",{children:[/*#__PURE__*/n.jsx(ae,{color:"var(--privy-color-success-light)"}),/*#__PURE__*/n.jsx(y.default,{height:38,width:38,strokeWidth:2,stroke:"var(--privy-color-success)"})]})}),/*#__PURE__*/n.jsx(i.CenteredScreenHeader,{title:a??`Transaction ${l?"signed":"complete"}!`,description:r??"You're all set."}),/*#__PURE__*/n.jsx(re,{solPrice:o,instruction:c,fees:e,transactionInfo:s,chain:d}),/*#__PURE__*/n.jsx(i.Grow,{}),/*#__PURE__*/n.jsx(se,{loading:!1,onClick:t,children:"Close"}),/*#__PURE__*/n.jsx(i.RefactorSpacerBottom,{}),/*#__PURE__*/n.jsx(i.BlobbyFooter,{})]});let se=/*#__PURE__*/u.styled(i.PrimaryButton).withConfig({displayName:"SubmitButton",componentId:"sc-3cb7ee42-0"})(["&&{margin-top:24px;}transition:color 350ms ease,background-color 350ms ease;"]);function oe(e){return new Uint8Array(p.getTransactionDecoder().decode(e).messageBytes)}async function le(e,n){try{return await e}catch{return n}}const ce=(...e)=>{if("undefined"==typeof Buffer)throw new s.PrivyClientError("Buffer is not defined.",void 0,s.PrivyErrorCode.BUFFER_NOT_DEFINED);return Buffer.from(...e)};function de(e){switch(e){case"solana:mainnet":return"mainnet-beta";case"solana:devnet":return"devnet";case"solana:testnet":return"testnet"}}async function ue({privyClient:e,chain:n,mint:t}){let a=i.DEFAULT_TOKENS_DATA[n];if(!a[t]){let r=await e.getSplTokenMetadata({mintAddress:t,cluster:de(n)});r&&(a[t]={address:t,symbol:r.symbol,decimals:r.decimals})}return a[t]}async function pe({solanaClient:e,tx:n}){let t=p.getBase64Decoder().decode(oe(n)),{value:a}=await e.rpc.getFeeForMessage(t).send();return a??0n}async function me({solanaClient:e,tx:n,replaceRecentBlockhash:t}){let{value:a}=await e.rpc.simulateTransaction(p.getBase64Decoder().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 me({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 ge({tx:e,solanaClient:n,privyClient:t,checkFunds:a}){let r=p.getCompiledTransactionMessageDecoder().decode(oe(e)),s=r.staticAccounts[0]??"",o=await pe({solanaClient:n,tx:e}),l=a?await le(me({solanaClient:n,tx:e})):void 0,c=l?.hasFunds??!0,d={},u=[],m=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 p.fetchAddressesForLookupTables(t,e.rpc),r=t.map(((e,t)=>[...n.addressTableLookups[t]?.writableIndexes.map((n=>{let r=a[e]?.[n];if(r)return{key:r,isWritable:!0,altIdx:t}}))??[],...n.addressTableLookups[t]?.readonlyIndexes.map((n=>{let r=a[e]?.[n];if(r)return{key:r,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,...r]}({solanaClient:n,message:r});for(let e of r.instructions){let a=r.staticAccounts[e.programAddressIndex]||"";if(a!==i.TOKEN_PROGRAM_ID&&a!==i.TOKEN_2022_PROGRAM_ID)if(a!==i.SYSTEM_PROGRAM_ID){if(a===i.ASSOCIATED_TOKEN_PROGRAM_ID){let n=await le(function(e,n,t){let[a,r,i,s]=e.accountIndices?.map((e=>n[e]))??[];return{type:"ata-creation",program:t,payer:a,ata:r,owner:i,mint:s}}(e,m,a));if(!n){u.push({type:"unknown",program:a,discriminator:e.data?.[0]});continue}if(u.push(n),n.ata&&n.owner&&n.mint){d[n.ata]={owner:n.owner,mint:n.mint};continue}}if(i.RAYDIUM_SWAP_PROGRAM_IDS.includes(a)){let r=await le(we(e,m,n,t,a));if(!r){u.push({type:"unknown",program:a,discriminator:e.data?.[0]});continue}u.push(r)}else if(i.JUPITER_SWAP_PROGRAM_IDS.includes(a)){let r=await le(ve(e,m,n,t,a));if(!r){u.push({type:"unknown",program:a,discriminator:e.data?.[0]});continue}u.push(r)}else u.push({type:"unknown",program:a,discriminator:e.data?.[0]})}else{let n=await le(ye(e,m));if(!n){u.push({type:"unknown",program:a,discriminator:e.data?.[0]});continue}u.push(n)}else{let r=await le(he(e,m,n,t,d,a));if(!r){u.push({type:"unknown",program:a,discriminator:e.data?.[0]});continue}u.push(r),"spl-transfer"===r.type&&(r.fromAta&&r.fromAccount&&r.token.address&&(d[r.fromAta]??={owner:r.fromAccount,mint:r.token.address}),r.toAta&&r.toAccount&&r.token.address&&(d[r.toAta]??={owner:r.toAccount,mint:r.token.address}))}}return{spender:s,fee:o,instructions:u,hasFunds:!!c}}function fe(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=ce(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 he(e,n,t,a,r,i){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:i,account:e,mint:n,owner:t}}if(3===s){let n,s,[l,c,d]=o,u="",p=c?r[c]:void 0;if(p)n=p.owner,u=p.mint;else if(c){let e=await t.rpc.getAccountInfo(c,{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&&l){let e=await t.rpc.getAccountInfo(l,{commitment:"confirmed",encoding:"jsonParsed"}).send(),n=e.value?.data;u=n?.parsed?.info?.mint??""}let m=await ue({privyClient:a,chain:t.chain,mint:u}),g=m?.symbol??"";return s??=m?.decimals??9,{type:"spl-transfer",program:i,fromAta:l,fromAccount:d,toAta:c,toAccount:n,value:fe(e.data,1),token:{symbol:g,decimals:s,address:u}}}if(9===s){let[e,n,t]=o;return{type:"spl-close-account",program:i,source:e,destination:n,owner:t}}if(17===s)return{type:"spl-sync-native",program:i};throw Error(`Token program instruction type ${s} not supported`)}async function ye(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:i.SYSTEM_PROGRAM_ID,account:n?.toString(),value:fe(e.data,4),withSeed:!1}}if(2===t){let[n,t]=a;return{type:"sol-transfer",program:i.SYSTEM_PROGRAM_ID,fromAccount:n,toAccount:t,token:{symbol:"SOL",decimals:9},value:fe(e.data,4),withSeed:!1}}if(3===t){let[,n]=a;return{type:"create-account",program:i.SYSTEM_PROGRAM_ID,account:n,withSeed:!0,value:fe(e.data.slice(e.data.length-32-8-8))}}if(11===t){let[n,t]=a;return{type:"sol-transfer",program:i.SYSTEM_PROGRAM_ID,fromAccount:n,toAccount:t,value:fe(e.data,4),token:{symbol:"SOL",decimals:9},withSeed:!0}}throw Error(`System program instruction type ${t} not supported`)}async function we(e,n,t,a,r){let i=e.accountIndices?.map((e=>n[e]))??[],s=e.data?.[0];if(143===s){let n=i[10],s=i[11];return{type:"raydium-swap-base-input",program:r,mintIn:n,mintOut:s,tokenIn:n?await ue({privyClient:a,chain:t.chain,mint:n}):void 0,tokenOut:s?await ue({privyClient:a,chain:t.chain,mint:s}):void 0,amountIn:fe(e.data,8),minimumAmountOut:fe(e.data,16)}}if(55===s){let n=i[10],s=i[11];return{type:"raydium-swap-base-output",program:r,mintIn:n,mintOut:s,tokenIn:n?await ue({privyClient:a,chain:t.chain,mint:n}):void 0,tokenOut:s?await ue({privyClient:a,chain:t.chain,mint:s}):void 0,maxAmountIn:fe(e.data,8),amountOut:fe(e.data,16)}}throw Error(`Raydium swap program instruction type ${s} not supported`)}async function ve(e,n,t,a,r){let i=e.data?.[0],s=e.accountIndices?.map((e=>n[e]))??[];if([208,51,239,151,123,43,237,92].includes(i)){let n=s[5],i=s[6];return{type:"jupiter-swap-exact-out-route",program:r,mintIn:n,mintOut:i,tokenIn:n?await ue({privyClient:a,chain:t.chain,mint:n}):void 0,tokenOut:i?await ue({privyClient:a,chain:t.chain,mint:i}):void 0,outAmount:fe(e.data,e.data.length-1-2-8-8),quotedInAmount:fe(e.data,e.data.length-1-2-8)}}if([176,209,105,168,154,125,69,62].includes(i)){let n=s[7],i=s[8];return{type:"jupiter-swap-exact-out-route",program:r,mintIn:n,mintOut:i,tokenIn:n?await ue({privyClient:a,chain:t.chain,mint:n}):void 0,tokenOut:i?await ue({privyClient:a,chain:t.chain,mint:i}):void 0,outAmount:fe(e.data,e.data.length-1-2-8-8),quotedInAmount:fe(e.data,e.data.length-1-2-8)}}if([193,32,155,51,65,214,156,129].includes(i)){let n=s[7],i=s[8];return{type:"jupiter-swap-shared-accounts-route",program:r,mintIn:n,mintOut:i,tokenIn:n?await ue({privyClient:a,chain:t.chain,mint:n}):void 0,tokenOut:i?await ue({privyClient:a,chain:t.chain,mint:i}):void 0,inAmount:fe(e.data,e.data.length-1-2-8-8),quotedOutAmount:fe(e.data,e.data.length-1-2-8)}}throw[62,198,214,193,213,159,108,210].includes(i)&&console.warn("Jupiter swap program instruction 'claim' not implemented"),[116,206,27,191,166,19,0,73].includes(i)&&console.warn("Jupiter swap program instruction 'claim_token' not implemented"),[26,74,236,151,104,64,183,249].includes(i)&&console.warn("Jupiter swap program instruction 'close_token' not implemented"),[229,194,212,172,8,10,134,147].includes(i)&&console.warn("Jupiter swap program instruction 'create_open_orders' not implemented"),[28,226,32,148,188,136,113,171].includes(i)&&console.warn("Jupiter swap program instruction 'create_program_open_orders' not implemented"),[232,242,197,253,240,143,129,52].includes(i)&&console.warn("Jupiter swap program instruction 'create_token_ledger' not implemented"),[147,241,123,100,244,132,174,118].includes(i)&&console.warn("Jupiter swap program instruction 'create_token_account' not implemented"),[229,23,203,151,122,227,173,42].includes(i)&&console.warn("Jupiter swap program instruction 'route' not implemented"),[150,86,71,116,167,93,14,104].includes(i)&&console.warn("Jupiter swap program instruction 'route_with_token_ledger' not implemented"),[228,85,185,112,78,79,77,2].includes(i)&&console.warn("Jupiter swap program instruction 'set_token_ledger' not implemented"),[230,121,143,80,119,159,106,170].includes(i)&&console.warn("Jupiter swap program instruction 'shared_accounts_route_with_token_ledger' not implemented"),Error(`Jupiter swap program instruction type ${i} not supported`)}async function Ae({rpcSubscriptions:e,signature:n,timeout:t}){let a=new AbortController,r=await e.signatureNotifications(n,{commitment:"confirmed"}).subscribe({abortSignal:a.signal}),i=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 r){if(a.abort(),n.value.err)return e(Error("Transaction confirmation failed"));e(void 0)}}))]);if(i instanceof Error)throw i}function Se({rpc:e,rpcSubscriptions:n,chain:t,blockExplorerUrl:a}){let r=function({rpc:e,rpcSubscriptions:n}){return async t=>new Promise((async(a,r)=>{try{let r=await e.sendTransaction(ce(t).toString("base64"),{preflightCommitment:"confirmed",encoding:"base64"}).send();await Ae({rpcSubscriptions:n,signature:r,timeout:1e4}),a({signature:new Uint8Array(p.getBase58Encoder().encode(r))})}catch(e){r(e)}}))}({rpc:e,rpcSubscriptions:n});return{rpc:e,rpcSubscriptions:n,chain:t,blockExplorerUrl:a,sendAndConfirmTransaction:r}}function Te(){let n=e.useAppConfig(),t=a.useMemo((()=>Object.fromEntries(["solana:mainnet","solana:devnet","solana:testnet"].map((e=>[e,n.solanaRpcs[e]?Se({chain:e,rpc:n.solanaRpcs[e].rpc,rpcSubscriptions:n.solanaRpcs[e].rpcSubscriptions,blockExplorerUrl:n.solanaRpcs[e].blockExplorerUrl??`https://explorer.solana.com?cluster=${e.replace("solana:","")}`}):null])))),[n.solanaRpcs]);return a.useCallback((e=>{if(!t[e])throw Error(`No RPC configuration found for chain ${e}`);return t[e]}),[t])}const Ie={component:()=>{let{data:t,onUserCloseViaDialogOrKeybindRef:o,setModalData:l,navigate:c}=i.usePrivyModal(),{client:d,closePrivyModal:u,walletProxy:m,showFiatPrices:g}=s.usePrivyInternal(),f=e.useAppConfig(),{user:h}=i.usePrivyContext(),y=Te()(t?.standardSignAndSendTransaction?.chain??"solana:mainnet"),[w,v]=a.useState(t?.standardSignAndSendTransaction?.transaction),[A,S]=a.useState(),[T,I]=a.useState(),[b,C]=a.useState({value:0n,isLoading:!1}),[E,P]=a.useState(!1),[x,O]=a.useState({}),[k,F]=a.useState(),_=t?.standardSignAndSendTransaction?.account,M=!!t?.standardSignAndSendTransaction?.signOnly,j=_?.imported?i.getImportedPrivySolanaWallets(h).find((e=>e.address===_.address)):i.getPrivyPrimaryWallet(h),{solPrice:W,isSolPriceLoading:U}=i.useGetSolPrice({enabled:g}),D=a.useMemo((()=>{if(!A)return;let e=A.spender,n=i.getNativeCurrencyFromLamports(A.fee),t=i.getNativeCurrencyFromLamports(b.value,3,!0),a=A.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))),s=a.at(0);if(!s||a.length>1)return{fee:n,spender:e,balance:t};if("sol-transfer"===s.type)return{fee:n,spender:e,balance:t,total:i.getNativeCurrencyFromLamports(s.value)};if("spl-transfer"===s.type)return{fee:n,spender:e,balance:t,total:`${r.formatTokenAmount({amount:s.value,decimals:s.token.decimals})} ${s.token.symbol}`};if("raydium-swap-base-input"===s.type&&s.tokenIn&&s.tokenOut){return{fee:n,spender:e,balance:t,swap:`${`${r.formatTokenAmount({amount:s.amountIn,decimals:s.tokenIn.decimals})} ${s.tokenIn.symbol}`} → ${`${r.formatTokenAmount({amount:s.minimumAmountOut,decimals:s.tokenOut.decimals})} ${s.tokenOut.symbol}`}`}}if("raydium-swap-base-output"===s.type&&s.tokenIn&&s.tokenOut){return{fee:n,spender:e,balance:t,swap:`${`${r.formatTokenAmount({amount:s.maxAmountIn,decimals:s.tokenIn.decimals})} ${s.tokenIn.symbol}`} → ${`${r.formatTokenAmount({amount:s.amountOut,decimals:s.tokenOut.decimals})} ${s.tokenOut.symbol}`}`}}if("jupiter-swap-shared-accounts-route"===s.type&&s.tokenIn&&s.tokenOut){return{fee:n,spender:e,balance:t,swap:`${`${r.formatTokenAmount({amount:s.inAmount,decimals:s.tokenIn.decimals})} ${s.tokenIn.symbol}`} → ${`${r.formatTokenAmount({amount:s.quotedOutAmount,decimals:s.tokenOut.decimals})} ${s.tokenOut.symbol}`}`}}if("jupiter-swap-exact-out-route"===s.type&&s.tokenIn&&s.tokenOut){return{fee:n,spender:e,balance:t,swap:`${`${r.formatTokenAmount({amount:s.quotedInAmount,decimals:s.tokenIn.decimals})} ${s.tokenIn.symbol}`} → ${`${r.formatTokenAmount({amount:s.outAmount,decimals:s.tokenOut.decimals})} ${s.tokenOut.symbol}`}`}}return{fee:n,spender:e,balance:t}}),[A,_?.address,b]),L=a.useMemo((()=>{let e;if(!A||!g||!W||U)return;function n(...e){return i.getFormattedUsdFromLamports(e.reduce(((e,n)=>e+n),0n),W??0)}_?.address===A.spender&&(e=n(A.fee));let t=n(b.value),a=A.instructions.filter((e=>"sol-transfer"===e.type||"spl-transfer"===e.type)).at(0);return!a||A.instructions.length>1?{fee:e,balance:t}:"sol-transfer"===a.type?{fee:e,balance:t,total:n(a.value,_?.address===A.spender?A.fee:0n)}:"spl-transfer"===a.type?{fee:e,balance:t,total:`${r.formatTokenAmount({amount:a.value,decimals:a.token.decimals})} ${a.token.symbol}`}:{fee:e,balance:t}}),[A,g,W,U,_?.address,b]);if(a.useEffect((()=>{!async function(){if(w&&d)try{I(void 0);let e=await ge({tx:w,solanaClient:y,privyClient:d,checkFunds:!M});S(e)}catch(e){console.error("Failed to prepare transaction",e),I(e)}}()}),[w,y,d,M]),a.useEffect((()=>{(async function(){if(!_)return;C({value:b.value,isLoading:!0});let{value:e}=await y.rpc.getBalance(_.address,{commitment:"confirmed"}).send();C({value:e??0n,isLoading:!1})})().catch(console.error)}),[A]),!w||!t?.standardSignAndSendTransaction||!_){let e=Error("Invalid transaction request");/*#__PURE__*/return n.jsx(i.ErrorScreenView,{error:e,allowlistConfig:f.allowlistConfig,onRetry:()=>{t?.standardSignAndSendTransaction?.onFailure(e),u({shouldCallAuthOnSuccess:!1})}})}let R=()=>{if(!E)return x.signature||x.signedTransaction?t?.standardSignAndSendTransaction?.onSuccess({signature:x.signature,signedTransaction:x.signedTransaction}):t?.standardSignAndSendTransaction?.onFailure(k??T??Error("User exited the modal before submitting the transaction")),u({shouldCallAuthOnSuccess:!1})};o.current=R;let B=t.standardSignAndSendTransaction?.uiOptions?.transactionInfo?.contractInfo?.imgUrl?/*#__PURE__*/n.jsx("img",{src:t.standardSignAndSendTransaction.uiOptions.transactionInfo.contractInfo.imgUrl,alt:t.standardSignAndSendTransaction.uiOptions.transactionInfo.contractInfo.imgAltText}):null,N=!!(t.funding&&t.funding.supportedOptions.length>0),$=!A?.hasFunds&&N;if(x.signature||x.signedTransaction){let e=A?.instructions.filter((e=>"sol-transfer"===e.type||"spl-transfer"===e.type)),a=1===e?.length?e?.at(0):void 0;/*#__PURE__*/return n.jsx(ie,{fees:x.fees??0n,onClose:R,transactionInfo:t.standardSignAndSendTransaction?.uiOptions.transactionInfo,solPrice:W,receiptHeader:t.standardSignAndSendTransaction?.uiOptions.successHeader,receiptDescription:t.standardSignAndSendTransaction?.uiOptions.successDescription,chain:y.chain,signOnly:M,instruction:"sol-transfer"===a?.type?{to:a.toAccount,amount:a.value}:{to:a?.toAccount||a?.toAta,total:D?.total}})}return k?/*#__PURE__*/n.jsx(i.TransactionErrorView,{transactionError:k,chainId:y.chain,onClose:R,chainType:"solana",onRetry:async()=>{F(void 0);let{value:e}=await y.rpc.getLatestBlockhash().send();v(function(e,n){return p.pipe(p.getCompiledTransactionMessageDecoder().decode(oe(e)),(e=>p.decompileTransactionMessage(e)),(e=>p.setTransactionMessageLifetimeUsingBlockhash(n,e)),(e=>p.compileTransaction(e)),(e=>new Uint8Array(p.getTransactionEncoder().encode(e))))}(w,e))}}):/*#__PURE__*/n.jsx(i.SendSolanaTransactionScreenView,{img:B,title:t.standardSignAndSendTransaction?.uiOptions?.transactionInfo?.title||"Confirm transaction",subtitle:t.standardSignAndSendTransaction?.uiOptions?.description||`${f.name} wants your permission to approve the following transaction.`,cta:$?"Add funds":t.standardSignAndSendTransaction?.uiOptions?.buttonText||"Approve",instructions:A?.instructions??[],network:"solana:mainnet"==y.chain?"Solana":y.chain.replace("solana:",""),blockExplorerUrl:y.blockExplorerUrl,total:g?L?.total:D?.total,fee:g?L?.fee:D?.fee,balance:g?L?.balance:D?.balance,swap:D?.swap,transactingWalletAddress:_.address,disabled:!A?.hasFunds&&!N,isSubmitting:E,isPreparing:!A||b.isLoading,isTokenPriceLoading:g&&U,isMissingFunds:!A?.hasFunds,submitError:k??void 0,isSponsored:!!t.standardSignAndSendTransaction?.isSponsored,parseError:T,onClick:$?async()=>{if(_){if(!N)throw Error("Funding wallet is not enabled");l({...t,funding:{...t.funding,methodScreen:i.FundingMethodSelectionScreen},solanaFundingData:t?.solanaFundingData}),c(i.FundingMethodSelectionScreen)}}:async()=>{try{if(P(!0),E||!_||!m||!h||!j)return;let e=await t.standardSignAndSendTransaction.onConfirm(w);if("signature"in e){let n=await async function({solanaClient:e,signature:n}){let t=p.getBase58Decoder().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:y,signature:e.signature});return void O({...e,fees:n?.fee})}O(e)}catch(e){console.warn({transaction:w,error:e}),F(e)}finally{P(!1)}},onClose:R})}};function be(e,n,t){let a=structuredClone(p.getTransactionDecoder().decode(e)),r=p.address(n);return r in a.signatures&&(a.signatures[r]=t),new Uint8Array(p.getTransactionEncoder().encode(a))}function Ce(){let{isHeadlessSigning:e,walletProxy:n,initializeWalletProxy:t,recoverEmbeddedWallet:a,openModal:l,privy:c,client:u}=s.usePrivyInternal(),{user:p}=o.usePrivy(),{setModalData:g}=i.usePrivyModal(),{signWithUserSigner:f}=d.useSignWithUserSigner();return{signMessage:({message:o,address:d,options:h})=>new Promise((async(y,w)=>{let v=i.getPrivyWalletWithAddress(p,d);if("privy"!==v?.walletClientType)return void w(new s.PrivyClientError("Wallet is not a Privy wallet",void 0,s.PrivyErrorCode.EMBEDDED_WALLET_NOT_FOUND));let{entropyId:A,entropyIdVerifier:S}=i.getEntropyDetailsForUser(p,v),T=i.getIsUnifiedWallet(v),I=ce(o).toString("base64");if(I.length<1)return void w(new s.PrivyClientError("Message must be a non-empty string",void 0,s.PrivyErrorCode.INVALID_MESSAGE));let b=async()=>{let e;if(!p)throw Error("User must be authenticated before signing with a Privy wallet");let i=await u.getAccessToken();if(!i)throw Error("User must be authenticated to use their embedded wallet.");let s=n??await t(15e3);if(!s)throw Error("Failed to initialize embedded wallet proxy.");if(!await a({address:v.address}))throw Error("Unable to connect to wallet");if(T){let n=await r.rpc(c,f,{chain_type:"solana",method:"signMessage",params:{message:I,encoding:"base64"},wallet_id:v.id});if(!n.data||!("signature"in n.data))throw Error("Failed to sign message");e=n.data.signature}else{let{response:n}=await s.rpc({accessToken:i,entropyId:A,entropyIdVerifier:S,chainType:"solana",hdWalletIndex:v.walletIndex??0,requesterAppId:h?.uiOptions?.requesterAppId,request:{method:"signMessage",params:{message:I}}});e=n.data.signature}return e};if(e({showWalletUIs:h?.uiOptions?.showWalletUIs}))try{let e=await b(),n=new Uint8Array(ce(e,"base64"));y({signature:n})}catch(e){w(e)}else g({signMessage:{method:"solana_signMessage",data:I,confirmAndSign:b,onSuccess:e=>{y({signature:new Uint8Array(ce(e,"base64"))})},onFailure:e=>{w(e)},uiOptions:h?.uiOptions??{}},connectWallet:{recoveryMethod:v.recoveryMethod,connectingWalletAddress:v.address,entropyId:A,entropyIdVerifier:S,isUnifiedWallet:T,onCompleteNavigateTo:m.SignRequestScreen,onFailure:e=>{w(new s.PrivyClientError("Failed to connect to wallet",e,s.PrivyErrorCode.UNKNOWN_CONNECT_WALLET_ERROR))}}}),l(i.EmbeddedWalletConnectingScreen)}))}}function Ee(){let{isHeadlessSigning:e,openModal:n}=s.usePrivyInternal(),{setModalData:t}=i.usePrivyModal(),{signMessage:a}=Ce(),{user:r}=o.usePrivy();return{signTransaction:async({transaction:o,options:l,chain:c="solana:mainnet",address:d})=>{async function u(e){let{signature:n}=await a({message:oe(e),address:d,options:{...l,uiOptions:{...l?.uiOptions,showWalletUIs:!1}}});return{signedTransaction:be(e,d,n)}}return e({showWalletUIs:l?.uiOptions?.showWalletUIs})?u(o):new Promise((async(e,a)=>{let p=i.getPrivyWalletWithAddress(r,d);if("privy"!==p?.walletClientType)return void a(new s.PrivyClientError("Wallet is not a Privy wallet",void 0,s.PrivyErrorCode.EMBEDDED_WALLET_NOT_FOUND));let{entropyId:m,entropyIdVerifier:g}=i.getEntropyDetailsForUser(r,p),f=i.getIsUnifiedWallet(p);function h(e){return n=>{n instanceof s.PrivyClientError?a(n):a(new s.PrivyClientError("Failed to connect to wallet",n,e))}}let y={account:p,transaction:o,chain:c,signOnly:!0,uiOptions:l?.uiOptions||{},onConfirm:u,onSuccess:e,onFailure:h(s.PrivyErrorCode.TRANSACTION_FAILURE)};t({connectWallet:{recoveryMethod:p.recoveryMethod,connectingWalletAddress:p.address,entropyId:m,entropyIdVerifier:g,isUnifiedWallet:f,onCompleteNavigateTo:Ie,onFailure:h(s.PrivyErrorCode.UNKNOWN_CONNECT_WALLET_ERROR)},standardSignAndSendTransaction:y}),n(i.EmbeddedWalletConnectingScreen)}))}}}let Pe=new C({signTransaction:s.notImplementedWithMessage("signTransaction was not injected"),signAndSendTransaction:s.notImplementedWithMessage("signAndSendTransaction was not injected"),signMessage:s.notImplementedWithMessage("signMessage was not injected")}),xe=new class{get version(){return U(this,B)[B]}get name(){return U(this,N)[N]}get icon(){return U(this,$)[$]}get chains(){return A.slice()}get features(){return{"standard:connect":{version:"1.0.0",connect:U(this,Q)[Q]},"standard:disconnect":{version:"1.0.0",disconnect:U(this,Z)[Z]},"standard:events":{version:"1.0.0",on:U(this,J)[J]},"solana:signAndSendTransaction":{version:"1.0.0",supportedTransactionVersions:["legacy",0],signAndSendTransaction:U(this,X)[X]},"solana:signTransaction":{version:"1.0.0",supportedTransactionVersions:["legacy",0],signTransaction:U(this,ee)[ee]},"solana:signMessage":{version:"1.0.0",signMessage:U(this,z)[z]},"privy:":{privy:{signMessage:U(this,V)[V].signMessage,signTransaction:U(this,V)[V].signTransaction,signAndSendTransaction:U(this,V)[V].signAndSendTransaction}}}}get accounts(){return U(this,G)[G].slice()}get isPrivyWallet(){return U(this,q)[q]}constructor({name:e,icon:n,version:t,injection:a,wallets:r}){Object.defineProperty(this,H,{value:ne}),Object.defineProperty(this,K,{value:te}),Object.defineProperty(this,R,{writable:!0,value:void 0}),Object.defineProperty(this,B,{writable:!0,value:void 0}),Object.defineProperty(this,N,{writable:!0,value:void 0}),Object.defineProperty(this,$,{writable:!0,value:void 0}),Object.defineProperty(this,V,{writable:!0,value:void 0}),Object.defineProperty(this,q,{writable:!0,value:void 0}),Object.defineProperty(this,G,{writable:!0,value:void 0}),Object.defineProperty(this,J,{writable:!0,value:void 0}),Object.defineProperty(this,Y,{writable:!0,value:void 0}),Object.defineProperty(this,Q,{writable:!0,value:void 0}),Object.defineProperty(this,Z,{writable:!0,value:void 0}),Object.defineProperty(this,z,{writable:!0,value:void 0}),Object.defineProperty(this,X,{writable:!0,value:void 0}),Object.defineProperty(this,ee,{writable:!0,value:void 0}),U(this,R)[R]={},U(this,J)[J]=(e,n)=>(U(this,R)[R][e]?.push(n)||(U(this,R)[R][e]=[n]),()=>U(this,K)[K](e,n)),U(this,Y)[Y]=e=>{null!=e&&(U(this,G)[G]=e.map((({address:e})=>new W({address:e,publicKey:c.base58.decode(e)})))),U(this,H)[H]("change",{accounts:this.accounts})},U(this,Q)[Q]=async()=>(U(this,H)[H]("change",{accounts:this.accounts}),{accounts:this.accounts}),U(this,Z)[Z]=async()=>{U(this,H)[H]("change",{accounts:this.accounts})},U(this,z)[z]=async(...e)=>{let n=[];for(let{account:t,...a}of e){let{signature:e}=await U(this,V)[V].signMessage({...a,address:t.address});n.push({signedMessage:a.message,signature:e})}return n},U(this,X)[X]=async(...e)=>{let n=[];for(let t of e){let{signature:e}=await U(this,V)[V].signAndSendTransaction({...t,transaction:t.transaction,address:t.account.address,chain:t.chain||"solana:mainnet",options:t.options});n.push({signature:e})}return n},U(this,ee)[ee]=async(...e)=>{let n=[];for(let{transaction:t,account:a,options:r,chain:i}of e){let{signedTransaction:e}=await U(this,V)[V].signTransaction({transaction:t,address:a.address,chain:i||"solana:mainnet",options:r});n.push({signedTransaction:e})}return n},U(this,N)[N]=e,U(this,$)[$]=n,U(this,B)[B]=t,U(this,V)[V]=a,U(this,G)[G]=[],U(this,q)[q]=!0,a.on("accountChanged",U(this,Y)[Y],this),U(this,Y)[Y](r)}}({name:"Privy",version:"1.0.0",icon:"data:image/png;base64,AAABAAEAFBQAAAAAIABlAQAAFgAAAIlQTkcNChoKAAAADUlIRFIAAAAUAAAAFAgGAAAAjYkdDQAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAQVJREFUeJxiYMANZIC4E4ivAPFPIP4FxDeAuB+IlfDowwBMQFwJxF+B+D8O/AOI66Bq8QJGIF6ExyB0vAqImfEZmEeCYTDcgMswPiB+T4aB34FYApuBsWQYBsP52AycToGBK7EZuJECAw9jM3AVBQbuwWZgIwUGTsZmoDkFBnpiMxAEjpJh2FV8iVsbiD+TYBgoDVrgMgwGnID4HRGGgTKBGyHDYEAaiBdCSxh0g/5AU4Q8sYYhAzEgjoGmABBOgFo2eACowFABYn0oVgViAVINkQTiZUD8DIj/ATF6GILEXgLxCiCWIsZAbiAuBeKtQHwHiEHJ6C8UfwHie0C8E4jLoWpRAAAAAP//rcbhsQAAAAZJREFUAwBYFs3VKJ0cuQAAAABJRU5ErkJggg==",wallets:[],injection:Pe});function Oe(){let{ready:n}=i.useWallets(),{user:t}=o.usePrivy(),{signMessage:l}=Ce(),{signTransaction:u}=Ee(),{signAndSendTransaction:p}=function(){let n=e.useAppConfig(),{isHeadlessSigning:t,openModal:a}=s.usePrivyInternal(),{setModalData:l}=i.usePrivyModal(),{signTransaction:u}=Ee(),p=Te(),{user:m}=o.usePrivy(),{signWithUserSigner:g}=d.useSignWithUserSigner();return{signAndSendTransaction:async({transaction:e,address:d,chain:f="solana:mainnet",options:h})=>{async function y(e){if(h?.sponsor)return await S(e);let{signedTransaction:n}=await u({transaction:e,address:d,chain:f,options:{...h,uiOptions:{...h?.uiOptions,showWalletUIs:!1}}}),{signature:t}=await p(f).sendAndConfirmTransaction(n);return{signature:t}}if(t({showWalletUIs:h?.uiOptions?.showWalletUIs}))return y(e);let v=i.getPrivyWalletWithAddress(m,d);if("privy"!==v?.walletClientType)throw new s.PrivyClientError("Wallet is not a Privy wallet",void 0,s.PrivyErrorCode.EMBEDDED_WALLET_NOT_FOUND);let A=i.getIsUnifiedWallet(v),S=async e=>{if(!A)throw new s.PrivyClientError("Sponsoring transactions is only supported for wallets on the TEE stack",s.PrivyErrorCode.INVALID_DATA);let t=new w.default({appId:n.id,clientId:n.appClientId,storage:i.f}),a=await r.rpc(t,g,{chain_type:"solana",method:"signAndSendTransaction",sponsor:!0,params:{transaction:Buffer.from(e).toString("base64"),encoding:"base64"},caip2:`solana:${(await p(f).rpc.getGenesisHash().send()).substring(0,32)}`,wallet_id:v.id});if(a.data&&"hash"in a.data)return{signature:c.base58.decode(a.data.hash)};throw Error("Failed to sign and send transaction")};return new Promise((async(t,r)=>{let c,u,{entropyId:p,entropyIdVerifier:g}=i.getEntropyDetailsForUser(m,v);function w(e){return n=>{n instanceof s.PrivyClientError?r(n):r(new s.PrivyClientError("Failed to connect to wallet",n,e))}}let S={account:v,transaction:e,chain:f,signOnly:!1,uiOptions:h?.uiOptions||{},onConfirm:y,onSuccess:t,onFailure:w(s.PrivyErrorCode.TRANSACTION_FAILURE),isSponsored:!!h?.sponsor},T={recoveryMethod:v.recoveryMethod,connectingWalletAddress:v.address,entropyId:p,entropyIdVerifier:g,isUnifiedWallet:A,onCompleteNavigateTo:Ie,onFailure:w(s.PrivyErrorCode.UNKNOWN_CONNECT_WALLET_ERROR)};n.fundingConfig&&(c=o.prepareSolanaFundingModalData({address:d,appConfig:n,methodScreen:i.FundingMethodSelectionScreen,fundWalletConfig:{...h,asset:"native-currency",chain:f},externalSolanaFundingScreen:De}),u={amount:n.fundingConfig.defaultRecommendedAmount,asset:"SOL",chain:f,destinationAddress:d,afterSuccessScreen:Ie,sourceWalletData:void 0}),l({connectWallet:T,standardSignAndSendTransaction:S,funding:c,solanaFundingData:u}),a(i.EmbeddedWalletConnectingScreen)}))}}}(),m=a.useMemo((()=>{let e=[...i.getPrivySolanaHDWallets(t).sort(((e,n)=>(e.walletIndex??0)-(n.walletIndex??0)))],n=i.getImportedPrivySolanaWallets(t);return n.length?[...e,...n]:e}),[t]),g=a.useMemo((()=>({signMessage:async({message:e,address:n,options:t})=>await l({message:e,address:n,options:t}),signTransaction:async({transaction:e,address:n,chain:t,options:a})=>await u({transaction:e,address:n,chain:t,options:a}),async signAndSendTransaction({transaction:e,address:n,chain:t,options:a}){let{signature:r}=await p({transaction:e,address:n,chain:t,options:a});return{signature:r}}})),[l,u,p]);return a.useEffect((()=>{Pe?.setImplementation(g)}),[g]),a.useEffect((()=>{var e;!n||(e=xe.accounts).length===m.length&&e.every(((e,n)=>e.address===m[n]?.address))||Pe?.emit("accountChanged",m)}),[n,m]),{ready:n,wallet:xe}}function ke(){let{client:e}=s.usePrivyInternal(),{ready:n,wallet:t}=Oe(),[r,i]=a.useState([]),[o,l]=a.useState([]);return a.useEffect((()=>{let e=[t,...r.filter((e=>"solana"===e.chainType&&!!e.wallet.features)).map((e=>e.wallet))];l(e);let n=e.map((n=>n.features["standard:events"]?.on("change",(()=>{l([...e])}))));return()=>{n.forEach((e=>e?.()))}}),[r]),a.useEffect((()=>{i(e.connectors?.walletConnectors.filter((e=>"solana"===e.chainType))??[]);let n=()=>{i(e.connectors?.walletConnectors.filter((e=>"solana"===e.chainType))??[])};return e.connectors?.on("connectorInitialized",n),()=>{e.connectors?.off("connectorInitialized",n)}}),[n,e.connectors]),{ready:n,wallets:o}}function Fe(){let{ready:e,wallets:n}=ke();return{ready:e,wallets:a.useMemo((()=>n.flatMap((e=>e.accounts.map((n=>new r.ConnectedStandardSolanaWallet({wallet:e,account:n})))))),[n])}}function _e(e){return p.getBase58Decoder().decode(e)}function Me(e){return BigInt(Math.floor(1e9*parseFloat(e)))}function je(e){return+We.format(parseFloat(e.toString())/1e9)}let We=Intl.NumberFormat(void 0,{maximumFractionDigits:8});async function Ue({tx:e,solanaClient:n,amount:t,asset:a,tokenPrice:r}){if(!e)return null;if("SOL"===a&&r){let a=Me(t),s=i.getFormattedUsdFromLamports(a,r),o=await pe({solanaClient:n,tx:e});return{amountInUsd:s,feeInUsd:r?i.getFormattedUsdFromLamports(o,r):void 0,totalInUsd:i.getFormattedUsdFromLamports(a+o,r)}}if("USDC"===a&&r){let a="$"+t,s=await pe({solanaClient:n,tx:e}),o=function(e,n){let t=parseFloat(e.toString())/i.LAMPORTS_PER_SOL*n;return t<.01?0:t}(s,r);return{amountInUsd:a,feeInUsd:i.getFormattedUsdFromLamports(s,r),totalInUsd:"$"+(parseFloat(t)+o).toFixed(2)}}if("SOL"===a){let a=Me(t),r=await pe({solanaClient:n,tx:e});return{amountInSol:t+" SOL",feeInSol:je(r)+" SOL",totalInSol:je(a+r)+" SOL"}}return{amountInUsdc:t+" USDC",feeInSol:je(await pe({solanaClient:n,tx:e}))+" SOL"}}const De={component:function(){let t=e.useAppConfig(),{closePrivyModal:o,createAnalyticsEvent:l}=s.usePrivyInternal(),{data:c,setModalData:d,navigate:u}=i.usePrivyModal(),{wallets:m}=Fe(),[h,w]=a.useState("preparing"),[v,A]=a.useState(),[T,I]=a.useState(),[b,C]=a.useState();if(!c?.solanaFundingData)throw Error("Funding config is missing");if(!c.solanaFundingData.sourceWalletData)throw Error("Funding config is missing source wallet data");let{amount:E,asset:P,chain:x,sourceWalletData:O,destinationAddress:k,afterSuccessScreen:F}=c.solanaFundingData,_=m.find((e=>e.address===O.address&&i.toSolanaWalletClientType(O.walletClientType)===i.toSolanaWalletClientType(e.standardWallet.name))),M=Te()(x),{tokenPrice:j,isTokenPriceLoading:W}=i.useGetTokenPrice("solana");return a.useEffect((()=>{if("preparing"!==h||W||!_)return;let e="SOL"===P?Me(E):function(e){return BigInt(Math.floor(1e6*parseFloat(e)))}(E);I({amount:("SOL"===P&&j?i.getFormattedUsdFromLamports(e,j):E)??E}),("SOL"===P?async function({solanaClient:e,source:n,destination:t,amountInLamports:a}){let{value:r}=await e.rpc.getLatestBlockhash().send(),i={address:n},s=p.pipe(p.createTransactionMessage({version:0}),(e=>p.setTransactionMessageFeePayerSigner(i,e)),(e=>p.setTransactionMessageLifetimeUsingBlockhash(r,e)),(e=>p.appendTransactionMessageInstruction(g.getTransferSolInstruction({amount:a,source:i,destination:t}),e)),(e=>p.compileTransaction(e)));return new Uint8Array(p.getTransactionEncoder().encode(s))}({solanaClient:M,source:_.address,destination:k,amountInLamports:e}):async function({solanaClient:e,source:n,destination:t,amountInBaseUnits:a}){let r=i.getUsdcMintAddress(e.chain),{value:s}=await e.rpc.getLatestBlockhash().send(),o={address:n},[l]=await f.findAssociatedTokenPda({mint:r,owner:n,tokenProgram:i.TOKEN_PROGRAM_ID}),[c]=await f.findAssociatedTokenPda({mint:r,owner:t,tokenProgram:i.TOKEN_PROGRAM_ID}),[d,u]=await Promise.all([e.rpc.getAccountInfo(l,{commitment:"confirmed",encoding:"jsonParsed"}).send().catch((()=>null)),e.rpc.getAccountInfo(c,{commitment:"confirmed",encoding:"jsonParsed"}).send().catch((()=>null))]);if(!d?.value)throw Error(`Source token account does not exist for address: ${n}`);let m=f.getCreateAssociatedTokenIdempotentInstruction({payer:o,ata:c,owner:t,mint:r}),g=p.pipe(p.createTransactionMessage({version:0}),(e=>p.setTransactionMessageFeePayerSigner(o,e)),(e=>p.setTransactionMessageLifetimeUsingBlockhash(s,e)),(e=>u?.value?e:p.appendTransactionMessageInstruction(m,e)),(e=>p.appendTransactionMessageInstruction(f.getTransferInstruction({source:l,destination:c,authority:o,amount:a}),e)),(e=>p.compileTransaction(e)));return new Uint8Array(p.getTransactionEncoder().encode(g))}({solanaClient:M,source:_.address,destination:k,amountInBaseUnits:e})).then(A).catch((e=>{w("error"),C(e)}))}),[h,E,P,x,_,k,W,j]),a.useEffect((()=>{"preparing"===h&&v&&Ue({tx:v,solanaClient:M,amount:E,asset:P,tokenPrice:j}).then((e=>{w("loaded"),I({amount:e?.amountInUsd??e?.amountInUsdc??e?.amountInSol??E,fee:e?.feeInUsd??e?.feeInSol,total:e?.totalInUsd??e?.totalInSol})})).catch((e=>{w("error"),C(e)}))}),[v,E,P,h,j]),a.useEffect((()=>{"error"===h&&b&&(d({errorModalData:{error:b,previousScreen:De},solanaFundingData:c.solanaFundingData}),u(i.ErrorScreen,!1))}),[h,u]),a.useEffect((()=>{if("success"!==h)return;let n=setTimeout(F?()=>u(F):o,e.DEFAULT_SUCCESS_SCREEN_EXTRA_LONG_DURATION_MS);return()=>clearTimeout(n)}),[h]),"success"===h?/*#__PURE__*/n.jsxs(n.Fragment,{children:[/*#__PURE__*/n.jsx(i.i,{}),/*#__PURE__*/n.jsx(i.RefactorSpacerTop,{}),/*#__PURE__*/n.jsxs(i.CenteredItemWithGap,{children:[/*#__PURE__*/n.jsx(y.default,{color:"var(--privy-color-success)",width:"64px",height:"64px"}),/*#__PURE__*/n.jsx(i.CenteredScreenHeader,{title:"Success!",description:`You’ve successfully added ${E} ${P} to your ${t.name} wallet. It may take a minute before the funds are available to use.`})]}),/*#__PURE__*/n.jsx(i.RefactorSpacerBottom,{}),/*#__PURE__*/n.jsx(i.BlobbyFooter,{})]}):"preparing"===h||"loaded"===h||"sending"===h?/*#__PURE__*/n.jsxs(n.Fragment,{children:[/*#__PURE__*/n.jsx(i.i,{}),/*#__PURE__*/n.jsx(i.CenteredItem,{style:{marginTop:"16px"},children:/*#__PURE__*/n.jsx(i.InjectedWalletIcon,{icon:_?.standardWallet.icon,name:_?.standardWallet.name})}),/*#__PURE__*/n.jsx(i.CenteredScreenHeader,{style:{marginTop:"8px",marginBottom:"12px"},title:"sending"===h&&_?`Confirming with ${_.standardWallet.name}`:"Confirm transaction"}),/*#__PURE__*/n.jsx(S,{rows:[{label:"Source",value:r.formatWalletAddress(O.address)},{label:"Destination",value:r.formatWalletAddress(k)},{label:"Network",value:i.getChainName(x)},{label:"Amount",value:T?.amount,isLoading:"preparing"===h},{label:"Estimated fee",value:T?.fee,isLoading:"preparing"===h},{label:"Total",value:T?.total,isLoading:"preparing"===h}]}),/*#__PURE__*/n.jsx(i.PrimaryButton,{style:{marginTop:"1rem"},loading:"preparing"===h||"sending"===h,onClick:function(){"loaded"===h&&v&&_&&(w("sending"),async function({transaction:e,chain:n,sourceWallet:t,solanaClient:a}){let{hasFunds:i}=await me({solanaClient:a,tx:e});if(!i)throw new s.PrivyClientError(`Wallet ${r.formatWalletAddress(t.address)} does not have enough funds.`,void 0,s.PrivyErrorCode.INSUFFICIENT_BALANCE);let o=_e((await t.signAndSendTransaction({transaction:e,chain:n}).catch((e=>{throw new s.PrivyClientError("Transaction was rejected by the user",e,s.PrivyErrorCode.TRANSACTION_FAILURE)}))).signature);return await Ae({rpcSubscriptions:a.rpcSubscriptions,signature:o,timeout:2e4}),o}({solanaClient:M,transaction:v,chain:x,sourceWallet:_}).then((e=>{w("success"),l({eventName:i.ON_RAMP_COMPLETE_ANALYTICS_EVENT,payload:{provider:"external",status:"success",txHash:e,address:_.address,value:E,chainType:"solana",clusterName:x,token:P,destinationAddress:k,destinationValue:E,destinationChainType:"solana",destinationClusterName:x,destinationToken:P}})})).catch((e=>{w("error"),C(e)})))},children:"Confirm"}),/*#__PURE__*/n.jsx(i.BlobbyFooter,{})]}):
1
+ "use strict";var e=require("./events-context-PZ26oAHB.js"),n=require("react/jsx-runtime"),t=require("@heroicons/react/24/outline/CheckCircleIcon"),a=require("react"),r=require("@privy-io/js-sdk-core"),i=require("./EmbeddedWalletConnectingScreen-jOWUCqZg.js"),s=require("./internal-context-CeWKmK5u.js"),o=require("./usePrivy-8MnUTXRB.js"),l=require("eventemitter3"),c=require("@scure/base"),d=require("./use-sign-with-user-signer-BtJVKMQr.js"),u=require("styled-components"),p=require("@solana/kit"),m=require("./SignRequestScreen-CC8faRpv.js"),g=require("@solana-program/system"),f=require("@solana-program/token");function h(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var y=/*#__PURE__*/h(t),w=/*#__PURE__*/h(r),v=/*#__PURE__*/h(l);const A=["solana:mainnet","solana:devnet","solana:testnet"];function S({rows:e}){/*#__PURE__*/return n.jsx(i.Rows,{children:e.filter((e=>!!e)).map(((e,t)=>null!=e.value||e.isLoading?/*#__PURE__*/n.jsxs(i.Row,{children:[/*#__PURE__*/n.jsx(i.LabelSm,{children:e.label}),/*#__PURE__*/n.jsx(i.Value,{$isLoading:e.isLoading,children:e.value})]},t):null))})}function T(e,n){if(!Object.prototype.hasOwnProperty.call(e,n))throw TypeError("attempted to use private field on non-instance");return e}var I=0,b="__private_"+I+++"__implementation";class C extends v.default{setImplementation(e){T(this,b)[b]=e}async signMessage(e){return T(this,b)[b].signMessage(e)}async signAndSendTransaction(e){return T(this,b)[b].signAndSendTransaction(e)}async signTransaction(e){return T(this,b)[b].signTransaction(e)}constructor(e){super(),Object.defineProperty(this,b,{writable:!0,value:void 0}),T(this,b)[b]=e}}function E(e,n){if(!Object.prototype.hasOwnProperty.call(e,n))throw TypeError("attempted to use private field on non-instance");return e}var P=0;function x(e){return"__private_"+P+++"_"+e}var O=/*#__PURE__*/x("_address"),k=/*#__PURE__*/x("_publicKey"),F=/*#__PURE__*/x("_chains"),_=/*#__PURE__*/x("_features"),M=/*#__PURE__*/x("_label"),j=/*#__PURE__*/x("_icon");class W{get address(){return E(this,O)[O]}get publicKey(){return E(this,k)[k].slice()}get chains(){return E(this,F)[F].slice()}get features(){return E(this,_)[_].slice()}get label(){return E(this,M)[M]}get icon(){return E(this,j)[j]}constructor({address:e,publicKey:n,label:t,icon:a}){Object.defineProperty(this,O,{writable:!0,value:void 0}),Object.defineProperty(this,k,{writable:!0,value:void 0}),Object.defineProperty(this,F,{writable:!0,value:void 0}),Object.defineProperty(this,_,{writable:!0,value:void 0}),Object.defineProperty(this,M,{writable:!0,value:void 0}),Object.defineProperty(this,j,{writable:!0,value:void 0}),E(this,O)[O]=e,E(this,k)[k]=n,E(this,F)[F]=A,E(this,M)[M]=t,E(this,j)[j]=a,E(this,_)[_]=["solana:signAndSendTransaction","solana:signTransaction","solana:signMessage"],new.target===W&&Object.freeze(this)}}function U(e,n){if(!Object.prototype.hasOwnProperty.call(e,n))throw TypeError("attempted to use private field on non-instance");return e}var D=0;function L(e){return"__private_"+D+++"_"+e}var R=/*#__PURE__*/L("_listeners"),B=/*#__PURE__*/L("_version"),N=/*#__PURE__*/L("_name"),$=/*#__PURE__*/L("_icon"),V=/*#__PURE__*/L("_injection"),q=/*#__PURE__*/L("_isPrivyWallet"),G=/*#__PURE__*/L("_accounts"),J=/*#__PURE__*/L("_on"),H=/*#__PURE__*/L("_emit"),K=/*#__PURE__*/L("_off"),Y=/*#__PURE__*/L("_connected"),Q=/*#__PURE__*/L("_connect"),Z=/*#__PURE__*/L("_disconnect"),z=/*#__PURE__*/L("_signMessage"),X=/*#__PURE__*/L("_signAndSendTransaction"),ee=/*#__PURE__*/L("_signTransaction");function ne(e,...n){U(this,R)[R][e]?.forEach((e=>e.apply(null,n)))}function te(e,n){U(this,R)[R][e]=U(this,R)[R][e]?.filter((e=>n!==e))}const ae=/*#__PURE__*/u.styled.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)")),re=({instruction:e,fees:t,transactionInfo:a,solPrice:r,chain:s})=>/*#__PURE__*/n.jsxs(i.Rows,{children:[a?.action&&/*#__PURE__*/n.jsxs(i.Row,{children:[/*#__PURE__*/n.jsx(i.LabelSm,{children:"Action"}),/*#__PURE__*/n.jsx(i.Value,{children:a.action})]}),null!=e?.total&&/*#__PURE__*/n.jsxs(i.Row,{children:[/*#__PURE__*/n.jsx(i.LabelSm,{children:"Total"}),/*#__PURE__*/n.jsx(i.Value,{children:e.total})]}),!e?.total&&null!=e?.amount&&/*#__PURE__*/n.jsxs(i.Row,{children:[/*#__PURE__*/n.jsx(i.LabelSm,{children:"Total"}),/*#__PURE__*/n.jsx(i.Value,{children:/*#__PURE__*/n.jsx(i.SolanaPriceDisplay,{quantities:[e.amount,t],tokenPrice:r})})]}),/*#__PURE__*/n.jsxs(i.Row,{children:[/*#__PURE__*/n.jsx(i.LabelSm,{children:"Fees"}),/*#__PURE__*/n.jsx(i.Value,{children:/*#__PURE__*/n.jsx(i.SolanaPriceDisplay,{quantities:[t],tokenPrice:r})})]}),e?.to&&/*#__PURE__*/n.jsxs(i.Row,{children:[/*#__PURE__*/n.jsx(i.LabelSm,{children:"To"}),/*#__PURE__*/n.jsx(i.Value,{children:/*#__PURE__*/n.jsx(i.WalletLink,{walletAddress:e.to,chainId:s,chainType:"solana"})})]})]}),ie=({fees:e,onClose:t,receiptHeader:a,receiptDescription:r,transactionInfo:s,solPrice:o,signOnly:l,instruction:c,chain:d})=>/*#__PURE__*/n.jsxs(n.Fragment,{children:[/*#__PURE__*/n.jsx(i.ModalHeader,{onClose:t}),/*#__PURE__*/n.jsx(i.e$2,{style:{marginBottom:"16px"},children:/*#__PURE__*/n.jsxs("div",{children:[/*#__PURE__*/n.jsx(ae,{color:"var(--privy-color-success-light)"}),/*#__PURE__*/n.jsx(y.default,{height:38,width:38,strokeWidth:2,stroke:"var(--privy-color-success)"})]})}),/*#__PURE__*/n.jsx(i.CenteredScreenHeader,{title:a??`Transaction ${l?"signed":"complete"}!`,description:r??"You're all set."}),/*#__PURE__*/n.jsx(re,{solPrice:o,instruction:c,fees:e,transactionInfo:s,chain:d}),/*#__PURE__*/n.jsx(i.Grow,{}),/*#__PURE__*/n.jsx(se,{loading:!1,onClick:t,children:"Close"}),/*#__PURE__*/n.jsx(i.RefactorSpacerBottom,{}),/*#__PURE__*/n.jsx(i.BlobbyFooter,{})]});let se=/*#__PURE__*/u.styled(i.PrimaryButton).withConfig({displayName:"SubmitButton",componentId:"sc-3cb7ee42-0"})(["&&{margin-top:24px;}transition:color 350ms ease,background-color 350ms ease;"]);function oe(e){return new Uint8Array(p.getTransactionDecoder().decode(e).messageBytes)}async function le(e,n){try{return await e}catch{return n}}const ce=(...e)=>{if("undefined"==typeof Buffer)throw new s.PrivyClientError("Buffer is not defined.",void 0,s.PrivyErrorCode.BUFFER_NOT_DEFINED);return Buffer.from(...e)};function de(e){switch(e){case"solana:mainnet":return"mainnet-beta";case"solana:devnet":return"devnet";case"solana:testnet":return"testnet"}}async function ue({privyClient:e,chain:n,mint:t}){let a=i.DEFAULT_TOKENS_DATA[n];if(!a[t]){let r=await e.getSplTokenMetadata({mintAddress:t,cluster:de(n)});r&&(a[t]={address:t,symbol:r.symbol,decimals:r.decimals})}return a[t]}async function pe({solanaClient:e,tx:n}){let t=p.getBase64Decoder().decode(oe(n)),{value:a}=await e.rpc.getFeeForMessage(t).send();return a??0n}async function me({solanaClient:e,tx:n,replaceRecentBlockhash:t}){let{value:a}=await e.rpc.simulateTransaction(p.getBase64Decoder().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 me({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 ge({tx:e,solanaClient:n,privyClient:t,checkFunds:a}){let r=p.getCompiledTransactionMessageDecoder().decode(oe(e)),s=r.staticAccounts[0]??"",o=await pe({solanaClient:n,tx:e}),l=a?await le(me({solanaClient:n,tx:e})):void 0,c=l?.hasFunds??!0,d={},u=[],m=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 p.fetchAddressesForLookupTables(t,e.rpc),r=t.map(((e,t)=>[...n.addressTableLookups[t]?.writableIndexes.map((n=>{let r=a[e]?.[n];if(r)return{key:r,isWritable:!0,altIdx:t}}))??[],...n.addressTableLookups[t]?.readonlyIndexes.map((n=>{let r=a[e]?.[n];if(r)return{key:r,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,...r]}({solanaClient:n,message:r});for(let e of r.instructions){let a=r.staticAccounts[e.programAddressIndex]||"";if(a!==i.TOKEN_PROGRAM_ID&&a!==i.TOKEN_2022_PROGRAM_ID)if(a!==i.SYSTEM_PROGRAM_ID){if(a===i.ASSOCIATED_TOKEN_PROGRAM_ID){let n=await le(function(e,n,t){let[a,r,i,s]=e.accountIndices?.map((e=>n[e]))??[];return{type:"ata-creation",program:t,payer:a,ata:r,owner:i,mint:s}}(e,m,a));if(!n){u.push({type:"unknown",program:a,discriminator:e.data?.[0]});continue}if(u.push(n),n.ata&&n.owner&&n.mint){d[n.ata]={owner:n.owner,mint:n.mint};continue}}if(i.RAYDIUM_SWAP_PROGRAM_IDS.includes(a)){let r=await le(we(e,m,n,t,a));if(!r){u.push({type:"unknown",program:a,discriminator:e.data?.[0]});continue}u.push(r)}else if(i.JUPITER_SWAP_PROGRAM_IDS.includes(a)){let r=await le(ve(e,m,n,t,a));if(!r){u.push({type:"unknown",program:a,discriminator:e.data?.[0]});continue}u.push(r)}else u.push({type:"unknown",program:a,discriminator:e.data?.[0]})}else{let n=await le(ye(e,m));if(!n){u.push({type:"unknown",program:a,discriminator:e.data?.[0]});continue}u.push(n)}else{let r=await le(he(e,m,n,t,d,a));if(!r){u.push({type:"unknown",program:a,discriminator:e.data?.[0]});continue}u.push(r),"spl-transfer"===r.type&&(r.fromAta&&r.fromAccount&&r.token.address&&(d[r.fromAta]??={owner:r.fromAccount,mint:r.token.address}),r.toAta&&r.toAccount&&r.token.address&&(d[r.toAta]??={owner:r.toAccount,mint:r.token.address}))}}return{spender:s,fee:o,instructions:u,hasFunds:!!c}}function fe(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=ce(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 he(e,n,t,a,r,i){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:i,account:e,mint:n,owner:t}}if(3===s){let n,s,[l,c,d]=o,u="",p=c?r[c]:void 0;if(p)n=p.owner,u=p.mint;else if(c){let e=await t.rpc.getAccountInfo(c,{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&&l){let e=await t.rpc.getAccountInfo(l,{commitment:"confirmed",encoding:"jsonParsed"}).send(),n=e.value?.data;u=n?.parsed?.info?.mint??""}let m=await ue({privyClient:a,chain:t.chain,mint:u}),g=m?.symbol??"";return s??=m?.decimals??9,{type:"spl-transfer",program:i,fromAta:l,fromAccount:d,toAta:c,toAccount:n,value:fe(e.data,1),token:{symbol:g,decimals:s,address:u}}}if(9===s){let[e,n,t]=o;return{type:"spl-close-account",program:i,source:e,destination:n,owner:t}}if(17===s)return{type:"spl-sync-native",program:i};throw Error(`Token program instruction type ${s} not supported`)}async function ye(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:i.SYSTEM_PROGRAM_ID,account:n?.toString(),value:fe(e.data,4),withSeed:!1}}if(2===t){let[n,t]=a;return{type:"sol-transfer",program:i.SYSTEM_PROGRAM_ID,fromAccount:n,toAccount:t,token:{symbol:"SOL",decimals:9},value:fe(e.data,4),withSeed:!1}}if(3===t){let[,n]=a;return{type:"create-account",program:i.SYSTEM_PROGRAM_ID,account:n,withSeed:!0,value:fe(e.data.slice(e.data.length-32-8-8))}}if(11===t){let[n,t]=a;return{type:"sol-transfer",program:i.SYSTEM_PROGRAM_ID,fromAccount:n,toAccount:t,value:fe(e.data,4),token:{symbol:"SOL",decimals:9},withSeed:!0}}throw Error(`System program instruction type ${t} not supported`)}async function we(e,n,t,a,r){let i=e.accountIndices?.map((e=>n[e]))??[],s=e.data?.[0];if(143===s){let n=i[10],s=i[11];return{type:"raydium-swap-base-input",program:r,mintIn:n,mintOut:s,tokenIn:n?await ue({privyClient:a,chain:t.chain,mint:n}):void 0,tokenOut:s?await ue({privyClient:a,chain:t.chain,mint:s}):void 0,amountIn:fe(e.data,8),minimumAmountOut:fe(e.data,16)}}if(55===s){let n=i[10],s=i[11];return{type:"raydium-swap-base-output",program:r,mintIn:n,mintOut:s,tokenIn:n?await ue({privyClient:a,chain:t.chain,mint:n}):void 0,tokenOut:s?await ue({privyClient:a,chain:t.chain,mint:s}):void 0,maxAmountIn:fe(e.data,8),amountOut:fe(e.data,16)}}throw Error(`Raydium swap program instruction type ${s} not supported`)}async function ve(e,n,t,a,r){let i=e.data?.[0],s=e.accountIndices?.map((e=>n[e]))??[];if([208,51,239,151,123,43,237,92].includes(i)){let n=s[5],i=s[6];return{type:"jupiter-swap-exact-out-route",program:r,mintIn:n,mintOut:i,tokenIn:n?await ue({privyClient:a,chain:t.chain,mint:n}):void 0,tokenOut:i?await ue({privyClient:a,chain:t.chain,mint:i}):void 0,outAmount:fe(e.data,e.data.length-1-2-8-8),quotedInAmount:fe(e.data,e.data.length-1-2-8)}}if([176,209,105,168,154,125,69,62].includes(i)){let n=s[7],i=s[8];return{type:"jupiter-swap-exact-out-route",program:r,mintIn:n,mintOut:i,tokenIn:n?await ue({privyClient:a,chain:t.chain,mint:n}):void 0,tokenOut:i?await ue({privyClient:a,chain:t.chain,mint:i}):void 0,outAmount:fe(e.data,e.data.length-1-2-8-8),quotedInAmount:fe(e.data,e.data.length-1-2-8)}}if([193,32,155,51,65,214,156,129].includes(i)){let n=s[7],i=s[8];return{type:"jupiter-swap-shared-accounts-route",program:r,mintIn:n,mintOut:i,tokenIn:n?await ue({privyClient:a,chain:t.chain,mint:n}):void 0,tokenOut:i?await ue({privyClient:a,chain:t.chain,mint:i}):void 0,inAmount:fe(e.data,e.data.length-1-2-8-8),quotedOutAmount:fe(e.data,e.data.length-1-2-8)}}throw[62,198,214,193,213,159,108,210].includes(i)&&console.warn("Jupiter swap program instruction 'claim' not implemented"),[116,206,27,191,166,19,0,73].includes(i)&&console.warn("Jupiter swap program instruction 'claim_token' not implemented"),[26,74,236,151,104,64,183,249].includes(i)&&console.warn("Jupiter swap program instruction 'close_token' not implemented"),[229,194,212,172,8,10,134,147].includes(i)&&console.warn("Jupiter swap program instruction 'create_open_orders' not implemented"),[28,226,32,148,188,136,113,171].includes(i)&&console.warn("Jupiter swap program instruction 'create_program_open_orders' not implemented"),[232,242,197,253,240,143,129,52].includes(i)&&console.warn("Jupiter swap program instruction 'create_token_ledger' not implemented"),[147,241,123,100,244,132,174,118].includes(i)&&console.warn("Jupiter swap program instruction 'create_token_account' not implemented"),[229,23,203,151,122,227,173,42].includes(i)&&console.warn("Jupiter swap program instruction 'route' not implemented"),[150,86,71,116,167,93,14,104].includes(i)&&console.warn("Jupiter swap program instruction 'route_with_token_ledger' not implemented"),[228,85,185,112,78,79,77,2].includes(i)&&console.warn("Jupiter swap program instruction 'set_token_ledger' not implemented"),[230,121,143,80,119,159,106,170].includes(i)&&console.warn("Jupiter swap program instruction 'shared_accounts_route_with_token_ledger' not implemented"),Error(`Jupiter swap program instruction type ${i} not supported`)}async function Ae({rpcSubscriptions:e,signature:n,timeout:t}){let a=new AbortController,r=await e.signatureNotifications(n,{commitment:"confirmed"}).subscribe({abortSignal:a.signal}),i=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 r){if(a.abort(),n.value.err)return e(Error("Transaction confirmation failed"));e(void 0)}}))]);if(i instanceof Error)throw i}function Se({rpc:e,rpcSubscriptions:n,chain:t,blockExplorerUrl:a}){let r=function({rpc:e,rpcSubscriptions:n}){return async t=>new Promise((async(a,r)=>{try{let r=await e.sendTransaction(ce(t).toString("base64"),{preflightCommitment:"confirmed",encoding:"base64"}).send();await Ae({rpcSubscriptions:n,signature:r,timeout:1e4}),a({signature:new Uint8Array(p.getBase58Encoder().encode(r))})}catch(e){r(e)}}))}({rpc:e,rpcSubscriptions:n});return{rpc:e,rpcSubscriptions:n,chain:t,blockExplorerUrl:a,sendAndConfirmTransaction:r}}function Te(){let n=e.useAppConfig(),t=a.useMemo((()=>Object.fromEntries(["solana:mainnet","solana:devnet","solana:testnet"].map((e=>[e,n.solanaRpcs[e]?Se({chain:e,rpc:n.solanaRpcs[e].rpc,rpcSubscriptions:n.solanaRpcs[e].rpcSubscriptions,blockExplorerUrl:n.solanaRpcs[e].blockExplorerUrl??`https://explorer.solana.com?cluster=${e.replace("solana:","")}`}):null])))),[n.solanaRpcs]);return a.useCallback((e=>{if(!t[e])throw Error(`No RPC configuration found for chain ${e}`);return t[e]}),[t])}const Ie={component:()=>{let{data:t,onUserCloseViaDialogOrKeybindRef:o,setModalData:l,navigate:c}=i.usePrivyModal(),{client:d,closePrivyModal:u,walletProxy:m,showFiatPrices:g}=s.usePrivyInternal(),f=e.useAppConfig(),{user:h}=i.usePrivyContext(),y=Te()(t?.standardSignAndSendTransaction?.chain??"solana:mainnet"),[w,v]=a.useState(t?.standardSignAndSendTransaction?.transaction),[A,S]=a.useState(),[T,I]=a.useState(),[b,C]=a.useState({value:0n,isLoading:!1}),[E,P]=a.useState(!1),[x,O]=a.useState({}),[k,F]=a.useState(),_=t?.standardSignAndSendTransaction?.account,M=!!t?.standardSignAndSendTransaction?.signOnly,j=_?.imported?i.getImportedPrivySolanaWallets(h).find((e=>e.address===_.address)):i.getPrivyPrimaryWallet(h),{solPrice:W,isSolPriceLoading:U}=i.useGetSolPrice({enabled:g}),D=a.useMemo((()=>{if(!A)return;let e=A.spender,n=i.getNativeCurrencyFromLamports(A.fee),t=i.getNativeCurrencyFromLamports(b.value,3,!0),a=A.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))),s=a.at(0);if(!s||a.length>1)return{fee:n,spender:e,balance:t};if("sol-transfer"===s.type)return{fee:n,spender:e,balance:t,total:i.getNativeCurrencyFromLamports(s.value)};if("spl-transfer"===s.type)return{fee:n,spender:e,balance:t,total:`${r.formatTokenAmount({amount:s.value,decimals:s.token.decimals})} ${s.token.symbol}`};if("raydium-swap-base-input"===s.type&&s.tokenIn&&s.tokenOut){return{fee:n,spender:e,balance:t,swap:`${`${r.formatTokenAmount({amount:s.amountIn,decimals:s.tokenIn.decimals})} ${s.tokenIn.symbol}`} → ${`${r.formatTokenAmount({amount:s.minimumAmountOut,decimals:s.tokenOut.decimals})} ${s.tokenOut.symbol}`}`}}if("raydium-swap-base-output"===s.type&&s.tokenIn&&s.tokenOut){return{fee:n,spender:e,balance:t,swap:`${`${r.formatTokenAmount({amount:s.maxAmountIn,decimals:s.tokenIn.decimals})} ${s.tokenIn.symbol}`} → ${`${r.formatTokenAmount({amount:s.amountOut,decimals:s.tokenOut.decimals})} ${s.tokenOut.symbol}`}`}}if("jupiter-swap-shared-accounts-route"===s.type&&s.tokenIn&&s.tokenOut){return{fee:n,spender:e,balance:t,swap:`${`${r.formatTokenAmount({amount:s.inAmount,decimals:s.tokenIn.decimals})} ${s.tokenIn.symbol}`} → ${`${r.formatTokenAmount({amount:s.quotedOutAmount,decimals:s.tokenOut.decimals})} ${s.tokenOut.symbol}`}`}}if("jupiter-swap-exact-out-route"===s.type&&s.tokenIn&&s.tokenOut){return{fee:n,spender:e,balance:t,swap:`${`${r.formatTokenAmount({amount:s.quotedInAmount,decimals:s.tokenIn.decimals})} ${s.tokenIn.symbol}`} → ${`${r.formatTokenAmount({amount:s.outAmount,decimals:s.tokenOut.decimals})} ${s.tokenOut.symbol}`}`}}return{fee:n,spender:e,balance:t}}),[A,_?.address,b]),L=a.useMemo((()=>{let e;if(!A||!g||!W||U)return;function n(...e){return i.getFormattedUsdFromLamports(e.reduce(((e,n)=>e+n),0n),W??0)}_?.address===A.spender&&(e=n(A.fee));let t=n(b.value),a=A.instructions.filter((e=>"sol-transfer"===e.type||"spl-transfer"===e.type)).at(0);return!a||A.instructions.length>1?{fee:e,balance:t}:"sol-transfer"===a.type?{fee:e,balance:t,total:n(a.value,_?.address===A.spender?A.fee:0n)}:"spl-transfer"===a.type?{fee:e,balance:t,total:`${r.formatTokenAmount({amount:a.value,decimals:a.token.decimals})} ${a.token.symbol}`}:{fee:e,balance:t}}),[A,g,W,U,_?.address,b]);if(a.useEffect((()=>{!async function(){if(w&&d)try{I(void 0);let e=await ge({tx:w,solanaClient:y,privyClient:d,checkFunds:!M});S(e)}catch(e){console.error("Failed to prepare transaction",e),I(e)}}()}),[w,y,d,M]),a.useEffect((()=>{(async function(){if(!_)return;C({value:b.value,isLoading:!0});let{value:e}=await y.rpc.getBalance(_.address,{commitment:"confirmed"}).send();C({value:e??0n,isLoading:!1})})().catch(console.error)}),[A]),!w||!t?.standardSignAndSendTransaction||!_){let e=Error("Invalid transaction request");/*#__PURE__*/return n.jsx(i.ErrorScreenView,{error:e,allowlistConfig:f.allowlistConfig,onRetry:()=>{t?.standardSignAndSendTransaction?.onFailure(e),u({shouldCallAuthOnSuccess:!1})}})}let R=()=>{if(!E)return x.signature||x.signedTransaction?t?.standardSignAndSendTransaction?.onSuccess({signature:x.signature,signedTransaction:x.signedTransaction}):t?.standardSignAndSendTransaction?.onFailure(k??T??Error("User exited the modal before submitting the transaction")),u({shouldCallAuthOnSuccess:!1})};o.current=R;let B=t.standardSignAndSendTransaction?.uiOptions?.transactionInfo?.contractInfo?.imgUrl?/*#__PURE__*/n.jsx("img",{src:t.standardSignAndSendTransaction.uiOptions.transactionInfo.contractInfo.imgUrl,alt:t.standardSignAndSendTransaction.uiOptions.transactionInfo.contractInfo.imgAltText}):null,N=!!(t.funding&&t.funding.supportedOptions.length>0),$=!A?.hasFunds&&N;if(x.signature||x.signedTransaction){let e=A?.instructions.filter((e=>"sol-transfer"===e.type||"spl-transfer"===e.type)),a=1===e?.length?e?.at(0):void 0;/*#__PURE__*/return n.jsx(ie,{fees:x.fees??0n,onClose:R,transactionInfo:t.standardSignAndSendTransaction?.uiOptions.transactionInfo,solPrice:W,receiptHeader:t.standardSignAndSendTransaction?.uiOptions.successHeader,receiptDescription:t.standardSignAndSendTransaction?.uiOptions.successDescription,chain:y.chain,signOnly:M,instruction:"sol-transfer"===a?.type?{to:a.toAccount,amount:a.value}:{to:a?.toAccount||a?.toAta,total:D?.total}})}return k?/*#__PURE__*/n.jsx(i.TransactionErrorView,{transactionError:k,chainId:y.chain,onClose:R,chainType:"solana",onRetry:async()=>{F(void 0);let{value:e}=await y.rpc.getLatestBlockhash().send();v(function(e,n){return p.pipe(p.getCompiledTransactionMessageDecoder().decode(oe(e)),(e=>p.decompileTransactionMessage(e)),(e=>p.setTransactionMessageLifetimeUsingBlockhash(n,e)),(e=>p.compileTransaction(e)),(e=>new Uint8Array(p.getTransactionEncoder().encode(e))))}(w,e))}}):/*#__PURE__*/n.jsx(i.SendSolanaTransactionScreenView,{img:B,title:t.standardSignAndSendTransaction?.uiOptions?.transactionInfo?.title||"Confirm transaction",subtitle:t.standardSignAndSendTransaction?.uiOptions?.description||`${f.name} wants your permission to approve the following transaction.`,cta:$?"Add funds":t.standardSignAndSendTransaction?.uiOptions?.buttonText||"Approve",instructions:A?.instructions??[],network:"solana:mainnet"==y.chain?"Solana":y.chain.replace("solana:",""),blockExplorerUrl:y.blockExplorerUrl,total:g?L?.total:D?.total,fee:g?L?.fee:D?.fee,balance:g?L?.balance:D?.balance,swap:D?.swap,transactingWalletAddress:_.address,disabled:!A?.hasFunds&&!N,isSubmitting:E,isPreparing:!A||b.isLoading,isTokenPriceLoading:g&&U,isMissingFunds:!A?.hasFunds,submitError:k??void 0,isSponsored:!!t.standardSignAndSendTransaction?.isSponsored,parseError:T,onClick:$?async()=>{if(_){if(!N)throw Error("Funding wallet is not enabled");l({...t,funding:{...t.funding,methodScreen:i.FundingMethodSelectionScreen},solanaFundingData:t?.solanaFundingData}),c(i.FundingMethodSelectionScreen)}}:async()=>{try{if(P(!0),E||!_||!m||!h||!j)return;let e=await t.standardSignAndSendTransaction.onConfirm(w);if("signature"in e){let n=await async function({solanaClient:e,signature:n}){let t=p.getBase58Decoder().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:y,signature:e.signature});return void O({...e,fees:n?.fee})}O(e)}catch(e){console.warn({transaction:w,error:e}),F(e)}finally{P(!1)}},onClose:R})}};function be(e,n,t){let a=structuredClone(p.getTransactionDecoder().decode(e)),r=p.address(n);return r in a.signatures&&(a.signatures[r]=t),new Uint8Array(p.getTransactionEncoder().encode(a))}function Ce(){let{isHeadlessSigning:e,walletProxy:n,initializeWalletProxy:t,recoverEmbeddedWallet:a,openModal:l,privy:c,client:u}=s.usePrivyInternal(),{user:p}=o.usePrivy(),{setModalData:g}=i.usePrivyModal(),{signWithUserSigner:f}=d.useSignWithUserSigner();return{signMessage:({message:o,address:d,options:h})=>new Promise((async(y,w)=>{let v=i.getPrivyWalletWithAddress(p,d);if("privy"!==v?.walletClientType)return void w(new s.PrivyClientError("Wallet is not a Privy wallet",void 0,s.PrivyErrorCode.EMBEDDED_WALLET_NOT_FOUND));let{entropyId:A,entropyIdVerifier:S}=i.getEntropyDetailsForUser(p,v),T=i.getIsUnifiedWallet(v),I=ce(o).toString("base64");if(I.length<1)return void w(new s.PrivyClientError("Message must be a non-empty string",void 0,s.PrivyErrorCode.INVALID_MESSAGE));let b=async()=>{let e;if(!p)throw Error("User must be authenticated before signing with a Privy wallet");let i=await u.getAccessToken();if(!i)throw Error("User must be authenticated to use their embedded wallet.");let s=n??await t(15e3);if(!s)throw Error("Failed to initialize embedded wallet proxy.");if(!await a({address:v.address}))throw Error("Unable to connect to wallet");if(T){let n=await r.rpc(c,f,{chain_type:"solana",method:"signMessage",params:{message:I,encoding:"base64"},wallet_id:v.id});if(!n.data||!("signature"in n.data))throw Error("Failed to sign message");e=n.data.signature}else{let{response:n}=await s.rpc({accessToken:i,entropyId:A,entropyIdVerifier:S,chainType:"solana",hdWalletIndex:v.walletIndex??0,requesterAppId:h?.uiOptions?.requesterAppId,request:{method:"signMessage",params:{message:I}}});e=n.data.signature}return e};if(e({showWalletUIs:h?.uiOptions?.showWalletUIs}))try{let e=await b(),n=new Uint8Array(ce(e,"base64"));y({signature:n})}catch(e){w(e)}else g({signMessage:{method:"solana_signMessage",data:I,confirmAndSign:b,onSuccess:e=>{y({signature:new Uint8Array(ce(e,"base64"))})},onFailure:e=>{w(e)},uiOptions:h?.uiOptions??{}},connectWallet:{recoveryMethod:v.recoveryMethod,connectingWalletAddress:v.address,entropyId:A,entropyIdVerifier:S,isUnifiedWallet:T,onCompleteNavigateTo:m.SignRequestScreen,onFailure:e=>{w(new s.PrivyClientError("Failed to connect to wallet",e,s.PrivyErrorCode.UNKNOWN_CONNECT_WALLET_ERROR))}}}),l(i.EmbeddedWalletConnectingScreen)}))}}function Ee(){let{isHeadlessSigning:e,openModal:n}=s.usePrivyInternal(),{setModalData:t}=i.usePrivyModal(),{signMessage:a}=Ce(),{user:r}=o.usePrivy();return{signTransaction:async({transaction:o,options:l,chain:c="solana:mainnet",address:d})=>{async function u(e){let{signature:n}=await a({message:oe(e),address:d,options:{...l,uiOptions:{...l?.uiOptions,showWalletUIs:!1}}});return{signedTransaction:be(e,d,n)}}return e({showWalletUIs:l?.uiOptions?.showWalletUIs})?u(o):new Promise((async(e,a)=>{let p=i.getPrivyWalletWithAddress(r,d);if("privy"!==p?.walletClientType)return void a(new s.PrivyClientError("Wallet is not a Privy wallet",void 0,s.PrivyErrorCode.EMBEDDED_WALLET_NOT_FOUND));let{entropyId:m,entropyIdVerifier:g}=i.getEntropyDetailsForUser(r,p),f=i.getIsUnifiedWallet(p);function h(e){return n=>{n instanceof s.PrivyClientError?a(n):a(new s.PrivyClientError("Failed to connect to wallet",n,e))}}let y={account:p,transaction:o,chain:c,signOnly:!0,uiOptions:l?.uiOptions||{},onConfirm:u,onSuccess:e,onFailure:h(s.PrivyErrorCode.TRANSACTION_FAILURE)};t({connectWallet:{recoveryMethod:p.recoveryMethod,connectingWalletAddress:p.address,entropyId:m,entropyIdVerifier:g,isUnifiedWallet:f,onCompleteNavigateTo:Ie,onFailure:h(s.PrivyErrorCode.UNKNOWN_CONNECT_WALLET_ERROR)},standardSignAndSendTransaction:y}),n(i.EmbeddedWalletConnectingScreen)}))}}}let Pe=new C({signTransaction:s.notImplementedWithMessage("signTransaction was not injected"),signAndSendTransaction:s.notImplementedWithMessage("signAndSendTransaction was not injected"),signMessage:s.notImplementedWithMessage("signMessage was not injected")}),xe=new class{get version(){return U(this,B)[B]}get name(){return U(this,N)[N]}get icon(){return U(this,$)[$]}get chains(){return A.slice()}get features(){return{"standard:connect":{version:"1.0.0",connect:U(this,Q)[Q]},"standard:disconnect":{version:"1.0.0",disconnect:U(this,Z)[Z]},"standard:events":{version:"1.0.0",on:U(this,J)[J]},"solana:signAndSendTransaction":{version:"1.0.0",supportedTransactionVersions:["legacy",0],signAndSendTransaction:U(this,X)[X]},"solana:signTransaction":{version:"1.0.0",supportedTransactionVersions:["legacy",0],signTransaction:U(this,ee)[ee]},"solana:signMessage":{version:"1.0.0",signMessage:U(this,z)[z]},"privy:":{privy:{signMessage:U(this,V)[V].signMessage,signTransaction:U(this,V)[V].signTransaction,signAndSendTransaction:U(this,V)[V].signAndSendTransaction}}}}get accounts(){return U(this,G)[G].slice()}get isPrivyWallet(){return U(this,q)[q]}constructor({name:e,icon:n,version:t,injection:a,wallets:r}){Object.defineProperty(this,H,{value:ne}),Object.defineProperty(this,K,{value:te}),Object.defineProperty(this,R,{writable:!0,value:void 0}),Object.defineProperty(this,B,{writable:!0,value:void 0}),Object.defineProperty(this,N,{writable:!0,value:void 0}),Object.defineProperty(this,$,{writable:!0,value:void 0}),Object.defineProperty(this,V,{writable:!0,value:void 0}),Object.defineProperty(this,q,{writable:!0,value:void 0}),Object.defineProperty(this,G,{writable:!0,value:void 0}),Object.defineProperty(this,J,{writable:!0,value:void 0}),Object.defineProperty(this,Y,{writable:!0,value:void 0}),Object.defineProperty(this,Q,{writable:!0,value:void 0}),Object.defineProperty(this,Z,{writable:!0,value:void 0}),Object.defineProperty(this,z,{writable:!0,value:void 0}),Object.defineProperty(this,X,{writable:!0,value:void 0}),Object.defineProperty(this,ee,{writable:!0,value:void 0}),U(this,R)[R]={},U(this,J)[J]=(e,n)=>(U(this,R)[R][e]?.push(n)||(U(this,R)[R][e]=[n]),()=>U(this,K)[K](e,n)),U(this,Y)[Y]=e=>{null!=e&&(U(this,G)[G]=e.map((({address:e})=>new W({address:e,publicKey:c.base58.decode(e)})))),U(this,H)[H]("change",{accounts:this.accounts})},U(this,Q)[Q]=async()=>(U(this,H)[H]("change",{accounts:this.accounts}),{accounts:this.accounts}),U(this,Z)[Z]=async()=>{U(this,H)[H]("change",{accounts:this.accounts})},U(this,z)[z]=async(...e)=>{let n=[];for(let{account:t,...a}of e){let{signature:e}=await U(this,V)[V].signMessage({...a,address:t.address});n.push({signedMessage:a.message,signature:e})}return n},U(this,X)[X]=async(...e)=>{let n=[];for(let t of e){let{signature:e}=await U(this,V)[V].signAndSendTransaction({...t,transaction:t.transaction,address:t.account.address,chain:t.chain||"solana:mainnet",options:t.options});n.push({signature:e})}return n},U(this,ee)[ee]=async(...e)=>{let n=[];for(let{transaction:t,account:a,options:r,chain:i}of e){let{signedTransaction:e}=await U(this,V)[V].signTransaction({transaction:t,address:a.address,chain:i||"solana:mainnet",options:r});n.push({signedTransaction:e})}return n},U(this,N)[N]=e,U(this,$)[$]=n,U(this,B)[B]=t,U(this,V)[V]=a,U(this,G)[G]=[],U(this,q)[q]=!0,a.on("accountChanged",U(this,Y)[Y],this),U(this,Y)[Y](r)}}({name:"Privy",version:"1.0.0",icon:"data:image/png;base64,AAABAAEAFBQAAAAAIABlAQAAFgAAAIlQTkcNChoKAAAADUlIRFIAAAAUAAAAFAgGAAAAjYkdDQAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAQVJREFUeJxiYMANZIC4E4ivAPFPIP4FxDeAuB+IlfDowwBMQFwJxF+B+D8O/AOI66Bq8QJGIF6ExyB0vAqImfEZmEeCYTDcgMswPiB+T4aB34FYApuBsWQYBsP52AycToGBK7EZuJECAw9jM3AVBQbuwWZgIwUGTsZmoDkFBnpiMxAEjpJh2FV8iVsbiD+TYBgoDVrgMgwGnID4HRGGgTKBGyHDYEAaiBdCSxh0g/5AU4Q8sYYhAzEgjoGmABBOgFo2eACowFABYn0oVgViAVINkQTiZUD8DIj/ATF6GILEXgLxCiCWIsZAbiAuBeKtQHwHiEHJ6C8UfwHie0C8E4jLoWpRAAAAAP//rcbhsQAAAAZJREFUAwBYFs3VKJ0cuQAAAABJRU5ErkJggg==",wallets:[],injection:Pe});function Oe(){let{ready:n}=i.useWallets(),{user:t}=o.usePrivy(),{signMessage:l}=Ce(),{signTransaction:u}=Ee(),{signAndSendTransaction:p}=function(){let n=e.useAppConfig(),{isHeadlessSigning:t,openModal:a}=s.usePrivyInternal(),{setModalData:l}=i.usePrivyModal(),{signTransaction:u}=Ee(),p=Te(),{user:m}=o.usePrivy(),{signWithUserSigner:g}=d.useSignWithUserSigner();return{signAndSendTransaction:async({transaction:e,address:d,chain:f="solana:mainnet",options:h})=>{async function y(e){if(h?.sponsor)return await S(e);let{signedTransaction:n}=await u({transaction:e,address:d,chain:f,options:{...h,uiOptions:{...h?.uiOptions,showWalletUIs:!1}}}),{signature:t}=await p(f).sendAndConfirmTransaction(n);return{signature:t}}if(t({showWalletUIs:h?.uiOptions?.showWalletUIs}))return y(e);let v=i.getPrivyWalletWithAddress(m,d);if("privy"!==v?.walletClientType)throw new s.PrivyClientError("Wallet is not a Privy wallet",void 0,s.PrivyErrorCode.EMBEDDED_WALLET_NOT_FOUND);let A=i.getIsUnifiedWallet(v),S=async e=>{if(!A)throw new s.PrivyClientError("Sponsoring transactions is only supported for wallets on the TEE stack",s.PrivyErrorCode.INVALID_DATA);let t=new w.default({appId:n.id,clientId:n.appClientId,storage:i.f}),a=await r.rpc(t,g,{chain_type:"solana",method:"signAndSendTransaction",sponsor:!0,params:{transaction:Buffer.from(e).toString("base64"),encoding:"base64"},caip2:`solana:${(await p(f).rpc.getGenesisHash().send()).substring(0,32)}`,wallet_id:v.id});if(a.data&&"hash"in a.data)return{signature:c.base58.decode(a.data.hash)};throw Error("Failed to sign and send transaction")};return new Promise((async(t,r)=>{let c,u,{entropyId:p,entropyIdVerifier:g}=i.getEntropyDetailsForUser(m,v);function w(e){return n=>{n instanceof s.PrivyClientError?r(n):r(new s.PrivyClientError("Failed to connect to wallet",n,e))}}let S={account:v,transaction:e,chain:f,signOnly:!1,uiOptions:h?.uiOptions||{},onConfirm:y,onSuccess:t,onFailure:w(s.PrivyErrorCode.TRANSACTION_FAILURE),isSponsored:!!h?.sponsor},T={recoveryMethod:v.recoveryMethod,connectingWalletAddress:v.address,entropyId:p,entropyIdVerifier:g,isUnifiedWallet:A,onCompleteNavigateTo:Ie,onFailure:w(s.PrivyErrorCode.UNKNOWN_CONNECT_WALLET_ERROR)};n.fundingConfig&&(c=o.prepareSolanaFundingModalData({address:d,appConfig:n,methodScreen:i.FundingMethodSelectionScreen,fundWalletConfig:{...h,asset:"native-currency",chain:f},externalSolanaFundingScreen:De}),u={amount:n.fundingConfig.defaultRecommendedAmount,asset:"SOL",chain:f,destinationAddress:d,afterSuccessScreen:Ie,sourceWalletData:void 0}),l({connectWallet:T,standardSignAndSendTransaction:S,funding:c,solanaFundingData:u}),a(i.EmbeddedWalletConnectingScreen)}))}}}(),m=a.useMemo((()=>{let e=[...i.getPrivySolanaHDWallets(t).sort(((e,n)=>(e.walletIndex??0)-(n.walletIndex??0)))],n=i.getImportedPrivySolanaWallets(t);return n.length?[...e,...n]:e}),[t]),g=a.useMemo((()=>({signMessage:async({message:e,address:n,options:t})=>await l({message:e,address:n,options:t}),signTransaction:async({transaction:e,address:n,chain:t,options:a})=>await u({transaction:e,address:n,chain:t,options:a}),async signAndSendTransaction({transaction:e,address:n,chain:t,options:a}){let{signature:r}=await p({transaction:e,address:n,chain:t,options:a});return{signature:r}}})),[l,u,p]);return a.useEffect((()=>{Pe?.setImplementation(g)}),[g]),a.useEffect((()=>{var e;!n||(e=xe.accounts).length===m.length&&e.every(((e,n)=>e.address===m[n]?.address))||Pe?.emit("accountChanged",m)}),[n,m]),{ready:n,wallet:xe}}function ke(){let{client:e}=s.usePrivyInternal(),{ready:n,wallet:t}=Oe(),[r,i]=a.useState([]),[o,l]=a.useState([]);return a.useEffect((()=>{let e=[t,...r.filter((e=>"solana"===e.chainType&&!!e.wallet.features)).map((e=>e.wallet))];l(e);let n=e.map((n=>n.features["standard:events"]?.on("change",(()=>{l([...e])}))));return()=>{n.forEach((e=>e?.()))}}),[r]),a.useEffect((()=>{i(e.connectors?.walletConnectors.filter((e=>"solana"===e.chainType))??[]);let n=()=>{i(e.connectors?.walletConnectors.filter((e=>"solana"===e.chainType))??[])};return e.connectors?.on("connectorInitialized",n),()=>{e.connectors?.off("connectorInitialized",n)}}),[n,e.connectors]),{ready:n,wallets:o}}function Fe(){let{ready:e,wallets:n}=ke();return{ready:e,wallets:a.useMemo((()=>n.flatMap((e=>e.accounts.map((n=>new r.ConnectedStandardSolanaWallet({wallet:e,account:n})))))),[n])}}function _e(e){return p.getBase58Decoder().decode(e)}function Me(e){return BigInt(Math.floor(1e9*parseFloat(e)))}function je(e){return+We.format(parseFloat(e.toString())/1e9)}let We=Intl.NumberFormat(void 0,{maximumFractionDigits:8});async function Ue({tx:e,solanaClient:n,amount:t,asset:a,tokenPrice:r}){if(!e)return null;if("SOL"===a&&r){let a=Me(t),s=i.getFormattedUsdFromLamports(a,r),o=await pe({solanaClient:n,tx:e});return{amountInUsd:s,feeInUsd:r?i.getFormattedUsdFromLamports(o,r):void 0,totalInUsd:i.getFormattedUsdFromLamports(a+o,r)}}if("USDC"===a&&r){let a="$"+t,s=await pe({solanaClient:n,tx:e}),o=function(e,n){let t=parseFloat(e.toString())/i.LAMPORTS_PER_SOL*n;return t<.01?0:t}(s,r);return{amountInUsd:a,feeInUsd:i.getFormattedUsdFromLamports(s,r),totalInUsd:"$"+(parseFloat(t)+o).toFixed(2)}}if("SOL"===a){let a=Me(t),r=await pe({solanaClient:n,tx:e});return{amountInSol:t+" SOL",feeInSol:je(r)+" SOL",totalInSol:je(a+r)+" SOL"}}return{amountInUsdc:t+" USDC",feeInSol:je(await pe({solanaClient:n,tx:e}))+" SOL"}}const De={component:function(){let t=e.useAppConfig(),{closePrivyModal:o,createAnalyticsEvent:l}=s.usePrivyInternal(),{data:c,setModalData:d,navigate:u}=i.usePrivyModal(),{wallets:m}=Fe(),[h,w]=a.useState("preparing"),[v,A]=a.useState(),[T,I]=a.useState(),[b,C]=a.useState();if(!c?.solanaFundingData)throw Error("Funding config is missing");if(!c.solanaFundingData.sourceWalletData)throw Error("Funding config is missing source wallet data");let{amount:E,asset:P,chain:x,sourceWalletData:O,destinationAddress:k,afterSuccessScreen:F}=c.solanaFundingData,_=m.find((e=>e.address===O.address&&i.toSolanaWalletClientType(O.walletClientType)===i.toSolanaWalletClientType(e.standardWallet.name))),M=Te()(x),{tokenPrice:j,isTokenPriceLoading:W}=i.useGetTokenPrice("solana");return a.useEffect((()=>{if("preparing"!==h||W||!_)return;let e="SOL"===P?Me(E):function(e){return BigInt(Math.floor(1e6*parseFloat(e)))}(E);I({amount:("SOL"===P&&j?i.getFormattedUsdFromLamports(e,j):E)??E}),("SOL"===P?async function({solanaClient:e,source:n,destination:t,amountInLamports:a}){let{value:r}=await e.rpc.getLatestBlockhash().send(),i={address:n},s=p.pipe(p.createTransactionMessage({version:0}),(e=>p.setTransactionMessageFeePayerSigner(i,e)),(e=>p.setTransactionMessageLifetimeUsingBlockhash(r,e)),(e=>p.appendTransactionMessageInstruction(g.getTransferSolInstruction({amount:a,source:i,destination:t}),e)),(e=>p.compileTransaction(e)));return new Uint8Array(p.getTransactionEncoder().encode(s))}({solanaClient:M,source:_.address,destination:k,amountInLamports:e}):async function({solanaClient:e,source:n,destination:t,amountInBaseUnits:a}){let r=i.getUsdcMintAddress(e.chain),{value:s}=await e.rpc.getLatestBlockhash().send(),o={address:n},[l]=await f.findAssociatedTokenPda({mint:r,owner:n,tokenProgram:i.TOKEN_PROGRAM_ID}),[c]=await f.findAssociatedTokenPda({mint:r,owner:t,tokenProgram:i.TOKEN_PROGRAM_ID}),[d,u]=await Promise.all([e.rpc.getAccountInfo(l,{commitment:"confirmed",encoding:"jsonParsed"}).send().catch((()=>null)),e.rpc.getAccountInfo(c,{commitment:"confirmed",encoding:"jsonParsed"}).send().catch((()=>null))]);if(!d?.value)throw Error(`Source token account does not exist for address: ${n}`);let m=f.getCreateAssociatedTokenIdempotentInstruction({payer:o,ata:c,owner:t,mint:r}),g=p.pipe(p.createTransactionMessage({version:0}),(e=>p.setTransactionMessageFeePayerSigner(o,e)),(e=>p.setTransactionMessageLifetimeUsingBlockhash(s,e)),(e=>u?.value?e:p.appendTransactionMessageInstruction(m,e)),(e=>p.appendTransactionMessageInstruction(f.getTransferInstruction({source:l,destination:c,authority:o,amount:a}),e)),(e=>p.compileTransaction(e)));return new Uint8Array(p.getTransactionEncoder().encode(g))}({solanaClient:M,source:_.address,destination:k,amountInBaseUnits:e})).then(A).catch((e=>{w("error"),C(e)}))}),[h,E,P,x,_,k,W,j]),a.useEffect((()=>{"preparing"===h&&v&&Ue({tx:v,solanaClient:M,amount:E,asset:P,tokenPrice:j}).then((e=>{w("loaded"),I({amount:e?.amountInUsd??e?.amountInUsdc??e?.amountInSol??E,fee:e?.feeInUsd??e?.feeInSol,total:e?.totalInUsd??e?.totalInSol})})).catch((e=>{w("error"),C(e)}))}),[v,E,P,h,j]),a.useEffect((()=>{"error"===h&&b&&(d({errorModalData:{error:b,previousScreen:De},solanaFundingData:c.solanaFundingData}),u(i.ErrorScreen,!1))}),[h,u]),a.useEffect((()=>{if("success"!==h)return;let n=setTimeout(F?()=>u(F):o,e.DEFAULT_SUCCESS_SCREEN_EXTRA_LONG_DURATION_MS);return()=>clearTimeout(n)}),[h]),"success"===h?/*#__PURE__*/n.jsxs(n.Fragment,{children:[/*#__PURE__*/n.jsx(i.i,{}),/*#__PURE__*/n.jsx(i.RefactorSpacerTop,{}),/*#__PURE__*/n.jsxs(i.CenteredItemWithGap,{children:[/*#__PURE__*/n.jsx(y.default,{color:"var(--privy-color-success)",width:"64px",height:"64px"}),/*#__PURE__*/n.jsx(i.CenteredScreenHeader,{title:"Success!",description:`You’ve successfully added ${E} ${P} to your ${t.name} wallet. It may take a minute before the funds are available to use.`})]}),/*#__PURE__*/n.jsx(i.RefactorSpacerBottom,{}),/*#__PURE__*/n.jsx(i.BlobbyFooter,{})]}):"preparing"===h||"loaded"===h||"sending"===h?/*#__PURE__*/n.jsxs(n.Fragment,{children:[/*#__PURE__*/n.jsx(i.i,{}),/*#__PURE__*/n.jsx(i.CenteredItem,{style:{marginTop:"16px"},children:/*#__PURE__*/n.jsx(i.InjectedWalletIcon,{icon:_?.standardWallet.icon,name:_?.standardWallet.name})}),/*#__PURE__*/n.jsx(i.CenteredScreenHeader,{style:{marginTop:"8px",marginBottom:"12px"},title:"sending"===h&&_?`Confirming with ${_.standardWallet.name}`:"Confirm transaction"}),/*#__PURE__*/n.jsx(S,{rows:[{label:"Source",value:r.formatWalletAddress(O.address)},{label:"Destination",value:r.formatWalletAddress(k)},{label:"Network",value:i.getChainName(x)},{label:"Amount",value:T?.amount,isLoading:"preparing"===h},{label:"Estimated fee",value:T?.fee,isLoading:"preparing"===h},{label:"Total",value:T?.total,isLoading:"preparing"===h}]}),/*#__PURE__*/n.jsx(i.PrimaryButton,{style:{marginTop:"1rem"},loading:"preparing"===h||"sending"===h,onClick:function(){"loaded"===h&&v&&_&&(w("sending"),async function({transaction:e,chain:n,sourceWallet:t,solanaClient:a}){let{hasFunds:i}=await me({solanaClient:a,tx:e});if(!i)throw new s.PrivyClientError(`Wallet ${r.formatWalletAddress(t.address)} does not have enough funds.`,void 0,s.PrivyErrorCode.INSUFFICIENT_BALANCE);let o=_e((await t.signAndSendTransaction({transaction:e,chain:n}).catch((e=>{throw new s.PrivyClientError("Transaction was rejected by the user",e,s.PrivyErrorCode.TRANSACTION_FAILURE)}))).signature);return await Ae({rpcSubscriptions:a.rpcSubscriptions,signature:o,timeout:2e4}),o}({solanaClient:M,transaction:v,chain:x,sourceWallet:_}).then((e=>{w("success"),l({eventName:i.ON_RAMP_COMPLETE_ANALYTICS_EVENT,payload:{provider:"external",status:"success",txHash:e,address:_.address,value:E,chainType:"solana",clusterName:x,token:P,destinationAddress:k,destinationValue:E,destinationChainType:"solana",destinationClusterName:x,destinationToken:P}})})).catch((e=>{w("error"),C(e)})))},children:"Confirm"}),/*#__PURE__*/n.jsx(i.BlobbyFooter,{})]}):
2
2
  /*#__PURE__*/n.jsxs(n.Fragment,{children:[/*#__PURE__*/n.jsx(i.i,{}),/*#__PURE__*/n.jsx(i.NeutralSpinner,{}),/*#__PURE__*/n.jsx("div",{style:{marginTop:"1rem"}}),/*#__PURE__*/n.jsx(i.BlobbyFooter,{})]})}};exports.SOLANA_CHAINS=A,exports.fetchTransactionEstimatedFees=pe,exports.getAddressFromBuffer=_e,exports.getSolanaRpcClient=Se,exports.simulateTransaction=me,exports.useExportWallet=function(){let{user:n,getAccessToken:t}=i.usePrivyContext(),{walletProxy:r,openModal:l,client:c}=s.usePrivyInternal(),{setModalData:d}=i.usePrivyModal(),u=e.useAppConfig();return a.useMemo((()=>({exportWallet:e=>new Promise((async(a,p)=>{if(!n)return void p(new s.PrivyClientError("User must be authenticated before exporting their Privy wallet"));let m=e?.address?i.getPrivyWalletWithAddress(n,e.address):i.getPrivySolanaWallet(n);if(!m)return void p(new s.PrivyClientError("User must have an embedded wallet."));if(!o.isFirstClassChainWallet(m))return void p(Error(`Export is not supported for ${m.chainType} wallets`));let g=i.getIsUnifiedWallet(m),{entropyId:f,entropyIdVerifier:h}=i.getEntropyDetailsForUser(n,m);await t()?r?(d({connectWallet:{recoveryMethod:m.recoveryMethod,connectingWalletAddress:m.address,isUnifiedWallet:g,entropyId:f,entropyIdVerifier:h,onCompleteNavigateTo:i.EmbeddedWalletKeyExportScreen,onFailure:p,shouldForceMFA:!0},keyExport:{appId:u.id,appClientId:u.appClientId,origin:c.apiUrl,address:m.address,entropyId:f,entropyIdVerifier:h,hdWalletIndex:m.walletIndex,chainType:m.chainType,walletId:m.id,isUnifiedWallet:g,imported:m.imported,onSuccess:a,onFailure:p}}),l(i.EmbeddedWalletConnectingScreen)):p(new s.PrivyClientError("Wallet not ready for export")):p(new s.PrivyClientError("Must have valid access token."))}))})),[n,t,r,l,c,d,u])},exports.useFundWallet=function(n){e.usePrivyEventSubscription("fundSolanaWallet",n);let t=e.useAppConfig(),{openModal:a}=s.usePrivyInternal(),{setModalData:r}=i.usePrivyModal();return{fundWallet:async({address:e,options:n})=>{let s=n?.amount||t.fundingConfig?.defaultRecommendedAmount||"1",l=n?.asset||t.fundingConfig?.defaultRecommendedCurrency.asset||"native-currency",c=n?.chain||"solana:mainnet";r({funding:o.prepareSolanaFundingModalData({address:e,appConfig:t,methodScreen:i.FundingMethodSelectionScreen,fundWalletConfig:{...n,amount:s,asset:l,chain:c},externalSolanaFundingScreen:De}),solanaFundingData:{amount:s,asset:"native-currency"===l?"SOL":"USDC",chain:c,destinationAddress:e,sourceWalletData:void 0}}),a(i.FundingMethodSelectionScreen)}}},exports.useSolanaStandardWallets=ke,exports.useWallets=Fe;
@@ -1 +1 @@
1
- "use strict";var e=require("react"),t=require("./events-context-Cgq8fGB0.js"),n=require("./EmbeddedWalletConnectingScreen-i0UDHMDq.js"),l=require("styled-components"),r=require("./internal-context-CeWKmK5u.js");const s=/*#__PURE__*/l.styled.div.withConfig({displayName:"Column",componentId:"sc-cfc52180-0"})(["display:flex;flex-direction:column;"]);exports.Column=s,exports.useActiveWallet=()=>{let l=t.useAppConfig(),{wallets:s}=n.useWallets(),{connectors:o}=r.usePrivyInternal(),i=e.useMemo((()=>o.filter(n.isSolanaWalletConnector).flatMap((e=>e.wallets))),[o]),u=n.useActiveWalletStore((e=>e.wallet));e.useEffect((()=>{if(!l.id)return;let e=n.f.get(n.toActiveWalletKey(l.id));n.useActiveWalletStore.setState({wallet:e})}),[l.id]);let a=e.useMemo((()=>{if(!u)return;let[,e]=u.split(":");return s.find((t=>t.address===e))||i.find((t=>t.address===e))}),[u,s,i]),c=e.useMemo((()=>a?"ethereum"===a.type?a.chainId:"solana":void 0),[a]);return{connect:async e=>{e?.reset&&(n.f.del(n.toActiveWalletKey(l.id)),n.useActiveWalletStore.setState({wallet:void 0}));let{wallet:t}=await n.open();if(!t)return{};let[,r]=t.split(":"),o=s.find((e=>e.address===r));if(o)return{wallet:o,network:o.chainId};let u=i.find((e=>e.address===r));return u?{wallet:u,network:"solana"}:{}},setActiveWallet:e.useCallback((e=>{n.setActiveWallet({address:e.address,client:e.walletClientType,appId:l.id})}),[l.id]),wallet:a,network:c}},exports.useConnectWallet=function(l){let{connectWallet:r}=e.useContext(n.PrivyContext);return t.usePrivyEventSubscription("connectWallet",l),{connectWallet:r}},exports.useElementHeight=t=>{let[n,l]=e.useState("auto");return e.useEffect((()=>{let e=new ResizeObserver((e=>{l(e[0]?.contentRect.height??"auto")}));return t.current&&e.observe(t.current),()=>{t.current&&e.unobserve(t.current)}}),[t.current]),n},exports.useFundWallet=e=>{t.usePrivyEventSubscription("fundWallet",e);let{fundWallet:n}=r.usePrivyInternal();return{fundWallet:({address:e,options:t})=>n(e,t)}},exports.useLogin=function(l){let{login:r}=e.useContext(n.PrivyContext);return t.usePrivyEventSubscription("login",l),{login:r}},exports.useLogout=function(l){let{logout:r}=e.useContext(n.PrivyContext);return t.usePrivyEventSubscription("logout",l),{logout:r}};
1
+ "use strict";var e=require("react"),t=require("./events-context-PZ26oAHB.js"),n=require("./EmbeddedWalletConnectingScreen-jOWUCqZg.js"),l=require("styled-components"),r=require("./internal-context-CeWKmK5u.js");const s=/*#__PURE__*/l.styled.div.withConfig({displayName:"Column",componentId:"sc-cfc52180-0"})(["display:flex;flex-direction:column;"]);exports.Column=s,exports.useActiveWallet=()=>{let l=t.useAppConfig(),{wallets:s}=n.useWallets(),{connectors:o}=r.usePrivyInternal(),i=e.useMemo((()=>o.filter(n.isSolanaWalletConnector).flatMap((e=>e.wallets))),[o]),u=n.useActiveWalletStore((e=>e.wallet));e.useEffect((()=>{if(!l.id)return;let e=n.f.get(n.toActiveWalletKey(l.id));n.useActiveWalletStore.setState({wallet:e})}),[l.id]);let a=e.useMemo((()=>{if(!u)return;let[,e]=u.split(":");return s.find((t=>t.address===e))||i.find((t=>t.address===e))}),[u,s,i]),c=e.useMemo((()=>a?"ethereum"===a.type?a.chainId:"solana":void 0),[a]);return{connect:async e=>{e?.reset&&(n.f.del(n.toActiveWalletKey(l.id)),n.useActiveWalletStore.setState({wallet:void 0}));let{wallet:t}=await n.open();if(!t)return{};let[,r]=t.split(":"),o=s.find((e=>e.address===r));if(o)return{wallet:o,network:o.chainId};let u=i.find((e=>e.address===r));return u?{wallet:u,network:"solana"}:{}},setActiveWallet:e.useCallback((e=>{n.setActiveWallet({address:e.address,client:e.walletClientType,appId:l.id})}),[l.id]),wallet:a,network:c}},exports.useConnectWallet=function(l){let{connectWallet:r}=e.useContext(n.PrivyContext);return t.usePrivyEventSubscription("connectWallet",l),{connectWallet:r}},exports.useElementHeight=t=>{let[n,l]=e.useState("auto");return e.useEffect((()=>{let e=new ResizeObserver((e=>{l(e[0]?.contentRect.height??"auto")}));return t.current&&e.observe(t.current),()=>{t.current&&e.unobserve(t.current)}}),[t.current]),n},exports.useFundWallet=e=>{t.usePrivyEventSubscription("fundWallet",e);let{fundWallet:n}=r.usePrivyInternal();return{fundWallet:({address:e,options:t})=>n(e,t)}},exports.useLogin=function(l){let{login:r}=e.useContext(n.PrivyContext);return t.usePrivyEventSubscription("login",l),{login:r}},exports.useLogout=function(l){let{logout:r}=e.useContext(n.PrivyContext);return t.usePrivyEventSubscription("logout",l),{logout:r}};
@@ -1 +1 @@
1
- "use strict";var e=require("./internal-context-CeWKmK5u.js"),r=require("@privy-io/js-sdk-core"),t=require("react"),n=require("./EmbeddedWalletConnectingScreen-i0UDHMDq.js"),a=require("./events-context-Cgq8fGB0.js");function i(e){let r=e.replace("eip155:","");if(r)return parseInt(r);throw Error("Chain ID not compatible with CAIP-2 format.")}const o=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)))),l={[r.mainnet.id]:"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",[r.sepolia.id]:"0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238",[r.optimism.id]:"0x0b2c639c533813f4aa9d7837caf62653d097ff85",[r.optimismSepolia.id]:"0x5fd84259d66Cd46123540766Be93DFE6D43130D7",[r.polygon.id]:"0x3c499c542cef5e3811e1192ce70d8cc03d5c3359",[r.polygonAmoy.id]:"0x41e94eb019c0762f9bfcf9fb1e58725bfb0e7582",[r.base.id]:"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",[r.baseSepolia.id]:"0x036CbD53842c5426634e7929541eC2318f3dCF7e",[r.avalanche.id]:"0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E",[r.avalancheFuji.id]:"0x5425890298aed601595a70ab815c96711a31bc65",[r.arbitrum.id]:"0xaf88d065e77c8cC2239327C5EDb3A432268e5831",[r.arbitrumSepolia.id]:"0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d"};const d=e=>e.reduce(((e,r)=>!e||e.walletIndex<r.walletIndex?r:e),null),s=async({appConfig:r,getAccessToken:t,initializeWalletProxy:a,user:i,privy:o,emitPrivyEvent:l,recoverEmbeddedWallet:s,setModalData:u,openModal:p,setUser:E,options:f,timeoutDuration:h,refreshSessionAndUser:y,chainType:m})=>{let[v,g]=await Promise.all([a(h),t()]);if(!g||!i)throw l("createWallet","onError",e.PrivyErrorCode.MUST_BE_AUTHENTICATED),Error("User must be authenticated before creating a Privy wallet");if(!v&&r.customAuth?.enabled)throw l("createWallet","onError",e.PrivyErrorCode.UNKNOWN_EMBEDDED_WALLET_ERROR),Error("Failed to connect to wallet proxy");if(f&&"walletIndex"in f&&"number"==typeof f.walletIndex){if("user-controlled-server-wallets-only"===r.embeddedWallets.mode)throw l("createWallet","onError",e.PrivyErrorCode.INVALID_DATA),Error("Invalid input, use `createAdditional` instead of `walletIndex` to create additional wallets.");return c({accessToken:g,appConfig:r,privy:o,emitPrivyEvent:l,openModal:p,proxy:v,refreshSessionAndUser:y,recoverEmbeddedWallet:s,setModalData:u,user:i,walletIndex:f.walletIndex,chainType:m,setUser:E})}let C=f&&"createAdditional"in f&&f.createAdditional,w=n.getPrivyWalletsWithFilter(i,{chainType:m});if(w[0]&&!C)throw l("createWallet","onError",e.PrivyErrorCode.EMBEDDED_WALLET_ALREADY_EXISTS),Error("User already has an embedded wallet.");return c({accessToken:g,appConfig:r,privy:o,emitPrivyEvent:l,openModal:p,proxy:v,recoverEmbeddedWallet:s,setModalData:u,user:i,walletIndex:(d(w)?.walletIndex??-1)+1,chainType:m,refreshSessionAndUser:y,setUser:E})};let c=async({accessToken:r,appConfig:t,privy:a,emitPrivyEvent:i,proxy:o,refreshSessionAndUser:l,recoverEmbeddedWallet:d,user:s,walletIndex:c,setModalData:p,openModal:E,chainType:f,setUser:h})=>{if(c<0)throw i("createWallet","onError",e.PrivyErrorCode.EMBEDDED_WALLET_CREATE_ERROR),Error(`A negative walletIndex (${c}) is invalid.`);let y=n.getPrivyPrimaryWallet(s);if(c>0&&!y)throw i("createWallet","onError",e.PrivyErrorCode.EMBEDDED_WALLET_NOT_FOUND),Error("Must have an existing embedded wallet to create an additional wallet.");if(t.embeddedWallets.requireUserOwnedRecoveryOnCreate&&"user-controlled-server-wallets-only"===t.embeddedWallets.mode)throw i("createWallet","onError",e.PrivyErrorCode.EMBEDDED_WALLET_CREATE_ERROR),Error("User owned recovery not yet supported for this app.");if(!y&&t.embeddedWallets.requireUserOwnedRecoveryOnCreate)return await u({emitPrivyEvent:i,setModalData:p,openModal:E,chainType:f});let m=n.getPrivyWalletsWithFilter(s,{chainType:f,walletIndex:c})[0];if(m)return{user:s,account:m};if(0===c&&!o)return u({emitPrivyEvent:i,setModalData:p,openModal:E,chainType:f});if(!o)throw i("createWallet","onError",e.PrivyErrorCode.UNKNOWN_EMBEDDED_WALLET_ERROR),Error("Failed to connect to wallet proxy");return n.createWalletAtIndex({appConfig:t,walletIndex:c,chainType:f,user:s,accessToken:r,proxy:o,refreshSessionAndUser:l,privy:a,recoverEmbeddedWallet:d,setUser:h})},u=async({emitPrivyEvent:r,setModalData:t,openModal:a,chainType:i})=>new Promise(((o,l)=>{t({createWallet:{onSuccess:({user:e,account:t})=>{r("createWallet","onSuccess",{wallet:t}),o({user:e,account:t})},onFailure:t=>{r("createWallet","onError",e.PrivyErrorCode.UNKNOWN_EMBEDDED_WALLET_ERROR),l(t)},callAuthOnSuccessOnClose:!1,shouldCreateEth:"ethereum"===i,shouldCreateSol:"solana"===i}}),a(n.EmbeddedWalletOnAccountCreateScreen)}));const p=()=>{let r=a.useAppConfig(),t=a.useEmitPrivyEvent(),{setModalData:i}=n.usePrivyModal(),{initializeWalletProxy:o,recoverEmbeddedWallet:l,setUser:d,openModal:c,refreshSessionAndUser:u,privy:p,client:E}=e.usePrivyInternal();return{create:async({chainType:n,options:f,latestUser:h})=>{let y=h;if(y||(y=await u()),!y)throw t("createWallet","onError",e.PrivyErrorCode.MUST_BE_AUTHENTICATED),Error("User must be authenticated before creating a Privy wallet");return await s({appConfig:r,privy:p,getAccessToken:()=>E.getAccessToken(),refreshSessionAndUser:u,initializeWalletProxy:o,user:y,emitPrivyEvent:t,recoverEmbeddedWallet:l,setModalData:i,openModal:c,setUser:d,options:f,timeoutDuration:a.WALLET_PROXY_TIMEOUT,chainType:n})}}};function E(e){let{create:r}=p();return a.usePrivyEventSubscription("createWallet",e),{createWallet:async e=>{e&&"target"in e&&e&&(e=void 0);let{account:t}=await r({chainType:"ethereum",options:e});return t}}}const f=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",e.PrivyErrorCode.MUST_BE_AUTHENTICATED,{linkMethod:"siwe"}),new e.PrivyClientError("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.PrivyClientError("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[p,E]=await Promise.all([t(),a(15e3)]);if(!E||!p)throw r("linkAccount","onError",e.PrivyErrorCode.MUST_BE_AUTHENTICATED,{linkMethod:"siwe"}),new e.PrivyClientError("User must be authenticated before linking an account.");let{address:f}=await E.importWallet({privateKey:d,accessToken:p,chainType:s,mode:u,additionalSigners:c}),h=await i(),y="solana"===s?n.getImportedPrivySolanaWallets(h):n.getImportedPrivyEthereumWallets(h),m=y?.find((e=>e.address===f));if(!m)throw r("createWallet","onError",e.PrivyErrorCode.UNKNOWN_EMBEDDED_WALLET_ERROR),Error("Failed to import wallet");return r("createWallet","onSuccess",{wallet:m}),m},h=()=>{let{user:r}=n.usePrivyContext(),{client:i,refreshSessionAndUser:o,initializeWalletProxy:l}=e.usePrivyInternal(),d=a.useEmitPrivyEvent(),s=a.useAppConfig();return{importWallet:t.useCallback((({privateKey:e,additionalSigners:t})=>f({getAccessToken:()=>i.getAccessToken(),user:r,initializeWalletProxy:l,refreshSessionAndUser:o,emitPrivyEvent:d,appConfig:s},{privateKey:e,chainType:"ethereum",additionalSigners:t})),[r,i,o,l,d,s])}};exports.extractChainIdFromCAIP2=i,exports.filterSupportedOptions=o,exports.importWallet=f,exports.isFirstClassChainWallet=function(e){return["ethereum","solana"].includes(e.chainType)},exports.prepareFundingModalData=({address:r,appConfig:t,fundWalletConfig:n,methodScreen:a,chainIdOverride:d,comingFromSendTransactionScreen:s=!1})=>{let c,u;if(!t.fundingConfig)throw Error("Wallet funding is not enabled");let p=o(t.fundingConfig.options);if(p.length<1)throw Error("Wallet funding is not enabled");c=d||(n?.chain?n.chain.id:i(t.fundingConfig.defaultRecommendedCurrency.chain));let E=t.chains.find((e=>e.id===c));if(!E)throw new e.PrivyClientError(`Funding chain ${c} is not in PrivyProvider chains list`);let f=n?.amount??t.fundingConfig.defaultRecommendedAmount,h=!1;function y(){if(!c)return;let e=l[c];p.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."),u=e,h=!0}n&&"asset"in n?"USDC"===n.asset?y():"string"!=typeof n.asset&&"erc20"in n.asset&&(h=((e,r)=>e===l[r.id])(u=n.asset.erc20,E)):"USDC"===t.fundingConfig.defaultRecommendedCurrency.asset&&y();let m=n?.defaultFundingMethod;return{chainType:"ethereum",address:r,amount:f,chain:E,erc20Address:u,erc20ContractInfo:h?{symbol:"USDC",decimals:6}:void 0,isUSDC:h,methodScreen:a,supportedOptions:p,comingFromSendTransactionScreen:s,defaultFundingMethod:m,usingDefaultFundingMethod:!!m,preferredCardProvider:n?.card?.preferredProvider,crossChainBridgingEnabled:t.fundingConfig.crossChainBridgingEnabled??!1,solanaChain:"solana:mainnet",uiConfig:n&&"uiConfig"in n?n.uiConfig:void 0,externalSolanaFundingScreen:null}},exports.prepareSolanaFundingModalData=function({address:e,fundWalletConfig:r,appConfig:t,comingFromSendTransactionScreen:n,externalSolanaFundingScreen:a,methodScreen:i}){if(!t.fundingConfig)throw Error("Wallet funding is not enabled");let l=o(t.fundingConfig.options);if(l.length<1)throw Error("Wallet funding is not enabled");if("USDC"===r?.asset&&"solana:testnet"===r?.chain)throw Error("USDC funding is not supported on the Solana testnet");let d=r?.amount??t.fundingConfig.defaultRecommendedAmount,s=r?.defaultFundingMethod;return{chainType:"solana",address:e,supportedOptions:l,amount:d,isUSDC:"USDC"===r?.asset,methodScreen:i,comingFromSendTransactionScreen:n,chain:r?.chain||"solana:mainnet",crossChainBridgingEnabled:t.fundingConfig.crossChainBridgingEnabled??!1,defaultFundingMethod:s,preferredCardProvider:r?.card?.preferredProvider,usingDefaultFundingMethod:!!s,uiConfig:r?.uiConfig,externalSolanaFundingScreen:a}},exports.useCreateWallet=E,exports.useCreateWalletInternal=p,exports.useImportWallet=h,exports.usePrivy=()=>{let{importWallet:e}=h(),{createWallet:r}=E();return{...t.useContext(n.PrivyContext),importWallet:e,createWallet:r}};
1
+ "use strict";var e=require("./internal-context-CeWKmK5u.js"),r=require("@privy-io/js-sdk-core"),t=require("react"),n=require("./EmbeddedWalletConnectingScreen-jOWUCqZg.js"),a=require("./events-context-PZ26oAHB.js");function i(e){let r=e.replace("eip155:","");if(r)return parseInt(r);throw Error("Chain ID not compatible with CAIP-2 format.")}const o=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)))),l={[r.mainnet.id]:"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",[r.sepolia.id]:"0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238",[r.optimism.id]:"0x0b2c639c533813f4aa9d7837caf62653d097ff85",[r.optimismSepolia.id]:"0x5fd84259d66Cd46123540766Be93DFE6D43130D7",[r.polygon.id]:"0x3c499c542cef5e3811e1192ce70d8cc03d5c3359",[r.polygonAmoy.id]:"0x41e94eb019c0762f9bfcf9fb1e58725bfb0e7582",[r.base.id]:"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",[r.baseSepolia.id]:"0x036CbD53842c5426634e7929541eC2318f3dCF7e",[r.avalanche.id]:"0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E",[r.avalancheFuji.id]:"0x5425890298aed601595a70ab815c96711a31bc65",[r.arbitrum.id]:"0xaf88d065e77c8cC2239327C5EDb3A432268e5831",[r.arbitrumSepolia.id]:"0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d"};const d=e=>e.reduce(((e,r)=>!e||e.walletIndex<r.walletIndex?r:e),null),s=async({appConfig:r,getAccessToken:t,initializeWalletProxy:a,user:i,privy:o,emitPrivyEvent:l,recoverEmbeddedWallet:s,setModalData:u,openModal:p,setUser:E,options:f,timeoutDuration:h,refreshSessionAndUser:y,chainType:m})=>{let[v,g]=await Promise.all([a(h),t()]);if(!g||!i)throw l("createWallet","onError",e.PrivyErrorCode.MUST_BE_AUTHENTICATED),Error("User must be authenticated before creating a Privy wallet");if(!v&&r.customAuth?.enabled)throw l("createWallet","onError",e.PrivyErrorCode.UNKNOWN_EMBEDDED_WALLET_ERROR),Error("Failed to connect to wallet proxy");if(f&&"walletIndex"in f&&"number"==typeof f.walletIndex){if("user-controlled-server-wallets-only"===r.embeddedWallets.mode)throw l("createWallet","onError",e.PrivyErrorCode.INVALID_DATA),Error("Invalid input, use `createAdditional` instead of `walletIndex` to create additional wallets.");return c({accessToken:g,appConfig:r,privy:o,emitPrivyEvent:l,openModal:p,proxy:v,refreshSessionAndUser:y,recoverEmbeddedWallet:s,setModalData:u,user:i,walletIndex:f.walletIndex,chainType:m,setUser:E})}let C=f&&"createAdditional"in f&&f.createAdditional,w=n.getPrivyWalletsWithFilter(i,{chainType:m});if(w[0]&&!C)throw l("createWallet","onError",e.PrivyErrorCode.EMBEDDED_WALLET_ALREADY_EXISTS),Error("User already has an embedded wallet.");return c({accessToken:g,appConfig:r,privy:o,emitPrivyEvent:l,openModal:p,proxy:v,recoverEmbeddedWallet:s,setModalData:u,user:i,walletIndex:(d(w)?.walletIndex??-1)+1,chainType:m,refreshSessionAndUser:y,setUser:E})};let c=async({accessToken:r,appConfig:t,privy:a,emitPrivyEvent:i,proxy:o,refreshSessionAndUser:l,recoverEmbeddedWallet:d,user:s,walletIndex:c,setModalData:p,openModal:E,chainType:f,setUser:h})=>{if(c<0)throw i("createWallet","onError",e.PrivyErrorCode.EMBEDDED_WALLET_CREATE_ERROR),Error(`A negative walletIndex (${c}) is invalid.`);let y=n.getPrivyPrimaryWallet(s);if(c>0&&!y)throw i("createWallet","onError",e.PrivyErrorCode.EMBEDDED_WALLET_NOT_FOUND),Error("Must have an existing embedded wallet to create an additional wallet.");if(t.embeddedWallets.requireUserOwnedRecoveryOnCreate&&"user-controlled-server-wallets-only"===t.embeddedWallets.mode)throw i("createWallet","onError",e.PrivyErrorCode.EMBEDDED_WALLET_CREATE_ERROR),Error("User owned recovery not yet supported for this app.");if(!y&&t.embeddedWallets.requireUserOwnedRecoveryOnCreate)return await u({emitPrivyEvent:i,setModalData:p,openModal:E,chainType:f});let m=n.getPrivyWalletsWithFilter(s,{chainType:f,walletIndex:c})[0];if(m)return{user:s,account:m};if(0===c&&!o)return u({emitPrivyEvent:i,setModalData:p,openModal:E,chainType:f});if(!o)throw i("createWallet","onError",e.PrivyErrorCode.UNKNOWN_EMBEDDED_WALLET_ERROR),Error("Failed to connect to wallet proxy");return n.createWalletAtIndex({appConfig:t,walletIndex:c,chainType:f,user:s,accessToken:r,proxy:o,refreshSessionAndUser:l,privy:a,recoverEmbeddedWallet:d,setUser:h})},u=async({emitPrivyEvent:r,setModalData:t,openModal:a,chainType:i})=>new Promise(((o,l)=>{t({createWallet:{onSuccess:({user:e,account:t})=>{r("createWallet","onSuccess",{wallet:t}),o({user:e,account:t})},onFailure:t=>{r("createWallet","onError",e.PrivyErrorCode.UNKNOWN_EMBEDDED_WALLET_ERROR),l(t)},callAuthOnSuccessOnClose:!1,shouldCreateEth:"ethereum"===i,shouldCreateSol:"solana"===i}}),a(n.EmbeddedWalletOnAccountCreateScreen)}));const p=()=>{let r=a.useAppConfig(),t=a.useEmitPrivyEvent(),{setModalData:i}=n.usePrivyModal(),{initializeWalletProxy:o,recoverEmbeddedWallet:l,setUser:d,openModal:c,refreshSessionAndUser:u,privy:p,client:E}=e.usePrivyInternal();return{create:async({chainType:n,options:f,latestUser:h})=>{let y=h;if(y||(y=await u()),!y)throw t("createWallet","onError",e.PrivyErrorCode.MUST_BE_AUTHENTICATED),Error("User must be authenticated before creating a Privy wallet");return await s({appConfig:r,privy:p,getAccessToken:()=>E.getAccessToken(),refreshSessionAndUser:u,initializeWalletProxy:o,user:y,emitPrivyEvent:t,recoverEmbeddedWallet:l,setModalData:i,openModal:c,setUser:d,options:f,timeoutDuration:a.WALLET_PROXY_TIMEOUT,chainType:n})}}};function E(e){let{create:r}=p();return a.usePrivyEventSubscription("createWallet",e),{createWallet:async e=>{e&&"target"in e&&e&&(e=void 0);let{account:t}=await r({chainType:"ethereum",options:e});return t}}}const f=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",e.PrivyErrorCode.MUST_BE_AUTHENTICATED,{linkMethod:"siwe"}),new e.PrivyClientError("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.PrivyClientError("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[p,E]=await Promise.all([t(),a(15e3)]);if(!E||!p)throw r("linkAccount","onError",e.PrivyErrorCode.MUST_BE_AUTHENTICATED,{linkMethod:"siwe"}),new e.PrivyClientError("User must be authenticated before linking an account.");let{address:f}=await E.importWallet({privateKey:d,accessToken:p,chainType:s,mode:u,additionalSigners:c}),h=await i(),y="solana"===s?n.getImportedPrivySolanaWallets(h):n.getImportedPrivyEthereumWallets(h),m=y?.find((e=>e.address===f));if(!m)throw r("createWallet","onError",e.PrivyErrorCode.UNKNOWN_EMBEDDED_WALLET_ERROR),Error("Failed to import wallet");return r("createWallet","onSuccess",{wallet:m}),m},h=()=>{let{user:r}=n.usePrivyContext(),{client:i,refreshSessionAndUser:o,initializeWalletProxy:l}=e.usePrivyInternal(),d=a.useEmitPrivyEvent(),s=a.useAppConfig();return{importWallet:t.useCallback((({privateKey:e,additionalSigners:t})=>f({getAccessToken:()=>i.getAccessToken(),user:r,initializeWalletProxy:l,refreshSessionAndUser:o,emitPrivyEvent:d,appConfig:s},{privateKey:e,chainType:"ethereum",additionalSigners:t})),[r,i,o,l,d,s])}};exports.extractChainIdFromCAIP2=i,exports.filterSupportedOptions=o,exports.importWallet=f,exports.isFirstClassChainWallet=function(e){return["ethereum","solana"].includes(e.chainType)},exports.prepareFundingModalData=({address:r,appConfig:t,fundWalletConfig:n,methodScreen:a,chainIdOverride:d,comingFromSendTransactionScreen:s=!1})=>{let c,u;if(!t.fundingConfig)throw Error("Wallet funding is not enabled");let p=o(t.fundingConfig.options);if(p.length<1)throw Error("Wallet funding is not enabled");c=d||(n?.chain?n.chain.id:i(t.fundingConfig.defaultRecommendedCurrency.chain));let E=t.chains.find((e=>e.id===c));if(!E)throw new e.PrivyClientError(`Funding chain ${c} is not in PrivyProvider chains list`);let f=n?.amount??t.fundingConfig.defaultRecommendedAmount,h=!1;function y(){if(!c)return;let e=l[c];p.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."),u=e,h=!0}n&&"asset"in n?"USDC"===n.asset?y():"string"!=typeof n.asset&&"erc20"in n.asset&&(h=((e,r)=>e===l[r.id])(u=n.asset.erc20,E)):"USDC"===t.fundingConfig.defaultRecommendedCurrency.asset&&y();let m=n?.defaultFundingMethod;return{chainType:"ethereum",address:r,amount:f,chain:E,erc20Address:u,erc20ContractInfo:h?{symbol:"USDC",decimals:6}:void 0,isUSDC:h,methodScreen:a,supportedOptions:p,comingFromSendTransactionScreen:s,defaultFundingMethod:m,usingDefaultFundingMethod:!!m,preferredCardProvider:n?.card?.preferredProvider,crossChainBridgingEnabled:t.fundingConfig.crossChainBridgingEnabled??!1,solanaChain:"solana:mainnet",uiConfig:n&&"uiConfig"in n?n.uiConfig:void 0,externalSolanaFundingScreen:null}},exports.prepareSolanaFundingModalData=function({address:e,fundWalletConfig:r,appConfig:t,comingFromSendTransactionScreen:n,externalSolanaFundingScreen:a,methodScreen:i}){if(!t.fundingConfig)throw Error("Wallet funding is not enabled");let l=o(t.fundingConfig.options);if(l.length<1)throw Error("Wallet funding is not enabled");if("USDC"===r?.asset&&"solana:testnet"===r?.chain)throw Error("USDC funding is not supported on the Solana testnet");let d=r?.amount??t.fundingConfig.defaultRecommendedAmount,s=r?.defaultFundingMethod;return{chainType:"solana",address:e,supportedOptions:l,amount:d,isUSDC:"USDC"===r?.asset,methodScreen:i,comingFromSendTransactionScreen:n,chain:r?.chain||"solana:mainnet",crossChainBridgingEnabled:t.fundingConfig.crossChainBridgingEnabled??!1,defaultFundingMethod:s,preferredCardProvider:r?.card?.preferredProvider,usingDefaultFundingMethod:!!s,uiConfig:r?.uiConfig,externalSolanaFundingScreen:a}},exports.useCreateWallet=E,exports.useCreateWalletInternal=p,exports.useImportWallet=h,exports.usePrivy=()=>{let{importWallet:e}=h(),{createWallet:r}=E();return{...t.useContext(n.PrivyContext),importWallet:e,createWallet:r}};
@@ -1,5 +1,5 @@
1
1
  import { Chain } from '@privy-io/js-sdk-core';
2
- import { U as User, L as LoginMethod, a as LinkedAccountWithMetadata, P as PrivyErrorCode, B as BaseConnectedEthereumWallet, b as BaseConnectedSolanaWallet, W as Wallet, M as MfaMethod, c as UserRecoveryMethod, O as OAuthTokens, F as FundingMethod, S as SolanaChain } from './types-C4KyGxEF.js';
2
+ import { U as User, L as LoginMethod, a as LinkedAccountWithMetadata, P as PrivyErrorCode, B as BaseConnectedEthereumWallet, b as BaseConnectedSolanaWallet, W as Wallet, M as MfaMethod, c as UserRecoveryMethod, O as OAuthTokens, F as FundingMethod, S as SolanaChain } from './types-CjeRoR7y.js';
3
3
 
4
4
  /**
5
5
  * `CallbackError` optionally includes a second parameter with further error details.
@@ -1,5 +1,5 @@
1
1
  import { Chain } from '@privy-io/js-sdk-core';
2
- import { U as User, L as LoginMethod, a as LinkedAccountWithMetadata, P as PrivyErrorCode, B as BaseConnectedEthereumWallet, b as BaseConnectedSolanaWallet, W as Wallet, M as MfaMethod, c as UserRecoveryMethod, O as OAuthTokens, F as FundingMethod, S as SolanaChain } from './types-C4KyGxEF.js';
2
+ import { U as User, L as LoginMethod, a as LinkedAccountWithMetadata, P as PrivyErrorCode, B as BaseConnectedEthereumWallet, b as BaseConnectedSolanaWallet, W as Wallet, M as MfaMethod, c as UserRecoveryMethod, O as OAuthTokens, F as FundingMethod, S as SolanaChain } from './types-CjeRoR7y.js';
3
3
 
4
4
  /**
5
5
  * `CallbackError` optionally includes a second parameter with further error details.
@@ -1,5 +1,5 @@
1
1
  import { ExtendedChainType, WalletResponseType, CurveSigningChainType } from '@privy-io/public-api';
2
- import { U as User } from './types-C4KyGxEF.js';
2
+ import { U as User } from './types-CjeRoR7y.js';
3
3
  import '@coinbase/wallet-sdk';
4
4
  import '@simplewebauthn/browser';
5
5
  import '@solana/kit';
@@ -1,5 +1,5 @@
1
1
  import { ExtendedChainType, WalletResponseType, CurveSigningChainType } from '@privy-io/public-api';
2
- import { U as User } from './types-C4KyGxEF.js';
2
+ import { U as User } from './types-CjeRoR7y.js';
3
3
  import '@coinbase/wallet-sdk';
4
4
  import '@simplewebauthn/browser';
5
5
  import '@solana/kit';
@@ -1,4 +1,4 @@
1
- import { d as LoginToMiniApp, U as User } from './types-C4KyGxEF.js';
1
+ import { d as LoginToMiniApp, U as User } from './types-CjeRoR7y.js';
2
2
  import '@coinbase/wallet-sdk';
3
3
  import '@simplewebauthn/browser';
4
4
  import '@solana/kit';
@@ -1,4 +1,4 @@
1
- import { d as LoginToMiniApp, U as User } from './types-C4KyGxEF.js';
1
+ import { d as LoginToMiniApp, U as User } from './types-CjeRoR7y.js';
2
2
  import '@coinbase/wallet-sdk';
3
3
  import '@simplewebauthn/browser';
4
4
  import '@solana/kit';
@@ -1,7 +1,7 @@
1
1
  import * as react from 'react';
2
2
  import react__default, { MouseEvent } from 'react';
3
- import { k as MfaSubmitArgs, c as UserRecoveryMethod, g as SessionSignerInput, E as EthereumRpcRequestType, l as SolanaRpcRequestType, m as EthereumRpcResponseType, n as SolanaRpcResponseType, o as PrivyFarcasterSignerInitResponse, p as EIP1193Provider, q as EntropyIdVerifier$1, H as HDWalletWithMetadata, r as RequestArguments, s as WalletConnector, B as BaseConnectedEthereumWallet, u as PrivyProxyProvider, v as WalletClientType, w as ConnectedWalletMetadata, x as PrivyClientConfig, y as ConnectorType, z as SetBaseAccountSdkType, A as WalletListEntry, D as AppConfig, G as BaseConnectedWallet, j as SolanaWalletConnector, U as User, I as ConnectWalletModalOptions, J as LoginModalOptions, C as CreateWalletOptions, W as Wallet, K as SetWalletRecoveryOptions, f as SignMessageModalUIOptions, N as SignTypedDataParams, M as MfaMethod, Q as UnsignedTransactionRequest, e as SendTransactionModalUIOptions, T as FundWalletConfig, V as ConnectedWallet, O as OAuthTokens, X as CrossAppProviderDetails, Y as MoonpaySignRequest, Z as MoonpaySignResponse, _ as SmartWalletConfig, $ as SiwsMessageType, L as LoginMethod, a0 as ExternalWalletMetadata, a1 as TelegramAuthResult, a2 as TelegramWebAppData, a3 as OAuthUserInfo, a4 as OAuthFlowState, a5 as LoginWithCode, a6 as OtpFlowState, a7 as PasskeyFlowState, a8 as SiweFlowState, a as LinkedAccountWithMetadata, a9 as BaseAccountSdkType, aa as UnsignedTransactionRequestWithChainId, ab as BaseConnectedWalletType, b as BaseConnectedSolanaWallet, ac as TelegramAuthFlowState } from './types-C4KyGxEF.js';
4
- export { au as Apple, aH as AppleOAuthWithMetadata, aP as ContractUIOptions, ay as CrossAppAccount, aK as CrossAppAccountWithMetadata, ar as Discord, aC as DiscordOAuthWithMetadata, aM as Email, am as EmailWithMetadata, aS as Farcaster, aI as FarcasterWithMetadata, as as Github, aD as GithubOAuthWithMetadata, ap as Google, aA as GoogleOAuthWithMetadata, aw as Line, aF as LineOAuthWithMetadata, az as LinkedAccountType, at as LinkedIn, aG as LinkedInOAuthWithMetadata, aU as LoginMethodOrderOption, ae as MessageTypes, ag as MoonpayCurrencyCode, ah as MoonpayPaymentMethod, aQ as NativeFundingConfig, al as NonEmptyArray, aT as Passkey, aL as PasskeyWithMetadata, aN as Phone, an as PhoneWithMetadata, aR as PriceDisplayOptions, P as PrivyErrorCode, ai as Quantity, aV as SiwsFlowState, af as SmartWallet, ax as Telegram, aJ as TelegramWithMetadata, av as Tiktok, aE as TiktokOAuthWithMetadata, aj as TransactionLog, ak as TransactionReceipt, aO as TransactionUIOptions, aq as Twitter, aB as TwitterOAuthWithMetadata, ad as TypedMessage, ao as WalletWithMetadata } from './types-C4KyGxEF.js';
3
+ import { k as MfaSubmitArgs, c as UserRecoveryMethod, g as SessionSignerInput, E as EthereumRpcRequestType, l as SolanaRpcRequestType, m as EthereumRpcResponseType, n as SolanaRpcResponseType, o as PrivyFarcasterSignerInitResponse, p as EIP1193Provider, q as EntropyIdVerifier$1, H as HDWalletWithMetadata, r as RequestArguments, s as WalletConnector, B as BaseConnectedEthereumWallet, u as PrivyProxyProvider, v as WalletClientType, w as ConnectedWalletMetadata, x as PrivyClientConfig, y as ConnectorType, z as SetBaseAccountSdkType, A as WalletListEntry, D as AppConfig, G as BaseConnectedWallet, j as SolanaWalletConnector, U as User, I as ConnectWalletModalOptions, J as LoginModalOptions, C as CreateWalletOptions, W as Wallet, K as SetWalletRecoveryOptions, f as SignMessageModalUIOptions, N as SignTypedDataParams, M as MfaMethod, Q as UnsignedTransactionRequest, e as SendTransactionModalUIOptions, T as FundWalletConfig, V as ConnectedWallet, O as OAuthTokens, X as CrossAppProviderDetails, Y as MoonpaySignRequest, Z as MoonpaySignResponse, _ as SmartWalletConfig, $ as SiwsMessageType, L as LoginMethod, a0 as ExternalWalletMetadata, a1 as TelegramAuthResult, a2 as TelegramWebAppData, a3 as OAuthUserInfo, a4 as OAuthFlowState, a5 as LoginWithCode, a6 as OtpFlowState, a7 as PasskeyFlowState, a8 as SiweFlowState, a as LinkedAccountWithMetadata, a9 as BaseAccountSdkType, aa as UnsignedTransactionRequestWithChainId, ab as BaseConnectedWalletType, b as BaseConnectedSolanaWallet, ac as TelegramAuthFlowState } from './types-CjeRoR7y.js';
4
+ export { au as Apple, aH as AppleOAuthWithMetadata, aP as ContractUIOptions, ay as CrossAppAccount, aK as CrossAppAccountWithMetadata, ar as Discord, aC as DiscordOAuthWithMetadata, aM as Email, am as EmailWithMetadata, aS as Farcaster, aI as FarcasterWithMetadata, as as Github, aD as GithubOAuthWithMetadata, ap as Google, aA as GoogleOAuthWithMetadata, aw as Line, aF as LineOAuthWithMetadata, az as LinkedAccountType, at as LinkedIn, aG as LinkedInOAuthWithMetadata, aU as LoginMethodOrderOption, ae as MessageTypes, ag as MoonpayCurrencyCode, ah as MoonpayPaymentMethod, aQ as NativeFundingConfig, al as NonEmptyArray, aT as Passkey, aL as PasskeyWithMetadata, aN as Phone, an as PhoneWithMetadata, aR as PriceDisplayOptions, P as PrivyErrorCode, aW as PrivyI18nStrings, ai as Quantity, aV as SiwsFlowState, af as SmartWallet, ax as Telegram, aJ as TelegramWithMetadata, av as Tiktok, aE as TiktokOAuthWithMetadata, aj as TransactionLog, ak as TransactionReceipt, aO as TransactionUIOptions, aq as Twitter, aB as TwitterOAuthWithMetadata, ad as TypedMessage, ao as WalletWithMetadata } from './types-CjeRoR7y.js';
5
5
  import * as react_jsx_runtime from 'react/jsx-runtime';
6
6
  import { TurnstileProps } from '@marsidev/react-turnstile';
7
7
  import EventEmitter from 'eventemitter3';
@@ -15,8 +15,8 @@ import { Address, HttpTransport, Hex } from 'viem';
15
15
  import * as _simplewebauthn_browser from '@simplewebauthn/browser';
16
16
  import { PublicKeyCredentialRequestOptionsJSON } from '@simplewebauthn/browser';
17
17
  import { FetchOptions } from 'ofetch';
18
- import { P as PrivyEvents } from './events-context-DB3Pn5Hg.js';
19
- export { C as CallbackError } from './events-context-DB3Pn5Hg.js';
18
+ import { P as PrivyEvents } from './events-context-Dr3UkLLW.js';
19
+ export { C as CallbackError } from './events-context-Dr3UkLLW.js';
20
20
  import * as viem_accounts from 'viem/accounts';
21
21
  import '@coinbase/wallet-sdk';
22
22
  import '@solana/kit';
@@ -1,7 +1,7 @@
1
1
  import * as react from 'react';
2
2
  import react__default, { MouseEvent } from 'react';
3
- import { k as MfaSubmitArgs, c as UserRecoveryMethod, g as SessionSignerInput, E as EthereumRpcRequestType, l as SolanaRpcRequestType, m as EthereumRpcResponseType, n as SolanaRpcResponseType, o as PrivyFarcasterSignerInitResponse, p as EIP1193Provider, q as EntropyIdVerifier$1, H as HDWalletWithMetadata, r as RequestArguments, s as WalletConnector, B as BaseConnectedEthereumWallet, u as PrivyProxyProvider, v as WalletClientType, w as ConnectedWalletMetadata, x as PrivyClientConfig, y as ConnectorType, z as SetBaseAccountSdkType, A as WalletListEntry, D as AppConfig, G as BaseConnectedWallet, j as SolanaWalletConnector, U as User, I as ConnectWalletModalOptions, J as LoginModalOptions, C as CreateWalletOptions, W as Wallet, K as SetWalletRecoveryOptions, f as SignMessageModalUIOptions, N as SignTypedDataParams, M as MfaMethod, Q as UnsignedTransactionRequest, e as SendTransactionModalUIOptions, T as FundWalletConfig, V as ConnectedWallet, O as OAuthTokens, X as CrossAppProviderDetails, Y as MoonpaySignRequest, Z as MoonpaySignResponse, _ as SmartWalletConfig, $ as SiwsMessageType, L as LoginMethod, a0 as ExternalWalletMetadata, a1 as TelegramAuthResult, a2 as TelegramWebAppData, a3 as OAuthUserInfo, a4 as OAuthFlowState, a5 as LoginWithCode, a6 as OtpFlowState, a7 as PasskeyFlowState, a8 as SiweFlowState, a as LinkedAccountWithMetadata, a9 as BaseAccountSdkType, aa as UnsignedTransactionRequestWithChainId, ab as BaseConnectedWalletType, b as BaseConnectedSolanaWallet, ac as TelegramAuthFlowState } from './types-C4KyGxEF.js';
4
- export { au as Apple, aH as AppleOAuthWithMetadata, aP as ContractUIOptions, ay as CrossAppAccount, aK as CrossAppAccountWithMetadata, ar as Discord, aC as DiscordOAuthWithMetadata, aM as Email, am as EmailWithMetadata, aS as Farcaster, aI as FarcasterWithMetadata, as as Github, aD as GithubOAuthWithMetadata, ap as Google, aA as GoogleOAuthWithMetadata, aw as Line, aF as LineOAuthWithMetadata, az as LinkedAccountType, at as LinkedIn, aG as LinkedInOAuthWithMetadata, aU as LoginMethodOrderOption, ae as MessageTypes, ag as MoonpayCurrencyCode, ah as MoonpayPaymentMethod, aQ as NativeFundingConfig, al as NonEmptyArray, aT as Passkey, aL as PasskeyWithMetadata, aN as Phone, an as PhoneWithMetadata, aR as PriceDisplayOptions, P as PrivyErrorCode, ai as Quantity, aV as SiwsFlowState, af as SmartWallet, ax as Telegram, aJ as TelegramWithMetadata, av as Tiktok, aE as TiktokOAuthWithMetadata, aj as TransactionLog, ak as TransactionReceipt, aO as TransactionUIOptions, aq as Twitter, aB as TwitterOAuthWithMetadata, ad as TypedMessage, ao as WalletWithMetadata } from './types-C4KyGxEF.js';
3
+ import { k as MfaSubmitArgs, c as UserRecoveryMethod, g as SessionSignerInput, E as EthereumRpcRequestType, l as SolanaRpcRequestType, m as EthereumRpcResponseType, n as SolanaRpcResponseType, o as PrivyFarcasterSignerInitResponse, p as EIP1193Provider, q as EntropyIdVerifier$1, H as HDWalletWithMetadata, r as RequestArguments, s as WalletConnector, B as BaseConnectedEthereumWallet, u as PrivyProxyProvider, v as WalletClientType, w as ConnectedWalletMetadata, x as PrivyClientConfig, y as ConnectorType, z as SetBaseAccountSdkType, A as WalletListEntry, D as AppConfig, G as BaseConnectedWallet, j as SolanaWalletConnector, U as User, I as ConnectWalletModalOptions, J as LoginModalOptions, C as CreateWalletOptions, W as Wallet, K as SetWalletRecoveryOptions, f as SignMessageModalUIOptions, N as SignTypedDataParams, M as MfaMethod, Q as UnsignedTransactionRequest, e as SendTransactionModalUIOptions, T as FundWalletConfig, V as ConnectedWallet, O as OAuthTokens, X as CrossAppProviderDetails, Y as MoonpaySignRequest, Z as MoonpaySignResponse, _ as SmartWalletConfig, $ as SiwsMessageType, L as LoginMethod, a0 as ExternalWalletMetadata, a1 as TelegramAuthResult, a2 as TelegramWebAppData, a3 as OAuthUserInfo, a4 as OAuthFlowState, a5 as LoginWithCode, a6 as OtpFlowState, a7 as PasskeyFlowState, a8 as SiweFlowState, a as LinkedAccountWithMetadata, a9 as BaseAccountSdkType, aa as UnsignedTransactionRequestWithChainId, ab as BaseConnectedWalletType, b as BaseConnectedSolanaWallet, ac as TelegramAuthFlowState } from './types-CjeRoR7y.js';
4
+ export { au as Apple, aH as AppleOAuthWithMetadata, aP as ContractUIOptions, ay as CrossAppAccount, aK as CrossAppAccountWithMetadata, ar as Discord, aC as DiscordOAuthWithMetadata, aM as Email, am as EmailWithMetadata, aS as Farcaster, aI as FarcasterWithMetadata, as as Github, aD as GithubOAuthWithMetadata, ap as Google, aA as GoogleOAuthWithMetadata, aw as Line, aF as LineOAuthWithMetadata, az as LinkedAccountType, at as LinkedIn, aG as LinkedInOAuthWithMetadata, aU as LoginMethodOrderOption, ae as MessageTypes, ag as MoonpayCurrencyCode, ah as MoonpayPaymentMethod, aQ as NativeFundingConfig, al as NonEmptyArray, aT as Passkey, aL as PasskeyWithMetadata, aN as Phone, an as PhoneWithMetadata, aR as PriceDisplayOptions, P as PrivyErrorCode, aW as PrivyI18nStrings, ai as Quantity, aV as SiwsFlowState, af as SmartWallet, ax as Telegram, aJ as TelegramWithMetadata, av as Tiktok, aE as TiktokOAuthWithMetadata, aj as TransactionLog, ak as TransactionReceipt, aO as TransactionUIOptions, aq as Twitter, aB as TwitterOAuthWithMetadata, ad as TypedMessage, ao as WalletWithMetadata } from './types-CjeRoR7y.js';
5
5
  import * as react_jsx_runtime from 'react/jsx-runtime';
6
6
  import { TurnstileProps } from '@marsidev/react-turnstile';
7
7
  import EventEmitter from 'eventemitter3';
@@ -15,8 +15,8 @@ import { Address, HttpTransport, Hex } from 'viem';
15
15
  import * as _simplewebauthn_browser from '@simplewebauthn/browser';
16
16
  import { PublicKeyCredentialRequestOptionsJSON } from '@simplewebauthn/browser';
17
17
  import { FetchOptions } from 'ofetch';
18
- import { P as PrivyEvents } from './events-context-DB3Pn5Hg.js';
19
- export { C as CallbackError } from './events-context-DB3Pn5Hg.js';
18
+ import { P as PrivyEvents } from './events-context-Dr3UkLLW.js';
19
+ export { C as CallbackError } from './events-context-Dr3UkLLW.js';
20
20
  import * as viem_accounts from 'viem/accounts';
21
21
  import '@coinbase/wallet-sdk';
22
22
  import '@solana/kit';
@@ -1,4 +1,4 @@
1
- import { U as User } from './types-C4KyGxEF.js';
1
+ import { U as User } from './types-CjeRoR7y.js';
2
2
  import '@coinbase/wallet-sdk';
3
3
  import '@simplewebauthn/browser';
4
4
  import '@solana/kit';
@@ -1,4 +1,4 @@
1
- import { U as User } from './types-C4KyGxEF.js';
1
+ import { U as User } from './types-CjeRoR7y.js';
2
2
  import '@coinbase/wallet-sdk';
3
3
  import '@simplewebauthn/browser';
4
4
  import '@solana/kit';
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import react__default from 'react';
3
- import { e as SendTransactionModalUIOptions, f as SignMessageModalUIOptions } from './types-C4KyGxEF.js';
3
+ import { e as SendTransactionModalUIOptions, f as SignMessageModalUIOptions } from './types-CjeRoR7y.js';
4
4
  import { SmartAccountClient } from 'permissionless';
5
5
  import { EIP1193Provider, Chain, PublicClient, HttpTransport, WalletClient, PaymasterRpcSchema, SendTransactionParameters, Hash, SignableMessage, Hex, TypedData, SignTypedDataParameters } from 'viem';
6
6
  import { SmartAccount, SendUserOperationParameters } from 'viem/account-abstraction';
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import react__default from 'react';
3
- import { e as SendTransactionModalUIOptions, f as SignMessageModalUIOptions } from './types-C4KyGxEF.js';
3
+ import { e as SendTransactionModalUIOptions, f as SignMessageModalUIOptions } from './types-CjeRoR7y.js';
4
4
  import { SmartAccountClient } from 'permissionless';
5
5
  import { EIP1193Provider, Chain, PublicClient, HttpTransport, WalletClient, PaymasterRpcSchema, SendTransactionParameters, Hash, SignableMessage, Hex, TypedData, SignTypedDataParameters } from 'viem';
6
6
  import { SmartAccount, SendUserOperationParameters } from 'viem/account-abstraction';
@@ -1,12 +1,12 @@
1
- import { g as SessionSignerInput, W as Wallet, f as SignMessageModalUIOptions, S as SolanaChain, h as SolanaStandardWallet, C as CreateWalletOptions, e as SendTransactionModalUIOptions, i as SolanaFundingConfig } from './types-C4KyGxEF.js';
2
- export { j as SolanaAdapterConnector, t as toSolanaWalletConnectors } from './types-C4KyGxEF.js';
1
+ import { g as SessionSignerInput, W as Wallet, f as SignMessageModalUIOptions, S as SolanaChain, h as SolanaStandardWallet, C as CreateWalletOptions, e as SendTransactionModalUIOptions, i as SolanaFundingConfig } from './types-CjeRoR7y.js';
2
+ export { j as SolanaAdapterConnector, t as toSolanaWalletConnectors } from './types-CjeRoR7y.js';
3
3
  import { SolanaSignAndSendTransactionFeature, SolanaSignTransactionFeature, SolanaSignMessageFeature } from '@solana/wallet-standard-features';
4
4
  import { WalletAccount, WalletIcon, WalletVersion } from '@wallet-standard/base';
5
5
  import { StandardConnectFeature, StandardDisconnectFeature, StandardEventsFeature } from '@wallet-standard/features';
6
6
  import EventEmitter from 'eventemitter3';
7
7
  import { SolanaSignAndSendTransactionOptions, SolanaSignTransactionOptions, ConnectedStandardSolanaWallet } from '@privy-io/js-sdk-core';
8
8
  export { ConnectedStandardSolanaWallet } from '@privy-io/js-sdk-core';
9
- import { P as PrivyEvents } from './events-context-DB3Pn5Hg.js';
9
+ import { P as PrivyEvents } from './events-context-Dr3UkLLW.js';
10
10
  import '@coinbase/wallet-sdk';
11
11
  import '@simplewebauthn/browser';
12
12
  import '@solana/kit';
@@ -1,12 +1,12 @@
1
- import { g as SessionSignerInput, W as Wallet, f as SignMessageModalUIOptions, S as SolanaChain, h as SolanaStandardWallet, C as CreateWalletOptions, e as SendTransactionModalUIOptions, i as SolanaFundingConfig } from './types-C4KyGxEF.js';
2
- export { j as SolanaAdapterConnector, t as toSolanaWalletConnectors } from './types-C4KyGxEF.js';
1
+ import { g as SessionSignerInput, W as Wallet, f as SignMessageModalUIOptions, S as SolanaChain, h as SolanaStandardWallet, C as CreateWalletOptions, e as SendTransactionModalUIOptions, i as SolanaFundingConfig } from './types-CjeRoR7y.js';
2
+ export { j as SolanaAdapterConnector, t as toSolanaWalletConnectors } from './types-CjeRoR7y.js';
3
3
  import { SolanaSignAndSendTransactionFeature, SolanaSignTransactionFeature, SolanaSignMessageFeature } from '@solana/wallet-standard-features';
4
4
  import { WalletAccount, WalletIcon, WalletVersion } from '@wallet-standard/base';
5
5
  import { StandardConnectFeature, StandardDisconnectFeature, StandardEventsFeature } from '@wallet-standard/features';
6
6
  import EventEmitter from 'eventemitter3';
7
7
  import { SolanaSignAndSendTransactionOptions, SolanaSignTransactionOptions, ConnectedStandardSolanaWallet } from '@privy-io/js-sdk-core';
8
8
  export { ConnectedStandardSolanaWallet } from '@privy-io/js-sdk-core';
9
- import { P as PrivyEvents } from './events-context-DB3Pn5Hg.js';
9
+ import { P as PrivyEvents } from './events-context-Dr3UkLLW.js';
10
10
  import '@coinbase/wallet-sdk';
11
11
  import '@simplewebauthn/browser';
12
12
  import '@solana/kit';
@@ -11,6 +11,39 @@ import { SolanaSignMessageFeature, SolanaSignTransactionFeature, SolanaSignAndSe
11
11
  import { StandardConnectFeature, StandardDisconnectFeature, StandardEventsFeature } from '@wallet-standard/features';
12
12
  import EventEmitter from 'eventemitter3';
13
13
 
14
+ /**
15
+ * Internationalization strings for Privy UI components.
16
+ *
17
+ * Keys follow the pattern: `component.semanticDescription`
18
+ */
19
+ type PrivyI18nStrings = {
20
+ 'connectionStatus.successfullyConnected': string;
21
+ 'connectionStatus.errorTitle': string;
22
+ 'connectionStatus.connecting': string;
23
+ 'connectionStatus.connectOneWallet': string;
24
+ 'connectionStatus.checkOtherWindows': string;
25
+ 'connectionStatus.stillHere': string;
26
+ 'connectionStatus.tryConnectingAgain': string;
27
+ 'connectionStatus.or': string;
28
+ 'connectionStatus.useDifferentLink': string;
29
+ 'connectWallet.connectYourWallet': string;
30
+ 'connectWallet.waitingForWallet': string;
31
+ 'connectWallet.connectToAccount': string;
32
+ 'connectWallet.installAndConnect': string;
33
+ 'connectWallet.tryConnectingAgain': string;
34
+ 'connectWallet.openInApp': string;
35
+ 'connectWallet.copyLink': string;
36
+ 'connectWallet.retry': string;
37
+ 'connectWallet.searchPlaceholder': string;
38
+ 'connectWallet.noWalletsFound': string;
39
+ 'connectWallet.lastUsed': string;
40
+ 'connectWallet.selectYourWallet': string;
41
+ 'connectWallet.selectNetwork': string;
42
+ 'connectWallet.goToWallet': string;
43
+ 'connectWallet.scanToConnect': string;
44
+ 'connectWallet.openOrInstall': string;
45
+ };
46
+
14
47
  interface ConnectorEvents {
15
48
  walletsUpdated(): void;
16
49
  initialized(): void;
@@ -1252,6 +1285,34 @@ interface PrivyClientConfig {
1252
1285
  * @default 'US'
1253
1286
  */
1254
1287
  defaultCountry: CountryCode;
1288
+ /**
1289
+ * Custom localization strings for Privy UI components.
1290
+ *
1291
+ * Pass a partial object with only the strings you want to override.
1292
+ * All other strings will fall back to default English values.
1293
+ *
1294
+ * Supports simple template interpolation with {variableName} syntax.
1295
+ *
1296
+ * @experimental This feature is experimental and may change in future releases.
1297
+ *
1298
+ * @example
1299
+ * ```typescript
1300
+ * <PrivyProvider
1301
+ * appId="your-app-id"
1302
+ * config={{
1303
+ * intl: {
1304
+ * textLocalization: {
1305
+ * 'connectWallet.connectYourWallet': 'Connecter un portefeuille',
1306
+ * 'connectionStatus.successfullyConnected': 'Connexion réussie avec {walletName}',
1307
+ * }
1308
+ * }
1309
+ * }}
1310
+ * >
1311
+ * {children}
1312
+ * </PrivyProvider>
1313
+ * ```
1314
+ */
1315
+ textLocalization?: Partial<PrivyI18nStrings>;
1255
1316
  };
1256
1317
  /**
1257
1318
  * This property is only required for apps that use a third-party authentication provider.
@@ -1660,6 +1721,7 @@ type AppConfig = {
1660
1721
  defaultChain: Chain;
1661
1722
  intl: {
1662
1723
  defaultCountry: CountryCode;
1724
+ textLocalization?: Partial<PrivyI18nStrings>;
1663
1725
  };
1664
1726
  customOAuthProviders: PrivyAppResponse['custom_oauth_providers'];
1665
1727
  /**
@@ -2311,4 +2373,4 @@ type EthereumRpcResponseType = eth_signTransactionResponse | eth_populateTransac
2311
2373
  type SolanaRpcRequestType = solana_signMessage;
2312
2374
  type SolanaRpcResponseType = solana_signMessageResponse;
2313
2375
 
2314
- export { type SiwsMessageType as $, type WalletListEntry as A, type BaseConnectedEthereumWallet as B, type CreateWalletOptions as C, type AppConfig as D, type EthereumRpcRequestType as E, type FundingMethod as F, type BaseConnectedWallet as G, type HDWalletWithMetadata as H, type ConnectWalletModalOptions as I, type LoginModalOptions as J, type SetWalletRecoveryOptions as K, type LoginMethod as L, type MfaMethod as M, type SignTypedDataParams as N, type OAuthTokens as O, PrivyErrorCode as P, type UnsignedTransactionRequest as Q, type RuntimeLoginOverridableOptions as R, type SolanaChain as S, type FundWalletConfig as T, type User as U, type ConnectedWallet as V, type Wallet as W, type CrossAppProviderDetails as X, type MoonpaySignRequest as Y, type MoonpaySignResponse as Z, type SmartWalletConfig as _, type LinkedAccountWithMetadata as a, type ExternalWalletMetadata as a0, type TelegramAuthResult as a1, type TelegramWebAppData as a2, type OAuthUserInfo as a3, type OAuthFlowState as a4, type LoginWithCode as a5, type OtpFlowState as a6, type PasskeyFlowState as a7, type SiweFlowState as a8, type BaseAccountSdkType as a9, type GoogleOAuthWithMetadata as aA, type TwitterOAuthWithMetadata as aB, type DiscordOAuthWithMetadata as aC, type GithubOAuthWithMetadata as aD, type TiktokOAuthWithMetadata as aE, type LineOAuthWithMetadata as aF, type LinkedInOAuthWithMetadata as aG, type AppleOAuthWithMetadata as aH, type FarcasterWithMetadata as aI, type TelegramWithMetadata as aJ, type CrossAppAccountWithMetadata as aK, type PasskeyWithMetadata as aL, type Email as aM, type Phone as aN, type TransactionUIOptions as aO, type ContractUIOptions as aP, type NativeFundingConfig as aQ, type PriceDisplayOptions as aR, type Farcaster as aS, type Passkey as aT, type LoginMethodOrderOption as aU, type SiwsFlowState as aV, type UnsignedTransactionRequestWithChainId as aa, type BaseConnectedWalletType as ab, type TelegramAuthFlowState as ac, type TypedMessage as ad, type MessageTypes as ae, type SmartWallet as af, type MoonpayCurrencyCode as ag, type MoonpayPaymentMethod as ah, type Quantity as ai, type TransactionLog as aj, type TransactionReceipt as ak, type NonEmptyArray as al, type EmailWithMetadata as am, type PhoneWithMetadata as an, type WalletWithMetadata as ao, type Google as ap, type Twitter as aq, type Discord as ar, type Github as as, type LinkedIn as at, type Apple as au, type Tiktok as av, type Line as aw, type Telegram as ax, type CrossAppAccount as ay, type LinkedAccountType as az, type BaseConnectedSolanaWallet as b, type UserRecoveryMethod as c, type LoginToMiniApp as d, type SendTransactionModalUIOptions as e, type SignMessageModalUIOptions as f, type SessionSignerInput as g, type SolanaStandardWallet as h, type SolanaFundingConfig as i, SolanaWalletConnector as j, type MfaSubmitArgs as k, type SolanaRpcRequestType as l, type EthereumRpcResponseType as m, type SolanaRpcResponseType as n, type PrivyFarcasterSignerInitResponse as o, type EIP1193Provider as p, type EntropyIdVerifier as q, type RequestArguments as r, WalletConnector as s, toSolanaWalletConnectors as t, PrivyProxyProvider as u, type WalletClientType as v, type ConnectedWalletMetadata as w, type PrivyClientConfig as x, type ConnectorType as y, type SetBaseAccountSdkType as z };
2376
+ export { type SiwsMessageType as $, type WalletListEntry as A, type BaseConnectedEthereumWallet as B, type CreateWalletOptions as C, type AppConfig as D, type EthereumRpcRequestType as E, type FundingMethod as F, type BaseConnectedWallet as G, type HDWalletWithMetadata as H, type ConnectWalletModalOptions as I, type LoginModalOptions as J, type SetWalletRecoveryOptions as K, type LoginMethod as L, type MfaMethod as M, type SignTypedDataParams as N, type OAuthTokens as O, PrivyErrorCode as P, type UnsignedTransactionRequest as Q, type RuntimeLoginOverridableOptions as R, type SolanaChain as S, type FundWalletConfig as T, type User as U, type ConnectedWallet as V, type Wallet as W, type CrossAppProviderDetails as X, type MoonpaySignRequest as Y, type MoonpaySignResponse as Z, type SmartWalletConfig as _, type LinkedAccountWithMetadata as a, type ExternalWalletMetadata as a0, type TelegramAuthResult as a1, type TelegramWebAppData as a2, type OAuthUserInfo as a3, type OAuthFlowState as a4, type LoginWithCode as a5, type OtpFlowState as a6, type PasskeyFlowState as a7, type SiweFlowState as a8, type BaseAccountSdkType as a9, type GoogleOAuthWithMetadata as aA, type TwitterOAuthWithMetadata as aB, type DiscordOAuthWithMetadata as aC, type GithubOAuthWithMetadata as aD, type TiktokOAuthWithMetadata as aE, type LineOAuthWithMetadata as aF, type LinkedInOAuthWithMetadata as aG, type AppleOAuthWithMetadata as aH, type FarcasterWithMetadata as aI, type TelegramWithMetadata as aJ, type CrossAppAccountWithMetadata as aK, type PasskeyWithMetadata as aL, type Email as aM, type Phone as aN, type TransactionUIOptions as aO, type ContractUIOptions as aP, type NativeFundingConfig as aQ, type PriceDisplayOptions as aR, type Farcaster as aS, type Passkey as aT, type LoginMethodOrderOption as aU, type SiwsFlowState as aV, type PrivyI18nStrings as aW, type UnsignedTransactionRequestWithChainId as aa, type BaseConnectedWalletType as ab, type TelegramAuthFlowState as ac, type TypedMessage as ad, type MessageTypes as ae, type SmartWallet as af, type MoonpayCurrencyCode as ag, type MoonpayPaymentMethod as ah, type Quantity as ai, type TransactionLog as aj, type TransactionReceipt as ak, type NonEmptyArray as al, type EmailWithMetadata as am, type PhoneWithMetadata as an, type WalletWithMetadata as ao, type Google as ap, type Twitter as aq, type Discord as ar, type Github as as, type LinkedIn as at, type Apple as au, type Tiktok as av, type Line as aw, type Telegram as ax, type CrossAppAccount as ay, type LinkedAccountType as az, type BaseConnectedSolanaWallet as b, type UserRecoveryMethod as c, type LoginToMiniApp as d, type SendTransactionModalUIOptions as e, type SignMessageModalUIOptions as f, type SessionSignerInput as g, type SolanaStandardWallet as h, type SolanaFundingConfig as i, SolanaWalletConnector as j, type MfaSubmitArgs as k, type SolanaRpcRequestType as l, type EthereumRpcResponseType as m, type SolanaRpcResponseType as n, type PrivyFarcasterSignerInitResponse as o, type EIP1193Provider as p, type EntropyIdVerifier as q, type RequestArguments as r, WalletConnector as s, toSolanaWalletConnectors as t, PrivyProxyProvider as u, type WalletClientType as v, type ConnectedWalletMetadata as w, type PrivyClientConfig as x, type ConnectorType as y, type SetBaseAccountSdkType as z };