/* 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 InitializableUpgradeabilityProxyInterface extends Interface {
  functions: {
    initialize: TypedFunctionDescription<{
      encode([_logic, _data]: [string, Arrayish]): string;
    }>;
  };

  events: {
    Upgraded: TypedEventDescription<{
      encodeTopics([implementation]: [string | null]): string[];
    }>;
  };
}

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

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

  interface: InitializableUpgradeabilityProxyInterface;

  functions: {
    initialize(
      _logic: string,
      _data: Arrayish,
      overrides?: TransactionOverrides
    ): Promise<ContractTransaction>;
  };

  initialize(
    _logic: string,
    _data: Arrayish,
    overrides?: TransactionOverrides
  ): Promise<ContractTransaction>;

  filters: {
    Upgraded(implementation: string | null): EventFilter;
  };

  estimate: {
    initialize(_logic: string, _data: Arrayish): Promise<BigNumber>;
  };
}