/* Generated by ts-generator ver. 0.0.8 */
/* tslint:disable */

import { Contract, ContractTransaction, EventFilter, Signer } from "ethers";
import { Listener, Provider } from "ethers/providers";
import { Arrayish, BigNumber, BigNumberish, Interface } from "ethers/utils";
import {
  TransactionOverrides,
  TypedEventDescription,
  TypedFunctionDescription
} from ".";

interface AggregatorV3InterfaceInterface extends Interface {
  functions: {
    getRoundData: TypedFunctionDescription<{
      encode([_roundId]: [BigNumberish]): string;
    }>;

    decimals: TypedFunctionDescription<{ encode([]: []): string }>;

    version: TypedFunctionDescription<{ encode([]: []): string }>;

    description: TypedFunctionDescription<{ encode([]: []): string }>;

    latestRoundData: TypedFunctionDescription<{ encode([]: []): string }>;
  };

  events: {};
}

export class AggregatorV3Interface extends Contract {
  connect(signerOrProvider: Signer | Provider | string): AggregatorV3Interface;
  attach(addressOrName: string): AggregatorV3Interface;
  deployed(): Promise<AggregatorV3Interface>;

  on(event: EventFilter | string, listener: Listener): AggregatorV3Interface;
  once(event: EventFilter | string, listener: Listener): AggregatorV3Interface;
  addListener(
    eventName: EventFilter | string,
    listener: Listener
  ): AggregatorV3Interface;
  removeAllListeners(eventName: EventFilter | string): AggregatorV3Interface;
  removeListener(eventName: any, listener: Listener): AggregatorV3Interface;

  interface: AggregatorV3InterfaceInterface;

  functions: {
    getRoundData(
      _roundId: BigNumberish
    ): Promise<{
      roundId: BigNumber;
      answer: BigNumber;
      startedAt: BigNumber;
      updatedAt: BigNumber;
      answeredInRound: BigNumber;
      0: BigNumber;
      1: BigNumber;
      2: BigNumber;
      3: BigNumber;
      4: BigNumber;
    }>;

    decimals(): Promise<number>;

    version(): Promise<BigNumber>;

    description(): Promise<string>;

    latestRoundData(): Promise<{
      roundId: BigNumber;
      answer: BigNumber;
      startedAt: BigNumber;
      updatedAt: BigNumber;
      answeredInRound: BigNumber;
      0: BigNumber;
      1: BigNumber;
      2: BigNumber;
      3: BigNumber;
      4: BigNumber;
    }>;
  };

  getRoundData(
    _roundId: BigNumberish
  ): Promise<{
    roundId: BigNumber;
    answer: BigNumber;
    startedAt: BigNumber;
    updatedAt: BigNumber;
    answeredInRound: BigNumber;
    0: BigNumber;
    1: BigNumber;
    2: BigNumber;
    3: BigNumber;
    4: BigNumber;
  }>;

  decimals(): Promise<number>;

  version(): Promise<BigNumber>;

  description(): Promise<string>;

  latestRoundData(): Promise<{
    roundId: BigNumber;
    answer: BigNumber;
    startedAt: BigNumber;
    updatedAt: BigNumber;
    answeredInRound: BigNumber;
    0: BigNumber;
    1: BigNumber;
    2: BigNumber;
    3: BigNumber;
    4: BigNumber;
  }>;

  filters: {};

  estimate: {
    getRoundData(_roundId: BigNumberish): Promise<BigNumber>;

    decimals(): Promise<BigNumber>;

    version(): Promise<BigNumber>;

    description(): Promise<BigNumber>;

    latestRoundData(): Promise<BigNumber>;
  };
}
