encodeTransactionData static method

List<int> encodeTransactionData({
  1. required BigInt chainId,
  2. required ETHAddress safeAddress,
  3. required SafeTransaction safeTransaction,
})

Implementation

static List<int> encodeTransactionData({
  required BigInt chainId,
  required ETHAddress safeAddress,
  required SafeTransaction safeTransaction,
}) {
  final encode = ABIUtils.encodeKeccack256(
    types: [
      "bytes32",
      "address",
      "uint256",
      "bytes32",
      "uint256",
      "uint256",
      "uint256",
      "uint256",
      "address",
      "address",
      "uint256",
    ],
    params: [
      "0xbb8310d486368db6bd6f849402fdd73ad53d316b5a4b2644ad6efe0f941286d8",
      safeTransaction.to,
      safeTransaction.value,
      QuickCrypto.keccack256Hash(safeTransaction.data),
      safeTransaction.operation.value,
      safeTransaction.gasParams.safeTxGas,
      safeTransaction.gasParams.baseGas,
      safeTransaction.gasParams.gasPrice,
      safeTransaction.gasParams.gasToken,
      safeTransaction.gasParams.refundReceiver,
      safeTransaction.nonce,
    ],
  );
  return ABIUtils.encodePacked(
    types: ["bytes1", "bytes1", "bytes32", "bytes32"],
    params: [
      [0x19],
      [0x01],
      ABIUtils.encodeKeccack256(
        types: ["bytes32", "address"],
        params: [
          "0x035aff83d86937d35b32e04f0ddc6ff469290eef2f1b692d8a815c89404d4749",
          safeAddress,
        ],
      ),
      encode,
    ],
  );
}