[{"inputs":[{"internalType":"address","name":"_unlockAddress","type":"address"},{"internalType":"address","name":"_permit2Address","type":"address"},{"internalType":"address[]","name":"_uniswapRouters","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InsufficientBalance","type":"error"},{"inputs":[],"name":"LockCallFailed","type":"error"},{"inputs":[{"internalType":"address","name":"lockAddress","type":"address"}],"name":"LockDoesntExist","type":"error"},{"inputs":[{"internalType":"address","name":"uniswapRouter","type":"address"},{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"bytes","name":"callData","type":"bytes"}],"name":"SwapFailed","type":"error"},{"inputs":[],"name":"UnauthorizedBalanceChange","type":"error"},{"inputs":[{"internalType":"address","name":"routerAddress","type":"address"}],"name":"UnautorizedRouter","type":"error"},{"inputs":[],"name":"WithdrawFailed","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"lock","type":"address"},{"indexed":false,"internalType":"address","name":"tokenAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountSpent","type":"uint256"}],"name":"SwapCall","type":"event"},{"inputs":[],"name":"permit2","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"lock","type":"address"},{"internalType":"address","name":"srcToken","type":"address"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address","name":"uniswapRouter","type":"address"},{"internalType":"bytes","name":"swapCalldata","type":"bytes"},{"internalType":"bytes","name":"callData","type":"bytes"}],"name":"swapAndCall","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"unlockAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"withdrawToUnlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]