useEmbeddedSolanaWallet
Manage embedded Solana wallets with creation, activation, and signing capabilities.
Usage
import { useEmbeddedSolanaWallet } from '@openfort/react-native';
function SolanaWalletManager() {
const solana = useEmbeddedSolanaWallet();
if (solana.status === 'connecting' || solana.status === 'creating') {
return <ActivityIndicator />;
}
if (solana.status === 'connected') {
return (
<View>
<Text>{solana.activeWallet.address}</Text>
<Button
title="Sign Message"
onPress={async () => {
const signature = await solana.provider.signMessage('Hello Solana!');
}}
/>
</View>
);
}
if (solana.wallets.length === 0) {
return <Button title="Create Wallet" onPress={() => solana.create()} />;
}
return <Button title="Connect" onPress={() => solana.setActive({ address: solana.wallets[0].address })} />;
}Return type
Returns a discriminated union based on the status field:
type EmbeddedSolanaWalletState = {
status: 'disconnected' | 'connecting' | 'reconnecting' | 'creating' | 'needs-recovery' | 'connected' | 'error'
wallets: ConnectedEmbeddedSolanaWallet[]
activeWallet: ConnectedEmbeddedSolanaWallet | null
provider?: OpenfortEmbeddedSolanaWalletProvider // Available when connected
error?: string // Available when error
create: (options?: CreateOptions) => Promise<EmbeddedAccount>
setActive: (options: SetActiveOptions) => Promise<void>
}
type ConnectedEmbeddedSolanaWallet = {
address: string
chainType: 'SVM'
walletIndex: number
getProvider: () => Promise<OpenfortEmbeddedSolanaWalletProvider>
}
type OpenfortEmbeddedSolanaWalletProvider = {
publicKey: string
signTransaction: (transaction: any) => Promise<{ signature: string; publicKey: string }>
signAllTransactions: (transactions: any[]) => Promise<any[]>
signMessage: (message: string) => Promise<string>
}The provider is compatible with @solana/web3.js and @solana/kit transaction formats.
Parameters
Hook options
type UseEmbeddedSolanaWalletOptions = {
onCreateSuccess?: (account: EmbeddedAccount, provider: OpenfortEmbeddedSolanaWalletProvider) => void
onCreateError?: (error: OpenfortError) => void
onSetActiveSuccess?: (wallet: ConnectedEmbeddedSolanaWallet, provider: OpenfortEmbeddedSolanaWalletProvider) => void
onSetActiveError?: (error: OpenfortError) => void
}create
type CreateOptions = {
recoveryPassword?: string
onSuccess?: (data: CreateResult) => void
onError?: (error: OpenfortError) => void
}setActive
type SetActiveOptions = {
address: string
recoveryPassword?: string
onSuccess?: (data: SetActiveResult) => void
onError?: (error: OpenfortError) => void
}