handleCommand method
Handle commands asynchronously and return events
This method supports async cryptographic operations and secure storage access required for wallet operations. All calling code must await this method.
Implementation
@override
Future<List<Event>> handleCommand(WalletState currentState, Command command) async {
// DEBUG: Log command routing information
switch (command.runtimeType) {
case CreateWalletCommand:
return await _handleCreateWallet(currentState, command as CreateWalletCommand);
case UpdateWalletConfigurationCommand:
return _handleUpdateConfiguration(currentState, command as UpdateWalletConfigurationCommand);
case GenerateAddressCommand:
return await _handleGenerateAddress(currentState, command as GenerateAddressCommand);
case UpdateAddressLabelCommand:
return _handleUpdateAddressLabel(currentState, command as UpdateAddressLabelCommand);
case RegisterDiscoveredAddressCommand:
return _handleRegisterDiscoveredAddress(currentState, command as RegisterDiscoveredAddressCommand);
case ReceiveUTXOCommand:
return _handleReceiveUTXO(currentState, command as ReceiveUTXOCommand);
case MarkUTXOAvailableCommand:
return _handleMarkUTXOAvailable(currentState, command as MarkUTXOAvailableCommand);
case RecordImportedTransactionCommand:
return _handleRecordImportedTransaction(currentState, command as RecordImportedTransactionCommand);
case RecordOutgoingTransactionCommand:
return _handleRecordOutgoingTransaction(currentState, command as RecordOutgoingTransactionCommand);
case ConfirmTransactionCommand:
return _handleConfirmTransaction(currentState, command as ConfirmTransactionCommand);
case SpendUTXOCommand:
return _handleSpendUTXO(currentState, command as SpendUTXOCommand);
case UpdateUTXOConfirmationsCommand:
return _handleUpdateUTXOConfirmations(currentState, command as UpdateUTXOConfirmationsCommand);
case SignTransactionCommand:
return await _handleSignTransaction(currentState, command as SignTransactionCommand);
case SignMultisigTransactionCommand:
return await _handleSignMultisigTransaction(currentState, command as SignMultisigTransactionCommand);
case BuildFundingTransactionCommand:
return await _handleBuildFundingTransaction(currentState, command as BuildFundingTransactionCommand);
case BroadcastTransactionCommand:
return _handleBroadcastTransaction(currentState, command as BroadcastTransactionCommand);
case ReserveUTXOsCommand:
return _handleReserveUTXOs(currentState, command as ReserveUTXOsCommand);
case ReleaseUTXOsCommand:
return _handleReleaseUTXOs(currentState, command as ReleaseUTXOsCommand);
case ReserveUTXOCommand:
return _handleReserveUTXO(currentState, command as ReserveUTXOCommand);
case ReleaseUTXOCommand:
return _handleReleaseUTXO(currentState, command as ReleaseUTXOCommand);
case RenewUTXOReservationCommand:
return _handleRenewUTXOReservation(currentState, command as RenewUTXOReservationCommand);
case CleanupExpiredReservationsCommand:
return _handleCleanupExpiredReservations(currentState, command as CleanupExpiredReservationsCommand);
case SplitUTXOsToBenfordCommand:
return await _handleSplitUTXOsToBenford(currentState, command as SplitUTXOsToBenfordCommand);
default:
throw ArgumentError('Unknown command type: ${command.runtimeType}');
}
}