buildSafeTransactionBuilder method

Future<ETHTransactionBuilder> buildSafeTransactionBuilder({
  1. required SafeTransaction safeTx,
  2. required ETHAddress excuter,
  3. required EthereumSigner excuterSigner,
  4. required List<SafeSignature> signatures,
  5. ETHTransactionParams? params,
})

Implementation

Future<ETHTransactionBuilder> buildSafeTransactionBuilder({
  required SafeTransaction safeTx,
  required ETHAddress excuter,
  required EthereumSigner excuterSigner,
  required List<SafeSignature> signatures,
  ETHTransactionParams? params,
}) async {
  final sort =
      signatures.clone()..sort(
        (a, b) => a.address.address.toLowerCase().compareTo(
          b.address.address.toLowerCase(),
        ),
      );
  return ETHTransactionBuilder(
    from: excuter,
    to: contract.contractAddress,
    value: BigInt.zero,
    data:
        (await contract.execTransaction(
          to: safeTx.to,
          baseGas: safeTx.gasParams.baseGas,
          data: safeTx.data,
          gasPrice: safeTx.gasParams.gasPrice,
          gasToken: safeTx.gasParams.gasToken,
          operation: safeTx.operation,
          refundReceiver: safeTx.gasParams.refundReceiver,
          safeTxGas: safeTx.gasParams.safeTxGas,
          value: safeTx.value,
          signatures: sort.expand((e) => e.signature).toList(),
        )).encode,
    chainId: chainId,
  );
}