[
    {
        "inputs": [
            {
                "components": [
                    {
                        "internalType": "Currency",
                        "name": "currency0",
                        "type": "address"
                    },
                    {
                        "internalType": "Currency",
                        "name": "currency1",
                        "type": "address"
                    },
                    {
                        "internalType": "contract IHooks",
                        "name": "hooks",
                        "type": "address"
                    },
                    {
                        "internalType": "contract IPoolManager",
                        "name": "poolManager",
                        "type": "address"
                    },
                    {
                        "internalType": "uint24",
                        "name": "fee",
                        "type": "uint24"
                    },
                    {
                        "internalType": "bytes32",
                        "name": "parameters",
                        "type": "bytes32"
                    }
                ],
                "internalType": "struct PoolKey",
                "name": "key",
                "type": "tuple"
            },
            {
                "components": [
                    {
                        "internalType": "bool",
                        "name": "zeroForOne",
                        "type": "bool"
                    },
                    {
                        "internalType": "int256",
                        "name": "amountSpecified",
                        "type": "int256"
                    },
                    {
                        "internalType": "uint160",
                        "name": "sqrtPriceLimitX96",
                        "type": "uint160"
                    }
                ],
                "internalType": "struct ICLPoolManager.SwapParams",
                "name": "params",
                "type": "tuple"
            },
            {
                "internalType": "bytes",
                "name": "hookData",
                "type": "bytes"
            }
        ],
        "name": "swap",
        "outputs": [
            {
                "internalType": "BalanceDelta",
                "name": "delta",
                "type": "int256"
            }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
    }
]
