[
    {
        "inputs": [],
        "name": "FactorAlreadyInitialized",
        "type": "error"
    },
    {
        "inputs": [],
        "name": "FactorNotInitialized",
        "type": "error"
    },
    {
        "inputs": [],
        "name": "FactoryAccessorMustBeNonZero",
        "type": "error"
    },
    {
        "inputs": [],
        "name": "FactoryInvalidFee",
        "type": "error"
    },
    {
        "inputs": [
            {
                "internalType": "uint8",
                "name": "kinds",
                "type": "uint8"
            }
        ],
        "name": "FactoryInvalidKinds",
        "type": "error"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "protocolLendingFeeRateD18",
                "type": "uint256"
            }
        ],
        "name": "FactoryInvalidLendingFeeRate",
        "type": "error"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "lookback",
                "type": "uint256"
            }
        ],
        "name": "FactoryInvalidLookback",
        "type": "error"
    },
    {
        "inputs": [
            {
                "internalType": "uint8",
                "name": "protocolFeeRatioD3",
                "type": "uint8"
            }
        ],
        "name": "FactoryInvalidProtocolFeeRatio",
        "type": "error"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "tickSpacing",
                "type": "uint256"
            }
        ],
        "name": "FactoryInvalidTickSpacing",
        "type": "error"
    },
    {
        "inputs": [
            {
                "internalType": "uint8",
                "name": "decimalsA",
                "type": "uint8"
            },
            {
                "internalType": "uint8",
                "name": "decimalsB",
                "type": "uint8"
            }
        ],
        "name": "FactoryInvalidTokenDecimals",
        "type": "error"
    },
    {
        "inputs": [
            {
                "internalType": "contract IERC20",
                "name": "_tokenA",
                "type": "address"
            },
            {
                "internalType": "contract IERC20",
                "name": "_tokenB",
                "type": "address"
            }
        ],
        "name": "FactoryInvalidTokenOrder",
        "type": "error"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "feeAIn",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "feeBIn",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "tickSpacing",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "lookback",
                "type": "uint256"
            },
            {
                "internalType": "contract IERC20",
                "name": "tokenA",
                "type": "address"
            },
            {
                "internalType": "contract IERC20",
                "name": "tokenB",
                "type": "address"
            },
            {
                "internalType": "uint8",
                "name": "kinds",
                "type": "uint8"
            },
            {
                "internalType": "address",
                "name": "accessor",
                "type": "address"
            }
        ],
        "name": "FactoryPoolAlreadyExists",
        "type": "error"
    },
    {
        "inputs": [
            {
                "internalType": "uint8",
                "name": "protocolFeeRatioD3",
                "type": "uint8"
            }
        ],
        "name": "FactoryProtocolFeeOnRenounce",
        "type": "error"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": false,
                "internalType": "contract IMaverickV2Pool",
                "name": "poolAddress",
                "type": "address"
            },
            {
                "indexed": false,
                "internalType": "uint8",
                "name": "protocolFeeRatio",
                "type": "uint8"
            },
            {
                "indexed": false,
                "internalType": "uint256",
                "name": "feeAIn",
                "type": "uint256"
            },
            {
                "indexed": false,
                "internalType": "uint256",
                "name": "feeBIn",
                "type": "uint256"
            },
            {
                "indexed": false,
                "internalType": "uint256",
                "name": "tickSpacing",
                "type": "uint256"
            },
            {
                "indexed": false,
                "internalType": "uint256",
                "name": "lookback",
                "type": "uint256"
            },
            {
                "indexed": false,
                "internalType": "int32",
                "name": "activeTick",
                "type": "int32"
            },
            {
                "indexed": false,
                "internalType": "contract IERC20",
                "name": "tokenA",
                "type": "address"
            },
            {
                "indexed": false,
                "internalType": "contract IERC20",
                "name": "tokenB",
                "type": "address"
            },
            {
                "indexed": false,
                "internalType": "uint8",
                "name": "kinds",
                "type": "uint8"
            },
            {
                "indexed": false,
                "internalType": "address",
                "name": "accessor",
                "type": "address"
            }
        ],
        "name": "PoolCreated",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": false,
                "internalType": "uint8",
                "name": "protocolFeeRatioD3",
                "type": "uint8"
            }
        ],
        "name": "SetFactoryProtocolFeeRatio",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": false,
                "internalType": "address",
                "name": "receiver",
                "type": "address"
            }
        ],
        "name": "SetFactoryProtocolFeeReceiver",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": false,
                "internalType": "uint256",
                "name": "lendingFeeRateD18",
                "type": "uint256"
            }
        ],
        "name": "SetFactoryProtocolLendingFeeRate",
        "type": "event"
    },
    {
        "inputs": [
            {
                "internalType": "contract IMaverickV2Pool",
                "name": "pool",
                "type": "address"
            },
            {
                "internalType": "bool",
                "name": "isTokenA",
                "type": "bool"
            }
        ],
        "name": "claimProtocolFeeForPool",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "contract IMaverickV2Pool",
                "name": "pool",
                "type": "address"
            }
        ],
        "name": "claimProtocolFeeForPool",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint64",
                "name": "fee",
                "type": "uint64"
            },
            {
                "internalType": "uint16",
                "name": "tickSpacing",
                "type": "uint16"
            },
            {
                "internalType": "uint32",
                "name": "lookback",
                "type": "uint32"
            },
            {
                "internalType": "contract IERC20",
                "name": "tokenA",
                "type": "address"
            },
            {
                "internalType": "contract IERC20",
                "name": "tokenB",
                "type": "address"
            },
            {
                "internalType": "int32",
                "name": "activeTick",
                "type": "int32"
            },
            {
                "internalType": "uint8",
                "name": "kinds",
                "type": "uint8"
            }
        ],
        "name": "create",
        "outputs": [
            {
                "internalType": "contract IMaverickV2Pool",
                "name": "",
                "type": "address"
            }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint64",
                "name": "feeAIn",
                "type": "uint64"
            },
            {
                "internalType": "uint64",
                "name": "feeBIn",
                "type": "uint64"
            },
            {
                "internalType": "uint16",
                "name": "tickSpacing",
                "type": "uint16"
            },
            {
                "internalType": "uint32",
                "name": "lookback",
                "type": "uint32"
            },
            {
                "internalType": "contract IERC20",
                "name": "tokenA",
                "type": "address"
            },
            {
                "internalType": "contract IERC20",
                "name": "tokenB",
                "type": "address"
            },
            {
                "internalType": "int32",
                "name": "activeTick",
                "type": "int32"
            },
            {
                "internalType": "uint8",
                "name": "kinds",
                "type": "uint8"
            }
        ],
        "name": "create",
        "outputs": [
            {
                "internalType": "contract IMaverickV2Pool",
                "name": "",
                "type": "address"
            }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint64",
                "name": "feeAIn",
                "type": "uint64"
            },
            {
                "internalType": "uint64",
                "name": "feeBIn",
                "type": "uint64"
            },
            {
                "internalType": "uint16",
                "name": "tickSpacing",
                "type": "uint16"
            },
            {
                "internalType": "uint32",
                "name": "lookback",
                "type": "uint32"
            },
            {
                "internalType": "contract IERC20",
                "name": "tokenA",
                "type": "address"
            },
            {
                "internalType": "contract IERC20",
                "name": "tokenB",
                "type": "address"
            },
            {
                "internalType": "int32",
                "name": "activeTick",
                "type": "int32"
            },
            {
                "internalType": "uint8",
                "name": "kinds",
                "type": "uint8"
            },
            {
                "internalType": "address",
                "name": "accessor",
                "type": "address"
            },
            {
                "internalType": "bool",
                "name": "permissionedLiquidity",
                "type": "bool"
            },
            {
                "internalType": "bool",
                "name": "permissionedSwap",
                "type": "bool"
            }
        ],
        "name": "createPermissioned",
        "outputs": [
            {
                "internalType": "contract IMaverickV2Pool",
                "name": "pool",
                "type": "address"
            }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint64",
                "name": "feeAIn",
                "type": "uint64"
            },
            {
                "internalType": "uint64",
                "name": "feeBIn",
                "type": "uint64"
            },
            {
                "internalType": "uint16",
                "name": "tickSpacing",
                "type": "uint16"
            },
            {
                "internalType": "uint32",
                "name": "lookback",
                "type": "uint32"
            },
            {
                "internalType": "contract IERC20",
                "name": "tokenA",
                "type": "address"
            },
            {
                "internalType": "contract IERC20",
                "name": "tokenB",
                "type": "address"
            },
            {
                "internalType": "int32",
                "name": "activeTick",
                "type": "int32"
            },
            {
                "internalType": "uint8",
                "name": "kinds",
                "type": "uint8"
            },
            {
                "internalType": "address",
                "name": "accessor",
                "type": "address"
            }
        ],
        "name": "createPermissioned",
        "outputs": [
            {
                "internalType": "contract IMaverickV2Pool",
                "name": "",
                "type": "address"
            }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint64",
                "name": "fee",
                "type": "uint64"
            },
            {
                "internalType": "uint16",
                "name": "tickSpacing",
                "type": "uint16"
            },
            {
                "internalType": "uint32",
                "name": "lookback",
                "type": "uint32"
            },
            {
                "internalType": "contract IERC20",
                "name": "tokenA",
                "type": "address"
            },
            {
                "internalType": "contract IERC20",
                "name": "tokenB",
                "type": "address"
            },
            {
                "internalType": "int32",
                "name": "activeTick",
                "type": "int32"
            },
            {
                "internalType": "uint8",
                "name": "kinds",
                "type": "uint8"
            },
            {
                "internalType": "address",
                "name": "accessor",
                "type": "address"
            }
        ],
        "name": "createPermissioned",
        "outputs": [
            {
                "internalType": "contract IMaverickV2Pool",
                "name": "",
                "type": "address"
            }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "deployParameters",
        "outputs": [
            {
                "internalType": "uint64",
                "name": "feeAIn",
                "type": "uint64"
            },
            {
                "internalType": "uint64",
                "name": "feeBIn",
                "type": "uint64"
            },
            {
                "internalType": "uint32",
                "name": "lookback",
                "type": "uint32"
            },
            {
                "internalType": "int32",
                "name": "activeTick",
                "type": "int32"
            },
            {
                "internalType": "uint64",
                "name": "tokenAScale",
                "type": "uint64"
            },
            {
                "internalType": "uint64",
                "name": "tokenBScale",
                "type": "uint64"
            },
            {
                "internalType": "contract IERC20",
                "name": "tokenA",
                "type": "address"
            },
            {
                "internalType": "contract IERC20",
                "name": "tokenB",
                "type": "address"
            },
            {
                "internalType": "uint16",
                "name": "tickSpacing",
                "type": "uint16"
            },
            {
                "internalType": "uint8",
                "name": "options",
                "type": "uint8"
            },
            {
                "internalType": "address",
                "name": "accessor",
                "type": "address"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "contract IMaverickV2Pool",
                "name": "pool",
                "type": "address"
            }
        ],
        "name": "isFactoryPool",
        "outputs": [
            {
                "internalType": "bool",
                "name": "",
                "type": "bool"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "startIndex",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "endIndex",
                "type": "uint256"
            }
        ],
        "name": "lookup",
        "outputs": [
            {
                "internalType": "contract IMaverickV2Pool[]",
                "name": "pools",
                "type": "address[]"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "feeAIn",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "feeBIn",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "tickSpacing",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "lookback",
                "type": "uint256"
            },
            {
                "internalType": "contract IERC20",
                "name": "tokenA",
                "type": "address"
            },
            {
                "internalType": "contract IERC20",
                "name": "tokenB",
                "type": "address"
            },
            {
                "internalType": "uint8",
                "name": "kinds",
                "type": "uint8"
            }
        ],
        "name": "lookup",
        "outputs": [
            {
                "internalType": "contract IMaverickV2Pool",
                "name": "",
                "type": "address"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "contract IERC20",
                "name": "_tokenA",
                "type": "address"
            },
            {
                "internalType": "contract IERC20",
                "name": "_tokenB",
                "type": "address"
            },
            {
                "internalType": "uint256",
                "name": "startIndex",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "endIndex",
                "type": "uint256"
            }
        ],
        "name": "lookup",
        "outputs": [
            {
                "internalType": "contract IMaverickV2Pool[]",
                "name": "pools",
                "type": "address[]"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "contract IERC20",
                "name": "_tokenA",
                "type": "address"
            },
            {
                "internalType": "contract IERC20",
                "name": "_tokenB",
                "type": "address"
            },
            {
                "internalType": "address",
                "name": "accessor",
                "type": "address"
            },
            {
                "internalType": "uint256",
                "name": "startIndex",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "endIndex",
                "type": "uint256"
            }
        ],
        "name": "lookupPermissioned",
        "outputs": [
            {
                "internalType": "contract IMaverickV2Pool[]",
                "name": "pools",
                "type": "address[]"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "startIndex",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "endIndex",
                "type": "uint256"
            }
        ],
        "name": "lookupPermissioned",
        "outputs": [
            {
                "internalType": "contract IMaverickV2Pool[]",
                "name": "pools",
                "type": "address[]"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "feeAIn",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "feeBIn",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "tickSpacing",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "lookback",
                "type": "uint256"
            },
            {
                "internalType": "contract IERC20",
                "name": "tokenA",
                "type": "address"
            },
            {
                "internalType": "contract IERC20",
                "name": "tokenB",
                "type": "address"
            },
            {
                "internalType": "uint8",
                "name": "options",
                "type": "uint8"
            },
            {
                "internalType": "address",
                "name": "accessor",
                "type": "address"
            }
        ],
        "name": "lookupPermissioned",
        "outputs": [
            {
                "internalType": "contract IMaverickV2Pool",
                "name": "",
                "type": "address"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "owner",
        "outputs": [
            {
                "internalType": "address",
                "name": "",
                "type": "address"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "contract IERC20",
                "name": "_tokenA",
                "type": "address"
            },
            {
                "internalType": "contract IERC20",
                "name": "_tokenB",
                "type": "address"
            },
            {
                "internalType": "address",
                "name": "accessor",
                "type": "address"
            }
        ],
        "name": "poolByTokenCount",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "_poolCount",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "poolCount",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "_poolCount",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "poolPermissionedCount",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "_poolCount",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "protocolFeeRatioD3",
        "outputs": [
            {
                "internalType": "uint8",
                "name": "",
                "type": "uint8"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "protocolFeeReceiver",
        "outputs": [
            {
                "internalType": "address",
                "name": "",
                "type": "address"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "protocolLendingFeeRateD18",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "contract IMaverickV2Pool",
                "name": "pool",
                "type": "address"
            }
        ],
        "name": "updateProtocolFeeRatioForPool",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "contract IMaverickV2Pool",
                "name": "pool",
                "type": "address"
            }
        ],
        "name": "updateProtocolLendingFeeRateForPool",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    }
]