UNPKG

@privy-io/react-auth

Version:

React client for the Privy Auth API

2 lines (1 loc) 6.57 kB
"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("./get-is-unified-wallet-D4ouXJpi.js"),i=require("./context-DFq1obBO.js"),o=require("./internal-context-NWsAL807.js"),c=require("./useWallets-BLFNjTwC.js"),d=require("./getPublicClient-CGlodIp_.js"),l=require("./getEmbeddedConnectedWallet-6TsVZJkD.js"),u=require("./smart-wallets-CV78p-ta.js");require("react/jsx-runtime"),require("react"),require("@privy-io/js-sdk-core"),require("tinycolor2"),require("ofetch"),require("permissionless"),require("permissionless/accounts"),require("permissionless/clients/pimlico"),require("viem/account-abstraction"),exports.useAbstractSmartWallets=function(){let{user:p}=s.usePrivyContext(),{hideWalletUIs:g,openPrivyModal:y,chains:m,appId:h,rpcConfig:T,client:f}=o.usePrivyInternal(),v=i.useAppConfig(),{wallets:I}=c.useWallets(),{setModalData:q}=s.usePrivyModal(),S=s.getPrivyEthereumWallet(p),b=!!S&&s.getIsUnifiedWallet(S),W=async(t=r.abstractTestnet.id)=>{let s=l.getEmbeddedConnectedWallet(I);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=m.find((e=>e.id===i));if(!o)throw Error("Chain not configured");await s.switchChain(o.id);let c=await s.getEthereumProvider(),u=a.createWalletClient({account:s.address,transport:a.custom(c)}),p=n.toAccount({address:s.address,signMessage:u.signMessage,signTransaction:u.signTransaction,signTypedData:u.signTypedData});return await e.createAbstractClient({chain:o,transport:a.http(d.getJsonRpcEndpointFromChain(o,T,h)),publicTransport:a.http(d.getJsonRpcEndpointFromChain(o,T,h)),signer:p})};return{signMessage:async({message:e},t)=>{let a=await W(t);return new Promise((async(t,n)=>{let{entropyId:r,entropyIdVerifier:s}=c.getEntropyDetailsForUser(p);g.current=!0,q({connectWallet:{recoveryMethod:S.recoveryMethod,connectingWalletAddress:S.address,isUnifiedWallet:b,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}}}),y("EmbeddedWalletConnectingScreen")})).finally((()=>{g.current=!1}))},signTypedData:async(e,t)=>{let a=await W(t);return new Promise((async(t,n)=>{g.current=!0;let{entropyId:r,entropyIdVerifier:s}=c.getEntropyDetailsForUser(p);q({connectWallet:{recoveryMethod:S.recoveryMethod,connectingWalletAddress:S.address,isUnifiedWallet:b,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}}}),y("EmbeddedWalletConnectingScreen")})).finally((()=>{g.current=!1}))},sendTransaction:async e=>{let a=await W(e.chainId),n=[],r="calls"in e&&void 0!==e.calls;return n=r?[...e.calls]:[e],new Promise((async(s,i)=>{g.current=!0;let{entropyId:o,entropyIdVerifier:d}=c.getEntropyDetailsForUser(p);q({connectWallet:{recoveryMethod:S.recoveryMethod,connectingWalletAddress:S.address,isUnifiedWallet:b,entropyId:o,entropyIdVerifier:d,onCompleteNavigateTo:"SendTransactionScreen",onFailure:()=>{}},sendTransaction:{transactionRequests:u.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(!f)throw Error("Privy client not found");let n=r?t.getBatchTransactionObject(a.account.address,e):e,s=await a.prepareAbstractTransactionRequest(n);return await f.scanTransaction({metadata:{domain:v.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}}}),y("EmbeddedWalletConnectingScreen")})).finally((()=>{g.current=!1}))},signTransaction:async e=>{let a=await W(e.chainId),n=[],r="calls"in e&&void 0!==e.calls;return n=r?[...e.calls]:[e],new Promise((async(s,i)=>{g.current=!0;let{entropyId:o,entropyIdVerifier:d}=c.getEntropyDetailsForUser(p);q({connectWallet:{recoveryMethod:S.recoveryMethod,connectingWalletAddress:S.address,isUnifiedWallet:b,entropyId:o,entropyIdVerifier:d,onCompleteNavigateTo:"SendTransactionScreen",onFailure:()=>{}},sendTransaction:{transactionRequests:u.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(!f)throw Error("Privy client not found");let n=r?t.getBatchTransactionObject(a.account.address,e):e,s=await a.prepareAbstractTransactionRequest(n);return await f.scanTransaction({metadata:{domain:v.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}}}),y("EmbeddedWalletConnectingScreen")})).finally((()=>{g.current=!1}))}}};