[
    {
        "inputs": [
            {
                "internalType": "contract IPoolManager",
                "name": "poolManager_",
                "type": "address"
            },
            {
                "internalType": "contract IBunniHub",
                "name": "hub_",
                "type": "address"
            },
            {
                "internalType": "contract IFloodPlain",
                "name": "floodPlain_",
                "type": "address"
            },
            {
                "internalType": "contract WETH",
                "name": "weth_",
                "type": "address"
            },
            {
                "internalType": "contract IZone",
                "name": "floodZone_",
                "type": "address"
            },
            {
                "internalType": "address",
                "name": "owner_",
                "type": "address"
            },
            {
                "internalType": "address",
                "name": "hookFeeRecipientController_",
                "type": "address"
            },
            {
                "internalType": "uint48",
                "name": "k_",
                "type": "uint48"
            }
        ],
        "stateMutability": "nonpayable",
        "type": "constructor"
    },
    {
        "inputs": [],
        "name": "AlreadyInitialized",
        "type": "error"
    },
    {
        "inputs": [],
        "name": "AmAmm__BidLocked",
        "type": "error"
    },
    {
        "inputs": [],
        "name": "AmAmm__InvalidBid",
        "type": "error"
    },
    {
        "inputs": [],
        "name": "AmAmm__InvalidDepositAmount",
        "type": "error"
    },
    {
        "inputs": [],
        "name": "AmAmm__NotEnabled",
        "type": "error"
    },
    {
        "inputs": [],
        "name": "AmAmm__Unauthorized",
        "type": "error"
    },
    {
        "inputs": [],
        "name": "BunniHook__HookFeeRecipientAlreadySet",
        "type": "error"
    },
    {
        "inputs": [],
        "name": "BunniHook__HookFeeRecipientNotSet",
        "type": "error"
    },
    {
        "inputs": [],
        "name": "BunniHook__InvalidActiveBlock",
        "type": "error"
    },
    {
        "inputs": [],
        "name": "BunniHook__InvalidCuratorFee",
        "type": "error"
    },
    {
        "inputs": [],
        "name": "BunniHook__InvalidK",
        "type": "error"
    },
    {
        "inputs": [],
        "name": "BunniHook__InvalidModifier",
        "type": "error"
    },
    {
        "inputs": [],
        "name": "BunniHook__InvalidRebalanceOrderHash",
        "type": "error"
    },
    {
        "inputs": [],
        "name": "BunniHook__PrehookPostConditionFailed",
        "type": "error"
    },
    {
        "inputs": [],
        "name": "BunniHook__RebalanceInProgress",
        "type": "error"
    },
    {
        "inputs": [],
        "name": "BunniHook__Unauthorized",
        "type": "error"
    },
    {
        "inputs": [],
        "name": "NewOwnerIsZeroAddress",
        "type": "error"
    },
    {
        "inputs": [],
        "name": "NoHandoverRequest",
        "type": "error"
    },
    {
        "inputs": [],
        "name": "NotPoolManager",
        "type": "error"
    },
    {
        "inputs": [],
        "name": "OracleCardinalityCannotBeZero",
        "type": "error"
    },
    {
        "inputs": [],
        "name": "ReentrancyGuard__ReentrantCall",
        "type": "error"
    },
    {
        "inputs": [],
        "name": "Unauthorized",
        "type": "error"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "Currency",
                "name": "currency",
                "type": "address"
            },
            {
                "indexed": true,
                "internalType": "address",
                "name": "manager",
                "type": "address"
            },
            {
                "indexed": true,
                "internalType": "address",
                "name": "recipient",
                "type": "address"
            },
            {
                "indexed": false,
                "internalType": "uint256",
                "name": "fees",
                "type": "uint256"
            }
        ],
        "name": "ClaimFees",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": false,
                "internalType": "Currency[]",
                "name": "currencyList",
                "type": "address[]"
            },
            {
                "indexed": true,
                "internalType": "address",
                "name": "recipient",
                "type": "address"
            }
        ],
        "name": "ClaimProtocolFees",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "PoolId",
                "name": "id",
                "type": "bytes32"
            },
            {
                "indexed": true,
                "internalType": "address",
                "name": "manager",
                "type": "address"
            },
            {
                "indexed": true,
                "internalType": "address",
                "name": "recipient",
                "type": "address"
            },
            {
                "indexed": false,
                "internalType": "uint256",
                "name": "refund",
                "type": "uint256"
            }
        ],
        "name": "ClaimRefund",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "PoolId",
                "name": "id",
                "type": "bytes32"
            },
            {
                "indexed": true,
                "internalType": "address",
                "name": "recipient",
                "type": "address"
            },
            {
                "indexed": false,
                "internalType": "uint256",
                "name": "feeAmount0",
                "type": "uint256"
            },
            {
                "indexed": false,
                "internalType": "uint256",
                "name": "feeAmount1",
                "type": "uint256"
            }
        ],
        "name": "CuratorClaimFees",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "PoolId",
                "name": "id",
                "type": "bytes32"
            },
            {
                "indexed": true,
                "internalType": "uint16",
                "name": "newFeeRate",
                "type": "uint16"
            }
        ],
        "name": "CuratorSetFeeRate",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "PoolId",
                "name": "id",
                "type": "bytes32"
            },
            {
                "indexed": true,
                "internalType": "address",
                "name": "manager",
                "type": "address"
            },
            {
                "indexed": false,
                "internalType": "uint128",
                "name": "amount",
                "type": "uint128"
            }
        ],
        "name": "DepositIntoNextBid",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "PoolId",
                "name": "id",
                "type": "bytes32"
            },
            {
                "indexed": true,
                "internalType": "address",
                "name": "manager",
                "type": "address"
            },
            {
                "indexed": false,
                "internalType": "uint128",
                "name": "amount",
                "type": "uint128"
            }
        ],
        "name": "DepositIntoTopBid",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "PoolId",
                "name": "id",
                "type": "bytes32"
            },
            {
                "indexed": true,
                "internalType": "address",
                "name": "manager",
                "type": "address"
            },
            {
                "indexed": false,
                "internalType": "uint128",
                "name": "additionalRent",
                "type": "uint128"
            },
            {
                "indexed": false,
                "internalType": "uint128",
                "name": "updatedDeposit",
                "type": "uint128"
            },
            {
                "indexed": false,
                "internalType": "bool",
                "name": "topBid",
                "type": "bool"
            },
            {
                "indexed": true,
                "internalType": "address",
                "name": "withdrawRecipient",
                "type": "address"
            },
            {
                "indexed": false,
                "internalType": "uint128",
                "name": "amountDeposited",
                "type": "uint128"
            },
            {
                "indexed": false,
                "internalType": "uint128",
                "name": "amountWithdrawn",
                "type": "uint128"
            }
        ],
        "name": "IncreaseBidRent",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "address",
                "name": "pendingOwner",
                "type": "address"
            }
        ],
        "name": "OwnershipHandoverCanceled",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "address",
                "name": "pendingOwner",
                "type": "address"
            }
        ],
        "name": "OwnershipHandoverRequested",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "address",
                "name": "oldOwner",
                "type": "address"
            },
            {
                "indexed": true,
                "internalType": "address",
                "name": "newOwner",
                "type": "address"
            }
        ],
        "name": "OwnershipTransferred",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": false,
                "internalType": "uint48",
                "name": "currentK",
                "type": "uint48"
            },
            {
                "indexed": true,
                "internalType": "uint48",
                "name": "newK",
                "type": "uint48"
            },
            {
                "indexed": true,
                "internalType": "uint160",
                "name": "activeBlock",
                "type": "uint160"
            }
        ],
        "name": "ScheduleKChange",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "PoolId",
                "name": "id",
                "type": "bytes32"
            },
            {
                "indexed": true,
                "internalType": "address",
                "name": "manager",
                "type": "address"
            },
            {
                "indexed": false,
                "internalType": "bytes6",
                "name": "payload",
                "type": "bytes6"
            },
            {
                "indexed": false,
                "internalType": "bool",
                "name": "topBid",
                "type": "bool"
            }
        ],
        "name": "SetBidPayload",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "uint32",
                "name": "hookFeeModifier",
                "type": "uint32"
            }
        ],
        "name": "SetHookFeeModifier",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": false,
                "internalType": "address",
                "name": "hookFeeRecipient",
                "type": "address"
            }
        ],
        "name": "SetHookFeeRecipient",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "PoolId",
                "name": "id",
                "type": "bytes32"
            },
            {
                "indexed": false,
                "internalType": "bool",
                "name": "unblocked",
                "type": "bool"
            }
        ],
        "name": "SetWithdrawalUnblocked",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": false,
                "internalType": "contract IZone",
                "name": "zone",
                "type": "address"
            }
        ],
        "name": "SetZone",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "PoolId",
                "name": "id",
                "type": "bytes32"
            },
            {
                "indexed": true,
                "internalType": "address",
                "name": "manager",
                "type": "address"
            },
            {
                "indexed": true,
                "internalType": "uint48",
                "name": "blockIdx",
                "type": "uint48"
            },
            {
                "indexed": false,
                "internalType": "bytes6",
                "name": "payload",
                "type": "bytes6"
            },
            {
                "indexed": false,
                "internalType": "uint128",
                "name": "rent",
                "type": "uint128"
            },
            {
                "indexed": false,
                "internalType": "uint128",
                "name": "deposit",
                "type": "uint128"
            }
        ],
        "name": "SubmitBid",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "PoolId",
                "name": "id",
                "type": "bytes32"
            },
            {
                "indexed": true,
                "internalType": "address",
                "name": "sender",
                "type": "address"
            },
            {
                "indexed": false,
                "internalType": "bool",
                "name": "exactIn",
                "type": "bool"
            },
            {
                "indexed": false,
                "internalType": "bool",
                "name": "zeroForOne",
                "type": "bool"
            },
            {
                "indexed": false,
                "internalType": "uint256",
                "name": "inputAmount",
                "type": "uint256"
            },
            {
                "indexed": false,
                "internalType": "uint256",
                "name": "outputAmount",
                "type": "uint256"
            },
            {
                "indexed": false,
                "internalType": "uint160",
                "name": "sqrtPriceX96",
                "type": "uint160"
            },
            {
                "indexed": false,
                "internalType": "int24",
                "name": "tick",
                "type": "int24"
            },
            {
                "indexed": false,
                "internalType": "uint24",
                "name": "fee",
                "type": "uint24"
            },
            {
                "indexed": false,
                "internalType": "uint256",
                "name": "totalLiquidity",
                "type": "uint256"
            }
        ],
        "name": "Swap",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "PoolId",
                "name": "id",
                "type": "bytes32"
            },
            {
                "indexed": true,
                "internalType": "address",
                "name": "manager",
                "type": "address"
            },
            {
                "indexed": true,
                "internalType": "address",
                "name": "recipient",
                "type": "address"
            },
            {
                "indexed": false,
                "internalType": "uint128",
                "name": "amount",
                "type": "uint128"
            }
        ],
        "name": "WithdrawFromNextBid",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "PoolId",
                "name": "id",
                "type": "bytes32"
            },
            {
                "indexed": true,
                "internalType": "address",
                "name": "manager",
                "type": "address"
            },
            {
                "indexed": true,
                "internalType": "address",
                "name": "recipient",
                "type": "address"
            },
            {
                "indexed": false,
                "internalType": "uint128",
                "name": "amount",
                "type": "uint128"
            }
        ],
        "name": "WithdrawFromTopBid",
        "type": "event"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "caller",
                "type": "address"
            },
            {
                "components": [
                    {
                        "internalType": "Currency",
                        "name": "currency0",
                        "type": "address"
                    },
                    {
                        "internalType": "Currency",
                        "name": "currency1",
                        "type": "address"
                    },
                    {
                        "internalType": "uint24",
                        "name": "fee",
                        "type": "uint24"
                    },
                    {
                        "internalType": "int24",
                        "name": "tickSpacing",
                        "type": "int24"
                    },
                    {
                        "internalType": "contract IHooks",
                        "name": "hooks",
                        "type": "address"
                    }
                ],
                "internalType": "struct PoolKey",
                "name": "key",
                "type": "tuple"
            },
            {
                "internalType": "uint160",
                "name": "sqrtPriceX96",
                "type": "uint160"
            },
            {
                "internalType": "int24",
                "name": "tick",
                "type": "int24"
            }
        ],
        "name": "afterInitialize",
        "outputs": [
            {
                "internalType": "bytes4",
                "name": "",
                "type": "bytes4"
            }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "sender",
                "type": "address"
            },
            {
                "components": [
                    {
                        "internalType": "Currency",
                        "name": "currency0",
                        "type": "address"
                    },
                    {
                        "internalType": "Currency",
                        "name": "currency1",
                        "type": "address"
                    },
                    {
                        "internalType": "uint24",
                        "name": "fee",
                        "type": "uint24"
                    },
                    {
                        "internalType": "int24",
                        "name": "tickSpacing",
                        "type": "int24"
                    },
                    {
                        "internalType": "contract IHooks",
                        "name": "hooks",
                        "type": "address"
                    }
                ],
                "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 IPoolManager.SwapParams",
                "name": "params",
                "type": "tuple"
            },
            {
                "internalType": "bytes",
                "name": "",
                "type": "bytes"
            }
        ],
        "name": "beforeSwap",
        "outputs": [
            {
                "internalType": "bytes4",
                "name": "",
                "type": "bytes4"
            },
            {
                "internalType": "BeforeSwapDelta",
                "name": "",
                "type": "int256"
            },
            {
                "internalType": "uint24",
                "name": "",
                "type": "uint24"
            }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "PoolId",
                "name": "id",
                "type": "bytes32"
            },
            {
                "internalType": "address",
                "name": "manager",
                "type": "address"
            },
            {
                "internalType": "bytes6",
                "name": "payload",
                "type": "bytes6"
            },
            {
                "internalType": "uint128",
                "name": "rent",
                "type": "uint128"
            },
            {
                "internalType": "uint128",
                "name": "deposit",
                "type": "uint128"
            }
        ],
        "name": "bid",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "PoolId",
                "name": "id",
                "type": "bytes32"
            }
        ],
        "name": "canWithdraw",
        "outputs": [
            {
                "internalType": "bool",
                "name": "",
                "type": "bool"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "cancelOwnershipHandover",
        "outputs": [],
        "stateMutability": "payable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "Currency",
                "name": "currency",
                "type": "address"
            },
            {
                "internalType": "address",
                "name": "recipient",
                "type": "address"
            }
        ],
        "name": "claimFees",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "fees",
                "type": "uint256"
            }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "Currency[]",
                "name": "currencyList",
                "type": "address[]"
            }
        ],
        "name": "claimProtocolFees",
        "outputs": [
            {
                "internalType": "uint256[]",
                "name": "claimedAmounts",
                "type": "uint256[]"
            }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "PoolId",
                "name": "id",
                "type": "bytes32"
            },
            {
                "internalType": "address",
                "name": "recipient",
                "type": "address"
            }
        ],
        "name": "claimRefund",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "refund",
                "type": "uint256"
            }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "pendingOwner",
                "type": "address"
            }
        ],
        "name": "completeOwnershipHandover",
        "outputs": [],
        "stateMutability": "payable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "components": [
                    {
                        "internalType": "Currency",
                        "name": "currency0",
                        "type": "address"
                    },
                    {
                        "internalType": "Currency",
                        "name": "currency1",
                        "type": "address"
                    },
                    {
                        "internalType": "uint24",
                        "name": "fee",
                        "type": "uint24"
                    },
                    {
                        "internalType": "int24",
                        "name": "tickSpacing",
                        "type": "int24"
                    },
                    {
                        "internalType": "contract IHooks",
                        "name": "hooks",
                        "type": "address"
                    }
                ],
                "internalType": "struct PoolKey",
                "name": "key",
                "type": "tuple"
            },
            {
                "internalType": "address",
                "name": "recipient",
                "type": "address"
            }
        ],
        "name": "curatorClaimFees",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "PoolId",
                "name": "id",
                "type": "bytes32"
            },
            {
                "internalType": "uint16",
                "name": "newFeeRate",
                "type": "uint16"
            }
        ],
        "name": "curatorSetFeeRate",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "PoolId",
                "name": "id",
                "type": "bytes32"
            },
            {
                "internalType": "uint128",
                "name": "amount",
                "type": "uint128"
            },
            {
                "internalType": "bool",
                "name": "isTopBid",
                "type": "bool"
            }
        ],
        "name": "depositIntoBid",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "bytes32",
                "name": "slot",
                "type": "bytes32"
            }
        ],
        "name": "extsload",
        "outputs": [
            {
                "internalType": "bytes32",
                "name": "",
                "type": "bytes32"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "bytes32",
                "name": "startSlot",
                "type": "bytes32"
            },
            {
                "internalType": "uint256",
                "name": "nSlots",
                "type": "uint256"
            }
        ],
        "name": "extsload",
        "outputs": [
            {
                "internalType": "bytes32[]",
                "name": "",
                "type": "bytes32[]"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "bytes32[]",
                "name": "slots",
                "type": "bytes32[]"
            }
        ],
        "name": "extsload",
        "outputs": [
            {
                "internalType": "bytes32[]",
                "name": "",
                "type": "bytes32[]"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "PoolId",
                "name": "id",
                "type": "bytes32"
            }
        ],
        "name": "getAmAmmEnabled",
        "outputs": [
            {
                "internalType": "bool",
                "name": "",
                "type": "bool"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "PoolId",
                "name": "id",
                "type": "bytes32"
            },
            {
                "internalType": "bool",
                "name": "isTopBid",
                "type": "bool"
            }
        ],
        "name": "getBid",
        "outputs": [
            {
                "components": [
                    {
                        "internalType": "address",
                        "name": "manager",
                        "type": "address"
                    },
                    {
                        "internalType": "uint48",
                        "name": "blockIdx",
                        "type": "uint48"
                    },
                    {
                        "internalType": "bytes6",
                        "name": "payload",
                        "type": "bytes6"
                    },
                    {
                        "internalType": "uint128",
                        "name": "rent",
                        "type": "uint128"
                    },
                    {
                        "internalType": "uint128",
                        "name": "deposit",
                        "type": "uint128"
                    }
                ],
                "internalType": "struct IAmAmm.Bid",
                "name": "",
                "type": "tuple"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "PoolId",
                "name": "id",
                "type": "bytes32"
            },
            {
                "internalType": "bool",
                "name": "isTopBid",
                "type": "bool"
            }
        ],
        "name": "getBidWrite",
        "outputs": [
            {
                "components": [
                    {
                        "internalType": "address",
                        "name": "manager",
                        "type": "address"
                    },
                    {
                        "internalType": "uint48",
                        "name": "blockIdx",
                        "type": "uint48"
                    },
                    {
                        "internalType": "bytes6",
                        "name": "payload",
                        "type": "bytes6"
                    },
                    {
                        "internalType": "uint128",
                        "name": "rent",
                        "type": "uint128"
                    },
                    {
                        "internalType": "uint128",
                        "name": "deposit",
                        "type": "uint128"
                    }
                ],
                "internalType": "struct IAmAmm.Bid",
                "name": "",
                "type": "tuple"
            }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "manager",
                "type": "address"
            },
            {
                "internalType": "Currency",
                "name": "currency",
                "type": "address"
            }
        ],
        "name": "getFees",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "manager",
                "type": "address"
            },
            {
                "internalType": "PoolId",
                "name": "id",
                "type": "bytes32"
            }
        ],
        "name": "getRefund",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "manager",
                "type": "address"
            },
            {
                "internalType": "PoolId",
                "name": "id",
                "type": "bytes32"
            }
        ],
        "name": "getRefundWrite",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "",
                "type": "uint256"
            }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "PoolId",
                "name": "id",
                "type": "bytes32"
            },
            {
                "internalType": "uint128",
                "name": "additionalRent",
                "type": "uint128"
            },
            {
                "internalType": "uint128",
                "name": "updatedDeposit",
                "type": "uint128"
            },
            {
                "internalType": "bool",
                "name": "isTopBid",
                "type": "bool"
            },
            {
                "internalType": "address",
                "name": "withdrawRecipient",
                "type": "address"
            }
        ],
        "name": "increaseBidRent",
        "outputs": [
            {
                "internalType": "uint128",
                "name": "amountDeposited",
                "type": "uint128"
            },
            {
                "internalType": "uint128",
                "name": "amountWithdrawn",
                "type": "uint128"
            }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "components": [
                    {
                        "internalType": "Currency",
                        "name": "currency0",
                        "type": "address"
                    },
                    {
                        "internalType": "Currency",
                        "name": "currency1",
                        "type": "address"
                    },
                    {
                        "internalType": "uint24",
                        "name": "fee",
                        "type": "uint24"
                    },
                    {
                        "internalType": "int24",
                        "name": "tickSpacing",
                        "type": "int24"
                    },
                    {
                        "internalType": "contract IHooks",
                        "name": "hooks",
                        "type": "address"
                    }
                ],
                "internalType": "struct PoolKey",
                "name": "key",
                "type": "tuple"
            },
            {
                "internalType": "uint32",
                "name": "cardinalityNext",
                "type": "uint32"
            }
        ],
        "name": "increaseCardinalityNext",
        "outputs": [
            {
                "internalType": "uint32",
                "name": "cardinalityNextOld",
                "type": "uint32"
            },
            {
                "internalType": "uint32",
                "name": "cardinalityNextNew",
                "type": "uint32"
            }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "bytes",
                "name": "hookParams",
                "type": "bytes"
            }
        ],
        "name": "isValidParams",
        "outputs": [
            {
                "internalType": "bool",
                "name": "",
                "type": "bool"
            }
        ],
        "stateMutability": "pure",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "bytes32",
                "name": "hash",
                "type": "bytes32"
            },
            {
                "internalType": "bytes",
                "name": "signature",
                "type": "bytes"
            }
        ],
        "name": "isValidSignature",
        "outputs": [
            {
                "internalType": "bytes4",
                "name": "magicValue",
                "type": "bytes4"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "PoolId",
                "name": "id",
                "type": "bytes32"
            }
        ],
        "name": "ldfStates",
        "outputs": [
            {
                "internalType": "bytes32",
                "name": "",
                "type": "bytes32"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "components": [
                    {
                        "internalType": "Currency",
                        "name": "currency0",
                        "type": "address"
                    },
                    {
                        "internalType": "Currency",
                        "name": "currency1",
                        "type": "address"
                    },
                    {
                        "internalType": "uint24",
                        "name": "fee",
                        "type": "uint24"
                    },
                    {
                        "internalType": "int24",
                        "name": "tickSpacing",
                        "type": "int24"
                    },
                    {
                        "internalType": "contract IHooks",
                        "name": "hooks",
                        "type": "address"
                    }
                ],
                "internalType": "struct PoolKey",
                "name": "key",
                "type": "tuple"
            },
            {
                "internalType": "uint32[]",
                "name": "secondsAgos",
                "type": "uint32[]"
            }
        ],
        "name": "observe",
        "outputs": [
            {
                "internalType": "int56[]",
                "name": "tickCumulatives",
                "type": "int56[]"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "owner",
        "outputs": [
            {
                "internalType": "address",
                "name": "result",
                "type": "address"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "pendingOwner",
                "type": "address"
            }
        ],
        "name": "ownershipHandoverExpiresAt",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "result",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "bool",
                "name": "isPreHook",
                "type": "bool"
            },
            {
                "components": [
                    {
                        "components": [
                            {
                                "internalType": "Currency",
                                "name": "currency0",
                                "type": "address"
                            },
                            {
                                "internalType": "Currency",
                                "name": "currency1",
                                "type": "address"
                            },
                            {
                                "internalType": "uint24",
                                "name": "fee",
                                "type": "uint24"
                            },
                            {
                                "internalType": "int24",
                                "name": "tickSpacing",
                                "type": "int24"
                            },
                            {
                                "internalType": "contract IHooks",
                                "name": "hooks",
                                "type": "address"
                            }
                        ],
                        "internalType": "struct PoolKey",
                        "name": "key",
                        "type": "tuple"
                    },
                    {
                        "components": [
                            {
                                "internalType": "Currency",
                                "name": "currency",
                                "type": "address"
                            },
                            {
                                "internalType": "uint256",
                                "name": "amount",
                                "type": "uint256"
                            }
                        ],
                        "internalType": "struct IBunniHook.RebalanceOrderPreHookArgs",
                        "name": "preHookArgs",
                        "type": "tuple"
                    },
                    {
                        "components": [
                            {
                                "internalType": "Currency",
                                "name": "currency",
                                "type": "address"
                            }
                        ],
                        "internalType": "struct IBunniHook.RebalanceOrderPostHookArgs",
                        "name": "postHookArgs",
                        "type": "tuple"
                    }
                ],
                "internalType": "struct IBunniHook.RebalanceOrderHookArgs",
                "name": "hookArgs",
                "type": "tuple"
            }
        ],
        "name": "rebalanceOrderHook",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "renounceOwnership",
        "outputs": [],
        "stateMutability": "payable",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "requestOwnershipHandover",
        "outputs": [],
        "stateMutability": "payable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint48",
                "name": "newK",
                "type": "uint48"
            },
            {
                "internalType": "uint160",
                "name": "activeBlock",
                "type": "uint160"
            }
        ],
        "name": "scheduleKChange",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "PoolId",
                "name": "id",
                "type": "bytes32"
            },
            {
                "internalType": "bytes6",
                "name": "payload",
                "type": "bytes6"
            },
            {
                "internalType": "bool",
                "name": "isTopBid",
                "type": "bool"
            }
        ],
        "name": "setBidPayload",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint32",
                "name": "newHookFeeModifier",
                "type": "uint32"
            }
        ],
        "name": "setHookFeeModifier",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "newHookFeeRecipient",
                "type": "address"
            }
        ],
        "name": "setHookFeeRecipient",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "PoolId",
                "name": "id",
                "type": "bytes32"
            },
            {
                "internalType": "bool",
                "name": "unblocked",
                "type": "bool"
            }
        ],
        "name": "setWithdrawalUnblocked",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "contract IZone",
                "name": "zone",
                "type": "address"
            }
        ],
        "name": "setZone",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "PoolId",
                "name": "id",
                "type": "bytes32"
            }
        ],
        "name": "slot0s",
        "outputs": [
            {
                "internalType": "uint160",
                "name": "sqrtPriceX96",
                "type": "uint160"
            },
            {
                "internalType": "int24",
                "name": "tick",
                "type": "int24"
            },
            {
                "internalType": "uint32",
                "name": "lastSwapTimestamp",
                "type": "uint32"
            },
            {
                "internalType": "uint32",
                "name": "lastSurgeTimestamp",
                "type": "uint32"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "newOwner",
                "type": "address"
            }
        ],
        "name": "transferOwnership",
        "outputs": [],
        "stateMutability": "payable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "bytes",
                "name": "data",
                "type": "bytes"
            }
        ],
        "name": "unlockCallback",
        "outputs": [
            {
                "internalType": "bytes",
                "name": "",
                "type": "bytes"
            }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "PoolId",
                "name": "id",
                "type": "bytes32"
            },
            {
                "internalType": "bytes32",
                "name": "newState",
                "type": "bytes32"
            }
        ],
        "name": "updateLdfState",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "PoolId",
                "name": "id",
                "type": "bytes32"
            }
        ],
        "name": "updateStateMachine",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "PoolId",
                "name": "id",
                "type": "bytes32"
            },
            {
                "internalType": "uint128",
                "name": "amount",
                "type": "uint128"
            },
            {
                "internalType": "address",
                "name": "recipient",
                "type": "address"
            },
            {
                "internalType": "bool",
                "name": "isTopBid",
                "type": "bool"
            }
        ],
        "name": "withdrawFromBid",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "stateMutability": "payable",
        "type": "receive"
    }
]
