From 273fd981f44938557d8a455e8aca41fa5d30c54f Mon Sep 17 00:00:00 2001 From: julian <julian@cypherstack.com> Date: Mon, 20 Nov 2023 10:37:28 -0600 Subject: [PATCH] WIP tezos skeleton --- lib/services/coins/tezos/tezos_wallet.dart | 6 +- .../api => wallets/api/tezos}/tezos_api.dart | 2 +- .../api/tezos}/tezos_rpc_api.dart | 0 .../api/tezos}/tezos_transaction.dart | 0 lib/wallets/crypto_currency/coins/tezos.dart | 32 +++++++ lib/wallets/wallet/impl/tezos_wallet.dart | 85 +++++++++++++++++++ lib/wallets/wallet/wallet.dart | 4 + 7 files changed, 125 insertions(+), 4 deletions(-) rename lib/{services/coins/tezos/api => wallets/api/tezos}/tezos_api.dart (97%) rename lib/{services/coins/tezos/api => wallets/api/tezos}/tezos_rpc_api.dart (100%) rename lib/{services/coins/tezos/api => wallets/api/tezos}/tezos_transaction.dart (100%) create mode 100644 lib/wallets/crypto_currency/coins/tezos.dart create mode 100644 lib/wallets/wallet/impl/tezos_wallet.dart diff --git a/lib/services/coins/tezos/tezos_wallet.dart b/lib/services/coins/tezos/tezos_wallet.dart index 604a0800c..743a349fb 100644 --- a/lib/services/coins/tezos/tezos_wallet.dart +++ b/lib/services/coins/tezos/tezos_wallet.dart @@ -10,9 +10,6 @@ import 'package:stackwallet/models/isar/models/blockchain_data/utxo.dart'; import 'package:stackwallet/models/node_model.dart'; import 'package:stackwallet/models/paymint/fee_object_model.dart'; import 'package:stackwallet/services/coins/coin_service.dart'; -import 'package:stackwallet/services/coins/tezos/api/tezos_api.dart'; -import 'package:stackwallet/services/coins/tezos/api/tezos_rpc_api.dart'; -import 'package:stackwallet/services/coins/tezos/api/tezos_transaction.dart'; import 'package:stackwallet/services/event_bus/events/global/node_connection_status_changed_event.dart'; import 'package:stackwallet/services/event_bus/events/global/updated_in_background_event.dart'; import 'package:stackwallet/services/event_bus/events/global/wallet_sync_status_changed_event.dart'; @@ -29,6 +26,9 @@ import 'package:stackwallet/utilities/enums/fee_rate_type_enum.dart'; import 'package:stackwallet/utilities/flutter_secure_storage_interface.dart'; import 'package:stackwallet/utilities/logger.dart'; import 'package:stackwallet/utilities/prefs.dart'; +import 'package:stackwallet/wallets/api/tezos/tezos_api.dart'; +import 'package:stackwallet/wallets/api/tezos/tezos_rpc_api.dart'; +import 'package:stackwallet/wallets/api/tezos/tezos_transaction.dart'; import 'package:tezart/tezart.dart'; import 'package:tuple/tuple.dart'; diff --git a/lib/services/coins/tezos/api/tezos_api.dart b/lib/wallets/api/tezos/tezos_api.dart similarity index 97% rename from lib/services/coins/tezos/api/tezos_api.dart rename to lib/wallets/api/tezos/tezos_api.dart index 5d37fd382..a55bd45be 100644 --- a/lib/services/coins/tezos/api/tezos_api.dart +++ b/lib/wallets/api/tezos/tezos_api.dart @@ -2,11 +2,11 @@ import 'dart:convert'; import 'dart:math'; import 'package:stackwallet/networking/http.dart'; -import 'package:stackwallet/services/coins/tezos/api/tezos_transaction.dart'; import 'package:stackwallet/services/tor_service.dart'; import 'package:stackwallet/utilities/enums/coin_enum.dart'; import 'package:stackwallet/utilities/logger.dart'; import 'package:stackwallet/utilities/prefs.dart'; +import 'package:stackwallet/wallets/api/tezos/tezos_transaction.dart'; abstract final class TezosAPI { static final HTTP _client = HTTP(); diff --git a/lib/services/coins/tezos/api/tezos_rpc_api.dart b/lib/wallets/api/tezos/tezos_rpc_api.dart similarity index 100% rename from lib/services/coins/tezos/api/tezos_rpc_api.dart rename to lib/wallets/api/tezos/tezos_rpc_api.dart diff --git a/lib/services/coins/tezos/api/tezos_transaction.dart b/lib/wallets/api/tezos/tezos_transaction.dart similarity index 100% rename from lib/services/coins/tezos/api/tezos_transaction.dart rename to lib/wallets/api/tezos/tezos_transaction.dart diff --git a/lib/wallets/crypto_currency/coins/tezos.dart b/lib/wallets/crypto_currency/coins/tezos.dart new file mode 100644 index 000000000..0af387a10 --- /dev/null +++ b/lib/wallets/crypto_currency/coins/tezos.dart @@ -0,0 +1,32 @@ +import 'package:stackwallet/models/node_model.dart'; +import 'package:stackwallet/utilities/enums/coin_enum.dart'; +import 'package:stackwallet/wallets/crypto_currency/crypto_currency.dart'; +import 'package:stackwallet/wallets/crypto_currency/intermediate/bip39_currency.dart'; + +class Tezos extends Bip39Currency { + Tezos(super.network) { + switch (network) { + case CryptoCurrencyNetwork.main: + coin = Coin.tezos; + default: + throw Exception("Unsupported network: $network"); + } + } + @override + // TODO: implement defaultNode + NodeModel get defaultNode => throw UnimplementedError(); + + @override + // TODO: implement genesisHash + String get genesisHash => throw UnimplementedError(); + + @override + // TODO: implement minConfirms + int get minConfirms => throw UnimplementedError(); + + @override + bool validateAddress(String address) { + // TODO: implement validateAddress + throw UnimplementedError(); + } +} diff --git a/lib/wallets/wallet/impl/tezos_wallet.dart b/lib/wallets/wallet/impl/tezos_wallet.dart new file mode 100644 index 000000000..dfec4f7be --- /dev/null +++ b/lib/wallets/wallet/impl/tezos_wallet.dart @@ -0,0 +1,85 @@ +import 'package:isar/isar.dart'; +import 'package:stackwallet/models/paymint/fee_object_model.dart'; +import 'package:stackwallet/utilities/amount/amount.dart'; +import 'package:stackwallet/wallets/crypto_currency/coins/tezos.dart'; +import 'package:stackwallet/wallets/crypto_currency/crypto_currency.dart'; +import 'package:stackwallet/wallets/models/tx_data.dart'; +import 'package:stackwallet/wallets/wallet/intermediate/bip39_wallet.dart'; + +class TezosWallet extends Bip39Wallet { + TezosWallet(CryptoCurrencyNetwork network) : super(Tezos(network)); + + @override + // TODO: implement changeAddressFilterOperation + FilterOperation? get changeAddressFilterOperation => + throw UnimplementedError(); + + @override + // TODO: implement receivingAddressFilterOperation + FilterOperation? get receivingAddressFilterOperation => + throw UnimplementedError(); + + @override + Future<TxData> confirmSend({required TxData txData}) { + // TODO: implement confirmSend + throw UnimplementedError(); + } + + @override + Future<Amount> estimateFeeFor(Amount amount, int feeRate) { + // TODO: implement estimateFeeFor + throw UnimplementedError(); + } + + @override + // TODO: implement fees + Future<FeeObject> get fees => throw UnimplementedError(); + + @override + Future<bool> pingCheck() { + // TODO: implement pingCheck + throw UnimplementedError(); + } + + @override + Future<TxData> prepareSend({required TxData txData}) { + // TODO: implement prepareSend + throw UnimplementedError(); + } + + @override + Future<void> recover({required bool isRescan}) { + // TODO: implement recover + throw UnimplementedError(); + } + + @override + Future<void> updateBalance() { + // TODO: implement updateBalance + throw UnimplementedError(); + } + + @override + Future<void> updateChainHeight() { + // TODO: implement updateChainHeight + throw UnimplementedError(); + } + + @override + Future<void> updateNode() { + // TODO: implement updateNode + throw UnimplementedError(); + } + + @override + Future<void> updateTransactions() { + // TODO: implement updateTransactions + throw UnimplementedError(); + } + + @override + Future<void> updateUTXOs() { + // TODO: implement updateUTXOs + throw UnimplementedError(); + } +} diff --git a/lib/wallets/wallet/wallet.dart b/lib/wallets/wallet/wallet.dart index 8f1ce5779..ac5e602f9 100644 --- a/lib/wallets/wallet/wallet.dart +++ b/lib/wallets/wallet/wallet.dart @@ -30,6 +30,7 @@ import 'package:stackwallet/wallets/wallet/impl/ecash_wallet.dart'; import 'package:stackwallet/wallets/wallet/impl/epiccash_wallet.dart'; import 'package:stackwallet/wallets/wallet/impl/firo_wallet.dart'; import 'package:stackwallet/wallets/wallet/impl/nano_wallet.dart'; +import 'package:stackwallet/wallets/wallet/impl/tezos_wallet.dart'; import 'package:stackwallet/wallets/wallet/impl/wownero_wallet.dart'; import 'package:stackwallet/wallets/wallet/private_key_based_wallet.dart'; import 'package:stackwallet/wallets/wallet/wallet_mixin_interfaces/electrumx_interface.dart'; @@ -274,6 +275,9 @@ abstract class Wallet<T extends CryptoCurrency> { case Coin.nano: return NanoWallet(CryptoCurrencyNetwork.main); + case Coin.tezos: + return TezosWallet(CryptoCurrencyNetwork.main); + case Coin.wownero: return WowneroWallet(CryptoCurrencyNetwork.main);