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

const _abi = [
  {
    inputs: [
      {
        internalType: "uint128",
        name: "a",
        type: "uint128",
      },
      {
        internalType: "uint128",
        name: "b",
        type: "uint128",
      },
    ],
    name: "add",
    outputs: [
      {
        internalType: "uint128",
        name: "r",
        type: "uint128",
      },
    ],
    stateMutability: "pure",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint128",
        name: "a",
        type: "uint128",
      },
      {
        internalType: "uint128",
        name: "b",
        type: "uint128",
      },
    ],
    name: "mul",
    outputs: [
      {
        internalType: "uint128",
        name: "r",
        type: "uint128",
      },
    ],
    stateMutability: "pure",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint128",
        name: "a",
        type: "uint128",
      },
      {
        internalType: "uint128",
        name: "b",
        type: "uint128",
      },
    ],
    name: "sub",
    outputs: [
      {
        internalType: "uint128",
        name: "r",
        type: "uint128",
      },
    ],
    stateMutability: "pure",
    type: "function",
  },
];

const _bytecode =
  "0x60806040523480156100115760006000fd5b50610017565b61036a806100266000396000f3fe60806040523480156100115760006000fd5b50600436106100465760003560e01c8063a6fd00851461004c578063e856528a1461007c578063feb99390146100ac57610046565b60006000fd5b610066600480360381019061006191906101f4565b6100dc565b604051610073919061022a565b60405180910390f35b610096600480360381019061009191906101f4565b61010e565b6040516100a3919061022a565b60405180910390f35b6100c660048036038101906100c191906101f4565b610140565b6040516100d3919061022a565b60405180910390f35b600061010382846fffffffffffffffffffffffffffffffff1661017290919063ffffffff16565b905080505b92915050565b600061013582846fffffffffffffffffffffffffffffffff1661018d90919063ffffffff16565b905080505b92915050565b600061016782846fffffffffffffffffffffffffffffffff166101a890919063ffffffff16565b905080505b92915050565b60008183610180919061027f565b9050610187565b92915050565b6000818361019b91906102b9565b90506101a2565b92915050565b600081836101b691906102f8565b90506101bd565b9291505056610333565b6000813590506fffffffffffffffffffffffffffffffff8116811415156101ee5760006000fd5b5b919050565b60006000604083850312156102095760006000fd5b610212836101c7565b9150610220602084016101c7565b90505b9250929050565b60006020820190506fffffffffffffffffffffffffffffffff831682525b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b565b60006fffffffffffffffffffffffffffffffff8083168185169150818110156102ab576102aa61024e565b5b818103925050505b92915050565b60006fffffffffffffffffffffffffffffffff808316818516818304811182151516156102e9576102e861024e565b5b80820293505050505b92915050565b60006fffffffffffffffffffffffffffffffff8083168185168083038211156103245761032361024e565b5b80820193505050505b92915050565bfea264697066735822122097ed4b9b241ef3d3adf2d4dc4683131eb6cd116b6cf8290724f034562485b7aa64736f6c634300080b0033";

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

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

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

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