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

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

const _abi = [
  {
    inputs: [],
    name: "FeeManager_CardinalityExceeded",
    type: "error",
  },
  {
    inputs: [],
    name: "FeeManager_ExcessiveLiquidityLeft",
    type: "error",
  },
  {
    inputs: [],
    name: "FeeManager_InitializedPoolDistribution",
    type: "error",
  },
  {
    inputs: [
      {
        internalType: "contract ILockManager",
        name: "_lockManager",
        type: "address",
      },
    ],
    name: "FeeManager_InvalidLockManager",
    type: "error",
  },
  {
    inputs: [
      {
        internalType: "contract IFeeManager",
        name: "_feeManager",
        type: "address",
      },
    ],
    name: "FeeManager_InvalidOldFeeManager",
    type: "error",
  },
  {
    inputs: [
      {
        internalType: "contract IPoolManager",
        name: "_poolManager",
        type: "address",
      },
    ],
    name: "FeeManager_InvalidPoolManager",
    type: "error",
  },
  {
    inputs: [],
    name: "FeeManager_InvalidPoolManagerFactory",
    type: "error",
  },
  {
    inputs: [],
    name: "FeeManager_InvalidTokenLiquidity",
    type: "error",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "_sender",
        type: "address",
      },
    ],
    name: "FeeManager_InvalidUniswapPool",
    type: "error",
  },
  {
    inputs: [],
    name: "FeeManager_NonZeroCardinality",
    type: "error",
  },
  {
    inputs: [],
    name: "FeeManager_NonZeroPoolDeposits",
    type: "error",
  },
  {
    inputs: [],
    name: "FeeManager_NotCardinalityJob",
    type: "error",
  },
  {
    inputs: [],
    name: "FeeManager_SmallSwap",
    type: "error",
  },
  {
    inputs: [],
    name: "FeeManager_WethForCardinalityExceeded",
    type: "error",
  },
  {
    inputs: [],
    name: "FeeManager_WethForMaintenanceExceeded",
    type: "error",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: "contract ICardinalityJob",
        name: "_cardinalityJob",
        type: "address",
      },
    ],
    name: "CardinalityJobSet",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: "contract IPoolManager",
        name: "_poolManager",
        type: "address",
      },
      {
        indexed: false,
        internalType: "uint256",
        name: "_wethFees",
        type: "uint256",
      },
      {
        indexed: false,
        internalType: "uint256",
        name: "_tokenFees",
        type: "uint256",
      },
      {
        indexed: false,
        internalType: "uint256",
        name: "_wethForMaintenance",
        type: "uint256",
      },
      {
        indexed: false,
        internalType: "uint256",
        name: "_wethForCardinality",
        type: "uint256",
      },
    ],
    name: "FeesDeposited",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: "address",
        name: "_maintenanceGovernance",
        type: "address",
      },
    ],
    name: "MaintenanceGovernanceChanged",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: "address",
        name: "_poolManager",
        type: "address",
      },
      {
        indexed: false,
        internalType: "address",
        name: "_oldFeeManager",
        type: "address",
      },
      {
        indexed: false,
        internalType: "address",
        name: "_newFeeManager",
        type: "address",
      },
    ],
    name: "Migrated",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: "uint256",
        name: "_swapGasCostMultiplier",
        type: "uint256",
      },
    ],
    name: "SwapGasCostMultiplierChanged",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: "uint256",
        name: "_wethForCardinality",
        type: "uint256",
      },
    ],
    name: "WethForCardinalityChanged",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: "uint256",
        name: "_wethForMaintenance",
        type: "uint256",
      },
    ],
    name: "WethForMaintenanceChanged",
    type: "event",
  },
  {
    inputs: [],
    name: "POOL_MANAGER_FACTORY",
    outputs: [
      {
        internalType: "contract IPoolManagerFactory",
        name: "_poolManagerFactory",
        type: "address",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "WETH",
    outputs: [
      {
        internalType: "contract IERC20",
        name: "_weth",
        type: "address",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "cardinalityJob",
    outputs: [
      {
        internalType: "contract ICardinalityJob",
        name: "_cardinalityJob",
        type: "address",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint256",
        name: "_wethFees",
        type: "uint256",
      },
      {
        internalType: "uint256",
        name: "_tokenFees",
        type: "uint256",
      },
    ],
    name: "depositFromLockManager",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint256",
        name: "_wethFees",
        type: "uint256",
      },
      {
        internalType: "uint256",
        name: "_tokenFees",
        type: "uint256",
      },
    ],
    name: "depositFromPoolManager",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "contract IUniswapV3Pool",
        name: "_pool",
        type: "address",
      },
      {
        internalType: "contract IERC20",
        name: "_token",
        type: "address",
      },
      {
        internalType: "uint256",
        name: "_neededWeth",
        type: "uint256",
      },
      {
        internalType: "uint256",
        name: "_neededToken",
        type: "uint256",
      },
    ],
    name: "fullRangeCallback",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "contract IPoolManager",
        name: "_poolManager",
        type: "address",
      },
    ],
    name: "getMaxCardinalityForPool",
    outputs: [
      {
        internalType: "uint256",
        name: "_maxCardinality",
        type: "uint256",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "contract IPoolManager",
        name: "_poolManager",
        type: "address",
      },
      {
        internalType: "uint256",
        name: "_weth",
        type: "uint256",
      },
      {
        internalType: "uint16",
        name: "_cardinality",
        type: "uint16",
      },
    ],
    name: "increaseCardinality",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "contract IUniswapV3Pool",
        name: "_pool",
        type: "address",
      },
      {
        internalType: "contract IERC20",
        name: "_token",
        type: "address",
      },
      {
        internalType: "uint256",
        name: "_neededWeth",
        type: "uint256",
      },
      {
        internalType: "uint256",
        name: "_neededToken",
        type: "uint256",
      },
      {
        internalType: "bool",
        name: "_isWethToken0",
        type: "bool",
      },
    ],
    name: "increaseFullRangePosition",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [],
    name: "maintenanceGovernance",
    outputs: [
      {
        internalType: "address",
        name: "_maintenanceGovernance",
        type: "address",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "contract IPoolManager",
        name: "_poolManager",
        type: "address",
      },
      {
        components: [
          {
            internalType: "uint256",
            name: "weth",
            type: "uint256",
          },
          {
            internalType: "uint16",
            name: "currentMax",
            type: "uint16",
          },
          {
            internalType: "uint16",
            name: "customMax",
            type: "uint16",
          },
        ],
        internalType: "struct IFeeManager.PoolCardinality",
        name: "_poolCardinality",
        type: "tuple",
      },
      {
        components: [
          {
            internalType: "uint256",
            name: "wethForFullRange",
            type: "uint256",
          },
          {
            internalType: "uint256",
            name: "tokenForFullRange",
            type: "uint256",
          },
        ],
        internalType: "struct IFeeManager.FeeStore",
        name: "_poolManagerDeposits",
        type: "tuple",
      },
      {
        components: [
          {
            internalType: "uint256",
            name: "wethForMaintenance",
            type: "uint256",
          },
          {
            internalType: "uint256",
            name: "wethForCardinality",
            type: "uint256",
          },
          {
            internalType: "bool",
            name: "isInitialized",
            type: "bool",
          },
        ],
        internalType: "struct IFeeManager.PoolDistributionFees",
        name: "_poolDistributionFees",
        type: "tuple",
      },
    ],
    name: "migrateFrom",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "contract IFeeManager",
        name: "_newFeeManager",
        type: "address",
      },
    ],
    name: "migrateTo",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "contract IPoolManager",
        name: "_poolManager",
        type: "address",
      },
    ],
    name: "poolCardinality",
    outputs: [
      {
        internalType: "uint256",
        name: "weth",
        type: "uint256",
      },
      {
        internalType: "uint16",
        name: "currentMax",
        type: "uint16",
      },
      {
        internalType: "uint16",
        name: "customMax",
        type: "uint16",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "poolCardinalityMax",
    outputs: [
      {
        internalType: "uint16",
        name: "_poolCardinalityMax",
        type: "uint16",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "contract IPoolManager",
        name: "_poolManager",
        type: "address",
      },
    ],
    name: "poolDistribution",
    outputs: [
      {
        internalType: "uint256",
        name: "wethForMaintenance",
        type: "uint256",
      },
      {
        internalType: "uint256",
        name: "wethForCardinality",
        type: "uint256",
      },
      {
        internalType: "bool",
        name: "isInitialized",
        type: "bool",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "contract IPoolManager",
        name: "_poolManager",
        type: "address",
      },
    ],
    name: "poolManagerDeposits",
    outputs: [
      {
        internalType: "uint256",
        name: "wethForFullRange",
        type: "uint256",
      },
      {
        internalType: "uint256",
        name: "tokenForFullRange",
        type: "uint256",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "contract ICardinalityJob",
        name: "_cardinalityJob",
        type: "address",
      },
    ],
    name: "setCardinalityJob",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "_maintenanceGovernance",
        type: "address",
      },
    ],
    name: "setMaintenanceGovernance",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint16",
        name: "_poolCardinalityMax",
        type: "uint16",
      },
    ],
    name: "setPoolCardinalityMax",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "contract IPoolManager",
        name: "_poolManager",
        type: "address",
      },
      {
        internalType: "uint16",
        name: "_cardinality",
        type: "uint16",
      },
    ],
    name: "setPoolCardinalityTarget",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint256",
        name: "_swapGasCostMultiplier",
        type: "uint256",
      },
    ],
    name: "setSwapGasCostMultiplier",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "contract IPoolManager",
        name: "_poolManager",
        type: "address",
      },
      {
        internalType: "uint256",
        name: "_wethForCardinality",
        type: "uint256",
      },
    ],
    name: "setWethForCardinality",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "contract IPoolManager",
        name: "_poolManager",
        type: "address",
      },
      {
        internalType: "uint256",
        name: "_wethForMaintenance",
        type: "uint256",
      },
    ],
    name: "setWethForMaintenance",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [],
    name: "swapGasCostMultiplier",
    outputs: [
      {
        internalType: "uint256",
        name: "_swapGasCostMultiplier",
        type: "uint256",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "int256",
        name: "_amount0Delta",
        type: "int256",
      },
      {
        internalType: "int256",
        name: "_amount1Delta",
        type: "int256",
      },
      {
        internalType: "bytes",
        name: "_data",
        type: "bytes",
      },
    ],
    name: "uniswapV3SwapCallback",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
];

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