transferTokenToHome method

Future<List> transferTokenToHome(
  1. String walletAddress,
  2. String foreignBridgeMediator,
  3. String tokenAddress,
  4. num tokensAmount,
  5. int tokenDecimals, {
  6. String network = 'mainnet',
})

Implementation

Future<List<dynamic>> transferTokenToHome(
  String walletAddress,
  String foreignBridgeMediator,
  String tokenAddress,
  num tokensAmount,
  int tokenDecimals, {
  String network = 'mainnet',
}) async {
  EthereumAddress token = EthereumAddress.fromHex(tokenAddress);
  Decimal tokensAmountDecimal = Decimal.parse(tokensAmount.toString());
  Decimal decimals = Decimal.parse(pow(10, tokenDecimals).toString());
  BigInt amount = BigInt.parse((tokensAmountDecimal * decimals).toString());
  Map approveTokenData = await approveTokenOffChain(
    walletAddress,
    tokenAddress,
    tokensAmount: tokensAmount,
    network: network,
    spenderContract: foreignBridgeMediator,
  );
  String data = await getEncodedDataForContractCall(
    'HomeMultiAMBErc20ToErc677',
    foreignBridgeMediator,
    'relayTokens',
    [token, amount],
  );
  print('relayTokens data: $data');
  Map<String, dynamic> transferToHomeData = await callContractOffChain(
    walletAddress,
    foreignBridgeMediator,
    data,
    network: network,
    ethAmount: 0,
  );
  return [approveTokenData, transferToHomeData];
}