/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers";
import type { Provider, TransactionRequest } from "@ethersproject/providers";
import type { PromiseOrValue } from "../../../../common";
import type {
  WrapperUpgradeProposal,
  WrapperUpgradeProposalInterface,
} from "../../../../contracts/test/wrapperUpgrades.sol/WrapperUpgradeProposal";

const _abi = [
  {
    inputs: [
      {
        internalType: "contract UpgradedWrapper",
        name: "_upgradedWrapper",
        type: "address",
      },
      {
        internalType: "contract OZProxy",
        name: "_ozProxy",
        type: "address",
      },
    ],
    stateMutability: "nonpayable",
    type: "constructor",
  },
  {
    inputs: [],
    name: "description",
    outputs: [
      {
        internalType: "string",
        name: "",
        type: "string",
      },
    ],
    stateMutability: "pure",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "",
        type: "address",
      },
    ],
    name: "enacted",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [],
    name: "name",
    outputs: [
      {
        internalType: "string",
        name: "",
        type: "string",
      },
    ],
    stateMutability: "pure",
    type: "function",
  },
  {
    inputs: [],
    name: "ozProxy",
    outputs: [
      {
        internalType: "contract OZProxy",
        name: "",
        type: "address",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "upgradedWrapper",
    outputs: [
      {
        internalType: "contract UpgradedWrapper",
        name: "",
        type: "address",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "url",
    outputs: [
      {
        internalType: "string",
        name: "",
        type: "string",
      },
    ],
    stateMutability: "pure",
    type: "function",
  },
];

const _bytecode =
  "0x60c060405234801561001057600080fd5b5060405161043338038061043383398101604081905261002f9161005e565b6001600160a01b039182166080521660a052610098565b6001600160a01b038116811461005b57600080fd5b50565b6000806040838503121561007157600080fd5b825161007c81610046565b602084015190925061008d81610046565b809150509250929050565b60805160a05161036a6100c96000396000818160e60152610203015260008181609a01526101db015261036a6000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80635600f04f116100505780635600f04f146101085780637284e41614610141578063d6466c791461014957600080fd5b806306fdde03146100775780630d79c30014610095578063171c9bec146100e1575b600080fd5b61007f61015e565b60405161008c9190610262565b60405180910390f35b6100bc7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161008c565b6100bc7f000000000000000000000000000000000000000000000000000000000000000081565b60408051808201909152601981527f7777772e777261707065722d7570677261796564642e636f6d00000000000000602082015261007f565b61007f61017e565b61015c6101573660046102d5565b61019e565b005b606060405180606001604052806021815260200161031360219139905090565b60606040518060600160405280602a8152602001610334602a9139905090565b6040517f3659cfe600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633659cfe690602401600060405180830381600087803b15801561024757600080fd5b505af115801561025b573d6000803e3d6000fd5b5050505050565b600060208083528351808285015260005b8181101561028f57858101830151858201604001528201610273565b818111156102a1576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b6000602082840312156102e757600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461030b57600080fd5b939250505056fe4920616d20746865207772617070657220757067726164652070726f706f73616c49207570677261646520746865207772617070657220746f2073617920697420697320706f6f646c6564a164736f6c6343000809000a";

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

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

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

  override deploy(
    _upgradedWrapper: PromiseOrValue<string>,
    _ozProxy: PromiseOrValue<string>,
    overrides?: Overrides & { from?: PromiseOrValue<string> }
  ): Promise<WrapperUpgradeProposal> {
    return super.deploy(
      _upgradedWrapper,
      _ozProxy,
      overrides || {}
    ) as Promise<WrapperUpgradeProposal>;
  }
  override getDeployTransaction(
    _upgradedWrapper: PromiseOrValue<string>,
    _ozProxy: PromiseOrValue<string>,
    overrides?: Overrides & { from?: PromiseOrValue<string> }
  ): TransactionRequest {
    return super.getDeployTransaction(
      _upgradedWrapper,
      _ozProxy,
      overrides || {}
    );
  }
  override attach(address: string): WrapperUpgradeProposal {
    return super.attach(address) as WrapperUpgradeProposal;
  }
  override connect(signer: Signer): WrapperUpgradeProposal__factory {
    return super.connect(signer) as WrapperUpgradeProposal__factory;
  }

  static readonly bytecode = _bytecode;
  static readonly abi = _abi;
  static createInterface(): WrapperUpgradeProposalInterface {
    return new utils.Interface(_abi) as WrapperUpgradeProposalInterface;
  }
  static connect(
    address: string,
    signerOrProvider: Signer | Provider
  ): WrapperUpgradeProposal {
    return new Contract(
      address,
      _abi,
      signerOrProvider
    ) as WrapperUpgradeProposal;
  }
}
