API Reference
// 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));
String jsonRpc = "https://api.shasta.trongrid.io/jsonrpc";
String http = "https://api.shasta.trongrid.io";

TronPayoutHelper payoutHelper = new TronPayoutHelper(jsonRpc,http);

String payoutAddress = "TEPxhToBFhzBok6UN8TRvHxf7FQDFcEcwP";
String fromAddress = "TUxNbLNpNxQafkHSMTUQf7AqdasdgeDSyp";

List<Address> tokenList = new ArrayList<>();
// usdt
tokenList.add(new Address(TronSDKUtils.convertAddressToEth("TEYKWmKvdCHX2NuX4tVmhxdN4P3PVjyMcu")));
// usdc
tokenList.add(new Address(TronSDKUtils.convertAddressToEth("TWjJj93GX51rJ8GRFihPVNA15ieLoheKaj")));
List<Uint256 > amountList = new ArrayList<>();
// 1 USDT
amountList.add(new Uint256(1000L));
// 1 USDC
amountList.add(new Uint256(1000L));

List<Address> toList = new ArrayList<>();
toList.add(new Address(TronSDKUtils.convertAddressToEth("TYVY9go3sYDQrt6QybU5iHhHfRtdxXkxjp")));
toList.add(new Address(TronSDKUtils.convertAddressToEth("TYVY9go3sYDQrt6QybU5iHhHfRtdxXkxjp")));
List< Utf8String > business = new ArrayList<>();
business.add(new Utf8String("test1.NO1"));
business.add(new Utf8String("test2.NO1"));

List<Type> inputParameters = new ArrayList<>();
inputParameters.add(new Bool(Boolean.FALSE));
inputParameters.add(new DynamicArray(tokenList));
inputParameters.add(new DynamicArray(amountList));
inputParameters.add(new DynamicArray(toList));
inputParameters.add(new DynamicArray(business));
String parameter = FunctionEncoder.encodeConstructor(inputParameters);
String trans =  payoutHelper.createTransaction(payoutAddress, BlockATMConstant.TRON_PAYOUT_TOKEN,parameter,fromAddress,new BigDecimal(100));
System.out.println("trans is fail ->" + trans);