Skip to main content
Server-only method. Requires API secret key.

Usage

const upgrade = await sdk.prepareWalletUpgrade(
  { walletAddress: "0x..." },
  bearerToken,
);

Parameters

ParameterTypeRequiredDescription
walletAddressstringYesWallet address to upgrade
targetClassHashstringNoTarget class hash (defaults to latest CHIPI)
bearerTokenstringNoJWT token. Falls back to apiSecretKey if not provided

Return Value

Returns a Promise<PrepareWalletUpgradeResponse>:
FieldTypeDescription
typedDataTypedDataSNIP-12 typed data to sign
currentClassHashstringCurrent class hash of the wallet
targetClassHashstringTarget class hash for upgrade
currentWalletTypeWalletTypeCurrent wallet type
targetWalletTypeWalletTypeTarget wallet type after upgrade

Example

// Prepare upgrade from READY to CHIPI
const upgrade = await sdk.prepareWalletUpgrade(
  { walletAddress: "0x04abc...def" },
  bearerToken,
);

console.log(upgrade.currentWalletType); // "READY"
console.log(upgrade.targetWalletType);  // "CHIPI"

// Sign the typed data (using starknet.js Account)
const signature = await account.signMessage(upgrade.typedData);

// Execute the upgrade
const result = await sdk.executeWalletUpgrade(
  {
    walletAddress: "0x04abc...def",
    typedData: upgrade.typedData,
    signature: [signature.r.toString(), signature.s.toString()],
  },
  bearerToken,
);