import { Types } from 'aptos'; import { createContext, useContext } from 'react'; import { AccountKeys, NetworkInfo, SignMessagePayload, SignMessageResponse, WalletAdapter, WalletName, WalletReadyState } from '../WalletAdapters/BaseAdapter'; export interface Wallet { adapter: WalletAdapter; readyState: WalletReadyState; } export interface WalletContextState { autoConnect: boolean; wallets: Wallet[]; wallet: Wallet | null; account: AccountKeys | null; connecting: boolean; connected: boolean; disconnecting: boolean; network: NetworkInfo; select(walletName?: WalletName): Promise; connect(walletName?: WalletName): Promise; disconnect(): Promise; signAndSubmitTransaction( transaction: Types.TransactionPayload, options?: any ): Promise<{ hash: Types.HexEncodedBytes }>; signTransaction(transaction: Types.TransactionPayload, options?: any): Promise; signMessage( message: string | SignMessagePayload | Uint8Array ): Promise; } const DEFAULT_CONTEXT = { autoConnect: false, connecting: false, connected: false, disconnecting: false } as WalletContextState; export const WalletContext = createContext( DEFAULT_CONTEXT as WalletContextState ); export function useWallet(): WalletContextState { return useContext(WalletContext); }