Add missing import in generated file

This commit is contained in:
OmarHatem 2023-06-03 15:44:56 +03:00
parent 94216e6987
commit 3324ed61cd
2 changed files with 50 additions and 18 deletions

View file

@ -1,3 +1,5 @@
import 'dart:math';
import 'package:cw_core/crypto_currency.dart'; import 'package:cw_core/crypto_currency.dart';
import 'package:cw_ethereum/ethereum_balance.dart'; import 'package:cw_ethereum/ethereum_balance.dart';
import 'package:cw_ethereum/pending_ethereum_transaction.dart'; import 'package:cw_ethereum/pending_ethereum_transaction.dart';
@ -57,19 +59,27 @@ class EthereumClient {
required EthereumTransactionPriority priority, required EthereumTransactionPriority priority,
required CryptoCurrency currency, required CryptoCurrency currency,
}) async { }) async {
final estimatedGas = await _client!.estimateGas( bool _isEthereum = currency == CryptoCurrency.eth;
maxPriorityFeePerGas: EtherAmount.fromUnitAndValue(EtherUnit.gwei, priority.tip), print("!!!!!!!!!!!!!!!!!!!");
maxFeePerGas: EtherAmount.fromUnitAndValue(EtherUnit.gwei, 100), final estimatedGas = BigInt.from(_isEthereum ? 21000 : 50000);
value: EtherAmount.inWei(BigInt.parse(amount)), print("@@@@@@@@@@@@@@@");
sender: privateKey.address, print(estimatedGas);
to: EthereumAddress.fromHex(toAddress),
);
final price = await _client!.getGasPrice(); final price = await _client!.getGasPrice();
print("################");
print(price);
final Transaction transaction; final Transaction transaction;
if (erc20Currencies.containsKey(currency)) { if (_isEthereum) {
transaction = Transaction(
from: privateKey.address,
to: EthereumAddress.fromHex(toAddress),
maxGas: gas,
gasPrice: price,
value: EtherAmount.inWei(BigInt.parse(amount)),
);
} else { /// ERC-20 currency
final String abi = await rootBundle.loadString("assets/abi_json/erc20_abi.json"); final String abi = await rootBundle.loadString("assets/abi_json/erc20_abi.json");
final contractAbi = ContractAbi.fromJson(abi, "ERC20"); final contractAbi = ContractAbi.fromJson(abi, "ERC20");
@ -78,24 +88,44 @@ class EthereumClient {
EthereumAddress.fromHex(_erc20Currencies[currency]!), EthereumAddress.fromHex(_erc20Currencies[currency]!),
); );
final originalAmount = BigInt.parse(amount) / BigInt.from(pow(10, 18));
print("@@@@@@@@@@@@@");
print("originalAmount: $originalAmount");
final decimalsFunction = contract.function('decimals');
final decimals = await _client!.call(
contract: contract,
function: decimalsFunction,
params: [],
);
int exponent = int.parse(decimals.first.toString());
final transferFunction = contract.function('transfer'); final transferFunction = contract.function('transfer');
final _amount = BigInt.from(originalAmount * pow(10, exponent));
transaction = Transaction.callContract( transaction = Transaction.callContract(
contract: contract, contract: contract,
function: transferFunction, function: transferFunction,
parameters: [EthereumAddress.fromHex(toAddress), BigInt.parse(amount)], parameters: [EthereumAddress.fromHex(toAddress), _amount],
from: privateKey.address, from: privateKey.address,
maxGas: gas, maxGas: gas,
gasPrice: price, gasPrice: price,
value: EtherAmount.inWei(BigInt.parse(amount)), value: EtherAmount.inWei(_amount),
);
} else {
transaction = Transaction(
from: privateKey.address,
to: EthereumAddress.fromHex(toAddress),
maxGas: gas,
gasPrice: price,
value: EtherAmount.inWei(BigInt.parse(amount)),
); );
print("^^^^^^^^^^^^^^^^^^");
print(transaction);
print(transaction.maxGas);
print(transaction.gasPrice);
print(transaction.value);
print("^^^^^^^^^^^^^^^^^^");
print(exponent);
print(originalAmount * pow(10, exponent));
print(_amount);
print((BigInt.from(transaction.maxGas!) * transaction.gasPrice!.getInWei) + transaction.value!.getInWei);
sendERC20Token(EthereumAddress.fromHex(toAddress), currency, BigInt.parse(amount));
} }
final signedTransaction = await _client!.signTransaction(privateKey, transaction); final signedTransaction = await _client!.signTransaction(privateKey, transaction);
@ -197,6 +227,7 @@ I/flutter ( 4474): Gas Used: 53000
params: [], params: [],
); );
// 10.270282
BigInt tokenBalance = BigInt.parse(balance.first.toString()); BigInt tokenBalance = BigInt.parse(balance.first.toString());
int exponent = int.parse(decimals.first.toString()); int exponent = int.parse(decimals.first.toString());

View file

@ -480,6 +480,7 @@ Future<void> generateEthereum(bool hasImplementation) async {
"""; """;
const ethereumCWHeaders = """ const ethereumCWHeaders = """
import 'package:cake_wallet/view_model/send/output.dart'; import 'package:cake_wallet/view_model/send/output.dart';
import 'package:cw_core/crypto_currency.dart';
import 'package:cw_core/output_info.dart'; import 'package:cw_core/output_info.dart';
import 'package:cw_core/transaction_priority.dart'; import 'package:cw_core/transaction_priority.dart';
import 'package:cw_core/wallet_base.dart'; import 'package:cw_core/wallet_base.dart';