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

import { ethers } from "ethers";
import {
  FactoryOptions,
  HardhatEthersHelpers as HardhatEthersHelpersBase,
} from "@nomiclabs/hardhat-ethers/types";

import * as Contracts from ".";

declare module "hardhat/types/runtime" {
  interface HardhatEthersHelpers extends HardhatEthersHelpersBase {
    getContractFactory(
      name: "Ownable",
      signerOrOptions?: ethers.Signer | FactoryOptions
    ): Promise<Contracts.Ownable__factory>;
    getContractFactory(
      name: "ERC20",
      signerOrOptions?: ethers.Signer | FactoryOptions
    ): Promise<Contracts.ERC20__factory>;
    getContractFactory(
      name: "IERC20",
      signerOrOptions?: ethers.Signer | FactoryOptions
    ): Promise<Contracts.IERC20__factory>;
    getContractFactory(
      name: "ITokenGateway",
      signerOrOptions?: ethers.Signer | FactoryOptions
    ): Promise<Contracts.ITokenGateway__factory>;
    getContractFactory(
      name: "GraphTokenDistributor",
      signerOrOptions?: ethers.Signer | FactoryOptions
    ): Promise<Contracts.GraphTokenDistributor__factory>;
    getContractFactory(
      name: "GraphTokenLock",
      signerOrOptions?: ethers.Signer | FactoryOptions
    ): Promise<Contracts.GraphTokenLock__factory>;
    getContractFactory(
      name: "GraphTokenLockManager",
      signerOrOptions?: ethers.Signer | FactoryOptions
    ): Promise<Contracts.GraphTokenLockManager__factory>;
    getContractFactory(
      name: "GraphTokenLockSimple",
      signerOrOptions?: ethers.Signer | FactoryOptions
    ): Promise<Contracts.GraphTokenLockSimple__factory>;
    getContractFactory(
      name: "GraphTokenLockWallet",
      signerOrOptions?: ethers.Signer | FactoryOptions
    ): Promise<Contracts.GraphTokenLockWallet__factory>;
    getContractFactory(
      name: "ICallhookReceiver",
      signerOrOptions?: ethers.Signer | FactoryOptions
    ): Promise<Contracts.ICallhookReceiver__factory>;
    getContractFactory(
      name: "IGraphTokenLock",
      signerOrOptions?: ethers.Signer | FactoryOptions
    ): Promise<Contracts.IGraphTokenLock__factory>;
    getContractFactory(
      name: "IGraphTokenLockManager",
      signerOrOptions?: ethers.Signer | FactoryOptions
    ): Promise<Contracts.IGraphTokenLockManager__factory>;
    getContractFactory(
      name: "L1GraphTokenLockTransferTool",
      signerOrOptions?: ethers.Signer | FactoryOptions
    ): Promise<Contracts.L1GraphTokenLockTransferTool__factory>;
    getContractFactory(
      name: "L2GraphTokenLockManager",
      signerOrOptions?: ethers.Signer | FactoryOptions
    ): Promise<Contracts.L2GraphTokenLockManager__factory>;
    getContractFactory(
      name: "L2GraphTokenLockTransferTool",
      signerOrOptions?: ethers.Signer | FactoryOptions
    ): Promise<Contracts.L2GraphTokenLockTransferTool__factory>;
    getContractFactory(
      name: "L2GraphTokenLockWallet",
      signerOrOptions?: ethers.Signer | FactoryOptions
    ): Promise<Contracts.L2GraphTokenLockWallet__factory>;
    getContractFactory(
      name: "MinimalProxyFactory",
      signerOrOptions?: ethers.Signer | FactoryOptions
    ): Promise<Contracts.MinimalProxyFactory__factory>;
    getContractFactory(
      name: "Ownable",
      signerOrOptions?: ethers.Signer | FactoryOptions
    ): Promise<Contracts.Ownable__factory>;
    getContractFactory(
      name: "IBridge",
      signerOrOptions?: ethers.Signer | FactoryOptions
    ): Promise<Contracts.IBridge__factory>;
    getContractFactory(
      name: "IInbox",
      signerOrOptions?: ethers.Signer | FactoryOptions
    ): Promise<Contracts.IInbox__factory>;
    getContractFactory(
      name: "IMessageProvider",
      signerOrOptions?: ethers.Signer | FactoryOptions
    ): Promise<Contracts.IMessageProvider__factory>;
    getContractFactory(
      name: "BridgeMock",
      signerOrOptions?: ethers.Signer | FactoryOptions
    ): Promise<Contracts.BridgeMock__factory>;
    getContractFactory(
      name: "GraphTokenMock",
      signerOrOptions?: ethers.Signer | FactoryOptions
    ): Promise<Contracts.GraphTokenMock__factory>;
    getContractFactory(
      name: "InboxMock",
      signerOrOptions?: ethers.Signer | FactoryOptions
    ): Promise<Contracts.InboxMock__factory>;
    getContractFactory(
      name: "L1TokenGatewayMock",
      signerOrOptions?: ethers.Signer | FactoryOptions
    ): Promise<Contracts.L1TokenGatewayMock__factory>;
    getContractFactory(
      name: "L2TokenGatewayMock",
      signerOrOptions?: ethers.Signer | FactoryOptions
    ): Promise<Contracts.L2TokenGatewayMock__factory>;
    getContractFactory(
      name: "StakingMock",
      signerOrOptions?: ethers.Signer | FactoryOptions
    ): Promise<Contracts.StakingMock__factory>;
    getContractFactory(
      name: "WalletMock",
      signerOrOptions?: ethers.Signer | FactoryOptions
    ): Promise<Contracts.WalletMock__factory>;

