+
Wallet Connections
+
+ {wallets.map((w, i) => (
+ -
+ {w.walletType} - Connected: {w.connected ? 'Yes' : 'No'}
+
+ {w.accounts.map((acc, idx) => (
+ -
+ {acc.address} {w.activeAccountIndex === idx ? '(Active)' : ''}
+
+
+ ))}
+
+
+
+ ))}
+
+
+
+
Active Account: {activeAccount ? activeAccount.address : 'None'}
+ {error &&
Error: {error.message}
}
+
+ );
+};
diff --git a/libs/ui-components/src/wallet/__tests__/useWalletConnections.spec.ts b/libs/ui-components/src/wallet/__tests__/useWalletConnections.spec.ts
new file mode 100644
index 0000000..834d74b
--- /dev/null
+++ b/libs/ui-components/src/wallet/__tests__/useWalletConnections.spec.ts
@@ -0,0 +1,13 @@
+import { renderHook, act } from '@testing-library/react-hooks';
+import { useWalletConnections } from '../useWalletConnections';
+
+describe('useWalletConnections', () => {
+ it('should initialize with empty wallets', () => {
+ const { result } = renderHook(() => useWalletConnections());
+ expect(result.current.wallets).toEqual([]);
+ expect(result.current.activeAccount).toBeNull();
+ expect(result.current.error).toBeNull();
+ });
+
+ // Add more tests for connectWallet, disconnectWallet, switchAccount, error handling, etc.
+});
diff --git a/libs/ui-components/src/wallet/index.ts b/libs/ui-components/src/wallet/index.ts
index a0534fe..f6cc2f8 100644
--- a/libs/ui-components/src/wallet/index.ts
+++ b/libs/ui-components/src/wallet/index.ts
@@ -36,3 +36,6 @@ export { StellarAdapter } from './adapters/StellarAdapter';
// Hooks and Provider
export { useWallet } from './useWallet';
export { WalletProvider, useWalletContext } from './WalletProvider';
+export { useWalletConnections, useActiveAccount } from './useWalletConnections';
+export { MultiWalletProvider, useMultiWalletContext } from './MultiWalletProvider';
+export { WalletConnector } from './WalletConnector';
diff --git a/libs/ui-components/src/wallet/types.ts b/libs/ui-components/src/wallet/types.ts
index cdeafc2..8df299c 100644
--- a/libs/ui-components/src/wallet/types.ts
+++ b/libs/ui-components/src/wallet/types.ts
@@ -5,6 +5,48 @@
import type { ReactNode } from 'react';
+/**
+ * Multi-wallet connection structure
+ */
+export interface WalletConnection {
+ walletType: WalletType | string;
+ wallet: WalletAdapter;
+ accounts: WalletAccount[];
+ connected: boolean;
+ activeAccountIndex: number;
+}
+
+/**
+ * Multi-wallet state
+ */
+export interface MultiWalletState {
+ wallets: WalletConnection[];
+ activeWalletIndex: number | null;
+ activeAccount: WalletAccount | null;
+ error: WalletError | null;
+}
+
+/**
+ * useWalletConnections hook return type
+ */
+export interface UseWalletConnectionsReturn {
+ wallets: WalletConnection[];
+ connectWallet: (walletType: WalletType | string) => Promise