Usage
Parameters
transfer/transferAsyncboth accept an object with:params(TransferHookInput):encryptKey(string): PIN used to decrypt the private key.wallet(WalletData): the wallet object. Pass the full object fromcreateWallet/useGetWallet—publicKey,encryptedPrivateKey,walletType, andsignerKind.walletTypeis routing-critical: SHHH wallets execute through a different path, and omitting it defaults to"READY", which reverts on a SHHH account.signerKindis SHHH-only (defaults to"STARK").token(ChainToken): Token identifier (e.g.ChainToken.USDC).usePasskey(boolean, optional): Whentrue, the hook authenticates with passkey internally (requiresexternalUserId). Do not use with externalsetupPasskey/authenticatecalls.otherToken(optional): Custom token configuration with:contractAddress(string): ERC-20 token contract address.decimals(number): Token decimals.
recipient(string): Destination wallet address.amount(number): Transfer amount (will be converted to a string internally).
bearerToken(string): Bearer token for authentication (e.g. from your auth provider).
Return Value
Returns an object containing:transfer: Function to trigger the transfer (fire-and-forget style).transferAsync: Promise-based function that resolves with the transaction hash.data: Transaction hash of the transfer (string | undefined).isLoading: Boolean indicating if the operation is in progress.isError: Boolean indicating if an error occurred.error: Error instance whenisErroris true, otherwisenull.isSuccess: Boolean indicating if the transfer completed successfully.reset: Function to reset the mutation state.
Example Implementation
Security Considerations
- Always verify recipient addresses
- Use encrypted private keys
- Implement proper PIN validation
- Monitor transaction status
Error Handling
- Handle insufficient token balance
- Validate wallet addresses
- Monitor gas fees
- Implement retry logic for failed transactions
Always verify recipient addresses. Transfers on StarkNet are irreversible.
Related Hooks
- useApprove - Required before transferring new token types
- useCallAnyContract - For custom contract interactions
