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
}