Batch transaction for gas-less approval

Please how does the batch approval work?. I have implemented it but i am missing a lot of things const smartAccount = new ethers.Contract(‘YOUR_SMART_ACCOUNT_ADDRESS’, [‘function sendTransactionBatch((address to,uint256 value,bytes data))’], wallet);

const uniswapRouterAddress = ‘UNISWAP_ROUTER_ADDRESS’;
const WETH_ADDRESS = ‘WETH_ADDRESS’; // WETH address on the specific network
const tokenAddress = ‘TOKEN_ADDRESS’; // Address of the token you want to swap ETH for
const otherTokenAddress = ‘OTHER_TOKEN_ADDRESS’; // Address of the other token you want to swap the first token for
const toAddress = ‘TO_ADDRESS’; // Address where you want to send the output tokens
const deadline = Math.floor( / 1000) + 60 * 20; // 20 minutes from the current Unix time
const amountIn = ethers.utils.parseUnits(‘1’, ‘18’); // The amount of the input token you’re providing, in this case 1 token.
const amountOutMin = ethers.utils.parseUnits(‘1’, ‘18’); // The minimum amount of the output token you want to receive

const erc20Interface = new ethers.utils.Interface([
‘function approve(address _to, uint256 _value)’,

const uniswapInterface = new ethers.utils.Interface([
‘function swapExactETHForTokens(uint amountOutMin, address calldata path, address to, uint deadline) external payable’,
‘function swapExactTokensForTokens(uint amountIn, uint amountOutMin, address calldata path, address to, uint deadline) external’,

const txs = ;

// Swap ETH for tokens
const swapEthForTokensData = uniswapInterface.encodeFunctionData(
[amountOutMin, [WETH_ADDRESS, tokenAddress], toAddress, deadline]
to: uniswapRouterAddress,
value: ethers.utils.parseEther(‘1’), // The amount of ETH you’re providing
data: swapEthForTokensData

// Swap tokens for other tokens
const approveData = erc20Interface.encodeFunctionData(
[uniswapRouterAddress, ethers.constants.MaxUint256]
to: tokenAddress,
data: approveData

const swapTokensForTokensData = uniswapInterface.encodeFunctionData(
[amountIn, amountOutMin, [tokenAddress, otherTokenAddress], toAddress, deadline]
to: uniswapRouterAddress,
data: swapTokensForTokensData

// Send the batched transactions
const txResponse = await smartAccount.sendTransactionBatch(txs);
const txReceipt = await txResponse.wait();

console.log(‘Tx hash’, txReceipt.transactionHash);

Hi, you can refer to this part of documentation : Gasless Batched Transaction - Biconomy SDK