swapExactTokensForTokens method

Future<String> swapExactTokensForTokens(
  1. String credentials,
  2. num amountInput,
  3. num amountOutput,
  4. String tokenIn,
  5. String tokenOut,
  6. String recipient,
  7. int timestamp,
)

Implementation

Future<String> swapExactTokensForTokens(
    String credentials,
    num amountInput,
    num amountOutput,
    String tokenIn,
    String tokenOut,
    String recipient,
    int timestamp) async {
  final amountIn = BigInt.from(amountInput).pow(18);
  final amountOutMin = BigInt.from(amountOutput).pow(18);
  final path = [
    EthereumAddress.fromHex(tokenIn),
    EthereumAddress.fromHex(tokenOut)
  ];
  final to = EthereumAddress.fromHex(recipient);
  final deadline = BigInt.from(timestamp);
  final rpc = 'https://bsc-dataseed.binance.org/';
  final provider = Web3Client(rpc, Client());
  final routerAddress =
      EthereumAddress.fromHex('0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D');
  final routerAbi = ContractAbi.fromJson(abi, 'Router');
  final routerContract = DeployedContract(routerAbi, routerAddress);
  final function = routerContract.function('swapExactTokensForTokens');
  final result = await provider.sendTransaction(
    EthPrivateKey.fromHex(credentials),
    Transaction.callContract(
      contract: routerContract,
      function: function,
      parameters: [
        amountIn,
        amountOutMin,
        path,
        to,
        deadline,
      ],
      // value: EtherAmount.inWei(value),
    ),
  );
  return result;
}