/* 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 interface IPriceOracle extends BaseContract {
  constructor(
    jsonInterface: any[],
    address?: string,
    options?: ContractOptions
  ): IPriceOracle;
  clone(): IPriceOracle;
  methods: {
    POOL_MANAGER_FACTORY(): NonPayableTransactionObject<string>;

    VOLATILITY_PRECISION(): NonPayableTransactionObject<string>;

    WETH(): NonPayableTransactionObject<string>;

    isManipulated(_pool: string): NonPayableTransactionObject<boolean>;

    isPairSupported(
      _tokenA: string,
      _tokenB: string
    ): NonPayableTransactionObject<boolean>;

    quotePeriodCache(
      _baseAmount: number | string | BN,
      _tokenA: string,
      _tokenB: string,
      _period: number | string | BN,
      _cacheExpiry: number | string | BN
    ): NonPayableTransactionObject<string>;

    quoteSpot(
      _baseAmount: number | string | BN,
      _tokenA: string,
      _tokenB: string
    ): NonPayableTransactionObject<string>;

    quoteSpotPeriodProtectedVolatilityCache(
      _baseAmount: number | string | BN,
      _tokenA: string,
      _tokenB: string,
      _period: number | string | BN,
      _volatility: number | string | BN,
      _cacheExpiry: number | string | BN
    ): NonPayableTransactionObject<string>;
  };
  events: {
    allEvents(options?: EventOptions, cb?: Callback<EventLog>): EventEmitter;
  };
}
