Migrate your wallet to Wallets SDK v2
// Before <CrossmintAuthProvider authModalTitle="Solana Wallets Quickstart" embeddedWallets={{ createOnLogin: "all-users", type: "solana-smart-wallet", showPasskeyHelpers: true, }} loginMethods={["web3:solana-only"]} > {children} </CrossmintAuthProvider> // Now <CrossmintAuthProvider authModalTitle="Fintech Starter App" loginMethods={["email", "google"]} > <CrossmintWalletProvider showPasskeyHelpers={chain !== "solana"} createOnLogin={{ chain: process.env.NEXT_PUBLIC_CHAIN_ID as any, signer: { type: chain === "solana" ? "email" : "passkey" }, }} > {children} </CrossmintWalletProvider> </CrossmintAuthProvider>
evm-keypair
solana-keypair
external-wallet
evm-passkey
passkey
solana-fireblocks-custodial
evm-fireblocks-custodial
api-key
// Before const wallet = await crossmintWallets.getOrCreateWallet("evm-smart-wallet", { chain: "base-sepolia", adminSigner: { type: "evm-passkey", }, }); // Now const wallet = await crossmintWallets.getOrCreateWallet({ chain: "base-sepolia", signer: { type: "passkey", }, });
////////////////////// // Passkey signer ////////////////////// // Before { type: "evm-passkey"; name?: string; signingCallback?: PasskeySigningCallback; creationCallback?: PasskeyCreationCallback; }; // Now { type: "passkey"; name?: string; onCreatePasskey?: (name: string) => Promise<{ id: string; publicKey: { x: string; y: string } }>; onSignWithPasskey?: (message: string) => Promise<PasskeySignResult>; }; ////////////////////// // Keypair signer ////////////////////// // Before { type: "evm-keypair"; address: string; signer: | { type: "provider"; provider: EIP1193Provider; // From viem } | { type: "viem_v2"; account: Account; // From viem }; } { type: "solana-keypair"; address: SolanaAddress; signer: { signMessage: (message: Uint8Array) => Promise<Uint8Array>; signTransaction: (transaction: VersionedTransaction) => Promise<VersionedTransaction>; }; } // Now export type BaseExternalWalletSignerConfig = { type: "external-wallet"; address: string; }; export type EvmExternalWalletSignerConfig = BaseExternalWalletSignerConfig & { provider?: GenericEIP1193Provider | ViemEIP1193Provider; viemAccount?: Account; }; export type SolanaExternalWalletSignerConfig = BaseExternalWalletSignerConfig & { onSignTransaction: (transaction: VersionedTransaction) => Promise<VersionedTransaction>; }; ////////////////////// // Fireblocks ////////////////////// // Before { type: "solana-fireblocks-custodial"; }; // Now { type: "api-key" } // works for both EVM and Solana
// Before const wallet = await crossmintWallets.getOrCreateWallet("evm-smart-wallet", { chain: "base-sepolia", linkedUser: "email:dev@company.com", adminSigner: { type: "evm-passkey", }, }); // Now const wallet = await crossmintWallets.getOrCreateWallet({ chain: "base-sepolia", owner: "email:dev@company.com", signer: { type: "passkey", }, });
// Before const wallet: SolanaSmartWallet = await crossmintWallets.getOrCreateWallet("solana-smart-wallet", { adminSigner: { type: "solana-fireblocks-custodial", }, }); const wallet: EVMSmartWallet = await crossmintWallets.getOrCreateWallet("evm-smart-wallet", { chain: "base", adminSigner: { type: "evm-passkey", }, }); // Now const wallet: Wallet = await crossmintWallets.getOrCreateWallet({ chain: "base", // or "solana" signer: { type: "passkey", }, });
// Before await wallet.getBalances(["sol", "usdc"]); // Now await wallet.balances();
// Before wallet.sendTransaction({}); // Now // EVM const wallet: Wallet = // ... const evmWallet: EVMWallet = EVMWallet.from(wallet); evmWallet.sendTransaction(...); evmWallet.signMessage(...); evmWallet.signTypedData(...); // Solana const wallet: Wallet = // ... const solanaWallet: SolanaWallet = SolanaWallet.from(wallet); solanaWallet.sendTransaction(...);
// Before wallet.getDelegatedSigners(); await wallet.addDelegatedSigner(`solana-keypair:${newSigner}`); wallet.send("email@gmail.com", "usdc", "1.2"); // Now wallet.delegatedSigners(); await wallet.addDelegatedSigner({ signer: `external-wallet:${newSigner}` });
Was this page helpful?