@privy-io/react-auth
Version:
React client for the Privy Auth API
2 lines (1 loc) • 6.6 kB
JavaScript
"use strict";var e=require("@abstract-foundation/agw-client"),t=require("@abstract-foundation/agw-client/actions"),a=require("viem"),n=require("viem/accounts"),r=require("viem/chains"),s=require("./privy-context-CrM9_s6G.js"),i=require("./context-Cg3IEi80.js"),o=require("./internal-context-BJv4f_bO.js"),c=require("./useWallets-dikDynAG.js"),d=require("./getEmbeddedConnectedWallet-pJd-l936.js"),l=require("./smart-wallets-COAgLX4N.js");require("@privy-io/are-addresses-equal"),require("react/jsx-runtime"),require("react"),require("@privy-io/js-sdk-core"),require("tinycolor2"),require("ofetch"),require("./PrivyPluginContext-DsgaS6n9.js"),require("permissionless"),require("permissionless/accounts"),require("permissionless/clients/pimlico"),require("viem/account-abstraction"),exports.useAbstractSmartWallets=function(){let{user:u}=s.usePrivyContext(),{hideWalletUIs:p,openPrivyModal:g,chains:y,appId:m,rpcConfig:h,client:T}=o.usePrivyInternal(),f=i.useAppConfig(),{wallets:v}=c.useWallets(),{setModalData:q}=s.usePrivyModal(),I=s.getPrivyEthereumWallet(u),S=!!I&&s.getIsUnifiedWallet(I),b=async(t=r.abstractTestnet.id)=>{let s=d.getEmbeddedConnectedWallet(v);if(!s)throw Error("No connected wallet found");let i="string"==typeof t?a.hexToNumber(t):t;if(![r.abstractTestnet.id,2741,r.zksync.id].includes(i))throw Error("Error, only Abstract and ZKSync Era chains are supported");let o=y.find((e=>e.id===i));if(!o)throw Error("Chain not configured");await s.switchChain(o.id);let l=await s.getEthereumProvider(),u=a.createWalletClient({account:s.address,transport:a.custom(l)}),p=n.toAccount({address:s.address,signMessage:u.signMessage,signTransaction:u.signTransaction,signTypedData:u.signTypedData});return await e.createAbstractClient({chain:o,transport:a.http(c.getJsonRpcEndpointFromChain(o,h,m)),publicTransport:a.http(c.getJsonRpcEndpointFromChain(o,h,m)),signer:p})};return{signMessage:async({message:e},t)=>{let a=await b(t);return new Promise((async(t,n)=>{let{entropyId:r,entropyIdVerifier:s}=c.getEntropyDetailsForUser(u);p.current=!0,q({connectWallet:{recoveryMethod:I.recoveryMethod,connectingWalletAddress:I.address,isUnifiedWallet:S,entropyId:r,entropyIdVerifier:s,onCompleteNavigateTo:"SignRequestScreen",onFailure:()=>{}},signMessage:{method:"personal_sign",data:e,confirmAndSign:()=>a.signMessage({message:e}),onSuccess:e=>t(e),onFailure:n,uiOptions:{isCancellable:!0}}}),g("EmbeddedWalletConnectingScreen")})).finally((()=>{p.current=!1}))},signTypedData:async(e,t)=>{let a=await b(t);return new Promise((async(t,n)=>{p.current=!0;let{entropyId:r,entropyIdVerifier:s}=c.getEntropyDetailsForUser(u);q({connectWallet:{recoveryMethod:I.recoveryMethod,connectingWalletAddress:I.address,isUnifiedWallet:S,entropyId:r,entropyIdVerifier:s,onCompleteNavigateTo:"SignRequestScreen",onFailure:()=>{}},signMessage:{method:"eth_signTypedData_v4",data:e,confirmAndSign:()=>a.signTypedData(e),onSuccess:e=>t(e),onFailure:n,uiOptions:{isCancellable:!0}}}),g("EmbeddedWalletConnectingScreen")})).finally((()=>{p.current=!1}))},sendTransaction:async e=>{let a=await b(e.chainId),n=[],r="calls"in e&&void 0!==e.calls;return n=r?[...e.calls]:[e],new Promise((async(s,i)=>{p.current=!0;let{entropyId:o,entropyIdVerifier:d}=c.getEntropyDetailsForUser(u);q({connectWallet:{recoveryMethod:I.recoveryMethod,connectingWalletAddress:I.address,isUnifiedWallet:S,entropyId:o,entropyIdVerifier:d,onCompleteNavigateTo:"SendTransactionScreen",onFailure:()=>{}},sendTransaction:{transactionRequests:l.callsToTransactionRequests({calls:n,chain:a.chain,maxPriorityFeePerGas:e.maxPriorityFeePerGas,maxFeePerGas:e.maxFeePerGas,nonce:e.nonce?BigInt(e.nonce):void 0}),entropyId:o,entropyIdVerifier:d,transactingWalletAddress:a.account.address,transactingWalletIndex:void 0,prepareTransactionRequest:async()=>{let n=r?t.getBatchTransactionObject(a.account.address,e):e;return await a.prepareAbstractTransactionRequest(n)},scanTransaction:async()=>{if(!T)throw Error("Privy client not found");let n=r?t.getBatchTransactionObject(a.account.address,e):e,s=await a.prepareAbstractTransactionRequest(n);return await T.scanTransaction({metadata:{domain:f.embeddedWallets.transactionScanning.domain},chain_id:e.chainId.toString(),request:{method:"eth_sendTransaction",params:[{from:s.from,to:s.to,value:s.value?.toString(),gas:s.gas?.toString(),gasPrice:s.gasPrice?.toString(),nonce:s.nonce?.toString(),data:s.data,eip_712_meta:{paymaster_params:{paymaster:s.paymaster,paymaster_input:s.paymasterInput}}}]}})},signOnly:!1,getIsSponsored:async()=>void 0!==e.paymaster&&void 0!==e.paymasterInput,onConfirm:()=>r?a.sendTransactionBatch(e):a.sendTransaction(e),onSuccess:e=>s(e.hash),onFailure:i,uiOptions:{isCancellable:!0}}}),g("EmbeddedWalletConnectingScreen")})).finally((()=>{p.current=!1}))},signTransaction:async e=>{let a=await b(e.chainId),n=[],r="calls"in e&&void 0!==e.calls;return n=r?[...e.calls]:[e],new Promise((async(s,i)=>{p.current=!0;let{entropyId:o,entropyIdVerifier:d}=c.getEntropyDetailsForUser(u);q({connectWallet:{recoveryMethod:I.recoveryMethod,connectingWalletAddress:I.address,isUnifiedWallet:S,entropyId:o,entropyIdVerifier:d,onCompleteNavigateTo:"SendTransactionScreen",onFailure:()=>{}},sendTransaction:{transactionRequests:l.callsToTransactionRequests({calls:n,chain:a.chain,maxPriorityFeePerGas:e.maxPriorityFeePerGas,maxFeePerGas:e.maxFeePerGas,nonce:e.nonce?BigInt(e.nonce):void 0}),entropyId:o,entropyIdVerifier:d,transactingWalletAddress:a.account.address,transactingWalletIndex:void 0,prepareTransactionRequest:async()=>{let n=r?t.getBatchTransactionObject(a.account.address,e):e;return await a.prepareAbstractTransactionRequest(n)},scanTransaction:async()=>{if(!T)throw Error("Privy client not found");let n=r?t.getBatchTransactionObject(a.account.address,e):e,s=await a.prepareAbstractTransactionRequest(n);return await T.scanTransaction({metadata:{domain:f.embeddedWallets.transactionScanning.domain},chain_id:e.chainId.toString(),request:{method:"eth_sendTransaction",params:[{from:s.from,to:s.to,value:s.value?.toString(),gas:s.gas?.toString(),gasPrice:s.gasPrice?.toString(),nonce:s.nonce?.toString(),data:s.data,eip_712_meta:{paymaster_params:{paymaster:s.paymaster,paymaster_input:s.paymasterInput}}}]}})},signOnly:!0,getIsSponsored:async()=>void 0!==e.paymaster&&void 0!==e.paymasterInput,onConfirm:async()=>{let n=r?t.getBatchTransactionObject(a.account.address,e):e,s=await a.prepareAbstractTransactionRequest(n);return a.signTransaction(s)},onSuccess:e=>s(e.hash),onFailure:i,uiOptions:{isCancellable:!0}}}),g("EmbeddedWalletConnectingScreen")})).finally((()=>{p.current=!1}))}}};