transferTokenToForeign method

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

Implementation

Future<List<dynamic>> transferTokenToForeign(
  String walletAddress,
  String homeBridgeMediatorAddress,
  String tokenAddress,
  num tokensAmount,
  int tokenDecimals, {
  String network = 'fuse',
}) async {
  Decimal tokensAmountDecimal = Decimal.parse(tokensAmount.toString());
  Decimal decimals = Decimal.parse(pow(10, tokenDecimals).toString());
  BigInt amount = BigInt.parse((tokensAmountDecimal * decimals).toString());
  EthereumAddress bridgeMediatorAddress = EthereumAddress.fromHex(
    homeBridgeMediatorAddress,
  );
  Map approveTokenData = await approveTokenOffChain(
    walletAddress,
    tokenAddress,
    tokensAmount: tokensAmount,
    network: network,
    spenderContract: homeBridgeMediatorAddress,
  );
  String data = await getEncodedDataForContractCall(
      'BasicToken', tokenAddress, 'transferAndCall', [
    bridgeMediatorAddress,
    amount,
    HEX.decode(''),
  ]);
  print('transferAndCall data: $data');
  Map<String, dynamic> transferToHomeData = await callContractOffChain(
    walletAddress,
    homeBridgeMediatorAddress,
    data,
    network: network,
    ethAmount: 0,
  );
  return [approveTokenData, transferToHomeData];
}