UNPKG

@privy-io/react-auth

Version:

React client for the Privy Auth API

2 lines (1 loc) 6.33 kB
import{useCallback as o}from"react";import{d as e,a as r}from"./usePrivy-ZXeOLg-E.mjs";import{cy as t,az as n,ar as i,bz as s,cz as l,c1 as m,bO as p}from"./SignRequestScreen-NOqdMm22.mjs";import{u as h}from"./internal-context-LlMdpfkb.mjs";import{u as d}from"./privy-context-V2csHgUI.mjs";import{pipe as f,createTransactionMessage as g,setTransactionMessageFeePayerSigner as y,setTransactionMessageLifetimeUsingBlockhash as I,appendTransactionMessageInstructions as w,compileTransaction as v,getTransactionEncoder as C,address as k,setTransactionMessageFeePayer as A,blockhash as S,getTransactionDecoder as T}from"@solana/kit";import{g as x,s as E,b as W,f as b}from"./use-export-wallet-Duyde2UB.mjs";export{a as useExportWallet,u as useFundWallet,c as useWallets}from"./use-export-wallet-Duyde2UB.mjs";import{base64 as j}from"@scure/base";import{getAddMemoInstruction as P}from"@solana-program/memo";import{getWallets as F}from"@wallet-standard/app";import"./paths-B891YjWw.mjs";import"ofetch";import"@privy-io/js-sdk-core";import"react/jsx-runtime";import"@heroicons/react/24/outline/CheckCircleIcon";import"viem";import"@heroicons/react/24/outline/InformationCircleIcon";import"styled-components";import"@heroicons/react/24/outline/CreditCardIcon";import"@heroicons/react/24/outline/QrCodeIcon";import"@heroicons/react/24/solid/ArrowsRightLeftIcon";import"viem/utils";import"@heroicons/react/24/outline/ExclamationCircleIcon";import"@heroicons/react/24/outline/WalletIcon";import"@heroicons/react/24/outline/GlobeAltIcon";import"@headlessui/react";import"@heroicons/react/24/outline/ChevronDownIcon";import"@heroicons/react/24/solid/CheckCircleIcon";import"@heroicons/react/24/outline";import"@heroicons/react/24/outline/ClipboardDocumentCheckIcon";import"@heroicons/react/24/outline/ClipboardDocumentIcon";import"@privy-io/ethereum";import"lucide-react";import"@heroicons/react/24/outline/ExclamationTriangleIcon";import"tinycolor2";import"@heroicons/react/24/outline/UserCircleIcon";import"@heroicons/react/24/outline/ArrowLeftIcon";import"@heroicons/react/24/outline/ArrowRightIcon";import"@heroicons/react/24/outline/QuestionMarkCircleIcon";import"@heroicons/react/24/outline/XMarkIcon";import"@heroicons/react/20/solid/CheckIcon";import"@heroicons/react/24/outline/EnvelopeIcon";import"@heroicons/react/24/outline/PhoneIcon";import"react-device-detect";import"@heroicons/react/24/outline/Square2StackIcon";import"fast-password-entropy";import"secure-password-utilities";import"secure-password-utilities/wordlists";import"@heroicons/react/24/outline/LockClosedIcon";import"@heroicons/react/24/outline/PencilSquareIcon";import"jose";import"@heroicons/react/24/outline/ArrowPathIcon";import"@heroicons/react/24/outline/EyeIcon";import"@heroicons/react/24/outline/EyeSlashIcon";import"@heroicons/react/24/outline/KeyIcon";import"@heroicons/react/24/outline/ArrowDownTrayIcon";import"@heroicons/react/24/outline/DocumentDuplicateIcon";import"@heroicons/react/24/solid/XCircleIcon";import"@heroicons/react/24/outline/ShieldCheckIcon";import"@tanstack/react-virtual";import"@heroicons/react/24/outline/CheckIcon";import"qrcode";import"eventemitter3";import"zustand";import"@walletconnect/ethereum-provider";import"@heroicons/react/24/outline/FingerPrintIcon";import"./use-sign-with-user-signer-DwqsbciW.mjs";import"@solana-program/system";import"@solana-program/token";const M=o=>{let e,{get:r,on:n}=F(),i=o?.shouldAutoConnect??!0,a=new Map,s=[];function c(...o){o.forEach((o=>!(o.features["privy:"]&&"isPrivyWallet"in o&&o.isPrivyWallet)&&!a.has(o.name)&&a.set(o.name,o))),s=Array.from(a.values()).map((o=>new t(o,i))),e?.(s)}function l(...o){Array.from(a.values()).forEach((e=>!o.includes(e)&&a.delete(e.name))),s=Array.from(a.values()).map((o=>new t(o,i))),e?.(s)}let m=[n("register",c),n("unregister",l)];return c(...r()),{_setOnConnectorsUpdated:o=>{e=o},onMount:()=>{m[0]||(m[0]=n("register",c)),m[1]||(m[1]=n("unregister",l))},onUnmount:()=>{let o=m.pop();for(;o;)o(),o=m.pop()},get:()=>s}},U=()=>{let{user:r}=d(),{client:t,refreshSessionAndUser:a,initializeWalletProxy:s}=h(),c=n(),l=i();return{importWallet:o((({privateKey:o})=>e({getAccessToken:()=>t.getAccessToken(),user:r,initializeWalletProxy:s,refreshSessionAndUser:a,emitPrivyEvent:c,appConfig:l},{privateKey:o,chainType:"solana"})),[r,t,a,s,c])}};var D={id:s,getSolanaRpcClient:x,createTransactionFromRelayQuote:async function({solanaClient:o,quote:e,source:r}){let t=e.steps[0]?.items?.[0];if(!t)throw Error("Invalid quote");let n=t.data.instructions.map((({keys:o,programId:e,data:r})=>({accounts:o.map((({pubkey:o,isSigner:e,isWritable:r})=>({address:o,role:e&&r?3:e&&!r?2:!e&&r?1:0}))),programAddress:e,data:new Uint8Array(Buffer.from(r,"hex"))}))),{value:i}=await o.rpc.getLatestBlockhash().send(),a=f(g({version:0}),(o=>y({address:r},o)),(o=>I(i,o)),(o=>w(n,o)),(o=>v(o)));return new Uint8Array(C().encode(a))},simulateTransaction:E,getAddressFromBuffer:W,fetchTransactionEstimatedFees:b},R=()=>l(D);var q={id:p,createSiwsMemoTransaction:({address:o,nonce:e})=>{let r=P({memo:m({address:k(o),nonce:e})});return f(g({version:"legacy"}),(e=>A(k(o),e)),(o=>I({blockhash:S("GfVcyD5fWFJ6hRm8bsy7CoVPsLSoJhtJKRJYk8T2VVFN"),lastValidBlockHeight:0n},o)),(o=>w([r],o)),(o=>v(o)),(o=>j.encode(Uint8Array.from(C().encode(o)))))},getSignatureFromTransaction:(o,e)=>{let r=T().decode(o).signatures[e];if(!r)throw Error(`Missing transaction signature for address: ${e}`);return j.encode(r)}},z=()=>l(q);function L(){let{create:o}=r();return{createWallet:async e=>{e&&"target"in e&&e&&(e=void 0);let{account:r}=await o({chainType:"solana",options:e});return{wallet:r}}}}function V(){return{signMessage:async({message:o,wallet:e,options:r})=>await e.signMessage({message:o,options:r})}}function B(){return{signTransaction:async({transaction:o,wallet:e,chain:r="solana:mainnet",options:t})=>await e.signTransaction({transaction:o,chain:r,options:t})}}function J(){return{signAndSendTransaction:async({transaction:o,wallet:e,chain:r="solana:mainnet",options:t})=>await e.signAndSendTransaction({transaction:o,chain:r,options:t})}}export{t as SolanaAdapterConnector,M as toSolanaWalletConnectors,L as useCreateWallet,U as useImportWallet,J as useSignAndSendTransaction,V as useSignMessage,B as useSignTransaction,R as useSolanaFundingPlugin,z as useSolanaLedgerPlugin};