/* 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 {
  HandlerHelpers,
  HandlerHelpersInterface,
} from "../HandlerHelpers";

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: "bytes32",
        name: "resourceID",
        type: "bytes32",
      },
      {
        internalType: "address",
        name: "contractAddress",
        type: "address",
      },
    ],
    name: "setResource",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "contractAddress",
        type: "address",
      },
    ],
    name: "setBurnable",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "bytes",
        name: "data",
        type: "bytes",
      },
    ],
    name: "withdraw",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
];

const _bytecode =
  "0x60a060405234801561001057600080fd5b506040516105123803806105128339818101604052602081101561003357600080fd5b5051606081901b6001600160601b0319166080526001600160a01b03166104a661006c60003980610291528061031052506104a66000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80636a70d0811161005b5780636a70d0811461019c5780637f79bea8146101d6578063b8fa3736146101fc578063c8ba6c871461022857610088565b806307b7ed991461008d5780630968f264146100b55780630a6d55d81461015b578063318c136e14610194575b600080fd5b6100b3600480360360208110156100a357600080fd5b50356001600160a01b0316610260565b005b6100b3600480360360208110156100cb57600080fd5b8101906020810181356401000000008111156100e657600080fd5b8201836020820111156100f857600080fd5b8035906020019184600183028401116401000000008311171561011a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610271945050505050565b6101786004803603602081101561017157600080fd5b5035610274565b604080516001600160a01b039092168252519081900360200190f35b61017861028f565b6101c2600480360360208110156101b257600080fd5b50356001600160a01b03166102b3565b604080519115158252519081900360200190f35b6101c2600480360360208110156101ec57600080fd5b50356001600160a01b03166102c8565b6100b36004803603604081101561021257600080fd5b50803590602001356001600160a01b03166102dd565b61024e6004803603602081101561023e57600080fd5b50356001600160a01b03166102f3565b60408051918252519081900360200190f35b610268610305565b61027181610384565b50565b6000602081905290815260409020546001600160a01b031681565b7f000000000000000000000000000000000000000000000000000000000000000081565b60036020526000908152604090205460ff1681565b60026020526000908152604090205460ff1681565b6102e5610305565b6102ef82826103ff565b5050565b60016020526000908152604090205481565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610382576040805162461bcd60e51b815260206004820152601e60248201527f73656e646572206d7573742062652062726964676520636f6e74726163740000604482015290519081900360640190fd5b565b6001600160a01b03811660009081526002602052604090205460ff166103db5760405162461bcd60e51b815260040180806020018281038252602481526020018061044d6024913960400191505060405180910390fd5b6001600160a01b03166000908152600360205260409020805460ff19166001179055565b60008281526020818152604080832080546001600160a01b039095166001600160a01b0319909516851790559282526001808252838320949094556002905220805460ff1916909117905556fe70726f766964656420636f6e7472616374206973206e6f742077686974656c6973746564a26469706673582212208a8d0d23698e2e74e3c62ce96269902621a962774d9fdccc4e8da3c9e4ad98a464736f6c634300060c0033";

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

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

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

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