stack_wallet/lib/utilities/enums/coin_enum.dart

226 lines
5.2 KiB
Dart
Raw Normal View History

2022-08-26 08:11:35 +00:00
import 'package:stackwallet/services/coins/bitcoin/bitcoin_wallet.dart' as btc;
import 'package:stackwallet/services/coins/dogecoin/dogecoin_wallet.dart'
as doge;
import 'package:stackwallet/services/coins/epiccash/epiccash_wallet.dart'
as epic;
import 'package:stackwallet/services/coins/firo/firo_wallet.dart' as firo;
import 'package:stackwallet/services/coins/monero/monero_wallet.dart' as xmr;
2022-09-06 14:17:45 +00:00
import 'package:stackwallet/services/coins/bitcoincash/bitcoincash_wallet.dart'
as bch;
2022-09-12 12:01:42 +00:00
import 'package:stackwallet/services/coins/namecoin/namecoin_wallet.dart'
as nmc;
2022-08-26 08:11:35 +00:00
enum Coin {
bitcoin,
2022-09-09 10:59:40 +00:00
bitcoincash,
2022-08-26 08:11:35 +00:00
dogecoin,
epicCash,
firo,
monero,
2022-09-12 08:30:32 +00:00
namecoin,
2022-08-26 08:11:35 +00:00
///
///
///
bitcoinTestNet,
dogecoinTestNet,
firoTestNet,
}
2022-08-29 13:50:02 +00:00
// remove firotestnet for now
const int kTestNetCoinCount = 2;
2022-08-26 08:11:35 +00:00
extension CoinExt on Coin {
String get prettyName {
switch (this) {
case Coin.bitcoin:
return "Bitcoin";
2022-09-09 10:59:40 +00:00
case Coin.bitcoincash:
return "Bitcoin Cash";
2022-08-26 08:11:35 +00:00
case Coin.dogecoin:
return "Dogecoin";
case Coin.epicCash:
return "Epic Cash";
case Coin.firo:
return "Firo";
case Coin.monero:
return "Monero";
2022-09-12 08:30:32 +00:00
case Coin.namecoin:
return "Namecoin";
2022-08-26 08:11:35 +00:00
case Coin.bitcoinTestNet:
return "tBitcoin";
case Coin.firoTestNet:
return "tFiro";
case Coin.dogecoinTestNet:
return "tDogecoin";
}
}
String get ticker {
switch (this) {
case Coin.bitcoin:
return "BTC";
2022-09-09 10:59:40 +00:00
case Coin.bitcoincash:
return "BCH";
2022-08-26 08:11:35 +00:00
case Coin.dogecoin:
return "DOGE";
case Coin.epicCash:
return "EPIC";
case Coin.firo:
return "FIRO";
case Coin.monero:
return "XMR";
2022-09-12 12:01:42 +00:00
case Coin.namecoin:
return "NMC";
2022-08-26 08:11:35 +00:00
case Coin.bitcoinTestNet:
return "tBTC";
case Coin.firoTestNet:
return "tFIRO";
case Coin.dogecoinTestNet:
return "tDOGE";
}
}
String get uriScheme {
switch (this) {
case Coin.bitcoin:
return "bitcoin";
2022-09-09 10:59:40 +00:00
case Coin.bitcoincash:
return "bitcoincash";
2022-08-26 08:11:35 +00:00
case Coin.dogecoin:
return "dogecoin";
case Coin.epicCash:
// TODO: is this actually the right one?
return "epic";
case Coin.firo:
return "firo";
case Coin.monero:
return "monero";
2022-09-12 12:01:42 +00:00
case Coin.namecoin:
return "namecoin";
2022-08-26 08:11:35 +00:00
case Coin.bitcoinTestNet:
return "bitcoin";
case Coin.firoTestNet:
return "firo";
case Coin.dogecoinTestNet:
return "dogecoin";
}
}
bool get isElectrumXCoin {
switch (this) {
case Coin.bitcoin:
2022-09-09 10:59:40 +00:00
case Coin.bitcoincash:
2022-08-26 08:11:35 +00:00
case Coin.dogecoin:
case Coin.firo:
2022-09-12 12:01:42 +00:00
case Coin.namecoin:
2022-08-26 08:11:35 +00:00
case Coin.bitcoinTestNet:
case Coin.firoTestNet:
case Coin.dogecoinTestNet:
return true;
case Coin.epicCash:
case Coin.monero:
return false;
}
}
int get requiredConfirmations {
switch (this) {
case Coin.bitcoin:
case Coin.bitcoinTestNet:
return btc.MINIMUM_CONFIRMATIONS;
2022-09-09 10:59:40 +00:00
case Coin.bitcoincash:
return bch.MINIMUM_CONFIRMATIONS;
2022-08-26 08:11:35 +00:00
case Coin.firo:
case Coin.firoTestNet:
return firo.MINIMUM_CONFIRMATIONS;
case Coin.dogecoin:
case Coin.dogecoinTestNet:
return doge.MINIMUM_CONFIRMATIONS;
case Coin.epicCash:
return epic.MINIMUM_CONFIRMATIONS;
case Coin.monero:
return xmr.MINIMUM_CONFIRMATIONS;
2022-09-12 12:01:42 +00:00
case Coin.namecoin:
return nmc.MINIMUM_CONFIRMATIONS;
2022-08-26 08:11:35 +00:00
}
}
}
Coin coinFromPrettyName(String name) {
switch (name) {
case "Bitcoin":
case "bitcoin":
return Coin.bitcoin;
2022-09-09 10:59:40 +00:00
case "Bitcoincash":
case "bitcoincash":
case "Bitcoin Cash":
return Coin.bitcoincash;
2022-08-26 08:11:35 +00:00
case "Dogecoin":
case "dogecoin":
return Coin.dogecoin;
case "Epic Cash":
case "epicCash":
return Coin.epicCash;
case "Firo":
case "firo":
return Coin.firo;
case "Monero":
case "monero":
return Coin.monero;
2022-09-12 12:01:42 +00:00
case "Namecoin":
case "namecoin":
return Coin.namecoin;
2022-08-26 08:11:35 +00:00
case "Bitcoin Testnet":
case "tBitcoin":
case "bitcoinTestNet":
return Coin.bitcoinTestNet;
case "Firo Testnet":
case "tFiro":
case "firoTestNet":
return Coin.firoTestNet;
case "Dogecoin Testnet":
case "tDogecoin":
case "dogecoinTestNet":
return Coin.dogecoinTestNet;
default:
throw ArgumentError.value(
name, "name", "No Coin enum value with that prettyName");
}
}
Coin coinFromTickerCaseInsensitive(String ticker) {
switch (ticker.toLowerCase()) {
case "btc":
return Coin.bitcoin;
2022-09-09 10:59:40 +00:00
case "bch":
return Coin.bitcoincash;
2022-08-26 08:11:35 +00:00
case "doge":
return Coin.dogecoin;
case "epic":
return Coin.epicCash;
case "firo":
return Coin.firo;
case "xmr":
return Coin.monero;
2022-09-12 12:01:42 +00:00
case "nmc":
return Coin.namecoin;
2022-08-26 08:11:35 +00:00
case "tbtc":
return Coin.bitcoinTestNet;
case "tfiro":
return Coin.firoTestNet;
case "tdoge":
return Coin.dogecoinTestNet;
default:
throw ArgumentError.value(
ticker, "name", "No Coin enum value with that ticker");
}
}