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

import { Signer } from "ethers";
import { Provider, TransactionRequest } from "@ethersproject/providers";
import { Contract, ContractFactory, Overrides } from "@ethersproject/contracts";

import type { Factory } from "../Factory";

export class Factory__factory extends ContractFactory {
  constructor(signer?: Signer) {
    super(_abi, _bytecode, signer);
  }

  deploy(overrides?: Overrides): Promise<Factory> {
    return super.deploy(overrides || {}) as Promise<Factory>;
  }
  getDeployTransaction(overrides?: Overrides): TransactionRequest {
    return super.getDeployTransaction(overrides || {});
  }
  attach(address: string): Factory {
    return super.attach(address) as Factory;
  }
  connect(signer: Signer): Factory__factory {
    return super.connect(signer) as Factory__factory;
  }
  static connect(
    address: string,
    signerOrProvider: Signer | Provider
  ): Factory {
    return new Contract(address, _abi, signerOrProvider) as Factory;
  }
}

const _abi = [
  {
    constant: true,
    inputs: [
      {
        name: "",
        type: "address",
      },
    ],
    name: "isInstantiation",
    outputs: [
      {
        name: "",
        type: "bool",
      },
    ],
    payable: false,
    type: "function",
  },
  {
    constant: true,
    inputs: [
      {
        name: "",
        type: "address",
      },
      {
        name: "",
        type: "uint256",
      },
    ],
    name: "instantiations",
    outputs: [
      {
        name: "",
        type: "address",
      },
    ],
    payable: false,
    type: "function",
  },
  {
    constant: true,
    inputs: [
      {
        name: "creator",
        type: "address",
      },
    ],
    name: "getInstantiationCount",
    outputs: [
      {
        name: "",
        type: "uint256",
      },
    ],
    payable: false,
    type: "function",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        name: "sender",
        type: "address",
      },
      {
        indexed: false,
        name: "instantiation",
        type: "address",
      },
    ],
    name: "ContractInstantiation",
    type: "event",
  },
];

const _bytecode =
  "0x6060604052341561000f57600080fd5b5b61017e8061001f6000396000f300606060405263ffffffff60e060020a6000350416632f4f3316811461003a57806357183c821461006d5780638f838478146100ab575b600080fd5b341561004557600080fd5b610059600160a060020a03600435166100dc565b604051901515815260200160405180910390f35b341561007857600080fd5b61008f600160a060020a03600435166024356100f1565b604051600160a060020a03909116815260200160405180910390f35b34156100b657600080fd5b6100ca600160a060020a0360043516610133565b60405190815260200160405180910390f35b60006020819052908152604090205460ff1681565b60016020528160005260406000208181548110151561010c57fe5b906000526020600020900160005b915091509054906101000a9004600160a060020a031681565b600160a060020a0381166000908152600160205260409020545b9190505600a165627a7a723058206b531a088c3d50ebeab42cc36051f3aa40b074b5476a08302980260009aa653f0029";
