/** * AMM V2 Router ABI * Compatible with Lux V2 Router02 interface */ export const AMM_V2_ROUTER_ABI = [ { type: 'function', name: 'factory', inputs: [], outputs: [{ type: 'address' }], stateMutability: 'view', }, { type: 'function', name: 'WETH', inputs: [], outputs: [{ type: 'address' }], stateMutability: 'view', }, { type: 'function', name: 'getAmountsOut', inputs: [ { name: 'amountIn', type: 'uint256' }, { name: 'path', type: 'address[]' }, ], outputs: [{ name: 'amounts', type: 'uint256[]' }], stateMutability: 'view', }, { type: 'function', name: 'getAmountsIn', inputs: [ { name: 'amountOut', type: 'uint256' }, { name: 'path', type: 'address[]' }, ], outputs: [{ name: 'amounts', type: 'uint256[]' }], stateMutability: 'view', }, { type: 'function', name: 'swapExactTokensForTokens', inputs: [ { name: 'amountIn', type: 'uint256' }, { name: 'amountOutMin', type: 'uint256' }, { name: 'path', type: 'address[]' }, { name: 'to', type: 'address' }, { name: 'deadline', type: 'uint256' }, ], outputs: [{ name: 'amounts', type: 'uint256[]' }], stateMutability: 'nonpayable', }, { type: 'function', name: 'swapTokensForExactTokens', inputs: [ { name: 'amountOut', type: 'uint256' }, { name: 'amountInMax', type: 'uint256' }, { name: 'path', type: 'address[]' }, { name: 'to', type: 'address' }, { name: 'deadline', type: 'uint256' }, ], outputs: [{ name: 'amounts', type: 'uint256[]' }], stateMutability: 'nonpayable', }, { type: 'function', name: 'swapExactETHForTokens', inputs: [ { name: 'amountOutMin', type: 'uint256' }, { name: 'path', type: 'address[]' }, { name: 'to', type: 'address' }, { name: 'deadline', type: 'uint256' }, ], outputs: [{ name: 'amounts', type: 'uint256[]' }], stateMutability: 'payable', }, { type: 'function', name: 'swapExactTokensForETH', inputs: [ { name: 'amountIn', type: 'uint256' }, { name: 'amountOutMin', type: 'uint256' }, { name: 'path', type: 'address[]' }, { name: 'to', type: 'address' }, { name: 'deadline', type: 'uint256' }, ], outputs: [{ name: 'amounts', type: 'uint256[]' }], stateMutability: 'nonpayable', }, { type: 'function', name: 'addLiquidity', inputs: [ { name: 'tokenA', type: 'address' }, { name: 'tokenB', type: 'address' }, { name: 'amountADesired', type: 'uint256' }, { name: 'amountBDesired', type: 'uint256' }, { name: 'amountAMin', type: 'uint256' }, { name: 'amountBMin', type: 'uint256' }, { name: 'to', type: 'address' }, { name: 'deadline', type: 'uint256' }, ], outputs: [ { name: 'amountA', type: 'uint256' }, { name: 'amountB', type: 'uint256' }, { name: 'liquidity', type: 'uint256' }, ], stateMutability: 'nonpayable', }, { type: 'function', name: 'addLiquidityETH', inputs: [ { name: 'token', type: 'address' }, { name: 'amountTokenDesired', type: 'uint256' }, { name: 'amountTokenMin', type: 'uint256' }, { name: 'amountETHMin', type: 'uint256' }, { name: 'to', type: 'address' }, { name: 'deadline', type: 'uint256' }, ], outputs: [ { name: 'amountToken', type: 'uint256' }, { name: 'amountETH', type: 'uint256' }, { name: 'liquidity', type: 'uint256' }, ], stateMutability: 'payable', }, { type: 'function', name: 'removeLiquidity', inputs: [ { name: 'tokenA', type: 'address' }, { name: 'tokenB', type: 'address' }, { name: 'liquidity', type: 'uint256' }, { name: 'amountAMin', type: 'uint256' }, { name: 'amountBMin', type: 'uint256' }, { name: 'to', type: 'address' }, { name: 'deadline', type: 'uint256' }, ], outputs: [ { name: 'amountA', type: 'uint256' }, { name: 'amountB', type: 'uint256' }, ], stateMutability: 'nonpayable', }, ] as const /** @deprecated Use AMM_V2_ROUTER_ABI instead */ export const LUX_V2_ROUTER_ABI = AMM_V2_ROUTER_ABI