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

import type BN from "bn.js";
import type { ContractOptions } from "web3-eth-contract";
import type { EventLog } from "web3-core";
import type { EventEmitter } from "events";
import type {
  Callback,
  PayableTransactionObject,
  NonPayableTransactionObject,
  BlockType,
  ContractEventLog,
  BaseContract,
} from "./types";

export interface EventOptions {
  filter?: object;
  fromBlock?: BlockType;
  topics?: string[];
}

export type CardinalityJobSet = ContractEventLog<{
  _cardinalityJob: string;
  0: string;
}>;
export type FeesDeposited = ContractEventLog<{
  _poolManager: string;
  _wethFees: string;
  _tokenFees: string;
  _wethForMaintenance: string;
  _wethForCardinality: string;
  0: string;
  1: string;
  2: string;
  3: string;
  4: string;
}>;
export type MaintenanceGovernanceChanged = ContractEventLog<{
  _maintenanceGovernance: string;
  0: string;
}>;
export type Migrated = ContractEventLog<{
  _poolManager: string;
  _oldFeeManager: string;
  _newFeeManager: string;
  0: string;
  1: string;
  2: string;
}>;
export type SwapGasCostMultiplierChanged = ContractEventLog<{
  _swapGasCostMultiplier: string;
  0: string;
}>;
export type WethForCardinalityChanged = ContractEventLog<{
  _wethForCardinality: string;
  0: string;
}>;
export type WethForMaintenanceChanged = ContractEventLog<{
  _wethForMaintenance: string;
  0: string;
}>;

export interface IFeeManager extends BaseContract {
  constructor(
    jsonInterface: any[],
    address?: string,
    options?: ContractOptions
  ): IFeeManager;
  clone(): IFeeManager;
  methods: {
    POOL_MANAGER_FACTORY(): NonPayableTransactionObject<string>;

    WETH(): NonPayableTransactionObject<string>;

    cardinalityJob(): NonPayableTransactionObject<string>;

    depositFromLockManager(
      _wethFees: number | string | BN,
      _tokenFees: number | string | BN
    ): NonPayableTransactionObject<void>;

    depositFromPoolManager(
      _wethFees: number | string | BN,
      _tokenFees: number | string | BN
    ): NonPayableTransactionObject<void>;

    fullRangeCallback(
      _pool: string,
      _token: string,
      _neededWeth: number | string | BN,
      _neededToken: number | string | BN
    ): NonPayableTransactionObject<void>;

    getMaxCardinalityForPool(
      _poolManager: string
    ): NonPayableTransactionObject<string>;

    increaseCardinality(
      _poolManager: string,
      _weth: number | string | BN,
      _cardinality: number | string | BN
    ): NonPayableTransactionObject<void>;

    increaseFullRangePosition(
      _pool: string,
      _token: string,
      _neededWeth: number | string | BN,
      _neededToken: number | string | BN,
      _isWethToken0: boolean
    ): NonPayableTransactionObject<void>;

    maintenanceGovernance(): NonPayableTransactionObject<string>;

    migrateFrom(
      _poolManager: string,
      _poolCardinality: [
        number | string | BN,
        number | string | BN,
        number | string | BN
      ],
      _poolManagerDeposits: [number | string | BN, number | string | BN],
      _poolDistributionFees: [
        number | string | BN,
        number | string | BN,
        boolean
      ]
    ): NonPayableTransactionObject<void>;

    migrateTo(_newFeeManager: string): NonPayableTransactionObject<void>;

    poolCardinality(_poolManager: string): NonPayableTransactionObject<{
      weth: string;
      currentMax: string;
      customMax: string;
      0: string;
      1: string;
      2: string;
    }>;

    poolCardinalityMax(): NonPayableTransactionObject<string>;

    poolDistribution(_poolManager: string): NonPayableTransactionObject<{
      wethForMaintenance: string;
      wethForCardinality: string;
      isInitialized: boolean;
      0: string;
      1: string;
      2: boolean;
    }>;

    poolManagerDeposits(_poolManager: string): NonPayableTransactionObject<{
      wethForFullRange: string;
      tokenForFullRange: string;
      0: string;
      1: string;
    }>;

    setCardinalityJob(
      _cardinalityJob: string
    ): NonPayableTransactionObject<void>;

    setMaintenanceGovernance(
      _maintenanceGovernance: string
    ): NonPayableTransactionObject<void>;

    setPoolCardinalityMax(
      _poolCardinalityMax: number | string | BN
    ): NonPayableTransactionObject<void>;

    setPoolCardinalityTarget(
      _poolManager: string,
      _cardinality: number | string | BN
    ): NonPayableTransactionObject<void>;

    setSwapGasCostMultiplier(
      _swapGasCostMultiplier: number | string | BN
    ): NonPayableTransactionObject<void>;

    setWethForCardinality(
      _poolManager: string,
      _wethForCardinality: number | string | BN
    ): NonPayableTransactionObject<void>;

    setWethForMaintenance(
      _poolManager: string,
      _wethForMaintenance: number | string | BN
    ): NonPayableTransactionObject<void>;

    swapGasCostMultiplier(): NonPayableTransactionObject<string>;

    uniswapV3SwapCallback(
      _amount0Delta: number | string | BN,
      _amount1Delta: number | string | BN,
      _data: string | number[]
    ): NonPayableTransactionObject<void>;
  };
  events: {
    CardinalityJobSet(cb?: Callback<CardinalityJobSet>): EventEmitter;
    CardinalityJobSet(
      options?: EventOptions,
      cb?: Callback<CardinalityJobSet>
    ): EventEmitter;

    FeesDeposited(cb?: Callback<FeesDeposited>): EventEmitter;
    FeesDeposited(
      options?: EventOptions,
      cb?: Callback<FeesDeposited>
    ): EventEmitter;

    MaintenanceGovernanceChanged(
      cb?: Callback<MaintenanceGovernanceChanged>
    ): EventEmitter;
    MaintenanceGovernanceChanged(
      options?: EventOptions,
      cb?: Callback<MaintenanceGovernanceChanged>
    ): EventEmitter;

    Migrated(cb?: Callback<Migrated>): EventEmitter;
    Migrated(options?: EventOptions, cb?: Callback<Migrated>): EventEmitter;

    SwapGasCostMultiplierChanged(
      cb?: Callback<SwapGasCostMultiplierChanged>
    ): EventEmitter;
    SwapGasCostMultiplierChanged(
      options?: EventOptions,
      cb?: Callback<SwapGasCostMultiplierChanged>
    ): EventEmitter;

    WethForCardinalityChanged(
      cb?: Callback<WethForCardinalityChanged>
    ): EventEmitter;
    WethForCardinalityChanged(
      options?: EventOptions,
      cb?: Callback<WethForCardinalityChanged>
    ): EventEmitter;

    WethForMaintenanceChanged(
      cb?: Callback<WethForMaintenanceChanged>
    ): EventEmitter;
    WethForMaintenanceChanged(
      options?: EventOptions,
      cb?: Callback<WethForMaintenanceChanged>
    ): EventEmitter;

    allEvents(options?: EventOptions, cb?: Callback<EventLog>): EventEmitter;
  };

