recoverWallet
Recovers a wallet using a specified backup method.
Function Signature
public func recoverWallet(
_ method: BackupMethods,
withCipherText: String? = nil,
usingProgressCallback: ((MpcStatus) -> Void)? = nil
) async throws -> PortalRecoverWalletResponse
Parameters
method
: The backup method to use for recovery. Supported methods:.GoogleDrive
: Recover from Google Drive backup.iCloud
: Recover from iCloud backup.Password
: Recover using password.Passkey
: Recover using passkey.local
: Recover from local backup
withCipherText
: Optional cipher text from a previous backup. Required for the Self-Managed Backups.usingProgressCallback
: Optional callback to track the recovery progress. Receives anMpcStatus
object containing:status
: Current operation being performed:.readingShare
: Reading the stored share.decryptingShare
: Decrypting the share.parsingShare
: Parsing the share data.generatingShare
: Generating the share data.storingShare
: Saving the recovered share.done
: Process completed
done
: Boolean indicating whether the operation is complete
Returns
PortalRecoverWalletResponse
containing:
ethereum
: The recovered Ethereum addresssolana
: The recovered Solana address, if available
Throws
PortalClassError.cannotRecoverWallet
if the Ethereum address cannot be recoveredVarious backup method-specific errors if recovery fails
Example Usage
do {
let recoveredWallet = try await portal.recoverWallet(
.iCloud,
withCipherText: backupCipherText
) { status in
switch status.status {
case .readingShare:
print("Reading backup share...")
case .decryptingShare:
print("Decrypting share...")
case .parsingShare:
print("Parsing share data...")
case .generatingShare:
print("Regenerating wallet...")
case .storingShare:
print("Saving recovered wallet...")
case .done:
print("Recovery completed!")
default:
break
}
}
print("Recovered Ethereum address: \(recoveredWallet.ethereum)")
if let solanaAddress = recoveredWallet.solana {
print("Recovered Solana address: \(solanaAddress)")
}
} catch {
print("Error recovering wallet: \(error)")
}
Last updated
Was this helpful?