/* 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 {
  MockHypernativeOracle,
  MockHypernativeOracleInterface,
} from "../../../contracts/mock/MockHypernativeOracle";

const _abi = [
  {
    inputs: [
      {
        internalType: "address",
        name: "account",
        type: "address",
      },
    ],
    name: "isBlacklistedAccount",
    outputs: [
      {
        internalType: "bool",
        name: "",
        type: "bool",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "origin",
        type: "address",
      },
      {
        internalType: "address",
        name: "sender",
        type: "address",
      },
    ],
    name: "isBlacklistedContext",
    outputs: [
      {
        internalType: "bool",
        name: "",
        type: "bool",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "account",
        type: "address",
      },
    ],
    name: "isTimeExceeded",
    outputs: [
      {
        internalType: "bool",
        name: "",
        type: "bool",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "account",
        type: "address",
      },
    ],
    name: "register",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "account",
        type: "address",
      },
    ],
    name: "registerStrict",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "account",
        type: "address",
      },
      {
        internalType: "bool",
        name: "status",
        type: "bool",
      },
    ],
    name: "setBlacklistedAccount",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "context",
        type: "address",
      },
      {
        internalType: "bool",
        name: "status",
        type: "bool",
      },
    ],
    name: "setBlacklistedContext",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "account",
        type: "address",
      },
      {
        internalType: "bool",
        name: "status",
        type: "bool",
      },
    ],
    name: "setTimeExceeded",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
] as const;

const _bytecode =
  "0x608060405234801561001057600080fd5b506102c7806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063d3be583f1161005b578063d3be583f14610119578063d7b8a62114610152578063f6985cc31461017f578063ffbf7efa146101ab57600080fd5b806330c7992c1461008d5780634420e4861461008d5780636cffbed3146100a05780638d097eb4146100e0575b600080fd5b61009e61009b366004610200565b50565b005b6100cc6100ae366004610200565b6001600160a01b031660009081526002602052604090205460ff1690565b604051901515815260200160405180910390f35b61009e6100ee366004610222565b6001600160a01b03919091166000908152602081905260409020805460ff1916911515919091179055565b61009e610127366004610222565b6001600160a01b03919091166000908152600260205260409020805460ff1916911515919091179055565b6100cc61016036600461025e565b506001600160a01b031660009081526001602052604090205460ff1690565b6100cc61018d366004610200565b6001600160a01b031660009081526020819052604090205460ff1690565b61009e6101b9366004610222565b6001600160a01b03919091166000908152600160205260409020805460ff1916911515919091179055565b80356001600160a01b03811681146101fb57600080fd5b919050565b60006020828403121561021257600080fd5b61021b826101e4565b9392505050565b6000806040838503121561023557600080fd5b61023e836101e4565b91506020830135801515811461025357600080fd5b809150509250929050565b6000806040838503121561027157600080fd5b61027a836101e4565b9150610288602084016101e4565b9050925092905056fea264697066735822122094216ea5aef874f16b7a97d7b22ec94bb7936690c42d1ded325e5365559f031364736f6c634300080b0033";

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

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

export class MockHypernativeOracle__factory extends ContractFactory {
  constructor(...args: MockHypernativeOracleConstructorParams) {
    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<
      MockHypernativeOracle & {
        deploymentTransaction(): ContractTransactionResponse;
      }
    >;
  }
  override connect(
    runner: ContractRunner | null
  ): MockHypernativeOracle__factory {
    return super.connect(runner) as MockHypernativeOracle__factory;
  }

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