getTransactionAddresses method

  1. @override
Future<TransactionAddresses> getTransactionAddresses(
  1. String walletId,
  2. String txid
)
override

Get all addresses involved in a transaction

Implementation

@override
Future<TransactionAddresses> getTransactionAddresses(
  String walletId,
  String txid,
) async {
  _ensureInitialized();

  final result = await _pool!.execute(
    Sql.named('''
      SELECT address, direction, amount, vout, vin
      FROM transaction_addresses
      WHERE wallet_id = @walletId AND txid = @txid
    '''),
    parameters: {'walletId': walletId, 'txid': txid},
  );

  final inputs = <TransactionAddressLink>[];
  final outputs = <TransactionAddressLink>[];

  for (final row in result) {
    final direction = row[1] as String;
    final link = TransactionAddressLink(
      address: row[0] as String,
      direction: direction, // direction is a String ('input' or 'output')
      amount: BigInt.from(row[2] as num),
      vout: row[3] as int?,
      vin: row[4] as int?,
    );

    if (direction == 'input') {
      inputs.add(link);
    } else {
      outputs.add(link);
    }
  }

  return TransactionAddresses(inputs: inputs, outputs: outputs);
}