/* 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 {
  UniswapV3Router02Mock,
  UniswapV3Router02MockInterface,
} from "../../../../contracts/mock/uniswap/UniswapV3Router02Mock";

const _abi = [
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: "address",
        name: "tokenIn",
        type: "address",
      },
      {
        indexed: false,
        internalType: "address",
        name: "tokenOut",
        type: "address",
      },
      {
        indexed: false,
        internalType: "uint256",
        name: "amountIn",
        type: "uint256",
      },
      {
        indexed: false,
        internalType: "uint256",
        name: "amountOut",
        type: "uint256",
      },
    ],
    name: "SwapExecuted",
    type: "event",
  },
  {
    inputs: [
      {
        components: [
          {
            internalType: "bytes",
            name: "path",
            type: "bytes",
          },
          {
            internalType: "address",
            name: "recipient",
            type: "address",
          },
          {
            internalType: "uint256",
            name: "amountIn",
            type: "uint256",
          },
          {
            internalType: "uint256",
            name: "amountOutMinimum",
            type: "uint256",
          },
        ],
        internalType: "struct ISwapRouter02.ExactInputParams",
        name: "swapParams",
        type: "tuple",
      },
    ],
    name: "exactInput",
    outputs: [
      {
        internalType: "uint256",
        name: "amountOut",
        type: "uint256",
      },
    ],
    stateMutability: "payable",
    type: "function",
  },
] as const;

const _bytecode =
  "0x608060405234801561001057600080fd5b506101f0806100206000396000f3fe60806040526004361061001e5760003560e01c8063b858183f14610023575b600080fd5b6100376100313660046100d5565b50600090565b60405190815260200160405180910390f35b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561008257610082610049565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156100b1576100b1610049565b604052919050565b80356001600160a01b03811681146100d057600080fd5b919050565b600060208083850312156100e857600080fd5b823567ffffffffffffffff8082111561010057600080fd5b908401906080828703121561011457600080fd5b61011c61005f565b82358281111561012b57600080fd5b8301601f8101881361013c57600080fd5b80358381111561014e5761014e610049565b610160601f8201601f19168701610088565b9350808452888682840101111561017657600080fd5b80868301878601376000908401860152508181526101958385016100b9565b848201526040830135604082015260608301356060820152809450505050509291505056fea2646970667358221220a3932af337cab5a979f19cf1831fe43e6c4d03c35249474424416309ea249a4e64736f6c634300080b0033";

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

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

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

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