{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"inputs":[],"name":"BadSwap","type":"error"},{"inputs":[],"name":"ETHTransferFailed","type":"error"},{"inputs":[],"name":"Expired","type":"error"},{"inputs":[],"name":"InvalidId","type":"error"},{"inputs":[],"name":"InvalidMsgVal","type":"error"},{"inputs":[],"name":"Slippage","type":"error"},{"inputs":[],"name":"SwapExactInFail","type":"error"},{"inputs":[],"name":"SwapExactOutFail","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"components":[{"internalType":"uint256","name":"id0","type":"uint256"},{"internalType":"uint256","name":"id1","type":"uint256"},{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint256","name":"feeOrHook","type":"uint256"}],"internalType":"struct PoolKey","name":"poolKey","type":"tuple"},{"internalType":"uint256","name":"amount0Desired","type":"uint256"},{"internalType":"uint256","name":"amount1Desired","type":"uint256"},{"internalType":"uint256","name":"amount0Min","type":"uint256"},{"internalType":"uint256","name":"amount1Min","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidity","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bool","name":"is6909","type":"bool"},{"internalType":"address","name":"to","type":"address"}],"name":"ensureAllowance","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"exactOut","type":"uint256"}],"name":"ethToExactSTETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"exactOut","type":"uint256"}],"name":"ethToExactWSTETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"exactETHToSTETH","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"exactETHToWSTETH","outputs":[{"internalType":"uint256","name":"wstOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"execute","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"","type":"bytes[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"bool","name":"exactOut","type":"bool"},{"internalType":"address[11]","name":"route","type":"address[11]"},{"internalType":"uint256[4][5]","name":"swapParams","type":"uint256[4][5]"},{"internalType":"address[5]","name":"basePools","type":"address[5]"},{"internalType":"uint256","name":"swapAmount","type":"uint256"},{"internalType":"uint256","name":"amountLimit","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapCurve","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"bool","name":"exactOut","type":"bool"},{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"swapAmount","type":"uint256"},{"internalType":"uint256","name":"amountLimit","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapV2","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"bool","name":"exactOut","type":"bool"},{"internalType":"uint24","name":"swapFee","type":"uint24"},{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"swapAmount","type":"uint256"},{"internalType":"uint256","name":"amountLimit","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapV3","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"bool","name":"exactOut","type":"bool"},{"internalType":"uint24","name":"swapFee","type":"uint24"},{"internalType":"int24","name":"tickSpace","type":"int24"},{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"swapAmount","type":"uint256"},{"internalType":"uint256","name":"amountLimit","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapV4","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"bool","name":"exactOut","type":"bool"},{"internalType":"uint256","name":"feeOrHook","type":"uint256"},{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"idIn","type":"uint256"},{"internalType":"uint256","name":"idOut","type":"uint256"},{"internalType":"uint256","name":"swapAmount","type":"uint256"},{"internalType":"uint256","name":"amountLimit","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapVZ","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"sweep","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"ok","type":"bool"}],"name":"trust","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"callbackData","type":"bytes"}],"name":"unlockCallback","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unwrap","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"wrap","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"details":"uniV2 / uniV3 / uniV4 / zAMM      multi-amm multi-call router      optimized with simple abi.      Includes trusted routers,      and a Curve AMM swapper,      as well as Lido staker.","kind":"dev","methods":{"addLiquidity((uint256,uint256,address,address,uint256),uint256,uint256,uint256,uint256,address,uint256)":{"details":"To be called for zAMM following deposit() or other swaps in sequence."},"ensureAllowance(address,bool,address)":{"details":"Allows remote pulls by zAMM for swapZAMM() calls, as well as other supported pullers."},"swapVZ(address,bool,uint256,address,address,uint256,uint256,uint256,uint256,uint256)":{"details":"Pull in full and refund excess against zAMM."},"unlockCallback(bytes)":{"details":"Handle V4 PoolManager swap callback - hookless default."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"compilationTarget":{"src/zRouter.sol":"zRouter"},"evmVersion":"prague","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":true,"runs":9999999},"remappings":[":@forge/=lib/forge-std/src/",":@solady/=lib/solady/",":@soledge/=lib/soledge/",":forge-std/=lib/forge-std/src/",":solady/=lib/solady/src/"],"viaIR":true},"sources":{"src/zRouter.sol":{"keccak256":"0x3ca3147b083f1a4c253e9e2a080fdc9a77660c9905f36515c4e847708d5d104a","license":"MIT","urls":["bzz-raw://c91ff6149a66bc102b02c2837f272921d779c13f662fe292faa17ef31ad481f3","dweb:/ipfs/QmSKg8JM6Ahn9TkEQjQ28SmhMzY63vrYds38t3cmGKzT9k"]}},"version":1}