/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers";
import { Provider, TransactionRequest } from "@ethersproject/providers";
import type { HandlerRevert, HandlerRevertInterface } from "../HandlerRevert";

const _abi = [
  {
    inputs: [
      {
        internalType: "address",
        name: "bridgeAddress",
        type: "address",
      },
    ],
    stateMutability: "nonpayable",
    type: "constructor",
  },
  {
    inputs: [],
    name: "_bridgeAddress",
    outputs: [
      {
        internalType: "address",
        name: "",
        type: "address",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "",
        type: "address",
      },
    ],
    name: "_burnList",
    outputs: [
      {
        internalType: "bool",
        name: "",
        type: "bool",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "",
        type: "address",
      },
    ],
    name: "_contractWhitelist",
    outputs: [
      {
        internalType: "bool",
        name: "",
        type: "bool",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "bytes32",
        name: "",
        type: "bytes32",
      },
    ],
    name: "_resourceIDToTokenContractAddress",
    outputs: [
      {
        internalType: "address",
        name: "",
        type: "address",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "",
        type: "address",
      },
    ],
    name: "_tokenContractAddressToResourceID",
    outputs: [
      {
        internalType: "bytes32",
        name: "",
        type: "bytes32",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "contractAddress",
        type: "address",
      },
    ],
    name: "setBurnable",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "bytes32",
        name: "resourceID",
        type: "bytes32",
      },
      {
        internalType: "address",
        name: "contractAddress",
        type: "address",
      },
    ],
    name: "setResource",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "bytes",
        name: "data",
        type: "bytes",
      },
    ],
    name: "withdraw",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "bytes32",
        name: "",
        type: "bytes32",
      },
      {
        internalType: "bytes",
        name: "",
        type: "bytes",
      },
    ],
    name: "executeProposal",
    outputs: [],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint256",
        name: "amount",
        type: "uint256",
      },
    ],
    name: "virtualIncreaseBalance",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
];

const _bytecode =
  "0x60a060405234801561001057600080fd5b506040516106133803806106138339818101604052602081101561003357600080fd5b5051606081901b6001600160601b0319166080526001600160a01b03166105a761006c6000398061033b528061041152506105a76000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80637f79bea8116100665780637f79bea8146101ec578063b8fa373614610212578063c238eea11461023e578063c8ba6c871461025b578063e248cff2146102935761009e565b806307b7ed99146100a35780630968f264146100cb5780630a6d55d814610171578063318c136e146101aa5780636a70d081146101b2575b600080fd5b6100c9600480360360208110156100b957600080fd5b50356001600160a01b031661030a565b005b6100c9600480360360208110156100e157600080fd5b8101906020810181356401000000008111156100fc57600080fd5b82018360208201111561010e57600080fd5b8035906020019184600183028401116401000000008311171561013057600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061031b945050505050565b61018e6004803603602081101561018757600080fd5b503561031e565b604080516001600160a01b039092168252519081900360200190f35b61018e610339565b6101d8600480360360208110156101c857600080fd5b50356001600160a01b031661035d565b604080519115158252519081900360200190f35b6101d86004803603602081101561020257600080fd5b50356001600160a01b0316610372565b6100c96004803603604081101561022857600080fd5b50803590602001356001600160a01b0316610387565b6100c96004803603602081101561025457600080fd5b503561039d565b6102816004803603602081101561027157600080fd5b50356001600160a01b03166103a2565b60408051918252519081900360200190f35b6100c9600480360360408110156102a957600080fd5b813591908101906040810160208201356401000000008111156102cb57600080fd5b8201836020820111156102dd57600080fd5b803590602001918460018302840111640100000000831117156102ff57600080fd5b5090925090506103b4565b610312610406565b61031b81610485565b50565b6000602081905290815260409020546001600160a01b031681565b7f000000000000000000000000000000000000000000000000000000000000000081565b60036020526000908152604090205460ff1681565b60026020526000908152604090205460ff1681565b61038f610406565b6103998282610500565b5050565b600455565b60016020526000908152604090205481565b600454610401576040805162461bcd60e51b815260206004820152601660248201527514dbdb595d1a1a5b99c8189859081a185c1c195b995960521b604482015290519081900360640190fd5b505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610483576040805162461bcd60e51b815260206004820152601e60248201527f73656e646572206d7573742062652062726964676520636f6e74726163740000604482015290519081900360640190fd5b565b6001600160a01b03811660009081526002602052604090205460ff166104dc5760405162461bcd60e51b815260040180806020018281038252602481526020018061054e6024913960400191505060405180910390fd5b6001600160a01b03166000908152600360205260409020805460ff19166001179055565b60008281526020818152604080832080546001600160a01b039095166001600160a01b0319909516851790559282526001808252838320949094556002905220805460ff1916909117905556fe70726f766964656420636f6e7472616374206973206e6f742077686974656c6973746564a264697066735822122055e54c300e68ab41df5e1916c7b8ac8ba4b909be61fcd7961e198ae57ecc660564736f6c634300060c0033";

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

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

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

  deploy(
    bridgeAddress: string,
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<HandlerRevert> {
    return super.deploy(
      bridgeAddress,
      overrides || {}
    ) as Promise<HandlerRevert>;
  }
  getDeployTransaction(
    bridgeAddress: string,
    overrides?: Overrides & { from?: string | Promise<string> }
  ): TransactionRequest {
    return super.getDeployTransaction(bridgeAddress, overrides || {});
  }
  attach(address: string): HandlerRevert {
    return super.attach(address) as HandlerRevert;
  }
  connect(signer: Signer): HandlerRevert__factory {
    return super.connect(signer) as HandlerRevert__factory;
  }
  static readonly bytecode = _bytecode;
  static readonly abi = _abi;
  static createInterface(): HandlerRevertInterface {
    return new utils.Interface(_abi) as HandlerRevertInterface;
  }
  static connect(
    address: string,
    signerOrProvider: Signer | Provider
  ): HandlerRevert {
    return new Contract(address, _abi, signerOrProvider) as HandlerRevert;
  }
}
