handleCommand method

  1. @override
Future<List<Event>> handleCommand(
  1. WalletState currentState,
  2. Command command
)

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}');
  }
}