transferDaiToDAIpOffChain method

Future<Map<String, dynamic>> transferDaiToDAIpOffChain(
  1. String walletAddress,
  2. num tokenAmount,
  3. int tokenDecimals, {
  4. String? network = "fuse",
})

Implementation

Future<Map<String, dynamic>> transferDaiToDAIpOffChain(
  String walletAddress,
  num tokenAmount,
  int tokenDecimals, {
  String? network = "fuse",
}) async {
  EthereumAddress wallet = EthereumAddress.fromHex(walletAddress);
  Decimal tokensAmountDecimal = Decimal.parse(tokenAmount.toString());
  Decimal decimals = Decimal.parse(pow(10, tokenDecimals).toString());
  BigInt amount = BigInt.parse((tokensAmountDecimal * decimals).toString());

  String nonce = await getNonceForRelay();
  print('nonce: $nonce');

  DeployedContract contract = await _contract(
    'DAIPointsManager',
    _daiPointsManagerContractAddress,
  );
  Uint8List data = contract.function('getDAIPoints').encodeCall(
    [wallet, amount],
  );
  String encodedData = '0x' + HEX.encode(data);
  print('encodedData: $encodedData');

  String signature = await signOffChain(
    _daiPointsManagerContractAddress,
    walletAddress,
    BigInt.from(0),
    encodedData,
    nonce,
    BigInt.from(0),
    BigInt.from(_defaultGasLimit),
  );

  return {
    "walletAddress": walletAddress,
    "methodData": encodedData,
    "nonce": nonce,
    "network": network,
    "gasPrice": 0,
    "gasLimit": _defaultGasLimit,
    "signature": signature,
    "walletModule": "DAIPointsManager"
  };
}