Smart Account
Hooks
Usage
import {
useSmartAccountVersion,
useGetSmartAccountAddress,
useIsSmartAccountDeployed,
useSmartAccountNeedsUpgrade,
useWallet,
useSmartAccountImplementationAddress,
useUpgradeSmartAccountVersion,
useHasV1SmartAccount,
} from '@vechain/vechain-kit';
// connectedWallet is the owner of the smart account, can be the Privy embedded wallet or VeWorld
const { connectedWallet } = useWallet();
const { data: smartAccountAddress } = useGetSmartAccountAddress(
connectedWallet?.address,
);
const { data: upgradeRequired } = useUpgradeRequired(
smartAccountAddress,
ownerAddress: connectedWallet?.address ?? "",
version: 3
);
const { data: smartAccountDeployed } =
useIsSmartAccountDeployed(smartAccountAddress);
const { data: currentSmartAccountVersion } =
useSmartAccountVersion(smartAccountAddress);
const { data: smartAccountNeedsUpgrade } = useSmartAccountNeedsUpgrade(
smartAccountAddress,
3,
);
const { data: smartAccountImplementationVersion } =
useCurrentAccountImplementationVersion();
const { data: smartAccountImplementationAddress } =
useSmartAccountImplementationAddress(3);
// Use the new hook for upgrading
const {
sendTransaction: upgradeSmartAccount,
isTransactionPending,
error: upgradeError,
} = useUpgradeSmartAccount({
smartAccountAddress: smartAccountAddress ?? '',
targetVersion: 3,
onSuccess: () => {
console.log('Smart Account upgraded successfully!');
},
onError: () => {
console.log('Error upgrading Smart Account.');
},
});
console.log(
'Smart Account',
smartAccountAddress,
'deployed',
smartAccountDeployed,
'version',
currentSmartAccountVersion,
'upgradeRequired',
upgradeRequired,
'current implementation version',
smartAccountImplementationVersion,
'v3 implementation address',
smartAccountImplementationAddress,
);Was this helpful?