@privy-io/react-auth 3.5.1 → 3.6.0-beta-20251104233157
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/{EmbeddedWalletConnectingScreen-i0UDHMDq.js → EmbeddedWalletConnectingScreen-BqfMDyz5.js} +15 -15
- package/dist/cjs/{SignRequestScreen-H5r467q6.js → SignRequestScreen-QZ4hrdFs.js} +1 -1
- package/dist/cjs/abstract-smart-wallets.js +1 -1
- package/dist/cjs/{events-context-Cgq8fGB0.js → events-context-CTzE6voY.js} +1 -1
- package/dist/cjs/extended-chains.js +1 -1
- package/dist/cjs/index.js +3 -3
- package/dist/cjs/internal.js +1 -1
- package/dist/cjs/{smart-wallets-B0bTYa6G.js → smart-wallets-Cre72XH9.js} +1 -1
- package/dist/cjs/smart-wallets.js +1 -1
- package/dist/cjs/solana.js +1 -1
- package/dist/cjs/ui.js +1 -1
- package/dist/cjs/{use-export-wallet-BhYG6ocQ.js → use-export-wallet-BJWkMs42.js} +1 -1
- package/dist/cjs/{useActiveWallet-BoPIudwB.js → useActiveWallet-C6JeGgtY.js} +1 -1
- package/dist/cjs/{usePrivy-CLLJiDdU.js → usePrivy-BD7tV097.js} +1 -1
- package/dist/dts/{events-context-DB3Pn5Hg.d.mts → events-context-B1q54lAU.d.mts} +1 -1
- package/dist/dts/{events-context-DB3Pn5Hg.d.ts → events-context-B1q54lAU.d.ts} +1 -1
- package/dist/dts/extended-chains.d.mts +4 -4
- package/dist/dts/extended-chains.d.ts +4 -4
- package/dist/dts/farcaster.d.mts +2 -2
- package/dist/dts/farcaster.d.ts +2 -2
- package/dist/dts/index.d.mts +17 -16
- package/dist/dts/index.d.ts +17 -16
- package/dist/dts/internal.d.mts +2 -2
- package/dist/dts/internal.d.ts +2 -2
- package/dist/dts/smart-wallets.d.mts +2 -2
- package/dist/dts/smart-wallets.d.ts +2 -2
- package/dist/dts/solana.d.mts +4 -4
- package/dist/dts/solana.d.ts +4 -4
- package/dist/dts/{types-C4KyGxEF.d.mts → types-BSeKsLfK.d.mts} +105 -29
- package/dist/dts/{types-C4KyGxEF.d.ts → types-BSeKsLfK.d.ts} +105 -29
- package/dist/dts/ui.d.mts +2 -2
- package/dist/dts/ui.d.ts +2 -2
- package/dist/esm/{EmbeddedWalletConnectingScreen-BehtOUIO.mjs → EmbeddedWalletConnectingScreen-65UmFx4m.mjs} +16 -16
- package/dist/esm/{SignRequestScreen-W1brL2hg.mjs → SignRequestScreen-C8LUoYDo.mjs} +1 -1
- package/dist/esm/abstract-smart-wallets.mjs +1 -1
- package/dist/esm/events-context-ClMjzU81.mjs +1 -0
- package/dist/esm/extended-chains.mjs +1 -1
- package/dist/esm/index.mjs +3 -3
- package/dist/esm/internal.mjs +1 -1
- package/dist/esm/{smart-wallets-CZ7EzP9s.mjs → smart-wallets-CI9OABOB.mjs} +1 -1
- package/dist/esm/smart-wallets.mjs +1 -1
- package/dist/esm/solana.mjs +1 -1
- package/dist/esm/ui.mjs +1 -1
- package/dist/esm/{use-export-wallet-CPxLgKFx.mjs → use-export-wallet-DgqioSGv.mjs} +1 -1
- package/dist/esm/{useActiveWallet-Bw1ry9JQ.mjs → useActiveWallet-BZjcL2BV.mjs} +1 -1
- package/dist/esm/{usePrivy-BJ3NMQui.mjs → usePrivy-A9QX-DHk.mjs} +1 -1
- package/package.json +4 -4
- 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-CTzE6voY.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-BqfMDyz5.js"),s=require("./internal-context-CeWKmK5u.js"),o=require("./usePrivy-BD7tV097.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-QZ4hrdFs.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(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")})(e);let{signedTransaction:t}=await u({transaction:e,address:d,chain:f,options:{...h,uiOptions:{...h?.uiOptions,showWalletUIs:!1}}}),{signature:a}=await p(f).sendAndConfirmTransaction(t);return{signature:a}}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);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-
|
|
1
|
+
"use strict";var e=require("react"),t=require("./events-context-CTzE6voY.js"),n=require("./EmbeddedWalletConnectingScreen-BqfMDyz5.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-BqfMDyz5.js"),a=require("./events-context-CTzE6voY.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-
|
|
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-BSeKsLfK.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-
|
|
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-BSeKsLfK.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* `CallbackError` optionally includes a second parameter with further error details.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { U as User } from './types-
|
|
1
|
+
import { CurveSigningChainType, Wallet } from '@privy-io/api-types';
|
|
2
|
+
import { U as User } from './types-BSeKsLfK.js';
|
|
3
3
|
import '@coinbase/wallet-sdk';
|
|
4
4
|
import '@simplewebauthn/browser';
|
|
5
5
|
import '@solana/kit';
|
|
@@ -14,11 +14,11 @@ import 'eventemitter3';
|
|
|
14
14
|
|
|
15
15
|
interface CreateWalletInput {
|
|
16
16
|
/** The chain type of the wallet to create. */
|
|
17
|
-
chainType:
|
|
17
|
+
chainType: CurveSigningChainType | 'spark';
|
|
18
18
|
}
|
|
19
19
|
interface CreateWalletOutput {
|
|
20
20
|
user: User;
|
|
21
|
-
wallet:
|
|
21
|
+
wallet: Wallet;
|
|
22
22
|
}
|
|
23
23
|
interface UseCreateWalletInterface {
|
|
24
24
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { U as User } from './types-
|
|
1
|
+
import { CurveSigningChainType, Wallet } from '@privy-io/api-types';
|
|
2
|
+
import { U as User } from './types-BSeKsLfK.js';
|
|
3
3
|
import '@coinbase/wallet-sdk';
|
|
4
4
|
import '@simplewebauthn/browser';
|
|
5
5
|
import '@solana/kit';
|
|
@@ -14,11 +14,11 @@ import 'eventemitter3';
|
|
|
14
14
|
|
|
15
15
|
interface CreateWalletInput {
|
|
16
16
|
/** The chain type of the wallet to create. */
|
|
17
|
-
chainType:
|
|
17
|
+
chainType: CurveSigningChainType | 'spark';
|
|
18
18
|
}
|
|
19
19
|
interface CreateWalletOutput {
|
|
20
20
|
user: User;
|
|
21
|
-
wallet:
|
|
21
|
+
wallet: Wallet;
|
|
22
22
|
}
|
|
23
23
|
interface UseCreateWalletInterface {
|
|
24
24
|
/**
|
package/dist/dts/farcaster.d.mts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { d as LoginToMiniApp, U as User } from './types-
|
|
1
|
+
import { d as LoginToMiniApp, U as User } from './types-BSeKsLfK.js';
|
|
2
2
|
import '@coinbase/wallet-sdk';
|
|
3
3
|
import '@simplewebauthn/browser';
|
|
4
4
|
import '@solana/kit';
|
|
5
5
|
import 'react';
|
|
6
6
|
import 'viem';
|
|
7
|
+
import '@privy-io/api-types';
|
|
7
8
|
import '@privy-io/js-sdk-core';
|
|
8
|
-
import '@privy-io/public-api';
|
|
9
9
|
import '@base-org/account';
|
|
10
10
|
import '@wallet-standard/base';
|
|
11
11
|
import '@solana/wallet-standard-features';
|
package/dist/dts/farcaster.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { d as LoginToMiniApp, U as User } from './types-
|
|
1
|
+
import { d as LoginToMiniApp, U as User } from './types-BSeKsLfK.js';
|
|
2
2
|
import '@coinbase/wallet-sdk';
|
|
3
3
|
import '@simplewebauthn/browser';
|
|
4
4
|
import '@solana/kit';
|
|
5
5
|
import 'react';
|
|
6
6
|
import 'viem';
|
|
7
|
+
import '@privy-io/api-types';
|
|
7
8
|
import '@privy-io/js-sdk-core';
|
|
8
|
-
import '@privy-io/public-api';
|
|
9
9
|
import '@base-org/account';
|
|
10
10
|
import '@wallet-standard/base';
|
|
11
11
|
import '@solana/wallet-standard-features';
|
package/dist/dts/index.d.mts
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
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-
|
|
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-
|
|
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-BSeKsLfK.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-BSeKsLfK.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';
|
|
8
8
|
import { Store, EIP6963ProviderDetail } from 'mipd';
|
|
9
9
|
import Privy, { Chain, RpcConfig, GenerateAuthorizationSignatureInput, GenerateAuthorizationSignatureOutput } from '@privy-io/js-sdk-core';
|
|
10
10
|
export { DEFAULT_SUPPORTED_CHAINS as SUPPORTED_CHAINS, addPrivyRpcToChain, addRpcUrlOverrideToChain } from '@privy-io/js-sdk-core';
|
|
11
|
-
import { FirstClassChainType,
|
|
12
|
-
export { OAuthProviderType } from '@privy-io/
|
|
11
|
+
import { FirstClassChainType, PasskeyAuthenticateRequestBody, SmartWalletType, CustomOAuthProviderID, User as User$1, OAuthProviderID, CoinbaseOnRampInitInput, CoinbaseOnRampInitResponse, CoinbaseOnRampStatusResponse, TransactionScanningRequestBody, TransactionScanningResponseBody } from '@privy-io/api-types';
|
|
12
|
+
export { OAuthProviderID as OAuthProviderType } from '@privy-io/api-types';
|
|
13
13
|
import * as viem from 'viem';
|
|
14
14
|
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-
|
|
19
|
-
export { C as CallbackError } from './events-context-
|
|
18
|
+
import { P as PrivyEvents } from './events-context-B1q54lAU.js';
|
|
19
|
+
export { C as CallbackError } from './events-context-B1q54lAU.js';
|
|
20
20
|
import * as viem_accounts from 'viem/accounts';
|
|
21
21
|
import '@coinbase/wallet-sdk';
|
|
22
22
|
import '@solana/kit';
|
|
@@ -341,7 +341,7 @@ type FarcasterSignerInitRequestDataType = {
|
|
|
341
341
|
address: string;
|
|
342
342
|
hdWalletIndex: number | null;
|
|
343
343
|
accessToken: string;
|
|
344
|
-
mfaCode: string |
|
|
344
|
+
mfaCode: string | PasskeyAuthenticateRequestBody['authenticator_response'] | null;
|
|
345
345
|
mfaMethod: string | null;
|
|
346
346
|
relyingParty: string;
|
|
347
347
|
};
|
|
@@ -350,7 +350,7 @@ type FarcasterSignRequestDataType = {
|
|
|
350
350
|
address: string;
|
|
351
351
|
hdWalletIndex: number | null;
|
|
352
352
|
accessToken: string;
|
|
353
|
-
mfaCode: string |
|
|
353
|
+
mfaCode: string | PasskeyAuthenticateRequestBody['authenticator_response'] | null;
|
|
354
354
|
mfaMethod: string | null;
|
|
355
355
|
relyingParty: string;
|
|
356
356
|
payload: {
|
|
@@ -724,11 +724,11 @@ declare const getPublicClient: (chainId: number, chains: Chain[], rpcConfig: Rpc
|
|
|
724
724
|
verifySiweMessage: (args: {
|
|
725
725
|
blockNumber?: bigint | undefined;
|
|
726
726
|
blockTag?: viem.BlockTag | undefined;
|
|
727
|
-
time?: Date | undefined;
|
|
728
727
|
address?: Address | undefined;
|
|
729
728
|
nonce?: string | undefined;
|
|
730
729
|
domain?: string | undefined;
|
|
731
730
|
scheme?: string | undefined;
|
|
731
|
+
time?: Date | undefined;
|
|
732
732
|
message: string;
|
|
733
733
|
signature: viem.Hex;
|
|
734
734
|
}) => Promise<boolean>;
|
|
@@ -2224,6 +2224,7 @@ declare function errorIndicatesMaxMfaRetries(error: unknown): error is PrivyIfra
|
|
|
2224
2224
|
|
|
2225
2225
|
declare const VERSION = "__VERSION__";
|
|
2226
2226
|
|
|
2227
|
+
type CustomMetadataType = User$1['custom_metadata'];
|
|
2227
2228
|
interface ResponseEmailAccount {
|
|
2228
2229
|
type: 'email';
|
|
2229
2230
|
address: string;
|
|
@@ -2384,7 +2385,7 @@ interface ResponseOAuthApple {
|
|
|
2384
2385
|
latest_verified_at: number | null;
|
|
2385
2386
|
}
|
|
2386
2387
|
interface ResponseOAuthCustom {
|
|
2387
|
-
type:
|
|
2388
|
+
type: CustomOAuthProviderID;
|
|
2388
2389
|
subject: string;
|
|
2389
2390
|
name: string | null;
|
|
2390
2391
|
username: string | null;
|
|
@@ -2656,7 +2657,7 @@ declare class PrivyClient {
|
|
|
2656
2657
|
unlinkPhone(phoneNumber: string): Promise<User>;
|
|
2657
2658
|
unlinkEthereumWallet(address: string): Promise<User>;
|
|
2658
2659
|
unlinkSolanaWallet(address: string): Promise<User>;
|
|
2659
|
-
unlinkOAuth(provider:
|
|
2660
|
+
unlinkOAuth(provider: OAuthProviderID | `privy:${string}`, subject: string): Promise<User>;
|
|
2660
2661
|
unlinkFarcaster(fid: number): Promise<User>;
|
|
2661
2662
|
unlinkTelegram(telegramUserId: string): Promise<User>;
|
|
2662
2663
|
revokeDelegatedWallet(): Promise<void>;
|
|
@@ -2671,10 +2672,10 @@ declare class PrivyClient {
|
|
|
2671
2672
|
};
|
|
2672
2673
|
}): Promise<void>;
|
|
2673
2674
|
signMoonpayOnRampUrl(signRequestData: MoonpaySignRequest): Promise<MoonpaySignResponse>;
|
|
2674
|
-
initCoinbaseOnRamp(input:
|
|
2675
|
+
initCoinbaseOnRamp(input: CoinbaseOnRampInitInput): Promise<CoinbaseOnRampInitResponse>;
|
|
2675
2676
|
getCoinbaseOnRampStatus({ partnerUserId, }: {
|
|
2676
2677
|
partnerUserId: string;
|
|
2677
|
-
}): Promise<
|
|
2678
|
+
}): Promise<CoinbaseOnRampStatusResponse>;
|
|
2678
2679
|
/** DATA METHODS */
|
|
2679
2680
|
/**
|
|
2680
2681
|
* Fetches the currently authenticated user from the API or
|
|
@@ -2804,7 +2805,7 @@ declare class PrivyClient {
|
|
|
2804
2805
|
messageType: SiwsMessageType;
|
|
2805
2806
|
}): Promise<User>;
|
|
2806
2807
|
updateUserAndIdToken(): Promise<User>;
|
|
2807
|
-
scanTransaction(request:
|
|
2808
|
+
scanTransaction(request: TransactionScanningRequestBody): Promise<TransactionScanningResponseBody>;
|
|
2808
2809
|
}
|
|
2809
2810
|
|
|
2810
2811
|
/**
|
|
@@ -2908,7 +2909,7 @@ type UseLoginWithOAuth = {
|
|
|
2908
2909
|
* <Button onPress={() => initOAuth({ provider: 'google' })} /> *
|
|
2909
2910
|
*/
|
|
2910
2911
|
initOAuth: ({ provider, disableSignup, }: {
|
|
2911
|
-
provider:
|
|
2912
|
+
provider: OAuthProviderID;
|
|
2912
2913
|
disableSignup?: boolean;
|
|
2913
2914
|
}) => Promise<void>;
|
|
2914
2915
|
/**
|
|
@@ -3895,7 +3896,7 @@ type UseOAuthTokens = {
|
|
|
3895
3896
|
* This will directly initiate the OAuth flow for an already linked OAuth account.
|
|
3896
3897
|
*/
|
|
3897
3898
|
reauthorize: ({ provider }: {
|
|
3898
|
-
provider:
|
|
3899
|
+
provider: OAuthProviderID;
|
|
3899
3900
|
}) => Promise<void>;
|
|
3900
3901
|
};
|
|
3901
3902
|
/**
|