  once(event: "CardinalityJobSet", cb: Callback<CardinalityJobSet>): void;
  once(
    event: "CardinalityJobSet",
    options: EventOptions,
    cb: Callback<CardinalityJobSet>
  ): void;

  once(event: "FeesDeposited", cb: Callback<FeesDeposited>): void;
  once(
    event: "FeesDeposited",
    options: EventOptions,
    cb: Callback<FeesDeposited>
  ): void;

  once(
    event: "MaintenanceGovernanceChanged",
    cb: Callback<MaintenanceGovernanceChanged>
  ): void;
  once(
    event: "MaintenanceGovernanceChanged",
    options: EventOptions,
    cb: Callback<MaintenanceGovernanceChanged>
  ): void;

  once(event: "Migrated", cb: Callback<Migrated>): void;
  once(event: "Migrated", options: EventOptions, cb: Callback<Migrated>): void;

  once(
    event: "SwapGasCostMultiplierChanged",
    cb: Callback<SwapGasCostMultiplierChanged>
  ): void;
  once(
    event: "SwapGasCostMultiplierChanged",
    options: EventOptions,
    cb: Callback<SwapGasCostMultiplierChanged>
  ): void;

  once(
    event: "WethForCardinalityChanged",
    cb: Callback<WethForCardinalityChanged>
  ): void;
  once(
    event: "WethForCardinalityChanged",
    options: EventOptions,
    cb: Callback<WethForCardinalityChanged>
  ): void;

  once(
    event: "WethForMaintenanceChanged",
    cb: Callback<WethForMaintenanceChanged>
  ): void;
  once(
    event: "WethForMaintenanceChanged",
    options: EventOptions,
    cb: Callback<WethForMaintenanceChanged>
  ): void;
}
