// Create an instance of PayoutHelper with the specified RPC node URL
PayoutHelper payout = new PayoutHelper("JSON_RPC_URL");
// Specify the payout Gateway contract address
String payoutGatewayAddress = "0x...";
// Create list to store payout instances
List<Payout> payoutList = new ArrayList<>();
// Specify the recipient address
String toAddress = "0x2d7FF2DC166aE09542C749bE052028e43825cde7";
// Specify the trigger address
String triggerAddress = "0x....";
// Create payout instances with the specified values
Payout payoutUsdt = new Payout(USDT, new BigInteger("1000"), toAddress);
Payout payoutUsdc = new Payout(USDC, new BigInteger("1000"), toAddress);
// Add the payout instances to the payout list
payoutList.add(payoutUsdt);
payoutList.add(payoutUsdc);
// Create a list to store business-related information
List<Utf8String> business = new ArrayList<>();
business.add(new Utf8String("q.no1"));
business.add(new Utf8String("q.no2"));
// Create a list to store input arguments for the function
List<Type> inputArgs = new ArrayList<>();
// Add input arguments to the list
inputArgs.add(new Bool(Boolean.TRUE)); // Specify whether to perform the payout
inputArgs.add(new DynamicArray(payoutList)); // Specify the list of payouts
inputArgs.add(new DynamicArray(business)); // Specify business-related information
// Create a list to store output argument types (empty for now)
List<TypeReference<?>> outputArgs2 = new ArrayList<>();
// Create a function with the specified name, input arguments, and output arguments
Function nameFunction = new Function(BlockATMConstant.AUTO_PAYOUT_TOKEN, inputArgs, outputArgs2);
// Encode the function data into a string
String data = FunctionEncoder.encode(nameFunction);
// Create a raw payout transaction
RawTransaction rawTransaction = payout.createRawTransaction(triggerAddress, payoutGatewayAddress, BigInteger.ZERO, data);
// Print the raw transaction as JSON
System.out.println(JSON.toJSONString(rawTransaction));