/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import { Contract, ContractFactory, ContractTransactionResponse, Interface } from 'ethers'
import type { Signer, ContractDeployTransaction, ContractRunner } from 'ethers'
import type { NonPayableOverrides } from '../../../common'
import type { EpochManagerMock, EpochManagerMockInterface } from '../../../contracts/mocks/EpochManagerMock'

const _abi = [
  {
    inputs: [
      {
        internalType: 'uint256',
        name: 'block_',
        type: 'uint256',
      },
    ],
    name: 'blockHash',
    outputs: [
      {
        internalType: 'bytes32',
        name: '',
        type: 'bytes32',
      },
    ],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [],
    name: 'blockNum',
    outputs: [
      {
        internalType: 'uint256',
        name: '',
        type: 'uint256',
      },
    ],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [],
    name: 'currentEpoch',
    outputs: [
      {
        internalType: 'uint256',
        name: '',
        type: 'uint256',
      },
    ],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [],
    name: 'currentEpochBlock',
    outputs: [
      {
        internalType: 'uint256',
        name: '',
        type: 'uint256',
      },
    ],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [],
    name: 'currentEpochBlockSinceStart',
    outputs: [
      {
        internalType: 'uint256',
        name: '',
        type: 'uint256',
      },
    ],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [],
    name: 'epochLength',
    outputs: [
      {
        internalType: 'uint256',
        name: '',
        type: 'uint256',
      },
    ],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [
      {
        internalType: 'uint256',
        name: 'epoch_',
        type: 'uint256',
      },
    ],
    name: 'epochsSince',
    outputs: [
      {
        internalType: 'uint256',
        name: '',
        type: 'uint256',
      },
    ],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [],
    name: 'epochsSinceUpdate',
    outputs: [
      {
        internalType: 'uint256',
        name: '',
        type: 'uint256',
      },
    ],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [],
    name: 'isCurrentEpochRun',
    outputs: [
      {
        internalType: 'bool',
        name: '',
        type: 'bool',
      },
    ],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [],
    name: 'lastLengthUpdateBlock',
    outputs: [
      {
        internalType: 'uint256',
        name: '',
        type: 'uint256',
      },
    ],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [],
    name: 'lastLengthUpdateEpoch',
    outputs: [
      {
        internalType: 'uint256',
        name: '',
        type: 'uint256',
      },
    ],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [],
    name: 'lastRunEpoch',
    outputs: [
      {
        internalType: 'uint256',
        name: '',
        type: 'uint256',
      },
    ],
    stateMutability: 'view',
    type: 'function',
  },
  {
    inputs: [],
    name: 'runEpoch',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
  {
    inputs: [
      {
        internalType: 'uint256',
        name: 'epochLength_',
        type: 'uint256',
      },
    ],
    name: 'setEpochLength',
    outputs: [],
    stateMutability: 'nonpayable',
    type: 'function',
  },
] as const

const _bytecode =
  '0x6080604052348015600f57600080fd5b506103038061001f6000396000f3fe608060405234801561001057600080fd5b50600436106100ba5760003560e01c806319c3b82d146100bf5780631b28126d146100da5780631ce05d38146100ed57806354eea7961461010557806357d775f814610123578063766718081461012c57806385df51fd146101345780638ae63d6d14610146578063ab93122c1461014c578063b4146a0b14610154578063c46e58eb1461015d578063cc65149b14610165578063d0cfa46e1461016e578063faa1a23c14610176575b600080fd5b6100c761017f565b6040519081526020015b60405180910390f35b6100c76100e8366004610239565b61019f565b6100f56101cb565b60405190151581526020016100d1565b610121610113366004610239565b600160025543600355600055565b005b6100c760005481565b6100c76101de565b6100c7610142366004610239565b4090565b436100c7565b6100c76101f5565b6100c760025481565b610121610218565b6100c760035481565b6100c7610225565b6100c760015481565b600080546003546101909043610268565b61019a9190610281565b905090565b6000806101aa6101de565b90508083106101ba5760006101c4565b6101c48382610268565b9392505050565b60006101d56101de565b60015414905090565b60006101e861017f565b60025461019a91906102a3565b6000805461020161017f565b61020b91906102b6565b60035461019a91906102a3565b6102206101de565b600155565b600061022f6101f5565b61019a9043610268565b60006020828403121561024b57600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561027b5761027b610252565b92915050565b60008261029e57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561027b5761027b610252565b808202811582820484141761027b5761027b61025256fea26469706673582212206c47be44e13d18fc4f9c0d01b2cf2e8951216b5ab005c8eba71964b951dca1c164736f6c634300081b0033'

type EpochManagerMockConstructorParams = [signer?: Signer] | ConstructorParameters<typeof ContractFactory>

const isSuperArgs = (xs: EpochManagerMockConstructorParams): xs is ConstructorParameters<typeof ContractFactory> =>
  xs.length > 1

export class EpochManagerMock__factory extends ContractFactory {
  constructor(...args: EpochManagerMockConstructorParams) {
    if (isSuperArgs(args)) {
      super(...args)
    } else {
      super(_abi, _bytecode, args[0])
    }
  }

  override getDeployTransaction(
    overrides?: NonPayableOverrides & { from?: string },
  ): Promise<ContractDeployTransaction> {
    return super.getDeployTransaction(overrides || {})
  }
  override deploy(overrides?: NonPayableOverrides & { from?: string }) {
    return super.deploy(overrides || {}) as Promise<
      EpochManagerMock & {
        deploymentTransaction(): ContractTransactionResponse
      }
    >
  }
  override connect(runner: ContractRunner | null): EpochManagerMock__factory {
    return super.connect(runner) as EpochManagerMock__factory
  }

  static readonly bytecode = _bytecode
  static readonly abi = _abi
  static createInterface(): EpochManagerMockInterface {
    return new Interface(_abi) as EpochManagerMockInterface
  }
  static connect(address: string, runner?: ContractRunner | null): EpochManagerMock {
    return new Contract(address, _abi, runner) as unknown as EpochManagerMock
  }
}
