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

const _abi = [
  {
    inputs: [],
    name: "communityFee",
    outputs: [
      {
        internalType: "uint8",
        name: "",
        type: "uint8",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "fee",
    outputs: [
      {
        internalType: "uint16",
        name: "",
        type: "uint16",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "globalState",
    outputs: [
      {
        internalType: "uint160",
        name: "price_",
        type: "uint160",
      },
      {
        internalType: "int24",
        name: "tick_",
        type: "int24",
      },
      {
        internalType: "uint16",
        name: "fee_",
        type: "uint16",
      },
      {
        internalType: "uint8",
        name: "pluginConfig_",
        type: "uint8",
      },
      {
        internalType: "uint8",
        name: "communityFee_",
        type: "uint8",
      },
      {
        internalType: "bool",
        name: "unlocked_",
        type: "bool",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "plugin",
    outputs: [
      {
        internalType: "address",
        name: "",
        type: "address",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "pluginConfig",
    outputs: [
      {
        internalType: "uint8",
        name: "",
        type: "uint8",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "price",
    outputs: [
      {
        internalType: "uint160",
        name: "",
        type: "uint160",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint160",
        name: "_price",
        type: "uint160",
      },
      {
        internalType: "int24",
        name: "_tick",
        type: "int24",
      },
      {
        internalType: "uint16",
        name: "_fee",
        type: "uint16",
      },
      {
        internalType: "uint8",
        name: "_communityFee",
        type: "uint8",
      },
    ],
    name: "setGlobalState",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "_plugin",
        type: "address",
      },
    ],
    name: "setPlugin",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint8",
        name: "_config",
        type: "uint8",
      },
    ],
    name: "setPluginConfig",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [],
    name: "tick",
    outputs: [
      {
        internalType: "int24",
        name: "",
        type: "int24",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
] as const;

const _bytecode =
  "0x6080604052600180546001600160d01b031916780bb8000000000000000000000100000000000000000000000017905534801561003b57600080fd5b5061058f8061004b6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c8063bca57f8111610076578063ddca3f431161005b578063ddca3f4314610362578063e76c01e41461039e578063ef01df4f1461048057600080fd5b8063bca57f81146102b3578063cc1f97cf1461030d57600080fd5b8063581a7599116100a7578063581a75991461020d5780638961be6b14610244578063a035b1fe1461026e57600080fd5b80633eaf5d9f146100c35780633f75a04b14610100575b600080fd5b6001546100e89074010000000000000000000000000000000000000000900460020b81565b60405160029190910b81526020015b60405180910390f35b61020b61010e3660046104db565b6001805460ff909216790100000000000000000000000000000000000000000000000000027fffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff61ffff9094167701000000000000000000000000000000000000000000000002939093167fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff62ffffff90951674010000000000000000000000000000000000000000027fffffffffffffffffff000000000000000000000000000000000000000000000090931673ffffffffffffffffffffffffffffffffffffffff90961695909517919091179290921692909217919091179055565b005b6000546102329074010000000000000000000000000000000000000000900460ff1681565b60405160ff90911681526020016100f7565b60015461023290790100000000000000000000000000000000000000000000000000900460ff1681565b60015461028e9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100f7565b61020b6102c1366004610543565b6000805460ff90921674010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b61020b61031b366004610565565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60015461038b9077010000000000000000000000000000000000000000000000900461ffff1681565b60405161ffff90911681526020016100f7565b6104296001805460005473ffffffffffffffffffffffffffffffffffffffff8216937401000000000000000000000000000000000000000080840460020b9477010000000000000000000000000000000000000000000000850461ffff16949190930460ff908116937901000000000000000000000000000000000000000000000000009092041691565b6040805173ffffffffffffffffffffffffffffffffffffffff909716875260029590950b602087015261ffff9093169385019390935260ff90811660608501529091166080830152151560a082015260c0016100f7565b60005461028e9073ffffffffffffffffffffffffffffffffffffffff1681565b73ffffffffffffffffffffffffffffffffffffffff811681146104c257600080fd5b50565b803560ff811681146104d657600080fd5b919050565b600080600080608085870312156104f157600080fd5b84356104fc816104a0565b93506020850135600281900b811461051357600080fd5b9250604085013561ffff8116811461052a57600080fd5b9150610538606086016104c5565b905092959194509250565b60006020828403121561055557600080fd5b61055e826104c5565b9392505050565b60006020828403121561057757600080fd5b813561055e816104a056fea164736f6c6343000814000a";

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

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

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

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