/* 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 {
  DummyAMMPool,
  DummyAMMPoolInterface,
} from "../../../contracts/test/DummyAMMPool";

const _abi = [
  {
    inputs: [
      {
        internalType: "address",
        name: "_token0",
        type: "address",
      },
      {
        internalType: "address",
        name: "_token1",
        type: "address",
      },
    ],
    stateMutability: "nonpayable",
    type: "constructor",
  },
  {
    inputs: [],
    name: "reserve0",
    outputs: [
      {
        internalType: "uint256",
        name: "",
        type: "uint256",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "reserve1",
    outputs: [
      {
        internalType: "uint256",
        name: "",
        type: "uint256",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "sync",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [],
    name: "syncBadAssert",
    outputs: [],
    stateMutability: "pure",
    type: "function",
  },
  {
    inputs: [],
    name: "syncRevert",
    outputs: [],
    stateMutability: "pure",
    type: "function",
  },
  {
    inputs: [],
    name: "token0",
    outputs: [
      {
        internalType: "address",
        name: "",
        type: "address",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "token1",
    outputs: [
      {
        internalType: "address",
        name: "",
        type: "address",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
];

const _bytecode =
  "0x608060405234801561001057600080fd5b506040516103f33803806103f383398101604081905261002f9161007c565b600080546001600160a01b039384166001600160a01b031991821617909155600180549290931691161790556100af565b80516001600160a01b038116811461007757600080fd5b919050565b6000806040838503121561008f57600080fd5b61009883610060565b91506100a660208401610060565b90509250929050565b610335806100be6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638d967c7a1161005b5780638d967c7a146100ec578063ba75e8a5146100f6578063d21220a7146100fe578063fff6cae91461011e57600080fd5b80630dfe168114610082578063443cb4bc146100cc5780635a76f25e146100e3575b600080fd5b6000546100a29073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100d560025481565b6040519081526020016100c3565b6100d560035481565b6100f4610126565b005b6100f461018c565b6001546100a29073ffffffffffffffffffffffffffffffffffffffff1681565b6100f4610196565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f6f6d670000000000000000000000000000000000000000000000000000000000604482015260640160405180910390fd5b6101946102e0565b565b6000546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a082319060240160206040518083038186803b1580156101ff57600080fd5b505afa158015610213573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610237919061030f565b6002556001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a082319060240160206040518083038186803b1580156102a357600080fd5b505afa1580156102b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102db919061030f565b600355565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60006020828403121561032157600080fd5b505191905056fea164736f6c6343000809000a";

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

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

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

  override deploy(
    _token0: PromiseOrValue<string>,
    _token1: PromiseOrValue<string>,
    overrides?: Overrides & { from?: PromiseOrValue<string> }
  ): Promise<DummyAMMPool> {
    return super.deploy(
      _token0,
      _token1,
      overrides || {}
    ) as Promise<DummyAMMPool>;
  }
  override getDeployTransaction(
    _token0: PromiseOrValue<string>,
    _token1: PromiseOrValue<string>,
    overrides?: Overrides & { from?: PromiseOrValue<string> }
  ): TransactionRequest {
    return super.getDeployTransaction(_token0, _token1, overrides || {});
  }
  override attach(address: string): DummyAMMPool {
    return super.attach(address) as DummyAMMPool;
  }
  override connect(signer: Signer): DummyAMMPool__factory {
    return super.connect(signer) as DummyAMMPool__factory;
  }

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