@privy-io/react-auth
Version:
React client for the Privy Auth API
2 lines (1 loc) • 8.95 kB
JavaScript
"use strict";var e=require("@abstract-foundation/agw-client"),r=require("@abstract-foundation/agw-client/actions"),n=require("viem"),t=require("viem/accounts"),a=require("viem/chains"),i=require("./EmbeddedWalletConnectingScreen-JRafXI8d.js"),o=require("./events-context-7-Gs8c_9.js"),s=require("./internal-context-CeWKmK5u.js"),c=require("./SignRequestScreen-Dy02euV9.js"),l=require("./getEmbeddedConnectedWallet-6TsVZJkD.js"),u=require("./smart-wallets-DaqaXBrW.js");require("react/jsx-runtime"),require("lucide-react"),require("react"),require("fast-password-entropy"),require("secure-password-utilities"),require("secure-password-utilities/wordlists"),require("@heroicons/react/24/outline/UserCircleIcon"),require("styled-components"),require("@heroicons/react/24/outline/ArrowLeftIcon"),require("@heroicons/react/24/outline/ArrowRightIcon"),require("@heroicons/react/24/outline/QuestionMarkCircleIcon"),require("@heroicons/react/24/outline/XMarkIcon"),require("@heroicons/react/20/solid/CheckIcon"),require("@heroicons/react/24/outline/EnvelopeIcon"),require("@heroicons/react/24/outline/PhoneIcon"),require("react-device-detect"),require("@heroicons/react/24/outline/ExclamationTriangleIcon"),require("@heroicons/react/24/outline/WalletIcon"),require("@heroicons/react/24/outline/ExclamationCircleIcon"),require("@heroicons/react/24/outline/Square2StackIcon"),require("@privy-io/js-sdk-core"),require("zustand"),require("@heroicons/react/24/outline"),require("@tanstack/react-virtual"),require("@heroicons/react/24/outline/CheckIcon"),require("qrcode"),require("viem/utils"),require("eventemitter3"),require("@scure/base"),require("@walletconnect/ethereum-provider"),require("@heroicons/react/24/outline/CreditCardIcon"),require("@heroicons/react/24/outline/QrCodeIcon"),require("@heroicons/react/24/solid/ArrowsRightLeftIcon"),require("@heroicons/react/24/outline/InformationCircleIcon"),require("@heroicons/react/24/outline/ClipboardDocumentCheckIcon"),require("@heroicons/react/24/outline/ClipboardDocumentIcon"),require("@heroicons/react/24/outline/ChevronDownIcon"),require("@privy-io/ethereum"),require("@heroicons/react/24/outline/CheckCircleIcon"),require("@heroicons/react/24/outline/GlobeAltIcon"),require("@headlessui/react"),require("@privy-io/popup"),require("@heroicons/react/24/solid/CheckCircleIcon"),require("ofetch"),require("@heroicons/react/24/outline/FingerPrintIcon"),require("@heroicons/react/24/outline/LockClosedIcon"),require("@heroicons/react/24/outline/PencilSquareIcon"),require("jose"),require("@heroicons/react/24/outline/ArrowPathIcon"),require("@heroicons/react/24/outline/EyeIcon"),require("@heroicons/react/24/outline/EyeSlashIcon"),require("@heroicons/react/24/outline/KeyIcon"),require("@heroicons/react/24/outline/ArrowDownTrayIcon"),require("@heroicons/react/24/outline/DocumentDuplicateIcon"),require("@heroicons/react/24/solid/XCircleIcon"),require("@heroicons/react/24/outline/ShieldCheckIcon"),require("@privy-io/urls"),require("tinycolor2"),require("permissionless"),require("permissionless/accounts"),require("permissionless/clients/pimlico"),require("viem/account-abstraction"),exports.useAbstractSmartWallets=function(){let{user:d}=i.usePrivyContext(),{hideWalletUIs:p,openPrivyModal:h,chains:g,appId:y,rpcConfig:m,client:q}=s.usePrivyInternal(),I=o.useAppConfig(),{wallets:v}=i.useWallets(),{setModalData:f}=i.usePrivyModal(),T=i.getPrivyEthereumWallet(d),C=!!T&&i.getIsUnifiedWallet(T),S=async(r=a.abstractTestnet.id)=>{let o=l.getEmbeddedConnectedWallet(v);if(!o)throw Error("No connected wallet found");let s="string"==typeof r?n.hexToNumber(r):r;if(![a.abstractTestnet.id,2741,a.zksync.id].includes(s))throw Error("Error, only Abstract and ZKSync Era chains are supported");let c=g.find((e=>e.id===s));if(!c)throw Error("Chain not configured");await o.switchChain(c.id);let u=await o.getEthereumProvider(),d=n.createWalletClient({account:o.address,transport:n.custom(u)}),p=t.toAccount({address:o.address,signMessage:d.signMessage,signTransaction:d.signTransaction,signTypedData:d.signTypedData});return await e.createAbstractClient({chain:c,transport:n.http(i.getJsonRpcEndpointFromChain(c,m,y)),publicTransport:n.http(i.getJsonRpcEndpointFromChain(c,m,y)),signer:p})};return{signMessage:async({message:e},r)=>{let n=await S(r);return new Promise((async(r,t)=>{let{entropyId:a,entropyIdVerifier:o}=i.getEntropyDetailsForUser(d);p.current=!0,f({connectWallet:{recoveryMethod:T.recoveryMethod,connectingWalletAddress:T.address,isUnifiedWallet:C,entropyId:a,entropyIdVerifier:o,onCompleteNavigateTo:c.SignRequestScreen,onFailure:()=>{}},signMessage:{method:"personal_sign",data:e,confirmAndSign:()=>n.signMessage({message:e}),onSuccess:e=>r(e),onFailure:t,uiOptions:{isCancellable:!0}}}),h(i.EmbeddedWalletConnectingScreen)})).finally((()=>{p.current=!1}))},signTypedData:async(e,r)=>{let n=await S(r);return new Promise((async(r,t)=>{p.current=!0;let{entropyId:a,entropyIdVerifier:o}=i.getEntropyDetailsForUser(d);f({connectWallet:{recoveryMethod:T.recoveryMethod,connectingWalletAddress:T.address,isUnifiedWallet:C,entropyId:a,entropyIdVerifier:o,onCompleteNavigateTo:c.SignRequestScreen,onFailure:()=>{}},signMessage:{method:"eth_signTypedData_v4",data:e,confirmAndSign:()=>n.signTypedData(e),onSuccess:e=>r(e),onFailure:t,uiOptions:{isCancellable:!0}}}),h(i.EmbeddedWalletConnectingScreen)})).finally((()=>{p.current=!1}))},sendTransaction:async e=>{let n=await S(e.chainId),t=[],a="calls"in e&&void 0!==e.calls;return t=a?[...e.calls]:[e],new Promise((async(o,s)=>{p.current=!0;let{entropyId:c,entropyIdVerifier:l}=i.getEntropyDetailsForUser(d);f({connectWallet:{recoveryMethod:T.recoveryMethod,connectingWalletAddress:T.address,isUnifiedWallet:C,entropyId:c,entropyIdVerifier:l,onCompleteNavigateTo:i.SendTransactionScreen,onFailure:()=>{}},sendTransaction:{transactionRequests:u.callsToTransactionRequests({calls:t,chain:n.chain,maxPriorityFeePerGas:e.maxPriorityFeePerGas,maxFeePerGas:e.maxFeePerGas,nonce:e.nonce?BigInt(e.nonce):void 0}),entropyId:c,entropyIdVerifier:l,transactingWalletAddress:n.account.address,transactingWalletIndex:void 0,prepareTransactionRequest:async()=>{let t=a?r.getBatchTransactionObject(n.account.address,e):e;return await n.prepareAbstractTransactionRequest(t)},scanTransaction:async()=>{if(!q)throw Error("Privy client not found");let t=a?r.getBatchTransactionObject(n.account.address,e):e,i=await n.prepareAbstractTransactionRequest(t);return await q.scanTransaction({metadata:{domain:I.embeddedWallets.transactionScanning.domain},chain_id:e.chainId.toString(),request:{method:"eth_sendTransaction",params:[{from:i.from,to:i.to,value:i.value?.toString(),gas:i.gas?.toString(),gasPrice:i.gasPrice?.toString(),nonce:i.nonce?.toString(),data:i.data,eip_712_meta:{paymaster_params:{paymaster:i.paymaster,paymaster_input:i.paymasterInput}}}]}})},signOnly:!1,getIsSponsored:async()=>void 0!==e.paymaster&&void 0!==e.paymasterInput,onConfirm:()=>a?n.sendTransactionBatch(e):n.sendTransaction(e),onSuccess:e=>o(e.hash),onFailure:s,uiOptions:{isCancellable:!0}}}),h(i.EmbeddedWalletConnectingScreen)})).finally((()=>{p.current=!1}))},signTransaction:async e=>{let n=await S(e.chainId),t=[],a="calls"in e&&void 0!==e.calls;return t=a?[...e.calls]:[e],new Promise((async(o,s)=>{p.current=!0;let{entropyId:c,entropyIdVerifier:l}=i.getEntropyDetailsForUser(d);f({connectWallet:{recoveryMethod:T.recoveryMethod,connectingWalletAddress:T.address,isUnifiedWallet:C,entropyId:c,entropyIdVerifier:l,onCompleteNavigateTo:i.SendTransactionScreen,onFailure:()=>{}},sendTransaction:{transactionRequests:u.callsToTransactionRequests({calls:t,chain:n.chain,maxPriorityFeePerGas:e.maxPriorityFeePerGas,maxFeePerGas:e.maxFeePerGas,nonce:e.nonce?BigInt(e.nonce):void 0}),entropyId:c,entropyIdVerifier:l,transactingWalletAddress:n.account.address,transactingWalletIndex:void 0,prepareTransactionRequest:async()=>{let t=a?r.getBatchTransactionObject(n.account.address,e):e;return await n.prepareAbstractTransactionRequest(t)},scanTransaction:async()=>{if(!q)throw Error("Privy client not found");let t=a?r.getBatchTransactionObject(n.account.address,e):e,i=await n.prepareAbstractTransactionRequest(t);return await q.scanTransaction({metadata:{domain:I.embeddedWallets.transactionScanning.domain},chain_id:e.chainId.toString(),request:{method:"eth_sendTransaction",params:[{from:i.from,to:i.to,value:i.value?.toString(),gas:i.gas?.toString(),gasPrice:i.gasPrice?.toString(),nonce:i.nonce?.toString(),data:i.data,eip_712_meta:{paymaster_params:{paymaster:i.paymaster,paymaster_input:i.paymasterInput}}}]}})},signOnly:!0,getIsSponsored:async()=>void 0!==e.paymaster&&void 0!==e.paymasterInput,onConfirm:async()=>{let t=a?r.getBatchTransactionObject(n.account.address,e):e,i=await n.prepareAbstractTransactionRequest(t);return n.signTransaction(i)},onSuccess:e=>o(e.hash),onFailure:s,uiOptions:{isCancellable:!0}}}),h(i.EmbeddedWalletConnectingScreen)})).finally((()=>{p.current=!1}))}}};