transferTokenToForeign method
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];
}