/* 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 ClaimedRewards = ContractEventLog<{
  _user: string;
  _to: string;
  _wethAmount: string;
  _tokenAmount: string;
  0: string;
  1: string;
  2: string;
  3: string;
}>;
export type FeeManagerMigrated = ContractEventLog<{
  _newFeeManager: string;
  0: string;
}>;
export type FeesCollected = ContractEventLog<{
  _totalFeeWeth: string;
  _totalFeeToken: string;
  0: string;
  1: string;
}>;
export type LockManagerDeprecated = ContractEventLog<{
  _oldLockManager: string;
  _newLockManager: string;
  0: string;
  1: string;
}>;
export type NewProposal = ContractEventLog<{
  _id: string;
  _method: string;
  _params: string;
  0: string;
  1: string;
  2: string;
}>;
export type NewVote = ContractEventLog<{
  _voter: string;
  _votes: string;
  _method: string;
  _id: string;
  0: string;
  1: string;
  2: string;
  3: string;
}>;
export type PriceOracleSet = ContractEventLog<{
  _newPriceOracle: string;
  0: string;
}>;
export type ProposalCancelled = ContractEventLog<{
  _id: string;
  _method: string;
  _params: string;
  0: string;
  1: string;
  2: string;
}>;
export type ProposalExecuted = ContractEventLog<{
  _id: string;
  _method: string;
  _params: string;
  0: string;
  1: string;
  2: string;
}>;
export type ProposalQueued = ContractEventLog<{
  _id: string;
  _method: string;
  _params: string;
  0: string;
  1: string;
  2: string;
}>;
export type RewardsAdded = ContractEventLog<{
  _wethAmount: string;
  _tokenAmount: string;
  0: string;
  1: string;
}>;
export type SeederLiquidityBurned = ContractEventLog<{
  _liquidity: string;
  0: string;
}>;
export type VoteCancelled = ContractEventLog<{
  _voter: string;
  _method: string;
  _id: string;
  0: string;
  1: string;
  2: string;
}>;

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

    IS_WETH_TOKEN0(): NonPayableTransactionObject<boolean>;

    POOL(): NonPayableTransactionObject<string>;

    POOL_MANAGER_FACTORY(): NonPayableTransactionObject<string>;

    QUORUM(): NonPayableTransactionObject<string>;

    TOKEN(): NonPayableTransactionObject<string>;

    WETH(): NonPayableTransactionObject<string>;

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

    acceptMigrate(
      _migrationContract: string
    ): NonPayableTransactionObject<void>;

    acceptPriceOracleChange(
      _newPriceOracle: string
    ): NonPayableTransactionObject<void>;

    burn(_liquidity: number | string | BN): NonPayableTransactionObject<void>;

    cancelProposal(
      _method: number | string | BN
    ): NonPayableTransactionObject<void>;

    cancelVote(
      _method: number | string | BN
    ): NonPayableTransactionObject<void>;

    claimRewards(_to: string): NonPayableTransactionObject<{
      _rewardWeth: string;
      _rewardToken: string;
      0: string;
      1: string;
    }>;

    claimable(_account: string): NonPayableTransactionObject<{
      _wethClaimable: string;
      _tokenClaimable: string;
      0: string;
      1: string;
    }>;

    collectFees(): NonPayableTransactionObject<void>;

    deprecateLockManager(): NonPayableTransactionObject<void>;

    deprecatedLockManagers(
      _index: number | string | BN
    ): NonPayableTransactionObject<string>;

    execute(
      _method: number | string | BN,
      _parameters: string | number[]
    ): NonPayableTransactionObject<void>;

    executionTimelock(): NonPayableTransactionObject<string>;

    feeManager(): NonPayableTransactionObject<string>;

    getLatest(
      _method: number | string | BN
    ): NonPayableTransactionObject<[string, string, string, boolean, string]>;

    "increaseFullRangePosition(address,uint128,uint160)"(
      _donor: string,
      _liquidity: number | string | BN,
      _sqrtPriceX96: number | string | BN
    ): NonPayableTransactionObject<void>;

    "increaseFullRangePosition(uint256,uint256)"(
      _wethAmount: number | string | BN,
      _tokenAmount: number | string | BN
    ): NonPayableTransactionObject<{
      __amountWeth: string;
      __amountToken: string;
      0: string;
      1: string;
    }>;

    isExecutable(
      _method: number | string | BN
    ): NonPayableTransactionObject<boolean>;

    lockManager(): NonPayableTransactionObject<string>;

    mintLiquidityForFullRange(
      _wethAmount: number | string | BN,
      _tokenAmount: number | string | BN
    ): NonPayableTransactionObject<void>;

    poolLiquidity(): NonPayableTransactionObject<string>;

    poolRewards(): NonPayableTransactionObject<{
      wethPerSeededLiquidity: string;
      tokenPerSeededLiquidity: string;
      0: string;
      1: string;
    }>;

    priceOracle(): NonPayableTransactionObject<string>;

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

    proposeMigrate(
      _migrationContract: string
    ): NonPayableTransactionObject<void>;

    proposePriceOracleChange(
      _newPriceOracle: string
    ): NonPayableTransactionObject<void>;

    queue(
      _method: number | string | BN,
      _parameters: string | number[]
    ): NonPayableTransactionObject<void>;

    quorumReached(
      _method: number | string | BN
    ): NonPayableTransactionObject<boolean>;

    seederBalance(_donor: string): NonPayableTransactionObject<string>;

    seederBurned(_donor: string): NonPayableTransactionObject<string>;

    seederRewards(_account: string): NonPayableTransactionObject<{
      wethPaid: string;
      tokenPaid: string;
      wethAvailable: string;
      tokenAvailable: string;
      0: string;
      1: string;
      2: string;
      3: string;
    }>;

    totalVotes(): NonPayableTransactionObject<string>;

    uniswapV3MintCallback(
      _amount0Owed: number | string | BN,
      _amount1Owed: number | string | BN,
      _data: string | number[]
    ): NonPayableTransactionObject<void>;

    votingPower(_user: string): NonPayableTransactionObject<string>;
  };
  events: {
    ClaimedRewards(cb?: Callback<ClaimedRewards>): EventEmitter;
    ClaimedRewards(
      options?: EventOptions,
      cb?: Callback<ClaimedRewards>
    ): EventEmitter;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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