    getContractAt(
      name: "Ownable",
      address: string,
      signer?: ethers.Signer
    ): Promise<Contracts.Ownable>;
    getContractAt(
      name: "ERC20",
      address: string,
      signer?: ethers.Signer
    ): Promise<Contracts.ERC20>;
    getContractAt(
      name: "IERC20",
      address: string,
      signer?: ethers.Signer
    ): Promise<Contracts.IERC20>;
    getContractAt(
      name: "ITokenGateway",
      address: string,
      signer?: ethers.Signer
    ): Promise<Contracts.ITokenGateway>;
    getContractAt(
      name: "GraphTokenDistributor",
      address: string,
      signer?: ethers.Signer
    ): Promise<Contracts.GraphTokenDistributor>;
    getContractAt(
      name: "GraphTokenLock",
      address: string,
      signer?: ethers.Signer
    ): Promise<Contracts.GraphTokenLock>;
    getContractAt(
      name: "GraphTokenLockManager",
      address: string,
      signer?: ethers.Signer
    ): Promise<Contracts.GraphTokenLockManager>;
    getContractAt(
      name: "GraphTokenLockSimple",
      address: string,
      signer?: ethers.Signer
    ): Promise<Contracts.GraphTokenLockSimple>;
    getContractAt(
      name: "GraphTokenLockWallet",
      address: string,
      signer?: ethers.Signer
    ): Promise<Contracts.GraphTokenLockWallet>;
    getContractAt(
      name: "ICallhookReceiver",
      address: string,
      signer?: ethers.Signer
    ): Promise<Contracts.ICallhookReceiver>;
    getContractAt(
      name: "IGraphTokenLock",
      address: string,
      signer?: ethers.Signer
    ): Promise<Contracts.IGraphTokenLock>;
    getContractAt(
      name: "IGraphTokenLockManager",
      address: string,
      signer?: ethers.Signer
    ): Promise<Contracts.IGraphTokenLockManager>;
    getContractAt(
      name: "L1GraphTokenLockTransferTool",
      address: string,
      signer?: ethers.Signer
    ): Promise<Contracts.L1GraphTokenLockTransferTool>;
    getContractAt(
      name: "L2GraphTokenLockManager",
      address: string,
      signer?: ethers.Signer
    ): Promise<Contracts.L2GraphTokenLockManager>;
    getContractAt(
      name: "L2GraphTokenLockTransferTool",
      address: string,
      signer?: ethers.Signer
    ): Promise<Contracts.L2GraphTokenLockTransferTool>;
    getContractAt(
      name: "L2GraphTokenLockWallet",
      address: string,
      signer?: ethers.Signer
    ): Promise<Contracts.L2GraphTokenLockWallet>;
    getContractAt(
      name: "MinimalProxyFactory",
      address: string,
      signer?: ethers.Signer
    ): Promise<Contracts.MinimalProxyFactory>;
    getContractAt(
      name: "Ownable",
      address: string,
      signer?: ethers.Signer
    ): Promise<Contracts.Ownable>;
    getContractAt(
      name: "IBridge",
      address: string,
      signer?: ethers.Signer
    ): Promise<Contracts.IBridge>;
    getContractAt(
      name: "IInbox",
      address: string,
      signer?: ethers.Signer
    ): Promise<Contracts.IInbox>;
    getContractAt(
      name: "IMessageProvider",
      address: string,
      signer?: ethers.Signer
    ): Promise<Contracts.IMessageProvider>;
    getContractAt(
      name: "BridgeMock",
      address: string,
      signer?: ethers.Signer
    ): Promise<Contracts.BridgeMock>;
    getContractAt(
      name: "GraphTokenMock",
      address: string,
      signer?: ethers.Signer
    ): Promise<Contracts.GraphTokenMock>;
    getContractAt(
      name: "InboxMock",
      address: string,
      signer?: ethers.Signer
    ): Promise<Contracts.InboxMock>;
    getContractAt(
      name: "L1TokenGatewayMock",
      address: string,
      signer?: ethers.Signer
    ): Promise<Contracts.L1TokenGatewayMock>;
    getContractAt(
      name: "L2TokenGatewayMock",
      address: string,
      signer?: ethers.Signer
    ): Promise<Contracts.L2TokenGatewayMock>;
    getContractAt(
      name: "StakingMock",
      address: string,
      signer?: ethers.Signer
    ): Promise<Contracts.StakingMock>;
    getContractAt(
      name: "WalletMock",
      address: string,
      signer?: ethers.Signer
    ): Promise<Contracts.WalletMock>;

    // default types
    getContractFactory(
      name: string,
      signerOrOptions?: ethers.Signer | FactoryOptions
    ): Promise<ethers.ContractFactory>;
    getContractFactory(
      abi: any[],
      bytecode: ethers.utils.BytesLike,
      signer?: ethers.Signer
    ): Promise<ethers.ContractFactory>;
    getContractAt(
      nameOrAbi: string | any[],
      address: string,
      signer?: ethers.Signer
    ): Promise<ethers.Contract>;
  }
}
