Skip to content

useWallets

Manage user wallets, create new ones, switch between them, and handle wallet recovery.

Request

type Request = {
  hook: 'useWallets',
  params: [options?: WalletOptions]
}
 
type WalletOptions = {
  chainId?: number
  onSuccess?: (data: SetActiveWalletResult | CreateWalletResult) => void
  onError?: (error: import("@openfort/react-native").OpenfortError) => void
  onSettled?: (data: SetActiveWalletResult | CreateWalletResult | undefined | null, error: import("@openfort/react-native").OpenfortError | null) => void
  throwOnError?: boolean
}

Response

type Response = UseWalletsReturn
 
type UseWalletsReturn = WalletFlowFlags & {
  wallets: UserWallet[]
  activeWallet: UserWallet | null
  setActiveWallet(options?: SetActiveWalletOptions): Promise<SetActiveWalletResult>
  createWallet(options?: CreateWalletOptions): Promise<CreateWalletResult>
  setRecovery(options: SetRecoveryOptions): Promise<SetActiveWalletResult>
  exportPrivateKey(): Promise<string>
}
 
type WalletFlowFlags = {
  error?: import("@openfort/react-native").OpenfortError
  isError: boolean
  isSuccess: boolean
  isCreating: boolean
  isConnecting: boolean
}
 
type UserWallet = {
  address: import("@openfort/react-native").Hex
  ownerAddress?: string
  implementationType?: string
  chainType: import("@openfort/openfort-js").ChainTypeEnum
  isActive?: boolean
  isConnecting?: boolean
  getProvider(): Promise<import("@openfort/react-native").OpenfortEmbeddedEthereumWalletProvider>
}
 
type SetActiveWalletResult = {
  error?: import("@openfort/react-native").OpenfortError
  wallet?: UserWallet
  provider?: import("@openfort/openfort-js").Provider
}
 
type CreateWalletResult = SetActiveWalletResult

Example

import { useWallets } from "@openfort/react-native"
 
function WalletManager() {
  const {
    wallets,
    activeWallet,
    setActiveWallet,
    setRecovery,
    createWallet,
    exportPrivateKey,
    isCreating,
    isConnecting,
    isError,
    error,
  } = useWallets({
    throwOnError: true,
    onSuccess: () => {},
    onError: () => {},
    onSettled: () => {}
  })
 
  const recover = (address: string) =>
    setActiveWallet({ address, recoveryPassword: 'example' })
 
  return null
}