/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */

import { Contract, Signer, utils } from "ethers";
import type { Provider } from "@ethersproject/providers";
import type {
  IPoolManagerFactory,
  IPoolManagerFactoryInterface,
} from "../IPoolManagerFactory";

const _abi = [
  {
    inputs: [],
    name: "PoolManagerFactory_ExistingPoolManager",
    type: "error",
  },
  {
    inputs: [],
    name: "PoolManagerFactory_InvalidMinEthAmount",
    type: "error",
  },
  {
    inputs: [],
    name: "PoolManagerFactory_InvalidPendingOwner",
    type: "error",
  },
  {
    inputs: [],
    name: "PoolManagerFactory_InvalidPool",
    type: "error",
  },
  {
    inputs: [],
    name: "PoolManagerFactory_SmallAmount",
    type: "error",
  },
  {
    inputs: [],
    name: "PoolManagerFactory_ZeroAddress",
    type: "error",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: "contract IFeeCollectorJob",
        name: "_feeCollectorJob",
        type: "address",
      },
    ],
    name: "FeeCollectorJobChanged",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: "contract IFeeManager",
        name: "_feeManager",
        type: "address",
      },
    ],
    name: "FeeManagerChanged",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: "contract ILockManagerFactory",
        name: "_lockManagerFactory",
        type: "address",
      },
    ],
    name: "LockManagerFactoryChanged",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: "uint256",
        name: "_minEthAmount",
        type: "uint256",
      },
    ],
    name: "MinEthAmountChanged",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: "address",
        name: "_owner",
        type: "address",
      },
    ],
    name: "OwnerChanged",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: "address",
        name: "_owner",
        type: "address",
      },
    ],
    name: "OwnerNominated",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: "contract IPoolManager",
        name: "_poolManager",
        type: "address",
      },
    ],
    name: "PoolManagerCreated",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: "address",
        name: "_poolManagerMigrator",
        type: "address",
      },
    ],
    name: "PoolManagerMigratorChanged",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: "contract IPriceOracle",
        name: "_priceOracle",
        type: "address",
      },
    ],
    name: "PriceOracleChanged",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: "contract IStrategy",
        name: "_strategy",
        type: "address",
      },
    ],
    name: "StrategyChanged",
    type: "event",
  },
  {
    inputs: [],
    name: "FACTORY_SETTER_ROLE",
    outputs: [
      {
        internalType: "bytes32",
        name: "",
        type: "bytes32",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "FEE_COLLECTOR_SETTER_ROLE",
    outputs: [
      {
        internalType: "bytes32",
        name: "",
        type: "bytes32",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "FEE_MANAGER_SETTER_ROLE",
    outputs: [
      {
        internalType: "bytes32",
        name: "",
        type: "bytes32",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "MIGRATOR_SETTER_ROLE",
    outputs: [
      {
        internalType: "bytes32",
        name: "",
        type: "bytes32",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "MIN_ETH_AMOUNT_SETTER_ROLE",
    outputs: [
      {
        internalType: "bytes32",
        name: "",
        type: "bytes32",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "POOL_MANAGER_BYTECODE_HASH",
    outputs: [
      {
        internalType: "bytes32",
        name: "_poolManagerBytecodeHash",
        type: "bytes32",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "POOL_MANAGER_DEPLOYER",
    outputs: [
      {
        internalType: "contract IPoolManagerDeployer",
        name: "_poolManagerDeployer",
        type: "address",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "PRICE_ORACLE_SETTER_ROLE",
    outputs: [
      {
        internalType: "bytes32",
        name: "",
        type: "bytes32",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "STRATEGY_SETTER_ROLE",
    outputs: [
      {
        internalType: "bytes32",
        name: "",
        type: "bytes32",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "WETH",
    outputs: [
      {
        internalType: "contract IERC20",
        name: "_weth",
        type: "address",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "acceptOwnership",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint256",
        name: "_index",
        type: "uint256",
      },
    ],
    name: "children",
    outputs: [
      {
        internalType: "contract IPoolManager",
        name: "_poolManager",
        type: "address",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "childrenCount",
    outputs: [
      {
        internalType: "uint256",
        name: "_childrenCount",
        type: "uint256",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "constructorArguments",
    outputs: [
      {
        internalType: "contract IERC20",
        name: "otherToken",
        type: "address",
      },
      {
        internalType: "contract IFeeManager",
        name: "feeManager",
        type: "address",
      },
      {
        internalType: "contract IPriceOracle",
        name: "priceOracle",
        type: "address",
      },
      {
        internalType: "address",
        name: "owner",
        type: "address",
      },
      {
        internalType: "uint24",
        name: "fee",
        type: "uint24",
      },
      {
        internalType: "uint160",
        name: "sqrtPriceX96",
        type: "uint160",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "contract IERC20",
        name: "_token",
        type: "address",
      },
      {
        internalType: "uint24",
        name: "_fee",
        type: "uint24",
      },
      {
        internalType: "uint128",
        name: "_liquidity",
        type: "uint128",
      },
      {
        internalType: "uint160",
        name: "_sqrtPriceX96",
        type: "uint160",
      },
    ],
    name: "createPoolManager",
    outputs: [
      {
        internalType: "contract IPoolManager",
        name: "_poolManager",
        type: "address",
      },
    ],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "contract IERC20",
        name: "_token",
        type: "address",
      },
    ],
    name: "defaultTokenFee",
    outputs: [
      {
        internalType: "uint24",
        name: "_fee",
        type: "uint24",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "feeCollectorJob",
    outputs: [
      {
        internalType: "contract IFeeCollectorJob",
        name: "_feeCollectorJob",
        type: "address",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "feeManager",
    outputs: [
      {
        internalType: "contract IFeeManager",
        name: "_feeManager",
        type: "address",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "contract IERC20",
        name: "_token",
        type: "address",
      },
      {
        internalType: "uint24",
        name: "_fee",
        type: "uint24",
      },
    ],
    name: "getPoolManagerAddress",
    outputs: [
      {
        internalType: "contract IPoolManager",
        name: "_theoreticalPoolManagerAddress",
        type: "address",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "contract IERC20",
        name: "_token",
        type: "address",
      },
      {
        internalType: "uint24[]",
        name: "_feeTiers",
        type: "uint24[]",
      },
    ],
    name: "getPoolManagers",
    outputs: [
      {
        internalType: "address[]",
        name: "_poolManagerAddresses",
        type: "address[]",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "contract IERC20",
        name: "_token",
        type: "address",
      },
      {
        internalType: "uint24",
        name: "_fee",
        type: "uint24",
      },
    ],
    name: "getWethPoolAddress",
    outputs: [
      {
        internalType: "contract IUniswapV3Pool",
        name: "_theoreticalAddress",
        type: "address",
      },
      {
        internalType: "bool",
        name: "_isWethToken0",
        type: "bool",
      },
    ],
    stateMutability: "pure",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "contract IPoolManager",
        name: "_poolManager",
        type: "address",
      },
    ],
    name: "isChild",
    outputs: [
      {
        internalType: "bool",
        name: "_isChild",
        type: "bool",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "contract IUniswapV3Pool",
        name: "_pool",
        type: "address",
      },
    ],
    name: "isSupportedPool",
    outputs: [
      {
        internalType: "bool",
        name: "_isSupportedPool",
        type: "bool",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "contract IERC20",
        name: "_token",
        type: "address",
      },
    ],
    name: "isSupportedToken",
    outputs: [
      {
        internalType: "bool",
        name: "_isValid",
        type: "bool",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "contract IERC20",
        name: "_tokenA",
        type: "address",
      },
      {
        internalType: "contract IERC20",
        name: "_tokenB",
        type: "address",
      },
    ],
    name: "isSupportedTokenPair",
    outputs: [
      {
        internalType: "bool",
        name: "_isSupported",
        type: "bool",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint256",
        name: "_startFrom",
        type: "uint256",
      },
      {
        internalType: "uint256",
        name: "_amount",
        type: "uint256",
      },
    ],
    name: "listChildren",
    outputs: [
      {
        internalType: "contract IPoolManager[]",
        name: "_list",
        type: "address[]",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "lockManagerFactory",
    outputs: [
      {
        internalType: "contract ILockManagerFactory",
        name: "_lockManagerFactory",
        type: "address",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "minEthAmount",
    outputs: [
      {
        internalType: "uint256",
        name: "_minEthAmount",
        type: "uint256",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "_newOwner",
        type: "address",
      },
    ],
    name: "nominateOwner",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [],
    name: "owner",
    outputs: [
      {
        internalType: "address",
        name: "_owner",
        type: "address",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "pendingOwner",
    outputs: [
      {
        internalType: "address",
        name: "_pendingOwner",
        type: "address",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "poolManagerMigrator",
    outputs: [
      {
        internalType: "address",
        name: "_poolManagerMigrator",
        type: "address",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "contract IUniswapV3Pool",
        name: "_pool",
        type: "address",
      },
    ],
    name: "poolManagers",
    outputs: [
      {
        internalType: "contract IPoolManager",
        name: "_poolManager",
        type: "address",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "priceOracle",
    outputs: [
      {
        internalType: "contract IPriceOracle",
        name: "_priceOracle",
        type: "address",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "contract IERC20",
        name: "_token",
        type: "address",
      },
      {
        internalType: "uint24",
        name: "_fee",
        type: "uint24",
      },
    ],
    name: "setDefaultTokenFee",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "contract IFeeCollectorJob",
        name: "_feeCollectorJob",
        type: "address",
      },
    ],
    name: "setFeeCollectorJob",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "contract IFeeManager",
        name: "_feeManager",
        type: "address",
      },
    ],
    name: "setFeeManager",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "contract ILockManagerFactory",
        name: "_lockManagerFactory",
        type: "address",
      },
    ],
    name: "setLockManagerFactory",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint256",
        name: "_minEthAmount",
        type: "uint256",
      },
    ],
    name: "setMinEthAmount",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "_poolManagerMigrator",
        type: "address",
      },
    ],
    name: "setPoolManagerMigrator",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "contract IPriceOracle",
        name: "_priceOracle",
        type: "address",
      },
    ],
    name: "setPriceOracle",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "contract IStrategy",
        name: "_strategy",
        type: "address",
      },
    ],
    name: "setStrategy",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [],
    name: "strategy",
    outputs: [
      {
        internalType: "contract IStrategy",
        name: "_strategy",
        type: "address",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "contract IERC20",
        name: "_token",
        type: "address",
      },
    ],
    name: "tokenFees",
    outputs: [
      {
        internalType: "uint24[]",
        name: "_fees",
        type: "uint24[]",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
];

export class IPoolManagerFactory__factory {
  static readonly abi = _abi;
  static createInterface(): IPoolManagerFactoryInterface {
    return new utils.Interface(_abi) as IPoolManagerFactoryInterface;
  }
  static connect(
    address: string,
    signerOrProvider: Signer | Provider
  ): IPoolManagerFactory {
    return new Contract(address, _abi, signerOrProvider) as IPoolManagerFactory;
  }
}
