@liberfi.io/wallet-connector-privy 0.1.7 → 0.1.9

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/index.d.mts CHANGED
@@ -9,7 +9,7 @@ declare global {
9
9
  };
10
10
  }
11
11
  }
12
- declare const _default: "0.1.5";
12
+ declare const _default: "0.1.9";
13
13
 
14
14
  type PrivyAuthProviderProps = PropsWithChildren<{
15
15
  /** exchange privy's access token for a custom access token, if not provided, the privy's access token will be used as is */
package/dist/index.d.ts CHANGED
@@ -9,7 +9,7 @@ declare global {
9
9
  };
10
10
  }
11
11
  }
12
- declare const _default: "0.1.5";
12
+ declare const _default: "0.1.9";
13
13
 
14
14
  type PrivyAuthProviderProps = PropsWithChildren<{
15
15
  /** exchange privy's access token for a custom access token, if not provided, the privy's access token will be used as is */
package/dist/index.js CHANGED
@@ -11,9 +11,9 @@ var types = require('@liberfi.io/types');
11
11
  // src/version.ts
12
12
  if (typeof window !== "undefined") {
13
13
  window.__LIBERFI_VERSION__ = window.__LIBERFI_VERSION__ || {};
14
- window.__LIBERFI_VERSION__["@liberfi.io/wallet-connector-privy"] = "0.1.5";
14
+ window.__LIBERFI_VERSION__["@liberfi.io/wallet-connector-privy"] = "0.1.9";
15
15
  }
16
- var version_default = "0.1.5";
16
+ var version_default = "0.1.9";
17
17
  function PrivyAuthProvider({
18
18
  exchangeAccessToken,
19
19
  children
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/version.ts","../src/PrivyAuthProvider.tsx","../src/PrivyEvmWalletAdapter.ts","../src/PrivySolanaWalletAdapter.ts","../src/WalletConnectorAdapter.tsx","../src/PrivyWalletConnectorProvider.tsx"],"names":["useWalletConnector","usePrivy","useUser","useIdentityToken","useState","useEffect","useMemo","useCallback","jsx","AuthProvider","ChainNamespace","ethers","Chain","useWallets","useSolanaWallets","useSignMessage","useSignTransaction","useSendTransaction","useSolanaSignMessage","useSolanaSignTransaction","useSolanaSignAndSendTransaction","WalletConnectorProvider","PrivyProvider","toSolanaWalletConnectors"],"mappings":"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","file":"index.js","sourcesContent":["declare global {\n interface Window {\n __LIBERFI_VERSION__?: {\n [key: string]: string;\n };\n }\n}\nif (typeof window !== \"undefined\") {\n window.__LIBERFI_VERSION__ = window.__LIBERFI_VERSION__ || {};\n window.__LIBERFI_VERSION__[\"@liberfi.io/wallet-connector-privy\"] = \"0.1.5\";\n}\n\nexport default \"0.1.5\";\n","import {\n PropsWithChildren,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { useIdentityToken, usePrivy, useUser } from \"@privy-io/react-auth\";\nimport {\n AuthenticatedUser,\n AuthProvider,\n useWalletConnector,\n} from \"@liberfi.io/wallet-connector\";\n\nexport type PrivyAuthProviderProps = PropsWithChildren<{\n /** exchange privy's access token for a custom access token, if not provided, the privy's access token will be used as is */\n exchangeAccessToken?: (\n /** privy's access token */\n accessToken: string,\n /** privy's identity token */\n identityToken: string,\n ) => Promise<string | undefined | null>;\n}>;\n\n/**\n * PrivyAuthProvider must be a child of PrivyWalletConnectorProvider\n */\nexport function PrivyAuthProvider({\n exchangeAccessToken,\n children,\n}: PrivyAuthProviderProps) {\n const {\n wallets,\n status: walletStatus,\n connect,\n disconnect,\n } = useWalletConnector();\n\n const { ready, authenticated, getAccessToken } = usePrivy();\n\n const { user: privyUser, refreshUser } = useUser();\n\n const { identityToken: privyIdentityToken } = useIdentityToken();\n\n // privy access token\n const [privyAccessToken, setPrivyAccessToken] = useState<string | null>(null);\n\n // exchanged access token\n const [accessToken, setAccessToken] = useState<string | null>(null);\n\n // fetch privy's access token when user is authenticated\n useEffect(() => {\n if (ready && authenticated) {\n getAccessToken().then((token) => setPrivyAccessToken(token));\n }\n }, [ready, authenticated, getAccessToken]);\n\n // exchange custom access token when privy's access token & identity token is available or changed\n useEffect(() => {\n if (privyAccessToken && privyIdentityToken && exchangeAccessToken) {\n exchangeAccessToken(privyAccessToken, privyIdentityToken)\n .then((token) => {\n if (!token) {\n console.error(\"PrivyAuthProvider: exchange access token failed\");\n return;\n }\n setAccessToken(token);\n })\n .catch((error) => {\n console.error(\n \"PrivyAuthProvider: exchange access token error\",\n error,\n );\n });\n }\n }, [privyAccessToken, privyIdentityToken, exchangeAccessToken]);\n\n const status = useMemo(() => {\n switch (walletStatus) {\n case \"detecting\":\n return \"authenticating\";\n case \"connecting\":\n return \"authenticating\";\n case \"connected\":\n return \"authenticated\";\n case \"disconnecting\":\n return \"unauthenticated\";\n case \"disconnected\":\n return \"unauthenticated\";\n }\n }, [walletStatus]);\n\n const user = useMemo<AuthenticatedUser | null>(() => {\n if (!privyUser) return null;\n\n // if exchangeAccessToken is provided, use the exchanged access token, otherwise use the privy's access token\n const userAccessToken = exchangeAccessToken\n ? accessToken\n : privyAccessToken;\n\n if (!userAccessToken) return null;\n\n return {\n ...privyUser,\n accessToken: userAccessToken,\n wallets,\n };\n }, [privyUser, privyAccessToken, accessToken, exchangeAccessToken, wallets]);\n\n const refreshAccessToken = useCallback(async () => {\n await refreshUser();\n }, [refreshUser]);\n\n return (\n <AuthProvider\n user={user}\n status={status}\n signIn={connect}\n signOut={disconnect}\n refreshAccessToken={refreshAccessToken}\n >\n {children}\n </AuthProvider>\n );\n}\n\nPrivyAuthProvider.displayName = \"PrivyAuthProvider\";\n","import {\n ConnectedWallet,\n useSendTransaction,\n useSignMessage,\n useSignTransaction,\n WalletWithMetadata,\n} from \"@privy-io/react-auth\";\nimport { ethers } from \"ethers\";\nimport { ChainNamespace, Chain } from \"@liberfi.io/types\";\nimport {\n Eip1193Provider,\n EvmWalletAdapter,\n} from \"@liberfi.io/wallet-connector\";\n\nexport class PrivyEvmWalletAdapter implements EvmWalletAdapter {\n constructor(\n private readonly account: WalletWithMetadata,\n private readonly wallet: ConnectedWallet | undefined,\n private readonly privySignMessage: ReturnType<\n typeof useSignMessage\n >[\"signMessage\"],\n private readonly privySignTransaction: ReturnType<\n typeof useSignTransaction\n >[\"signTransaction\"],\n private readonly privySendTransaction: ReturnType<\n typeof useSendTransaction\n >[\"sendTransaction\"],\n ) {}\n\n get chainNamespace(): ChainNamespace {\n return ChainNamespace.EVM;\n }\n\n get chain(): Chain | undefined {\n const privyChainId = this.wallet?.chainId;\n if (!privyChainId) return undefined;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [_, chainId] = privyChainId.split(\":\");\n return chainId as Chain;\n }\n\n get address(): string {\n return this.account.address;\n }\n\n get isConnected(): boolean {\n return !!this.wallet;\n }\n\n get isCustodial(): boolean {\n return this.account.delegated;\n }\n\n get connector(): string {\n return this.account.walletClientType ?? \"privy\";\n }\n\n async signMessage(message: string): Promise<string> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const { signature } = await this.privySignMessage(\n { message },\n { address: this.address },\n );\n return signature;\n }\n\n async signTransaction(serializedTx: Uint8Array): Promise<Uint8Array> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const serializedTxHex = \"0x\" + Buffer.from(serializedTx).toString(\"hex\");\n const tx = ethers.Transaction.from(serializedTxHex);\n const { signature } = await this.privySignTransaction(\n {\n from: tx.from ?? undefined,\n to: tx.to ?? undefined,\n value: tx.value,\n gasLimit: tx.gasLimit,\n gasPrice: tx.gasPrice ?? undefined,\n nonce: tx.nonce,\n data: tx.data,\n type: tx.type ?? undefined,\n accessList: tx.accessList ?? undefined,\n chainId: Number(tx.chainId),\n maxPriorityFeePerGas: tx.maxPriorityFeePerGas ?? undefined,\n maxFeePerGas: tx.maxFeePerGas ?? undefined,\n },\n { address: this.address },\n );\n return new Uint8Array(Buffer.from(signature.slice(2), \"hex\"));\n }\n\n async sendTransaction(serializedTx: Uint8Array): Promise<string> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const serializedTxHex = \"0x\" + Buffer.from(serializedTx).toString(\"hex\");\n const tx = ethers.Transaction.from(serializedTxHex);\n const { hash } = await this.privySendTransaction(\n {\n from: tx.from ?? undefined,\n to: tx.to ?? undefined,\n value: tx.value,\n gasLimit: tx.gasLimit,\n gasPrice: tx.gasPrice ?? undefined,\n nonce: tx.nonce,\n data: tx.data,\n type: tx.type ?? undefined,\n accessList: tx.accessList ?? undefined,\n chainId: Number(tx.chainId),\n maxPriorityFeePerGas: tx.maxPriorityFeePerGas ?? undefined,\n maxFeePerGas: tx.maxFeePerGas ?? undefined,\n },\n { address: this.address },\n );\n return hash;\n }\n\n async getEip1193Provider(): Promise<Eip1193Provider | undefined> {\n return await this.wallet?.getEthereumProvider();\n }\n\n async switchChain(chain: Chain): Promise<void> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n await this.wallet.switchChain(Number(chain));\n }\n}\n","import { WalletWithMetadata } from \"@privy-io/react-auth\";\nimport {\n ConnectedStandardSolanaWallet,\n useSignMessage,\n useSignTransaction,\n useSignAndSendTransaction,\n} from \"@privy-io/react-auth/solana\";\nimport { ChainNamespace, Chain } from \"@liberfi.io/types\";\nimport { WalletAdapter } from \"@liberfi.io/wallet-connector\";\n\nexport class PrivySolanaWalletAdapter implements WalletAdapter {\n constructor(\n private readonly account: WalletWithMetadata,\n private readonly wallet: ConnectedStandardSolanaWallet | undefined,\n private readonly privySignMessage: ReturnType<\n typeof useSignMessage\n >[\"signMessage\"],\n private readonly privySignTransaction: ReturnType<\n typeof useSignTransaction\n >[\"signTransaction\"],\n private readonly privySignAndSendTransaction: ReturnType<\n typeof useSignAndSendTransaction\n >[\"signAndSendTransaction\"],\n ) {}\n\n get chainNamespace(): ChainNamespace {\n return ChainNamespace.SOLANA;\n }\n\n get chain(): Chain | undefined {\n return Chain.SOLANA;\n }\n\n get address(): string {\n return this.account.address;\n }\n\n get isConnected(): boolean {\n return !!this.wallet;\n }\n\n get isCustodial(): boolean {\n return this.account.delegated;\n }\n\n get connector(): string {\n return this.account.walletClientType ?? \"privy\";\n }\n\n async signMessage(message: string): Promise<string> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const { signature } = await this.privySignMessage({\n message: new TextEncoder().encode(message),\n wallet: this.wallet,\n });\n return Buffer.from(signature).toString(\"base64\");\n }\n\n async signTransaction(serializedTx: Uint8Array): Promise<Uint8Array> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const { signedTransaction } = await this.privySignTransaction({\n transaction: serializedTx,\n wallet: this.wallet,\n });\n return signedTransaction;\n }\n\n async sendTransaction(serializedTx: Uint8Array): Promise<string> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const { signature } = await this.privySignAndSendTransaction({\n transaction: serializedTx,\n wallet: this.wallet,\n });\n return Buffer.from(signature).toString(\"base64\");\n }\n}\n","import { PropsWithChildren, useCallback, useMemo, useState } from \"react\";\nimport {\n usePrivy,\n useSendTransaction,\n useSignMessage,\n useSignTransaction,\n useWallets,\n WalletWithMetadata,\n} from \"@privy-io/react-auth\";\nimport {\n useWallets as useSolanaWallets,\n useSignMessage as useSolanaSignMessage,\n useSignTransaction as useSolanaSignTransaction,\n useSignAndSendTransaction as useSolanaSignAndSendTransaction,\n} from \"@privy-io/react-auth/solana\";\nimport { WalletConnectorProvider } from \"@liberfi.io/wallet-connector\";\nimport { PrivyEvmWalletAdapter } from \"./PrivyEvmWalletAdapter\";\nimport { PrivySolanaWalletAdapter } from \"./PrivySolanaWalletAdapter\";\n\nexport function WalletConnectorAdapter({ children }: PropsWithChildren) {\n // privy authentication states\n const { ready: authReady, user, authenticated, login, logout } = usePrivy();\n\n // all connected evm wallets, may not be owned by the user\n const { ready: evmReady, wallets: evmWallets } = useWallets();\n\n // all connected solana wallets, may not be owned by the user\n const { ready: solanaReady, wallets: solanaWallets } = useSolanaWallets();\n\n // privy's evm sign message\n const { signMessage: signEvmMessage } = useSignMessage();\n\n // privy's evm sign transaction\n const { signTransaction: signEvmTransaction } = useSignTransaction();\n\n // privy's evm send transaction\n const { sendTransaction: sendEvmTransaction } = useSendTransaction();\n\n // privy's solana sign message\n const { signMessage: signSolanaMessage } = useSolanaSignMessage();\n\n // privy's solana sign transaction\n const { signTransaction: signSolanaTransaction } = useSolanaSignTransaction();\n\n // privy's solana send transaction\n const { signAndSendTransaction: signAndSendSolanaTransaction } =\n useSolanaSignAndSendTransaction();\n\n // is signing in to privy, this is the step of connecting to a wallet\n const [isSigningIn, setIsSigningIn] = useState(false);\n\n // is signing out from privy, this is the step of disconnecting from all wallets\n const [isSigningOut, setIsSigningOut] = useState(false);\n\n // all wallets that can be used to take onchain actions when connected\n const wallets = useMemo(() => {\n // unauthenticated , or user has no wallets\n if (!user?.linkedAccounts) return [];\n\n // owned evm wallets\n const evmWalletAdapters = user.linkedAccounts\n .filter(\n (it) =>\n it.type === \"wallet\" &&\n (it as WalletWithMetadata).chainType === \"ethereum\",\n )\n .map((it) => {\n const account = it as WalletWithMetadata;\n const wallet = evmWallets.find((w) => w.address === account.address);\n return new PrivyEvmWalletAdapter(\n account,\n wallet,\n signEvmMessage,\n signEvmTransaction,\n sendEvmTransaction,\n );\n });\n\n // owned solana wallets\n const solanaWalletAdapters = user.linkedAccounts\n .filter(\n (it) =>\n it.type === \"wallet\" &&\n (it as WalletWithMetadata).chainType === \"solana\",\n )\n .map((it) => {\n const account = it as WalletWithMetadata;\n const wallet = solanaWallets.find((w) => w.address === account.address);\n return new PrivySolanaWalletAdapter(\n account,\n wallet,\n signSolanaMessage,\n signSolanaTransaction,\n signAndSendSolanaTransaction,\n );\n });\n\n const walletAdapters = [...evmWalletAdapters, ...solanaWalletAdapters];\n return walletAdapters;\n }, [\n user?.linkedAccounts,\n evmWallets,\n solanaWallets,\n signEvmMessage,\n signEvmTransaction,\n sendEvmTransaction,\n signSolanaMessage,\n signSolanaTransaction,\n signAndSendSolanaTransaction,\n ]);\n\n // wallet connector status\n const status = useMemo(() => {\n // is detecting authentication status\n if (!authReady) return \"detecting\";\n // is detecting connected wallets\n if (!evmReady || !solanaReady) return \"detecting\";\n // is signing in to privy, this is the step of connecting to a wallet\n if (isSigningIn) return \"connecting\";\n // is signing out from privy, this is the step of disconnecting from all wallets\n if (isSigningOut) return \"disconnecting\";\n // is not authenticated, can't connect any wallets\n if (!authenticated || !user) return \"disconnected\";\n // is authenticated, but no wallets are connected\n return \"connected\";\n }, [authReady, evmReady, solanaReady, authenticated, user?.linkedAccounts]);\n\n const signIn = useCallback(async () => {\n setIsSigningIn(true);\n try {\n login();\n } catch (error) {\n // TODO make error human readable\n console.error(error);\n } finally {\n setIsSigningIn(false);\n }\n }, [login]);\n\n const signOut = useCallback(async () => {\n setIsSigningOut(true);\n try {\n // TODO fix: await logout is halting\n // await logout();\n logout();\n } catch (error) {\n // TODO make error human readable\n console.error(error);\n } finally {\n setIsSigningOut(false);\n }\n }, [logout]);\n\n return (\n <WalletConnectorProvider\n status={status}\n // all user's wallets, which can be used to take onchain actions when connected\n wallets={wallets}\n // connect to the first wallet by signing in to privy\n connect={signIn}\n // disconnect from all wallets by signing out from privy\n disconnect={signOut}\n >\n {children}\n </WalletConnectorProvider>\n );\n}\n","import { PropsWithChildren } from \"react\";\nimport { PrivyProvider, type PrivyClientConfig } from \"@privy-io/react-auth\";\nimport { toSolanaWalletConnectors } from \"@privy-io/react-auth/solana\";\nimport { WalletConnectorAdapter } from \"./WalletConnectorAdapter\";\n\nexport type PrivyWalletConnectorProviderProps = PropsWithChildren<{\n privyAppId: string;\n privyClientId?: string;\n privyClientConfig?: PrivyClientConfig;\n}>;\n\nexport function PrivyWalletConnectorProvider({\n privyAppId,\n privyClientId,\n privyClientConfig,\n children,\n}: PrivyWalletConnectorProviderProps) {\n return (\n <PrivyProvider\n appId={privyAppId}\n clientId={privyClientId}\n config={{\n externalWallets: {\n solana: {\n connectors: toSolanaWalletConnectors({\n shouldAutoConnect: true,\n }),\n },\n },\n ...privyClientConfig,\n }}\n >\n <WalletConnectorAdapter>{children}</WalletConnectorAdapter>\n </PrivyProvider>\n );\n}\n\nPrivyWalletConnectorProvider.displayName = \"PrivyWalletConnectorProvider\";\n"]}
1
+ {"version":3,"sources":["../src/version.ts","../src/PrivyAuthProvider.tsx","../src/PrivyEvmWalletAdapter.ts","../src/PrivySolanaWalletAdapter.ts","../src/WalletConnectorAdapter.tsx","../src/PrivyWalletConnectorProvider.tsx"],"names":["useWalletConnector","usePrivy","useUser","useIdentityToken","useState","useEffect","useMemo","useCallback","jsx","AuthProvider","ChainNamespace","ethers","Chain","useWallets","useSolanaWallets","useSignMessage","useSignTransaction","useSendTransaction","useSolanaSignMessage","useSolanaSignTransaction","useSolanaSignAndSendTransaction","WalletConnectorProvider","PrivyProvider","toSolanaWalletConnectors"],"mappings":"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","file":"index.js","sourcesContent":["declare global {\n interface Window {\n __LIBERFI_VERSION__?: {\n [key: string]: string;\n };\n }\n}\nif (typeof window !== \"undefined\") {\n window.__LIBERFI_VERSION__ = window.__LIBERFI_VERSION__ || {};\n window.__LIBERFI_VERSION__[\"@liberfi.io/wallet-connector-privy\"] = \"0.1.9\";\n}\n\nexport default \"0.1.9\";\n","import {\n PropsWithChildren,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { useIdentityToken, usePrivy, useUser } from \"@privy-io/react-auth\";\nimport {\n AuthenticatedUser,\n AuthProvider,\n useWalletConnector,\n} from \"@liberfi.io/wallet-connector\";\n\nexport type PrivyAuthProviderProps = PropsWithChildren<{\n /** exchange privy's access token for a custom access token, if not provided, the privy's access token will be used as is */\n exchangeAccessToken?: (\n /** privy's access token */\n accessToken: string,\n /** privy's identity token */\n identityToken: string,\n ) => Promise<string | undefined | null>;\n}>;\n\n/**\n * PrivyAuthProvider must be a child of PrivyWalletConnectorProvider\n */\nexport function PrivyAuthProvider({\n exchangeAccessToken,\n children,\n}: PrivyAuthProviderProps) {\n const {\n wallets,\n status: walletStatus,\n connect,\n disconnect,\n } = useWalletConnector();\n\n const { ready, authenticated, getAccessToken } = usePrivy();\n\n const { user: privyUser, refreshUser } = useUser();\n\n const { identityToken: privyIdentityToken } = useIdentityToken();\n\n // privy access token\n const [privyAccessToken, setPrivyAccessToken] = useState<string | null>(null);\n\n // exchanged access token\n const [accessToken, setAccessToken] = useState<string | null>(null);\n\n // fetch privy's access token when user is authenticated\n useEffect(() => {\n if (ready && authenticated) {\n getAccessToken().then((token) => setPrivyAccessToken(token));\n }\n }, [ready, authenticated, getAccessToken]);\n\n // exchange custom access token when privy's access token & identity token is available or changed\n useEffect(() => {\n if (privyAccessToken && privyIdentityToken && exchangeAccessToken) {\n exchangeAccessToken(privyAccessToken, privyIdentityToken)\n .then((token) => {\n if (!token) {\n console.error(\"PrivyAuthProvider: exchange access token failed\");\n return;\n }\n setAccessToken(token);\n })\n .catch((error) => {\n console.error(\n \"PrivyAuthProvider: exchange access token error\",\n error,\n );\n });\n }\n }, [privyAccessToken, privyIdentityToken, exchangeAccessToken]);\n\n const status = useMemo(() => {\n switch (walletStatus) {\n case \"detecting\":\n return \"authenticating\";\n case \"connecting\":\n return \"authenticating\";\n case \"connected\":\n return \"authenticated\";\n case \"disconnecting\":\n return \"unauthenticated\";\n case \"disconnected\":\n return \"unauthenticated\";\n }\n }, [walletStatus]);\n\n const user = useMemo<AuthenticatedUser | null>(() => {\n if (!privyUser) return null;\n\n // if exchangeAccessToken is provided, use the exchanged access token, otherwise use the privy's access token\n const userAccessToken = exchangeAccessToken\n ? accessToken\n : privyAccessToken;\n\n if (!userAccessToken) return null;\n\n return {\n ...privyUser,\n accessToken: userAccessToken,\n wallets,\n };\n }, [privyUser, privyAccessToken, accessToken, exchangeAccessToken, wallets]);\n\n const refreshAccessToken = useCallback(async () => {\n await refreshUser();\n }, [refreshUser]);\n\n return (\n <AuthProvider\n user={user}\n status={status}\n signIn={connect}\n signOut={disconnect}\n refreshAccessToken={refreshAccessToken}\n >\n {children}\n </AuthProvider>\n );\n}\n\nPrivyAuthProvider.displayName = \"PrivyAuthProvider\";\n","import {\n ConnectedWallet,\n useSendTransaction,\n useSignMessage,\n useSignTransaction,\n WalletWithMetadata,\n} from \"@privy-io/react-auth\";\nimport { ethers } from \"ethers\";\nimport { ChainNamespace, Chain } from \"@liberfi.io/types\";\nimport {\n Eip1193Provider,\n EvmWalletAdapter,\n} from \"@liberfi.io/wallet-connector\";\n\nexport class PrivyEvmWalletAdapter implements EvmWalletAdapter {\n constructor(\n private readonly account: WalletWithMetadata,\n private readonly wallet: ConnectedWallet | undefined,\n private readonly privySignMessage: ReturnType<\n typeof useSignMessage\n >[\"signMessage\"],\n private readonly privySignTransaction: ReturnType<\n typeof useSignTransaction\n >[\"signTransaction\"],\n private readonly privySendTransaction: ReturnType<\n typeof useSendTransaction\n >[\"sendTransaction\"],\n ) {}\n\n get chainNamespace(): ChainNamespace {\n return ChainNamespace.EVM;\n }\n\n get chain(): Chain | undefined {\n const privyChainId = this.wallet?.chainId;\n if (!privyChainId) return undefined;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [_, chainId] = privyChainId.split(\":\");\n return chainId as Chain;\n }\n\n get address(): string {\n return this.account.address;\n }\n\n get isConnected(): boolean {\n return !!this.wallet;\n }\n\n get isCustodial(): boolean {\n return this.account.delegated;\n }\n\n get connector(): string {\n return this.account.walletClientType ?? \"privy\";\n }\n\n async signMessage(message: string): Promise<string> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const { signature } = await this.privySignMessage(\n { message },\n { address: this.address },\n );\n return signature;\n }\n\n async signTransaction(serializedTx: Uint8Array): Promise<Uint8Array> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const serializedTxHex = \"0x\" + Buffer.from(serializedTx).toString(\"hex\");\n const tx = ethers.Transaction.from(serializedTxHex);\n const { signature } = await this.privySignTransaction(\n {\n from: tx.from ?? undefined,\n to: tx.to ?? undefined,\n value: tx.value,\n gasLimit: tx.gasLimit,\n gasPrice: tx.gasPrice ?? undefined,\n nonce: tx.nonce,\n data: tx.data,\n type: tx.type ?? undefined,\n accessList: tx.accessList ?? undefined,\n chainId: Number(tx.chainId),\n maxPriorityFeePerGas: tx.maxPriorityFeePerGas ?? undefined,\n maxFeePerGas: tx.maxFeePerGas ?? undefined,\n },\n { address: this.address },\n );\n return new Uint8Array(Buffer.from(signature.slice(2), \"hex\"));\n }\n\n async sendTransaction(serializedTx: Uint8Array): Promise<string> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const serializedTxHex = \"0x\" + Buffer.from(serializedTx).toString(\"hex\");\n const tx = ethers.Transaction.from(serializedTxHex);\n const { hash } = await this.privySendTransaction(\n {\n from: tx.from ?? undefined,\n to: tx.to ?? undefined,\n value: tx.value,\n gasLimit: tx.gasLimit,\n gasPrice: tx.gasPrice ?? undefined,\n nonce: tx.nonce,\n data: tx.data,\n type: tx.type ?? undefined,\n accessList: tx.accessList ?? undefined,\n chainId: Number(tx.chainId),\n maxPriorityFeePerGas: tx.maxPriorityFeePerGas ?? undefined,\n maxFeePerGas: tx.maxFeePerGas ?? undefined,\n },\n { address: this.address },\n );\n return hash;\n }\n\n async getEip1193Provider(): Promise<Eip1193Provider | undefined> {\n return await this.wallet?.getEthereumProvider();\n }\n\n async switchChain(chain: Chain): Promise<void> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n await this.wallet.switchChain(Number(chain));\n }\n}\n","import { WalletWithMetadata } from \"@privy-io/react-auth\";\nimport {\n ConnectedStandardSolanaWallet,\n useSignMessage,\n useSignTransaction,\n useSignAndSendTransaction,\n} from \"@privy-io/react-auth/solana\";\nimport { ChainNamespace, Chain } from \"@liberfi.io/types\";\nimport { WalletAdapter } from \"@liberfi.io/wallet-connector\";\n\nexport class PrivySolanaWalletAdapter implements WalletAdapter {\n constructor(\n private readonly account: WalletWithMetadata,\n private readonly wallet: ConnectedStandardSolanaWallet | undefined,\n private readonly privySignMessage: ReturnType<\n typeof useSignMessage\n >[\"signMessage\"],\n private readonly privySignTransaction: ReturnType<\n typeof useSignTransaction\n >[\"signTransaction\"],\n private readonly privySignAndSendTransaction: ReturnType<\n typeof useSignAndSendTransaction\n >[\"signAndSendTransaction\"],\n ) {}\n\n get chainNamespace(): ChainNamespace {\n return ChainNamespace.SOLANA;\n }\n\n get chain(): Chain | undefined {\n return Chain.SOLANA;\n }\n\n get address(): string {\n return this.account.address;\n }\n\n get isConnected(): boolean {\n return !!this.wallet;\n }\n\n get isCustodial(): boolean {\n return this.account.delegated;\n }\n\n get connector(): string {\n return this.account.walletClientType ?? \"privy\";\n }\n\n async signMessage(message: string): Promise<string> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const { signature } = await this.privySignMessage({\n message: new TextEncoder().encode(message),\n wallet: this.wallet,\n });\n return Buffer.from(signature).toString(\"base64\");\n }\n\n async signTransaction(serializedTx: Uint8Array): Promise<Uint8Array> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const { signedTransaction } = await this.privySignTransaction({\n transaction: serializedTx,\n wallet: this.wallet,\n });\n return signedTransaction;\n }\n\n async sendTransaction(serializedTx: Uint8Array): Promise<string> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const { signature } = await this.privySignAndSendTransaction({\n transaction: serializedTx,\n wallet: this.wallet,\n });\n return Buffer.from(signature).toString(\"base64\");\n }\n}\n","import { PropsWithChildren, useCallback, useMemo, useState } from \"react\";\nimport {\n usePrivy,\n useSendTransaction,\n useSignMessage,\n useSignTransaction,\n useWallets,\n WalletWithMetadata,\n} from \"@privy-io/react-auth\";\nimport {\n useWallets as useSolanaWallets,\n useSignMessage as useSolanaSignMessage,\n useSignTransaction as useSolanaSignTransaction,\n useSignAndSendTransaction as useSolanaSignAndSendTransaction,\n} from \"@privy-io/react-auth/solana\";\nimport { WalletConnectorProvider } from \"@liberfi.io/wallet-connector\";\nimport { PrivyEvmWalletAdapter } from \"./PrivyEvmWalletAdapter\";\nimport { PrivySolanaWalletAdapter } from \"./PrivySolanaWalletAdapter\";\n\nexport function WalletConnectorAdapter({ children }: PropsWithChildren) {\n // privy authentication states\n const { ready: authReady, user, authenticated, login, logout } = usePrivy();\n\n // all connected evm wallets, may not be owned by the user\n const { ready: evmReady, wallets: evmWallets } = useWallets();\n\n // all connected solana wallets, may not be owned by the user\n const { ready: solanaReady, wallets: solanaWallets } = useSolanaWallets();\n\n // privy's evm sign message\n const { signMessage: signEvmMessage } = useSignMessage();\n\n // privy's evm sign transaction\n const { signTransaction: signEvmTransaction } = useSignTransaction();\n\n // privy's evm send transaction\n const { sendTransaction: sendEvmTransaction } = useSendTransaction();\n\n // privy's solana sign message\n const { signMessage: signSolanaMessage } = useSolanaSignMessage();\n\n // privy's solana sign transaction\n const { signTransaction: signSolanaTransaction } = useSolanaSignTransaction();\n\n // privy's solana send transaction\n const { signAndSendTransaction: signAndSendSolanaTransaction } =\n useSolanaSignAndSendTransaction();\n\n // is signing in to privy, this is the step of connecting to a wallet\n const [isSigningIn, setIsSigningIn] = useState(false);\n\n // is signing out from privy, this is the step of disconnecting from all wallets\n const [isSigningOut, setIsSigningOut] = useState(false);\n\n // all wallets that can be used to take onchain actions when connected\n const wallets = useMemo(() => {\n // unauthenticated , or user has no wallets\n if (!user?.linkedAccounts) return [];\n\n // owned evm wallets\n const evmWalletAdapters = user.linkedAccounts\n .filter(\n (it) =>\n it.type === \"wallet\" &&\n (it as WalletWithMetadata).chainType === \"ethereum\",\n )\n .map((it) => {\n const account = it as WalletWithMetadata;\n const wallet = evmWallets.find((w) => w.address === account.address);\n return new PrivyEvmWalletAdapter(\n account,\n wallet,\n signEvmMessage,\n signEvmTransaction,\n sendEvmTransaction,\n );\n });\n\n // owned solana wallets\n const solanaWalletAdapters = user.linkedAccounts\n .filter(\n (it) =>\n it.type === \"wallet\" &&\n (it as WalletWithMetadata).chainType === \"solana\",\n )\n .map((it) => {\n const account = it as WalletWithMetadata;\n const wallet = solanaWallets.find((w) => w.address === account.address);\n return new PrivySolanaWalletAdapter(\n account,\n wallet,\n signSolanaMessage,\n signSolanaTransaction,\n signAndSendSolanaTransaction,\n );\n });\n\n const walletAdapters = [...evmWalletAdapters, ...solanaWalletAdapters];\n return walletAdapters;\n }, [\n user?.linkedAccounts,\n evmWallets,\n solanaWallets,\n signEvmMessage,\n signEvmTransaction,\n sendEvmTransaction,\n signSolanaMessage,\n signSolanaTransaction,\n signAndSendSolanaTransaction,\n ]);\n\n // wallet connector status\n const status = useMemo(() => {\n // is detecting authentication status\n if (!authReady) return \"detecting\";\n // is detecting connected wallets\n if (!evmReady || !solanaReady) return \"detecting\";\n // is signing in to privy, this is the step of connecting to a wallet\n if (isSigningIn) return \"connecting\";\n // is signing out from privy, this is the step of disconnecting from all wallets\n if (isSigningOut) return \"disconnecting\";\n // is not authenticated, can't connect any wallets\n if (!authenticated || !user) return \"disconnected\";\n // is authenticated, but no wallets are connected\n return \"connected\";\n }, [authReady, evmReady, solanaReady, authenticated, user?.linkedAccounts]);\n\n const signIn = useCallback(async () => {\n setIsSigningIn(true);\n try {\n login();\n } catch (error) {\n // TODO make error human readable\n console.error(error);\n } finally {\n setIsSigningIn(false);\n }\n }, [login]);\n\n const signOut = useCallback(async () => {\n setIsSigningOut(true);\n try {\n // TODO fix: await logout is halting\n // await logout();\n logout();\n } catch (error) {\n // TODO make error human readable\n console.error(error);\n } finally {\n setIsSigningOut(false);\n }\n }, [logout]);\n\n return (\n <WalletConnectorProvider\n status={status}\n // all user's wallets, which can be used to take onchain actions when connected\n wallets={wallets}\n // connect to the first wallet by signing in to privy\n connect={signIn}\n // disconnect from all wallets by signing out from privy\n disconnect={signOut}\n >\n {children}\n </WalletConnectorProvider>\n );\n}\n","import { PropsWithChildren } from \"react\";\nimport { PrivyProvider, type PrivyClientConfig } from \"@privy-io/react-auth\";\nimport { toSolanaWalletConnectors } from \"@privy-io/react-auth/solana\";\nimport { WalletConnectorAdapter } from \"./WalletConnectorAdapter\";\n\nexport type PrivyWalletConnectorProviderProps = PropsWithChildren<{\n privyAppId: string;\n privyClientId?: string;\n privyClientConfig?: PrivyClientConfig;\n}>;\n\nexport function PrivyWalletConnectorProvider({\n privyAppId,\n privyClientId,\n privyClientConfig,\n children,\n}: PrivyWalletConnectorProviderProps) {\n return (\n <PrivyProvider\n appId={privyAppId}\n clientId={privyClientId}\n config={{\n externalWallets: {\n solana: {\n connectors: toSolanaWalletConnectors({\n shouldAutoConnect: true,\n }),\n },\n },\n ...privyClientConfig,\n }}\n >\n <WalletConnectorAdapter>{children}</WalletConnectorAdapter>\n </PrivyProvider>\n );\n}\n\nPrivyWalletConnectorProvider.displayName = \"PrivyWalletConnectorProvider\";\n"]}
package/dist/index.mjs CHANGED
@@ -9,9 +9,9 @@ import { ChainNamespace, Chain } from '@liberfi.io/types';
9
9
  // src/version.ts
10
10
  if (typeof window !== "undefined") {
11
11
  window.__LIBERFI_VERSION__ = window.__LIBERFI_VERSION__ || {};
12
- window.__LIBERFI_VERSION__["@liberfi.io/wallet-connector-privy"] = "0.1.5";
12
+ window.__LIBERFI_VERSION__["@liberfi.io/wallet-connector-privy"] = "0.1.9";
13
13
  }
14
- var version_default = "0.1.5";
14
+ var version_default = "0.1.9";
15
15
  function PrivyAuthProvider({
16
16
  exchangeAccessToken,
17
17
  children
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/version.ts","../src/PrivyAuthProvider.tsx","../src/PrivyEvmWalletAdapter.ts","../src/PrivySolanaWalletAdapter.ts","../src/WalletConnectorAdapter.tsx","../src/PrivyWalletConnectorProvider.tsx"],"names":["ChainNamespace","Chain","usePrivy","useSolanaWallets","useSolanaSignMessage","useSolanaSignTransaction","useSolanaSignAndSendTransaction","useState","useMemo","useCallback","jsx"],"mappings":"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","file":"index.mjs","sourcesContent":["declare global {\n interface Window {\n __LIBERFI_VERSION__?: {\n [key: string]: string;\n };\n }\n}\nif (typeof window !== \"undefined\") {\n window.__LIBERFI_VERSION__ = window.__LIBERFI_VERSION__ || {};\n window.__LIBERFI_VERSION__[\"@liberfi.io/wallet-connector-privy\"] = \"0.1.5\";\n}\n\nexport default \"0.1.5\";\n","import {\n PropsWithChildren,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { useIdentityToken, usePrivy, useUser } from \"@privy-io/react-auth\";\nimport {\n AuthenticatedUser,\n AuthProvider,\n useWalletConnector,\n} from \"@liberfi.io/wallet-connector\";\n\nexport type PrivyAuthProviderProps = PropsWithChildren<{\n /** exchange privy's access token for a custom access token, if not provided, the privy's access token will be used as is */\n exchangeAccessToken?: (\n /** privy's access token */\n accessToken: string,\n /** privy's identity token */\n identityToken: string,\n ) => Promise<string | undefined | null>;\n}>;\n\n/**\n * PrivyAuthProvider must be a child of PrivyWalletConnectorProvider\n */\nexport function PrivyAuthProvider({\n exchangeAccessToken,\n children,\n}: PrivyAuthProviderProps) {\n const {\n wallets,\n status: walletStatus,\n connect,\n disconnect,\n } = useWalletConnector();\n\n const { ready, authenticated, getAccessToken } = usePrivy();\n\n const { user: privyUser, refreshUser } = useUser();\n\n const { identityToken: privyIdentityToken } = useIdentityToken();\n\n // privy access token\n const [privyAccessToken, setPrivyAccessToken] = useState<string | null>(null);\n\n // exchanged access token\n const [accessToken, setAccessToken] = useState<string | null>(null);\n\n // fetch privy's access token when user is authenticated\n useEffect(() => {\n if (ready && authenticated) {\n getAccessToken().then((token) => setPrivyAccessToken(token));\n }\n }, [ready, authenticated, getAccessToken]);\n\n // exchange custom access token when privy's access token & identity token is available or changed\n useEffect(() => {\n if (privyAccessToken && privyIdentityToken && exchangeAccessToken) {\n exchangeAccessToken(privyAccessToken, privyIdentityToken)\n .then((token) => {\n if (!token) {\n console.error(\"PrivyAuthProvider: exchange access token failed\");\n return;\n }\n setAccessToken(token);\n })\n .catch((error) => {\n console.error(\n \"PrivyAuthProvider: exchange access token error\",\n error,\n );\n });\n }\n }, [privyAccessToken, privyIdentityToken, exchangeAccessToken]);\n\n const status = useMemo(() => {\n switch (walletStatus) {\n case \"detecting\":\n return \"authenticating\";\n case \"connecting\":\n return \"authenticating\";\n case \"connected\":\n return \"authenticated\";\n case \"disconnecting\":\n return \"unauthenticated\";\n case \"disconnected\":\n return \"unauthenticated\";\n }\n }, [walletStatus]);\n\n const user = useMemo<AuthenticatedUser | null>(() => {\n if (!privyUser) return null;\n\n // if exchangeAccessToken is provided, use the exchanged access token, otherwise use the privy's access token\n const userAccessToken = exchangeAccessToken\n ? accessToken\n : privyAccessToken;\n\n if (!userAccessToken) return null;\n\n return {\n ...privyUser,\n accessToken: userAccessToken,\n wallets,\n };\n }, [privyUser, privyAccessToken, accessToken, exchangeAccessToken, wallets]);\n\n const refreshAccessToken = useCallback(async () => {\n await refreshUser();\n }, [refreshUser]);\n\n return (\n <AuthProvider\n user={user}\n status={status}\n signIn={connect}\n signOut={disconnect}\n refreshAccessToken={refreshAccessToken}\n >\n {children}\n </AuthProvider>\n );\n}\n\nPrivyAuthProvider.displayName = \"PrivyAuthProvider\";\n","import {\n ConnectedWallet,\n useSendTransaction,\n useSignMessage,\n useSignTransaction,\n WalletWithMetadata,\n} from \"@privy-io/react-auth\";\nimport { ethers } from \"ethers\";\nimport { ChainNamespace, Chain } from \"@liberfi.io/types\";\nimport {\n Eip1193Provider,\n EvmWalletAdapter,\n} from \"@liberfi.io/wallet-connector\";\n\nexport class PrivyEvmWalletAdapter implements EvmWalletAdapter {\n constructor(\n private readonly account: WalletWithMetadata,\n private readonly wallet: ConnectedWallet | undefined,\n private readonly privySignMessage: ReturnType<\n typeof useSignMessage\n >[\"signMessage\"],\n private readonly privySignTransaction: ReturnType<\n typeof useSignTransaction\n >[\"signTransaction\"],\n private readonly privySendTransaction: ReturnType<\n typeof useSendTransaction\n >[\"sendTransaction\"],\n ) {}\n\n get chainNamespace(): ChainNamespace {\n return ChainNamespace.EVM;\n }\n\n get chain(): Chain | undefined {\n const privyChainId = this.wallet?.chainId;\n if (!privyChainId) return undefined;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [_, chainId] = privyChainId.split(\":\");\n return chainId as Chain;\n }\n\n get address(): string {\n return this.account.address;\n }\n\n get isConnected(): boolean {\n return !!this.wallet;\n }\n\n get isCustodial(): boolean {\n return this.account.delegated;\n }\n\n get connector(): string {\n return this.account.walletClientType ?? \"privy\";\n }\n\n async signMessage(message: string): Promise<string> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const { signature } = await this.privySignMessage(\n { message },\n { address: this.address },\n );\n return signature;\n }\n\n async signTransaction(serializedTx: Uint8Array): Promise<Uint8Array> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const serializedTxHex = \"0x\" + Buffer.from(serializedTx).toString(\"hex\");\n const tx = ethers.Transaction.from(serializedTxHex);\n const { signature } = await this.privySignTransaction(\n {\n from: tx.from ?? undefined,\n to: tx.to ?? undefined,\n value: tx.value,\n gasLimit: tx.gasLimit,\n gasPrice: tx.gasPrice ?? undefined,\n nonce: tx.nonce,\n data: tx.data,\n type: tx.type ?? undefined,\n accessList: tx.accessList ?? undefined,\n chainId: Number(tx.chainId),\n maxPriorityFeePerGas: tx.maxPriorityFeePerGas ?? undefined,\n maxFeePerGas: tx.maxFeePerGas ?? undefined,\n },\n { address: this.address },\n );\n return new Uint8Array(Buffer.from(signature.slice(2), \"hex\"));\n }\n\n async sendTransaction(serializedTx: Uint8Array): Promise<string> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const serializedTxHex = \"0x\" + Buffer.from(serializedTx).toString(\"hex\");\n const tx = ethers.Transaction.from(serializedTxHex);\n const { hash } = await this.privySendTransaction(\n {\n from: tx.from ?? undefined,\n to: tx.to ?? undefined,\n value: tx.value,\n gasLimit: tx.gasLimit,\n gasPrice: tx.gasPrice ?? undefined,\n nonce: tx.nonce,\n data: tx.data,\n type: tx.type ?? undefined,\n accessList: tx.accessList ?? undefined,\n chainId: Number(tx.chainId),\n maxPriorityFeePerGas: tx.maxPriorityFeePerGas ?? undefined,\n maxFeePerGas: tx.maxFeePerGas ?? undefined,\n },\n { address: this.address },\n );\n return hash;\n }\n\n async getEip1193Provider(): Promise<Eip1193Provider | undefined> {\n return await this.wallet?.getEthereumProvider();\n }\n\n async switchChain(chain: Chain): Promise<void> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n await this.wallet.switchChain(Number(chain));\n }\n}\n","import { WalletWithMetadata } from \"@privy-io/react-auth\";\nimport {\n ConnectedStandardSolanaWallet,\n useSignMessage,\n useSignTransaction,\n useSignAndSendTransaction,\n} from \"@privy-io/react-auth/solana\";\nimport { ChainNamespace, Chain } from \"@liberfi.io/types\";\nimport { WalletAdapter } from \"@liberfi.io/wallet-connector\";\n\nexport class PrivySolanaWalletAdapter implements WalletAdapter {\n constructor(\n private readonly account: WalletWithMetadata,\n private readonly wallet: ConnectedStandardSolanaWallet | undefined,\n private readonly privySignMessage: ReturnType<\n typeof useSignMessage\n >[\"signMessage\"],\n private readonly privySignTransaction: ReturnType<\n typeof useSignTransaction\n >[\"signTransaction\"],\n private readonly privySignAndSendTransaction: ReturnType<\n typeof useSignAndSendTransaction\n >[\"signAndSendTransaction\"],\n ) {}\n\n get chainNamespace(): ChainNamespace {\n return ChainNamespace.SOLANA;\n }\n\n get chain(): Chain | undefined {\n return Chain.SOLANA;\n }\n\n get address(): string {\n return this.account.address;\n }\n\n get isConnected(): boolean {\n return !!this.wallet;\n }\n\n get isCustodial(): boolean {\n return this.account.delegated;\n }\n\n get connector(): string {\n return this.account.walletClientType ?? \"privy\";\n }\n\n async signMessage(message: string): Promise<string> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const { signature } = await this.privySignMessage({\n message: new TextEncoder().encode(message),\n wallet: this.wallet,\n });\n return Buffer.from(signature).toString(\"base64\");\n }\n\n async signTransaction(serializedTx: Uint8Array): Promise<Uint8Array> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const { signedTransaction } = await this.privySignTransaction({\n transaction: serializedTx,\n wallet: this.wallet,\n });\n return signedTransaction;\n }\n\n async sendTransaction(serializedTx: Uint8Array): Promise<string> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const { signature } = await this.privySignAndSendTransaction({\n transaction: serializedTx,\n wallet: this.wallet,\n });\n return Buffer.from(signature).toString(\"base64\");\n }\n}\n","import { PropsWithChildren, useCallback, useMemo, useState } from \"react\";\nimport {\n usePrivy,\n useSendTransaction,\n useSignMessage,\n useSignTransaction,\n useWallets,\n WalletWithMetadata,\n} from \"@privy-io/react-auth\";\nimport {\n useWallets as useSolanaWallets,\n useSignMessage as useSolanaSignMessage,\n useSignTransaction as useSolanaSignTransaction,\n useSignAndSendTransaction as useSolanaSignAndSendTransaction,\n} from \"@privy-io/react-auth/solana\";\nimport { WalletConnectorProvider } from \"@liberfi.io/wallet-connector\";\nimport { PrivyEvmWalletAdapter } from \"./PrivyEvmWalletAdapter\";\nimport { PrivySolanaWalletAdapter } from \"./PrivySolanaWalletAdapter\";\n\nexport function WalletConnectorAdapter({ children }: PropsWithChildren) {\n // privy authentication states\n const { ready: authReady, user, authenticated, login, logout } = usePrivy();\n\n // all connected evm wallets, may not be owned by the user\n const { ready: evmReady, wallets: evmWallets } = useWallets();\n\n // all connected solana wallets, may not be owned by the user\n const { ready: solanaReady, wallets: solanaWallets } = useSolanaWallets();\n\n // privy's evm sign message\n const { signMessage: signEvmMessage } = useSignMessage();\n\n // privy's evm sign transaction\n const { signTransaction: signEvmTransaction } = useSignTransaction();\n\n // privy's evm send transaction\n const { sendTransaction: sendEvmTransaction } = useSendTransaction();\n\n // privy's solana sign message\n const { signMessage: signSolanaMessage } = useSolanaSignMessage();\n\n // privy's solana sign transaction\n const { signTransaction: signSolanaTransaction } = useSolanaSignTransaction();\n\n // privy's solana send transaction\n const { signAndSendTransaction: signAndSendSolanaTransaction } =\n useSolanaSignAndSendTransaction();\n\n // is signing in to privy, this is the step of connecting to a wallet\n const [isSigningIn, setIsSigningIn] = useState(false);\n\n // is signing out from privy, this is the step of disconnecting from all wallets\n const [isSigningOut, setIsSigningOut] = useState(false);\n\n // all wallets that can be used to take onchain actions when connected\n const wallets = useMemo(() => {\n // unauthenticated , or user has no wallets\n if (!user?.linkedAccounts) return [];\n\n // owned evm wallets\n const evmWalletAdapters = user.linkedAccounts\n .filter(\n (it) =>\n it.type === \"wallet\" &&\n (it as WalletWithMetadata).chainType === \"ethereum\",\n )\n .map((it) => {\n const account = it as WalletWithMetadata;\n const wallet = evmWallets.find((w) => w.address === account.address);\n return new PrivyEvmWalletAdapter(\n account,\n wallet,\n signEvmMessage,\n signEvmTransaction,\n sendEvmTransaction,\n );\n });\n\n // owned solana wallets\n const solanaWalletAdapters = user.linkedAccounts\n .filter(\n (it) =>\n it.type === \"wallet\" &&\n (it as WalletWithMetadata).chainType === \"solana\",\n )\n .map((it) => {\n const account = it as WalletWithMetadata;\n const wallet = solanaWallets.find((w) => w.address === account.address);\n return new PrivySolanaWalletAdapter(\n account,\n wallet,\n signSolanaMessage,\n signSolanaTransaction,\n signAndSendSolanaTransaction,\n );\n });\n\n const walletAdapters = [...evmWalletAdapters, ...solanaWalletAdapters];\n return walletAdapters;\n }, [\n user?.linkedAccounts,\n evmWallets,\n solanaWallets,\n signEvmMessage,\n signEvmTransaction,\n sendEvmTransaction,\n signSolanaMessage,\n signSolanaTransaction,\n signAndSendSolanaTransaction,\n ]);\n\n // wallet connector status\n const status = useMemo(() => {\n // is detecting authentication status\n if (!authReady) return \"detecting\";\n // is detecting connected wallets\n if (!evmReady || !solanaReady) return \"detecting\";\n // is signing in to privy, this is the step of connecting to a wallet\n if (isSigningIn) return \"connecting\";\n // is signing out from privy, this is the step of disconnecting from all wallets\n if (isSigningOut) return \"disconnecting\";\n // is not authenticated, can't connect any wallets\n if (!authenticated || !user) return \"disconnected\";\n // is authenticated, but no wallets are connected\n return \"connected\";\n }, [authReady, evmReady, solanaReady, authenticated, user?.linkedAccounts]);\n\n const signIn = useCallback(async () => {\n setIsSigningIn(true);\n try {\n login();\n } catch (error) {\n // TODO make error human readable\n console.error(error);\n } finally {\n setIsSigningIn(false);\n }\n }, [login]);\n\n const signOut = useCallback(async () => {\n setIsSigningOut(true);\n try {\n // TODO fix: await logout is halting\n // await logout();\n logout();\n } catch (error) {\n // TODO make error human readable\n console.error(error);\n } finally {\n setIsSigningOut(false);\n }\n }, [logout]);\n\n return (\n <WalletConnectorProvider\n status={status}\n // all user's wallets, which can be used to take onchain actions when connected\n wallets={wallets}\n // connect to the first wallet by signing in to privy\n connect={signIn}\n // disconnect from all wallets by signing out from privy\n disconnect={signOut}\n >\n {children}\n </WalletConnectorProvider>\n );\n}\n","import { PropsWithChildren } from \"react\";\nimport { PrivyProvider, type PrivyClientConfig } from \"@privy-io/react-auth\";\nimport { toSolanaWalletConnectors } from \"@privy-io/react-auth/solana\";\nimport { WalletConnectorAdapter } from \"./WalletConnectorAdapter\";\n\nexport type PrivyWalletConnectorProviderProps = PropsWithChildren<{\n privyAppId: string;\n privyClientId?: string;\n privyClientConfig?: PrivyClientConfig;\n}>;\n\nexport function PrivyWalletConnectorProvider({\n privyAppId,\n privyClientId,\n privyClientConfig,\n children,\n}: PrivyWalletConnectorProviderProps) {\n return (\n <PrivyProvider\n appId={privyAppId}\n clientId={privyClientId}\n config={{\n externalWallets: {\n solana: {\n connectors: toSolanaWalletConnectors({\n shouldAutoConnect: true,\n }),\n },\n },\n ...privyClientConfig,\n }}\n >\n <WalletConnectorAdapter>{children}</WalletConnectorAdapter>\n </PrivyProvider>\n );\n}\n\nPrivyWalletConnectorProvider.displayName = \"PrivyWalletConnectorProvider\";\n"]}
1
+ {"version":3,"sources":["../src/version.ts","../src/PrivyAuthProvider.tsx","../src/PrivyEvmWalletAdapter.ts","../src/PrivySolanaWalletAdapter.ts","../src/WalletConnectorAdapter.tsx","../src/PrivyWalletConnectorProvider.tsx"],"names":["ChainNamespace","Chain","usePrivy","useSolanaWallets","useSolanaSignMessage","useSolanaSignTransaction","useSolanaSignAndSendTransaction","useState","useMemo","useCallback","jsx"],"mappings":"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","file":"index.mjs","sourcesContent":["declare global {\n interface Window {\n __LIBERFI_VERSION__?: {\n [key: string]: string;\n };\n }\n}\nif (typeof window !== \"undefined\") {\n window.__LIBERFI_VERSION__ = window.__LIBERFI_VERSION__ || {};\n window.__LIBERFI_VERSION__[\"@liberfi.io/wallet-connector-privy\"] = \"0.1.9\";\n}\n\nexport default \"0.1.9\";\n","import {\n PropsWithChildren,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { useIdentityToken, usePrivy, useUser } from \"@privy-io/react-auth\";\nimport {\n AuthenticatedUser,\n AuthProvider,\n useWalletConnector,\n} from \"@liberfi.io/wallet-connector\";\n\nexport type PrivyAuthProviderProps = PropsWithChildren<{\n /** exchange privy's access token for a custom access token, if not provided, the privy's access token will be used as is */\n exchangeAccessToken?: (\n /** privy's access token */\n accessToken: string,\n /** privy's identity token */\n identityToken: string,\n ) => Promise<string | undefined | null>;\n}>;\n\n/**\n * PrivyAuthProvider must be a child of PrivyWalletConnectorProvider\n */\nexport function PrivyAuthProvider({\n exchangeAccessToken,\n children,\n}: PrivyAuthProviderProps) {\n const {\n wallets,\n status: walletStatus,\n connect,\n disconnect,\n } = useWalletConnector();\n\n const { ready, authenticated, getAccessToken } = usePrivy();\n\n const { user: privyUser, refreshUser } = useUser();\n\n const { identityToken: privyIdentityToken } = useIdentityToken();\n\n // privy access token\n const [privyAccessToken, setPrivyAccessToken] = useState<string | null>(null);\n\n // exchanged access token\n const [accessToken, setAccessToken] = useState<string | null>(null);\n\n // fetch privy's access token when user is authenticated\n useEffect(() => {\n if (ready && authenticated) {\n getAccessToken().then((token) => setPrivyAccessToken(token));\n }\n }, [ready, authenticated, getAccessToken]);\n\n // exchange custom access token when privy's access token & identity token is available or changed\n useEffect(() => {\n if (privyAccessToken && privyIdentityToken && exchangeAccessToken) {\n exchangeAccessToken(privyAccessToken, privyIdentityToken)\n .then((token) => {\n if (!token) {\n console.error(\"PrivyAuthProvider: exchange access token failed\");\n return;\n }\n setAccessToken(token);\n })\n .catch((error) => {\n console.error(\n \"PrivyAuthProvider: exchange access token error\",\n error,\n );\n });\n }\n }, [privyAccessToken, privyIdentityToken, exchangeAccessToken]);\n\n const status = useMemo(() => {\n switch (walletStatus) {\n case \"detecting\":\n return \"authenticating\";\n case \"connecting\":\n return \"authenticating\";\n case \"connected\":\n return \"authenticated\";\n case \"disconnecting\":\n return \"unauthenticated\";\n case \"disconnected\":\n return \"unauthenticated\";\n }\n }, [walletStatus]);\n\n const user = useMemo<AuthenticatedUser | null>(() => {\n if (!privyUser) return null;\n\n // if exchangeAccessToken is provided, use the exchanged access token, otherwise use the privy's access token\n const userAccessToken = exchangeAccessToken\n ? accessToken\n : privyAccessToken;\n\n if (!userAccessToken) return null;\n\n return {\n ...privyUser,\n accessToken: userAccessToken,\n wallets,\n };\n }, [privyUser, privyAccessToken, accessToken, exchangeAccessToken, wallets]);\n\n const refreshAccessToken = useCallback(async () => {\n await refreshUser();\n }, [refreshUser]);\n\n return (\n <AuthProvider\n user={user}\n status={status}\n signIn={connect}\n signOut={disconnect}\n refreshAccessToken={refreshAccessToken}\n >\n {children}\n </AuthProvider>\n );\n}\n\nPrivyAuthProvider.displayName = \"PrivyAuthProvider\";\n","import {\n ConnectedWallet,\n useSendTransaction,\n useSignMessage,\n useSignTransaction,\n WalletWithMetadata,\n} from \"@privy-io/react-auth\";\nimport { ethers } from \"ethers\";\nimport { ChainNamespace, Chain } from \"@liberfi.io/types\";\nimport {\n Eip1193Provider,\n EvmWalletAdapter,\n} from \"@liberfi.io/wallet-connector\";\n\nexport class PrivyEvmWalletAdapter implements EvmWalletAdapter {\n constructor(\n private readonly account: WalletWithMetadata,\n private readonly wallet: ConnectedWallet | undefined,\n private readonly privySignMessage: ReturnType<\n typeof useSignMessage\n >[\"signMessage\"],\n private readonly privySignTransaction: ReturnType<\n typeof useSignTransaction\n >[\"signTransaction\"],\n private readonly privySendTransaction: ReturnType<\n typeof useSendTransaction\n >[\"sendTransaction\"],\n ) {}\n\n get chainNamespace(): ChainNamespace {\n return ChainNamespace.EVM;\n }\n\n get chain(): Chain | undefined {\n const privyChainId = this.wallet?.chainId;\n if (!privyChainId) return undefined;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [_, chainId] = privyChainId.split(\":\");\n return chainId as Chain;\n }\n\n get address(): string {\n return this.account.address;\n }\n\n get isConnected(): boolean {\n return !!this.wallet;\n }\n\n get isCustodial(): boolean {\n return this.account.delegated;\n }\n\n get connector(): string {\n return this.account.walletClientType ?? \"privy\";\n }\n\n async signMessage(message: string): Promise<string> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const { signature } = await this.privySignMessage(\n { message },\n { address: this.address },\n );\n return signature;\n }\n\n async signTransaction(serializedTx: Uint8Array): Promise<Uint8Array> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const serializedTxHex = \"0x\" + Buffer.from(serializedTx).toString(\"hex\");\n const tx = ethers.Transaction.from(serializedTxHex);\n const { signature } = await this.privySignTransaction(\n {\n from: tx.from ?? undefined,\n to: tx.to ?? undefined,\n value: tx.value,\n gasLimit: tx.gasLimit,\n gasPrice: tx.gasPrice ?? undefined,\n nonce: tx.nonce,\n data: tx.data,\n type: tx.type ?? undefined,\n accessList: tx.accessList ?? undefined,\n chainId: Number(tx.chainId),\n maxPriorityFeePerGas: tx.maxPriorityFeePerGas ?? undefined,\n maxFeePerGas: tx.maxFeePerGas ?? undefined,\n },\n { address: this.address },\n );\n return new Uint8Array(Buffer.from(signature.slice(2), \"hex\"));\n }\n\n async sendTransaction(serializedTx: Uint8Array): Promise<string> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const serializedTxHex = \"0x\" + Buffer.from(serializedTx).toString(\"hex\");\n const tx = ethers.Transaction.from(serializedTxHex);\n const { hash } = await this.privySendTransaction(\n {\n from: tx.from ?? undefined,\n to: tx.to ?? undefined,\n value: tx.value,\n gasLimit: tx.gasLimit,\n gasPrice: tx.gasPrice ?? undefined,\n nonce: tx.nonce,\n data: tx.data,\n type: tx.type ?? undefined,\n accessList: tx.accessList ?? undefined,\n chainId: Number(tx.chainId),\n maxPriorityFeePerGas: tx.maxPriorityFeePerGas ?? undefined,\n maxFeePerGas: tx.maxFeePerGas ?? undefined,\n },\n { address: this.address },\n );\n return hash;\n }\n\n async getEip1193Provider(): Promise<Eip1193Provider | undefined> {\n return await this.wallet?.getEthereumProvider();\n }\n\n async switchChain(chain: Chain): Promise<void> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n await this.wallet.switchChain(Number(chain));\n }\n}\n","import { WalletWithMetadata } from \"@privy-io/react-auth\";\nimport {\n ConnectedStandardSolanaWallet,\n useSignMessage,\n useSignTransaction,\n useSignAndSendTransaction,\n} from \"@privy-io/react-auth/solana\";\nimport { ChainNamespace, Chain } from \"@liberfi.io/types\";\nimport { WalletAdapter } from \"@liberfi.io/wallet-connector\";\n\nexport class PrivySolanaWalletAdapter implements WalletAdapter {\n constructor(\n private readonly account: WalletWithMetadata,\n private readonly wallet: ConnectedStandardSolanaWallet | undefined,\n private readonly privySignMessage: ReturnType<\n typeof useSignMessage\n >[\"signMessage\"],\n private readonly privySignTransaction: ReturnType<\n typeof useSignTransaction\n >[\"signTransaction\"],\n private readonly privySignAndSendTransaction: ReturnType<\n typeof useSignAndSendTransaction\n >[\"signAndSendTransaction\"],\n ) {}\n\n get chainNamespace(): ChainNamespace {\n return ChainNamespace.SOLANA;\n }\n\n get chain(): Chain | undefined {\n return Chain.SOLANA;\n }\n\n get address(): string {\n return this.account.address;\n }\n\n get isConnected(): boolean {\n return !!this.wallet;\n }\n\n get isCustodial(): boolean {\n return this.account.delegated;\n }\n\n get connector(): string {\n return this.account.walletClientType ?? \"privy\";\n }\n\n async signMessage(message: string): Promise<string> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const { signature } = await this.privySignMessage({\n message: new TextEncoder().encode(message),\n wallet: this.wallet,\n });\n return Buffer.from(signature).toString(\"base64\");\n }\n\n async signTransaction(serializedTx: Uint8Array): Promise<Uint8Array> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const { signedTransaction } = await this.privySignTransaction({\n transaction: serializedTx,\n wallet: this.wallet,\n });\n return signedTransaction;\n }\n\n async sendTransaction(serializedTx: Uint8Array): Promise<string> {\n if (!this.wallet) throw new Error(\"Wallet is not connected\");\n const { signature } = await this.privySignAndSendTransaction({\n transaction: serializedTx,\n wallet: this.wallet,\n });\n return Buffer.from(signature).toString(\"base64\");\n }\n}\n","import { PropsWithChildren, useCallback, useMemo, useState } from \"react\";\nimport {\n usePrivy,\n useSendTransaction,\n useSignMessage,\n useSignTransaction,\n useWallets,\n WalletWithMetadata,\n} from \"@privy-io/react-auth\";\nimport {\n useWallets as useSolanaWallets,\n useSignMessage as useSolanaSignMessage,\n useSignTransaction as useSolanaSignTransaction,\n useSignAndSendTransaction as useSolanaSignAndSendTransaction,\n} from \"@privy-io/react-auth/solana\";\nimport { WalletConnectorProvider } from \"@liberfi.io/wallet-connector\";\nimport { PrivyEvmWalletAdapter } from \"./PrivyEvmWalletAdapter\";\nimport { PrivySolanaWalletAdapter } from \"./PrivySolanaWalletAdapter\";\n\nexport function WalletConnectorAdapter({ children }: PropsWithChildren) {\n // privy authentication states\n const { ready: authReady, user, authenticated, login, logout } = usePrivy();\n\n // all connected evm wallets, may not be owned by the user\n const { ready: evmReady, wallets: evmWallets } = useWallets();\n\n // all connected solana wallets, may not be owned by the user\n const { ready: solanaReady, wallets: solanaWallets } = useSolanaWallets();\n\n // privy's evm sign message\n const { signMessage: signEvmMessage } = useSignMessage();\n\n // privy's evm sign transaction\n const { signTransaction: signEvmTransaction } = useSignTransaction();\n\n // privy's evm send transaction\n const { sendTransaction: sendEvmTransaction } = useSendTransaction();\n\n // privy's solana sign message\n const { signMessage: signSolanaMessage } = useSolanaSignMessage();\n\n // privy's solana sign transaction\n const { signTransaction: signSolanaTransaction } = useSolanaSignTransaction();\n\n // privy's solana send transaction\n const { signAndSendTransaction: signAndSendSolanaTransaction } =\n useSolanaSignAndSendTransaction();\n\n // is signing in to privy, this is the step of connecting to a wallet\n const [isSigningIn, setIsSigningIn] = useState(false);\n\n // is signing out from privy, this is the step of disconnecting from all wallets\n const [isSigningOut, setIsSigningOut] = useState(false);\n\n // all wallets that can be used to take onchain actions when connected\n const wallets = useMemo(() => {\n // unauthenticated , or user has no wallets\n if (!user?.linkedAccounts) return [];\n\n // owned evm wallets\n const evmWalletAdapters = user.linkedAccounts\n .filter(\n (it) =>\n it.type === \"wallet\" &&\n (it as WalletWithMetadata).chainType === \"ethereum\",\n )\n .map((it) => {\n const account = it as WalletWithMetadata;\n const wallet = evmWallets.find((w) => w.address === account.address);\n return new PrivyEvmWalletAdapter(\n account,\n wallet,\n signEvmMessage,\n signEvmTransaction,\n sendEvmTransaction,\n );\n });\n\n // owned solana wallets\n const solanaWalletAdapters = user.linkedAccounts\n .filter(\n (it) =>\n it.type === \"wallet\" &&\n (it as WalletWithMetadata).chainType === \"solana\",\n )\n .map((it) => {\n const account = it as WalletWithMetadata;\n const wallet = solanaWallets.find((w) => w.address === account.address);\n return new PrivySolanaWalletAdapter(\n account,\n wallet,\n signSolanaMessage,\n signSolanaTransaction,\n signAndSendSolanaTransaction,\n );\n });\n\n const walletAdapters = [...evmWalletAdapters, ...solanaWalletAdapters];\n return walletAdapters;\n }, [\n user?.linkedAccounts,\n evmWallets,\n solanaWallets,\n signEvmMessage,\n signEvmTransaction,\n sendEvmTransaction,\n signSolanaMessage,\n signSolanaTransaction,\n signAndSendSolanaTransaction,\n ]);\n\n // wallet connector status\n const status = useMemo(() => {\n // is detecting authentication status\n if (!authReady) return \"detecting\";\n // is detecting connected wallets\n if (!evmReady || !solanaReady) return \"detecting\";\n // is signing in to privy, this is the step of connecting to a wallet\n if (isSigningIn) return \"connecting\";\n // is signing out from privy, this is the step of disconnecting from all wallets\n if (isSigningOut) return \"disconnecting\";\n // is not authenticated, can't connect any wallets\n if (!authenticated || !user) return \"disconnected\";\n // is authenticated, but no wallets are connected\n return \"connected\";\n }, [authReady, evmReady, solanaReady, authenticated, user?.linkedAccounts]);\n\n const signIn = useCallback(async () => {\n setIsSigningIn(true);\n try {\n login();\n } catch (error) {\n // TODO make error human readable\n console.error(error);\n } finally {\n setIsSigningIn(false);\n }\n }, [login]);\n\n const signOut = useCallback(async () => {\n setIsSigningOut(true);\n try {\n // TODO fix: await logout is halting\n // await logout();\n logout();\n } catch (error) {\n // TODO make error human readable\n console.error(error);\n } finally {\n setIsSigningOut(false);\n }\n }, [logout]);\n\n return (\n <WalletConnectorProvider\n status={status}\n // all user's wallets, which can be used to take onchain actions when connected\n wallets={wallets}\n // connect to the first wallet by signing in to privy\n connect={signIn}\n // disconnect from all wallets by signing out from privy\n disconnect={signOut}\n >\n {children}\n </WalletConnectorProvider>\n );\n}\n","import { PropsWithChildren } from \"react\";\nimport { PrivyProvider, type PrivyClientConfig } from \"@privy-io/react-auth\";\nimport { toSolanaWalletConnectors } from \"@privy-io/react-auth/solana\";\nimport { WalletConnectorAdapter } from \"./WalletConnectorAdapter\";\n\nexport type PrivyWalletConnectorProviderProps = PropsWithChildren<{\n privyAppId: string;\n privyClientId?: string;\n privyClientConfig?: PrivyClientConfig;\n}>;\n\nexport function PrivyWalletConnectorProvider({\n privyAppId,\n privyClientId,\n privyClientConfig,\n children,\n}: PrivyWalletConnectorProviderProps) {\n return (\n <PrivyProvider\n appId={privyAppId}\n clientId={privyClientId}\n config={{\n externalWallets: {\n solana: {\n connectors: toSolanaWalletConnectors({\n shouldAutoConnect: true,\n }),\n },\n },\n ...privyClientConfig,\n }}\n >\n <WalletConnectorAdapter>{children}</WalletConnectorAdapter>\n </PrivyProvider>\n );\n}\n\nPrivyWalletConnectorProvider.displayName = \"PrivyWalletConnectorProvider\";\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@liberfi.io/wallet-connector-privy",
3
- "version": "0.1.7",
3
+ "version": "0.1.9",
4
4
  "description": "Privy wallet connector for Liberfi React SDK",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -24,8 +24,8 @@
24
24
  "ethers": "^6.15.0",
25
25
  "react": "^19.1.1",
26
26
  "react-dom": "^19.1.1",
27
- "@liberfi.io/types": "0.1.9",
28
- "@liberfi.io/wallet-connector": "0.1.2"
27
+ "@liberfi.io/types": "0.1.11",
28
+ "@liberfi.io/wallet-connector": "0.1.4"
29
29
  },
30
30
  "devDependencies": {
31
31
  "@types/react": "^19.1.13",