mirror of
https://github.com/cypherstack/stack_wallet.git
synced 2024-12-23 11:59:30 +00:00
67 lines
1.6 KiB
Dart
67 lines
1.6 KiB
Dart
import 'dart:convert';
|
|
|
|
import 'package:decimal/decimal.dart';
|
|
import 'package:stackwallet/utilities/enums/coin_enum.dart';
|
|
import 'package:stackwallet/utilities/format.dart';
|
|
|
|
class Balance {
|
|
final Coin coin;
|
|
final int total;
|
|
final int spendable;
|
|
final int blockedTotal;
|
|
final int pendingSpendable;
|
|
|
|
Balance({
|
|
required this.coin,
|
|
required this.total,
|
|
required this.spendable,
|
|
required this.blockedTotal,
|
|
required this.pendingSpendable,
|
|
});
|
|
|
|
Decimal getTotal({bool includeBlocked = true}) => Format.satoshisToAmount(
|
|
includeBlocked ? total : total - blockedTotal,
|
|
coin: coin,
|
|
);
|
|
|
|
Decimal getSpendable() => Format.satoshisToAmount(
|
|
spendable,
|
|
coin: coin,
|
|
);
|
|
|
|
Decimal getPending() => Format.satoshisToAmount(
|
|
pendingSpendable,
|
|
coin: coin,
|
|
);
|
|
|
|
Decimal getBlocked() => Format.satoshisToAmount(
|
|
blockedTotal,
|
|
coin: coin,
|
|
);
|
|
|
|
String toJsonIgnoreCoin() => jsonEncode(toMap()..remove("coin"));
|
|
|
|
factory Balance.fromJson(String json, Coin coin) {
|
|
final decoded = jsonDecode(json);
|
|
return Balance(
|
|
coin: coin,
|
|
total: decoded["total"] as int,
|
|
spendable: decoded["spendable"] as int,
|
|
blockedTotal: decoded["blockedTotal"] as int,
|
|
pendingSpendable: decoded["pendingSpendable"] as int,
|
|
);
|
|
}
|
|
|
|
Map<String, dynamic> toMap() => {
|
|
"coin": coin,
|
|
"total": total,
|
|
"spendable": spendable,
|
|
"blockedTotal": blockedTotal,
|
|
"pendingSpendable": pendingSpendable,
|
|
};
|
|
|
|
@override
|
|
String toString() {
|
|
return toMap().toString();
|
|
}
|
|
}
|